def before_scan(): while redis_conn.llen("before_scan"): task_unit = json.loads(redis_conn.lpop("before_scan")) task_id = task_unit['task_id'] task_name = task_unit['task_name'] target = task_unit['target'] tag_name = task_unit['tag_name'] scan_init.delay(task_name, task_id, target, tag_name)
def scheduler_bbscan_scan_init(): while redis_conn.llen("BBScan_init"): _ = json.loads(redis_conn.lpop("BBScan_init")) task_name = _["task_name"] task_id = _["task_id"] target = _["target"] tag_name = _["tag_name"] spider_init.delay(task_name, task_id, target, tag_name)
def scheduler_port_scan_second(): while redis_conn.llen("Nmap_Second"): port_object = json.loads(redis_conn.lpop("Nmap_Second")) hostname = port_object['hostname'] ip = port_object['ip'] tag_name = port_object['tag_name'] ports = port_object['ports'] task_name = port_object['task_name'] task_id = port_object['task_id'] if ports: nmap_scan.delay(hostname, ip, ports, task_name, task_id, tag_name)
def scheduler_port_scan_first(): while redis_conn.llen("Task_Port_Scan"): port_object = json.loads(redis_conn.lpop('Task_Port_Scan')) task_name = port_object["task_name"] task_id = port_object["task_id"] tag_name = port_object["tag_name"] hostname = port_object["hostname"] ip = port_object["ip"] ports = port_object["ports"] if ports: # 设置了端口之后,对端口进行扫描 # chain(masscan_scan.s(target, task_name, task_id, ports) | nmap_scan.s()).apply_async() masscan_scan.delay(hostname, ip, task_name, task_id, ports, tag_name)
def scheduler_bbscan_scan_first(): while redis_conn.llen("BBScan_First"): try: http_object = json.loads( redis_conn.lpop("BBScan_First")) # 获取第一步待扫描的内容 scheme = http_object['scheme'] ip = http_object['ip'] port = http_object['port'] header = http_object['banner'].split("\r\n\r\n\r\n")[0] content = http_object['banner'].split("\r\n\r\n\r\n")[1] status_code = http_object['status_code'] task_name = http_object['task_name'] task_id = http_object['task_id'] tag_name = http_object['tag_name'] m = re.search('<title>(.*?)</title>', content) title = m.group(1) if m else '' bbscan_parse_uri.delay(scheme, ip, port, title, content, status_code, header, task_name, task_id, tag_name) except: log.error("scheduler_bbscan_scan_first", exc_info=True)
def scheduler_poc_scan(): while redis_conn.llen("Task_Poc_Scan"): poc_object = json.loads(redis_conn.lpop("Task_Poc_Scan")) task_name = poc_object["task_name"] task_id = poc_object["task_id"] tag_name = poc_object["tag_name"] hostname = poc_object["hostname"] port = poc_object["port"] pocs = poc_object["pocs"] pocs = pocs.split(',') if isinstance(pocs, str) else pocs service = poc_object['service'] # service = poc_object['service'] or 'http' # log.info("subscribe: pocs is %s:%s" % (pocs, type(pocs))) # # try: # service = poc_object['service'] # except: # service = 'http' log.info('target is %s service is %s' % (hostname + ':' + str(port), service)) if service and pocs: # 识别出来的服务,比如http,https for poc in pocs: vuln_scan.delay(hostname, port, service, poc, task_id, task_name, tag_name)