#!/usr/bin/env python
# coding=utf-8 import threading
import requests
import Queue
import sys
import re
import time
import warnings
import datetime
import argparse __author__ = 'depycode' warnings.filterwarnings("ignore") #ip to num
def ip2num(ip):
ip = [int(x) for x in ip.split('.')]
return ip[0] << 24 | ip[1] << 16 | ip[2] << 8 | ip[3] #num to ip
def num2ip(num):
return '%s.%s.%s.%s' %((num & 0xff000000) >>24,
(num & 0x00ff0000) >>16,
(num & 0x0000ff00) >>8,
num & 0x000000ff )
#
def ip_range(start, end):
return [num2ip(num) for num in range(ip2num(start), ip2num(end) + 1) if num & 0xff] #
def bThread(iplist): threadl = []
queue = Queue.Queue()
for host in iplist:
queue.put(host) for x in xrange(0, int(SETTHREAD)):
threadl.append(tThread(queue)) for t in threadl:
t.start()
for t in threadl:
t.join() #create thread
class tThread(threading.Thread):
def __init__(self, queue):
threading.Thread.__init__(self)
self.queue = queue def run(self): while not self.queue.empty():
host = self.queue.get(block=False)
try:
checkServer(host)
except:
continue def checkServer(host):
UA = {'user-agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36'}
ports = [80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,8000,8001,8002,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8888,9002,443,873,2601,2604,4848,8008,8880,9999,3128,5432,2049,7001,9200,9871,4440,6082,8099,8649,9000,9090,50000,50030,50070]
#ports = [80,8080]
for k in ports:
try:
if k==443:
aimurl = "https://"+host
#print aimurl
response = requests.get(url = aimurl,headers = UA,verify=False,timeout = 8)
else:
aimurl = "http://"+host+":"+str(k)
#print aimurl
response = requests.get(url = aimurl,headers = UA,timeout = 8)
#print response.headers
status = response.status_code
try:
serverText = response.headers['server']
except:
serverText = ""
try:
titleText = re.findall(r'<title>(.*?)</title>',response.content.decode('utf-8','ignore').encode('utf-8','ignore'))[0]
except:
titleText = "" saveData = {"ip":host,"port":str(k),'aimurl':aimurl,"status":status,"server":serverText,"title":titleText}
print saveData
Data.append(saveData)
except:
pass def cmd():
iplist_a = []
parser = argparse.ArgumentParser(description='GET TITLE .. Author::depycode')
group = parser.add_mutually_exclusive_group() group.add_argument('-i',
action="store",
dest="iprange",
help="useage:: python gettitle.py -i 10.100.1.1-10.100.1.254",
)
group.add_argument('-f',
action="store",
dest="ipfile",
help="usage:: python gettitle.py -f ip.txt",
type=str,
)
args = parser.parse_args()
ipfile = args.ipfile
ip = args.iprange
if ip:
iplist_a = ip_range(ip.split('-')[0], ip.split('-')[1]) elif ipfile:
iplist_tmp = open(ipfile).readlines()
for i in iplist_tmp:
iplist_a.append(i.strip()) else:
parser.print_help()
exit()
return iplist_a def report(data):
t = time.strftime('%Y-%m-%d-%H-%M',time.localtime(time.time()))
f = open('Title'+'-'+str(t)+".html","w+")
table1 = "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'><table border='1'>\n<tr><th>url</th><th>stauts_code</th><th>server</th><th>title</th>\n"
f.write(table1)
for i in data:
rows = "<tr><td><a target='_blank' href='%s'>%s</a></td><td>%s</td><td>%s</td><td>%s</td></tr>\n" %(i['aimurl'],i['ip']+":"+i['port'],i['status'],i['server'],i['title'])
f.write(rows)
table2 = "</table>"
f.write(table2)
f.close() def report2txt(data):
t = time.strftime('%Y-%m-%d-%H-%M',time.localtime(time.time()))
f = open("ip-"+t+".txt","w+")
for i in data:
url = i['aimurl']
f.write(url)
f.write("\n")
f.close() if __name__ == '__main__': global SETTHREAD
global Data
Data = []
starttime = datetime.datetime.now() try:
SETTHREAD = 200 iplist = cmd() print '\n[INFO] Will scan '+str(len(iplist))+" host...\n" bThread(iplist)
except KeyboardInterrupt:
print 'Keyboard Interrupt!'
sys.exit()
report(Data)
report2txt(Data)
endtime = datetime.datetime.now()
print "Finished in "+str((endtime - starttime).seconds)+"S"

  

