CTF常用工具之匯總


前言:因為最近在玩一下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注入是真的不會玩呀~~>_<~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM