使用PayloadDumper-Go提取ROM卡刷包中的分区镜像文件
package main
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"github.com/pavel-paulau/go-qpst/nokia/memory"
)
func main() {
if len(os.Args) != 2 {
fmt.Println("Usage: payload_dumper <payload_file>")
os.Exit(1)
}
payloadFile := os.Args[1]
payloadData, err := ioutil.ReadFile(payloadFile)
if err != nil {
fmt.Printf("Error reading payload file: %s\n", err)
os.Exit(1)
}
// 解析刷包数据
parsedData, err := memory.ParsePayload(payloadData)
if err != nil {
fmt.Printf("Error parsing payload: %s\n", err)
os.Exit(1)
}
// 创建目录存储解压的分区镜像
outputDir := filepath.Join(filepath.Dir(payloadFile), "partitions")
if err := os.MkdirAll(outputDir, 0755); err != nil {
fmt.Printf("Error creating output directory: %s\n", err)
os.Exit(1)
}
// 将每个分区写入文件
for i, part := range parsedData.Parts {
partFileName := filepath.Join(outputDir, fmt.Sprintf("partition_%d.bin", i))
if err := ioutil.WriteFile(partFileName, part, 0644); err != nil {
fmt.Printf("Error writing partition image to file: %s\n", err)
os.Exit(1)
}
}
fmt.Println("Partition images extracted successfully.")
}
这段代码首先检查命令行参数是否正确,然后尝试读取刷包文件。接着,它使用ParsePayload
函数解析文件内容,并创建一个目录来存储解压的分区镜像。最后,它将每个分区写入单独的文件中。如果在任何一步中发生错误,它将打印错误信息并退出程序。
评论已关闭