利用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中的struct模块
Apr 28 Python
使用python3.5仿微软记事本notepad
Jun 15 Python
使用Python对MySQL数据操作
Apr 06 Python
Django实现快速分页的方法实例
Oct 22 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
Nov 17 Python
神经网络(BP)算法Python实现及应用
Apr 16 Python
python使用turtle库绘制树
Jun 25 Python
基于pandas将类别属性转化为数值属性的方法
Jul 25 Python
Python编程图形库之Pillow使用方法讲解
Dec 28 Python
python 爬取学信网登录页面的例子
Aug 13 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 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预定义常量
2006/12/25 PHP
PHP利用imagick生成组合缩略图
2016/02/19 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
Javascript 中的 && 和 || 使用小结
2010/04/25 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
JS脚本defer的作用示例介绍
2014/01/02 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
JS实现拖动滚动条评分的效果代码分享
2016/09/29 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
python开发之字符串string操作方法实例详解
2015/11/12 Python
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
python机器学习之决策树分类详解
2017/12/20 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
Python实现序列化及csv文件读取
2020/01/19 Python
python与pycharm有何区别
2020/07/01 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
行政总监岗位职责
2013/12/05 职场文书
庆祝国庆节标语
2014/10/09 职场文书
车间主任岗位职责
2015/02/03 职场文书
小学德育工作总结2015
2015/05/12 职场文书
培训班开班主持词
2015/07/02 职场文书
十大最帅动漫男主 碓冰拓海上榜,第一是《灌篮高手》男主角
2022/03/18 日漫
MySQL 逻辑备份 into outfile
2022/05/15 MySQL