我想为我的项目构建“SIP嗅探器”以提醒来自VoIP通信的来电 . 我尝试从我的智能手机拨打我的笔记本并通过wireshark检查传入的数据包 . 我看到所有的SIP消息(INVITE,BYE,TRYING) . 我知道SIP的基本知识,它使用UDP端口5060 .
接下来,我使用这个代码从http://www.binarytides.com/python-packet-sniffer-code-linux/ << ---最后一个代码,最长的代码(我尝试粘贴但我不能粘贴在框中的代码)运行与Raspberry PI通过LAN电缆连接到笔记本电脑 .
这个程序可以嗅探UDP数据包,我检查了wireshark它正确的90%(IP地址和IP目的地不正确)端口和有效负载是否正确 . 我从以太网头检查头文件===> ip header ===> udp header它与SIP-INVITE没有什么不同,它们只有不同的有效载荷(通过wireshark检查) .
但我尝试将VoIP呼叫到我的笔记本电脑,它不起作用,它从不嗅探5060或SIP数据包(有一次我看到拨出的呼叫数据:“sip:xxxx@linphone.org”)
为什么我可以嗅到其他但VoIP不能 .
抱歉我的英语不好 . 感谢您的意见 .
2 回答
从快速看,我看到你的数据包是UDP . 但python代码只能嗅探TCP .
#create an INET, raw socket s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
将socket.IPPROTO_TCP更改为socket.IPPROTO_UDP