purrito(1) purr(1)
/\_/\
( o.o )
> ^ <
NAME
purrito: ultra fast, minimalistic, encrypted command line paste-bin
purr: POSIX shell client to paste to bsd.ac
meow: POSIX shell client to paste encrypted paste to bsd.ac
meowd: POSIX shell client to decrypt encrypted paste from bsd.ac
CLIENT
: ${P_SERVER=bsd.ac}
: ${P_PORT=42069}
: ${P_MAXTIME=30}
: ${_PL=week} # can be set to day/week/month/<lifetime-in-minutes>
# POSIX shell client to upload standard message
purr() {
curl --silent --max-time "${P_MAXTIME}" --data-binary "@${1:-/dev/stdin}" "${P_SERVER}:${P_PORT}/${_PL}"
}
# POSIX shell client to upload encrypted message
meow() {
# we need to generate a 256 byte random key
# for using the aes-256-cbc cipher
key="$(openssl rand -hex 32)"
iv="$(openssl rand -hex 16)"
# calculate its encryption and upload it
url="$(openssl enc -aes-256-cbc -K ${key} -iv ${iv} -e -base64 -A < ${1:-/dev/stdin} | purr)"
printf %s\\n "${url%\/*}/paste.html#${url##*\/}_${key}_${iv}"
unset key iv url
}
# POSIX shell client to decrypt the message
meowd() {
url="$1"
baseurl="${url%\/*}"
vals="${url##*\#}"
paste=$(printf %s\\n "${vals}" | cut -d'_' -f1)
key=$(printf %s\\n "${vals}" | cut -d'_' -f2)
iv=$(printf %s\\n "${vals}" | cut -d'_' -f3)
curl --max-time "${P_MAXTIME}" --write-out "\n" --silent "${baseurl}/${paste}" | openssl enc -aes-256-cbc -base64 -d -K ${key} -iv ${iv}
unset url baseurl vals paste key iv
}
USAGE
~$ purr c00lfile.txt
https://bsd.ac/purrit0
~$ purr < h0tfile.txt
https://bsd.ac/purri1o
~$ echo Hello world. | purr
https://bsd.ac/d4nklit
~$ purr
This is my input
it can span multiple lines
<Ctrl-d to exit>
https://bsd.ac/curlpr0
LIMITS
max paste size: 64KB
SOURCE
https://github.com/PurritoBin/PurritoBin