-2

接続を確立するふりをして、データのパケットを送信するプログラムをコーディングしました。Linux の raw ソケットと C 言語を使用します。

残念ながら、接続が確立されているため、プログラムは正常に実装されています。私が今抱えている問題は、サーバーから ACK を受信することによって、psh-ack (データ パケット) がどのように満たされる必要があるかを推測し、また netcat の出力バッファーにデータを表示できるようにするために、それほど多くの時間を費やすことができないことです。 ...

それで、パケットのフォーマットを手伝ってくれる人はいますか?かなりの時間を費やしてきたので、トラフィックの完全なログを提供するのは簡単です。

前もって感謝します。早い時期に提案を願っています... ;)。

PS: 明確でない場合は、tcp ネットワークのプロセスを高速化するため、非ブロッキング プログラム実行にネットワーク プロセスを埋め込むため、およびネットワーク プロセスの高速な結果セットのために、独自のユーザー空間 tcp スタックを実装するふりをします。

ご存じの方もいらっしゃると思いますが、Linux ボックスは、SYN_ACK を送信したサーバーに自動的に応答を送信しますが、接続を RST し、TCP スタックを実装することで接続を確立できません。したがって、私は「TCP/UDP ブラックホール DoS 防止」と呼ばれる grsec の保護を使用しています。これは、Linux カーネルが「一貫性のない」ネットワーク トラフィックに対して望ましくない応答を送信するのを防ぎます。

それで全部です。

4

1 に答える 1

0
ip.len = tcp_data_sz + tcphdr_sz + iphdr_sz

tcp.id = id + 1
tcp.seq = same as ACK of three way handshake
tcp.ack_seq = same as ACK of three way handshake

pseudo_hdr.len = tcp_data_sz + tcphdr_sz

tcp.check = (size: psehdr + tcphdr + tcpdata) (pad with 00's until size % 2 = 0).

このリンクは役に立ちました: http://www.arcesio.net/checksum/checksumTCP.html (スペイン語と英語で編集)。

4 見てくれてありがとう。

Linuxios: すばらしいコメントをありがとうございます。今、私は自分のやり方で解決策を見つけました。(私の方法は、一般的なLinuxインターフェースよりも高速です:)。

于 2013-03-26T15:50:32.917 に答える