端口扫描工具V1.1

本文介绍了端口扫描的原理,通过尝试与目标主机建立连接来判断端口是否开放。规划了工具的设计方案,包括多端口扫描和域名扫描功能,并分享了涉及正则表达式的代码实现。
摘要由CSDN通过智能技术生成

1.端口扫描原理

尝试与目标主机建立连接,如果目标主机有回复则说明端口开放

2.设计方案规划

  1. 增加多端口扫描
  2. 增加域名扫描

3.代码实现

  1. 知识点
方法 备注
connect() 主动初始化TCP服务器连接,一般address的格式为元组(hostname,prot),如果连接出错,返回socket.error错误
connect_ex() connect()函数的扩展版本,出错是返回错误码,而不是抛出异常 。返回值为0,则代表连接成功
re. compile() 编译正则表达式,生成一个 Pattern 对象,单独使用没有任何意义,需要和findall(), search(), match()搭配使用
split() 通过指定分隔符对字符串进行切片
  1. 正则表达式

    IP正则表达式:((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}
    域名正则表达式:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.?

  2. 代码

#扫描工具v1.1
#导包
import socket
import re
#1.检验ip
def check_ip(ip):
    #1.正则表达判断ip是否正确,ip的正则表达式:((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}
    ip_re=re.compile('((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}')
    if ip_re.match(ip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值