51学通信技术论坛

标题: 求助: wireshark 协议端口解码 [打印本页]

作者: yonka    时间: 2012-10-10 12:33:27     标题: 求助: wireshark 协议端口解码

使用wireshark的时候经常遇到这样的情况

比如Gb口的数据
明知UDP上面是NS层
但由于现网NS的UDP端口太多,wireshark无法识别
手动的decode as的话只能一个个的,特别是对于很大的数据包文件,每调整一个就要刷新很久

就想问下,wireshark有没有这个功能呢?:
指定某一协议层上一层是什么协议?
也即,比如UDP的上一层,即使端口不认识,我都让wireshark理解为NS层。

谢谢


作者: hycl5410    时间: 2012-10-10 13:19:14

貌似没有。decode as选择both稍微好一些。
作者: 爱卫生    时间: 2012-10-10 21:08:43

有这个功能。在设置里面可以设置一个端口范围,例如100-200,然后指定为NS协议。然后就都按NS解码。


作者: hycl5410    时间: 2012-10-12 17:40:51

edit->preference->protocols->GPRS-NS->UDP ports 0-19999

慎用吧。。。建议用完了改回到初始值去,否则可能会对其他一些知名端口解析造成错误。。。
作者: hycl5410    时间: 2012-10-15 10:44:44

不知道。。。反正我的wireshark是永久配置。改完了之后,GTP就解不出来了。
既然是临时修改,那么上限再大点也无妨
作者: 望到天那边    时间: 2012-10-16 15:59:26

我也遇到了LZ类似的问题,今天试了一下hycl5410 的方法,发现不是端口号范围的问题,而是当你用wireshark打开一个比较大的包时,ds时默认的端口号就是第1帧的udp端口号,即使你选择both,那也是第一帧的端口双向,跟第一帧端口号不相同的其它UDP包也就无法解析了···
解析前信令端口如下图所示:
DS选项里面的UDP端口默认为第一帧端口18255的双向,DS应用后就只解析出源或目的为18255的UDP包,其它端口的仍旧无法解析。
[attach]1788[/attach] [attach]1789[/attach] [attach]1790[/attach]

这里的问题是解析器默认选择了第1帧 的端口号,解析里里面也无法设定一个端口号范围,也不能全选所有包,让其自动识别所有帧端口号进行解析。然而在edit->preference->protocols->GPRS-NS->UDP ports 0-19999里面设置的端口号范围根本无法应用到DS选项里面。针对此问题暂时无解,期待高手解答。
作者: 望到天那边    时间: 2012-10-16 16:03:48

上面的三张图片,依次是解析前的数据、DS选项窗口、解析后的数据。
作者: hycl5410    时间: 2012-10-16 16:41:04

我用自己的wireshark测试了一下,edit->preference->protocols->GPRS-NS->UDP ports很好用啊,点了apply之后,几乎所有的UDP上层都会被识别成GPRS-NS。跟是否应用到DS里没有关系。打个不恰当的比方,DS就像静态路由,而edit->preference-> 就像default 路由。。。不知道楼上为啥会出现这种情况。。。

再说一下我测试的情况,又做了一点简单的优化UDP ports 3000-59999,2157,2158
这样可以避免某些知名端口(53,123,2123,2152等)的误判。

另外一些意料外情况,那就只能手动去用DS了,或者设置合适的端口范围。

作者: 望到天那边    时间: 2012-10-16 17:44:12

本帖最后由 望到天那边 于 2012-10-16 18:00 编辑

hycl5410 ,你的比喻有点滴意思,那么既然DS像静态路由,数据肯定是先走静态路由的,只有在直连、静态及其它高级路由走不通的情况下才会走default 路由。
现在的问题在静态路由走不通的情况下,DS没有切换到default 路由。
我仔细查看了一下,主要原因是这类UDP包的源端口和目的端口一样,如上面的图2都为18255。其它数据包大多数能够解析出来,是因为正好你选择的那一帧的UDP源端口和目的端口是个比较大的范围差,包含在这一范围内的UDP包都能被解析。而在这个范围外的UDP包仍无法解析,你可以验证一下!或者我把我的数据截一小段给你验证。

补发数据包于此:
[attach]1798[/attach]


作者: hycl5410    时间: 2012-10-17 10:15:19

“包含在这一范围内的UDP包都能被解析。而在这个范围外的UDP包仍无法解析.”

就应该是这样的啊。。。。否则我们设置端口范围的目的是什么呢?设置的目的是为了尽可能把大部分的gbip包识别出来而已。
wireshark做的再智能,也判断不出来某一个随机的udp端口是否承载了GPRS-NS吧?
我拿default路由做例子确实是有一个问题:default路由会保证cover所有情况,而edit->preference则不是。判断条件应该为
1. DS
2. edit->preference
3. well-known
4. none
测试过,2 比3 的优先级高。也就是说,如果我设置UDP 0-65535解析成GPRS-NS,那么DNS (53)是不会被解析成DNS的,而是GPRS-NS
这就是为什么我设置的条件要尽量避开一些知名端口。补充一下,楼上给的我的包里有WTP的,所以还可以继续优化一下UDP端口设置条件,把9200~9202也剔除出去。

或者说,2是1的批量处理,1指定的是某一个/一对端口,而2可以指定一个端口范围。

none就是我们什么都不配置的初始状态,也就是什么也解不出来。所有不满足1-3条件的,都按4处理。






欢迎光临 51学通信技术论坛 (http://51xuetongxin.com/bbs/) Powered by Discuz! X2