如何将 PCAP 文件中的 IP 地址更改为字符串
How to change an IP address in a PCAP file to a string
我需要存档一些 PCAP 文件并与不知道 pcap 中的各种 IP 地址指的是什么的人共享。
所以我想找到一种方法来编辑 PCAP 文件并更改 IP 地址,以便它们在 wireshark 中显示为 fqdn 或随机字符串。例如"server.a.some.domain" 或 "serverA" 而不是 192.168.x.x。这样人们就可以了解流量,而不必询问每个 IP 是什么。
我可以在 wireshark 中使用名称解析功能手动实现这一点,但我想在共享 PCAP 文件之前自动更改它们。
我尝试了 bittwiste 和 tcprewrite,但它们似乎只支持将 IP 地址更改为另一个 IP 地址,而不是字符串。
例如这有效
$ bittwiste -I a.pcap.file.pcap -O test.pcap -T ip -s 192.168.0.0,192.168.0.2
input file: a.pcap.file.pcap
output file: test.pcap
1771 packets (665162 bytes) written
但这不是
$ bittwiste -I a.pcap.file.pcap -O test.pcap -T ip -s 192.168.0.0,serverA
bittwiste: invalid source IP address
有人知道这是否可行以及如何实现吗?
谢谢
这并不像看起来那么微不足道。您要替换的名称仅在应用程序数据中,即通常在 DNS 请求和响应中,作为 TLS 握手的一部分(ClientHello 中的 SNI,服务器证书中的 CN/SAN),在 HTTP 请求的主机字段中header ...
虽然您可能会尝试用其他名称简单地 string-replace 所有此类名称,但这会破坏 TCP 连接中的序列号,除非您将其替换为完全相同长度的名称。即使这样,它也会使 TCP 校验和无效,使证书上的签名无效,...并且在 DNS 的情况下,简单的字符串替换甚至不会找到所有名称,因为它们可能在 DNS 中编码,而不仅仅是在DNS 数据包作为纯字符串。
我需要存档一些 PCAP 文件并与不知道 pcap 中的各种 IP 地址指的是什么的人共享。
所以我想找到一种方法来编辑 PCAP 文件并更改 IP 地址,以便它们在 wireshark 中显示为 fqdn 或随机字符串。例如"server.a.some.domain" 或 "serverA" 而不是 192.168.x.x。这样人们就可以了解流量,而不必询问每个 IP 是什么。
我可以在 wireshark 中使用名称解析功能手动实现这一点,但我想在共享 PCAP 文件之前自动更改它们。
我尝试了 bittwiste 和 tcprewrite,但它们似乎只支持将 IP 地址更改为另一个 IP 地址,而不是字符串。
例如这有效
$ bittwiste -I a.pcap.file.pcap -O test.pcap -T ip -s 192.168.0.0,192.168.0.2
input file: a.pcap.file.pcap
output file: test.pcap
1771 packets (665162 bytes) written
但这不是
$ bittwiste -I a.pcap.file.pcap -O test.pcap -T ip -s 192.168.0.0,serverA
bittwiste: invalid source IP address
有人知道这是否可行以及如何实现吗?
谢谢
这并不像看起来那么微不足道。您要替换的名称仅在应用程序数据中,即通常在 DNS 请求和响应中,作为 TLS 握手的一部分(ClientHello 中的 SNI,服务器证书中的 CN/SAN),在 HTTP 请求的主机字段中header ...
虽然您可能会尝试用其他名称简单地 string-replace 所有此类名称,但这会破坏 TCP 连接中的序列号,除非您将其替换为完全相同长度的名称。即使这样,它也会使 TCP 校验和无效,使证书上的签名无效,...并且在 DNS 的情况下,简单的字符串替换甚至不会找到所有名称,因为它们可能在 DNS 中编码,而不仅仅是在DNS 数据包作为纯字符串。