├── __init__.py ├── ftp ├── __init__.py ├── user.txt ├── ftp.pyc ├── __init__.pyc ├── pass.txt └── ftp.py ├── ldapc ├── __init__.py └── ldap.py ├── mssql ├── __init__.py ├── user.txt ├── pass.txt ├── mssql.pyc ├── __init__.pyc └── mssql.py ├── mysql ├── __init__.py ├── user.txt ├── password.txt ├── mysql.pyc ├── __init__.pyc └── mysql.py ├── oracle ├── __init__.py ├── user.txt ├── pass.txt └── oracle.py ├── redis ├── __init__.py ├── redis.pyc ├── __init__.pyc └── redis.py ├── memcached ├── __init__.py ├── __init__.pyc ├── memcached.pyc └── memcached.py ├── mongodb ├── __init__.py ├── __init__.pyc ├── mongodb.pyc └── mongodb.py ├── postgresql ├── __init__.py ├── user.txt ├── pass.txt ├── __init__.pyc ├── postgresql.pyc └── postgresql.py ├── elasticsearch ├── __init__.py ├── __init__.pyc ├── elasticsearch.pyc └── elasticsearch.py ├── result.png ├── testaspx.gif ├── requirement.txt ├── README.md ├── LICENSE ├── .gitignore └── allscanner.py /__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ftp/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ldapc/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mssql/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mysql/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mysql/user.txt: -------------------------------------------------------------------------------- 1 | root -------------------------------------------------------------------------------- /oracle/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /redis/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /memcached/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mongodb/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /postgresql/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /elasticsearch/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mssql/user.txt: -------------------------------------------------------------------------------- 1 | sa 2 | test 3 | admin -------------------------------------------------------------------------------- /postgresql/user.txt: -------------------------------------------------------------------------------- 1 | postgres 2 | admin -------------------------------------------------------------------------------- /postgresql/pass.txt: -------------------------------------------------------------------------------- 1 | postgres 2 | admin 3 | 123456 -------------------------------------------------------------------------------- /mysql/password.txt: -------------------------------------------------------------------------------- 1 | root 2 | 123456 3 | password 4 | -------------------------------------------------------------------------------- /mssql/pass.txt: -------------------------------------------------------------------------------- 1 | sa 2 | 123456 3 | password 4 | 000000 5 | test 6 | 123 -------------------------------------------------------------------------------- /ftp/user.txt: -------------------------------------------------------------------------------- 1 | ftp 2 | admin 3 | root 4 | wwwroot 5 | anonymous 6 | user -------------------------------------------------------------------------------- /result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/result.png -------------------------------------------------------------------------------- /ftp/ftp.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/ftp/ftp.pyc -------------------------------------------------------------------------------- /testaspx.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/testaspx.gif -------------------------------------------------------------------------------- /mssql/mssql.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/mssql/mssql.pyc -------------------------------------------------------------------------------- /mysql/mysql.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/mysql/mysql.pyc -------------------------------------------------------------------------------- /redis/redis.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/redis/redis.pyc -------------------------------------------------------------------------------- /ftp/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/ftp/__init__.pyc -------------------------------------------------------------------------------- /mssql/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/mssql/__init__.pyc -------------------------------------------------------------------------------- /mysql/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/mysql/__init__.pyc -------------------------------------------------------------------------------- /redis/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/redis/__init__.pyc -------------------------------------------------------------------------------- /mongodb/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/mongodb/__init__.pyc -------------------------------------------------------------------------------- /mongodb/mongodb.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/mongodb/mongodb.pyc -------------------------------------------------------------------------------- /requirement.txt: -------------------------------------------------------------------------------- 1 | ipaddr 2 | python-mysql 3 | pymongo 4 | psycopg2 5 | pymssql 6 | cx_Oracle -------------------------------------------------------------------------------- /memcached/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/memcached/__init__.pyc -------------------------------------------------------------------------------- /memcached/memcached.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/memcached/memcached.pyc -------------------------------------------------------------------------------- /oracle/user.txt: -------------------------------------------------------------------------------- 1 | sa 2 | test 3 | admin 4 | sys 5 | system 6 | sysman 7 | scott 8 | aqadm 9 | Dbsnmp -------------------------------------------------------------------------------- /postgresql/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/postgresql/__init__.pyc -------------------------------------------------------------------------------- /postgresql/postgresql.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/postgresql/postgresql.pyc -------------------------------------------------------------------------------- /elasticsearch/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/elasticsearch/__init__.pyc -------------------------------------------------------------------------------- /elasticsearch/elasticsearch.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aedoo/Allscanner/HEAD/elasticsearch/elasticsearch.pyc -------------------------------------------------------------------------------- /oracle/pass.txt: -------------------------------------------------------------------------------- 1 | 2 | manager 3 | oem_temp 4 | tiger 5 | aqadm 6 | dbsnmp 7 | admin 8 | 123456 9 | sa 10 | test -------------------------------------------------------------------------------- /ftp/pass.txt: -------------------------------------------------------------------------------- 1 | anonymous 2 | user 3 | admin 4 | root 5 | ftp 6 | 1 7 | 12 8 | 123 9 | 1234 10 | 12345 11 | 123456 12 | 1234567 13 | 12345678 -------------------------------------------------------------------------------- /redis/redis.py: -------------------------------------------------------------------------------- 1 | import socket,sys 2 | 3 | def redisburp(ip,port): 4 | 5 | addr = (ip,port) 6 | s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 7 | try: 8 | s.settimeout(1) 9 | s.connect(addr) 10 | except: 11 | s.close() 12 | 13 | data = "ping\n" 14 | 15 | try: 16 | s.send(data) 17 | response = s.recv(1024) 18 | if "+PONG" in response: 19 | sys.stdout.write('%s:%d is Redis Unauthorized\n' % (ip,port)) 20 | except: 21 | s.close() 22 | s.close() -------------------------------------------------------------------------------- /mongodb/mongodb.py: -------------------------------------------------------------------------------- 1 | import socket,sys 2 | import pymongo 3 | 4 | def mongoburp(ip,port): 5 | 6 | addr = (ip, port) 7 | s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 8 | try: 9 | s.settimeout(1) 10 | s.connect(addr) 11 | client = pymongo.MongoClient(ip, 27017) 12 | db = client.mongotest 13 | db.my_collection.insert_one({"x": 1}).inserted_id 14 | client.drop_database('mongotest') 15 | sys.stdout.write('%s:%d is MongoDB Unauthorized\n' % (ip, port)) 16 | 17 | except: 18 | s.close() 19 | -------------------------------------------------------------------------------- /memcached/memcached.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | 3 | import socket,sys 4 | 5 | def memcachedburp(ip,port): 6 | addr = (ip,int(port)) 7 | 8 | sock_11211 = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 9 | 10 | try: 11 | sock_11211.settimeout(1) 12 | sock_11211.connect(addr) 13 | 14 | try: 15 | sock_11211.send("stats\r\n") 16 | result = sock_11211.recv(1024) 17 | 18 | if "version" in result: 19 | sys.stdout.write('%s:%d is Memcached Unauthorized\n' % (ip, port)) 20 | except Exception: 21 | pass 22 | 23 | except: 24 | sock_11211.close() -------------------------------------------------------------------------------- /elasticsearch/elasticsearch.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | import urllib2 3 | import sys,socket 4 | 5 | 6 | def elasticburp(ip,port): 7 | 8 | 9 | addr = (ip,int(port)) 10 | url = "http://" + ip + ":" + str(port) + "/_cat" 11 | 12 | sock_9200 = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 13 | 14 | try: 15 | sock_9200.settimeout(1) 16 | sock_9200.connect(addr) 17 | 18 | #print '%s 9200 open!' 19 | 20 | try: 21 | data = urllib2.urlopen(url).read() 22 | if '/_cat/master' in data: 23 | sys.stdout.write('%s:%d is ElasticSearch Unauthorized\n' % (ip, port)) 24 | 25 | except: 26 | pass 27 | except: 28 | sock_9200.close() -------------------------------------------------------------------------------- /ldapc/ldap.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | import socket 3 | import ldap,sys 4 | 5 | def ldapburp(ip, port): 6 | try: 7 | HOST = ip 8 | PORT = 389 9 | addr = (HOST, PORT) 10 | s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 11 | try: 12 | s.settimeout(1) 13 | s.connect(addr) 14 | except: 15 | s.close() 16 | 17 | uri = "ldap://%s:389/" % HOST 18 | 19 | try: 20 | s.close() 21 | obj = ldap.initialize(uri) 22 | try: 23 | dn = obj.read_rootdse_s()['namingContexts'] 24 | sys.stdout.write('%s:%d is Ldap Unauthorized, INFO:%s\n' % (HOST, PORT, dn)) 25 | 26 | except: 27 | pass 28 | except: 29 | s.close() 30 | except: 31 | pass -------------------------------------------------------------------------------- /mysql/mysql.py: -------------------------------------------------------------------------------- 1 | import socket 2 | import MySQLdb 3 | import sys 4 | 5 | def mysqlburp(ip,port): 6 | 7 | with open('mysql\user.txt','r') as user_file: 8 | users = user_file.readlines() 9 | 10 | with open('mysql\password.txt','r') as pass_file: 11 | passs = pass_file.readlines() 12 | 13 | addr = (ip,int(port)) 14 | sock_3306 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 15 | 16 | try: 17 | sock_3306.settimeout(1) 18 | sock_3306.connect(addr) 19 | 20 | for user in users: 21 | user = user.strip() 22 | for password in passs: 23 | password = password.strip() 24 | try: 25 | MySQLdb.connect(ip, user, password) 26 | sys.stdout.write('%s:%d has MySQL WeakPass, %s:%s\n' % (ip, port, user, password)) 27 | 28 | except: 29 | continue 30 | 31 | except: 32 | sock_3306.close() 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Allscanner 2 | 弱端口的弱口令爆破以及未授权访问的集成检测工具。 3 | Weak password blasting of weak ports and integrated detection tools for unauthorized access. 4 | 5 | 目前支持的弱服务检测包括如下: 6 | 7 | `21 FTP 弱口令检测` 8 | `139 LDAP 未授权访问检测` 9 | `1433 MSSQL 弱口令检测` 10 | `3306 MYSQL 弱口令检测、未授权访问检测` 11 | `11211 MEMCACHED 未授权访问检测` 12 | `6379 Redis 未授权访问检测` 13 | `27017 MongoDB 未授权访问检测` 14 | `9200 Elasticsearch 未授权访问检测` 15 | `1521 Oracle 弱口令检测` 16 | 17 | 之后可能还会加入: 18 | 22 SSH 19 | 23 Telnet (登录方式繁杂并且速度较慢,暂时不考虑加入) 20 | 139 Samba 21 | 873 RSYNC 22 | 5901 VNC 23 | 3389 RDP 24 | 25 | ## 使用说明 ## 26 | 27 | ### 查看帮助文件 ### 28 | 29 | `python allscanner.py -h` 30 | 31 | ### 运行示例(扫描192.168.1这个C段的所服务) ### 32 | 33 | `python allscanner.py -i 192.168.1.1/24 -t 200` 34 | 35 | ### 参数说明 36 | 37 | `-h:查看帮助文件。` 38 | 39 | `-i:接需要扫描的CIDR IP段,如192.168.1.1/24。` 40 | 41 | `-t:线程数,不加此参数默认为100。` 42 | 43 | 44 | 45 | ### 运行截图(如果FTP爆出大量弱口令,说明未授权访问或者无密码登录)### 46 | 47 | ![](https://raw.githubusercontent.com/aedoo/Allscanner/master/result.png) 48 | -------------------------------------------------------------------------------- /oracle/oracle.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | 3 | import socket,sys 4 | import cx_Oracle 5 | 6 | def oracleburp(ip,port): 7 | 8 | addr = (ip,int(port)) 9 | 10 | with open('oracle\user.txt') as user: 11 | users = user.readlines() 12 | user.close() 13 | 14 | with open('oracle\pass.txt') as passs: 15 | passwords = passs.readlines() 16 | passs.close() 17 | 18 | sock_1521 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 19 | try: 20 | sock_1521.settimeout(0.5) 21 | sock_1521.connect(addr) 22 | 23 | 24 | for un in users: 25 | un = un.strip() 26 | for pwd in passwords: 27 | pwd = pwd.strip() 28 | try: 29 | conn = cx_Oracle.connect(un, pwd, ip + ':1521/orcl') 30 | sys.stdout.write('%s:%d has Oracle SQL WeakPass, %s:%s\n' % (ip, port, un, pwd)) 31 | except Exception,e: 32 | continue 33 | except: 34 | sock_1521.close() 35 | -------------------------------------------------------------------------------- /postgresql/postgresql.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | import psycopg2 3 | import sys,socket 4 | 5 | def postgreburp(ip,port): 6 | with open('postgresql\user.txt') as user: 7 | users = user.readlines() 8 | user.close() 9 | 10 | with open('postgresql\pass.txt') as passs: 11 | pwds = passs.readlines() 12 | user.close() 13 | 14 | addr = (ip, int(port)) 15 | sock_5432 = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 16 | 17 | try: 18 | sock_5432.settimeout(1) 19 | sock_5432.connect(addr) 20 | except: 21 | sock_5432.close() 22 | 23 | for un in users: 24 | un = un.strip() 25 | for pwd in pwds: 26 | pwd = pwd.strip() 27 | try: 28 | 29 | pgscon = psycopg2.connect(host=ip, port=port, user=un, password=pwd) 30 | sys.stdout.write('%s:%d has PostgreSQL WeakPass, %s:%s\n' % (ip, port, un, pwd)) 31 | except Exception,e: 32 | continue 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /mssql/mssql.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | 3 | import socket,sys 4 | import pymssql 5 | 6 | def mssqlburp(ip,port): 7 | 8 | addr = (ip,int(port)) 9 | 10 | with open('mssql\user.txt') as user: 11 | users = user.readlines() 12 | user.close() 13 | 14 | with open('mssql\pass.txt') as passs: 15 | passwords = passs.readlines() 16 | passs.close() 17 | 18 | sock_1433 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 19 | try: 20 | sock_1433.settimeout(1) 21 | sock_1433.connect(addr) 22 | host = ip + ':' + str(port) 23 | 24 | for un in users: 25 | un = un.strip() 26 | for pwd in passwords: 27 | pwd = pwd.strip() 28 | try: 29 | conn = pymssql.connect(host=host,user=un,password=pwd) 30 | sys.stdout.write('%s:%d has MicroSoft SQL WeakPass, %s:%s\n' % (ip, port, un, pwd)) 31 | except Exception,e: 32 | continue 33 | except: 34 | sock_1433.close() 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /ftp/ftp.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | 3 | import ftplib 4 | import sys,socket 5 | 6 | def ftpburp(ip,port): 7 | 8 | 9 | with open('ftp\user.txt','r') as user: 10 | users = user.readlines() 11 | 12 | with open('ftp\pass.txt','r') as passs: 13 | pwds = passs.readlines() 14 | 15 | user.close() 16 | passs.close() 17 | 18 | addr = (ip, int(port)) 19 | sock_21 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 20 | 21 | try: 22 | sock_21.connect(addr) 23 | # print sock_21.recv(1024) 24 | 25 | for user in users: 26 | user = user.strip() 27 | for password in pwds: 28 | password = password.strip() 29 | try: 30 | ftp = ftplib.FTP() 31 | ftp.timeout = 10 32 | ftp.connect(host=ip, port=int(port)) 33 | ftp.login(user=user,passwd=password) 34 | sys.stdout.write('%s:%d has FTP WeakPass, %s:%s\n' % (ip, port, user, password)) 35 | ftp.close() 36 | 37 | 38 | except Exception,e: 39 | continue 40 | except: 41 | sock_21.close() 42 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | MANIFEST 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | .pytest_cache/ 49 | 50 | # Translations 51 | *.mo 52 | *.pot 53 | 54 | # Django stuff: 55 | *.log 56 | local_settings.py 57 | db.sqlite3 58 | 59 | # Flask stuff: 60 | instance/ 61 | .webassets-cache 62 | 63 | # Scrapy stuff: 64 | .scrapy 65 | 66 | # Sphinx documentation 67 | docs/_build/ 68 | 69 | # PyBuilder 70 | target/ 71 | 72 | # Jupyter Notebook 73 | .ipynb_checkpoints 74 | 75 | # pyenv 76 | .python-version 77 | 78 | # celery beat schedule file 79 | celerybeat-schedule 80 | 81 | # SageMath parsed files 82 | *.sage.py 83 | 84 | # Environments 85 | .env 86 | .venv 87 | env/ 88 | venv/ 89 | ENV/ 90 | env.bak/ 91 | venv.bak/ 92 | 93 | # Spyder project settings 94 | .spyderproject 95 | .spyproject 96 | 97 | # Rope project settings 98 | .ropeproject 99 | 100 | # mkdocs documentation 101 | /site 102 | 103 | # mypy 104 | .mypy_cache/ 105 | -------------------------------------------------------------------------------- /allscanner.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | 3 | #author:aedoo 4 | #github:https://github.com/aedoo 5 | 6 | import threading,Queue 7 | import base64,ipaddr 8 | import argparse 9 | import time 10 | 11 | from redis.redis import redisburp 12 | from mysql.mysql import mysqlburp 13 | from mongodb.mongodb import mongoburp 14 | from ftp.ftp import ftpburp 15 | from postgresql.postgresql import postgreburp 16 | from mssql.mssql import mssqlburp 17 | from memcached.memcached import memcachedburp 18 | from elasticsearch.elasticsearch import elasticburp 19 | from oracle.oracle import oracleburp 20 | from ldapc.ldap import ldapburp 21 | 22 | 23 | class AllScanner(threading.Thread): 24 | def __init__(self,queue): 25 | threading.Thread.__init__(self) 26 | self.queue = queue 27 | 28 | def run(self): 29 | 30 | while True: 31 | if self.queue.empty(): 32 | break 33 | 34 | else: 35 | try: 36 | ip = self.queue.get(timeout=0.5) 37 | 38 | redisburp(ip,6379) 39 | mysqlburp(ip,3306) 40 | mongoburp(ip,27017) 41 | ftpburp(ip,21) 42 | postgreburp(ip,5432) 43 | mssqlburp(ip,1433) 44 | memcachedburp(ip,11211) 45 | elasticburp(ip,9200) 46 | ldapburp(ip,389) 47 | oracleburp(ip,1521) 48 | 49 | except Exception: 50 | continue 51 | 52 | def main(): 53 | 54 | print '' 55 | logo_encode = 'ICAgIF9fXyAgICBfX19fX19fX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgLyAgIHwgIC8gLyAvIF9fXy9fX19fX19fX19fX19fX18gIF9fX18gIF9fXyAgX19fX18KICAvIC98IHwgLyAvIC9cX18gXC8gX19fLyBfXyAgLyBfXyBcLyBfXyBcLyBfIFwvIF9fXy8KIC8gX19fIHwvIC8gL19fXy8gLyAvX18vIC9fLyAvIC8gLyAvIC8gLyAvICBfXy8gLyAgICAKL18vICB8Xy9fL18vL19fX18vXF9fXy9cX19fXy9fLyAvXy9fLyAvXy9cX19fL18v=' 56 | logo = base64.b64decode(logo_encode) 57 | print logo + '\n\n' 58 | print 'github:https://github.com/aedoo/' + '\n\n' 59 | 60 | parser = argparse.ArgumentParser() 61 | parser.add_argument('-i', dest='cidr_ip', help='IP segment like 192.168.1.1/16 contains 65536 IP.') 62 | parser.add_argument('-t', dest='thread_number', type=int, default=100, help='Setting the number of threads') 63 | args = parser.parse_args() 64 | 65 | print '' 66 | 67 | IP_Duan = str(args.cidr_ip) 68 | 69 | try: 70 | IPs = ipaddr.IPNetwork(IP_Duan) 71 | thread_number = args.thread_number 72 | 73 | threads = [] 74 | queue = Queue.Queue() 75 | 76 | for ip in IPs: 77 | queue.put(str(ip)) 78 | 79 | for i in xrange(thread_number): 80 | threads.append(AllScanner(queue)) 81 | 82 | for t in threads: 83 | t.start() 84 | for t in threads: 85 | t.join() 86 | 87 | except Exception: 88 | parser.print_help() 89 | 90 | 91 | if __name__ == '__main__': 92 | 93 | time_start = time.time() 94 | main() 95 | time_all = time.time()-time_start 96 | print 'All Finish. Use %ss' % time_all --------------------------------------------------------------------------------