# 可以用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

if(data[63:64] == b'\x06') :

lst.protocol = 'TCP'

elif(data[63:64] == b'\x01') :

lst.protocol = 'ICMP'

elif(data[63:64] == b'\x02') :

lst.protocol = 'IGMP'

elif(data[63:64] == b'\x11') :

lst.protocol = 'UDP'

# 获取源IP,66,67,68,69字节为源IP

Sip1 = int.from_bytes(data[66:67], byteorder='big', signed=False)

Sip2 = int.from_bytes(data[67:68], byteorder='big', signed=False)

Sip3 = int.from_bytes(data[68:69], byteorder='big', signed=False)

Sip4 = int.from_bytes(data[69:70], byteorder='big', signed=False)

lst.SrcIP = '%s.%s.%s.%s' % (Sip1,Sip2,Sip3,Sip4)

# 获取目的IP,70,71,72,73字节为目的IP

Dip1 = int.from_bytes(data[70:71], byteorder='big', signed=False)

Dip2 = int.from_bytes(data[71:72], byteorder='big', signed=False)

Dip3 = int.from_bytes(data[72:73], byteorder='big', signed=False)

Dip4 = int.from_bytes(data[73:74], byteorder='big', signed=False)

lst.DesIP = '%s.%s.%s.%s' % (Dip1,Dip2,Dip3,Dip4)

return lst

######################################

##########

########## 通过文本框输入获取指定端口号

##########

######################################

def get_port():

lst = inf() # 定义结构体,用于保存获取的数据

port = PortValue.get() # 通过文本框输入获取指定端口号

path = get_pacp(port) # 抓取指定端口的数据包,保存在path路径下

lst = parse(path) # 解析数据包,返回lst结构体

print("Protocol: ", lst.protocol)

print("Source IP:",lst.SrcIP)

print("Destination IP:",lst.DesIP)

################ 在UI显示信息 ##################

################ 1.显示协议类型 ##################

Protocol = Label(root, text="Protocol", bg="white",bd=5, font=("Arial",12), width=15, height=2)

Protocol.place(x=100, y=70)

Pvalue = Label(root, text=lst.protocol, bg="white",bd=5, font=("Arial",12), width=15, height=2)

Pvalue.place(x=250, y=70)

################ 2.显示源IP ##################

SrcIP = Label(root, text="Source IP", bg="white",bd=5, font=("Arial",12), width=15, height=2)

SrcIP.place(x=100, y=120)

Svalue = Label(root, text=lst.SrcIP, bg="white",bd=5, font=("Arial",12), width=15, height=2)

Svalue.place(x=250, y=120)

################ 3.显示目的IP ##################

DesIP = Label(root, text="Destination IP", bg="white",bd=5, font=("Arial",12), width=15, height=2, relief=FLAT)

DesIP.place(x=100, y=170)

Dvalue = Label(root, text=lst.DesIP, bg="white",bd=5, font=("Arial",12), width=15, height=2, relief=FLAT)

Dvalue.place(x=250, y=170)

######################################

##########

########## 主函数,编写界面

##########

######################################

from tkinter import *

from tkinter.tix import Tk, Control, ComboBox #升级的组合控件包

from tkinter.messagebox import showinfo, showwarning, showerror #各种类型的提示框

################ 界面的初始化 ################

root = Tk() # 初始化Tk()

root.title("Information From Package") # 设置窗口标题

root.geometry("500x250") # 设置窗口大小 注意:是x 不是*

root.resizable(width=True, height=True) # 设置窗口是否可以变化长/宽,False不可变,True可变,默认为True

root.tk.eval('package require Tix') #引入升级包,这样才能使用升级的组合控件

############# 端口输入文本框 #############

Port = Label(root, text="PORT", bd=5, font=("Arial",12), width=5, height=1)

Port.place(x=100, y=25, relheight=0.1)

PortValue = Entry(root)

PortValue.place(x=160, y=25, relwidth=0.2, relheight=0.1)

############# 输入完成后,点击Finis按钮结束输入 #############

btn1 = Button(root, text='Finish', command=get_port ) # 进入get_port函数,进行抓包解包显示

btn1.place(x=270, y=25, relwidth=0.2, relheight=0.1)

root.mainloop()

计算机监听的端口,侦听计算机的指定端口并分析其数据包,监听,本,解析相关推荐

  1. ssh指定端口用小写 -p , scp指定端口用大写 -P

    ssh指定端口用小写 -p , scp指定端口用大写 -P ssh和scp命令都是基于ssh协议,都是open-ssh的工具,但指定端口,ssh用小写p, 而scp用大写P scp的小写-p类似cp的 ...

  2. 端口开放,ubuntu开放指定端口 包括TCP UDP

    netstat -nupl (UDP类型的端口) netstat -ntpl (TCP类型的端口) a 表示所有 n 表示不查询dns t 表示tcp协议 u 表示udp协议 p 表示查询占用的程序 ...

  3. tomcat 端口_【Java】指定端口运行 war 包

    最近在调研使用 Jenkins 持续集成软件,拿到了一个 war 文件,运行 war 文件有两种方式: 把 war 文件放到 tomcat 的 webapps 文件夹中,运行 tomcat ,由 to ...

  4. windows下如何查看端口列表以及如何开放指定端口

    如何查看开放的端口列表 查看电脑开放的端口号,自己电脑中打开了哪些端口呢?打开命令提示符,开始->附件->命令提示符,或者直接快捷键win+R,运行窗口,输入CMD回车: 查看电脑开放的端 ...

  5. SAP 租户HANA端口查询以及创建数据库指定端口

    SAP MDC HANA 租户端口查询SQL SELECT DATABASE_NAME,SERVICE_NAME,PORT,SQL_PORT,(PORT + 2) HTTP_PORT FROM SYS ...

  6. linux php启动端口,linux中如何开放指定端口

    方法一:命令行方式 1.开放端口命令:/sbin/iptables -I INPUT -p tcp --dport 8080 -j` ACCEPT 2.保存:/etc/rc.d/init.d/ipta ...

  7. 解决Python Socket UDP端口侦听线程内更新UI界面卡顿、奔溃的问题

    网络读卡器介绍:WIFI无线网络RFID云读卡器远程网络开关物流网NB-IoT4G刷卡阅读器-淘宝网 (taobao.com) Python使用PyQt5做UI界面,开启线程侦听UDP端口,端口接收到 ...

  8. python应用系列教程——python使用scapy监听网络数据包、按TCP/IP协议进行解析

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 docker/kubernetes入门视频教程 全栈工程师开发手册 (作者:栾鹏) pyth ...

  9. 计算机四级笔试1,9月全国计算机等级考试四级网络工程师笔试试卷(1)

    1.姓名:________________ 班级:________________ 学号:________________-密-封 -线- 9月全国计算机等级考试四级网络工程师笔试试卷(1)考试时间: ...

最新文章

  1. Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录(转)
  2. 技巧/诀窍:在ASP.NET中重写URL
  3. “死”在拥挤赛道上的快递员工
  4. 新浪微博-企业微博运营手册
  5. Springboot分层图解
  6. 好玩Python--分析你的微信好友签名
  7. 分布式事务解决方案之2PC(两阶段提交)介绍
  8. 【TPshop踩雷篇 — 数据库连接配置失败】
  9. 关于widthStep造成的问题
  10. Cisco VPP fib.h中文对照
  11. Icon图标格式(用于生成*.ico图标)
  12. 视网膜眼底图像的一种检测方法,学习笔记(一)
  13. molten php 上传,molten:PHP 应用透明链路追踪工具
  14. 迅雷 android下载地址 http,Android HTTP边下边播
  15. Android Software
  16. 一位资深开发的个人经历 【转自百度贴吧 java吧 原标题 4年java 3年产品 现在又开始做android了】...
  17. 北宋三衙的地位、待遇及其政治作用
  18. 中兴软件笔试 c语言,中兴通讯软件工程师面试经验
  19. 2022年黑龙江最新初级消防员模拟试题题库及答案
  20. 失业日记 10月1日

热门文章

  1. 【Linux】(用户不在sudoers文件中……) 添加用户到sudoers
  2. win7桌面的计算机在哪里设置密码,win7如何添加屏幕保护密码|win7设置屏幕保护密码的方法...
  3. VLC播放器在Ubuntu-18.04上的安装
  4. 华为虚拟机服务器关闭,虚拟机服务器重启命令行
  5. 函数式编程-Stream流/lambda表达式/Optional/函数式接口/方法引用/高级用法
  6. 视觉树和逻辑树的概念
  7. Spirng Cloud 中gateway 网关限流和熔断
  8. 5,C# 物联网温度采集系统开发,web手机端口进行控制远程硬件实现与温湿度实时显示(五)
  9. 数据结构的逻辑结构和物理结构的基本概念
  10. MFC属性页CPropertySheet的使用