设计一个简易使用的Python库

优秀的人,不是不合群,而是他们合群的人里面没有你

很多程序中的代码都存在重复调用,每次都要新建略麻烦,于是打算写一个方便的轮子库,提供友好的指令,实现一行代码检测页面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暂时只想到了这么点,以后应该还需要更多的功能,等想到再继续。

功能实现的话,不好意思暂时还没开始。

坚持原创技术分享,您的支持将鼓励我继续创作!
------ 本文结束 ------

版权声明

LangZi_Blog's by Jy Xie is licensed under a Creative Commons BY-NC-ND 4.0 International License
由浪子LangZi创作并维护的Langzi_Blog's博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证
本文首发于Langzi_Blog's 博客( http://langzi.fun ),版权所有,侵权必究。

0%