我的目的:对应用层数据byte[] data中某几个字节进行匹配操作并输出判断结果。
jpcap规定在截获包以后把应用层数据放入字节数组data中,可是我只能使用System.out.println把data的内容直接打印在屏幕上,却无法对data内容进行任何其他操作。
例:byte[] tcpdata=tcppacket.getdata();
if(tcpdata[0]==0x11 &&tcpdata[1]==0x22)
system.out.print("protocol A");
导致的结果是无任何显示,连原先的在屏幕上打印data也显示不出来了。
我使用了以下几种方法依然无法解决该问题:
1。把data转化为一个String然后进行字符串匹配
2。把data写入文件,再从文件中读出,结果是文件中空空如也,一行也没有写进去
网上的两种jpcap我都用过,均不能处理应用层数据。sourceforge的jpcap还好点,顶多弹出(unknown source)异常,或者无显示,另外一个版本干脆来了个jvm crash。
网上一些示例统统回避了对应用层数据的处理,一个判断是否为http包的代码居然以端口是否为80作为判断标准,实在无语言了。。
请熟悉jpcap使用或者熟悉字节数组操作的的同仁帮小弟解答以上问题。十分感谢!
jpcap规定在截获包以后把应用层数据放入字节数组data中,可是我只能使用System.out.println把data的内容直接打印在屏幕上,却无法对data内容进行任何其他操作。
例:byte[] tcpdata=tcppacket.getdata();
if(tcpdata[0]==0x11 &&tcpdata[1]==0x22)
system.out.print("protocol A");
导致的结果是无任何显示,连原先的在屏幕上打印data也显示不出来了。
我使用了以下几种方法依然无法解决该问题:
1。把data转化为一个String然后进行字符串匹配
2。把data写入文件,再从文件中读出,结果是文件中空空如也,一行也没有写进去
网上的两种jpcap我都用过,均不能处理应用层数据。sourceforge的jpcap还好点,顶多弹出(unknown source)异常,或者无显示,另外一个版本干脆来了个jvm crash。
网上一些示例统统回避了对应用层数据的处理,一个判断是否为http包的代码居然以端口是否为80作为判断标准,实在无语言了。。
请熟悉jpcap使用或者熟悉字节数组操作的的同仁帮小弟解答以上问题。十分感谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货