を経由して注入するために、パケットを再構築する状況です:私のシナリオでは、私が持っている、3台のコンピュータは、A、BおよびCのここPCAP
コンピュータAは、PCAPでこれらのパケットをキャプチャするコンピュータBコンピュータBにデータを送信しますCの観点から見ると、データはコンピュータBから送られてきます。
私の問題は次のとおりです。キャプチャされたパケットを解析するTCPDUMPのチュートリアルの後、私はオフセットを計算し、typecastingを使ってethernet、ip、およびtcpヘッダ構造を取得する方法を学びました。そうすることの方法を以下に示します。
ethernet = (struct sniff_ethernet*)(packet);
ip = (struct sniff_ip*)(packet + SIZE_ETHERNET);
size_ip = IP_HL(ip)*4;
if (size_ip < 20) {
printf(" * Invalid IP header length: %u bytes\n", size_ip);
return;
}
tcp = (struct sniff_tcp*)(packet + SIZE_ETHERNET + size_ip);
size_tcp = TH_OFF(tcp)*4;
if (size_tcp < 20) {
printf(" * Invalid TCP header length: %u bytes\n", size_tcp);
return;
}
payload = (u_char *)(packet + SIZE_ETHERNET + size_ip + size_tcp);
私はコンピュータCにコンピュータBからそれを送信するためにキャプチャしたパケットを注入したいので、私は送信元/送信先情報の一部を変更する必要がありますし、ときに私のチェックサムを再計算しますやりました。しかし、私の問題は、このデータがイーサネットヘッダー、IPヘッダー、TCPヘッダーの構造に分離されているからです。に戻すにはどのようにすればいいですか?pcap_inject
は使えますか?
ここで何らかの連結を行うことはできますか?
チュートリアルのスニペットのみをコピーしました。このチュートリアルはhttp://www.tcpdump.org/pcap.htmlで、コードはここにあります:http://www.tcpdump.org/sniffex.c どうにかしているように見えるのは、型のキャストを行うことによって各タイプのヘッダーの構造体。そこで、パケットを再構築してインジェクタ機能に与えることができる簡単な逆プロセスがあるかどうか疑問に思っていました。 申し訳ありませんが、私が聞いていることが間違っているようです。私はEEのシニアデザインプロジェクトでこれをやっています。 CSとコード関連のものは、実際に私が拾っているものです。 – maoshouse
ああ。そこには_変更はありませんが、実際にデータのコピーを作成したようなコードも見られませんでした。 – sarnold
私はenterを押して誤って早めに投稿しました。私はより多くのもののためのスペースを作るためにコメントを編集していました。 – maoshouse