英文:
Using Scapy to sniff beacon packets
问题
我正在尝试使用Scapy捕获Wi-Fi接入点的信标类型数据包,然后提取它们的MAC地址和RSSI。当我运行代码时,似乎没有发生任何事情。我做错了什么?我使用的过滤器不正确吗,还是其他原因?
from scapy.all import sniff
import os
interface = "wlp3s0"
interface_mon = "wlp3s0mon"
os.system("sudo -S airmon-ng check kill")
os.system(f"sudo airmon-ng start {interface}")
os.system("sudo iwconfig")
# 使用信标帧类型的过滤器捕获Wi-Fi数据包
packets = sniff(iface=interface_mon, filter="type mgt subtype beacon", count=10)
# 提取每个接入点的MAC地址和信号强度(RSSI)
access_points = []
for pkt in packets:
mac = pkt.addr3
rssi = -(256-ord(pkt.notdecoded[-2:-1]))
access_points.append({'mac': mac, 'rssi': rssi})
print(access_points)
请注意,我已将代码中的HTML实体编码还原为正常的引号字符。希望这有助于解决您的问题。
英文:
I'm trying to use Scapy to capture beacon type packets from wi-fi access points and then extract their mac address and rssi. When i run the code nothing seems to happen. What am i doing wrong? Is the filter i'm using not the right one or is it something else?
from scapy.all import sniff
import os
interface = "wlp3s0"
interface_mon = "wlp3s0mon"
os.system(f"sudo -S airmon-ng check kill")
os.system(f"sudo airmon-ng start {interface} ")
os.system(f"sudo iwconfig")
# Capture Wi-Fi packets with a filter for beacon frames
packets = sniff(iface=interface_mon, filter="type mgt subtype beacon", count=10)
# Extract the MAC address and signal strength (RSSI) of each access point
access_points = []
for pkt in packets:
mac = pkt.addr3
rssi = -(256-ord(pkt.notdecoded[-2:-1]))
access_points.append({'mac': mac, 'rssi': rssi})
print(access_points)
答案1
得分: 1
问题是由于我的当前适配器驱动程序不支持监控模式而引起的。所以代码是正确的,但适配器没有捕获任何内容。将驱动程序回滚到较早版本解决了这个问题。
英文:
The problem was caused by my current adapter driver not supporting monitor mode. So the code was working right but the adapter wasn't capturing anything. Rolling back the driver to an earlier version fixed it.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论