[开源]Delphi下WinPCap开发基础 一个简单的HttpSniffer

Delphi开发WinPcap程序一直是个门槛,这个代码之前在netexpert发过,但是问“如何用Delphi写网络协议分析?”、“Delphi怎么发送ARP包”这类问题的人还是大有人在。Delphi不能开发Sniffer?不能进行底层数据包收发?跨过这条门槛,一切易如反掌。

 

一直在考虑是否要把这几个代码拿出来,因为有些程序危害还比较大(比如ARP冲突攻击、SYN Flood那几个),留着也是留着还是拿出来开源得了。另外,虽然网上有个转换过的WinPcap头文件,但怎么用怎么不顺手。这里是通过Dev-C++写了一个DLL,通过调用这个DLL操作WinPcap库(代码都在里面,很简单)。

 

这是第一个程序,代码量很小,算是Sniffer的基础,源码见文章末尾。过两天把另外的几个也整理出来...

欢迎随便转载,希望能普及Delphi WinPcap开发
原文发表在:http://www.netexpert.cn/thread-20671-1-1.html

这次是Sniffer的,下一篇打算发布SYN Flood的(伪造数据包)。代码中有些地方注释不全,不过可以先到这里下载之前的版本:http://www.netexpert.cn/thread-20673-1-1.html


一个简单的Sniffer例子程序,抓取TCP 80端口的数据包,并过滤出POST和GET消息,如图:

 

打开网卡、设置过滤器,以及HTTP数据包处理部分的代码如下:

抓包和数据包处理过程

 


 程序用途,捕获HTTP的GET和POST消息,用于截获URL的访问以及表单的提交(比如只监听POST消息,可以抓到论坛登陆的帐号和密码)。例如抓到的输出如下:

一个典型的POST


第二行:POST /chklogin.do HTTP/1.1 可以看到,这里在验证登陆信息
一般用户名和密码都在Cookie中,找到Cookie这行:
Cookie: __utma=257446157.4392135229605150700.1219543473.1219543473.1219543473.1; __utmz=257446157.1219543473.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
username=abcdefg&password=123456&method=login&login_md5=e10adc3949ba59abbe56e057f20f883e&method=login_pw&gameType=&forward=&image.x=58&image.y=14
.
看到了,在 username=abcdefg&password=123456 这里清清楚楚的写着刚才提交的用户名是abcdefg,密码为123456(当然是我随便输的)。自己试试一下效果吧。

 

源码(Source)httpSniffer_src.rar
Linux版的源码(使用libpcap):httpSniffer_src4Linux.rar

可执行程序:httpSniffer_bin.rar

posted @ 2009-03-15 11:42  bits  阅读(5202)  评论(3编辑  收藏  举报