# -*- coding:utf-8 -*-
#!/user/bin python
#Description: Description
#Author: Bing
#Email: [email protected]
#DateTime: 2017-05-10 23:08:39
import multiprocessing
import time
def nmap(msg):
print msg
time.sleep(3)
return "done " + msg
def awvs(msg):
print msg
time.sleep(3)
return "done " + msg
def save(nmap_result):
print nmap_result,"----------------"
if __name__ == "__main__":
pool = multiprocessing.Pool(processes=10)
nmap_msg = "hello %s" %("nmap")
awvs_msg = "hello %s" %("awvs")
result = []
result_nmap = Nmap( scan_id = "tset-4323", scan_target = "www.baidu.com", scan_args = "",back_fn = "" , scan_type = "nmap" )
result.append(pool.apply_async(nmap, (nmap_msg, )))
result.append(pool.apply_async(awvs, (awvs_msg, )))
pool.close()
pool.join()
for res in result:
print res.get(),"*********************"
print "Sub-process(es) done."
#!/user/bin python
# -*- coding:utf-8 -*-
# Author:Bing
# Contact:[email protected]
# DateTime: 2017-01-17 19:06:06
# Description: coding
import sys
sys.path.append("..")
import gevent
from gevent import monkey
from gevent.pool import Pool
monkey.patch_all()
import socket,os,time
from core.settings import *
from core.wukong_fuc import *
class Work(object):
def __init__(self, scan_id = "", scan_target = "", scan_type = "" ,scan_args = "", back_fn = None):
self.pool = Pool(200)
self.timeout = 0.1
self.scan_id = scan_id
self.target = scan_target
self.scan_type = scan_type
self.args = scan_args
self.back_fn = back_fn
self.result = []
def get_port_service(self,text):
service_path = dict_script_path+"nmap-services.txt"
port_server = str(text)+"/tcp"
with open(service_path,"r") as server:
for finger in server.readlines():
port = finger.strip().split(";")[1]
if port == port_server:
fingers = str(finger.strip().split(";")[0])
return (port_server,fingers)
return (port_server,"unknown")
def port_scan(self,port):
target = nessus_target_check(self.target)
if target == False :
return { "status" : 2 , "data" : "NMAP >>>> :格式错误" }
try:
sd = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sd.settimeout(self.timeout)
try:
sd.connect((target,int(port)))
self.result.append(self.get_port_service(port))
except socket.error:
pass
sd.close()
except:
pass
def run(self):
res = []
for port in range(65535):
res.append(port)
self.pool.map(self.port_scan,res)
data = []
for line in self.result:
data.append({ "bug_name" : str(line[0]) ,"bug_summary" : str(line[1]) })
result = { "status" : 1 , "data" : data , "scan_id": self.scan_id , "scan_type": "nmap" }
self.back_fn(result)
#!/user/bin python
# -*- coding:utf-8 -*-
# Author:Bing
# Contact:[email protected]
# DateTime: 2017-01-17 19:06:06
# Description: coding
import socket
from datetime import datetime
from multiprocessing.dummy import Pool as ThreadPool
remote_server_ip = "www.baidu.com"
ports = []
socket.setdefaulttimeout(0.5)
def scan_port(port):
try:
s = socket.socket(2,1)
res = s.connect_ex((remote_server_ip,port))
if res == 0: # 如果端口开启 发送 hello 获取banner
print 'Port {}: OPEN'.format(port)
s.close()
except Exception,e:
print str(e.message)
for i in range(1,65535):
ports.append(i)
# Check what time the scan started
t1 = datetime.now()
pool = ThreadPool(processes = 200)
results = pool.map(scan_port,ports)
pool.close()
pool.join()
print 'Multiprocess Scanning Completed in ', datetime.now() - t1
#这是最高效的一版,20多秒跑完65535端口
#!/user/bin python
# -*- coding:utf-8 -*-
# Author:Bing
# Contact:[email protected]
# DateTime: 2017-01-17 19:06:06
# Description: coding
import sys
sys.path.append("..")
import threading, socket, sys, cmd, os, Queue
from core.settings import *
#线程锁
lock = threading.Lock()
#制作扫描端口队列
def GetQueue(host):
PortQueue = Queue.Queue()
for port in range(1,65535):
PortQueue.put((host,port))
return PortQueue
class ScanThread(threading.Thread):
def __init__(self,SingleQueue,outip):
threading.Thread.__init__(self)
self.setDaemon(True) #设置后台运行,让join结束
self.SingleQueue = SingleQueue
self.outip = outip
def get_port_service(self,text):
service_path = dict_script_path+"nmap-services.txt"
port_server = str(text)+"/tcp"
with open(service_path,"r") as server:
for finger in server.readlines():
port = finger.strip().split(";")[1]
if port == port_server:
fingers = str(finger.strip().split(";")[0])
return (port_server,fingers)
return (port_server,"unknown")
def Ping(self,scanIP, Port):
global OpenPort, lock
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(0.1)
address = (scanIP, Port)
try:
sock.connect(address)
except:
sock.close()
return False
sock.close()
if lock.acquire():
#print "IP:%s Port:%d" % (scanIP, Port)
self.outip.put(self.get_port_service(Port))
lock.release()
return True
def run(self):
while not self.SingleQueue.empty():
#获取扫描队列,并扫描
host,port = self.SingleQueue.get()
self.Ping(host,port)
class Work(object):
def __init__(self, scan_id = "", scan_target = "", scan_type = "" ,scan_args = "", back_fn = None):
self.scan_id = scan_id
self.target = scan_target
self.scan_type = scan_type
self.args = scan_args
self.back_fn = back_fn
self.result = []
def run(self):
ThreadList = []
#扫描队列
SingleQueue = GetQueue(self.target)
#存储结果队列
resultQueue = Queue.Queue()
#启动200线程并发
for i in range(0, 200):
t = ScanThread(SingleQueue,resultQueue)
ThreadList.append(t)
for t in ThreadList:
t.start()
for t in ThreadList:
#需要设置线程为后台,然后没法结束;join等待结束后台线程
t.join(0.1)
data = []
while not resultQueue.empty():
line = resultQueue.get()
data.append({ "bug_name" : str(line[0]) ,"bug_summary" : str(line[1]) })
result = { "status" : 1 , "data" : data , "scan_id": self.scan_id , "scan_type": "nmap" }
self.back_fn(result)
# def save(nmap_result):
# print nmap_result,"----------------"
# t = Work(scan_target = "100tal.org",back_fn = save)
# t.run()