Files
2026-08-24 10:03:24 +08:00

51 lines
943 B
Bash
Executable File

#!/bin/bash
meta_size=272
meta_cnt=2
crc_offset=1020
hdr_size=4096
Usage() {
echo "Usage: $0 < input > output"
}
calc_CRC() {
hex_str=${1}
crc=0x1ad7bc43
for ((i=0;i<${#hex_str};i+=8)); do
hex=${hex_str:${i}:8}
hex=${hex:6:2}${hex:4:2}${hex:2:2}${hex:0:2}
crc=$(($crc + 0x$hex))
done
echo $crc
}
gen_header() {
meta=`dd bs=1 status=none | xxd -p`
meta=${meta//[[:space:]]/}
#echo ${meta}
#echo ${#meta}
if [ ${#meta} != $((${meta_size} * ${meta_cnt} * 2)) ]; then
echo "Error: Input data size error."
return
fi
crc=$(calc_CRC ${meta})
crc=$(printf "%x" $crc)
crc=${crc:(-8)}
crc=${crc:6:2}${crc:4:2}${crc:2:2}${crc:0:2}
#echo $crc
echo ${meta} | xxd -r -p
dd if=/dev/zero bs=1 count=$((${crc_offset} - ${#meta} / 2)) status=none
echo ${crc} | xxd -r -p
dd if=/dev/zero bs=1 count=$((${hdr_size} - ${crc_offset} - ${#crc} / 2)) status=none
}
main() {
gen_header $@
}
main $@