29 lines
581 B
Bash
29 lines
581 B
Bash
|
#!/bin/bash -e
|
||
|
|
||
|
INPUT=$1
|
||
|
OUTPUT=$2
|
||
|
SIZE=$3
|
||
|
BUF=$4
|
||
|
|
||
|
if [ ! -e "$INPUT" ]; then
|
||
|
echo "ERROR: No input file \"$INPUT\""
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if [ "$SIZE" -gt 1024 ]; then
|
||
|
echo "ERROR: SIZE bigger than 1K"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
BIG_END=$[SIZE / 256]
|
||
|
LIT_END=$[SIZE - (BIG_END * 256)]
|
||
|
BIG_END=$(echo "ibase=10;obase=16;$BIG_END" | bc)
|
||
|
LIT_END=$(echo "ibase=10;obase=16;$LIT_END" | bc)
|
||
|
|
||
|
rm -rf "$OUTPUT"
|
||
|
dd if="$INPUT" of="$OUTPUT" bs=1k count=10
|
||
|
echo -en "\x$LIT_END\x$BIG_END" >> "$OUTPUT"
|
||
|
echo -n "$BUF" >> "$OUTPUT"
|
||
|
SKIP=$[10 * 1024 + SIZE + 2]
|
||
|
dd if="$INPUT" of="$OUTPUT" seek=$SKIP skip=$SKIP bs=1
|