在网上看到SIP都是直接讲明文,没有谁把代码贴出来的。
用Python2.6写了一个REGISTER消息,用wireshark抓包可以抓到,不用服务器端支持,是UDP的。
import socket; import time; s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM); s.sendto( 'REGISTER sip:192.168.2.106 SIP/2.0\r\n' +'Via: SIP/2.0/UDP 59.64.157.21:10342;branch=z9hG4bKrport=10342;received=59.64.157.21\r\n' +'Max-Forwards: 70\r\n' +'Contact: <sip:winlin@59.64.157.21:10342;rinstance=a89b345d1acc58cd>\r\n' +'To: "winlin" <sip:winlin@192.168.2.106>\r\n' +'From: "winlin" <sip:winlin@192.168.2.106>;tag=2f68fc1a\r\n' +'Call-ID: a92b1e046f213771MzFlMWE3NTg2YzNhNWIwYjZjYWI5Mzk4NjQ2ODI5YTc.\r\n' +'CSeq: 1 REGISTER\r\n' +'Expires: 3600\r\n' +'Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,NOTIFY,MESSAGE,SUBSCRIBE,INFO\r\n' +'User-Agent: X-Lite release 1003l stamp 30942\r\n' +'Content-Length: 0\r\n' +'\r\n', ("192.168.2.106", 5060)); time.sleep(3); s.close();
可以直接看到SIP的格式是什么。
抓包是只要设置port 5056就可以,默认SIP的端口是5056,显示可以过滤为SIP协议,如下图: