IT猫扑网:您身边最放心的安全下载站! 最新更新|软件分类|软件专题|手机版|论坛转贴|软件发布

您当前所在位置:首页系统集成网络管理 → 详解Sniffer工作原理

详解Sniffer工作原理

时间:2015/6/28来源:IT猫扑网作者:网管联盟我要评论(0)

  大家经常讨论SNIFFER,觉得还是很多人没有真正理解SNIFFER,所以把我的一点理解写出来大家共享。

  先讲讲HUB的工作原理吧。由于以太网等很多网络(常见共享HUB连接的内部网)是基于总线方式,物理上是广播的,就是一个机器发给另一个机器的数据,共享HUB先收到然后把它接收到的数据再发给别的(来的那个口不发了)每一个口,所以在共享HUB下面同一网段的所有机器的网卡都能接收到数据。交换式HUB的内部单片程序能记住每个口的MAC地址,以后就该哪个机器接收就发往哪个口,而不是像共享HUB那样发给所有的口,所以交换HUB下只有该接收数据的机器的网卡能接收到数据,当然广播包还是发往所有口。显然共享HUB的工作模式使得两个机器传输数据的时候别的口也占用了,所以共享HUB决定了同一网段同一时间只能有两个机器进行数据通信,而交换HUB两个机器传输数据的时候别的口没有占用,所以别的口之间也可以同时传输。这就是共享HUB与交换HUB不同的两个地方,共享HUB是同一时间只能一个机器发数据并且所有机器都可以接收,只要不是广播数据交换HUB同一时间可以有对机器进行数据传输并且数据是私有的。

  再讲讲网卡的工作原理。网卡收到传输来的数据,网卡内的单片程序先接收数据头的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。CPU得到中断信号产生中断,操作系统就根据网卡的驱动程序设置的网卡中断程序地址调用驱动程序接收数据,驱动程序接收数据后放入信号堆栈让操作系统处理。

  有了这HUB、网卡的工作原理就可以讲SNIFFER了。首先,要知道要SNIFFER的东西必须是要物理信号你能收到的东西。显然只要通知网卡接收其收到的所有包(一般叫作乱模式),在共享HUB下就能接收到这个网段的所有包,但是交换HUB下就只能是自己的包加上广播包。知道了原理那就好办。要想在交换HUB下接收别人的包,那就要让其发往你的机器所在口。交换HUB记住一个口的MAC是通过接收到来至于那个口的数据后记住其源MAC,就像一个机器的IP与MAC对应的ARP列表,交换HUB维护一个物理口(就是HUB上的网线插口,这而的所有HUB口都是指这)与MAC的表,所以可以欺骗交换HUB的。那样你发一个包设置源MAC是你想接收的机器的MAC,那么交换HUB就把你机器的网线插的物理口与那个MAC对应起来了,以后发给那个MAC的包就发往你的网线插口了,也就是你的网卡可以SNIFFER到了。注意这物理口与MAC的表与机器的ARP表一样是动态刷新的,那机器发包后交换HUB就又记住他的口了,所以实际上是两个在争,这只能应用在只要收听少量包就可以的场合,或者干脆你弄死要冒牌的机器。还有内部网嘛基于IP的通信你可以用ARP欺骗别人机器让其发给你的机器就可以了,如果要想不影响原来两方的通信,可以欺骗两方,让其都发给你的机器你的机器再转发,就是做中间人,这用ARP加上编程很容易实现。还有现在很多设备支持远程管理,有很多交换HUB可以设置一个口监听别的口,不过这就要管理权限了。

  拨号用户嘛就是拨号服务器接收到包根据IP分析是哪个拨号用户的包,可能也是通过查找分配拨号用户的IP与拨号电话线的一个列表,然后就发往那个拨号用户的电话线,所以其相当于交换HUB,但这儿是用的IP,交换HUB是用的MAC,所以拨号用户能接收到自己的包。相应的要想接收别的包就得欺骗拨号服务器,当然这不是交换HUB那么好欺骗,因为显然拨号服务器的IP与电话线的列表不是交换HUB那么维护的,可以看能不能破了拨号服务器改其驱动让其所有包都发给你,显然不太可能了。:(

  下面是3COM网卡驱动程序,结合此程序讲讲网卡的原理,你可以对照程序理解。可能有的网卡有些不一样,但大致原理一样,所以理解很多东西不能完全照搬。

  一般网卡有个网卡地址MAC,这地址网卡厂家得申请,每个厂家得到一段地址,不同厂家不同就像IP地址的分配一样,然后用这段地址分配给其生产的每个网卡一个地址。一般说来网卡厂家保证每个网卡地址不同,实际上网卡地址一般不是放在网卡内部程序里,因为网卡内程序一般都是固化的,相同网卡所有网卡的程序全部一样,还有很多网卡可以配置支持很多方式,所以一般网卡都带一个EEPROM存储器,网卡地址MAC就放这里面。其实网卡接收包有几种方式,接收指定MAC地址的包、广播包、组播包、所有的包等,可以对其编程。通常网卡驱动程序设置的是接收指定MAC地址的包和广播包,如果设置了接收所有的包,就是我们常说的用于SNIFFER的乱模式。网卡内单片接收指定MAC地址的包的MAC也不是内部程序直接通过EEPROM的数据得到,而是驱动程序通过读E2PROM得到MAC,再把这MAC告诉网卡的MAC寄存器,网卡的内部程序通过MAC寄存器得到的,并且以此为标准。所以只要改驱动程序把你想要的MAC告诉MAC寄存器那么就得到你想要的MAC了。

  一、关于MAC:

  1。 for (i = 0; i < 3; i++)

  phys_addr[i] = htons(read_eeprom(ioaddr, i));

  读EEPROM中的MAC,有差不多的两个地方,可能是ISA、PCI总线网卡的差别,每次读出来的是字(两个字节)。

      static ushort read_eeprom(short ioaddr, int index)
  {
  outw(EEPROM_READ + index, ioaddr + 10);
  /* Pause for at least 162 us. for the read to take place. */
  udelay (500);
  return inw(ioaddr + 12);
  }

  这是读EEPROM的数据的函数调用,看这很可能有可以写EEPROM数据的可能,就是E2PROM里面的MAC数据可以改写,原来很多网卡有设置程序可以指定其MAC地址的,所以。。。

  2。 memcpy(dev->dev_addr, phys_addr, sizeof(phys_addr));

  EEPROM中读出来的MAC地址拷贝到DEV_ADDR中。

  3。 for (i = 0; i < 6; i++)

  outb(dev->dev_addr[i], ioaddr + i);

  MAC写入MAC寄存器中,网卡是以写入MAC寄存器的内容为标准,实际上与网卡EEPROM数据中的MAC无关。还有发包的时候与源MAC无关,就和现在的IP包发包的时候的源IP可以随便填一样,只是接收包的时候网卡通过MAC寄存器内容和接收模式判断该不该接收。当然别人接收包后回复一般都是把收到的包的源MAC当目的MAC,所以你发包的源MAC是假的话可能也收不到回复包。

  还有要改MAC只要这儿的DEV_ADDR为你想要的MAC就可以,这儿可以从一个文件读入MAC地址或者WINDOWS那样从注册表里面读取MAC内容,这就要看驱动程序额外提供的接口了。

  二、关于接收模式:

  enum RxFilter {

  RxStation = 1, RxMulticast = 2, RxBroadcast = 4, RxProm = 8 };

  是定义的接收模式。

  SetRxFilter = 16<<11,

  是定义的设置接收模式的命令

  outw(SetRxFilter | RxStation | RxBroadcast, ioaddr + EL3_CMD);

  是设置接收模式,加上RxMulticast还是RxProm应该就是乱模式了。

      3COM的网卡驱动程序:

      /* 3c509.c: A 3c509 EtherLink3 ethernet driver for linux. */
  /*
  Written 1993-1997 by Donald Becker.
  Copyright 1994-1997 by Donald Becker.
  Copyright 1993 United States Government as represented by the
  Director, National Security Agency. This software may be used and
  distributed according to the terms of the GNU Public License,
  incorporated herein by reference.
  This driver is for the 3Com EtherLinkIII series.
  The author may be reached as becker@cesdis.gsfc.nasa.gov or
  C/O Center of excellence in Space Data and Information Sciences
  Code 930.5, Goddard Space Flight Center, Greenbelt MD 20771
  Known limitations:
  because of the way 3c509 ISA detection works it's difficult to predict

关键词标签:原理,工作,详解,the&n

相关阅读

文章评论
发表评论

热门文章 路由器地址大全-各品牌路由设置地址路由器地址大全-各品牌路由设置地址各品牌的ADSL与路由器出厂默认IP、帐号、密各品牌的ADSL与路由器出厂默认IP、帐号、密Nslookup命令详解-域名DNS诊断Nslookup命令详解-域名DNS诊断站长装备:十大网站管理员服务器工具软件站长装备:十大网站管理员服务器工具软件

相关下载

人气排行 各品牌的ADSL与路由器出厂默认IP、帐号、密码路由器地址大全-各品牌路由设置地址腾达路由器怎么设置?腾达路由器设置教程ADSL双线负载均衡设置详细图文教程路由表说明(详解route print)网管员实际工作的一天用此方法让2M带宽下载速度达到250K/S左右网管必会!了解交换机控制端口流量