2017-08-14 36 views
0

我想玩一个安全工具,使用scapy来伪造UDP校验和中的ASCII字符。我可以做到这一点,但只有当我用十六进制表示法硬编码字节时。但我无法将ASCII字符串转换为二进制符号。这个工程送“他”(前两次的“世界你好”的字符)的字节: sr1(IP(dst=server)/UDP(dport=53, chksum=0x4865)/DNS(rd=1,qd=DNSQR(qname=query)),verbose=0)通过网络欺骗字节的UDP校验和

但每当我尝试使用的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

我能通过删除bin()来得到这个工作。此作品:

test2 = int(binascii.hexlify('He'),16)