python-portscan

# -*- coding:utf-8 -*- 
#!/user/bin python
#Description: Description 
#Author:      Bing
#Email:       amzing_bing@outlook.com
#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:amazing_bing@outlook.com
# 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:amazing_bing@outlook.com
# 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:amazing_bing@outlook.com
# 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()



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容