IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁系統(tǒng)集成網(wǎng)絡(luò)管理 → 詳解Sniffer工作原理

詳解Sniffer工作原理

時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)

  大家經(jīng)常討論SNIFFER,覺得還是很多人沒有真正理解SNIFFER,所以把我的一點(diǎn)理解寫出來大家共享。

  先講講HUB的工作原理吧。由于以太網(wǎng)等很多網(wǎng)絡(luò)(常見共享HUB連接的內(nèi)部網(wǎng))是基于總線方式,物理上是廣播的,就是一個(gè)機(jī)器發(fā)給另一個(gè)機(jī)器的數(shù)據(jù),共享HUB先收到然后把它接收到的數(shù)據(jù)再發(fā)給別的(來的那個(gè)口不發(fā)了)每一個(gè)口,所以在共享HUB下面同一網(wǎng)段的所有機(jī)器的網(wǎng)卡都能接收到數(shù)據(jù)。交換式HUB的內(nèi)部單片程序能記住每個(gè)口的MAC地址,以后就該哪個(gè)機(jī)器接收就發(fā)往哪個(gè)口,而不是像共享HUB那樣發(fā)給所有的口,所以交換HUB下只有該接收數(shù)據(jù)的機(jī)器的網(wǎng)卡能接收到數(shù)據(jù),當(dāng)然廣播包還是發(fā)往所有口。顯然共享HUB的工作模式使得兩個(gè)機(jī)器傳輸數(shù)據(jù)的時(shí)候別的口也占用了,所以共享HUB決定了同一網(wǎng)段同一時(shí)間只能有兩個(gè)機(jī)器進(jìn)行數(shù)據(jù)通信,而交換HUB兩個(gè)機(jī)器傳輸數(shù)據(jù)的時(shí)候別的口沒有占用,所以別的口之間也可以同時(shí)傳輸。這就是共享HUB與交換HUB不同的兩個(gè)地方,共享HUB是同一時(shí)間只能一個(gè)機(jī)器發(fā)數(shù)據(jù)并且所有機(jī)器都可以接收,只要不是廣播數(shù)據(jù)交換HUB同一時(shí)間可以有對(duì)機(jī)器進(jìn)行數(shù)據(jù)傳輸并且數(shù)據(jù)是私有的。

  再講講網(wǎng)卡的工作原理。網(wǎng)卡收到傳輸來的數(shù)據(jù),網(wǎng)卡內(nèi)的單片程序先接收數(shù)據(jù)頭的目的MAC地址,根據(jù)計(jì)算機(jī)上的網(wǎng)卡驅(qū)動(dòng)程序設(shè)置的接收模式判斷該不該接收,認(rèn)為該接收就接收后產(chǎn)生中斷信號(hào)通知CPU,認(rèn)為不該接收就丟掉不管,所以不該接收的數(shù)據(jù)網(wǎng)卡就截?cái)嗔耍?jì)算機(jī)根本就不知道。CPU得到中斷信號(hào)產(chǎn)生中斷,操作系統(tǒng)就根據(jù)網(wǎng)卡的驅(qū)動(dòng)程序設(shè)置的網(wǎng)卡中斷程序地址調(diào)用驅(qū)動(dòng)程序接收數(shù)據(jù),驅(qū)動(dòng)程序接收數(shù)據(jù)后放入信號(hào)堆棧讓操作系統(tǒng)處理。

  有了這HUB、網(wǎng)卡的工作原理就可以講SNIFFER了。首先,要知道要SNIFFER的東西必須是要物理信號(hào)你能收到的東西。顯然只要通知網(wǎng)卡接收其收到的所有包(一般叫作亂模式),在共享HUB下就能接收到這個(gè)網(wǎng)段的所有包,但是交換HUB下就只能是自己的包加上廣播包。知道了原理那就好辦。要想在交換HUB下接收別人的包,那就要讓其發(fā)往你的機(jī)器所在口。交換HUB記住一個(gè)口的MAC是通過接收到來至于那個(gè)口的數(shù)據(jù)后記住其源MAC,就像一個(gè)機(jī)器的IP與MAC對(duì)應(yīng)的ARP列表,交換HUB維護(hù)一個(gè)物理口(就是HUB上的網(wǎng)線插口,這而的所有HUB口都是指這)與MAC的表,所以可以欺騙交換HUB的。那樣你發(fā)一個(gè)包設(shè)置源MAC是你想接收的機(jī)器的MAC,那么交換HUB就把你機(jī)器的網(wǎng)線插的物理口與那個(gè)MAC對(duì)應(yīng)起來了,以后發(fā)給那個(gè)MAC的包就發(fā)往你的網(wǎng)線插口了,也就是你的網(wǎng)卡可以SNIFFER到了。注意這物理口與MAC的表與機(jī)器的ARP表一樣是動(dòng)態(tài)刷新的,那機(jī)器發(fā)包后交換HUB就又記住他的口了,所以實(shí)際上是兩個(gè)在爭(zhēng),這只能應(yīng)用在只要收聽少量包就可以的場(chǎng)合,或者干脆你弄死要冒牌的機(jī)器。還有內(nèi)部網(wǎng)嘛基于IP的通信你可以用ARP欺騙別人機(jī)器讓其發(fā)給你的機(jī)器就可以了,如果要想不影響原來兩方的通信,可以欺騙兩方,讓其都發(fā)給你的機(jī)器你的機(jī)器再轉(zhuǎn)發(fā),就是做中間人,這用ARP加上編程很容易實(shí)現(xiàn)。還有現(xiàn)在很多設(shè)備支持遠(yuǎn)程管理,有很多交換HUB可以設(shè)置一個(gè)口監(jiān)聽別的口,不過這就要管理權(quán)限了。

  撥號(hào)用戶嘛就是撥號(hào)服務(wù)器接收到包根據(jù)IP分析是哪個(gè)撥號(hào)用戶的包,可能也是通過查找分配撥號(hào)用戶的IP與撥號(hào)電話線的一個(gè)列表,然后就發(fā)往那個(gè)撥號(hào)用戶的電話線,所以其相當(dāng)于交換HUB,但這兒是用的IP,交換HUB是用的MAC,所以撥號(hào)用戶能接收到自己的包。相應(yīng)的要想接收別的包就得欺騙撥號(hào)服務(wù)器,當(dāng)然這不是交換HUB那么好欺騙,因?yàn)轱@然撥號(hào)服務(wù)器的IP與電話線的列表不是交換HUB那么維護(hù)的,可以看能不能破了撥號(hào)服務(wù)器改其驅(qū)動(dòng)讓其所有包都發(fā)給你,顯然不太可能了。:(

  下面是3COM網(wǎng)卡驅(qū)動(dòng)程序,結(jié)合此程序講講網(wǎng)卡的原理,你可以對(duì)照程序理解。可能有的網(wǎng)卡有些不一樣,但大致原理一樣,所以理解很多東西不能完全照搬。

  一般網(wǎng)卡有個(gè)網(wǎng)卡地址MAC,這地址網(wǎng)卡廠家得申請(qǐng),每個(gè)廠家得到一段地址,不同廠家不同就像IP地址的分配一樣,然后用這段地址分配給其生產(chǎn)的每個(gè)網(wǎng)卡一個(gè)地址。一般說來網(wǎng)卡廠家保證每個(gè)網(wǎng)卡地址不同,實(shí)際上網(wǎng)卡地址一般不是放在網(wǎng)卡內(nèi)部程序里,因?yàn)榫W(wǎng)卡內(nèi)程序一般都是固化的,相同網(wǎng)卡所有網(wǎng)卡的程序全部一樣,還有很多網(wǎng)卡可以配置支持很多方式,所以一般網(wǎng)卡都帶一個(gè)EEPROM存儲(chǔ)器,網(wǎng)卡地址MAC就放這里面。其實(shí)網(wǎng)卡接收包有幾種方式,接收指定MAC地址的包、廣播包、組播包、所有的包等,可以對(duì)其編程。通常網(wǎng)卡驅(qū)動(dòng)程序設(shè)置的是接收指定MAC地址的包和廣播包,如果設(shè)置了接收所有的包,就是我們常說的用于SNIFFER的亂模式。網(wǎng)卡內(nèi)單片接收指定MAC地址的包的MAC也不是內(nèi)部程序直接通過EEPROM的數(shù)據(jù)得到,而是驅(qū)動(dòng)程序通過讀E2PROM得到MAC,再把這MAC告訴網(wǎng)卡的MAC寄存器,網(wǎng)卡的內(nèi)部程序通過MAC寄存器得到的,并且以此為標(biāo)準(zhǔn)。所以只要改驅(qū)動(dòng)程序把你想要的MAC告訴MAC寄存器那么就得到你想要的MAC了。

  一、關(guān)于MAC:

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

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

  讀EEPROM中的MAC,有差不多的兩個(gè)地方,可能是ISA、PCI總線網(wǎng)卡的差別,每次讀出來的是字(兩個(gè)字節(jié))。

