t将TCP十六进制标志共享到文本标签

t将TCP十六进制标志共享到文本标签,tcp,tshark,hexdump,Tcp,Tshark,Hexdump,第一个问题可能会解决这个问题。当使用“-e tcp.flags”等字段在tshark中捕获时,是否有办法将输出标记为“FIN”,而不是“0x1”?我通过文档做了一些搜索。可能就在我鼻子底下 如果没有,那么我需要在数据管道中使用一个函数将十六进制转换为标签。我曾考虑使用一个类似于“{0x1':'FIN'}”的字典并对其进行映射,但我不确定可能出现的所有标志组合 所以我把十六进制字符串转换成整数,然后转换成二进制字符串。我将其转换为一个列表“[0,0,0,0,0,1]”,并将其用作对标签列表的过滤器

第一个问题可能会解决这个问题。当使用“-e tcp.flags”等字段在tshark中捕获时,是否有办法将输出标记为“FIN”,而不是“0x1”?我通过文档做了一些搜索。可能就在我鼻子底下

如果没有,那么我需要在数据管道中使用一个函数将十六进制转换为标签。我曾考虑使用一个类似于“{0x1':'FIN'}”的字典并对其进行映射,但我不确定可能出现的所有标志组合

所以我把十六进制字符串转换成整数,然后转换成二进制字符串。我将其转换为一个列表“[0,0,0,0,0,1]”,并将其用作对标签列表的过滤器,如“[u,a,p,r,s,f]”,该列表返回任何连接的标签,如“f”或“as”。使用Python。
这个功能是必要的吗?是否有一种更有效/更优雅的方式将十六进制转换为标签?

通常我建议使用
-e tcp.flags.str
,但至少在运行Windows 10 w/TShark(Wireshark)3.3.0(v3.3.0rc0-1433-gcac1426dd6b2)的情况下,这不会正确显示。例如,以下是我得到的仅应为“SYN”指示:

tshark.exe -r tcpfile.pcap -c 1 -T fields -e frame.number -e tcp.flags -e tcp.flags.str
1       0x00000002      A·A·A·A·A·A·A·A·A·A·SA·
您可以在您的系统上试用,它可能会按预期显示(在Wireshark中,它正确显示为
··································································,您可以尝试使用Didier Stevens编写的剖析器,它的灵感来自Snort,我相信它是Wireshark内置的
tcp.flags.str
字段的灵感来源。对于未设置的标志位,我个人更喜欢使用“.”而不是“*”,因此我调整了Lua解析器以实现这种功能。按原样使用,或按自己的选择进行调整。使用Lua解析器,我获得了预期的输出:

tshark.exe -r tcpfile.pcap -c 1 -T fields -e frame.number -e tcp.flags tcpflags.flags
1       0x00000002      ........S.

由于cmd和powershell中都显示了相同的错误字符串,所以我觉得它像是tshark bug,所以我提交了。

Update:bug 16649已经修复,但它还没有被重新移植到任何稳定的分支,尽管我不确定为什么。您可以从下载最新的自动安装程序,但如果您的平台没有可用的安装程序,则您必须自己构建Wireshark,等待Wireshark 3.4.0版本发布(2020年第3季度),或者请求将此错误修复程序重新移植到错误跟踪程序或Wireshark开发者邮件列表中:。