代码拉取完成,页面将自动刷新
#!/usr/bin/env python3
import argparse
import sys
from symtable import Class
from scanner.core import Scanner
from scanner.utils.validator import validate_args
from scanner.utils.logger import setup_logger
import pyfiglet # 导入字体库
from colorama import Fore # 导入颜色库
# 命令行参数 使用argparse库
def parse_arguments():
parser = argparse.ArgumentParser()
# argparse.ArgumentParser 用于创建一个解析器对象
parser.add_argument('-t', '--target', required=True, # required=True表示必须输入
help='扫描目标 (IP, IP范围,CIDR)') #IP range 例如:192.168.1.1-192.168.1.254
parser.add_argument('-p', '--ports',
help='要扫描的端口(单个端口、端口列表或端口范围)。如果未指定,将扫描常用端口')
parser.add_argument('--threads', type=int, default=10,
help='并发线程数 (默认值: 10)')
parser.add_argument('--timeout', type=int, default=2,
help='超时时间(秒) (默认值: 2)')
parser.add_argument('--output', default='all',
choices=['txt', 'html', 'json', 'all'],
help='报告输出格式 (默认值: all)')
parser.add_argument('--scan-type', default='syn',
choices=['syn', 'tcp', 'udp'],
help='扫描类型 (默认值: syn)')
parser.add_argument('--udp-retries', type=int, default=3,
help='UDP扫描重试次数 (默认值: 3)')
parser.add_argument('--no-ping', action='store_true',
help='跳过主机发现')
return parser.parse_args()
# 打印横幅
def banner():
test = pyfiglet.figlet_format("Port Scan", font="ansi_regular")
print(Fore.BLUE + test)
print(
Fore.BLUE + f"端口扫描工具 {version} 作者:张有泽"
)
version = "2.2.1" # 版本号
def main():
logger = setup_logger() # 初始化日志
banner() # 打印横幅
try:
args = parse_arguments() # 获取命令行参数
validate_args(args) # 验证参数
scanner = Scanner(args) # 创建扫描器对象
scanner.start() # 开始扫描
except KeyboardInterrupt:
logger.info("\n用户中断扫描") # 按Ctrl+C
sys.exit(1) # 退出程序,返回状态码1
except Exception as e:
logger.error(f"发生错误: {str(e)}") # 记录错误信息
sys.exit(1) # 发生异常时退出程序,返回状态码1
if __name__ == "__main__":
main()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。