从安卓系统USB升级包里提取system.img、boot.img和recovery.img在内的镜像文件

这篇具有很好参考价值的文章主要介绍了从安卓系统USB升级包里提取system.img、boot.img和recovery.img在内的镜像文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.前言

如果你拿到一个USB升级包,你会发现升级包的结构基本相似。

但是里面并不是直接就有包括system.img、boot.img和recovery.img在内的镜像文件。

如果我们需要在Android手机上获取Magisk。提取内核(boot.img)就至关重要。当然其他镜像根据你的需要也有其他用处。

这时,如果你需要这些镜像文件,怎么做呢?

安卓boot.img提取,Penetration test,linux,运维,服务器,boot.img,安卓镜像

关注 "升级包>update.zip>payload.bin"。我们这篇的博客的目的就是从payload.bin中提取出镜像文件。

2. 环境准备的提取步骤

2.1 下载payload_dumper

打开 

  • GitHub - vm03/payload_dumper: Android OTA payload dumper

获取程序的压缩包解压放置合适的目录

安卓boot.img提取,Penetration test,linux,运维,服务器,boot.img,安卓镜像

2.2 安装库文件 

从压缩包里检查requirements.txt,里面有需要的python库的版本:

protobuf>=3.19.3, <=3.20.1
six>=1.16.0
bsdiff4>=1.1.5

安装指定版本的python库:

D:\zyy\payload_dumper-master\payload_dumper-master>pip install bsdiff4
Collecting bsdiff4
  Downloading bsdiff4-1.2.3-cp39-cp39-win_amd64.whl (18 kB)
Installing collected packages: bsdiff4
Successfully installed bsdiff4-1.2.3


