Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # create enviroment
- rm -r working_dir
- mkdir working_dir
- extract_part() {
- echo -e "\nExtract $2 from $1 (offset $3, size $4)"
- dd if=$1 of=$2 bs=1 skip=$(($3)) count=$(($4))
- }
- extract_part "firmware.bin" "working_dir/u-boot.bin" 0 0x50000
- extract_part "firmware.bin" "working_dir/uimage.bin" 0x50000 0x50040
- # need to know full file size: 'wc -c < FILENAME' -> 0x400000
- extract_part "firmware.bin" "working_dir/main_container.lzma" 0x50040 4194304-0x50040
- # extract compressed main_container
- lzma -d < working_dir/main_container.lzma > working_dir/main_container_extracted.bin
- # divide main_container into parts
- extract_part "working_dir/main_container_extracted.bin" "working_dir/main_container_header.bin" 0 0x47A000
- extract_part "working_dir/main_container_extracted.bin" "working_dir/main_container_filesystem.xz" 0x47A000 2122764 # value found manually by removing byte after byte till getting no error from 7z
- # decompress root of main_container
- cd working_dir/
- 7z e -y main_container_filesystem.xz
- cd ..
- # unpack root CPIO
- rm -r extracted_root
- mkdir extracted_root
- cd extracted_root
- cpio --extract --make-directories --preserve-modification-time --no-absolute-filenames < ../working_dir/main_container_filesystem
- #cpio --extract --make-directories --pass-through --preserve-modification-time --no-absolute-filenames < ../working_dir/main_container_filesystem
- cd ..
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement