网络流量分析>>pcapng文件快速分析有用价值解析

news2024/9/9 0:14:45

引言

在网络安全和流量管理中,解析网络协议数据包是了解网络行为和检测潜在威胁的关键步骤。本文介绍了如何使用Python解析和分析TCP、UDP和ICMP协议的数据包,并统计端口的访问次数。本文的示例代码展示了如何处理不同协议的数据包,提取关键信息,并对网络流量进行深入分析。

环境设置

在开始之前,我们需要设置环境以便使用pyshark库进行数据包捕获和解析。首先,我们需要安装Wireshark并确保tshark命令行工具可用。然后,我们在代码中设置tshark的路径,并创建一个用于保存下载文件的目录。

import os

# 设置tshark路径
os.environ['TSHARK_PATH'] = 'D:\\Wireshark\\tshark.exe'
os.environ['PATH'] += os.pathsep + 'D:\\Wireshark'

# 创建下载目录
DOWNLOAD_DIR = 'xiazai'
if not os.path.exists(DOWNLOAD_DIR):
    os.makedirs(DOWNLOAD_DIR)

数据包解析

我们的核心函数是analyze_pcap,它使用pyshark库解析给定的PCAP文件,并提取TCP、UDP和ICMP协议的数据包。通过该函数,我们能够捕获流量中的源IP、目的IP、源端口、目的端口等信息,并识别DNS查询和TLS握手数据。

import pyshark
from collections import defaultdict

def analyze_pcap(pcap_file, tshark_path):
    cap = pyshark.FileCapture(pcap_file, tshark_path=tshark_path)
    flows = defaultdict(list)
    dns_queries = defaultdict(list)
    tls_handshakes = defaultdict(list)
    icmp_packets = []

    for packet in cap:
        try:
            src_ip = packet.ip.src
            dst_ip = packet.ip.dst
            transport_layer = packet.transport_layer

            if transport_layer in ['TCP', 'UDP']:
                src_port = packet[transport_layer].srcport
                dst_port = packet[transport_layer].dstport
                flow_key = (src_ip, dst_ip, src_port, dst_port)
                flows[flow_key].append(packet)

                if transport_layer == 'UDP' and hasattr(packet, 'dns'):
                    dns_query = packet.dns.qry_name
                    dns_queries[flow_key].append(dns_query)
                
                if hasattr(packet, 'tls'):
                    if hasattr(packet.tls, 'handshake_type'):
                        tls_handshake_type = packet.tls.handshake_type
                        tls_handshakes[flow_key].append(tls_handshake_type)

            elif transport_layer == 'ICMP':
                icmp_packets.append(packet)

        except AttributeError:
            continue

    return flows, dns_queries, tls_handshakes, icmp_packets

数据包解析

我们的核心函数是analyze_pcap,它使用pyshark库解析给定的PCAP文件,并提取TCP、UDP和ICMP协议的数据包。通过该函数,我们能够捕获流量中的源IP、目的IP、源端口、目的端口等信息,并识别DNS查询和TLS握手数据。

import pyshark
from collections import defaultdict

def analyze_pcap(pcap_file, tshark_path):
    cap = pyshark.FileCapture(pcap_file, tshark_path=tshark_path)
    flows = defaultdict(list)
    dns_queries = defaultdict(list)
    tls_handshakes = defaultdict(list)
    icmp_packets = []

    for packet in cap:
        try:
            src_ip = packet.ip.src
            dst_ip = packet.ip.dst
            transport_layer = packet.transport_layer

            if transport_layer in ['TCP', 'UDP']:
                src_port = packet[transport_layer].srcport
                dst_port = packet[transport_layer].dstport
                flow_key = (src_ip, dst_ip, src_port, dst_port)
                flows[flow_key].append(packet)

                if transport_layer == 'UDP' and hasattr(packet, 'dns'):
                    dns_query = packet.dns.qry_name
                    dns_queries[flow_key].append(dns_query)
                
                if hasattr(packet, 'tls'):
                    if hasattr(packet.tls, 'handshake_type'):
                        tls_handshake_type = packet.tls.handshake_type
                        tls_handshakes[flow_key].append(tls_handshake_type)

            elif transport_layer == 'ICMP':
                icmp_packets.append(packet)

        except AttributeError:
            continue

    return flows, dns_queries, tls_handshakes, icmp_packets

