如何将 Wireshark tshark 命令用于自定义端口和文本文件
Wireshark 是用于网络分析的开源数据包分析器。它可以捕获、剖析和解码各种协议。
在本教程中,我们将讨论几个有问题的场景以及如何使用 wireshark 命令行工具来分析数据包。
场景一:使用非标准端口和 tshark 进行分析
Wireshark 可以根据为该协议分配的端口号(保存在其首选项文件中)剖析和解码特定协议(包含在有效负载消息中)。
假设 tshark 正在解析 ldap 数据包,并且 ldap 服务器的默认端口号是 389。如果消息在源端口或目标端口中具有端口号 389,tshark 会理解它是一个 ldap 消息并将正确解码它。
但是如果 ldap 配置在其他端口号上,我们需要向工具明确指定端口号。我们可以使用以下两种方法之一来做到这一点:
在首选项文件中硬编码端口号
第一种方法是在wireshark首选项文件中列出您喜欢配置的所有其他端口号。
Wireshark 首选项文件是 ~/.wireshark/preferences。
以下是首选项文件 ~/.wireshark/preferences 的 ldap 部分:
如果您的 LDAP 服务器配置在端口号 400 上,只需将端口号附加到现有值,如下所示:
# Set the port for LDAP operations
ldap.tcp.port: 389,400
# Set the port for LDAP operations over SSL
ldap.ssl.port: 636,400
# Set the TCP port for messages (if other than the default of 646)
ldp.tcp.port: 646,400
# Set the UDP port for messages (if other than the default of 646)
ldp.udp.port: 646,400
使用 tshark 命令行 -o 选项
使用 -o 选项指定端口信息。格式应该与它在首选项文件中列出的方式完全相同,如示例中所示。
# tshark -r ../temp.pcap -o ldap.tcp.port:389
让我们以直径协议为例。如果您不向 tshark 提供端口信息,它不会剖析有效负载部分,因为首选项文件中不存在端口号。
# tshark -r ../temp.pcap
Data (204 bytes)
0000 01 00 00 cc 00 00 01 2e 01 00 00 00 86 26 73 df .............&s.
0010 dc 67 4a 66 00 00 01 07 40 00 00 2c 61 61 61 3a .gJf....@..,aaa:
0020 2f 2f 31 30 2e 34 39 2e 31 31 2e 31 35 30 3a 34 //10.49.11.150:4
0030 38 37 38 3b 31 33 36 38 37 37 39 35 37 30 3b 32 878;1368779570;2
0040 00 00 01 08 40 00 00 22 68 73 73 2d 32 2e 68 73 ....@.."bss-2.bs
0050 73 62 6c 61 64 65 2e 72 61 6e 63 6f 72 65 2e 63 damadd.anduore.c
0060 6f 6d 00 00 00 00 01 28 40 00 00 1c 68 73 73 62 od.....(@...badb
0070 6c 61 64 65 2e 72 61 6e 63 6f 72 65 2e 63 6f 6d pale.ramcoe.com
0080 00 00 01 29 40 00 00 20 00 00 01 0a 40 00 00 0c ...)@.. ....@...
0090 00 00 28 af 00 00 01 2a 40 00 00 0c 00 00 13 89 ..(....*@.......
00a0 00 00 01 15 40 00 00 0c 00 00 00 01 00 00 01 04 ....@...........
00b0 40 00 00 20 00 00 01 02 40 00 00 0c 01 00 00 00 @.. ....@.......
00c0 00 00 01 0a 40 00 00 0c 00 00 28 af ....@.....(.
Data: 010000cc0000012e01000000862673dfdc674a6600000107...
[Length: 204]
当您使用 -R 选项时,它甚至不会打印单个字符。
# tshark -r ../temp.pcap -V -R diameter
Running as user "root" and group "root". This could be dangerous.
当您提供如下所示的直径的端口号信息时,tshark 命令将按预期工作并显示适当的信息。
# tshark -r ../temp.pcap -odiameter.tcp.ports:3868 -R diameter
Running as user "root" and group "root". This could be dangerous.
1 0.000000 192.168.129.11 -> 192.168.129.68 DIAMETER cmd=Location-InfoRequest(302) flags=R--- appl=3GPP Cx(16777216) h2h=862673df e2e=dc674a66
2 0.002474 192.168.129.68 -> 192.168.129.11 DIAMETER cmd=Location-InfoAnswer(302) flags=---- appl=3GPP Cx(16777216) h2h=862673df e2e=dc674a66
场景二:仅使用数据包的Byte Buffer进行分析
如果你没有 pcap 文件,只有数据包的字节缓冲区,请使用此方法。
假设您在开发服务器的日志文件中找到了数据包的字节数组,并且您想使用 tshark 对其进行分析。
首先将字节数组转换为十六进制格式,一个简单的 printf(%2X) 会做到这一点。
3c d9 2b 09 fb 24 00 26 b9 8c 89 a6 08 00 45 00
01 20 d6 cb 40 00 40 06 08 9c ac 10 81 0b ac 10
81 44 c4 96 0f 1c 0a 46 92 fc 64 6e 47 7b 80 18
00 36 32 36 00 00 01 01 08 0a 32 02 45 fa 04 e0
ba f4 01 00 00 ec 80 00 01 2e 01 00 00 00 86 26
73 de dc 67 4a 65 00 00 01 07 40 00 00 2c 61 61
61 3a 2f 2f 31 30 2e 34 39 2e 31 31 2e 31 35 30
现在你想从上面的输出中过滤掉信息。您需要做的第一件事是为此字节数组设置偏移量并将其附加到每一行中,您可以编写代码来自动执行此操作。
0000 3c d9 2b 09 fb 24 00 26 b9 8c 89 a6 08 00 45 00
0010 01 20 d6 cb 40 00 40 06 08 9c ac 10 81 0b ac 10
0020 81 44 c4 96 0f 1c 0a 46 92 fc 64 6e 47 7b 80 18
0030 00 36 32 36 00 00 01 01 08 0a 32 02 45 fa 04 e0
0040 ba f4 01 00 00 ec 80 00 01 2e 01 00 00 00 86 26
0050 73 de dc 67 4a 65 00 00 01 07 40 00 00 2c 61 61
0060 61 3a 2f 2f 31 30 2e 34 39 2e 31 31 2e 31 35 30
使用 text2pcap 并将其转换为 pcap 文件:
$ text2pcap a.txt a.pcap
Input from: a.txt
Output to: a.pcap
Wrote packet of 302 bytes at 0
Read 1 potential packet, wrote 1 packet
在这个 pcap 文件上使用 tshark:
$ tshark -r a.pcap
1 0.000000 172.16.129.11 -> 172.16.129.68 DIAMETER 302 cmd=Location-InfoRequest(302) flags=R--- appl=3GPP Cx(16777216) h2h=862673de e2e=dc674a65
正如您在下面的输出中看到的,我们只是将字节数组解码为有意义的内容。
$ tshark -r a.pcap -V | grep AVP
AVP: Session-Id(263) l=44 f=-M- val=aaa://10.20.11.140:4878;1368779570;1
AVP: Destination-Realm(283) l=28 f=-M- val=pal.core
AVP: Destination-Host(293) l=21 f=-M- val=192.11.121.35
AVP: Origin-Host(264) l=20 f=-M- val=10.20.11.140
AVP: Origin-Realm(296) l=19 f=-M- val=ffix
- 点赞
- 收藏
- 关注作者
评论(0)