使用Python打造原創工具的Logo和Help
前言
當我們使用Python完成自己的原創的工具時,比如:埠掃描、弱口令爆破等。你是否想過新增自己的Logo,以及簡要的幫助資訊?
如下:
Sqlmap的Logo

Logo-1.png
Nmap的說明文件

Logo-2.png
本文接下來介紹Linux下的figlet工具,以及Python用於解析命令列引數和選項的標準模組argparse。
Figlet使用
figlet是Linux下的一款工具,用於將輸入的字串輸出為各種奇形怪狀的Logo。可用於撰寫自己的工具後,插入代表著自己原創工具的Logo標識。
安裝
sudo apt-get install figlet
目錄檔案

Logo-3.png
flc為控制檔案,flf為字型模板檔案。
常用語法
figlet AnonySec -f standard.flf
① AnonySec 為我們要生成Logo的字串
② -f standard.flf 為選擇不同風格的模板
效果展示

Logo-4.png
【注:其他使用引數,請自行查閱】
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解密一次,就可以將它輸出至螢幕。
例項效果圖

Logo-5.jpg
附原始碼
# 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 ''