euniclusRustでパケットをキャプチャするプログラムを作りたいと思います。Rustで低レベルのネットワークプログラミングをする場合pnetというライブラリーを使うようですが、このライブラリーを呼び出すためにCargoというパッケージ管理ツールを使用します。Rustのチュートリアルサイトによると、CargoとはRustのビルドシステムでありパッケージマネージャーとされています。プロジェクトの管理もしてくれるようです。最後にプロジェクト作成Cargoを使ってプロジェクトを作成します。以下のようにしてコマンドを実行します。これはpnet_sampleというプロジェクトを作成するということです。pnet_sampleCargo.tomlを修正pnetを使えるようにしましょう。Inteface");println!("Inteface:{}",interface.name);}マシンにあるインターフェースのうち、引数で指定したネットワークインターフェースと一致するものを取得します。処理自体はコメントに書いたとおりです。{}",e);}}}}こちらが実際の受信処理です。パケットを受信している部分はrx.next()です。match構文で正常に受信できたかを確認します。受信できた場合capture_packet()にデータを渡し、パケットを解析しています。buildこのプログラムはrawソケットを使います。root権限が必要ですのでこのように実行します。wlp2s0引数のwlp2s0がインターフェース名です。これは僕の場合の話ですので、人によって変わります。インターフェース名はifconfigで確認できます。最後にこういう系のプログラムはc言語でしかつくったことがないのですが、Rustだと割と短く簡単につくることができました。今回はipアドレスとポート番号を表示するだけですが、ここにいろいろ情報が載っていますので本格的なものも作れそうです。