资源简介
android镜像system.new.dat解包解压缩sdat2img。
使用说明:需安装python环境,将system.new.dat,system.transfer.list和解压文件放在同一目录下,linux系统下,直接执行.py文件;windows下,直接双击执行.bat文件
代码片段和文件信息
#!/usr/bin/env python
#encoding:utf8
#===============================================================================
# FILE: sdat2img.py
# AUTHOR: luxi78@gmail.com
# CREATED: 2014年12月21日 15时25分15秒 CST
# REVISION: ---
#===============================================================================
import sys
TRANSFER_LIST_FILE = ‘system.transfer.list‘
NEW_DATA_FILE = ‘system.new.dat‘
OUTPUT_IMAGE_FILE = ‘system.img‘
BLOCK_SIZE = 4096
def rangeset(src):
src_set = src.split(‘‘)
num_set = [int(item) for item in src_set]
if len(num_set) != num_set[0]+1:
print ‘Error for parsiing following data to rangeset:\n%s‘ % src
sys.exit(1)
return tuple ([ (num_set[i] num_set[i+1]) for i in range(1 len(num_set) 2) ])
def parse_transfer_list_file(path):
trans_list = open(TRANSFER_LIST_FILE ‘r‘)
version = int(trans_list.readline())
new_blocks = int(trans_list.readline())
for line in trans_list:
line = line.split(‘ ‘)
cmd = line[0]
if ‘0\n‘ == cmd:
print ‘read 0\\n‘
elif ‘erase‘ == cmd:
erase_block_set = rangeset(line[1])
elif ‘new‘ == cmd:
new_block_set = rangeset(line[1])
else:
print ‘Error command %s‘ % cmd
trans_list.close()
sys.exit(1)
trans_list.close()
return version new_blocks erase_block_set new_block_set
def init_output_file_size(output_file_obj erase_block_set):
max_block_num = max(pair[1] for pair in erase_block_set)
output_file_obj.seek(max_block_num*BLOCK_SIZE - 1)
output_file_obj.write(‘\0‘)
output_file_obj.flush()
def main(argv):
version new_blocks erase_block_set new_block_set = parse_transfer_list_file(TRANSFER_LIST_FILE)
output_img = file( OUTPUT_IMAGE_FILE ‘wb‘)
init_output_file_size(output_img erase_block_set)
new_data_file = file(NEW_DATA_FILE ‘rb‘)
for block in new_block_set:
begin = block[0]
end = block[1]
block_count = end - begin
print “Reading %d blocks...“ % block_count
data = new_data_file.read(block_count*BLOCK_SIZE)
print “writing to %d...“ % begin
output_img.seek(begin*BLOCK_SIZE)
output_img.write(data)
print “finish!“
output_img.close()
new_data_file.close()
if __name__ == “__main__“:
main(sys.argv)
- 上一篇:课题设计——科研成果申报管理系统JSP
- 下一篇:SpringBoot实战
相关资源
- android人物行走动画演示
- KBA_EC200UC200_LinuxAndroid_USB_driver_移植说
- android五子棋大作业
- Android adb 1.031 工具
- android studio2.0 jdk1.8
- Android手机防盗软件Java源码
- Android高通MIC增益调试
- android support design library 23.1.1
- Android在surfaceview中显示Dialog和Toast
- Android记事本源码
- android音频解码的源代码适用于音乐播
- android简易个人财务管理系统
- Android-6.0以太网静态IP补丁
- APK加固(JAVA/JNI二种方式动态加载de
- Android服务端和客户端交互源码
- android 简单图片浏览器 学习的好资料
- 用Animation动画实现Android应用的欢迎界
- Android系统模拟触摸按键
-
Android解析xm
l文件 - Android应用源码精致备忘录+课程表项目
- android 幻灯片效果
- zgf游戏框架搭建
- Transparent Proxy.apk
- Android蓝牙连接传输文件Demo
- android动态添加布局,并获得组件的监
- Android自定义显示内容的Dialog
- Android平台的即时通信系统客户端设计
- Android用Canvas画曲线图并动态更新数据
- android学生信息管理软件源代码
- 简易android聊天工具
评论
共有 条评论