我正在尝试使用Scapy(数据包处理工具)编写一个脚本,该脚本将使用以下代码更改数据包:

def sendCommand(self):
    src = self.srcAdd.toPlainText()
    dst = self.destAdd.toPlainText() #getting strings from textedits
    pay = self.payload.toPlainText()
    print(src + dst + pay) #testing line
    command = IP(dst=dst, src=src)/ICMP()/pay #line giving error

我使用了额外的变量进行测试,例如“csrc”和“cpay”

所有标记为#testing的行都可以正常工作

这是我遇到的错误

Traceback (most recent call last):
File "MainDriverScapy.py", line 30, in createCommand
command = IP(dst=dst,src=src)/ICMP()/pay
File "/usr/lib/python2.7/dist-packages/scapy/packet.py", line 271, in __div__
return other.__rdiv__(self)
AttributeError: 'unicode' object has no attribute '__rdiv__'

似乎没有在Scapy命令的给定字段中插入变量。

最佳答案

弄清楚了,结果发现toPlainText方法将文本留给scapy无法理解的异常编码,因此我使用str()方法将其转换为字符串。

c = str(self.srcAdd.toPlainText())
dst = str(self.destAdd.toPlainText()) #getting strings from textedits
pay = str(elf.payload.toPlainText())

关于python - 用Scapy编写脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41985118/

10-11 14:24