????? 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的數(shù)據(jù)的函數(shù)調(diào)用,看這很可能有可以寫EEPROM數(shù)據(jù)的可能,就是E2PROM里面的MAC數(shù)據(jù)可以改寫,原來很多網(wǎng)卡有設(shè)置程序可以指定其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寄存器中,網(wǎng)卡是以寫入MAC寄存器的內(nèi)容為標(biāo)準(zhǔn),實(shí)際上與網(wǎng)卡EEPROM數(shù)據(jù)中的MAC無關(guān)。還有發(fā)包的時(shí)候與源MAC無關(guān),就和現(xiàn)在的IP包發(fā)包的時(shí)候的源IP可以隨便填一樣,只是接收包的時(shí)候網(wǎng)卡通過MAC寄存器內(nèi)容和接收模式判斷該不該接收。當(dāng)然別人接收包后回復(fù)一般都是把收到的包的源MAC當(dāng)目的MAC,所以你發(fā)包的源MAC是假的話可能也收不到回復(fù)包。

  還有要改MAC只要這兒的DEV_ADDR為你想要的MAC就可以,這兒可以從一個(gè)文件讀入MAC地址或者WINDOWS那樣從注冊(cè)表里面讀取MAC內(nèi)容,這就要看驅(qū)動(dòng)程序額外提供的接口了。

  二、關(guān)于接收模式:

  enum RxFilter {

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

  是定義的接收模式。

  SetRxFilter = 16<<11,

  是定義的設(shè)置接收模式的命令

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

  是設(shè)置接收模式,加上RxMulticast還是RxProm應(yīng)該就是亂模式了。

????? 3COM的網(wǎng)卡驅(qū)動(dòng)程序:

<acronym id="owv9l"><meter id="owv9l"></meter></acronym>
    ????? /*?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?[email protected]?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

    關(guān)鍵詞標(biāo)簽:原理,工作,詳解,the&n

    相關(guān)閱讀

    文章評(píng)論
    發(fā)表評(píng)論

    熱門文章 路由器地址大全-各品牌路由設(shè)置地址 路由器地址大全-各品牌路由設(shè)置地址 各品牌的ADSL與路由器出廠默認(rèn)IP、帳號(hào)、密碼 各品牌的ADSL與路由器出廠默認(rèn)IP、帳號(hào)、密碼 Nslookup命令詳解-域名DNS診斷 Nslookup命令詳解-域名DNS診斷 站長(zhǎng)裝備:十大網(wǎng)站管理員服務(wù)器工具軟件 站長(zhǎng)裝備:十大網(wǎng)站管理員服務(wù)器工具軟件

    相關(guān)下載

      人氣排行 各品牌的ADSL與路由器出廠默認(rèn)IP、帳號(hào)、密碼 路由器地址大全-各品牌路由設(shè)置地址 騰達(dá)路由器怎么設(shè)置?騰達(dá)路由器設(shè)置教程 ADSL雙線負(fù)載均衡設(shè)置詳細(xì)圖文教程 路由表說明(詳解route print) Nslookup命令詳解-域名DNS診斷 網(wǎng)管員實(shí)際工作的一天 網(wǎng)管必會(huì)!了解交換機(jī)控制端口流量