pythonでradius packetを扱うライブラリについてのメモ。随時更新予定。
radius補遺。実際には方言がいくつかあり、radiusフレームの構造は使いつつ、定数の定義がちょっとずつ変わる。freeradiusのshareの中にテキストファイルの辞書になっているのが参考になる。ライブラリによっては、この辞書がそのまま使える。ただし辞書の形式も拡張を繰り返していて、辞書の読み込みに失敗することもあるので調整が必要になるかもしれない。
pyrad
- freeradiusでも使われている属性辞書が使えて、方言に対応できるのは良い。
- パースしたオブジェクトから元パケットに戻せないのは困る。具体的には属性順序を忘れる。authenticatorの検証などは、radius専用のライブラリにこそ期待したい機能なのに、これができず悔しくて仕方ない!
- 辞書の名前でフィールドを検索できるのは便利。ただしシリアライズした安定した形式にならないので、その後の扱いに大変困る。
- issueが積みあがっている
pypacker
- python2 非対応。
- radiusまわりは死んでいるとコードに書かれている。
- 802.11まわりの実装が誤り過ぎていて、どこから手を付ければいいのかよく分からない。
scapy
- python3 未対応。scapy-python3 forkが使える。
- cygwin 未対応。pcapやコマンドラインなどの環境を標準で要求する。使わないときはオーバースペック。
- 属性の配列の扱いがクラスごとにバラバラ。
- issueが積みあがっている
- radius属性をパースしない
dpkt
- python3 未対応。
- issueが積みあがっている
pyshark
- libwiresharkではなく、結局tsharkをコマンド起動する。