Last active
December 30, 2015 16:28
-
-
Save NusZzz/7854554 to your computer and use it in GitHub Desktop.
Network Programming Mini Project~
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* 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