优秀的人,不是不合群,而是他们合群的人里面没有你
很多程序中的代码都存在重复调用,每次都要新建略麻烦,于是打算写一个方便的轮子库,提供友好的指令,实现一行代码检测页面404.一行代码弱口令测试,一行代码自动写日志等等。
API 设计
首先导入
from langzi_hack import *
辅助类
打印
打印输出运行状态,包括输出颜色,输出时间
print_w('lang_hack')
>>>输出白色的 lang_hack 字符串
>>>并且前面有时间 [15:15:47]
>>>并全打印的内容会保存在日志文件中
# 接受一个参数,参数类型为字符串
print_r()
# 红色
print_b()
# 蓝色
print_y()
# 黄色
print_g()
# 绿色
print_langzi()
# 打印出langzi
日志
所有运行状态,异常状态,打印输出都会按照时间保存在日志文件中
log('666啊666')
>>>在当前目录下的log.txt中写入 666啊666
>>>并且写入日志的时候会把时间也写入进去 [2018-09-10 15:18:00]
# 接受一个参数,参数类型为字符串
获取时间
简易获取时间点
time_now = time_time()
返回对象为字符串类型,比如 16:01:35 时分秒
time_now = time_dmy()
# 返回对象为字符串类型,比如: 2018-09-10-15 日月年
time_now = time_dmy_all()
# 返回对象为字符串类型,比如: 2018-09-10-16-00-30 日月年时分秒
写入文本
文本写入,以a+的方式写入
write(file_name='1.txt',text='66666')
>>>会在当前目录下创建一个1.txt文件,文件写入 666666
# 接受两个参数,参数类型都为字符串
# 第一个参数是文件名,第二个是要写入的内容
提供输入值
提供一个输入,可以把文件拖拽进来
raws = raws('请把当前目录文本拖拽进来')
# 接受一个参数,为字符串类型
>>> 提示输入东西,然后把结果变成raws
>>> raws代表的是这个目录文件的文件名
raws = raws('随便输入一个数')
>>> 输入 8,raws代表的就是8
读取文本
将文本内容读取到一个列表当中
urls = url_list('1.txt')
>>>读取1.txt的所有内容,结果保存到变量urls的列表中,结果自动去重复,并且是按照每行的内容分开成元素保存在列表中
# 接受一个参数,字符串类型,为文件名
# 返回对象是一个列表
urll = urls_list('1.txt')
>>>和上面一样,但是没有去重复
执行SQL语句(mysql)
执行sql语句,常用语把数据保存到数据库当中
coon = (host='127.0.0.1',user='root',password='root',port=3306.charset='utf8')
result = coon.mysql_exec(sql='show databases')
>>> print result
# 执行数据库语句,返回对象是一个元祖
# 接受多个参数,类型为字符串和整数类型,为一条SQL语句
# 返回对象是一个元祖
加密
res = hex_decode(data='aaaa')
# hex 加密
res = md5_decode(data'aaaa')
res = bs64_decode(data'aaaa')
res = sha1_decode(data'aaaa')
res = url_decode(data'aaaa')
res = chr_decode(data'aaaa')
res = ord_decode(data'aaaa')
网站类
检测网址WAF
检测网址是否存在防火墙
res = get_url_waf(url = 'http://www.langzi.fun')
# 接受一个参数,类型为字符串,为一个网址
# 返回对象类型是字符串
# 如果检测到WAF就返回WAF名,没有检测到就返回 ''
# 判断的时候 if res == '': 这样的条件就是没检测出是否存在WAF
检测网址CMS
检测网址的cms类型
res = get_url_cms(url='http://www.langzi.fun)
# 接受一个参数,类型为字符串,为一个网址
# 返回对象类型是字符串
# 如果检测到CMS就返回CMS名,没有检测到就返回 ''
# 判断的时候 if res == '': 这样的条件就是没检测出是否存在CMS
检测网址是否404
检测传入的网址是否404页面
res = get_url_404(url = 'http://www.langzi.fun/admin.php')
# 接受一个参数,类型为字符串,为一个网址
# 返回对象为布尔型
# 如果传入的页面是 404 页面,就返回True,不是404页面就返回 False
# 判断的时候 if res == True: 这样的条件就是传入的网址是404页面
检测网址是否存活
检测传入的网址是否存活
res = get_url_is_alive(url = 'http://www.langzi.fun/admin.php')
# 接受一个参数,类型为字符串,为一个网址
# 返回对象为布尔型
# 如果传入的页面是存活页面,就返回True,不是存活页面就返回 False
# 判断的时候 if res == True: 这样的条件就是传入的网址是存活页面
检测备份文件是否存在
检测传入的网址的文件是否存在
res = get_url_backup(url='http://www.langzi.fun/web.rar')
# 接受一个参数,类型为字符串,为一个网址
# 返回对象是一个字符串
# 如果文件存在,就返回 '文件大小:590M'
# 如果不存在就返回 '' 一个空的字符串
# 判断的时候 if res == '': 这样的条件就是不存在备份
网页或文本编码识别
判断网页或者文本的编码格式
res = get_url_encode(data='xxxxadfaadadasza')
# 接受一个参数,类型是字符串,可以是从任何地方获取到的字符串
# 也可以这么写,获取一个网页的编码 res = get_encode(data=requests.get(url='http://www.langzi.fun').content)
# 获取一个本地文本的编码 res = get_encode(data=open('a.txt','r').read())
# 返回对象是类型是字符串,一般有utf-8,gbk,gb2312,cp963等等
获取目标网站内所有友链
如题
res = get_url_link(url='http://www.langzi.fun')
# 接受一个参数,类型为字符串,为一个网址
# 返回对象是一个列表,如果页面没有友链则返回空列表[]
获取目标网址的标题
如题
res = get_url_title(url='http://www.langzi.fun')
# 接受一个参数,类型为字符串,为一个网址
# 返回对象为网站的标题
获取目标网址的所有动态链接
把一个网站内的所有友链提取出来
res = get_url_link(url='http://www.langzi.fun',limit=2)
# 接受两个参数,类型为字符串,为一个网址,后面为整数型,limit表示爬行链接的条数
# 返回对象是一个列表,如果页面没有友链则返回空列表[]
# 比如返回['http://www.langzi.fun/ad.php?=ad','http://www.langzi.fun/aadd?id=5']
IP端口类
网址获取IP地址
网站转换成ip
res = get_ip_address(url='http://www.langzi.fun')
# 接受一个参数,类型是字符串,为一个网址
# 返回对象是一个字符串,为ip地址
检测IP是否存活
检测ip是否存活
res = get_ip_isalive(ip='127.0.0.1')
# 接受一个参数,类型是字符串,为ip地址
# 返回对象是布尔类型
# 如果存活就返回 True ,不存活就返回False
检测IP开放端口
检测ip开放的端口
res = get_ip_openport(ip='127.0.0.1',port=3389)
# 接受两个参数,第一个字符串类型,第二个整数类型
# 返回对象是布尔类型
# 如果目标断就开放就返回 True ,不开放就返回False
向IP的指定端口发送数据
通过socket向端口发送数据包
res = get_ip_send(ip='127.0.0.1',port=21,text='hello word\n')
# 接受三个参数,字符串类型,整数型,字符串类型
# 返回数据为字符串
# 如果端口不开放,或者发送消息失败,就返回错误信息
漏洞类
检测sql注入
移植sqlmap的注入检测功能,进行注入检测
res = get_valu_sql(url='http://www.langzi.fun/ad.php?=ad')
# 接受一个参数,类型为字符串,为一个链接网址
# 如果存在注入会返回 '注入参数:ad 数据库类型:mysql 注入方式:盲注'
# 如果不存在注入返回 '' 空字符串
检测xss
这个先不写
检测弱口令
对常见数据库进行弱口令检测
res = get_brute_mysql(host='127.0.0.1',user='root',password='root',port=3306,db='mysql')
# mysql弱口令检测
# 如果检测成功,返回账号密码 '存在弱口令:账号root|密码root'
不仅仅mysql,还有其他的也是如此
res = get_brute_mssql(server='127.0.0.1', port=1433, user='sa', password='123456')
res = get_brute_postql(host='127.0.0.1', port=5432, user='postgres', password='123456')
res = get_brute_oralce(user='system',password='dba',ip='127.0.0.1:1521/orcl')
res = get_brute_ssh(ip='127.0.0.1',port=22,user='root',password='root')
res = get_brute_ftp(ip='127.0.0.1',port=22,user='root',password='root')
res = get_brute_redis(ip='127.0.0.1',port=6379,password='root')
res = get_brute_mongodb(ip='127.0.0.1',port=27017)
res = get_brute_telnet(ip='127.0.0.1',port=22,user='root',password='123456')
res = get_brute_smb(ip='127.0.0.1',port=445,user='root',password='123456')
构架API暂时只想到了这么点,以后应该还需要更多的功能,等想到再继续。
功能实现的话,不好意思暂时还没开始。