ユーザー タイムアウトと呼ばれる TCP オプションを使用してパケットを作成しようとしています。scapy はこれをサポートしていますか? MSS のようなオプションを追加するのは、かなり簡単に思えます。オプションの RFC は次のとおりです: https://www.rfc-editor.org/rfc/rfc5482#section-2
ポインタはありますか?
ユーザー タイムアウトと呼ばれる TCP オプションを使用してパケットを作成しようとしています。scapy はこれをサポートしていますか? MSS のようなオプションを追加するのは、かなり簡単に思えます。オプションの RFC は次のとおりです: https://www.rfc-editor.org/rfc/rfc5482#section-2
ポインタはありますか?
ドキュメントには、任意のオプションを番号で設定する方法が説明されていないようです。
コードを掘り下げると、の代わりにTCPOptionsField.i2m
を渡すだけでそうできるようです。だから、あなたが使うのと同じ場所を使ってみてください。オプション フィールドの残りの部分を文字列として構成する必要があるようです。長さ、UTO + 粒度の上位バイト、下位バイトの順です。int
str
28
MSS
または、コードを変更して処理します。
あなたが望むのは、scapy/layers/inet.py の TCPOptions タプルだと思います:
TCPOptions = (
{ 0 : ("EOL",None),
...
28 : ("UserTimeout",!H)
},
{ "EOL":0,
...
"UserTimeout":28,
} )
次に、MSS を設定するのと同じ方法で UTO を設定できます (うまくいけば)。
いずれにせよ、オプション値として結果を渡す前に、1 ビットの粒度と 15 ビットのタイムアウトを構成する責任がありますが、オプションとして bool と int のタプルを取るように変更するよりも簡単だと思います値を取得し、TCP 内で構成します。
もちろん、両側でカーネルにパッチを適用し、介在するネットワークに未知の TCP オプションを利用したり削除したりするデバイスがないことを確認しない限り、いずれにしてもあまり興味深いものにはなりません。