python3实现url全编码/解码

最近在学习SQL注入,绕过方法中有编码注入绕过,需要将关键词进行全编码,百度了一下没有找到全编码工具,所有的编码工具里"and"编码完还是"and",于是查了一下全编码的原理:

其实就是%加上字符的ASCII码十六进制表示方式(先转ASCII编码再转16进制)
例如字母a的ASCII码十六进制表示方式是61,那么a编码过来就是%61

比较简单,但实际需要用的时候,逐个字符去查ASCII码表不太方便,所以自己动手写了一个python脚本自动全编码解码,有需要的童鞋可以拿去用

import os # 导入 os模块

def main():
    clearFlag = "y"
    while(1):
        if clearFlag == "y" or clearFlag == "Y":
            os.system("cls") # 执行cls命令清屏命令行
        clearFlag = ""
        string = input("请输入需要转换的字符串 :")
        type = input("请选择操作类型(1:加密 2:解密) :")
        while(type != "1" and type != "2"):
            type = input("操作类型输入错误,请重新选择(1:加密 2:解密) :")
        if type == "1" :
            encode_string = encode(string) # encode_string=编码
            print("编码结果为:"+encode_string+"
")
        if type == "2" :
            decode_string = decode(string)
            print("解码结果为:"+decode_string+"【请注意前后空格】
")
        clearFlag = input("按Y/y清空屏幕继续:")

#编码
def encode(string):
    encode_string = ""
    for char in string:
        encode_char = hex(ord(char)).replace("0x","%") #先转ASCII编码再转16进制,把0x替换为%
        # 例如 i+=1 == i=i+1;所以 encode_string = encode_string + encode_char 
        encode_string += encode_char # encode_string += 空字符+结果
    return encode_string

#解码
def decode(string):
    decode_string = ""
    # 以%为分隔符
    # %61%6e%64
    # ['%61','%6e','%64']
    #string_arr.pop(0)删除第一个元素
    # ['61','6e','64']
    string_arr = string.split("%") # 以%为分隔符
    string_arr.pop(0)           #删除第一个元素
    for char in string_arr:
        decode_char = chr(eval("0x"+char)) # chr(eval("0x"+ 61.....)),先输出0x61再通过chr转换为ASCII编码
        decode_string += decode_char
    return decode_string

main()
看着就真的看着,不学就真的5
原文地址:https://www.cnblogs.com/k0xx/p/15115103.html