sipsak (SIP swiss army knife)

SIPのアーミーナイフ

sipsak (SIP swiss army knife)というLinuxターミナルで動くCLIツールが有ります。
アーミーナイフと唄っている通り沢山のオプションが有って、SIPに関するテストを行えます。
CentOS6まではEPELレポジトリに有ったので簡単にyumでインストール出来たのですが、7ではなぜか消えてしまいました。
それでソースからコンパイルしてインストールする必要が有ります。

Linuxターミナルで動作するSIPデバッグツールはこちら↓

インストール

CentOS7へのインストール例です。

sudo yum install gcc autoconf automake openssl

gcc, autoconf, automake, opensslをインストールします。

guthubからソースをダウンロードします。
https://github.com/nils-ohlmeier/sipsak

ZIPを解答してサーバーにアップロードします。
ディレクトリはどこでも構いません。

cd sipsak-main
ls
AUTHORS  ChangeLog    NEWS    TODO          indent.pro  sipsak.1  tests
COPYING  Makefile.am  README  configure.ac  m4          src
autoreconf --install
./configure
make
make install

インストールします。

which sipsak
/usr/local/bin/sipsak

動かしてみる

OPTIONSパケット送信

sipsakの一番基本の使い方はOPTIONSの送信です。※送信先はダミーのsip.comに変えてあります。

