本日も夏休み期間中であることを利用して、少しディープな表題のネタをご紹介したいと思います。前回の記事【L7アプリケーション分析を簡単に実現する方法】nDPIとは?使い方をマスターしよう!!で、nDPIの開発・実行環境を準備しました。独自プロトコル分析、nDPIL7アプリケーション分析拡張にご興味のある方は是非ご一読ください。今回の記事は、前回の記事の続きで独自プロトコルを解析できるようにnDPIを拡張しようといったお話です。前回の記事と本記事を読むことで、nDPIでサポートしていないアプリケーションの分析が可能となり、例えば組織で特殊なアプリケーションを使っているよ!なんて方もそのアプリに特化した分析をntopで実現できます。nDPI拡張手順nDPIの拡張手順は、以下の手順となります。both)に、それぞれ定義する。独自パケットの作成方法で作成したpcapファイルを解析したいと思います。※data部分を!mierukaに変更しております。独自プロトコルをWiresharkで表示しているところこちらのpcapファイルを解析し、アプリケーション名MierukaでnDPIが解析してくれるように開発していきます。MierukaプロトコルのIDを追記します。2021年8月12日現在、263までのアプリケーションが登録されていたので264としました。*/修正はこの一行だけです。新しいDissectorの登録nDPI拡張のメーン部分です。src/lib/protocols/syslog.cを参考にsrc/lib/protocols/mieruka.cを作りました。図1の独自プロトコル判別に利用する情報は、データーの最初の文字が”!”マークであること。7文字目が”a”といったかなり手抜きな実装です。本記事は開発の流れをご理解いただくことを目的に作成しておりますので、本格的なDissectorにはなっていないことご了承ください。}37行目のndpi_search_mieruka()が、Dissectorプログラムの要部分です。パケットlengthが8バイトで、かつpayloadデータの一文字目が’!’であることを確認しています。1文字目、7文字目のチェックが通ればMierukaプロトコルと判断します。検索関数を定義します。58行目の内容をそのまま記載します。それぞれ追記していきます。※例えば、ndpi_set_protocol_detection_bitmask2を省略すると、ndpi_init_protocol_defaultsのみが実行される結果となりますので忘れずに追加してください。*/);後は手順通り、コンパイルするだけです。本プログラムの実行結果は、以下の通りです。100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]Debug部分で、作成したDissectorの条件分岐に入っていることが分かります。protocols:でしっかりとMierukaプロトコル判別ができていることを確認できました。