アプリ版:「スタンプのみでお礼する」機能のリリースについて

TCP 通信確立後、任意のパケットを送信するプログラムを
作成しようと考えてます。ここでの任意のパケットとは、
下記のように TCP ヘッダの値を色々と設定したパケットを
指します。

・TCP ヘッダのすべての制御フラグを有効にしたパケット
・TCP ヘッダのチェックサムを意図的に間違えたパケット

任意のデータを送信するだけであれば、通常の socket
プログラムで実装できると思うのですが、TCP ヘッダを
色々と設定するプログラムとなると、どんな実装になるの
でしょうか。C だと SOCK_RAW で socket 通信するよう、
実装するのでしょうか。

実装は C、perl を考えてます。

A 回答 (3件)

> 例えば、userland で動く TCP スタックをご存知であれば教えてください。



私も探さないで書いてしまったのですが、あまり見当たらないですね ^^;
参考URLに書いた MuXTCP という python のプログラムはユーザランドで動きそうですよ。

参考URL:http://kybkreis.org/wiki/MuXTCP
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

MuXTCP がどんなものか確認してみました。
ちょうど自分の望むことができそうです。
まだ開発途中のようですので、今後に期待ですね(^^

お礼日時:2007/02/27 21:26

前の回答で「ACK値」と書いたのは「SEQ値」の間違いでした。

訂正します。
    • good
    • 0

セッションの確立と任意のパケット送信を(スタックから見たときに)同じセッション行うか、そうでないかで話が変わってくると思います。



同じスタックから行う場合は、既存の TCP スタックをいじって何かのタイミングで任意の動作を行うコードを入れることになります。
linux 2.6系の場合は net/ipv4/tcp_output.c あたりを改変することになるでしょう。
kernel space のプログラミンに対して敷居が高いと感じるなら、userlandで動く TCP スタックを探すと良いと思います。

セッションの確立を行ったのとは別のところから、そのセッション内のものと見せかけたパケットを送信するのならばおっしゃる通り SOCK_RAW でパケットを作って流し込めば良いと思います。
セッションの情報(ポート番号, 両方向の ACK 値など)が固定されているのであれば、比較的簡単に書けるでしょう。固定されていないのであれば、毎回パケットを眺めながら調整する必要があるので、ちょっと大変かな。

相手が同じ応答(普通はACK値が変わりますが)を毎回返してくれるのであれば、URLのツールが使えるかもしれません。
http://www.secdev.org/projects/scapy/
    • good
    • 0
この回答へのお礼

tthe_mineさん、回答ありがとうございます。

>同じスタックから行う場合は、既存の TCP スタックをいじって何かのタイミングで任意の動作を行うコードを入れることになります。
>linux 2.6系の場合は net/ipv4/tcp_output.c あたりを改変することになるでしょう。
>kernel space のプログラミンに対して敷居が高いと感じるなら、userlandで動く TCP スタックを探すと良いと思います。

うーん、TCP スタックまで弄らないとダメなんですね。。。
kernel の TCP スタック以外の TCP スタックを利用することは
考えにありませんでした。例えば、userland で動く TCP
スタックをご存知であれば教えてください。

>セッションの確立を行ったのとは別のところから、そのセッション内のものと見せかけたパケットを送信するのならばおっしゃる通り SOCK_RAW でパケットを作って流し込めば良いと思います。
>セッションの情報(ポート番号, 両方向の ACK 値など)が固定されているのであれば、比較的簡単に書けるでしょう。固定されていないのであれば、毎回パケットを眺めながら調整する必要があるので、ちょっと大変かな。

直近でやりたいことが TCP セッション後に TCP ヘッダを
いじった 1 パケットを送信するだけだったので、
netcat で TCP セッションを張って、パケットジェネレータで
パケットを送信することで実現できました。
ただ、tthe_mineさんがおっしゃったように調整が面倒ですね(^^;

>相手が同じ応答(普通はACK値が変わりますが)を毎回返してくれるのであれば、URLのツールが使えるかもしれません。
>​http://www.secdev.org/projects/scapy/

ありがとうございます。
あとでサイトを確認してみます。

お礼日時:2007/02/15 00:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!