BaseCrack 是一个用 Python 编写的工具,可以解码所有字母数字 Base 编码方案。该工具可以接受单个用户输入、来自文件的多个输入、来自参数的输入、多重编码的 Base、图像 EXIF 数据中的 Base、使用 OCR 识别图像上的 Base,并且解码速度非常快。
基本演示可尝试 Web 界面,它使用了 BaseCrack 的 API。
$ git clone https://github.com/mufeedvh/basecrack.git
$ cd basecrack
$ pip3 install -r requirements.txt
$ python3 basecrack.py -h
注意: 建议使用 Python3!
Linux:
$ sudo apt-get update
$ sudo apt-get install tesseract-ocr libtesseract-dev
MacOS:
$ brew install tesseract
Windows:
OCR 检测通过 Tesseract 实现,Windows 需要安装 Tesseract 可执行文件。从 requirements.txt 安装依赖(其中包括 pytesseract)应能完成安装。如果未成功,可按以下步骤设置:
Program Files/Program Files (x86) 下的 Tesseract-OCR 目录中是否已安装。config.json 中填写该路径即可!如果未安装,请从此处下载安装,并在 config.json 中设置路径。Tesseract 文档: https://tesseract-ocr.github.io/
注意: 我尚未在 Windows 上完整测试此工具,如遇到任何问题,请提交 issue。
获取所有参数的列表:
python3 basecrack.py -h
从用户输入解码单个 Base 编码:
python3 basecrack.py
从参数 (-b/--base) 解码单个 Base 编码:
python3 basecrack.py -b SGVsbG8gV29ybGQh
从文件解码多个 Base 编码 (-f/--file):
python3 basecrack.py -f file.txt
魔法模式: 解码任意模式的多重编码 Base (-m/--magic):
python3 basecrack.py --magic
输入图像用于 EXIF/OCR 检测模式 (-i/--image):
python3 basecrack.py -i image.jpg (--exif/--ocr)
EXIF 数据: 解码图像 EXIF 数据中的 Base (-e/--exif):
python basecrack.py -i image.jpg --exif
OCR Base 检测: 使用 OCR 检测解码图像上的 Base (-c/--ocr):
python basecrack.py -i image.jpg --ocr
生成解码后 Base 的字典/输出文件 (-o/--output):
python basecrack.py -f file.txt -o output-wordlist.txt
现在你可以一次性解码任意模式的多重编码 Base 了。
是否曾遇到过一个无聊的 CTF 挑战,它给你一个编码字符串,这个字符串被反复用 Base64、Base91、Base85 等编码?只需把它交给 BaseCrack,你就搞定啦!;)
想试试吗?只要输入以下内容:
IX(Fp@nNG6ef<,*TFE]IT^zdINAb9EVbp,e<u=O6nN)/u+MTnU;Fo#VvQ&cK;mLZI#Jbdook<O{W#+gY%ooe#6pTkTa.9YPU8Uc=pl9BhSM9%kISw2k:8..u/6F2BwNndPZ2o#7NHNP3g,HlZu><*[Nv+T8
效果自己看吧!:)
BaseCrack 现在可以作为库使用!只需导入 BaseCrack() 类并调用 decode() 函数。
参见 API。
想将 BaseCrack 用作库吗?我们已经为你准备好了!
只需将 basecrack 放在你的项目目录中,即可开始使用!
示例:
# 从 basecrack.py 导入 BaseCrack 类
from basecrack import BaseCrack
# 调用 API 函数 decode(),传入编码后的 Base
result = BaseCrack().decode('c3BhZ2hldHRp')
# 输出结果
"""
result 是一个元组,其中:
result[0] = 解码后的字符串
result[1] = 编码方案
"""
print('解码后的字符串: {}'.format(result[0]))
print('编码方案: {}'.format(result[1]))
输出:
解码后的字符串: spaghetti
编码方案: Base64
贡献方式:
在提交 PR 之前,请通过运行测试确保一切正常:
单元测试:(感谢 @FavasM)
python3 -m unittest discover -v -s tests
基于 MIT 许可证发布,详情参见 LICENSE。