通過python開發一個小嗅探工具

來源:互聯網
上載者:User

標籤:平台   class   建立   set   通訊端   code   ==   host   目標   

  嗅探工具的主要目標是基於UDP發現目標網路中的存活主機,選擇UDP的原因是UDP訪問過程開銷小。

  由於很多的作業系統在處理UDP連接埠的閉合時都會存在一個共性,我們也正是利用這個共性來開展確定此IP上是否有存活主機。

  當我們發送一個資料包給主機上的一個以關閉的UDP介面時,如果此介面返回一個ICMP的話,就表示目標主機存活,如果無返回,說明目標主機不存在 。

  

#coding = utf-8import osimport socket#目標主機,視情況而定host = "192.168.1.1   ""#建立原始通訊端,然後綁定在公開介面上if os.name == "nt":        socket_protocol = socket.IPPROTO_IPelse:        socket_protocol = socket.IPPROTO_ICMPsniffer = socket.socket(socket.AF_INET,socket.SOCK_RAW,socket_protocol)sniffer.bind((host,0))#設定在捕獲的I資料包中包含IP頭sniffer.setsockopt(socket.IPPROTO_IP,socket.IP_HDRINCL,1)#在windos平台上,需要設定IOCTL以啟用會混雜模式if os.name == "nt":        sniffer.ioctl(socket.SIO_RCVALL,socket.RCVALL_ON)        #讀取單個資料包print(sniffer.recvfrom(65565))#然後關閉混雜模式if os.name == "nt":        sniffer.ioctl(socket.SIO_RCVALL,socket.RCVALL_OFF)

IOCTL(輸入輸出控制):是使用者隔離模式下與核心模式下組件進行通訊的方式的組件進行通訊的方式.

混雜模式:是指一台機器能夠接收所有經過它的資料流,而不論其目的地址是否是他。可供管理員進行網路診斷,在這裡我們利用其特性.

通過python開發一個小嗅探工具

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.