如何将 Wireshark tshark 命令用于自定义端口和文本文件

举报
Tiamo_T 发表于 2021/11/23 00:15:36 2021/11/23
【摘要】 Wireshark 是用于网络分析的开源数据包分析器。它可以捕获、剖析和解码各种协议。 在本教程中,我们将讨论几个有问题的场景以及如何使用 wireshark 命令行工具来分析数据包。

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
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。