文件提取和分析

在捕获流量之后,我们需要提取并分析其中的文件和图像。以下代码展示了如何从HTTP流量中提取ZIP、PDF和图像文件,并检测其中的敏感信息或潜在威胁。

import zipfile
import PyPDF2
from PIL import Image
import re
from datetime import datetime

def extract_files(flows, keywords):
    # 省略代码
    pass

def check_and_extract_zip(file_name, keywords):
    # 省略代码
    pass

def check_and_extract_pdf(file_name, keywords):
    # 省略代码
    pass

def check_and_extract_image(file_name):
    # 省略代码
    pass

def detect_sql_injection(payload):
    # 省略代码
    pass

def clean_text(text):
    # 省略代码
    pass

def save_sql_injection_data(flow, post_data, pcap_file_name):
    # 省略代码
    pass

def save_password_post_data(flow, post_data, pcap_file_name):
    # 省略代码
    pass

应用程序和端口分析

为了更全面地了解网络流量,我们还需要分析端口的使用情况和应用层协议的数据。以下代码展示了如何统计各端口的访问次数,并检测潜在的SQL注入攻击和敏感信息泄露。

def detect_application(flows, dns_queries, tls_handshakes, icmp_packets, pcap_file_name):
    flow_summary = defaultdict(int)
    port_usage = defaultdict(lambda: defaultdict(int))
    src_dst_port_usage = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
    password_patterns = [r"password", r"passwd", r"pwd", r"pass"]

>>>>关注加好友 发源代码<<<<    

    print("\nHTTP流量检测:")
    for flow_key, count in flow_summary.items():
        host, method, url = flow_key
        print(f"主机: {host}, 请求方法: {method}, URL: {url} - 出现次数: {count}")

    print("\n端口使用情况:")
    for port, methods in port_usage.items():
        for method, count in methods.items():
            print(f"端口 {port} 上的 {method} 请求次数: {count}")

    print("\n源IP到目的IP的端口使用情况:")
    for src_ip, dst_ips in src_dst_port_usage.items():
        for dst_ip, ports in dst_ips.items():
            for port, count in ports.items():
                print(f"{src_ip} -> {dst_ip} 端口 {port} 使用次数: {count}")

    print("\nDNS查询:")
    for flow_key, queries in dns_queries.items():
        src_ip, dst_ip, src_port, dst_port = flow_key
        for query in queries:
            print(f"{src_ip} -> {dst_ip} : DNS查询 {query}")

    print("\nTLS握手:")
    for flow_key, handshakes in tls_handshakes.items():
        src_ip, dst_ip, src_port, dst_port = flow_key
        for handshake in handshakes:
            print(f"{src_ip} -> {dst_ip} : TLS握手类型 {handshake}")

    print("\nICMP包:")
    for packet in icmp_packets:
        src_ip = packet.ip.src
        dst_ip = packet.ip.dst
        icmp_type = packet.icmp.type
        icmp_code = packet.icmp.code
        print(f"ICMP包:{src_ip} -> {dst_ip}, 类型: {icmp_type}, 代码: {icmp_code}")

主程序

在主程序中,我们首先调用analyze_pcap函数解析PCAP文件,然后调用其他函数进行文件提取、应用程序检测和端口分析。

if __name__ == '__main__':
    pcap_file = '.\\test3.pcapng'
    tshark_path = 'D:\\Wireshark\\tshark.exe'
    keywords = ['password', 'secret', 'confidential']

    try:
        flows, dns_queries, tls_handshakes, icmp_packets = analyze_pcap(pcap_file, tshark_path)
        extract_files(flows, keywords)
        detect_application(flows, dns_queries, tls_handshakes, icmp_packets, os.path.basename(pcap_file))
    except FileNotFoundError:
        print(f"文件未找到: {pcap_file}")
    except Exception as e:
        print(f"发生错误: {e}")

