4

私は Lua でディセクタを書くのが初めてで、2 つの簡単な質問がありました。TCP オプションが MSS、TCP SACK、TimeStamps、NOP、Window Scale、Unknownであるパケットがあります。私は基本的に、TCP オプション フィールドの不明なセクションを分析しようとしています。連鎖解剖器具を使用する必要があることは承知しています。

最初の質問は、チェーン ディセクタを使用して TCP オプションを解析しているときに、最初からすべてのオプションを解析する必要があるかどうかです。たとえば、MSS、TCP SACK、....を解析する必要があります。最後に不明なセクションを解析するか、不明なセクションに直接ジャンプする方法はありますか。

2 番目の質問は、多くのカスタム プロトコル ディセクタのコードを見たことがあります。(たとえば)TCP に従うプロトコルを解析する必要がある場合は、次を含める必要があります。

-- load the tcp.port table
tcp_table = DissectorTable.get("tcp.port")
-- register our protocol to handle tcp port
tcp_table:add(port,myproto_tcp_proto)

私の質問は、とにかく、プロトコルの途中にジャンプすることはありますか. たとえば、私の場合、TCP オプションを解析したいと考えています。tcp.options を直接呼び出すことはできますか? パーサーはオプションの開始位置から分析を開始しますか?

4

1 に答える 1

0

TCP オプションは「uint8_t type; uint8_t len; uint8_t* data」構造です。私は通常、よく使われるものに名前を付けます。たとえば、getSack()、getMss() などです。それ以外の場合は、それらを配列に保持します (最大サイズは 20 など)。

2 番目の質問については、TCP ヘッダーを気にしないということですね。その場合は、ポインターをさらに 20 バイト移動して、TCP オプションにアクセスします。

于 2014-01-03T00:36:04.863 に答える