前言:因為最近在玩一下CTF(sql注入是真的不會玩呀?(T_T) (T_T) )所以經常會用到一些像什么進制轉換呀?base64 32 16編碼解碼呀?當然這些工具網上都有!但是每次都打開網頁 總是感覺很麻煩所以就萌生了一個想法能不自己寫一個腳本把這些功能集合在一起!就像kali里面的工具一樣!這樣的話想用的時候豈不是很方便?所以從昨天下午開始寫到今天上午中午終於把這個工具腳本寫完了!我們先看一下預覽圖
當然這里只是集成我自己常用的一些功能!如果你們需要擴容也是非常容易的,
(1) 首先說一下這個腳本需要的包
import hashlib
import base64
from urllib import quote,unquote
import argparse
此工具需要運行在python3的環境下
(2) 下面就是代碼部分,里面有詳細的注釋,如果還是看不懂代碼里面有我的QQ
#-*- coding:utf-8 -*- import hashlib import base64 from urllib import quote,unquote import argparse """ 名字:CTF之常用工具匯總 作者:白貓 時間:2018-3-22 QQ :1058763824 """ def menu(): usage = """-m MD5 encryption -s SH1 encryption -h Show help information -b64 Base64 encode -b32 Base32 encode -b16 Base16 encode -db64 Base64 decode -db32 Base32 decode -db16 Base16 decode -urlen URL encode -urlde URL decode -bin Binary To Decimal -octal Octal to Decimal -hex Hexadecimal to Decimal -dbin Decimal To Binary -doctal Decimal to Octal -dhex Decimal to Hexadecimal -ord Letter To ASCII Example -ord asdfasfa -ord='dfafs afasfa asfasf' -chr ASCII To Letters Example -chr 105 -chr = '102 258 654' """ #在使用ord 和chr命令的時候要注意如果輸入的字符和數字不包含空格則直接實用例子前面的命令如果包含空格則使用后面的命令 parser = argparse.ArgumentParser() parser.add_argument('-m',dest='md',help='MD5 encryption') parser.add_argument('-s', dest='sh', help='SH1 encryption') parser.add_argument('--h',action="store_true",help='Show help information') parser.add_argument('-b64', dest='b64', help='Base64 encode') parser.add_argument('-b32', dest='b32', help='Base32 encode') parser.add_argument('-b16', dest='b16', help='Base16 encode') parser.add_argument('-db64', dest='db64', help='Base64 decode') parser.add_argument('-db32', dest='db32', help='Base32 decode') parser.add_argument('-db16', dest='db16', help='Base16 decode') parser.add_argument('-urlen', dest='urlen', help='URL encode') parser.add_argument('-urlde', dest='urlde', help='URL decode') parser.add_argument('-bin', dest='bin', help='Binary To Decimal') parser.add_argument('-octal', dest='octal', help='Octal to Decimal') parser.add_argument('-hex', dest='hex', help='Hexadecimal to Decimal') parser.add_argument('-dbin', dest='dbin', help='Decimal To Binary ') parser.add_argument('-doctal', dest='doctal', help='Decimal to Octal ') parser.add_argument('-dhex', dest='dhex', help='Decimal to Hexadecimal') parser.add_argument('-ord', dest='ord', help="Letter To ASCII Example -ord aaaaaa , -ord=\"aaa aaa\"") parser.add_argument('-chr', dest='chr', help="ASCII To Letter Example -chr 105 , -chr = \"101 101\" ") options = parser.parse_args() if options.md: s = options.md md5(s) elif options.sh: s = options.sh sh1(s) elif options.b64: s = options.b64 stringToB64(s) elif options.b32: s = options.b32 stringToB32(s) elif options.b16: s = options.b16 stringToB16(s) elif options.db64: s = options.db64 b64ToString(s) elif options.db32: s = options.db32 b32ToString(s) elif options.db16: s = options.db16 b16ToString(s) elif options.urlen: s = options.urlen urlEncode(s) elif options.urlde: s = options.urlde urlDecode(s) elif options.bin: s = options.bin binToDec(s) elif options.octal: s = options.octal octToDec(s) elif options.hex: s = options.hex hexToDec(s) elif options.dbin: s = options.dbin decToBin(s) elif options.doctal: s = options.doctal decToOct(s) elif options.dhex: s = options.dhex decToHex(s) elif options.doctal: s = options.doctal decToOct(s) elif options.dhex: s = options.dhex decToHex(s) elif options.ord: s = options.ord lettToASCII(s) elif options.chr: s = options.chr asciiToLett(s) else: helpInfo() def helpInfo(): print(""" -m MD5 encryption -s SH1 encryption --h Show help information -b64 Base64 encode -b32 Base32 encode -b16 Base16 encode -db64 Base64 decode -db32 Base32 decode -db16 Base16 decode -urlen URL encode -urlde URL decode -bin Binary To Decimal -octal Octal Decimal to Decimal -hex Hexadecimal to Decimal -dbin Decimal To Binary -doctal Decimal to Octal -dhex Decimal to Hexadecimal -ord Letter To ASCII attention Example -ord asdfasfa -ord="dfafs afasfa asfasf" -chr ASCII To Letters Example -chr 105 -chr = "102 258 654" """) # 進行MD5加密 def md5(s): original = s md = hashlib.md5() s = s.encode(encoding = 'utf-8') md.update(s) print('Original:'+original) print('Md5 Encryption:'+md.hexdigest()) #進行sh1加密 def sh1(s): original = s sh = hashlib.sha1() s = s.encode(encoding='utf-8') print('Original:' + original) print('SH1 Encryption:' + sh.hexdigest()) #將字符串轉換為base64編碼格式 def stringToB64(s): encode = base64.b64encode(s) print('Original:' + s) print('Base64 encode:' + encode) #將base64編碼格式轉化為正常的字符類型 def b64ToString(s): decode = base64.b64decode(s) print('Base64:' + s) print('Base64 decode:' + decode) #將字符串轉為b32編碼格式 def stringToB32(s): encode = base64.b32encode(s) print('Original:' + s) print('Base32 encode:' + encode) #將base32編碼格式轉化為正常的字符類型 def b32ToString(s): decode = base64.b32decode(s) print('Base32:' + s) print('Base32 decode:' + decode) # 將字符串轉為base16編碼格式 def stringToB16(s): encode = base64.b16encode(s) print('Original:' + s) print('Base16 encode:' + encode) # 將base16編碼格式轉化為正常的字符類型 def b16ToString(s): decode = base64.b16decode(s) print('Base16:' + s) print('Base16 decode:' + decode) #進行url編碼 def urlEncode(s): encode = quote(s) print('Original:' + s) print('URL encode:' + encode) #進行url編碼 def urlDecode(s): decode = unquote(s) print('URL encode:' + s) print('URL decode:' + decode) #將二進制轉化為十進制 def binToDec(s): result = int(s,2) print('Binary :'+str(s)) print('Decimal :' + str(result)) # 將八進制轉化為十進制 def octToDec(s): result = int(s, 8) print('Octal :' + str(s)) print('Decimal :' + str(result)) # 將十六進制轉化為十進制 def hexToDec(s): result = int(s, 16) print('Hex :' + str(s)) print('Decimal :' + str(result)) # 將十進制轉化為二進制 def decToBin(s): s = int(s) result = bin(s) print('Decimal:' + str(s)) print('Binary:' + str(result)) # 將十進制轉化為八進制 def decToOct(s): s = int(s) result = oct(s) print('Decimal :' + str(s)) print('Octal :' + str(result)) # 將十進制轉化為十六進制 def decToHex(s): s = int(s) result = hex(s) print('Decimal :' + str(s)) print('Hex :' + str(result)) #將字母轉化為對應的ASCII def lettToASCII(s): print('Letters:'+s) result = '' for i in s: result = result+str(ord(i)) + ' ' print('ASCII :'+result) #將ASCII轉化為對應的字母以及字符 def asciiToLett(s): list=s.split(' ') result = '' print('ASCII :'+s) for i in list: i = int(i) result =result + chr(i) print('Letters :'+result) if __name__=='__main__': menu()
(3) 下面貼幾張工具使用圖
圖一ASCII與字符之間的轉換圖
圖二 ,十進制與其他進制之間的轉換圖
后言:該工具的擴展性還是非常強的!你們完全可以根據自己的需要在里面加一些經常用到的功能!
哎。。。要回去看sql注入的文章了!sql注入是真的不會玩呀~~>_<~~