【Ethernet】車載ネットワーク その63【lwIP+npcap⑨】

【Ethernet】車載ネットワーク その63【lwIP+npcap⑨】 車載ネットワーク

バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-network-backnumber/

はじめに

npcapのフィルタ文字列コンパイルAPIについて

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

npcapのフィルタ文字列コンパイルAPI

太郎くん
太郎くん

今回はnpcapのフィルタ文字列コンパイルAPIについて。

  • pcap_datalink:デバイスのリンクタイプ取得
  • pcap_compile:フィルタ文字列をコンパイルしてbpf_program構造体を取得 ← これ
  • pcap_setfilter:bpf_program構造体を元にパケットフィルタ有効化
  • pcap_loop:キャプチャ処理
フクさん
フクさん

これはまた毛色の違いが大きそうなAPIだね!

太郎くん
太郎くん

うん。
サンプルプログラムのudpdumpの中では
“ip and udp”
という文字列を渡しているね。
たぶん、udpだけとフィルタしてキャプチャしてるんだと思う。

pcap_compileに渡すフィルタ文字列の仕様

フクさん
フクさん

ところで、このフィルタ文字列はどういった仕様になるの?

太郎くん
太郎くん

どうやら、tcpdumpの仕様に準拠するらしいんだよねー。
tcpdumpはUnix系で良く使われるコマンドラインのパケットキャプチャらしい。

tcpdumpとは、コマンドライン上で利用する一般的な計算機ネットワーク調査ツールである。 tcpdumpにより、利用者はコマンドを実行した計算機がつながっているネットワーク上を流れるTCP/IPなどのパケットを横取って、表示させることが出来る。 このプログラムは開発当時にローレンス・バークリー研究所ネットワーク研究グループに所属していたバン・ジェイコブソン、Craig Leres、Steven McCanneによって書かれた。

Wikipediaより
フクさん
フクさん

なるほど。

フクさん
フクさん

で、肝心の文字列の仕様は?

太郎くん
太郎くん

tcpdumpのmanを読めとあったんだけど・・・。

man tcpdump

https://linuxjm.osdn.jp/html/tcpdump/man1/tcpdump.1.html
太郎くん
太郎くん

まぁこれ読んでもイマイチわからないんだよねー。

tcpdumpのフィルタ書式

フクさん
フクさん

じゃー、ここは私が解説しよう。

太郎くん
太郎くん

おー!久々だね。
最近はずっと「ほー!」「なとほど」とかしか言ってなかったのに!

フクさん
フクさん

太郎くんの頑張りを見守ってたんだよー!

フクさん
フクさん

とりあえず、全部覚えるってのは一旦諦めて、
以下のパターンだけ覚える。

  • 特定のMACアドレスだけフィルタ
  • 特定のIPアドレスだけをフィルタ
  • 特定のIPアドレス且つ特定のポートをフィルタ
太郎くん
太郎くん

この3つに絞った理由は?

フクさん
フクさん

lwIP上で動作確認する際に使いそうなフィルタだね。
まぁ今回はWiresharkで見ると思うから使わないと思うけど、
目的を絞って説明しないと終わりが決められない

太郎くん
太郎くん

まぁいろんな書き方があるみたいだもんねー。

特定のMACアドレスだけフィルタ
ether host aa:bb:cc:11:22:33

特定のIPアドレスだけをフィルタ
ip host 192.168.40.100

特定のIPアドレス且つ特定のポートをフィルタ
ip host 192.168.40.100 and port 80

太郎くん
太郎くん

とりあえず、今回はここまでかな。

まとめ

フクさん
フクさん

まとめだよ。

  • npcapのフィルタ文字列コンパイルAPIについて説明。
  • フィルタ文字列仕様はtcpdumpのフィルタ書式と一緒。
  • tcpdumpのフィルタ書式はかなり数が多いため、良く使用しそうなものに限定。
    • MACアドレスフィルタ。
    • IPアドレスフィルタ。
    • IPアドレとポートをフィルタ。
太郎くん
太郎くん

(久々のフクさんのまとめ・・・。)

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました