监听本机指定端口并解析其数据包

一、功能

监听本机指定端口,获取端口上的数据包并解析,解析出相关信息(源IP、目的IP、协议类型等)并显示在UI界面上。

二、实现过程

设计过程主要有一下几个部分:

1、指定端口,抓包并保存

在get_pacp(port)函数中实现,参数port是指定要监听的端口号;

2、解析保存的pcap数据包

在parse(path)函数中实现,参数path是指数据包保存的路径;

3、UI界面--通过文本框输入端口号来指定要监听的端口号,以及在UI上显示数据包的信息

在get_port()函数中实现;

4、UI界面--界面的初始化,以及一些文本框的编写

在主函数中实现。

三、完整代码

实现本代码参考的一些链接:

# 可以用80端口进行试验,只要打开浏览器浏览网页即可捕获数据包

import os

######################################
##########
##########  定义结构体数组,保存源IP、目的IP、协议类型
##########
######################################
class inf:
    def __init__(self):
        self.SrcIP = ''     # 源IP
        self.DesIP = ''     # 目的IP
        self.Protocol = ''  # 协议类型


######################################
##########
##########  指定端口,获取数据包并保存
##########
######################################
from scapy.all import *

def get_pacp(port):
    
    filter = 'dst port ' + str(port)      # 目的端口
    ifs = 'Realtek 8822CE Wireless LAN 802.11ac PCI-E NIC' # 本机网卡
    #ip = "116.4.8.127"  # 该选项可以用来抓取指定地址的数据包,也可写域名,如:www.baidu.com
    dpkt = sniff(iface=ifs,filter=filter,count=1)   # 使用sniff函数抓包
    path = 'desktop/demo.pacp'  # 文件的保存路径
    wrpcap(path,dpkt)        # 将抓取到的包保存为pcap文件
    
    return path 

######################################
##########
##########  解析pcap文件,获取信息
##########
######################################
import struct
import binascii

def parse(path) :
    print("Get in parse()")

    fpcap = open(path,'rb')  # 读取.pcap文件
    data = fpcap.read() # 读取到data缓冲中
    
    # print(type(data)) # 输出数据类型 data为bytes类型的数据
    
    lst = inf()
    
    # 获取Protocol,1=ICMP,2=IGMP,6=TCP,17=UDP,  63字节为Protocol
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值