Python scapy 中的变量 (sendp)

Python variables in scapy (sendp)

我正在尝试生成任意无线信标帧。我正在从文件中获取基于字符串的 SSID 值以放入 scapy sendp 语句中。现在我可以将 SSID 字符串放入 sendp,但我还需要动态获取字符串长度 (len=),以便将其放入数据包详细信息中。没有此长度的数据包格式不正确。

这里出现错误 "struct.error: cannot convert argument to integer"

代码如下所示:

with open ('ssid.txt') as f:
for line in f:
    sendp(RadioTap()/Dot11(addr1="ff:ff:ff:ff:ff:ff",addr2=RandMAC(),addr3=RandMAC())/Dot11Beacon(cap="ESS")/Dot11Elt(ID="SSID", len='%d' % len(line.strip()),info='%d' % (line))/Dot11Elt(ID="Rates",info='\x82\x84\x0b\x16')/Dot11Elt(ID="DSset",info="\x03")/Dot11Elt(ID="TIM",info="\x00\x01\x00\x00"),iface="mon0")

我猜你的问题出在这部分:

Dot11Elt(ID="SSID", len='%d' % len(line.strip()),info='%d' % (line))

如果 len 参数应该是一个整数,这可能会导致您看到的错误,因为您实际上传递的是一个字符串。尝试删除第一个 '%d' %,即将上面的内容替换为:

Dot11Elt(ID="SSID", len=len(line.strip()), info='%d' % line)