闲着无聊,总不能把python丢下,就写了这个小脚本,最近也慢慢在写自己用的工具,毕竟自己写的才是最顺手的。
参数说明
-a 扫描的IP地址
-t 超时
-p 扫描端口 支持1-65535格式,以-号连接
____ _ ____ | _ \ ___ _ __| |_/ ___| ___ __ _ _ __ | |_) / _ \| '__| __\___ \ / __/ _` | '_ \ | __/ (_) | | | |_ ___) | (_| (_| | | | | |_| \___/|_| \__|____/ \___\__,_|_| |_| Have fun. Author:Y4er usage: portscan.py [-h] -a HOST -t TIMEOUT [-p PORT] optional arguments: -h, --help show this help message and exit -a HOST target host -t TIMEOUT timeout -p PORT target port
脚本代码
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # author:Y4er import socket import argparse import threading def banner(): print(r''' ____ _ ____ | _ \ ___ _ __| |_/ ___| ___ __ _ _ __ | |_) / _ \| '__| __\___ \ / __/ _` | '_ \ | __/ (_) | | | |_ ___) | (_| (_| | | | | |_| \___/|_| \__|____/ \___\__,_|_| |_| Have fun. Author:Y4er''') def portscan(ip,port,timeout): try: socket.setdefaulttimeout(timeout) s = socket.socket() s.connect((ip,port)) print('[+] {} is open.'.format(port)) s.close() except: print('[-] {} is close.'.format(port)) finally: pass class MyThread(threading.Thread): """docstring for MyThread""" def __init__(self,host,port,timeout): super(MyThread, self).__init__() self.host = host self.port = port self.timeout = timeout def run(self): portscan(self.host,self.port,self.timeout) if __name__ == '__main__': def_ports = [21,22,23,25,80,110,137,138,139,443,445,873,888,1025,1433,1521,2082,2083,2222,3306,3311,3312,3389,4899,5432,5900,6379,7001,7002,7778,8000,8080,8888,11211,27017,43958,50000,65500] parser = argparse.ArgumentParser(usage=banner()) parser.add_argument('-a',help='target host',dest='host',required=True) parser.add_argument('-t',help='timeout',dest='timeout',type=int,required=True) parser.add_argument('-p',help='target port',dest='port',required=False) args = parser.parse_args() threads = [] if args.port: if '-' in args.port: limits = args.port.split('-') limits = list(map(int,limits)) for port in range(limits[0],limits[1]+1): t = MyThread(args.host,port,args.timeout) threads.append(t) else: for port in def_ports: t = MyThread(args.host,port,args.timeout) threads.append(t) for t in threads: t.start() for t in threads: t.join()
多线程的线程锁没加,也不会加,可能数据会有点乱,但是没事,看不瞎 – -。
附上web中常用端口号
21 ftp 22 SSH 23 Telnet 80 web 80-89 web 161 SNMP 389 LDAP 443 SSL心脏滴血以及一些web漏洞测试 445 SMB 512,513,514 Rexec 873 Rsync未授权 1025,111 NFS 1433 MSSQL 1521 Oracle:(iSqlPlus Port:5560,7778) 2082/2083 cpanel主机管理系统登陆 (国外用较多) 2222 DA虚拟主机管理系统登陆 (国外用较多) 2601,2604 zebra路由,默认密码zebra 3128 squid代理默认端口,如果没设置口令很可能就直接漫游内网了 3306 MySQL 3312/3311 kangle主机管理系统登陆 3389 远程桌面 4440 rundeck 参考WooYun: 借用新浪某服务成功漫游新浪内网 5432 PostgreSQL 5900 vnc 5984 CouchDB http://xxx:5984/_utils/ 6082 varnish 参考WooYun: Varnish HTTP accelerator CLI 未授权访问易导致网站被直接篡改或者作为代理进入内网 6379 redis未授权 7001,7002 WebLogic默认弱口令,反序列 7778 Kloxo主机控制面板登录 8000-9090 都是一些常见的web端口,有些运维喜欢把管理后台开在这些非80的端口上 8080 tomcat/WDCP主机管理系统,默认弱口令 8080,8089,9090 JBOSS 8083 Vestacp主机管理系统 (国外用较多) 8649 ganglia 8888 amh/LuManager 主机管理系统默认端口 9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞 10000 Virtualmin/Webmin 服务器虚拟主机管理系统 11211 memcache未授权访问 27017,27018 Mongodb未授权访问 28017 mongodb统计页面 50000 SAP命令执行 50070,50030 hadoop默认端口未授权访问
这些差不多都写到了py脚本里。自用。
原创文章,作者:Y4er,未经授权禁止转载!如若转载,请联系作者:Y4er