ネットワークセンターのお気に召すまま。

このエントリはWCDI Advent Calendar 2018 - Adventarの23日目の記事です。
※この記事に掲載されているものは全てフィクションであり、現実にある一切の団体、法人などとは関係ありません。
また、本稿は一切の推古などの確認作業をせず書いているのでかなり見苦しい文章になっていると思うので、それを承知してほしい。

はじめに

 弊学の授業の一つ「ネットワークⅡ」では実際に行うネットワーク上のパケットを見るということを目的としてWiresharkを使用する。
 だが、学校支給あるいは私個人が常用しているx230では、ディスプレイの小ささからパケットを目grepして特定のパケットを取得するなど気が遠くなる。
 そこで本稿では、それらに対応する手段を考えていく。

前提条件

 まず、学内ネットワーク(細かく言えば授業を行う実習室的な場所)では、外のインターネットに雪像することは可能だが、速度が絶望的に遅い。
 これは、多分細い回線をひもじいながらも共用して使わざるおえなくしている弊学ネットワークセンターが無知あるいは学生に対する嫌がらせのために掛けている制約である。
 また、使用してるのはノートPCで当然外部ディスプレイのようなものはない。

手段

既存のツールを使用する

 例えば、tcpdumpやtsharkを使用しても良いのだが、如何せんこの手のツールはパソコンに入ってたり入ってなかったりする。
 また、それらのツールが持参しているPCに入っていなかった場合に、どうやって入れようかと考えなければいけない。
 まず考えられる手段は、aptやyumなどのパッケージ管理用のコマンドを用いて色々やるということが考えられる。
 だが、そこは我らが弊学の生徒が邪魔をする。
 学内ネットワークの帯域が細いため、授業中にdアニメやAmazonPrimeVideo、その他配信サイトあるいは違法配信サイトを利用して見ている生徒が多いと、数十〜数百MB程度のものでもDLに時間がかかったりする。
 よって、この案は却下とする。(そもそもパソコンに入っているならば問題は無いのですが…)  (それに、この後書くのが本文だからどんなに良くても却下却下、絶対却下〜〜〜〜!!!)

プログラムを書く

 tcpdumpやtsharkのようにある程度洗練され、コミュニティの力を存分に使って作成したものでないし、信頼性も薄い、機能もない。
 だが、今回はPythonという弊学生徒(素直に講義を受講している者)ならば確実にパソコンに入っているものである。
 なので、それでプログラムを書いてしまうというのが重要である。
 だから、とりあえず書いてみた。

github.com

 このプログラムは実際に書かれたのは夏休み前だが、弊学のwiresharkを使うような授業は最近(大体冬休み前)であり、実際に使用してみたところL3までのパケットを見るぶんには使用に耐えられるものだと思う。
 欠点はフィルター機能が無いのだが、私はgrepなどを使用して適当に捌いていた。(正規表現主義万歳!!!)

まとめ

 今回のプログラムはごく限られたプロトコルでしか反応しない。
 また、そこまでしっかりと人間にわかりやすいようには書かれていないということもあり、うまく動作しない場合もある。
 今後このプログラムを更新するかは気分だが、大抵の有名プロトコルの構造を知るにはこれらの方法は有用であることは確かだし、そこら辺の勉強するためにちょっと書いていこうかな。
 本稿は、家で餅つきをしている終盤に書いていたので非常に眠い状況で書かれている。
 なので、多分論点ずれてるし、この文章書いてる途中で事務所で倒れて寝てしまったりしているので趣旨がズレまくっててわからなくなってる。
 だから、最後に一言でまとめておく。
「自作パケットキャプチャプログラムはいいぞ!!!」