我正在尝试使用Scapy分析.pcapng文件
我有一个无线通信的客户端和服务器设置。i、 e客户端正在向服务器发送数据。我有一个单独的节点,我使用Wireshark(在监视器模式下)捕获客户端和服务器之间的802.11流量帧。运行wireshark时生成的文件名为short.pcapng
当我试图使用Scapy分析此文件时,问题就出现了
我编写的python代码如下所示:
import argparse
import os
from time import sleep
import sys
from scapy.utils import RawPcapReader
from scapy.layers.dot11 import *
from scapy.packet import Packet
from scapy.all import *
def process_pcap():
print('Opening {}...'.format(FILE_NAME))
for (pkt_data, pkt_metadata,) in RawPcapReader(FILE_NAME):
dot11_packet = Dot11(pkt_data)
print(dot11_packet.mysummary)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='PCAP reader')
parser.add_argument('--pcap', metavar='<pcap file name>',
help='pcap file to parse', required=True)
args = parser.parse_args()
global FILE_NAME
FILE_NAME = args.pcap
if not os.path.isfile(FILE_NAME):
print('"{}" does not exist'.format(FILE_NAME), file=sys.stderr)
sys.exit(-1)
process_pcap()
sys.exit(0)
我正在使用以下命令运行代码:
PS C:\Users\root\python> python thr.py --pcap short.pcapng
它打印出的信息表明short.pcapng文件中存在的数据仅包含子类型关联请求的管理帧(而不是我预期的802.11数据帧和802.11控制帧)
<bound method Dot11.mysummary of <Dot11 subtype=Association Request type=Management proto=0 FCfield= ID=6144 addr1=6f:00:00:00:cd:27 (RA=DA) addr2=96:03:00:00:00:00 (TA=SA) addr3=10:30:a4:15:40:01 (BSSID/STA) SC=218 |<Dot11AssoReq cap=CFP+privacy+short-preamble+agility listen_interval=314 |<Dot11Elt ID=220 len=166 info='22?\xfa\xdc\xa622@E\xb23\xdd\x90' |>>>>
<bound method Dot11.mysummary of <Dot11 subtype=Association Request type=Management proto=0 FCfield= ID=6144 addr1=6f:00:00:00:fc:27 (RA=DA) addr2=96:03:00:00:00:00 (TA=SA) addr3=10:30:a4:15:40:01 (BSSID/STA) SC=190 |<Dot11AssoReq cap=CFP+PBCC+agility listen_interval=270 |<Dot11Elt ID=220 len=166 info='22@E\x87\x92\xba0' |>>>>
但是,当我查看Wireshark中的short.pcapng文件时,它显示了预期的802.11数据帧:
这对我来说没有意义,因为Wireshark显示我有数据帧和控制帧(RTS、CTS),而Scapy似乎认为我只有关联请求帧(或管理帧)。更糟糕的是,在应用筛选器时,我无法在Wireshark中找到任何关联请求帧:
wlan.fc.type_subtype == 0x00
Wireshark和Scapy都在读取相同数量的行。从本质上讲,他们似乎在阅读相同的数据,但对数据的解读却有所不同
任何对正在发生的事情的帮助都将不胜感激
编辑:
@Carcigenicate注释后,我已将打印语句更改为:
print(dot11_packet.mysummary())
这似乎仍然会生成关联请求,只是格式略有不同:
802.11 Management Association Request a5:03:00:00:00:00 (TA=SA) > 6f:00:00:00:f4:75 (RA=DA)
802.11 Management Association Request a5:03:00:00:00:00 (TA=SA) > 6f:00:00:00:d3:76 (RA=DA)
802.11 Management Association Request a5:03:00:00:00:00 (TA=SA) > 6f:00:00:00:18:77 (RA=DA)
802.11 Management Association Request a5:03:00:00:00:00 (TA=SA) > 6f:00:00:00:46:77 (RA=DA)
802.11 Management Association Request a5:03:00:00:00:00 (TA=SA) > 6f:00:00:00:7c:77 (RA=DA)
这里的问题是,您正在使用
RawPcapReader
,只有在您完全确定自己在做什么,而不完全知道自己在做什么的情况下才应该使用:-)没有任何东西可以保证您正在嗅探的数据包是
Dot11
。更可能的是,第一层是RadioTap
。 试一试相关问题 更多 >
编程相关推荐