usage: getTitle.py [-h] [-i IPRANGE | -f IPFILE]

GET TITLE .. Author::depycode

optional arguments:
-h, --help show this help message and exit
-i IPRANGE useage:: python gettitle.py -i 10.100.1.1-10.100.1.254
-f IPFILE usage:: python gettitle.py -f ip.txt

python gettitle.py的更多相关文章

  1. python gettitle v2.0

    #!/usr/bin/env python # coding=utf-8 import threading import requests import Queue import sys import ...

  2. python调用py中rar的路径问题。

    1.python调用py,在py中的os.getcwd()获取的不是py的路径,可以通过os.path.split(os.path.realpath(__file__))[0]来获取py的路径. 2. ...

  3. Python pydoc.py

    1. 查看帮助,我们可以在python命令行交互环境下用 help函数,比如: 查看 math 模块: >>> help('math')Help on built-in module ...

  4. django 1.7之后python manage.py syncdb没有了

    在命令行输入python manage.py createsuperuser按照提示输入即可记得先初始化表. django>1.7 python manage.py makemigrations ...

  5. Python安装mysql-python错误提示python setup.py egg_info

    做python项目,需要用到mysql,一般用python-mysql,安装时遇到错误提示如下: Command "python setup.py egg_info" failed ...

  6. python __init__.py用途

    转自http://www.cnpythoner.com/post/2.html Python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时, ...

  7. python setup.py uninstall

    I have installed a python package with python setup.py install How do I uninstall it? ============== ...

  8. python 运行python manege.py runserver时报错:“no module named djangorestframework” 的解决方案

    python 运行python manege.py runserver时报错:“no module named djangorestframework” 的解决方案 importerror:no mo ...

  9. Python Web.py

    安装Web.py root@bt:~# sudo pip install web.py Downloading/unpacking web.py Downloading web.py-0.37.tar ...

随机推荐

  1. JQ的表单验证

    (function () { $("#but").click(function () { if ($("#name").val() == "" ...

  2. Mysql(windows)安装

    h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...

  3. 解决mysql卸载后无法从新安装,卡在最后一步的问题

    mysql服务出现问题往往是最麻烦的,往往需要重装,而重装很多人卸不干净残留文件,更加装不上.在下就遇到这个问题.重装mysql到最后一步时卡在了最后一步的第二条上 解决办法就是卸载后删注册表+删数据 ...

  4. webView 自适应高度 document.body 属性

    前段时间开发遇到webView 高度自适应问题,用最初的方法无效,找了些资料,记录下. 1.若网页中含有< !DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...

  5. 如何安装Genymotion虚拟机以及Genmotion的eclipse插件

    ---内容开始--- - 首先去genymotion的官网去下载其安装文件 资源下载 Genymotion官网必须注册一个账号这个账号安装之后还有用的,用户名最好用网易126邮箱注册----我下载的是 ...

  6. 基于Python+Django的Kubernetes集群管理平台

    ➠更多技术干货请戳:听云博客 时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调 ...

  7. Java 性能分析工具 , 第 2 部分:Java 内置监控工具

    引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...

  8. 解决ie6下li左浮动文字换行的问题

    问题: 使用li左浮动来自动换行,当父标签剩下宽度不够一个li的宽度时,在ie6中最后一个li中的文字出现换行 解决办法: ul{ white-space:nowrap;} /*强制文字不换行*/

  9. Hadoop技巧(01):插件,终端权限

    阅读目录 序 HDFS权限 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 在ha ...

  10. war 文件打包技巧

    1.首先是工具比如Eclipse很方便了. 2.用winrar之类的工具,把web-info目录,及跟它同级的所有目录及文件,打包成 zip文件就行了,然后把扩展名改成war! 3 Jar命令: 假定 ...