用Python注入原始TCP数据包的合适方法是什么?例如,我有十六进制数字组成的有效负载,我想将十六进制数字序列发送到网络守护程序:所以如果我选择发送'abcdef',我也会看到'abcdef'.但不是'6162636566',如下:
new = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
new.connect(('127.0.0.1', 9999))
new.send('abcdef')
Run Code Online (Sandbox Code Playgroud)
我可以将Python的SOCK_RAW用于此目的吗?如果是这样,你能给我一个用SOCK_RAW发送原始TCP数据包的例子(因为我自己没有让它工作)
谢谢!
叶夫根尼·
Oli*_*Oli 10
尝试scapy,一个强大的交互式数据包操作程序.
例:
%> sudo scapy
>>> packet1 = IP(dst='127.0.0.1')/TCP(dport=9999)
>>> packet1.payload = 'abcdef'
>>> send(packet1)
.
Sent 1 packets.
>>> packet1.show()
###[ IP ]###
version= 4
ihl= None
tos= 0x0
len= None
id= 1
flags=
frag= 0
ttl= 64
proto= ip
chksum= None
src= 127.0.0.1
dst= 127.0.0.1
\options\
###[ Raw ]###
load= 'abcdef'
>>>
Run Code Online (Sandbox Code Playgroud)
听起来你可能对 python 字符串感到困惑。例如,尝试:
new.send('\x0a\x0b\x0c\x0d\x0e\x0f')
Run Code Online (Sandbox Code Playgroud)