D:\Users\zhangyy\AppData\Local\Programs\Python\Python39\Lib\site-packages\protobuf-python-3.20.1\protobuf-3.20.1>pip install protobuf==3.20.1
Collecting protobuf==3.20.1
  Downloading protobuf-3.20.1-cp39-cp39-win_amd64.whl (904 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 904.1/904.1 kB 202.8 kB/s eta 0:00:00
Installing collected packages: protobuf
Successfully installed protobuf-3.20.1

[notice] A new release of pip available: 22.3.1 -> 23.0.1
[notice] To update, run: python.exe -m pip install --upgrade pip

检查是否都安装成功:

D:\Users\zhangyy\AppData\Local\Programs\Python\Python39\Lib\site-packages\protobuf-python-3.20.1\protobuf-3.20.1>pip lis
t
Package      Version
------------ -------
asgiref      3.5.2
bcrypt       4.0.1
bsdiff4      1.2.3
cffi         1.15.1
cryptography 38.0.4
Django       4.1.3
paramiko     2.12.0
pip          22.3.1
protobuf     3.20.1
pycparser    2.21
PyNaCl       1.5.0
setuptools   56.0.0
six          1.16.0
sqlparse     0.4.3
tzdata       2022.6

OK,都安装成功而且版本合适。

2.3 执行镜像提取

将USB升级包的update.zip解压后拖到payload_dumper.py的同级目录执行


D:\zyy\payload_dumper-master\payload_dumper-master>python payload_dumper.py ota_package_update\payload.bin
Processing abl partition.Done
Processing bluetooth partition.Done
Processing boot partition................................Done
Processing cmnlib partition.Done
Processing cmnlib64 partition.Done
Processing devcfg partition.Done
Processing dsp partition................Done
Processing dtbo partition....Done
Processing hyp partition.Done
Processing imagefv partition.Done
Processing keymaster partition.Done
Processing modem partition....................................................Done
Processing product partition........................................................................................................................Done
Processing qupfw partition.Done
Processing recovery partition................................................Done
Processing rpm partition.Done
Processing system partition............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................Done
Processing tz partition.Done
Processing uefisecapp partition.Done
Processing vbmeta partition.Done
Processing vbmeta_system partition.Done
Processing vendor partition....................................................................................................................................................................................................................................................Done
Processing xbl partition..Done
Processing xbl_config partition.Done

执行完成后查看output目录

安卓boot.img提取,Penetration test,linux,运维,服务器,boot.img,安卓镜像

OK,这样就成功了,是不是很简单。

3. 利用脚本批量提取boot.img

将大量USB升级包放在 E:\store materials\all_firms_bak 目录下。

由于里面文件很多,经过分析,将“ "**" in nm and "ota" not in nm and len(nm) < 56” 作为筛选合适的USB升级包的判断条件。

payload_dumper-master脚本安装在 D:\zyy\payload_dumper-master\payload_dumper-master。

根据这些已知条件,编写python代码如下:


import os
import shutil
import zipfile
import time

count = 0


def extract_img():
    global count
    zip_dir = r"E:\store materials\all_firms_bak"
    for rt, dirs, fl in os.walk(zip_dir, topdown=True):
        for nm in fl:
            # if nm == "boot.img":
            if "**" in nm and "ota" not in nm and len(nm) < 56:
                file_path_name = str(rt) + "\\" + str(nm)
                print("文件:", file_path_name)
                unzip_and_extract_bootimg(file_path_name)

                count = count + 1
                print("bootimg count is:", count)

                # 获取当前时间
                current_time = int(time.time())
                print(current_time)  # 1631186249
                # 转换为localtime
                localtime = time.localtime(current_time)
                # 利用strftime()函数重新格式化时间
                dt = time.strftime('%Y:%m:%d %H:%M:%S', localtime)
                print(dt)  # 返回当前时间:2021:09:09 19:17:29

        # for _dir in dirs:
        # print("目录:", str(rt) + "\\" + str(_dir))


# 解压缩
def unzip_and_extract_bootimg(file_name):
    payload_dumper_path = r"D:\zyy\payload_dumper-master\payload_dumper-master"
    payload_dumper_ota_package_path = r"D:\zyy\payload_dumper-master\payload_dumper-master\ota_package_update/"
    payload_dumper_putput_path = r"D:\zyy\payload_dumper-master\payload_dumper-master\output"

    print("file_name is: ", file_name)
    zip_file = zipfile.ZipFile(file_name)
    if os.path.isdir(file_name + "_files"):
        print("dir already exits! do not need unzip")
    else:
        # 从升级压缩包提取出update.zip子压缩包
        os.mkdir(file_name + "_files")
        filepath_package = file_name + "_files/"
        print("destfilepath is: ", filepath_package)
        zip_file.extractall(path=filepath_package, members=['update.zip'])
        # 打印此时update.zip所在路径
        file_path_updatezip = filepath_package + r"update.zip"
        print("the path of update.zip is: ", file_path_updatezip)
        # 从update.zip里提取payload.bin(payload.bin通过脚本制作出boot.img)
        zip_file_bin = zipfile.ZipFile(file_path_updatezip)
        zip_file_bin.extractall(path=filepath_package + "update/", members=["payload.bin"])
        file_path_payloadbin = filepath_package + r"update/" + r"payload.bin"
        print("file path payloadbin is ", file_path_payloadbin)
        print("close zip_file")
        zip_file.close()
        mycopyfile(file_path_payloadbin, payload_dumper_ota_package_path)
        print("move payload.bin sucess!")
        os.chdir(payload_dumper_path)
        print(os.getcwd())
        ret = os.system(
            "python payload_dumper.py ota_package_update\payload.bin")
        store_bootimg_path = str(file_path_payloadbin).replace("all_firms_bak", "all_boot_test") + r"/"
        if os.path.exists(payload_dumper_putput_path + r"\boot.img"):
            mycopyfile(payload_dumper_putput_path + r"\boot.img", store_bootimg_path)
            os.remove(r"D:\zyy\payload_dumper-master\payload_dumper-master\ota_package_update\payload.bin")
            for f in os.listdir(r"D:\zyy\payload_dumper-master\payload_dumper-master\output"):
                os.remove(os.path.join(r"D:\zyy\payload_dumper-master\payload_dumper-master\output", f))
            time.sleep(3)
            print("extract bootimg completed!")
            return
        else:
            print("boot.img not exits!")


def mycopyfile(srcfile, dstpath):  # 复制函数
    if not os.path.isfile(srcfile):
        print("%s not exist!" % (srcfile))
    else:
        fpath, fname = os.path.split(srcfile)  # 分离文件名和路径
        if not os.path.exists(dstpath):
            os.makedirs(dstpath)  # 创建路径
        shutil.copy(srcfile, dstpath + fname)  # 复制文件
        print("copy %s -> %s" % (srcfile, dstpath + fname))


# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    extract_img()

# See PyCharm help at https://www.jetbrains.com/help/pycharm/

执行结果:

安卓boot.img提取,Penetration test,linux,运维,服务器,boot.img,安卓镜像

只需要半天的时间,脚本成功帮助我们提取了数百个boot.img。

4.总结

        安卓系统USB升级包里其实是有镜像信息的,需要你做一个提取。文章来源地址https://www.toymoban.com/news/detail-780952.html

到了这里,关于从安卓系统USB升级包里提取system.img、boot.img和recovery.img在内的镜像文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • How to boot the Raspberry Pi system from a USB Mass Storage Device All In One

    How to boot the Raspberry Pi system from a USB Mass Storage Device All In One

    如何从 USB 启动树莓派引导系统 / 如何从 USB 大容量存储设备启动 Raspberry Pi 系统 First Stage Bootloader Second Stage Bootloader https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-4-boot-flow https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-4-bootloader-configuration BO

    2024年02月06日
    浏览(34)
  • Postgres报错the database system is in recovery mode

    Postgres报错the database system is in recovery mode

    先说下项目背景 我们是在研发的DMZ环境上部署了我们的多个服务和中间件,为了节省资源,使用的docker部署在同一台物理机上,一个Postgres的服务运行着多个微服务的数据库实例,从某天开始,开发发现在web页面频繁报错,日志如下: 看日志像是数据库的IO报错,随后我通过

    2024年02月10日
    浏览(11)
  • 安卓玩机----解锁system分区 可读写系统分区 magisk面具模块

    安卓玩机----解锁system分区 可读写系统分区 magisk面具模块

    玩机教程----安卓机型解锁system分区 任意修改删除系统文件 参考上个博文可以了解到解锁system分区的有关常识。但目前很多机型都在安卓12  13  基础上。其实最简单的方法就在于刷写一个解锁system分区的第三方补丁包。在面具更新不能解锁系统分区的前提下。我们也可以通过

    2024年02月08日
    浏览(28)
  • 安卓ROM定制 修改必备常识-----初步了解system系统分区文件夹的基本含义 【二】

    安卓ROM定制 修改必备常识-----初步了解system系统分区文件夹的基本含义 【二】

    安卓修改rom 固件 修改GSI 移植rom 必备常识 lib--**so文件基本解析 一起来了解system目录相应文件的用途吧。(rom版本不同里面的app也会不一样) 给大家说下最简单的方法提取img里面的文件,对于后缀img格式的文件可以使用7zip.选择***.img使用7zip打开压缩包方式,可以用于简单提

    2024年02月07日
    浏览(12)
  • 4.正则提取html中的img标签的src内容

    4.正则提取html中的img标签的src内容

    我们以百度贴吧的1吧举例 目录 1  把网页搞下来 2  收集url 3  处理url 4  空的src 5  容错 6  不使用数字作为文件名 7  并不是所有的图片都用img标签表示 8  img标签中src请求下来不一定正确 9  分页   搞下来之后,双击打开是这样的 我们实际拿的就是 img标签中src的内

    2024年02月09日
    浏览(18)
  • win11安装的Ubuntu20.04子系统出现System has not been booted with systemd as init system (PID 1)问题的解决流程

    win11安装的Ubuntu20.04子系统出现System has not been booted with systemd as init system (PID 1)问题的解决流程

    目录 一、前言 二、具体解决方法 第一步:切换root用户至自己账号 第二步:重新安装xrdp 第三步:重新配置端口并启动xrdp 第四步:打开远程连接窗口 第五步:点击连接,开始进入Linux子系统​编辑 第六步:切换到的账户的输入密码,并点击认证  第七步:成功进入Ubuntu20

    2024年02月16日
    浏览(14)
  • linux|操作系统|centos7物理机安装网卡驱动8188gu(内核升级,firmware固件,USB设备管理,module管理)

    linux|操作系统|centos7物理机安装网卡驱动8188gu(内核升级,firmware固件,USB设备管理,module管理)

    目前服务器领域centos7基本是主流的操作系统,而linux相对于Windows来说,软硬件方面的支持是差很多的,在硬件方面来说,以一个免驱的网卡为例,window xp可能不会自动识别到,但Windows10基本都会自动识别到,简简单单的即插即用。根本原因在Windows随着版本的升级,内置的各

    2024年01月20日
    浏览(22)
  • 安卓玩机搞机技巧综合资源------EROFS分区格式 小米红米机型分区类型 刷写recovery方法列举【三】

    安卓玩机搞机技巧综合资源------EROFS分区格式 小米红米机型分区类型 刷写recovery方法列举【三】

    接上篇 安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 【一】 安卓玩机搞机技巧综合资源------开机英文提示解决dm-verity corruption your device is corrupt. 设备内部报错 AB分区等等【二】 💝💝💝💝💝💝💝💝💝 EROFS格式的系统 💝💝💝💝💝💝💝💝💝

    2024年02月08日
    浏览(15)
  • android通过adb命令获取boot.img镜像

    android通过adb命令获取boot.img镜像

    当前系统支持双分区,区a分区boot_a.img如下: 取boot.img 取出来后通过fastboot方式刷机: 参考博客:  Android手机如何提取系统内核(boot.img镜像文件提取)_Mintimate的博客-CSDN博客_安卓boot.img提取

    2024年02月13日
    浏览(14)
  • [Linux打怪升级之路]-system V共享内存

    [Linux打怪升级之路]-system V共享内存

    前言 作者 : 小蜗牛向前冲 名言 : 我可以接受失败,但我不能接受放弃   如果觉的博主的文章还不错的话,还请 点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 本期学习目标:认识什么是 system V共享内存,认识共享内存的接口函数,学会

    2024年02月08日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包