以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 安全理论 』  (http://bbs.xml.org.cn/list.asp?boardid=65)
----  基于WinPCap的网络嗅探器的实现  (http://bbs.xml.org.cn/dispbbs.asp?boardid=65&rootid=&id=44502)


--  作者:风影123
--  发布时间:3/27/2007 4:22:00 PM

--  基于WinPCap的网络嗅探器的实现
哪位大侠能帮帮小弟啊,用Winpcap写个嗅探器,功能如下:
1使用WinPCap的接口,实现一个网络嗅探器
2完成截获数据包的功能、并具备分析数据包的功能。
提供个源码啊!谢谢啦
--  作者:binaryluo
--  发布时间:3/29/2007 7:15:00 PM

--  
WinPcap完全能完成那个功能的。

下面是关于WinPcap的文档,你可以参考下:
http://www.ieee.org.cn/dispbbs.asp?boardID=65&ID=33472
http://www.ieee.org.cn/dispbbs.asp?boardID=65&ID=33471
http://www.ieee.org.cn/dispbbs.asp?boardID=65&ID=33470
http://www.ieee.org.cn/dispbbs.asp?boardID=65&ID=33469
http://www.ieee.org.cn/dispbbs.asp?boardID=65&ID=33468
http://www.ieee.org.cn/dispbbs.asp?boardID=65&ID=33467
http://www.ieee.org.cn/dispbbs.asp?boardID=65&ID=33466


--  作者:风影123
--  发布时间:3/29/2007 8:40:00 PM

--  
你给的那些我早就下下来看了,可还是不怎么懂啊,初学者,很菜的\
用VC环境编,我还正在学VC,感觉VC也很难入门啊,有可能的话给我写个源码啊,估计我能读懂就已经很不错的了.
--  作者:风影123
--  发布时间:3/29/2007 8:43:00 PM

--  
其实我就是初学者,根本就不知道怎么下手,头脑里就是一片空白

--  作者:风影123
--  发布时间:4/3/2007 2:52:00 PM

--  
帮帮忙啊,斑竹
--  作者:binaryluo
--  发布时间:4/5/2007 12:05:00 PM

--  
以下是引用风影123在2007-4-3 14:52:00的发言:
帮帮忙啊,斑竹

不好意思啊,最近因为忙很少上论坛,现在才看到你的留言。

那几篇文章中有代码片段啊,只要编译环境配好了那些代码拷过去就可以编译运行了。

那些文章是一些学习笔记,所以可能有点零乱和不全,所以你最好阅读WinPcap的开发文档,那些笔记仅供参考。

WinPcap的开发文档写的很好,简洁明了,而且真正是由简单到复杂,WinPcap的功能他上面都讲的很清楚的,做一般的开发参考他的开发文档是绝对够了。


--  作者:binaryluo
--  发布时间:4/5/2007 12:09:00 PM

--  
以下是引用风影123在2007-3-27 16:22:00的发言:
哪位大侠能帮帮小弟啊,用Winpcap写个嗅探器,功能如下:
1使用WinPCap的接口,实现一个网络嗅探器
2完成截获数据包的功能、并具备分析数据包的功能。
提供个源码啊!谢谢啦

另外,你对你要做的嗅探器的功能描述也不清楚:
1.“截获数据包”——截获哪一层的数据包?
2.“分析数据包”——你对“分析”一词的含义是如何定义的?


--  作者:风影123
--  发布时间:4/8/2007 7:42:00 AM

--  
WINPCAP的开发文档从哪边可以找到啊,
--  作者:binaryluo
--  发布时间:4/8/2007 9:12:00 PM

--  
以下是引用风影123在2007-4-8 7:42:00的发言:
WINPCAP的开发文档从哪边可以找到啊,

http://www.winpcap.org/docs/docs_40/html/main.html


--  作者:风影123
--  发布时间:4/12/2007 8:18:00 AM

--  
谢谢了,等我问清楚那些再请教你
--  作者:风影123
--  发布时间:4/17/2007 11:51:00 AM

--  
截获数据包的是为了从中分析出敏感信息,比如:口令,序列号等等
--  作者:风影123
--  发布时间:4/23/2007 2:45:00 PM

--  
我用的WINPCAP开发文档里面的例子就可以完成功能了,但我感觉太简单了点,总共代码才三十几行,我想对数据包分析的更详细,比如可以分析出数据包的具体内容,比如密码 用户名等具体的内容,它原来的例子只能分析时间,长度.
  如果我要想再做个界面该怎么做呢, 它的界面是DOS窗口下的啊 ,那例子的具体代码如下:


#include "pcap.h"

/* prototype of the packet handler */
void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data);

main()
{
 pcap_if_t *alldevs;
 pcap_if_t *d;
 int inum;
 int i=0;
 pcap_t *adhandle;
 char errbuf[PCAP_ERRBUF_SIZE];
 
 /* Retrieve the device list */
 if(pcap_findalldevs(&alldevs, errbuf) == -1)
 {
  fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);
  exit(1);
 }
 
 /* Print the list */
 for(d=alldevs; d; d=d->next)
 {
  printf("%d. %s", ++i, d->name);
  if (d->description)
   printf(" (%s)\n", d->description);
  else
   printf(" (No description available)\n");
 }
 
 if(i==0)
 {
  printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
  return -1;
 }
 
 printf("Enter the interface number (1-%d):",i);
 scanf("%d", &inum);
 
 if(inum < 1 || inum > i)
 {
  printf("\nInterface number out of range.\n");
  /* Free the device list */
  pcap_freealldevs(alldevs);
  return -1;
 }
 
 /* Jump to the selected adapter */
 for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++);
 
 /* Open the device */
 /* Open the adapter */
 if ((adhandle= pcap_open_live(d->name, // name of the device
        65536,   // portion of the packet to capture.
           // 65536 grants that the whole packet will be captured on all the MACs.
        1,    // promiscuous mode (nonzero means promiscuous)
        1000,   // read timeout
        errbuf   // error buffer
        )) == NULL)
 {
  fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", d->name);
  /* Free the device list */
  pcap_freealldevs(alldevs);
  return -1;
 }
 
 printf("\nlistening on %s...\n", d->description);
 
 /* At this point, we don't need any more the device list. Free it */
 pcap_freealldevs(alldevs);
 
 /* start the capture */
 pcap_loop(adhandle, 0, packet_handler, NULL);
 
 pcap_close(adhandle);
 return 0;
}


/* Callback function invoked by libpcap for every incoming packet */
void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)
{
 struct tm *ltime;
 char timestr[16];
 time_t local_tv_sec;
 
 /* convert the timestamp to readable format */
 local_tv_sec = header->ts.tv_sec;
 ltime=localtime(&local_tv_sec);
 strftime( timestr, sizeof timestr, "%H:%M:%S", ltime);
 
 printf("%s,%.6d len:%d\n", timestr, header->ts.tv_usec, header->len);
 
}


--  作者:风影123
--  发布时间:4/24/2007 9:06:00 AM

--  
这个是我毕业设计的内容,我想尽量做得好一点,可是自己的能力就那样,而且我根据你的那个学习笔记来调程序,还是会出现不能打开"pcap.h"的问题,我是一步步按你的说明来的, 上面我发那个程序没问题,调winpcap开发文档里面的其他例子是也有不能打开pcap.h的问题
--  作者:风影123
--  发布时间:4/28/2007 8:16:00 PM

--  
现在我就想怎么在程序里面加代码使它在分析数据包的时候能分析出密码,也就是只要就网络上有密码就显示:PASSWORD:
--  作者:风影123
--  发布时间:5/9/2007 1:15:00 PM

--  
怎么没人看了啊
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
140.625ms