pyshark - 来自TCP数据包的数据

时间:2015-05-09 18:34:38

标签: python wireshark packet-capture pyshark

无论如何使用pyshark来获取TCP数据包的有效负载?

我试图比较多个TCP流中不同数据包的数据部分,但我找不到获取数据包数据的方法。 pkt['tcp'].data似乎不存在。

3 个答案:

答案 0 :(得分:1)

如果您使用的是.pcap文件,则在使用

读取文件后
cap = pyshark.FileCapture('vox.pcap')

并说,你想读取第二个数据包的数据,你确定这样的字段存在,试试:

pkt = cap[1]
print pkt.tcp.data

要查看pkt.tcp的可用选项,请使用:

dir(pkt.tcp)

它将返回pkt.tcp的所有可用选项

答案 1 :(得分:1)

使用pyshark 0.3.7.11和python 3.6和 假设您已加载捕获文件,则可以使用以下命令获取tcp有效内容:

p = capfile[0] # or any packet you know has a tcp layer
payload = p.tcp.payload
  

p.tcp.payload Out [139]:   “1207:00:2C:00:01:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 :00:00:00:00:00:02:00:00:00:00:00:B2:00:1C:00:81:00:00:00:01:00:03:00:03:00 :02:00:00:00:00:00:64:00:01:00:04:00:02:00:6B:00:03:00

您可以通过以下方式找到可以访问的字段:

dir(p) # for entire packet
dir(p.ip) # for ip layer
dir(p.tcp) # for tcp layer

以漂亮漂亮的格式打印信息:

print(p.tcp)  # one way
p.tcp.pretty_print() # using pretty print

不确定对您有什么用处。 文档位于https://github.com/KimiNewt/pyshark

答案 2 :(得分:0)

你可以这样做:

import pyshark
import sys

cap = pyshark.FileCapture(sys.argv[-1])
for i in cap:
    try:
        print(i.data.data)
    except:
        print("no data")