web 端口刺探

web 端口刺探

#coding=utf-8
import requests
from datetime import datetime
from multiprocessing.dummy import Pool as ThreadPool
import socket
import re



def check_webserver(address, port):

        request_string = "GET / HTTP/1.1\r\nHost: %s\r\n\r\n" %address
        # print 'HTTP request:'
        # print '|||%s|||' % request_string
        s = socket.socket()
        s.settimeout(15)
        print "Attempting to connect to %s on port %s" %(address, port)
        try:
            s.connect((address, port))
            s.send(request_string)
            rsp = s.recv(1024)

        except socket.error, e:
            print "Connection to %s on port %s failed: %s" %(address, port, e)
            return False
        finally:
            print "Closing the connection"
            s.close()
        try:
            locationList = re.findall("Location: (.*)", rsp)
            location="/"
            if len(locationList)!=0:
                location +=locationList[0].strip("\r\n").split("/")[-1]
            print("Locatin : %s"% location)
        except:
            pass
        try:
            lines = rsp.splitlines()
            print 'First line of HTTP response: %s' % lines[0]
            version, status, message = re.split(r'\s+', lines[0], 2)
            print 'Version: %s, Stuats: %s, Message: %s' %(version, status, message)
        except ValueError:
            print 'Failed to split status line'
            return False
        if status in ['200', '302',"401"]:
            print 'Success - status was %s' %status
            with open("camera_IP.txt", "a+") as f:
                f.write(address + ":" + str(port) + location+"\n")
                f.close()
            return True
        else:
            print 'Staus was %s' %status
            return False

def scan_camera(ipPort):
        splitData = ipPort.split(":")
        ip = splitData[0]
        port = int(splitData[1])
        if check_webserver(ip,port):
            print"######"*25


# Check what time the scan started
t1 = datetime.now()
ipList=[]
with open("netwave.txt","r") as f:
    for line in f.readlines():
        ipList.append(line.strip("\n"))
print("test")
ports=[]        
for i in range(80,49152):
    ports.append(i)

def  getIpPortList(ipList,port):
    mIpPortList = []
    for ip in ipList:
        mIpPortList.append(ip+":"+str(port))
    return mIpPortList

for port in ports:
    ipPortList=getIpPortList(ipList,port)
    pool = ThreadPool(processes = 8)
    results = pool.map(scan_camera,ipPortList)
    pool.close()
    pool.join()

print 'Multiprocess Scanning Completed in  ', datetime.now() - t1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值