网站大量收购独家精品文档,联系QQ:2885784924

如何检测Sniffer.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何检测Sniffer

如何检测Sniffer 发布日期: 2000-1-7 内容: -------------------------------------------------------------------------------- 作者:skyfly 技术细节 L0pht 公司已经说明了,如下: Win9x/NT   正常情况下,就是说不在混乱模式,网卡检测是不是广播地址 要比较看收到的目的以太网址是否等于ff.ff.ff.ff.ff.ff 是则认为是广播地址。   在混乱模式时,网卡检测是不是广播地址只看收到包的目的以太 网址的第一个八位组值,是0xff则认为是广播地址。 利用这点细微差别就可以检测出Sniffer. Linux   以前就提出过,一些版本内核有这种问题:   当混杂模式时,每个包都被传到了操作系统内核以处理。 在处理某些包,只看IP地址而不看以太网头中的源物理地址。所以:   使用一个不存在的目的MAC,正确的目的IP,受影响 的内核将会由于是混杂模式而处理它,并将之交给相应系统 堆栈处理。从而实现检测Sniffer   总之,只要发一个以太网头中目的地址是ff.00.00.00.00.00 的ARP包(l0pht公司是ff.ff.ff.ff.ff.00)就可以检测出Linux和 Windows网卡处于混乱状态的计算机.   以下是一个Linux下用于检测Linux下Sniffer的程序,很多地方都贴 过了,我只改了一句话,这样也可以检测出Windows机器。:) ----------------- Cut here ---------------------- /* ----------------------------------------- Network Promiscuous Ethernet Detector. Linux 2.0.x / 2.1.x, libc5 GlibC ----------------------------------------- (c) 1998 savage@apostols.org ----------------------------------------- Scan your subnet, and detect promiscuous Windows linuxes. It really works, not a joke. ----------------------------------------- */ /* * $Id: neped.c,v 1.4 1998/07/20 22:31:52 savage Exp $ */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ETH_P_ARP 0x0806 #define MAX_PACK_LEN 2000 #define ETHER_HEADER_LEN 14 #define ARPREQUEST 1 #define ARPREPLY 2 #define perr(s) fprintf(stderr,s) struct arp_struct { u_char dst_mac[6]; u_char src_mac[6]; u_short pkt_type; u_short hw_type; u_short pro_type; u_char hw_len; u_char pro_len; u_short arp_op; u_char sender_eth[6]; u_char sender_ip[4]; u_char target_eth[6]; u_char target_ip[4]; }; union { u_char full_packet[MAX_PACK_LEN]; struct arp_struct arp_pkt; } a; #define full_packet a.full_packet #define arp_pkt a.arp_pkt char * inetaddr ( u_int32_t ip ) { struct in_addr in; in.s_addr = ip; return inet_ntoa(in); } char * hwaddr (u_char * s) { static char buf[30]; sprintf (buf, %02X:%02X:%02X:%02X:%02X:%02X, s[0], s[1], s[2], s[3

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档