sipsak -vv -s sip:1000@sip.com
using A record: sip.com
.
message received:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 127.0.0.1:49687;received=49.96.xxx.yyy;branch=z9hG4bK.741fc070;rport=63205;alias
From: sip:sipsak@127.0.0.1:49687;tag=3af63f35
To: sip:1000@sip.com;tag=946f.dfd06b0e080bc040e716d6a598403516
Call-ID: 989216565@127.0.0.1
CSeq: 1 OPTIONS
Accept: */*
Accept-Language: en
Server: voip service
Content-Length: 0
.
** reply received after 45.268 ms **
SIP/2.0 200 OK
final received

SIP/2.0 200 OKと出ているのでSIPサーバーから応答が有った事が分かります。
ただしSIPサーバーによっては、無関係のIPからのOPTIONSには応答しない場合も有ります。

6つのモード

man sipsak

●default mode
A SIP message is sent to destination in sip-uri and reply status is displayed.
The request is either taken from filename or generated as a new OPTIONS message.

SIPメッセージがsip-uriで宛先に送信され、応答ステータスが表示されます。
リクエストはファイル名から取得されるか、新しいOPTIONSメッセージとして生成されます。

●traceroute mode (-T)
This mode is useful for learning request’s path. It operates similarly to IP-
layer utility traceroute(8).

このモードは、リクエストのパスを学習するのに役立ちます。
IP層ユーティリティtracerouteと同様に動作します。

●message mode (-M)
Sends a short message (similar to SMS from the mobile phones) to a given target.
With the option -B the content of the MESSAGE can be set. Useful might be the
options -c and -O in this mode.

特定のターゲットにショートメッセージ(携帯電話からのSMSと同様)を送信します。

●usrloc mode (-U)
Stress mode for SIP registrar. sipsak keeps registering to a SIP server at high
pace. Additionally the registrar can be stressed with the -I or the -M option.
If -I and -M are omitted sipsak can be used to register any given contact (with
the -C option) for an account at a registrar and to query the current bindings
for an account at a registrar.

SIPレジストラのストレスモード。 sipsakはSIPサーバーへの登録を継続します。

●randtrash mode (-R)
Parser torture mode. sipsak keeps sending randomly corrupted messages to torture
a SIP server’s parser.

sipsakはランダムに破損したメッセージを送り続けます。

●flood mode (-F)
Stress mode for SIP servers. sipsak keeps sending requests to a SIP server at
high pace.

SIPサーバーのストレスモード。 sipsakはSIPサーバーにリクエストを送信し続けます。

サンプル

sipsak -vv -s sip:nobody@foo.bar
.
displays received replies.

OPTIONS送信の返信を表示します。

sipsak -T -s sip:nobody@foo.bar
.
traces SIP path to nobody.

tracerouteを表示します。

sipsak -U -C sip:me@home -x 3600 -a password -s sip:myself@company
.
inserts forwarding from work to home for one hour.

転送設定

sipsak -f bye.sip -g ‘!FTAG!345.af23!TTAG!1208.12!’ -s sip:myproxy
.
reads the file bye.sip, replaces $FTAG$ with 345.af23 and $TTAG$ with 1208.12 and
finally send this message to myproxy

ファイルを読み込んでリクエストを置換

オプション

sipsak -h
sipsak 0.9.9-pre by Nils Ohlmeier
Copyright (C) 2002-2004 FhG Fokus
Copyright (C) 2004-2022 Nils Ohlmeier
report bugs to github@ohlmeier.org
.
shoot  : sipsak [-f FILE] [-L] -s SIPURI
trace  : sipsak -T -s SIPURI
usrloc : sipsak -U [-I|M] [-b NUMBER] [-e NUMBER] [-x NUMBER] [-z NUMBER] -s SIPURI
usrloc : sipsak -I|M [-b NUMBER] [-e NUMBER] -s SIPURI
usrloc : sipsak -U [-C SIPURI] [-x NUMBER] -s SIPURI
message: sipsak -M [-B STRING] [-O STRING] [-c SIPURI] -s SIPURI
flood  : sipsak -F [-e NUMBER] -s SIPURI
random : sipsak -R [-t NUMBER] -s SIPURI
.
additional parameter in every mode:
[-a PASSWORD] [-d] [-i] [-H HOSTNAME] [-l PORT] [-m NUMBER] [-n] [-N]
[-r PORT] [-v] [-V] [-w]
.
-h                displays this help message
-V                prints version string only
-f FILE           the file which contains the SIP message to send use -- for standard input
-L                de-activate CR (\r) insertion in files
-s SIPURI         the destination server URI in form sip:[user@]servername[:port]
-T                activates the traceroute mode
-U                activates the usrloc mode
-I                simulates a successful calls with itself
-M                sends messages to itself
-C SIPURI         use the given URI as Contact in REGISTER
-b NUMBER         the starting number appendix to the user name (default: 0)
-e NUMBER         the ending number of the appendix to the user name
-o NUMBER         sleep number ms before sending next request
-x NUMBER         the expires header field value (default: 15)
-z NUMBER         activates randomly removing of user bindings
-F                activates the flood mode
-R                activates the random mode (dangerous)
-t NUMBER         the maximum number of trashed character in random mode
(default: request length)
-l PORT           the local port to use (default: any)
-r PORT           the remote port to use (default: 5060)
-p HOSTNAME       request target (outbound proxy)
-H HOSTNAME       overwrites the local hostname in all headers
-m NUMBER         the value for the max-forwards header field
-n                use FQDN instead of IP in the Via-Line
-i                deactivate the insertion of a Via-Line
-a PASSWORD       password for authentication
(if omitted password=””)
-u STRING         Authentication username
-d                ignore redirects
-v                each v produces more verbosity (max. 3)
-w                extract IP from the warning in reply
-g STRING         replacement for a special mark in the message
-G                activates replacement of variables
-N                returns exit codes Nagios compliant
-q STRING         search for a RegExp in replies and return error on failure
-W NUMBER         return Nagios warning if retrans > number
-B STRING         send a message with string as body
-O STRING         Content-Disposition value
-P NUMBER         Number of processes to start
-A NUMBER         number of test runs and print just timings
-S                use same port for receiving and sending
-c SIPURI         use the given URI as From in MESSAGE
-D NUMBER         timeout multiplier for INVITE transactions on non-reliable transports (default: 64)
-Z NUMBER         timeout T1 in ms (default: 500)
-E STRING         specify transport to be used
-j STRING         adds additional headers to the request
-J STRING         HA1 hash for authentication instead of password
-k STRING         specify local ip address to be used
-K NUMBER         log exit message to syslog with given log level
TwitterFacebookLinkedInHatenaPocketCopy Link