千家信息网

Linux-Python-Scapy的TCP扫描

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,TCP 连接扫描:客户端与服务器建立 TCP 连接要进行一次三次握手,如果进行了一次成功的三次握手,则说明端口开放;TCP SYN 扫描(也称为半开放扫描或stealth扫描):这个技术同 TCP 连
千家信息网最后更新 2026年11月01日Linux-Python-Scapy的TCP扫描
  1. TCP 连接扫描:
    客户端与服务器建立 TCP 连接要进行一次三次握手,如果进行了一次成功的三次握手,则说明端口开放;
  2. TCP SYN 扫描(也称为半开放扫描或stealth扫描):
    这个技术同 TCP 连接扫描非常相似。同样是客户端向服务器发送一个带有 SYN 标识和端口号的数据包,如果目标端口开发,则会返回带有 SYN 和 ACK 标识的 TCP 数据包;
  3. TCP 圣诞树(Xmas Tree)扫描:
    在圣诞树扫描中,客户端会向服务器发送带有 PSH,FIN,URG 标识和端口号的数据包给服务器。如果目标端口是开放的,那么不会有任何来自服务器的回应。如果服务器返回了一个带有 RST 标识的 TCP 数据包,那么说明端口处于关闭状态
  4. TCP FIN 扫描:
    FIN 扫描会向服务器发送带有 FIN 标识和端口号的 TCP 数据包。如果没有服务器端回应则说明端口开放。如果服务器返回一个 RST 数据包,则说明目标端口是关闭的。
  5. TCP 空扫描(Null):
    在空扫描中,客户端发出的 TCP 数据包仅仅只会包含端口号而不会有其他任何的标识信息。如果目标端口是开放的则不会回复任何信息。如果服务器返回了一个 RST 数据包,则说明目标端口是关闭的。
  6. TCP ACK 扫描:ACK 扫描不是用于发现端口开启或关闭状态的,而是用于发现服务器上是否存在有状态防火墙的。它的结果只能说明端口是否被过滤。再次强调,ACK 扫描不能发现端口是否处于开启或关闭状态。客户端会发送一个带有 ACK 标识和端口号的数据包给服务器。如果服务器返回一个带有 RST 标识的 TCP 数据包,则说明端口没有被过滤,不存在状态防火墙。如果目标服务器没有任何回应或者返回ICMP 错误类型3且代码为1,2,3,9,10或13的数据包,则说明端口被过滤且存在状态防火墙。
  7. TCP 窗口扫描:
    TCP 窗口扫描的流程同 ACK 扫描类似,同样是客户端向服务器发送一个带有 ACK 标识和端口号的 TCP 数据包,但是这种扫描能够用于发现目标服务器端口的状态。在 ACK 扫描中返回 RST 表明没有被过滤,但在窗口扫描中,当收到返回的 RST 数据包后,它会检查窗口大小的值。如果窗口大小的值是个非零值,则说明目标端口是开放的。
    一、SYN扫描:

    i=IP()
    t=TCP()
    i.dst='10.202.32.0/24'/连续地址段
    t.sport=8888
    t.dport=[3389,80,21,22,23,443,445,137,138,139]/(1,1024)
    []表示多个端口,()表示连续端口
    repose=(i/t)
    repose=(i/t)
    t.flags='S'/产生标志位也可以写数据例如ACK写16

从下到上FIN-SYN-RST-PSH-ACK-URG
1 2 4 8 16 32

ans,unans=sr(respose)
ans.show()
0000 IP / TCP 192.168.80.250:8888 > 10.202.32.1:ssh S ==> IP / TCP 10.202.32.1:ssh > 192.168.80.250:8888 SA / Padding
0001 IP / TCP 192.168.80.250:8888 > 10.202.32.74:microsoft_ds S ==> IP / TCP 10.202.32.74:microsoft_ds > 192.168.80.250:8888 SA / Padding
0002 IP / TCP 192.168.80.250:8888 > 10.202.32.74:netbios_ns S ==> IP / TCP 10.202.32.74:netbios_ns > 192.168.80.250:8888 RA / Padding
0003 IP / TCP 192.168.80.250:8888 > 10.202.32.74:netbios_ssn S ==> IP / TCP 10.202.32.74:netbios_ssn > 192.168.80.250:8888 SA / Padding
对数据进行监控:
sniff(iface="eth0",prn=lambda x:x.show() )
对数据进行查看处理:
ans.summary( lambda(s,r): r.sprintf("%IP.src% \t %TCP.sport% \t %TCP.flags%") )
10.200.230.1 ssh SA
10.200.230.11 3389 SA
10.200.230.11 loc_srv SA
10.200.230.11 microsoft_ds SA
10.200.230.12 3389 SA
10.200.230.12 https SA
10.200.230.40 3389 SA
10.200.230.41 3389 SA
10.200.230.42 loc_srv SA
10.200.230.42 microsoft_ds SA
10.200.230.50 3389 SA
二、TCP ACK 扫描;
i=IP()
i.dst='10.200.193.0/24'
t=TCP()
t.flags='A'
t.sport=9999
t.dport=[3389,21,22,23,80,443]
respose=(i/t)
ans,unans=sr(respose)
ans.show()
0000 IP / TCP 192.168.80.250:9999 > 10.200.193.0:3389 A ==> IP / TCP 10.200.193.0:3389 > 192.168.80.250:9999 R / Padding
0001 IP / TCP 192.168.80.250:9999 > 10.200.193.0:ftp A ==> IP / TCP 10.200.193.0:ftp > 192.168.80.250:9999 R / Padding
0002 IP / TCP 192.168.80.250:9999 > 10.200.193.0:ssh A ==> IP / TCP 10.200.193.0:ssh > 192.168.80.250:9999 R / Padding
0003 IP / TCP 192.168.80.250:9999 > 10.200.193.0:telnet A ==> IP / TCP 10.200.193.0:telnet > 192.168.80.250:9999 R / Padding
如果服务器返回一个带有 RST 标识的 TCP 数据包,则说明端口没有被过滤,不存在状态防火墙。
对数据进行监控:
sniff(iface="eth0",prn=lambda x:x.show() )
对数据进行查看处理:
ans.summary( lambda(s,r): r.sprintf("%IP.src% \t %TCP.sport% \t %TCP.flags% \t %ICMP.type%") )
10.200.193.1 3389 R ??
10.200.193.1 ftp R ??
10.200.193.1 ssh R ??

数据 端口 服务器 服务 标识 状态 目标 口号 客户 客户端 开放 防火墙 防火 信息 圣诞树 大小 处理 监控 相似 成功 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 电子科技大学互联网 互联网前沿科技 互联网巨头投资的硬核科技 互联网 科技馆 玖二柒互联网科技公司待遇 科技互联网的估值 阿里巴巴算科技企业还是互联网 央行互联网金融科技公司 互联网企业和科技型企业 贵州叶脉互联网科技有限公司所属行业 互联网和黑科技的看法 互联网科技产业特征 新兴科技互联网创新大赛颁奖典礼 2021互联网科技公司排名 元气玛特互联网科技公司是外包吗 互联网科技实习生岗位 广州千川互联网科技有限公司 工业互联网科技成果转化 互联网与数字科技关系 高科技和互联网的现代国家 瑰夏咖啡 互联网金融科技创新 丰台科技园 互联网公司 老年人脱离互联网科技的作文 和信科技工业互联网 启辰互联网科技 杭州披云加互联网科技有限公司 互联网相关科技技术 普陀区互联网教育科技管理办法 广州三三互联网科技有限公司
0