端口扫描概念

端口扫描原理

  • 向目标主机的某个端口,发送建立链接的请求,如果开放了这个端口就会响应0 ,未开放则响应非0

设计方案规划

  • 校验ip规则
  • ip扫描
  • 域名扫描
  • 通过port建立链接

代码实现功能:

import socket
import re
def check_ip(ip):
    # 校验ip 
    ip_address = re.compile('^(?:[0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.(?:[0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.'
                            '(?:[0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.(?:[0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$') # 正则表达式对象
    if ip_address.match(ip) and len(ip) != 0:
        return True
    else:
        return False
def scan_port(ip):
    #接收用户扫描IP
    # ip = input('输入IP>>>')
    # ports = input('输入port 范围:eg 3-6>>>').strip()
    # port_begin,port_end = ports.split('-')
    port_begin, port_end = (31990, 32000)
    for one in range(int(port_begin),int(port_end)+1):
        # 使用IP实现tcp连接
        sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sk.settimeout(0.5)

        # 访问成功返回0  返回有误返回非0 并不是报错
        try:
            coon = sk.connect_ex((ip,one))
            if coon == 0:
                print(f'主机{ip},{one} 已开放')
            else:
                print(f'主机{ip},{one} 未开放')
        except:
            pass
        sk.close()
def scan_ip():
    ip = input('输入需要扫描的IP>>>')
    # 使用ip判断函数
    if check_ip(ip):
        scan_port(ip)
    else:
        print('ip格式有误,请检查')
# 域名扫描 --需要解析ip地址
def domain_name_sacn():
    # 输入域名
    domain_name = input('输入域名>>>')
    # 可以做判断 ======================正则
    if 'http://' in domain_name or 'https://' in domain_name:
        domain_name = domain_name[domain_name.find("//"+3):]
        print('正在解析的域名,,',domain_name)
    # 获取ip
    sever_ip = socket.gethostbyname(domain_name)
    print(f'该域名{domain_name}的ip:{sever_ip}')
    # 扫描端口函数
# 主入口
def main():
    info = """
    1 使用ip扫描
    2 使用域名扫描
    请选择(1/2)
    """
    print(info)
    # 接受用户输入
    select = input('请选择(1/2)>>>')
    if select == '1':
        scan_ip()
    elif select == '2':
        domain_name_sacn()
    else:
        print('输入有误')
        
if __name__ == '__main__':
    main()
posted @ 2023-12-27 18:31  太白之魔童降世  阅读(4)  评论(0编辑  收藏  举报