extractor-java 用法备忘录

需要先反编译一下,反编译其实是不能用它里面自带的那个 class2java.py

我这里的建议是自己先用 jd-gui 反编译,然后保存一下,但是如果你的 jar 包特别多,也会生成很多的 zip,这里写一个脚本提取一下

import os
import sys
import zipfile

def unzip_jars_in_directory(base_directory, extract_to_directory):
    # 检查目录是否存在
    if not os.path.exists(base_directory):
        print(f"指定的基础目录不存在: {base_directory}")
        return

    # 检查目标解压缩目录是否存在,如果不存在则创建
    if not os.path.exists(extract_to_directory):
        os.makedirs(extract_to_directory)

    # 获取目录中的所有文件
    files = [f for f in os.listdir(base_directory) if os.path.isfile(os.path.join(base_directory, f))]

    for file in files:
        if file.endswith(".zip"):
            jar_file = os.path.join(base_directory, file)
            extract_dir = os.path.join(extract_to_directory, file[:-4])  # 去掉文件扩展名

            # 检查目录是否已存在,如果存在则跳过
            if os.path.exists(extract_dir):
                print(f"目录已存在,跳过: {extract_dir}")
                continue

            # 创建目录并解压缩JAR包
            os.makedirs(extract_dir)
            print(f"正在解压缩: {file} 到 {extract_dir}")
            with zipfile.ZipFile(jar_file, 'r') as zip_ref:
                zip_ref.extractall(extract_dir)

    print("解压缩完成")

if __name__ == "__main__":
    # 检查命令行参数
    if len(sys.argv) != 3:
        print("用法: python script.py <基础目录> <解压缩目标目录>")
        sys.exit(1)

    base_directory = sys.argv[1]
    extract_to_directory = sys.argv[2]

    unzip_jars_in_directory(base_directory, extract_to_directory)

两个参数,一个是要批量解压缩的目录,另外一个是要保存的目录。

接着反编译结束之后就可以直接用 extractor-java 了,用法,如果你是批量的话

python3 run.py ql /home/ubuntu/Desktop/tools/extractor-java/lib/source -ld /home/ubuntu/Desktop/tools/extractor-java/lib/source

换了 wsl 的

python3 run.py ql /root/tools/extractor-java/lib/source -ld /root/tools/extractor-java/lib/source
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
metadata-extractor是一个开源的Java库,它提供了一种方便的方式来从各种类型的文件中提取元数据。元数据是关于数据的数据,它描述了一份文件的属性、特征和内容。 metadata-extractor库支持从图片、音频、视频和各种文档格式(如PDF和Microsoft Office文档等)中提取元数据。它可以读取文件中的各种元数据信息,包括文件名称、大小、创建日期、修改日期、作者、描述、GPS位置、相机型号、拍摄日期、曝光时间、ISO速度等等。 使用metadata-extractor API非常简单。首先,我们需要将库添加到我们的项目中。然后,我们可以使用Java代码来创建一个Metadata对象,并将文件路径作为参数传递给它。然后,我们可以使用Metadata对象提供的各种方法来获取特定的元数据信息。 例如,如果我们想获取一张图片的拍摄日期和相机型号,我们可以使用如下代码: ``` File file = new File("image.jpg"); Metadata metadata = ImageMetadataReader.readMetadata(file); Directory directory = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class); Date date = directory.getDate(ExifIFD0Directory.TAG_DATETIME); String cameraModel = directory.getString(ExifIFD0Directory.TAG_MODEL); ``` 这段代码首先创建了一个File对象,并将文件路径传递给ImageMetadataReader.readMetadata()方法来读取图片的元数据。然后,它使用getFirstDirectoryOfType()方法来获取ExifIFD0Directory目录,并从中获取拍摄日期和相机型号。 metadata-extractor API还提供了其他方便的方法来获取和解析不同类型文件的元数据。通过使用这个库,我们可以轻松地获取各种文件中的元数据,方便我们在应用程序中进行进一步处理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值