无论如何使用pyshark来获取TCP数据包的有效负载?
我试图比较多个TCP流中不同数据包的数据部分,但我找不到获取数据包数据的方法。 pkt['tcp'].data
似乎不存在。
答案 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")