我正在尝试使用“dpkt”包装库在 Python 2.7 中编写一个小脚本来解析示例 PCAP 文件。
我确实为 NULL 扫描成功编写了特定检查,例如如果 seq = 0 并且未设置标志,但是对于半开扫描尝试,我该如何做呢?
我试图做类似的事情:
if SYN and RST flags are set
print "Half-open" scan detected
但是上面的逻辑没有从示例 PCAP 文件中获取半开连接的连接。
我需要做任何额外的检查吗?
我正在尝试使用“dpkt”包装库在 Python 2.7 中编写一个小脚本来解析示例 PCAP 文件。
我确实为 NULL 扫描成功编写了特定检查,例如如果 seq = 0 并且未设置标志,但是对于半开扫描尝试,我该如何做呢?
我试图做类似的事情:
if SYN and RST flags are set
print "Half-open" scan detected
但是上面的逻辑没有从示例 PCAP 文件中获取半开连接的连接。
我需要做任何额外的检查吗?
常规 TCP 握手和典型的“半开” TCP 连接工作流程(通常用于监控和负载平衡)之间的区别是:
Normal
------
Client ---SYN---> Server
Client <-SYN,ACK- Server
Client ---ACK---> Server
Half-Open
---------
Client ---SYN---> Server
Client <-SYN,ACK- Server
Client ---RST---> Server
所以你看到它只是最后一个客户端到服务器数据包不同。您不会找到识别半开的单个数据包。您需要寻找看起来像我描述的半开放式的流程/序列/对话(无论您想怎么称呼它),并且通常会很快发生(如果一切正常,最好在几毫秒内)。