用Java读二进制报文、做报文分析软件.分析抓包中的各个字段的含义。
package shuju;
import java.io.*;
import java.lang.Integer;
class shuju {
public static void main(String[] args){
String fileName="D:\\报文1.bin";
try {
DataInputStream instr=new DataInputStream(new BufferedInputStream(new FileInputStream(fileName)));
byte [] array=new byte [instr.available()];
instr.read(array);
instr.close();
System.out.print(byte2hex(array));
System.out.println();
System.out.println();
System.out.println();
System.out.println("以太网帧分析");
System.out.print("目标硬件地址:");
System.out.println(byte2hex(array,0,6));
System.out.print("源硬件地址:");
System.out.println(byte2hex(array,6,12));
if(byte2hex(array,12,14).equals("0800"))
{
System.out.println("帧类型是IP数据报");
}
else if(byte2hex(array,12,14).equals("0806")){
System.out.println("帧类型是ARP数据报");
System.out.print("源IP地址:");
for(int i=28;i<31;i++){
System.out.print(Integer.parseInt(byte2hex(array,i,i+1),16));
System.out.print(":");
}
System.out.print(Integer.parseInt(byte2hex(array,31,32),16));
System.out.println();
Syst