通过python开发一个小嗅探工具

Posted cuiyuanzhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过python开发一个小嗅探工具相关的知识,希望对你有一定的参考价值。

  嗅探工具的主要目标是基于UDP发现目标网络中的存活主机,选择UDP的原因是UDP访问过程开销小。

  由于很多的操作系统在处理UDP端口的闭合时都会存在一个共性,我们也正是利用这个共性来开展确定此IP上是否有存活主机。

  当我们发送一个数据包给主机上的一个以关闭的UDP接口时,如果此接口返回一个ICMP的话,就表示目标主机存活,如果无返回,说明目标主机不存在 。

  

#coding = utf-8
import os
import socket

#目标主机,视情况而定
host = "192.168.1.1   ""

#创建原始套接字,然后绑定在公开接口上
if os.name == "nt":
        socket_protocol = socket.IPPROTO_IP
else:
        socket_protocol = socket.IPPROTO_ICMP

sniffer = 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开发一个小嗅探工具的主要内容,如果未能解决你的问题,请参考以下文章

网络数据嗅探工具HexInject

嗅探工具wappalyzer

Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示(代码片段

微信小程序代码片段

局域网嗅探原理及工具

网络嗅探是啥?