在python中设置tcp MSS

时间:2014-12-21 22:30:39

标签: python networking raw-sockets dpkt

我正在尝试执行以下操作:

(1)接收网络数据包, (2)将tcp mss(最大段大小)更改为其他值, (3)发送数据包。

我使用python,iptables和dpkt来执行此操作,但我无法更改tcp标头中的MSS(在dpkt中,如何在pkt.tcp.opts中更改mss)?

有人可以帮我改变TCP标题中的MSS吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

buf = pkt.tcp.opts
buf2 = ""
while buf:
      o = ord(buf[0])
      if o > tcp.TCP_OPT_NOP:
           l = ord(buf[1])
           d = buf[2:l]
           if o == tcp.TCP_OPT_MSS:
                mss = struct.unpack(">H", d)[0]
                mss2 = <newmss>
                d2 = struct.pack(">H", mss2)

                buf = buf[0:2] + d2 + buf[l:]
           buf2 += buf[0:l]
           buf = buf[l:]
      else:
           buf2 += buf[0]
           d, buf = '', buf[1:]

pkt.tcp.opts = buf2