【发布时间】:2019-05-14 13:49:24
【问题描述】:
我正在做一个项目,用 Scapy 检测 Beacon 和 ProbeResponse 数据包中的无线加密。
我在stackoverflow上使用了另一个问题的解决方案How to use Scapy to determine Wireless Encryption Type?
这是我当前的脚本:
p = pkt[Dot11Elt]
essid, channel = None, None
cryptoSet = set()
while isinstance(p, Dot11Elt):
if p.ID == 0:
essid = p.info.decode("utf-8", "replace")
elif p.ID == 3:
channel = ord(p.info)
elif p.ID == 48:
cryptoSet.add("WPA2")
elif p.ID == 221 and p.info.startswith(b"\x00\x50\xf2\x01\x01\x00"):
cryptoSet.add("WPA")
p = p.payload
if not cryptoSet:
cap = pkt.sprintf("{Dot11Beacon:%Dot11Beacon.cap%}"
"{Dot11ProbeResp:%Dot11ProbeResp.cap%}").split('+')
if "privacy" in cap:
cryptoSet.add("WEP")
else:
cryptoSet.add("OPN")
crypto = "/".join(cryptoSet)
脚本检测 SSID、频道、WPA2、WEP 和 OPN。 但是当我收到一个带有 WPA 和 ID 221 的数据包时,我得到了一个错误。
AttributeError: 'p' object has no attribute 'info'
所以我需要一种不同的方法来解决这个问题。
我正在使用 Python 3.5.3 和 Scapy 2.4.0.dev581。 开发,因为我也需要 RSSI。这在当前的开发版本中已解决。
任何想法如何解决这个问题?
【问题讨论】:
-
请添加错误信息并查看此信息; How to Ask, minimal reproducible example
-
您是否尝试检查 ID=221 之后的信息字段?如果你把它放在 try/catch 中并返回一些结果,这意味着你有一些 ID=221 但没有信息字段的数据包。
标签: python security wifi scapy wpa