85 lines
2.5 KiB
Bash
Executable file
85 lines
2.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
if [ -z "$1" ] || [ -z "$2" ] || [[ $2 != "encode" && $2 != "decode" && $2 != "encode_enc" ]]
|
|
then echo "launch the script with the desired filename and operation"
|
|
echo "./AmazonPrimeWhatever.sh FILENAME OPERATION(encode or decode)"
|
|
exit
|
|
fi
|
|
|
|
# check for prerequisites:
|
|
if ! [ -x "$(command -v convert)" ]; then
|
|
echo 'Error: convert (part of the imagemagick suite) is not installed.' >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ $2 = "encode_enc" ] || [ $(echo $1 | cut -d "_" -f1) = "FakeKittenENC" ]; then
|
|
if ! [ -x "$(command -v gpg)" ]; then
|
|
echo 'Error: gpg is not installed, it is needed for encryption/decryption' >&2
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [ $2 = "encode" ] || [ $2 = "encode_enc" ]; then
|
|
imagejpg="random.jpg"
|
|
image="random.DNG"
|
|
#generate random image:
|
|
mx=320;my=256;head -c "$((3*mx*my))" /dev/urandom | convert -depth 8 -size "${mx}x${my}" RGB:- $imagejpg
|
|
mv $imagejpg $image
|
|
imagesize=$(du -b $image | cut -f1)
|
|
if [ $2 = "encode" ]; then
|
|
origsha=$(sha1sum $1 | cut -d " " -f1)
|
|
destimage="FakeKitten_"$imagesize"_"$1"_"$origsha"_"$image
|
|
mv $image $destimage
|
|
dd if=$1 bs=1M >> "$destimage"
|
|
echo "encode completed in $destimage"
|
|
fi
|
|
if [ $2 = "encode_enc" ]; then
|
|
#
|
|
gpg --symmetric --cipher-algo AES256 $1
|
|
#
|
|
origsha=$(sha1sum $1.gpg | cut -d " " -f1)
|
|
destimage="FakeKittenENC_"$imagesize"_"$1.gpg"_"$origsha"_"$image
|
|
mv $image $destimage
|
|
dd if=$1.gpg bs=1M >> "$destimage"
|
|
echo "encode completed in $destimage"
|
|
fi
|
|
fi
|
|
|
|
|
|
if [ $2 = "decode" ]; then
|
|
imageconst=$(echo $1 | cut -d "_" -f1)
|
|
imagebs=$(echo $1 | cut -d "_" -f2)
|
|
origname=$(echo $1 | cut -d "_" -f3)
|
|
origsha=$(echo $1 | cut -d "_" -f4)
|
|
origimage=$(echo $1 | cut -d "_" -f5)
|
|
|
|
dd if=$1 bs=1M skip=$imagebs iflag=skip_bytes > "$origname"
|
|
|
|
if [ $imageconst = "FakeKittenENC" ]; then
|
|
#decrypt the file
|
|
orignamenogpg=$(echo "$origname" | sed 's/.gpg//')
|
|
gpg --output $orignamenogpg --decrypt $origname
|
|
fi
|
|
|
|
echo "decode completed in $origname, checking file integrity"
|
|
echo $origsha" "$origname > $origname".sha1"
|
|
shaoutput=$(sha1sum -c $origname".sha1")
|
|
echo $shaoutput
|
|
if [[ $shaoutput != *"OK"* ]]; then
|
|
echo ""
|
|
echo "!!! FAILED SHA VERIFICATION!!! EXITING"
|
|
echo "!!! DELETING ALL CREATED FILES !!!"
|
|
rm $origname
|
|
rm $origname".sha1"
|
|
exit
|
|
fi
|
|
if [ $imageconst = "FakeKittenENC" ]; then
|
|
#remove the file that contains .gpg at the end
|
|
rm $origname
|
|
fi
|
|
rm $origname".sha1"
|
|
fi
|
|
|
|
|
|
echo ""
|
|
echo "end of my job"
|