如何使用xxxx.md5文件或如何删除.md5扩展名?

lou*_*xiu 3 mobile android file md5-file

我得到如下文件:

GT-I5500-CSC-SERJK1.tar.md5
Run Code Online (Sandbox Code Playgroud)

这就是我要的:

GT-I5500-CSC-SERJK1.tar 
Run Code Online (Sandbox Code Playgroud)

我怎么才能得到它?我可以删除md5文件扩展名吗?

bel*_*rak 17

据我所知,这是一种在校验和文件上添加校验和的简单方法.由于tar标准声明tar文件的末尾是一行中连续两个空白"条目",因此"tar -x"会忽略该点之后的所有数据.所以android开发社区显然已经采取简单的方式将md5的输出连接到该文件的末尾.

以下bash脚本可用于验证".tar.md5"文件:

#! /bin/bash

check_tar_md5 () {
    local file="${1:?Required: file to check}"
    [[ ! -f "$file" ]] && {
            echo "File not found: $file" >&2
            return 1
    }
    local filename="$(basename "$file")"
    if [ "${filename##*.}" = md5 ]; then filename="${filename%.*}"; fi;
    local md5_line_length=$(printf "%032d *%s\n" 0 "$filename" | wc -c)
    local embedded_md5=$(tail -c $md5_line_length "$file" | ( read md5 rest; echo $md5 ) )
    local actual_md5=$(head -c -$md5_line_length "$file" | md5sum | ( read md5 rest; echo $md5 ) )
    if [ $embedded_md5 = $actual_md5 ]; then
            echo "$file: OK"
    else
            echo "$file: FAILED"
            return 1
    fi
}

[[ ! -z "$1" ]] && check_tar_md5 "$1"
Run Code Online (Sandbox Code Playgroud)

如果您"获取"此脚本,您将在当前环境中使用'check_tar_md5'功能; 否则你就可以执行它; 在任何一种情况下,您都将文件作为唯一参数提供.输出类似于"md5sum --check"实用程序.

使脚本更健壮(例如:如果您提供的文件不是.tar.md5)留给读者练习.


joh*_*aas 8

odin通常使用.tar.md5文件将固件刷新到Android手机.它们本质上是tar压缩的归档,并在末尾附加了md5校验和,因此您可以验证数据是否已损坏.

md5文件通常是md5校验和,但不是在这种特殊情况下.