python实现批量对代码可读化操作,方便逆向分析
本帖最后由 shiquda 于 2023-8-27 22:13 编辑Github项目链接:https://github.com/shiquda/code-readable
code-readable
import os
import json
from cssbeautifier import beautify as css_beautify
from bs4 import BeautifulSoup
from jsbeautifier import beautify as js_beautify
base_dir = r"path\to\your\dir" # 你的文件夹路径
class btf:
def __init__(self, input_file, output_file):
self.input_file = input_file
self.output_file = output_file
def js(self):
with open(self.input_file, "r", encoding='utf-8') as f:
compressed_code = f.read()
uncompressed_code = js_beautify(compressed_code)
with open(self.output_file, "w", encoding='utf-8') as f:
f.write(uncompressed_code)
print(f"处理完成:\t{self.output_file}")
def css(self):
with open(self.input_file, "r", encoding='utf-8') as f:
compressed_code = f.read()
# 使用 css_beautify 格式化 CSS
uncompressed_code = css_beautify(compressed_code)
with open(self.output_file, "w", encoding='utf-8') as f:
f.write(uncompressed_code)
print(f"处理完成:\t{self.output_file}")
def html(self):
with open(self.input_file, "r", encoding='utf-8') as f:
compressed_code = f.read()
soup = BeautifulSoup(compressed_code, 'html.parser')
uncompressed_code = soup.prettify()
with open(self.output_file, "w", encoding='utf-8') as f:
f.write(uncompressed_code)
print(f"处理完成:\t{self.output_file}")
def json(self):
with open(self.input_file, "r", encoding='utf-8') as f:
compressed_code = f.read()
# 不需要将 JSON 字符串转换成对象再转回字符串
uncompressed_code = json.dumps(json.loads(compressed_code), indent=2, ensure_ascii=False)
with open(self.output_file, "w", encoding='utf-8') as f:
f.write(uncompressed_code)
print(f"处理完成:\t{self.output_file}")
def walk_dir(directory):
for root, dirs, files in os.walk(directory):
for file in files:
input_path = os.path.join(root, file)
output_path = os.path.join(root, file)
if file.endswith(".js"):
print(f'正在处理文件:\t{input_path}')
btf(input_path, output_path).js()
elif file.endswith(".css"):
print(f'正在处理文件:\t{input_path}')
btf(input_path, output_path).css()
elif file.endswith(".html"):
print(f'正在处理文件:\t{input_path}')
btf(input_path, output_path).html()
elif file.endswith(".json"):# 添加对 JSON 文件的处理
print(f'正在处理文件:\t{input_path}')
btf(input_path, output_path).json()
else:
print(f'跳过文件:\t{input_path}')
print("所有文件处理完成!")
walk_dir(base_dir)
介绍
本项目可以对指定目录进行批量的代码可读化操作。目前支持以下代码格式:
- `.js`
- `.html`
- `.css`
- `.json`
使用方法
1. 安装依赖
pip install jsbeautifier cssbeautifier beautifulsoup4
2. 修改指向的目录
base_dir = r"path\to\your\dir" # 你的文件夹路径
将此行改为你的目标目录,填在双引号中间
3. 运行脚本
效果展示
前
后
后面的代码可读性较高,方便逆向分析。
PS:本脚本是楼主在逆向分析某浏览器插件的时候顺手写的,批量处理后分析十分方便,有需要的可以使用。如果能顺手给个Star就更好了{:1_905:} 吃橘的皮 发表于 2023-8-28 00:57
emmm,纯路人,为什么不用vscode或者webstorm等编译器/编辑器去格式化一下呢?批处理也能做到吧
VScode编辑器确实可以使用Prettier等插件进行格式化,但是我这个脚本可以遍历目标目录,然后所有支持格式化的文件都会执行一次操作,免得多次操作。
至于您提到的批处理是指直接用批处理来实现这个功能?还是指调用vscode的代码格式化功能?不好意思,我对批处理不是很了解。 本帖最后由 hrh123 于 2023-8-28 01:04 编辑
看起来就是个批量格式化操作{:301_1008:},但还是欢迎原创和开源!{:301_993:}
不过提个建议,requirements.txt不是手打的,虚拟环境的话用pip的freeze语句导出,非虚拟环境可以用第三方库pipreqs实现{:301_997:} emmm,纯路人,为什么不用vscode或者webstorm等编译器/编辑器去格式化一下呢?批处理也能做到吧 hrh123 发表于 2023-8-28 00:55
看起来就是个批量格式化操作,但还是欢迎原创和开源!
不过提个建议,requirements.t ...
感谢大佬,学到了!之前一直没搞懂如何导出 requirements,有的时候还要去全部依赖那边翻来找去 学习了!!!! 感谢分享 真不错,支持 这个有意思,可以正常写完把这个反着用,减少可读性防逆向{:1_918:} 谢谢分享
页:
[1]
2