我正在尝试使用scapy安全工具来欺骗UDP校验和中的ASCII字符。我可以这样做,但只有当我用Hex符号硬编码字节时。但我无法将ASCII字符串字转换为二进制表示法。这可以发送“He”的字节(“Hello world”的前两个字符):
sr1(IP(dst=server)/UDP(dport=53, chksum=0x4865)/DNS(rd=1,qd=DNSQR(qname=query)),verbose=0)
但每当我尝试使用test2
而不是0x4865
的变量时,DNS数据包不会通过网络传输。这应该为这个ASCII创建二进制文件:
test2 = bin(int(binascii.hexlify('He'),16))
sr1(IP(dst=server)/UDP(dport=53, chksum=test2)/DNS(rd=1,qd=DNSQR(qname=query)),verbose=0)
当我打印test2变量时,显示正确的二进制表示法。
如何转换He
之类的字符串,以便在scapy接受的校验和表示法中显示0x4865
??
答案 0 :(得分:0)
我能够通过删除bin()来实现这一点。这有效:
test2 = int(binascii.hexlify('He'),16)