51 lines
943 B
Bash
Executable File
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 $@
|