scapy中的Python变量(sendp)

时间:2015-07-07 12:09:25

标签: python scapy

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

这里我收到错误“struct.error:无法将参数转换为整数”

代码如下所示:

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")

1 个答案:

答案 0 :(得分:0)

我的猜测是你的问题就是这个部分:

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

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

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