运行结果

作者ps:对于流量分析我暂时只能写到这个部分如果你有更好的想法可以和我私聊,这个程序也是我之间打打ctf玩玩也能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1958182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网安零基础入门神书,全面介绍Web渗透核心攻击与防御方式!

Web安全是指Web服务程序的漏洞&#xff0c;通常涵盖Web漏洞、操作系统洞、数据库漏洞、中间件漏洞等。 “渗透测试”作为主动防御的一种关键手段&#xff0c;对评估网络系统安全防护及措施至关重要&#xff0c;因为只有发现问题才能及时终止并预防潜在的安全风险。 根据网络安…

前端面试宝典【vue篇】【3】

欢迎来到《前端面试宝典》,这里是你通往互联网大厂的专属通道,专为渴望在前端领域大放异彩的你量身定制。通过本专栏的学习,无论是一线大厂还是初创企业的面试,都能自信满满地展现你的实力。 核心特色: 独家实战案例:每一期专栏都将深入剖析真实的前端面试案例,从基础知…

phpenv安装redis扩展

1、下载dll文件 https://pecl.php.net/package/redis 我的是php8.1, 安装最新版的 DLL文件 &#xff12;、将dll文件放到php安装目录的ext目录下 3、在php.ini中增加配置后重启服务 [Redis] extension php_redis.dll

自研Vue3开源Tree组件:节点拖拽bug修复

当dropType为after&#xff0c;且dropNode为父节点时&#xff0c;bug出现了&#xff1a; bug原因&#xff1a;插入扁平化列表的位置insertIndex计算的不对&#xff1a; 正确的逻辑&#xff0c;同inner要算上子孙节点所占的位置&#xff1a; bug修复&#xff01;

vue里给img的src绑定数据失效

起因 在v-for遍历数据时想要通过给img的src单向绑定 图片路径时出现问题 解决过程 上网查说是webpack构建时识别不到&#xff0c;直接不单绑数据&#xff0c;写死试试看 解决方案 直接require导入图像文件模块

【C语言】VS的实用调试技巧

0. 前言 VS(Visual Studio)是集成开发环境&#xff0c;其内置了多种调试工具和技巧帮助开发人员在开发过程中解决问题。包含断点、监视窗口、自动窗口、调用堆栈等&#xff0c;通过这些技巧&#xff0c;开发人员可以有效地调试和解决程序中的问题。我们在VS编译器上写代码&…

yolov10在地平线旭日X3派上的部署和测试(Python版本和C++版本)

0、搭建开发环境 当前的测试根据一下的步骤并修改源码是可以实现yolov8的板端运行&#xff0c;如果不想再搭建环境和测试代码bug上浪费更多的时间可以直接获取本人的测试虚拟机&#xff0c;所有的测试代码、虚拟环境和板端测试工程以全部打包到了虚拟机&#xff0c;需要的可以…

微前端概念

微前端作用 大型应用程序的拆分独立的前端子应用降低程序复杂性&#xff0c;提高开发效率 微前端能力 js隔离css隔离元素隔离生命周期预加载数据通信应用跳转多层嵌套… 微前端实现方案 IframeSingle-spaQiankunMicro-app Iframe <iframe src"https://www.examp…

【优秀python web设计】基于Python flask的猫眼电影可视化系统,可视化用echart,前端Layui,数据库用MySQL,包括爬虫

1 绪论 1.1 设计背景及目的 猫眼电影作为国内知名的电影信息网站&#xff0c;拥有海量的电影信息、票房数据和用户评价数据。这些数据对于电影市场的研究和分析具有重要意义。然而&#xff0c;由于数据的复杂性和数据来源的多样性&#xff0c;如何有效地采集、存储和展示这些数…

巴黎OSGB倾斜摄影数据详细介绍

北京时间7月27日&#xff0c;第33届夏季奥林匹克运动会开幕式在法国巴黎举行&#xff0c;巴黎成为继伦敦后&#xff0c;第二个三度举办夏季奥运会的城市&#xff0c;此次为法国相隔100年后再次举办夏季奥运会&#xff0c;前两次分别在1900年及1924年。开幕式上&#xff0c;巴黎…

