首页 > 解决方案 > Python Scapy TCP SYN 和 TCP 端口

问题描述

使用 scapy 获取 tcp syn 标志并将源 ip、目标 ip、端口号存储在字典中时,任何人都有解决方案吗?我正在尝试构建一个工具来获取 pcap 文件并获取它

这是我厌倦的:

from scapy.all import PcapReader, TCP
from collections import Counter
count = Counter()
for pkt in PcapReader("testcapture.pcapng"):
    if TCP in pkt and pkt[TCP].flags & 2:  # TCP SYN packet
        src = pkt.sprintf('{IP:%IP.src%}')
        pkt.sprint
        count[src] += 1
        print(src)

这会找到所有带有 syn 标志的 ip,但我想查看端口号

标签: pythonscapy

解决方案


要访问TCP层中的端口值,您可以使用sportdport。所以你可以像这样调整你的代码:

count = {}
for pkt in PcapReader("testcapture.pcapng"):
    if TCP in pkt and pkt[TCP].flags & 2:  # TCP SYN packet
        src = pkt.sprintf('{IP:%IP.src%}:{TCP:%TCP.sport%} -> {IP:%IP.dst%}:{TCP:%TCP.dport%}')
        pkt.sprint
        count[src] = count.get(src, 0) + 1
        print(src)

推荐阅读