質問

現在、私が取り組んでいるプログラムsniffs TCPパケットの送受信とから、特定のアドレスです。私達成しようとする回答と合わせたカスタムパケット定を受けた。しかし、私は解析が行われます。って発生する有効なイーサネット、IP、--の--TCPパケット。

るということだけができませんの姿はどのように配列番号/ack数を決定します。

かもしれないが、これとは関係な問題で書かれたプログラムでC++を使用WinPCap.思いの他のヒント、記事、又はその他の資源が助けてくれます。

役に立ちましたか?

解決

TCP接続が確立されると、

、各側は、初期シーケンス番号として乱数を生成します。それは強く乱数である:彼らは簡単にTCPストリームに注入するために、パケットを偽造することができますよう、インターネット上の誰もが、シーケンス番号を推測することができる場合、セキュリティ上の問題があります。

その後、シーケンス番号が1だけインクリメントする送信すべてのバイトのためのACKフィールドは、受信を確認するために送り返され、他側からシーケンス番号がある。

RFC 793 に、オリジナルのTCPプロトコルの仕様は、大きな助けになることができます。

他のヒント

私が行うには、同じ仕事をしています。 まず、初期SEQ#が(0から4294967297)ランダムに生成されるであろう。 そして、受信機は、受信したデータの長さをカウントし、送信者にseq# + length = xのACKを送信します。シーケンスは、Xになり、送信側はデータを送信します。同様に受信機は、長さx + length = yをカウントし、その上yとしてACKを送信して...その配列/ ACKが生成される方法...

あなたはそれが事実上のWiresharkでパケットを盗聴しようとTCPストリームを追跡して、シナリオを参照してください表示したい場合は...

だから正しく-おいけ TCP列予測の攻撃.そうなるとまだ研究の具体的な対象OS 初期のシーケンス番号 ジェネレータ。

が広く公表さvulnerabiltiesにかなり すべての主要なOS wrt自分で発電される。しんのの影響が、私の理解は、ほとんどのベンダのパッチを公開 ランダム自じゃない単位で.

どのようにお考えの答えを説いつ発表についての詳細は、公式な情報についてACKのと TCP RFC

こちらは、より実践的な"簡単に理解"のページを見てやってた時に、同様の実装とも TCP分析-2.Sequence&承認番号

のセクション3.3は、シーケンス番号を覆います。私はそのレベルでコードを書いた最後の時間は、私たちはただ持続シーケンス番号に1つのアップカウンタを保持だと思います。

これらの値は、接続のための初期シーケンス番号に対してパケットのペイロードの開始の予想オフセットを参照します。

参照する

  

シーケンス番号(32ビット) - 持つデュアル   役割SYNフラグが設定されている場合、この   初期シーケンス番号です。ザ・   実際の最初のシーケンス番号   データ・バイトは、この順序になります   数に1を加えSYNフラグがない場合には   セットには、これはシーケンス番号です   最初のデータバイトの

     

謝辞   数(32ビット) - ACKフラグがある場合   このフィールドの値が設定され   その次に期待されるバイト   受信機が期待されます。

の数字がランダム次いでオクテット(バイト)送信の数によって増加し、両側から生成されます。

接続が確立された後、

のシーケンス番号がインクリメント。新しい接続の初期シーケンス番号は、理想的にランダムに選択されますが、OSの多くは、いくつかのセミランダムアルゴリズムを持っています。 RFCのより TCPのRFC を見つけるのに最適な場所です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top