java解析数据包(不知道发对区没有)

bobovieri 2011-02-09 04:23:24
网络安全课,教授给了一个java的抓包的类(他大概是基于winpcap做的),大概的功能是可以捕获数据包和发送数据包,

这个类就四个 Method

java.lang.String[] getAdapterNames()

boolean openAdapter(java.lang.String adapterName)

byte[] readPacket()

boolean sendPacket(byte[] packet)

他的范例程序调用了这个类,可以得到类似这样的输出(我不太懂,那些byte流应该就是抓到的包吧)

Number of adapters: 2
Device name in Java =\Device\NPF_{1FA362BB-EDD9-4046-8F1F-13CC5FF4D169}
Device name in Java =\Device\NPF_{29396E1D-1AB0-4173-87E4-4CC5FE118A08}
Adapter is open: \Device\NPF_{1FA362BB-EDD9-4046-8F1F-13CC5FF4D169}
Packet: java.nio.HeapByteBuffer[pos=0 lim=42 cap=42] with capacity: 42
00 00 0C 07 AC 00 1C 4B D6 F7 D6 1C 08 06 00 01 .......K........
08 00 06 04 00 01 1C 4B D6 F7 D6 1C 81 F4 B4 B2 .......K........
00 00 0C 07 AC 00 81 F4 B0 01 ..........

他让我们做一个类似解析器的东西,我估计就像ethereal那种,可以把这些包解析成各种可读协议的形式(比如tcp header,ip header,udp header),能够知道这些包是什么类型,源ip地址,目的ip地址等等

请问我要怎么入手啊,能推荐一下相关的资料么?我很缺乏这方面的知识
...全文
1030 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobovieri 2011-02-11
  • 打赏
  • 举报
回复
我查资料基本上明白要怎么解决这个问题了,谢谢楼上的各位给我的提示~

如果以后有人看到这个帖子需要解决类似的问题,可以加我QQ93346731,我可以提供一点帮助
bobovieri 2011-02-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 liumin_csu 的回复:]
教授给你了这个码流,他就知道这个码流对应的协议呀。你看下他是否给了你这方面的信息,如果没有,直接发邮件问下。
可能他的要求是要你自己选择一个协议,然后再对它进行解析吧,这样的话,你自己选个协议来生成码流,然后再解析出它就算完成任务了。
具体用什么协议你就得去了解这方面的知识了,可以发邮件给老师,让他给你些建议。
[/Quote]

比如抓到第一个包的十六位码流是这个
00 01 03 dd 3c ed 00 01 03 cd 4f 39 08 00 45 00
00 3c 0f 0b 00 00 80 01 62 27 c0 a8 24 20 c0 a8
24 1e 08 00 45 5c 03 00 05 00 61 62 63 64 65 66
67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76
77 61 62 63 64 65 66 67 68 69

怎么判断它是HTTP,UDP或者ARP什么的
bobovieri 2011-02-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 liumin_csu 的回复:]
教授给你了这个码流,他就知道这个码流对应的协议呀。你看下他是否给了你这方面的信息,如果没有,直接发邮件问下。
可能他的要求是要你自己选择一个协议,然后再对它进行解析吧,这样的话,你自己选个协议来生成码流,然后再解析出它就算完成任务了。
具体用什么协议你就得去了解这方面的知识了,可以发邮件给老师,让他给你些建议。
[/Quote]

谢谢你,但我还是不太明白,比如ethereal这样的软件是如何在抓到一个包后判断它是什么协议呢,比如两个包,一个是HTTP的,另外一个是UDP的
bobovieri 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 inhibitory 的回复:]
你需要知道得到的包数据中例如 前3位表示什么,接下来的5位表示什么等包格式的协议才可以解析
[/Quote]

通过什么可以判断这个包是什么协议呢?知道是什么协议我想应该就比较简单了
liumin_csu 2011-02-10
  • 打赏
  • 举报
回复
教授给你了这个码流,他就知道这个码流对应的协议呀。你看下他是否给了你这方面的信息,如果没有,直接发邮件问下。
可能他的要求是要你自己选择一个协议,然后再对它进行解析吧,这样的话,你自己选个协议来生成码流,然后再解析出它就算完成任务了。
具体用什么协议你就得去了解这方面的知识了,可以发邮件给老师,让他给你些建议。
XiaoZZhao 2011-02-10
  • 打赏
  • 举报
回复
擦!不是很懂啊!
Inhibitory 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bobovieri 的回复:]

引用 5 楼 inhibitory 的回复:
你需要知道得到的包数据中例如 前3位表示什么,接下来的5位表示什么等包格式的协议才可以解析


通过什么可以判断这个包是什么协议呢?知道是什么协议我想应该就比较简单了
[/Quote]
向定义这个协议的人要,或者向知道的人问
Inhibitory 2011-02-10
  • 打赏
  • 举报
回复
你需要知道得到的包数据中例如 前3位表示什么,接下来的5位表示什么等包格式的协议才可以解析
bobovieri 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 java2000_net 的回复:]
没有协议,解析个头啊!
[/Quote]

如何判断是什么协议呢
qingyuan18 2011-02-09
  • 打赏
  • 举报
回复
你抓出的是16进制流,具体是什么协议的包,你要查相应的协议规范,里面会规定哪些是package head,域截断符,信令......

主要是解析字符串,可以用正则匹配
老紫竹 2011-02-09
  • 打赏
  • 举报
回复
没有协议,解析个头啊!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