python编写网络嗅探器

网络嗅探器

网络嗅探器又称网络监听器,简称Sniffer子系统,放置于网络节点上,对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用信息的方法。

嗅探器原理

原理上来说,在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据,网卡内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。对于网卡来说一般有四种接收模式:
a)广播方式:该模式下的网卡能够接收网络中的广播信息。
b)组播方式:设置在该模式下的网卡能够接收组播数据。
c)直接方式:在这种模式下,只有目的网卡才能接收该数据。
d)混杂模式:在这种模式下的网卡能够接收一切通过它的数据,而不管该数据是否是传给它的。
首先,在以太网中是基于广播方式传送数据的,也就是说,所有的物理信号都要经过我的机器。其次,网卡可以置于一种模式叫混杂模式(promiscuous),在这种模式下工作的网卡能够接收到一切通过它的数据,而不管实际上数据的目的地址是不是他。
这就是SNIFF工作的基本原理:让网卡接收一切他所能接收的数据。

使用第三方scapy库 使用sniff()函数

sniff(count=0, store=1, offline=None, prn=None, lfilter=None, L2socket=None, timeout=None, opened_socket=None, stop_filter=None, iface=None, *arg, **karg)

返回PacketList类型的数据包对象;

count: 要捕获数据包的总数. 0 表示无限制;
store: 是否要保存捕获的数据包;
prn: 回调函数,会作用于每个数据包
ex: prn = lambda x: x.summary()
lfilter: 过滤函数,不满足条件的数据包会被丢弃;
ex: lfilter = lambda x: x.haslayer(Padding)
offline: 从pcap文件中读取数据包;
timeout: 捕获指定时间内的数据包;L2socket: 通过给定的 L2socket 进行数据捕获;
opened_socket: 通过给定的 socket 进行数据捕获;
stop_filter: 过滤函数,满足条件后将结束数据捕获;
ex: stop_filter = lambda x: x.haslayer(TCP)
iface: 指定端口或端口数组

模块分析

本软件使用的主要模块及其功能
1.抓包界面模块
2.抓包模块
3.数据包分析模块
4.界面控制模块

实现过程

分析算法:第一:得到数据包,先将其转存到内存里,以备以后再用。
第二:分析当前的数据包。
1.抓取数据包并保存。
2.处理抓到的数据包。
3.将抓到的数据包保存为pcap格式的文件。
4.绘制GUI界面。
第三:结束分析。

主函数分析

def capture_packet():# 设置过滤条件filters = fitler_entry.get()print("抓包条件:"+filters)# 设置停止抓包的条件stop_filterstop_sending.clear()global packet_list# 清空列表packet_list.clear()# 抓取数据包并将抓到的包存在列表中sniff(prn=(lambda x: process_packet(x)), filter=filters, stop_filter=(lambda x: stop_sending.is_set()))

分析:抓取数据包并对抓到的数据包进行相应处理。

ef process_packet(packet):if pause_flag == False:global packet_list# 将抓到的包存在列表中packet_list.append(packet)#packet.show()# 抓包的时间packet_time= timestamp2time(packet.time)src = packet[Ether].srcdst = packet[Ether].dsttype = packet[Ether].typetypes = {0x0800:'IPv4',0x0806:'ARP',0x86dd:'IPv6',0x88cc:'LLDP',0x891D:'TTE'}if type in types:proto = types[type]else:proto = 'LOOP'  # 协议# IPif proto == 'IPv4':# 建立协议查询字典protos = {1: 'ICMP', 2: 'IGMP', 4: 'IP', 6: 'TCP', 8: 'EGP', 9: 'IGP', 17: 'UDP', 41: 'IPv6', 50: 'ESP', 89:'OSPF'}src = packet[IP].srcdst = packet[IP].dstproto=packet[IP].protoif proto in protos:proto=protos[proto]# tcpif TCP in packet:protos_tcp = {80: 'Http', 443: 'Https', 23: 'Telnet', 21: 'Ftp', 20: 'ftp_data', 22: 'SSH', 25: 'SMTP'}sport = packet[TCP].sportdport = packet[TCP].dportif sport in protos_tcp:proto = protos_tcp[sport]elif dport in protos_tcp:proto = protos_tcp[dport]elif UDP in packet:if packet[UDP].sport == 53 or packet[UDP].dport == 53:proto = 'DNS'length = len(packet)  # 长度info = packet.summary()  # 信息global packet_id  # 数据包的编号packet_list_tree.insert("", 'end', packet_id, text=packet_id,values=(packet_id, packet_time, src, dst, proto, length, info))packet_list_tree.update_idletasks()  # 更新列表,不需要修改packet_id = packet_id + 1

