我正在寻找比Wireshark更好的工具。 Wireshark的问题在于它没有格式化数据层(这是我正在查看的唯一部分),以便我比较不同的数据包并尝试理解第三方编码(这是封闭源代码)。
具体来说,什么是查看数据的好工具,而不是TCP / UDP头信息?特别是,一种格式化数据以进行比较的工具。
非常具体:我想要一个用十六进制比较多个(不仅仅是2个)文件的程序。
答案 0 :(得分:5)
看看this blog post from BreakingPoint Labs。他们正在讨论手动协议逆向工程和基于PacketFu构建的一组工具,以使这项任务更容易。
与您的问题相关的是一组工具,可以轻松识别和突出显示数据包的更改。这是一个示例屏幕截图,显示使用颜色来概述数据包差异:
(来源:breakingpointsystems.com)
答案 1 :(得分:3)
坦率地说,你最好的选择就是自己动手。
获取您熟悉的脚本语言并开始攻击该问题。首先写一个简单的多路比较,但是一旦你开始找到你认为重要的模式(或者你认为可能存在的)回去并将它们添加到代码中 - 从输出中消除它们,突出显示它们,翻译它们用另一种符号代替它们,用它们的“意义”或对它们角色的高级描述来代替它们 - 无论什么看似合适。如果您无法决定,请选择它。
您要求使用可视化软件,因为您需要一些东西来帮助您形成并内化对其编码的理解。但是你要进行的比较只是你将要使用的过程的一部分(这本质上是科学的方法) - 你也将形成和修改数据包的各个部分的含义,它们如何相互作用的猜测等等。
没有预先构建的工具可以帮助你,但是一个好的脚本语言(比如python,ruby,甚至是perl)将会有很大帮助。当你形成一个理论,编码并试一试。密集你的代码,尝试不同的想法,随着你的发生,为你解决这个问题。
- MarkusQ
P.S。不要陷入尝试使用C或Java或其他东西来做这件事的陷阱。你会玩得快而且松散,应该有一个不需要变量声明,编译等的工具。一旦你理解了它的工作原理,就会有很多机会收紧它并重写它。< / em>的
答案 2 :(得分:2)
您的问题不是分析网络数据,而是根据您的需要比较二进制文件。
我将通过任何嗅探器提取应用程序数据,即通过Zoreadche或Wireshark所描述的tcpdump(即通过跟随TCP会话)来提取。然后将其保存到文件并通过任何文件比较工具进行比较。你可以试试这些(最受欢迎的):
答案 3 :(得分:1)
仅对于HTTP,我曾经使用过一个名为Effetech的好工具 (虽然现在看着它似乎支持的不仅仅是HTTP ....)
答案 4 :(得分:0)
问题是应用程序层的数据不是标准数据(极少数例外,如HTTP,POP3等)。如果Wireshark不知道格式,则无法对此信息进行解码。
我知道一些旧版本的Ethereal(现在的Wireshark)有选项(你可能需要启用它)来显示有效负载。期待它没有意义,大多数协议都是二进制的!
答案 5 :(得分:0)
如果你有使用ethereal的捕获,你可以阅读捕获,或者你可以使用tcpdump进行捕获。要捕获使用tcpdump命令,如 tcpdump -s 0 -qn -X ,或 tcpdump -X -r filename ,将读取捕获。
22:08:33.513650 IP 192.168.32.10.40583 > 69.59.196.211.80: tcp 1261
0x0000: 4500 0521 18ec 4000 4006 322a c0a8 200a E..!..@.@.2*....
0x0010: 453b c4d3 9e87 0050 b0b6 4b4f 1598 0090 E;.....P..KO....
0x0020: 8018 1920 9b4f 0000 0101 080a 002e 701b .....O........p.
0x0030: 093c bc38 4745 5420 2f75 7365 7273 2f32 .<.8GET./users/2
0x0040: 3032 3637 2f7a 6f72 6564 6163 6865 2048 0267/zoredache.H
0x0050: 5454 502f 312e 300d 0a48 6f73 743a 2073 TTP/1.0..Host:.s
0x0060: 7461 636b 6f76 6572 666c 6f77 2e63 6f6d tackoverflow.com
或者还有另一个tcpick可能是你想要的。您可以捕获tcp连接的有效负载,并将其显示为十六进制或保存。