让我们学习,如何使用 python 创建自己的端口扫描器
让我们学习,如何使用 python 创建自己的端口扫描器
Port Scanner Python Picture
本教程仅包含用于创建端口扫描器的四个不同代码片段。这些端口扫描器将为 Web 服务和外部主机运行。该工具旨在提供端口扫描的基本功能。为了提供该功能,使用了套接字的基本概念。
本文介绍如何创建自己的功能端口扫描器。我将向您展示四种不同的端口扫描器,从 Easy → Medium → Moderate → Advanced。
准备好了吗,出发吧!!
端口扫描简单
创建一个简单的端口扫描器#!/bin/python
导入系统
导入套接字
从日期时间导入日期时间
定义我们的目标
如果 len(sys.argv) == 2:
target = socket.gethostbyname(sys.argv[1]) #将主机名翻译成 IPv4
别的:
print(“无效的参数数量”)
print(“语法:python3scanner.py
添加横幅
打印(“-” * 60)
print(“使用 Kushal 的端口扫描器启动端口扫描“+target”)
print("扫描目标 "+target, "对于开放的端口 21 到 445")
print(“开始时间:”+str(datetime.now()))
打印(“-” * 60)
尝试:
对于范围内的端口(21,445):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.setdefaulttimeout(5)
result = s.connect_ex((target,port)) #返回错误指示符
如果结果 == 0:
打印(“-” * 20)
打印(“端口→”,格式(端口),“=打开”)
s.close()
除了键盘中断:
print(“\n正在退出程序。”)
sys.exit()
除了socket.gaierror:
print(“无法解析主机名。”)
sys.exit()
除了socket.error:
print(“无法连接到服务器。”)
sys.exit()
端口扫描介质
!usr/bin/python
port_scanner.py
导入套接字
print(“欢迎使用 Kushal 的端口扫描仪”)
t_host = str(input(“输入要扫描的主机IP:”)) #目标主机, www.example.com
t_ip = socket.gethostbyname(t_host) # 将 t_host 解析为 IPv4 地址
print(t_ip) # 打印IP地址
而1:
t_port = int(input(“输入端口号:”)) # 输入要扫描的端口
尝试:
袜子 = socket.socket()
res = sock.connect((t_ip, t_port))
打印(“端口{}:打开”.format(t_port))
袜子.close()
除了:
打印(“端口{}:关闭”.format(t_port))
打印(“端口扫描完成”)
端口扫描中等
!/bin/bash
构建一个内联端口扫描器
导入模块
导入套接字
袜子 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.socket (socket_family, socket_kind)
tgt = input(“[+] 输入目标IP:”)
定义函数
def 扫描仪(端口):
尝试:
socks.connect((tgt, 端口))
返回真
除了:
返回假
对于范围内的端口号(1,445):#scans 端口 1 到 445
print("开始扫描 ==>", portNumber)
如果扫描仪(端口号):
print('[*] Port >', portNumber, '/tcp',”> open”)
端口扫描高级
导入 pyfiglet
导入系统
导入套接字
从日期时间导入日期时间
ascii_banner = pyfiglet.figlet_format(“端口扫描仪”)
打印(ascii_banner)
定义目标
如果 len(sys.argv) == 2:
将主机名转换为 IPv4
目标 = socket.gethostbyname(sys.argv[1])
别的:
print(“参数数量无效”)
添加横幅
打印(“-” * 50)
print(“扫描目标:” + 目标)
print(“扫描开始于:” + str(datetime.now()))
打印(“-” * 50)
尝试:
将扫描 1 到 65,535 之间的端口
对于范围内的端口(1,65535):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.setdefaulttimeout(1)
返回错误指示符
结果 = s.connect_ex((目标,端口))
如果结果 ==0:
print(“端口 {} 已打开”.format(port))
s.close()
除了键盘中断:
print(“\n 退出程序 !!!!”)
sys.exit()
除了socket.gaierror:
print(“\n 主机名无法解析!!!”)
sys.exit()
除了socket.error:
打印(“\服务器没有响应!!!!”)
sys.exit()
本教程到此结束,希望您今天学到了一些新东西。当您学习新知识时,请在您自己的机器上进行练习,不要使用这些做法和知识来伤害他人,也不要将这些技术用于任何恶意活动。本教程仅用于教育目的,本教程无意以任何方式教育或启发任何人以任何形式或形式对其他财产造成伤害。请不要作恶。
Don't be evil banner on a hand
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明