分析:处理函数,依据protocols进行分层提取信息,将参数传入树状数据(packet_list_tree)中,在Frame中显示。

结果展示

python//网络嗅探器相关推荐

  1. 基于Python实现的网络嗅探器【100010784】

    基于C语言的网络嗅探器 一.引言 1.1 编写目的 通过编写网络嗅探器,可以提高编程能力,加深对网络协议的理解,培养团队协作能力,完成课程项目 二.功能概述 2.1 节 功能模块命名原则 使用英文进行 ...

  2. 网络嗅探器的设计与实现 python实现 计算机网络课程设计

    实验内容 设计一个可以监视网络的状态.数据流动情况以及网络上传输 的信息的网络嗅探器 代码 import socket import threading import time import logg ...

  3. 网络嗅探器的设计(1)

    本文参考 刘冰的<网络攻击与防御技术实验报告> 框架设计 说起网络嗅探器的设计,需要先学习系统的框架设计.说起系统的设计,有以下: C++语言的QT.MFC.gtk Java语言的SSH  ...

  4. 爬虫书籍-Python网络爬虫权威指南OCR库 NLTK 数据清洗 BeautifulSoup Lambda表达式 Scrapy 马尔可夫模型

    Python网络爬虫权威指南 编辑推荐 适读人群 :需要抓取Web 数据的相关软件开发人员和研究人员 作为一种采集和理解网络上海量信息的方式,网页抓取技术变得越来越重要.而编写简单的自动化程序(网络爬 ...

  5. python网络爬虫_Python网络爬虫——爬取视频网站源视频!

    原标题:Python网络爬虫--爬取视频网站源视频! 学习前提 1.了解python基础语法 2.了解re.selenium.BeautifulSoup.os.requests等python第三方库 ...

  6. python网络编程--socket简单实现

    python网络编程                                                                                           ...

  7. python网络开发框架_greenev首页、文档和下载 - Python网络服务框架 - OSCHINA - 中文开源技术交流社区...

    greenev是一个基于greenlet协程,事件驱动,非阻塞socket模型的Python网络服务框架,它使得可以编写同步的代码,却得到异步执行的优点.reactor模式采用基于epoll, kqu ...

  8. 《精通Python网络爬虫:核心技术、框架与项目实战》——1.3 网络爬虫的组成...

    本节书摘来自华章出版社<精通Python网络爬虫:核心技术.框架与项目实战>一书中的第1章,第1.3节,作者 韦 玮,更多章节内容可以访问云栖社区"华章计算机"公众号查 ...

  9. python商业爬虫教程_廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程...

    廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程 1.JPG (53.51 KB, 下载次数: 1) 2019-8-9 08:15 上传 2.JPG ...

最新文章

  1. C语言实现十大经典排序算法
  2. Python中os和shutil模块实用方法集锦
  3. linux内核单独安装,Linux内核编译与安装
  4. hexo的yelee主题修改文章正文颜色、正文字體大小
  5. 天龙八部手游linux源码,天龙八部手游登录源码
  6. 多路径配置udev_多路径multipath配置,udev绑定
  7. Linux Linux开发 Linux高级编程 Linux文档
  8. Servlet概述及其原理
  9. BigGAN_用于高保真自然图像合成的大规模 GAN 训练
  10. 操作系统实验——进程通信
  11. 国有数据要素市场的政策红利,你get 到了吗?
  12. matplotlib论文图片配色
  13. linux udp 套接字编程获取源地址和目的地址(一)
  14. 2021-07-10蓝桥杯单片机学习知识点总结
  15. 今天给大家推荐一个Cleaner One for mac(系统清理优化工具)
  16. [财务][数据化分析][财务背景知识][财务三张基础表][资产负债表][利润表][现金流量表]看懂财务三张表,以后看表再也不求人了...
  17. mysql 高级查询总结_MySQL高级查询总结
  18. 为Android虚拟机创建SDCard
  19. 这个城市最安静的声音 - Suzy
  20. JZOJ B组【GDKOI2014】壕壕的寒假作业

热门文章

  1. 机器学习中的小数学知识
  2. fmri优缺点_题集|03 EEG、fMRI、PET等的优缺点;经典条件作用的形成及其规律;中介变量和调节变量及其区别;动机与行为效率的关系...
  3. 物联网(IoT)及其未来应用方向
  4. android获取整体存储空间大小,Android 获取剩余存储空间
  5. 商城应用类app该怎么制作
  6. oracle 判断标签,判断text标签
  7. 计算机64位只有2g,电脑插了4G内存,但只有2G左右可以用,为什么 WIN7 64位
  8. 初学者笔记:Scanf间隔符号的使用
  9. kingbase之ksql命令工具
  10. linux去重复程序,Linux下大文件的排序和去重复