46 lines
1.5 KiB
Bash
Executable File
46 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ "$1" = "-h" ]; then
|
|
cat 1>&2 <<EOL
|
|
usage: echo /etc/passwd | ./paste.sh
|
|
|
|
env options:
|
|
PASTE_URL - Set the url base for paste operations (default: HTTPS://sour.is/paste)
|
|
PASTE_GZIP - 0 = No Compression, 1 = Use gzip compression (default: 0)
|
|
PASTE_BURN - 0 = No Burn on Read, 1 = Burn on read (default: 0)
|
|
PASTE_DATE - Value to be used when setting expire date. (default: next-week)
|
|
EOL
|
|
exit
|
|
fi
|
|
|
|
PASTE_URL=${PASTE_URL-"https://sour.is/paste"}
|
|
PASTE_BURN=${PASTE_BURN-0}
|
|
PASTE_DATE=${PASTE_DATE-"next-week"}
|
|
PASTE_GZIP=${PASTE_GZIP-0}
|
|
GZBIN="cat"
|
|
[ "$PASTE_GZIP" -eq "1" ] && GZBIN="gzip -c"
|
|
|
|
PASS=$(head -c 40 /dev/urandom);
|
|
CHK=$(echo -s $PASS | openssl dgst -sha256 -binary | openssl dgst -ripemd160 -binary | base64 | tr '/+' '_-' | tr -d '=')
|
|
PASS=$(echo -s $PASS | openssl dgst -sha256 -binary | base64 | tr '/+' '_-' | tr -d '=')
|
|
HASH=$((echo -e "exp:\t$(date +%s -d ${PASTE_DATE})"; \
|
|
echo -e "chk:\t$CHK"; \
|
|
[ "$PASTE_BURN" -eq "1" ] && echo -e "burn:\ttrue"; \
|
|
[ "$PASTE_GZIP" -eq "1" ] && echo -e "zip:\ttrue"; \
|
|
echo; \
|
|
cat /dev/stdin | $GZBIN | openssl aes-256-cbc -e -a -k $PASS) | \
|
|
curl -s -X POST ${PASTE_URL}/api/ --data-binary @-)
|
|
|
|
HASH_OK=$(echo $HASH | cut -c1-2)
|
|
|
|
if [ "$HASH_OK" = "OK" ]; then
|
|
HASH=$(echo $HASH | cut -f2 -d' ')
|
|
|
|
echo "url: ${PASTE_URL}/#/${HASH}!${PASS}"
|
|
echo -n "shell: curl -s ${PASTE_URL}/api/get/${HASH} | sed '1,/^\$/d' | openssl aes-256-cbc -d -a -k ${PASS}"
|
|
[ "$PASTE_GZIP" -eq "1" ] && echo " | gzip -dc" || echo;
|
|
exit
|
|
fi
|
|
|
|
echo $HASH
|