简体   繁体   English

使用 scapy 在 tcp 中添加选项

[英]add option in tcp with scapy

Upon the receive of a TCP ACK (with option experiment) like this收到这样的 TCP ACK(带有选项实验)

在此处输入图片说明

I want to generate a TCP SYN+ACK (with option experiment and Fast Open Cookie) as indicated below我想生成一个 TCP SYN+ACK(带有选项实验和快速打开 Cookie),如下所示

在此处输入图片说明

I want to generate the TCP SYN+ACK with scapy so I added我想用 scapy 生成 TCP SYN+ACK 所以我添加了

So I added 254 : ("RFC3692-style Experiment","!HHH") in the / usr/share/pyshared/scapy/layers/inet.py like this所以我加了254 : ("RFC3692-style Experiment","!HHH")在/ usr/share/pyshared/scapy/layers/inet.py这样

TCPOptions = (
              { 0 : ("EOL",None),
                1 : ("NOP",None),
                2 : ("MSS","!H"),
                3 : ("WScale","!B"),
                4 : ("SAckOK",None),
                5 : ("SAck","!"),
                8 : ("Timestamp","!II"),
                14 : ("AltChkSum","!BH"),
                15 : ("AltChkSumOpt",None),
                25 : ("Mood","!p"),
                254 : ("Experiment","!HHHH")
                },
              { "EOL":0,
                "NOP":1,
                "MSS":2,
                "WScale":3,
                "SAckOK":4,
                "SAck":5,
                "Timestamp":8,
                "AltChkSum":14,
                "AltChkSumOpt":15,
                "Mood":25,
                "Experiment":254
                } )

And upon the receive of the TCP ACK (with experiment option), I executhe the following scapy function:在收到 TCP ACK(带有实验选项)后,我执行以下 scapy 函数:

TCP_SYNACK=TCP(sport=Ddport, dport=Ssport, flags="SA", seq=SeqNr, ack=AckNr, options=[('Experiment',0xf989,0xcafe,0x0102,0x0002),('NOP',0),('NOP',0)])
ANSWER=sr1(ip/TCP_SYNACK)

But I got a python error.但是我遇到了python错误。 It looks like I made error in the definition of the option field in the TCP packet with scapy.看起来我在scapy的TCP数据包中的选项字段的定义中出错了。 What I m doing wron?我做错了什么?

我认为您需要以tuple格式指定可选字段的值,如下所示:

TCP_SYNACK = TCP(sport=Ddport, dport=Ssport, flags="SA", seq=SeqNr, ack=AckNr, options=[('Experiment', (0xf989, 0xcafe, 0x0102, 0x0002)), ('NOP', 0), ('NOP', 0)])

but I had the same problem.但我有同样的问题。 You can actually put an integer as the first element of your options tuple.您实际上可以将整数作为选项元组的第一个元素。 I wanted to put in a hash, so I used the following code in scapy:我想放入一个散列,所以我在 scapy 中使用了以下代码:

pkt = TCP(options=[("NOP", None), (19, "\xff\xff\xff\xff\xff\xff")])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM