| #!/usr/bin/perl |
| |
| # This script creates the h100sums.h and h300sums.h files for fwpatcher. |
| # |
| # It expects a file tree with scrambled and descrambled |
| # firmwares like this: |
| # orig-firmware/ |
| # h1xx/ |
| # 1.66jp/ |
| # ihp_100.bin |
| # ihp_100.hex |
| # ihp_120.bin |
| # ihp_120.hex |
| # h3xx/ |
| # 1.29jp/ |
| # H300.bin |
| # H300.hex |
| # etc. |
| # |
| # It also expects the bootloader binaries in the current directory: |
| # bootloader-h100.bin |
| # bootloader-h120.bin |
| # bootloader-h300.bin |
| |
| $orig_path = "~/orig-firmware"; |
| |
| mksumfile("100"); |
| mksumfile("120"); |
| mksumfile("300"); |
| |
| sub mksumfile { |
| ($model) = @_; |
| |
| open FILE, ">h${model}sums.h" or die "Can't open h${model}sums.h"; |
| |
| print FILE "/* Checksums of firmwares for ihp_$model */\n"; |
| print FILE "/* order: unpatched, patched */\n\n"; |
| |
| if($model < 300) { |
| foreach("1.63eu","1.63k", "1.63us", "1.65eu","1.65k", "1.65us", |
| "1.66eu", "1.66k", "1.66us", "1.66jp") { |
| `../mkboot $orig_path/h1xx/$_/ihp_$model.bin bootloader-h$model.bin ihp_$model.bin`; |
| `../scramble -iriver ihp_$model.bin ihp_$model.hex`; |
| $origsum = `md5sum $orig_path/h1xx/$_/ihp_$model.hex`; |
| chomp $origsum; |
| ($os, $or) = split / /, $origsum; |
| $sum = `md5sum ihp_$model.hex`; |
| chomp $sum; |
| ($s, $r) = split / /, $sum; |
| print FILE "/* $_ */\n"; |
| print FILE "{\"$os\", \"$s\"},\n"; |
| } |
| } else { |
| foreach("1.28eu", "1.28k", "1.28jp", "1.29eu", "1.29k", "1.29jp", |
| "1.30eu") { |
| `../mkboot -h300 $orig_path/h3xx/$_/H$model.bin bootloader-h$model.bin H$model.bin`; |
| `../scramble -iriver H$model.bin H$model.hex`; |
| $origsum = `md5sum $orig_path/h3xx/$_/H$model.hex`; |
| chomp $origsum; |
| ($os, $or) = split / /, $origsum; |
| $sum = `md5sum H$model.hex`; |
| chomp $sum; |
| ($s, $r) = split / /, $sum; |
| print FILE "/* $_ */\n"; |
| print FILE "{\"$os\", \"$s\"},\n"; |
| } |
| } |
| close FILE; |
| } |