利用Python实现原创工具的Logo与Help


Posted in Python onDecember 03, 2018

前言

当我们使用Python完成自己的原创的工具时,比如:端口扫描、弱口令爆破等。你是否想过添加自己的Logo,以及简要的帮助信息?

如下:

Sqlmap的Logo

利用Python实现原创工具的Logo与Help

Nmap的说明文档

利用Python实现原创工具的Logo与Help

本文接下来介绍Linux下的figlet工具,以及Python用于解析命令行参数和选项的标准模块argparse。

Figlet使用

figlet是Linux下的一款工具,用于将输入的字符串输出为各种奇形怪状的Logo。可用于撰写自己的工具后,插入代表着自己原创工具的Logo标识。

安装

sudo apt-get install figlet

目录文件

利用Python实现原创工具的Logo与Help

flc为控制文件,flf为字体模板文件。

常用语法

figlet AnonySec -f standard.flf

① AnonySec 为我们要生成Logo的字符串

② -f standard.flf 为选择不同风格的模板

效果展示

利用Python实现原创工具的Logo与Help

【注:其他使用参数,请自行查阅】

Argparse模块使用

argparse是python用于解析命令行参数和选项的标准模块,向原创工具中加入帮助信息,编写可读性非常好的程序。
大家对linux下的工具一定有印象吧,使用- -help查看帮助文档。此模块正是打造这样的帮助文档。

导入模块

from argparse import ArgumentParser

可以直接import argparse,只不过写代码的时候比较麻烦。

实例化对象

parser = ArgumentParser()

实例化一个ArgumentParser类的对象

添加说明文档

parser.add_argument("-i", dest="ip", help="Please enter the ip,for example 192.168.1.1")

上述这行代码的add_argument()方法是向parser中添加。

① -i   输入时紧跟此参数的一个字符串为此参数的值

② dest=“ip”   将 -i 后面的字符串赋值给 ip

③ help=“******”   此参数的说明信息

parser.add_argument("-t", dest="thread_count", type=int, default=100, help="Please enter the thread number")

① type=“int”   此参数的默认类型为int型

② default=100   当不输入此参数时,此参数默认为100

赋值

args = parser.parse_args()

将上述添加的参数进行赋值。

完整代码

parser = ArgumentParser()
parser.add_argument("-i", dest="ip", help="Please enter the ip,for example 192.168.1.1")
parser.add_argument("-t", dest="thread_count", type=int, default=100, help="Please enter the thread number")
args = parser.parse_args()

print 'The ip is: %s .' %args.ip
print 'The thread number is: %s .' %args.thread_count

print是用来测试是否赋值成功。若赋值成功,就可以调用args.ip与args.thread_count来使用了。

【注:其他使用参数,请自行查阅】

附:Base64-Logo

logo_code = 'ICAgIF8gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19fXyAgICAgICAgICAgIAogICAvIFwgICBfIF9fICAgX19fICBfIF9fICBfICAgXy8gX19ffCAgX19fICBfX18gCiAgLyBfIFwgfCAnXyBcIC8gXyBcfCAnXyBcfCB8IHwgXF9fXyBcIC8gXyBcLyBfX3wKIC8gX19fIFx8IHwgfCB8IChfKSB8IHwgfCB8IHxffCB8X19fKSB8ICBfXy8gKF9fIAovXy8gICBcX1xffCB8X3xcX19fL3xffCB8X3xcX18sIHxfX19fLyBcX19ffFxfX198CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxfX18vCgpQb3dlcmVkIGJ5IEFub255U2VjCkJsb2cnczogaHR0cDovL3d3dy5hbm9ueXNlYy5jbg=='
logo = base64.b64decode(logo_code)
print logo

logo_code是事先使用base64加密过的,目的是让Logo的嵌入不显得那么突兀。只需要base64解密一次,就可以将它输出至屏幕。

实例效果图

利用Python实现原创工具的Logo与Help

附源码

# coding:utf-8
# powered by AnonySec

import base64
from argparse import ArgumentParser

logo_code = 'ICAgIF8gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19fXyAgICAgICAgICAgIAogICAvIFwgICBfIF9fICAgX19fICBfIF9fICBfICAgXy8gX19ffCAgX19fICBfX18gCiAgLyBfIFwgfCAnXyBcIC8gXyBcfCAnXyBcfCB8IHwgXF9fXyBcIC8gXyBcLyBfX3wKIC8gX19fIFx8IHwgfCB8IChfKSB8IHwgfCB8IHxffCB8X19fKSB8ICBfXy8gKF9fIAovXy8gICBcX1xffCB8X3xcX19fL3xffCB8X3xcX18sIHxfX19fLyBcX19ffFxfX198CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxfX18vCgpQb3dlcmVkIGJ5IEFub255U2VjCkJsb2cnczogaHR0cDovL3d3dy5hbm9ueXNlYy5jbg=='
logo = base64.b64decode(logo_code)
print logo
print ''

parser = ArgumentParser()
parser.add_argument("-i", dest="ip", help="Please enter the ip,for example 192.168.1.1")
parser.add_argument("-t", dest="thread_count", type=int, default=100, help="Please enter the thread number")
args = parser.parse_args()
#parser.print_help()

print 'The ip is: %s .' %args.ip
print 'The thread number is: %s .' %args.thread_count
print ''

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
使用Python脚本来控制Windows Azure的简单教程
Apr 16 Python
Python中__new__与__init__方法的区别详解
May 04 Python
python实现图片变亮或者变暗的方法
Jun 01 Python
python实现图片彩色转化为素描
Jan 15 Python
用Python解决x的n次方问题
Feb 08 Python
python爬虫实现中英翻译词典
Jun 25 Python
python 整数越界问题详解
Jun 27 Python
Python学习笔记之列表推导式实例分析
Aug 13 Python
Python3 chardet模块查看编码格式的例子
Aug 14 Python
对python中的装包与解包实例详解
Aug 24 Python
keras获得model中某一层的某一个Tensor的输出维度教程
Jan 24 Python
Python 中的pygame安装与配置教程详解
Feb 10 Python
对pycharm 修改程序运行所需内存详解
Dec 03 #Python
浅谈pycharm下找不到sqlalchemy的问题
Dec 03 #Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
Dec 03 #Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 #Python
Python实现的特征提取操作示例
Dec 03 #Python
解决python3 Pycharm上连接数据库时报错的问题
Dec 03 #Python
Python检查和同步本地时间(北京时间)的实现方法
Dec 03 #Python
You might like
PHP中文乱码解决方案
2015/03/05 PHP
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
JS设置随机出现2个数字的实例代码
2017/07/19 Javascript
Puppet的一些技巧
2018/09/17 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
echarts饼图各个板块之间的空隙如何实现
2020/12/01 Javascript
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
Django中url的反向查询的方法
2018/03/14 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
Python实现最常见加密方式详解
2019/07/13 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
说出数据连接池的工作机制是什么?
2013/04/19 面试题
毕业生自我鉴定
2013/11/05 职场文书
QQ空间主人寄语大全
2014/04/12 职场文书
给校长的建议书200字
2014/05/16 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
小学语文教学反思范文
2016/03/03 职场文书
节约用水广告语60条
2019/11/14 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android