原创小工具 - 可拓展式解密器

原创一个方便测试可连续转换重制的编码转换器,可灵活拓展解码规则

引子

GitHub代码

有的情况下遇到传输工程中的,经常会遇到一些经过编码后的串,我们可以根据自己的经验和调试测试对其进行判断。

他们可能是经过多次编码转换来的,所以每次调试的时候略显麻烦,本着一次开发,长久受益的想法,就着手开发了一个【可拓展式解码器】

需求

  • 解码失败自动回跳到解码之前状态
  • 可连续解码 (比如将 base64 转码后的结果,再进行字节流解压)
  • 可跟踪流式解码(可以查看已进行了哪些解码步骤)
  • 可拓展式,需要自定义解码,在代码尾部添加一个 def 方法即可

效果

使用流程

下载代码

  1. 代码中已默认添加了 bases64 解密、 zlib 解压等简单方法。
  2. 如果要自定义,请在代码下方 Decode 类中添加自己解码的方法格式如下。

    1
    2
    3
    def decode_自定义名(self):
    """对self._key 进行解密操作"""
    self._key = '将解码结果赋值给self._key即可'
  3. Run运行程序,输入需要解码的字符串

  4. 选择对应方式进行转码

  5. 显示解析

添加自定义解密方法

注意:方法命名必须以 decode_开头, 对self._key进行解密操作完之后必须重新赋值给 self._key

1
2
3
def decode_自定义名(self):
"""对self._key 进行解密操作"""
self._key = '将解码结果赋值给self._key即可'

代码实现思路

自动获取自定义解码

采用 MetaClass 方法,自动获取 decode_ 函数开头的方法并解析加入 attrs['__Decode__']

1
2
3
4
5
6
7
8
9
10
11
class TranslationMetaClass(type):
"""Meta 类"""
def __new__(mcs, name, bases, attrs):
count = 0
attrs['__Decode__'] = {}
for k, v in attrs.items():
if 'decode_' in k:
count += 1
attrs['__Decode__'][str(count)] = k
attrs['__TranslationFuncCount__'] = count
return type.__new__(mcs, name, bases, attrs)

待用自定义解码函数

既然我们以 MetaClass 的方式在我们启动程序的时候,获取到了所有 自定义的解密方法,那我们肯定要调用与展示。

1
eval("self.{}()".format(self.__Decode__[choice]))  # 字符串转函数运行