python脚本——端口扫描

本文介绍了如何使用Python进行端口扫描,包括SYN扫描和FIN扫描的原理及其实现。SYN扫描更隐蔽,通过发送SYN包并观察响应判断端口状态;FIN扫描通过发送FIN包,根据主机响应判断端口是否开放。文章还展示了扫描代码、结果及Wireshark抓包分析。
摘要由CSDN通过智能技术生成

记录在B站学习的知识
利用TCP原理,通过编写python脚本,来检测某个主机的端口开放情况,下面介绍两种扫描,SYN扫描和FIN扫描

实验环境
  • ubuntu虚拟机
  • pycharm
准备工作
  • 了解 SYN扫描原理
    扫描器向目标主机的一个端口发送请求连接的SYN包,扫描器在收到SYN/ACK后,不是发送ACK应答,而是发送RST包请求断开连接。
    端口开放:
    1、Client 发送SYN
    2、Server 发送SYN/ACK
    3、Client 发送RST断开(只需要前两步就能判断端口是否开放)
    端口关闭:
    1、Client 发送SYN
    2、Server 回复RST/ACK(表示端口关闭)

    优点:SYN扫描要比TCP Connect()扫描隐蔽一些

  • 了解 FIN扫描原理
    FIN为指示TCP会话结束,在FIN扫描中一个设置了FIN位的数据包被发送后,若响应RST/ACK数据包,则表示端口关闭,没有响应则表示开放。
    端口开放:
    1、Client 发送FIN
    2、Server 没有响应
    端口关闭:
    1、Client 发送FIN
    2、Server 回复RST/ACK

    这个扫描可以判断被扫描的系统是不是Windows系统

代码展示
from scapy.layers.inet import IP,TCP
from scapy.sendrecv import sr

# SYN扫描
def syn_scan(target_ip,start_port,end_port):
    temp = sr(IP(dst=target_ip)/TCP(dport=(int(start_port),int(end_port)),flags='S'),timeout=3,verbose=False)
    result = temp[
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值