SIPダイアログの調査過程で、pcapファイルからシーケンスチャートを作れないか調べたのでメモ。
自分の環境は、MacOSX(Marverick)とMacPortsだが、Unix系ならほぼ同様と思います。
##ツール
#####pcap2msc
以下のtshark,mscgenを使ってpcapからPNGを生成するスクリプト
https://code.google.com/p/pcap2msc/
これ自体はpythonスクリプトになので、冒頭の
#!/usr/bin/python
を自分のpythonパスに合わせる。
#####tshark
https://www.wireshark.org/
CUI版wireshark
Wiresharkをインストールするとついてくる
#####mscgen
http://www.mcternan.me.uk/mscgen/
一定の形式で記述されたメッセージシーケンスをPNGなどでチャート化してくれる。
自分はMac portを使っているので、
port install mscgen
でインストールできた。
##シーケンスチャートの作成
ターミナルから以下のようなコマンドを打つと、PNGファイルを生成してくれる。
$ pcap2msc ./avses-tosip.cap sip | mscgen -T png -o avses-tosip.png
因みにmscgenなしでも
$ pcap2msc ./avses-tosip.cap sip
こんな感じで返してくれるので、図が要らない場合でも重宝する。
msc {
u0[label="148.147.33.67"],u1[label="148.147.33.5"],u2[label="148.147.33.65"];
u0=>u1 [ label = "SIP Request: SUBSCRIBE sip:3521@mtcsv.avaya.com" ] ;
u0<=u1 [ label = "SIP Status: 202 Accepted" ] ;
u0<=u1 [ label = "SIP Request: NOTIFY sip:3521@148.147.33.67;transport=tcp" ] ;
u0<=u1 [ label = "SIP Request: NOTIFY sip:3521@148.147.33.67;transport=tcp" ] ;
u0=>u1 [ label = "SIP Status: 200 OK" ] ;
u0=>u1 [ label = "SIP Status: 200 OK" ] ;
u0=>u1 [ label = "SIP Request: SUBSCRIBE sip:3521@mtcsv.avaya.com" ] ;
u0<=u1 [ label = "SIP Status: 202 Accepted" ] ;
u0<=u1 [ label = "SIP Request: NOTIFY sip:3521@148.147.33.67;transport=tcp" ] ;
u0<=u1 [ label = "SIP Request: NOTIFY sip:3521@148.147.33.67;transport=tcp" ] ;
u0=>u1 [ label = "SIP Status: 200 OK" ] ;
u0=>u1 [ label = "SIP Status: 200 OK" ] ;
}