找到负载,如何访问?

问题描述 投票:7回答:3

首先,我在这里阅读了有关船尾的其他原始答案,但是没有一个有用的,也许我做错了什么,这就是今天把我带到这里的原因。

所以,对于初学者来说,我有一个pcap文件,由于一些重新传输而损坏了,据我所知,我已经把它正确地找回了。

它包含Radiotap标头,IEEE 802.11(dot11),逻辑链接控制,IPv4,UDP和DNS。

据我了解,正在传输的udp数据包保留了该原始数据,但是,这对最近的一些怪癖也有影响,也许原始数据位于Radiotap / raw中。

使用scapy,我正在遍历数据包,当找到带有Raw层的数据包时,我正在使用scapy的.show()函数进行查看。

这样,我可以看到有可用的原始负载

###[ Raw ]###
 \load      \
  |###[ Raw ]###
  |  load      = '@\x00\x00\x00\xff\xff\xff\xff\xff\xff\x10h?'

所以,我想我的问题是,如何捕获此有效载荷以接收可能的内容,据我所知,负载应该是图像文件,但是我很难相信这样,所以我认为我在某个地方走错了一步。

这是我用来实现上述结果的代码

from scapy.all import *
from scapy.utils import *


pack = rdpcap('/home/username/Downloads/new.pcap')
for packet in pack:
    if packet.getlayer(Raw):
        print '[+] Found Raw' + '\n'
        l = packet.getlayer(Raw)
        rawr = Raw(l)
        rawr.show()

任何帮助,或有需要进一步阅读的见识,我都不是船首,也不是小包解剖专家。

*旁注,以前我曾尝试(使用单独的代码和服务器)重播数据包并将其发送给自己,但无济于事。但是我觉得那是由于我缺乏对UDP数据包的了解。

UPDATES-我现在已经用一个scapy重组器测试了我的pcap文件,并且我已经确认我没有碎片数据包或任何类似的东西,所以我认为一切都应该顺利进行...在Wireshark中打开pcap时,我可以看到有重新传输,但是由于没有碎片发生,所以我不确定会影响我的目标多少?

而且,我已经尝试过getlayer(Raw).load,如果我在其上使用打印,则会在屏幕上看到一些乱码,我假设其数据已成为我的原图,但是现在我需要将其放入一个可用格式。

python scapy payload
3个回答
5
投票

您可以做:

data = packet[Raw].load

-1
投票

您应该可以通过这种方式访问​​该字段:

l = packet.getlayer(Raw).load

-1
投票

使用Scapy的交互式外壳,我成功做到了:

pcap = rdpcap('sniffed_packets.pcap')
s = pcap.sessions()

for key, value in s.iteritems():

     # Looking for telnet sessions
     if ':23' in key:
         for v in value:
             try:
                 v.getlayer(Raw).load
             except AttributeError:
                 pass
© www.soinside.com 2019 - 2024. All rights reserved.