- 论坛徽章:
- 0
|
最近一直在骚扰npcomet@LCUC,因为我一直不死心——从libpcap抓取的数据包的数据链路层里,真的就提取不出明文?
心里想:
1. 国际用的最多的IM的协议是——MSN;
2. MSN协议是基于text-mode传输的,除非加了密匙;
接着Google,确实发现了msniff - simple sniffer for MSN Messenger messages在http://shh.thathost.com/pub-unix/#msniff
msniff依赖的库:
1. 前面提及的libpcap
2. shhmsg - library for displaying messages.
3. shhopt - library for parsing command line options
其中,shhmsg的源代码可以仔细阅读,可以知道如何解析libpcap抓取的数据包的数据链路层里面的有用数据;
shhopt其实可以用Glibc的getopt、getopt_long替换
马上./msniff ath0 192.168.0.100 1863 > msniff.log
我的网络interface是ath0,IP地址是192.168.0.100,pidgin中默认的MSN端口是1863
把过滤机制中的端口换成其他的IM默认的端口,发现
默认内容未加密的:MSN、YAHOO
默认内容加密的:GTALK、QQ
还有些协议没有帐号,就没有测试了
MSniffer从数据报里得到有用数据的方法集中在:
- #include <netinet/ether.h>
- #include <netinet/ip.h>
- #include <netinet/tcp.h>
- static void
- packetHandler(u_char *user, const struct pcap_pkthdr *hdr, const u_char *data)
复制代码
这个被pcap_loop(ph, -1, packetHandler, NULL)回调用的函数里
注意看const u_char *payload的值获得的过程。
有空要仔细学习libpcap、tcpdump的文档、源代码。
感谢LCUC的npcomet,他接受到libpcap test的信息,没有抓狂 ^_^ |
|