Shader入门精要总结(二)矩阵

1. 矩阵乘法 一个rn的矩阵A和一个nc的矩阵B相乘&#xff0c;它们的结果AB将会是一个rc大小的矩阵&#xff0c;不满足此规则不能相乘 矩阵乘法满足一些性质 矩阵乘法不满足交换律 即AB≠BA矩阵乘法满足结合律 (AB)CA(BC) 2. 特殊矩阵 方块矩阵 指行和列数目相等的矩阵&#…

【WEB安全】 PHP基础文件知识完整教学中(超详细)

文章目录​​​​​​​ 1.PHP 文件处理 PHP 操作文件 PHP 文件打开/读取/关闭 ​​​​​​​文件的 复制 删除 重名 ​​​​​​​文件的判断 2.PHP获取文件属性 3.PHP目录操作 4.命名空间 PHP 命名空间可以解决以下两类问题&#xff1a; 5.正则表达式 正则表达…

网站后端管理和构建java项目的工具-Maven

maven是用于管理和构建java项目的工具。 管理Jar包 无论是使用eclipse、IDEA创建的maven项目&#xff0c;格式都是统一的。 不同开发工具创建的maven项目兼容。 test是对main测试的代码。main中的resources中放置配置文件。 对于Maven&#xff0c;一个Maven项目就是一个对象…

《基于深度学习的目标检测算法综述论文的解读》

论文阅读&#xff1a;《基于深度学习的目标检测算法综述论文的综述》的总结 作者 &#xff1a; 包晓敏&#xff0c;王思琪 ( 浙江理工大学 信息学院&#xff0c;浙江 杭州 310018) 本文章介绍了两阶段深度学习算法和单阶段深度学习算法。 一、目标检测的定义&#xff1a; 目…

Qt Designer,仿作一个ui界面的练习(二):部件内容的填充

有了完成了布局的基本框架设计之后&#xff0c;对各个部件逐步完成内容的填充。 一、还是从顶边栏开始&#xff1a; 1、在顶边栏的topLogo里面拖入一个QLabel&#xff08;标签&#xff09;&#xff0c;命名为logoImage&#xff0c;删除标签的文字。 2、右键点击topLogo&#x…

[Linux安全运维] LAMP 环境搭建保姆级教学(Apache + MySQL + PHP) ~~

LAMP LAMP 是一种网站技术&#xff0c;可以实现动态的网站页面部署。 1. LAMP概述 1 .1构成 Linux: 简介: Linux 是一种开源的操作系统&#xff0c;以其稳定性和安全性而著称。在 LAMP 堆栈中&#xff0c;它作为服务器操作系统运行。作用: 为应用程序提供一个稳定、安全的运…

为了方便写CURD代码,我在UTools写了个插件SqlConvert来生成代码!

-1. 前言 为了方便摸鱼&#xff0c;我之前写过一个通过sql生成代码的工具&#xff0c;但是服务器到期了&#xff0c;也就懒得重新部署了。 技术框架是 SpringBoot MybatisPlus Velocity Vue ElementUI Sql-ParseeSql-Parser-ui 0. Utools应用安装 官网地址: https://u.too…

达梦数据库归档介绍

一、什么是归档 数据库归档是一种数据管理策略&#xff0c;它涉及将旧的、不经常访问的数据移动到一个单独的存储设备&#xff0c;以便在需要时可以检索&#xff0c;同时保持数据库的性能和效率。 归档的主要目标是为了释放数据库中的空间&#xff0c;以便更有效地利用高性能…

如何用PostMan按照规律进行循环访问接口

①设置动态变量 步骤一: 设置环境变量 1. 创建环境变量集合 在 Postman 左上角选择 "环境"&#xff0c;然后点击 "添加" 来创建一个新的环境变量集合。给它起一个名称&#xff0c;比如 "uploadDemo". 2. 添加初始变量 在新创建的环境变量集…

校车购票小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;我的乘车信息管理&#xff0c;车辆信息管理&#xff0c;座位管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;车辆信息&#xff0c;我的 开发系统…