我试图嗅出一个走出去利用Scapy的HTTP数据包,在里面添加了一些新的HTTP标头和提前发送。 这样做的目的是在保持完整的数据包只插入新标题。 在最高如果需要任何重新计算校验和应该做的。
已通过对等几乎所有的问题,但并没有完全得到解决。
以下是我做了什么。
def parse(pkt):
if pkt.haslayer(TCP) and pkt.getlayer(TCP).dport == 80 and pkt.haslayer(Raw):
pkt = pkt / "New Header:value\r\n\r\n"
# OR i tried this
#pkt = pkt.getlayer(Raw).load / Raw.load(load="New Header:value\r\n\r\n")
#pkt.getlayer(Raw).load("New Header:value\r\n\r\n")
pkt.show()
#del pkt[IP].chksum
send(pkt)
#end parse function
# start sniffing
a=sniff(filter="tcp and ( port 80 )", prn=parse)
的问题是,上面的代码中插入一个新的原始有效载荷部分,而不是添加一个纯报头。 已经有一个双换行符\ r \ n \ r \ n按HTTP标准,以指示终止标头。
要通过做如下克服这一点,我试图消除最后\ r \ n
#pkt = pkt.getlayer(Raw).load[-2:] / Raw.load(load="New Header:value\r\n\r\n")
但是,这条所有先前存在的头,只有“新头”的遗体。
我已经试过这对Linux Mint的。
更新:我想创建一个新的HTTP有效载荷,其中将包括先前的头,我会增加一些。 可以将部分一个扶着如何移除现有图层