You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python捕获特定Windows进程(.exe)的网络流量?

捕获Windows特定进程的网络流量

要实现仅捕获特定.exe进程的网络流量,核心思路是先找到进程对应的本地端口,再针对这些端口进行嗅探——因为Scapy本身无法直接关联进程和数据包,需要结合Windows的网络连接信息完成映射。

具体步骤及代码实现

  1. 获取目标进程的PID
    用psutil遍历系统进程,匹配目标进程名获取PID:

    import psutil
    
    target_process = "some_app.exe"
    process_pid = None
    
    for process in psutil.process_iter(['pid', 'name']):
        if process.info['name'].lower() == target_process.lower():
            process_pid = process.info['pid']
            break
    
    if not process_pid:
        print(f"未找到进程 {target_process}")
        exit()
    
  2. 获取进程对应的本地端口
    通过psutil的net_connections方法,筛选出该PID对应的所有TCP/UDP连接的本地端口:

    def get_process_ports(pid):
        ports = set()
        try:
            connections = psutil.Process(pid).connections(kind='inet')
            for conn in connections:
                # 收集本地端口,不受连接状态限制
                ports.add(conn.laddr.port)
        except psutil.AccessDenied:
            print("权限不足,无法获取进程网络连接信息")
        return list(ports)
    
    process_ports = get_process_ports(process_pid)
    if not process_ports:
        print("该进程当前无活跃网络连接端口")
        exit()
    
  3. 用Scapy针对目标端口嗅探流量
    把获取到的端口拼接成过滤规则,传入Scapy的sniff函数:

    from scapy.all import *
    
    def capture_traffic(packet):
        if packet.haslayer(IP):
            # 区分TCP和UDP,打印关键流量信息
            if packet.haslayer(TCP):
                print(f"TCP | 本地端口: {packet[TCP].dport} | 远程地址: {packet[IP].src}:{packet[TCP].sport}")
            elif packet.haslayer(UDP):
                print(f"UDP | 本地端口: {packet[UDP].dport} | 远程地址: {packet[IP].src}:{packet[UDP].sport}")
    
    # 构建过滤规则:匹配所有目标端口的TCP/UDP流量
    port_filter = " or ".join([f"(tcp port {port} or udp port {port})" for port in process_ports])
    sniff(filter=port_filter, prn=capture_traffic)
    

注意事项

  • 权限要求:运行脚本需要管理员权限,否则无法获取进程的网络连接信息或进行数据包嗅探。
  • 动态端口更新:如果进程后续新建网络连接(使用新端口),当前脚本不会自动捕获,需重新运行或添加定时刷新端口的逻辑。
  • 流量方向控制:上述过滤规则会捕获目标端口的进出流量,若需区分方向,可在过滤规则中添加src port或dst port的限定。

内容的提问来源于stack exchange,提问作者Programer Beginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:43:10