wireshake分析stun协议
不知道为什么,我用wireshake过滤stun协议过滤不出来,抓包发现解析出来的和3478端口交互的都是udp的数据,弄个半天没弄好,想着udp就udp吧,反正是为了学习,顺道写篇博客记录一下。
过滤掉UDP包头后,前两位是0,对应stun协议的前两位,前两个字节整体为0x0001 是bind request请求
这两个字节为0,说明这个请求的消息只有头部,没有body,没错。
这一段,前面4字节是cookie,后面 Transaction Id 记录下就行,和响应等会对比下
这个是从3478发往本地的包,照例过滤出UDP的包头后,0101不就是bind reponse么,
这是stun消息体的长度,算一下,68字节,记录记录
这一长串是cookie 和 Transaction Id ,比较一下21 12 a4 42 37 76 79 72 74 57 6d 68 4f 58 71 44 没错,他就是刚才那个请求的响应。
剩下的就是message body了,先数一下看包头对应的length对不对,一行16字节,16*4+4=68,没错,看来目前分析的还是正确的,
接下来看看message body中的各个attributes,attributes采用TLV编码,一个一个看
type是0x0020,查一下0x0020:XOR-MAPPED-ADDRESS,这个貌似是老版本才有的,先不管了,先分析着。0x0080 是长度, 说明后面8字节就对应ip和端口,就不分析了接着分析下一条属性
跳过上一个属性的IP和端口那八个字节可以看到是type是0x0001,对应MAPPED-ADDRES,这个就是我们通过coturn映射出来的地址,嘿嘿,length也是0x0008,照例跳过下面的八个字节的ip和端口,
这个属性的type是0x802b,length还是0x0008,RESPONSE-ORIGIN,看来这几个属性格式都一样。
我靠!!!,这时候瞎点突然发现,右键点击协议首选项,选择stun协议,tcp默认端口是3478,udp默认的不是,这里试着修改为3478,确定之后,我哭了,原来问题在这里,终于能过滤出来stun包了。
不过对着UDP分析了半天,这边一对照发现,分析的没错,那也挺好,印象更深刻了。
好了好了,再记录一下这篇博客,分析stun协议可以对照这个博客分析。
STUN协议解析