#!/usr/bin/env python
# Version: 0.2.201308040830
# Author: linkscue
# Function: unpack any hauwei honor2 Update.app
# Thanks to McSpoon(zhaoxing-go@163.com)
# 20130411: Modified for alignment to 4 byte boundary by jnjn@163.com
# 20130804: Modified for python3 by atuo @ oschina.net import os
import sys
import struct
from functools import reduce
print("Usage: unpack $huawei_app_file")
try:
sys.argv[1]
except IndexError:
File="UPDATE.APP"
else:
File=sys.argv[1]; verify_code=0xa55aaa55
verify_bin=struct.pack("I",verify_code) print("I: unpack",File)
f=open(File,'rb')
cont=f.read()
f.close() start=0
sub_file=1
search=verify_bin
while True:
index = cont.find(search, start)
if index == -1:
break if ((index) % 4 != 0 ):
print("skipping a 55aa5aa5 at offset: 0x%08xn" % (index))
start = index + 1
else:
packet_addr=cont[index+4:index+8]
data_addr=cont[index+24:index+28]
img_name=cont[index+60:index+76]
packet_size_tuple=struct.unpack("I",packet_addr)
data_size_tuple=struct.unpack("I",data_addr)
packet_size=int(reduce(lambda rst, d: rst * 10 + d, packet_size_tuple))
data_size=int(reduce(lambda rst, d: rst * 10 + d, data_size_tuple))
temp=cont[index+packet_size:index+packet_size+data_size]
filename=str(sub_file)+'_'+img_name.strip(b'x00').decode('ascii')+'.img'
print( "%2d I: verify code found at: 0x%08x, size: %10d bytes, --> %-20s"
% (sub_file,index,data_size,filename) )
f1=open(filename,'wb')
f1.write(temp)
f1.close()
start = index + 1
sub_file += 1

解压华为P6 UPDATE.APP的更多相关文章

  1. 解压Assets.car获取App中的图片资源

    iOS开发时图片资源(png)是放置在Images.xcassets文件夹中进行管理的. 项目归档后就是ipa文件,在ipa文件中,Images.xcassets文件夹的内容放置在了Assets.ca ...

  2. Linux解压和打包jar

    linux 中解压jarunzip XXX.jar -d app 打jar 进入到解压目录里面(app)jar cvfm0 MR-XDR-JMR-NEW.jar META-INF/MANIFEST.M ...

  3. 【转】JAVA解压.TAR.Z及.ZIP文件

     解压.ZIP文件 package app.qdupr.Method; import java.io.File; import java.io.FileOutputStream; import jav ...

  4. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  5. 解压 Android 系统中的 system.img

    本篇文章讲解 system.img 是什么东西,以及它的打包和解包方式 system.img 是什么 system.img 是 Android 系统中用来存放系统文件的镜像 (image) ,文件格式 ...

  6. 解构华为云HE2E项目中的容器技术应用

    摘要:本文从容器技术应用的角度解构了HE2E项目的代码仓库配置.镜像构建.及docker-compose的部署方式.希望通过本篇文章分享可以使更多的开发者了解容器技术和华为云. 本文分享自华为云社区& ...

  7. Winserver2012下mysql 5.7解压版(zip)配置安装

    一.安装 下载mysqlzip版本mysql不需要运行可执行文件,解压即可,下载zip版本mysqlmsi版本mysql双击文件即可安装,相对简单,本文不介绍此版本安装 配置环境变量打开环境变量配置页 ...

  8. ICSharpCode.SharpZipLib 压缩、解压文件 附源码

    http://www.icsharpcode.net/opensource/sharpziplib/ 有SharpZiplib的最新版本,本文使用的版本为0.86.0.518,支持Zip, GZip, ...

  9. MySQL解压版配置步骤

    mysql-5.7.14-winx64\bin配置到Path中 在解压路径下复制my-default.ini,修改名称为my.ini 在my.ini添加如下 [mysqld] basedir=C:\\ ...

随机推荐

  1. SQL打印全年日历

    数据库环境:SQL SERVER 2008R2 我之前有写过打印本月日历的SQL,里头有详细的说明.具体请参考前面的博文——生成本月日历. 全年日历只是在本月日历的基础上加了月信息,并按月份分组求得. ...

  2. Repeater 动态增加删除一行

    文章参考:文章参考http://www.cnblogs.com/dataadapter/archive/2012/06/25/2562885.html 效果: 前台代码: <%@ Page La ...

  3. Java中报错No enclosing instance of type caiquan is accessible. Must qualify the allocation with an enclosing instance of type caiquan (e.g. x.new A() where x is an instance of caiquan).

    package test;import java.util.Scanner;import java.util.Random;public class caiquan { public static v ...

  4. Codeforces 553D Nudist Beach(图论,贪心)

    Solution: 假设已经选了所有的点. 如果从中删掉一个点,那么其它所有点的分值只可能减少或者不变. 如果要使若干步删除后最小的分值变大,那么删掉的点集中肯定要包含当前分值最小的点. 所以每次删掉 ...

  5. Bad owner or permissions on .ssh/config

    Bad owner or permissions on $HOME/.ssh/config The ssh with RHEL 4 is a lot more anal about security ...

  6. MOOC即Massive Open Online Course的缩写

    A man can succeed at almost anything for which he was unlimited enthusiasm. 只要有无限的热情,一个人几乎可以在任何事情上取得 ...

  7. [CSS]cursor鼠标样式

     用css控制鼠标样式的语法如下: <span style="cursor:*">文本或其它页面元素</span>  把 * 换成如下15个效果的一种:   ...

  8. PHP substr截取中文字符出现乱码的问题解疑

    我们在使用PHP substr截取中文字符的时候,经常会出现乱码的情况,导致程序无法正常运行,这时怎么引起的呢?通过分析,我们知道,主要是substr可能硬生生的将一个中文字符“锯”成两半.解决办法: ...

  9. 帝国cms 灵动标签【列表页】调用当前父栏目下的所有子栏目

    <? $bclassid = $class_r[$GLOBALS[navclassid]][bclassid]; //获取当前父栏目ID ?> [e:loop={"select ...

  10. __name__ == '__main__'的作用

    当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个 ...