Skip to content

Instantly share code, notes, and snippets.

@NusZzz
Last active December 30, 2015 16:28
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NusZzz/7854554 to your computer and use it in GitHub Desktop.
Save NusZzz/7854554 to your computer and use it in GitHub Desktop.
Network Programming Mini Project~
/* Authored by : Anas Suwannawong and team.
* Coding style : JAVA
* Date Uploaded : 9 Dec 2013
* Problem by : send Aj.luck
* For : Network Programming
* Please do NOT copy this for send to Ajarn.
* */
import java.util.*;
class Network{
public static void main(String[] agrs){
Scanner kb = new Scanner(System.in);
System.out.print("Enter Hexadecimal : ");
String HEX = kb.nextLine();
String[] haha = HEX.split("\\s");
//long start = System.currentTimeMillis();
String newString = "";
for(int i=0;i<haha.length;i++){
newString = newString+haha[i];
}
int numberPosition[] = new int[newString.length()];
for(int i=0;i<=newString.length()-1;i++){
numberPosition[i] = Character.getNumericValue(newString.charAt(i));
}
int sourcePort = numberPosition[0];
int HeaderLength = numberPosition[0]*numberPosition[1];
int totalLength = (int)(numberPosition[6]*16 + (numberPosition[7]*1));
int timeToLive = (int)(numberPosition[16]*16 + (numberPosition[17]*1));
int Protocol = (int)(numberPosition[19]*1);
int sourceIP1 = (int)(numberPosition[24]*16 + (numberPosition[25]*1));
int sourceIP2 = (int)(numberPosition[26]*16 + (numberPosition[27]*1));
int sourceIP3 = (int)(numberPosition[28]*16 + (numberPosition[29]*1));
int sourceIP4 = (int)(numberPosition[30]*16 + (numberPosition[31]*1));
int destinationIP1 = (int)(numberPosition[32]*16 + (numberPosition[33]*1));
int destinationIP2 = (int)(numberPosition[34]*16 + (numberPosition[35]*1));
int destinationIP3 = (int)(numberPosition[36]*16 + (numberPosition[37]*1));
int destinationIP4 = (int)(numberPosition[38]*16 + (numberPosition[39]*1));
String protoColName = "";
if(Protocol==6){
protoColName = "TCP";
}else{
protoColName = "";
}
System.out.println("\n====================== IP Analyzer ======================");
System.out.println("\n\tVersion \t\t: " + sourcePort);
System.out.println("\tHeader Length \t\t: " + HeaderLength);
System.out.println("\tTotal Length \t\t: " + totalLength);
System.out.println("\tTime to Live \t\t: " + timeToLive);
System.out.println("\tProtocol \t\t: " + protoColName + "(" +Protocol + ")");
System.out.println("\tSource IP \t\t: " +sourceIP1 +"."+ sourceIP2 +"."+ sourceIP3 +"."+ sourceIP4);
System.out.println("\tDestination IP \t\t: " +destinationIP1 +"."+ destinationIP2 +"."+ destinationIP3 +"."+ destinationIP4);
int soucePortTCP = (int)(numberPosition[40]*4096 + numberPosition[41]*256 + numberPosition[42]*16 + numberPosition[43]*1);
int destinationPortTCP = (int)(numberPosition[44]*4096 + numberPosition[45]*256 + numberPosition[46]*16 + numberPosition[47]*1);
long sequenceNumber = (int)(numberPosition[48]*Math.pow(16, 7) + numberPosition[49]*Math.pow(16, 6) + numberPosition[50]*Math.pow(16, 5) + numberPosition[51]*Math.pow(16, 4) + numberPosition[52]*Math.pow(16, 3) + numberPosition[53]*Math.pow(16, 2) + numberPosition[54]*16 + numberPosition[55]*1);
long acknowledgeMentNumber = (int)(numberPosition[56]*Math.pow(16, 7) + numberPosition[57]*Math.pow(16, 6) + numberPosition[58]*Math.pow(16, 5) + numberPosition[59]*Math.pow(16, 4) + numberPosition[60]*Math.pow(16, 3) + numberPosition[61]*Math.pow(16, 2) + numberPosition[62]*16 + numberPosition[63]*1);
int headerLength = (int)(numberPosition[64]*4);
String flag = "0x"+numberPosition[65]+numberPosition[66]+numberPosition[67];
String checkSumTCP = "0x"+newString.charAt(72)+newString.charAt(73)+newString.charAt(74)+newString.charAt(75);
int windowSizeValue = (int)(numberPosition[68]*4096 + numberPosition[69]*256 + numberPosition[70]*16 + numberPosition[71]*1);
int flagPositionOne = Character.getNumericValue(flag.charAt(3));
int flagPositionTwo = Character.getNumericValue(flag.charAt(4));
String flagNameOfPositionOne = "";
String flagNameOfPositionTwo = "";
String flagName = null;
String destinationPortName = "";
if(destinationPortTCP==443){
destinationPortName = " (https)";
}else if(destinationPortTCP==80){
destinationPortName = " (http)";
}else{
destinationPortName = "";
}
if(flagPositionOne==1 && flagPositionTwo==0){
flagName = " (ACK)";
}else if(flagPositionOne==0 && flagPositionTwo==1){
flagName = " (FIN)";
}else if(flagPositionOne==0 && flagPositionTwo==2){
flagName = " (SYN)";
}else if(flagPositionOne==0 && flagPositionTwo==4){
flagName = " (RST)";
}else if(flagPositionOne==1 && flagPositionTwo==1){
flagName = " (FIN, ACK)";
}else if(flagPositionOne==1 && flagPositionTwo==2){
flagName = " (SYN, ACK)";
}else if(flagPositionOne==1 && flagPositionTwo==4){
flagName = " (RST, ACK)";
}else if(flagPositionOne==1 && flagPositionTwo==8){
flagName = " (PSH, ACK)";
}else if(flagPositionOne==2 && flagPositionTwo==1){
flagName = " (FIN, URG)";
}else if(flagPositionOne==2 && flagPositionTwo==2){
flagName = " (SYN, URG)";
}else if(flagPositionOne==2 && flagPositionTwo==4){
flagName = " (RSP, URG)";
}else if(flagPositionOne==2 && flagPositionTwo==4){
flagName = " (PSH, URG)";
}
System.out.println("\n====================== TCP Analyzer ======================");
System.out.println("\tSource Port \t\t: " + soucePortTCP);
System.out.println("\tDestination Port \t: " + destinationPortTCP + destinationPortName);
System.out.println("\tSequence Number\t\t: " + sequenceNumber);
System.out.println("\tAcknowledgement Number\t: " + acknowledgeMentNumber);
System.out.println("\tHeader Length \t\t: " + headerLength + " bytes");
System.out.println("\tFlag \t\t\t: " + flag + "" + flagName);
System.out.println("\tCheck Sum \t\t: " + checkSumTCP);
System.out.println("\tWindow Size Value \t: " + windowSizeValue);
/*long end = System.currentTimeMillis();
System.out.println("\n\n\nTime is : "+ (end - start) + " milliseconds");*/
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment