Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to handle .tar.md5 files

I was wondering about how to create / extract / verify .tar.md5 files. These files are used when flashing images to android devices, see here for example.

As far as I can tell the checksum is appended to the file like this:

cp file.tar file.tar.md5
md5sum file.tar >> file.tar.md5

Firstly I would like to know how to extract the file. Can I simply use tar -xf on the file.tar.md5?

How can I verify the integrity of the file? I would like to remove the last bytes (containing the checksum) from the file to obtain the original file back. I guess you would have to use a regexp to match the checksum file.tar? Is something like this implemented somewhere already?

like image 215
hfhc2 Avatar asked Aug 26 '16 19:08

hfhc2


People also ask

How do I open a tar MD5 file?

In order to select your TAR. MD5 file in Odin, click PDA, navigate to your TAR. MD5 file, and click Open. You will then be able to flash your firmware on your device by clicking Start under "Execution."

How do I unzip a MD5 file?

Download the latest version of WinMD5Free. Extract the downloaded zip and launch the WinMD5.exe file. Click on the Browse button, navigate to the file that you want to check and select it. Just as you select the file, the tool will show you its MD5 checksum.


2 Answers

First of all tar -xf should work since tar continues while it matches its' packing algorithm. If the file stops matching so would tar. Also most archive managers such as 7-zip or winrar will open it if you remove the ".md5". They might print error regarding mismatch with the end of the file, ignore it.

As for verifying the file:

  • print out the stored md5sum: tail -z -n 1 [File name here].tar.md5

  • calculate the md5sum of the tar part of the file: head -z -n -1 [File name here].tar.md5 | md5sum

like image 99
Eli K Avatar answered Sep 23 '22 01:09

Eli K


What works for me with Ubuntu 19.10 is:

  • download single-file 4 GiB zip from sammobile com
  • unzip to several *.tar.md5
  • run the below command-line

.

for F in *.tar.md5; do echo -n "$F " &&
  EXP=($(tail --lines=1 "$F")) &&
  ACT=($(head --lines=-1 "$F" | md5sum)) &&
  if [ ${EXP[0]} = ${ACT[0]} ]; then echo -n "md5ok " &&
  tar --extract --file "$F" && echo "done" 
  else echo "FAIL"; fi; done &&
unlz4 --multiple --verbose *.lz4
AP_G965U1UEU3ARL1_CL14745140_QB21029084_REV01_user_low_ship_MULTI_CERT_meta.tar.md5 md5ok done
BL_G965U1UEU3ARL1_CL14745140_QB21029084_REV01_user_low_ship_MULTI_CERT.tar.md5 md5ok done
CP_G965U1UEU3ARL1_CP11407818_CL14745140_QB21029084_REV01_user_low_ship_MULTI_CERT.tar.md5 md5ok done
CSC_OMC_OYM_G965U1OYM3ARL1_CL14745140_QB21029084_REV01_user_low_ship_MULTI_CERT.tar.md5 md5ok done
HOME_CSC_OMC_OYM_G965U1OYM3ARL1_CL14745140_QB21029084_REV01_user_low_ship_MULTI_CERT.tar.md5 md5ok done
…

But we should all try to get away from bash

like image 31
Harald Rudell Avatar answered Sep 22 '22 01:09

Harald Rudell