Repo Browser

bashcards/bashcards-android
Card bundle: cards/147941123570--file-encryption-vault

Front / Back (click to flip)

front
back
Click card to view front/back

Raw Script

#!/usr/bin/env bash
set -euo pipefail;bash -c $'set -euo pipefail\nbash -c $\'a1=$\\\'\\\\033[0;32m\\\';a2=$\\\'\\\\033[0;31m\\\';a3=$\\\'\\\\033[0;34m\\\';a4=$\\\'\\\\033[0m\\\';a5=$\\\'\\\\033[0;33m\\\'\nb1=`pwd`;b2="";t1="";t2=""\nt1="/dev/tty"; [ -r "$t1" ] && [ -w "$t1" ] || t1=""\nw0(){ if [ -n "$t1" ]; then printf "%b" "$1" >"$t1"; else printf "%b" "$1"; fi; }\nr0(){ if [ -n "$t1" ]; then IFS= read -r t2 <"$t1"; else IFS= read -r t2; fi; t2=`printf "%s" "$t2" | tr -d "\\\\r\\\\n" | sed "s/^[[:space:]]*//;s/[[:space:]]*$//"`; }\np0(){ w0 "Enter to continue... "; r0; }\nc0(){ if [ -n "$t1" ]; then clear >"$t1"; else clear; fi; }\ncommand -v gpg >/dev/null 2>&1 || { w0 "${a2}gpg not installed${a4}\\\\n"; exit 1; }\nk0(){ [ -n "${b2:-}" ] || { w0 "${a2}No file selected${a4}\\\\n"; return 1; }; [ -f "$b2" ] || { w0 "${a2}Selected file missing${a4}\\\\n"; return 1; }; return 0; }\ni0(){\n  c0\n  w0 "${a1}INFO${a4}\\\\n${a5}${b2:-<none>}${a4}\\\\n\\\\n"\n  k0 || { p0; return; }\n  t3=`file -b "$b2" 2>/dev/null || true`\n  t4=`wc -c < "$b2" 2>/dev/null | tr -d " " || true`\n  w0 "${a3}Type:${a4} ${t3}\\\\n"\n  w0 "${a3}Bytes:${a4} ${t4}\\\\n"\n  if command -v sha256sum >/dev/null 2>&1; then\n    t5=`sha256sum "$b2" 2>/dev/null | awk "{print \\\\$1}" || true`\n    w0 "${a3}SHA256:${a4} ${t5}\\\\n"\n  fi\n  w0 "\\\\nPreview (first 25 lines):\\\\n----------------------------------------\\\\n"\n  if [ -n "$t1" ]; then sed -n "1,25p" "$b2" >"$t1"; else sed -n "1,25p" "$b2"; fi\n  w0 "\\\\n----------------------------------------\\\\n\\\\n"\n  p0\n}\ne0(){\n  k0 || { p0; return; }\n  c0\n  w0 "${a1}ENCRYPT${a4}\\\\n${a5}${b2}${a4}\\\\n\\\\nOutput (blank = same + .gpg): "\n  r0; f1="$t2"; [ -z "$f1" ] && f1="${b2}.gpg"\n  if [ -e "$f1" ]; then\n    w0 "${a2}Output exists${a4}  Overwrite? (y/N): "\n    r0; case "$t2" in y|Y) ;; *) return;; esac\n  fi\n  if [ -n "$t1" ]; then gpg -c --output "$f1" "$b2" >"$t1" 2>&1; else gpg -c --output "$f1" "$b2"; fi\n  [ $? -eq 0 ] && w0 "${a1}Saved:${a4} $f1\\\\n" || w0 "${a2}Encrypt failed${a4}\\\\n"\n  p0\n}\nd0(){\n  k0 || { p0; return; }\n  c0\n  w0 "${a1}DECRYPT${a4}\\\\n${a5}${b2}${a4}\\\\n\\\\nOutput (blank = stdout): "\n  r0; f2="$t2"\n  if [ -n "$f2" ]; then\n    if [ -e "$f2" ]; then\n      w0 "${a2}Output exists${a4}  Overwrite? (y/N): "\n      r0; case "$t2" in y|Y) ;; *) return;; esac\n    fi\n    if [ -n "$t1" ]; then gpg -d --output "$f2" "$b2" >"$t1" 2>&1; else gpg -d --output "$f2" "$b2"; fi\n    [ $? -eq 0 ] && w0 "${a1}Saved:${a4} $f2\\\\n" || w0 "${a2}Decrypt failed${a4}\\\\n"\n  else\n    if [ -n "$t1" ]; then gpg -d "$b2" >"$t1" 2>&1; else gpg -d "$b2"; fi\n  fi\n  p0\n}\nb0(){\n  c0\n  w0 "${a1}BROWSER${a4}  ${a5}${b1}${a4}\\\\n\\\\n"\n  if [ -n "$t1" ]; then ls -1p "$b1" 2>/dev/null | sed -n "1,200p" >"$t1"; else ls -1p "$b1" 2>/dev/null | sed -n "1,200p"; fi\n  w0 "\\\\n1) Enter subdir\\\\n2) Go up (..)\\\\n3) Pick file (name)\\\\n4) Pick file (number)\\\\nq) Back\\\\n\\\\n> "\n  r0\n  case "$t2" in\n    1) w0 "Subdir: "; r0; [ -d "$b1/$t2" ] && b1="$b1/$t2" || { w0 "${a2}Not a directory${a4}\\\\n"; p0; } ;;\n    2) b1=`cd "$b1/.." 2>/dev/null && pwd` ;;\n    3) w0 "File: "; r0; [ -f "$b1/$t2" ] && b2="$b1/$t2" || { w0 "${a2}File not found${a4}\\\\n"; p0; } ;;\n    4)\n      c0\n      w0 "${a1}FILES${a4}  ${a5}${b1}${a4}\\\\n\\\\n"\n      if [ -n "$t1" ]; then ls -1p "$b1" 2>/dev/null | grep -v "/$" | nl -ba -w3 -s") " >"$t1"; else ls -1p "$b1" 2>/dev/null | grep -v "/$" | nl -ba -w3 -s") "; fi\n      w0 "\\\\nNumber: "\n      r0; n1="$t2"\n      s1=`ls -1p "$b1" 2>/dev/null | grep -v "/$" | sed -n "${n1}p"`\n      [ -n "$s1" ] && [ -f "$b1/$s1" ] && b2="$b1/$s1" || { w0 "${a2}Invalid selection${a4}\\\\n"; p0; }\n      ;;\n    q|Q|"") ;;\n    *) w0 "${a2}Invalid${a4}\\\\n"; p0 ;;\n  esac\n}\nwhile true; do\n  c0\n  w0 "${a1}FILE VAULT${a4}\\\\n"\n  w0 "${a3}Dir:${a4} ${a5}$b1${a4}\\\\n"\n  w0 "${a3}File:${a4} ${a5}${b2:-<none>}${a4}\\\\n\\\\n"\n  w0 "1) Browse / pick\\\\n2) Info / preview\\\\n3) Encrypt\\\\n4) Decrypt\\\\n5) Set dir (path)\\\\n6) Clear file\\\\nq) Quit\\\\n\\\\n> "\n  r0\n  case "$t2" in\n    1) b0 ;;\n    2) i0 ;;\n    3) e0 ;;\n    4) d0 ;;\n    5) w0 "Path: "; r0; [ -d "$t2" ] && b1=`cd "$t2" 2>/dev/null && pwd` || { w0 "${a2}Not a directory${a4}\\\\n"; p0; } ;;\n    6) b2="" ;;\n    q|Q) exit 0 ;;\n    *) w0 "${a2}Invalid${a4}\\\\n"; p0 ;;\n  esac\ndone\n\'\n'

QR Payload

bash -c "$(echo H4sIAAAAAAAAA51YbXPaRhD+3l+xVWmM0oJegHxAwZk6sVvPZGwnpO1kTDro5bA1FidFd4JSm//evTsdCIExtjNhrNu93efueXZZ+acfrYLlVhBTi9AZBD67/YERDi1SpJDFGZn4ceKJZWiF0Djaso3oyjg68p1BYzQaHeH/kd3pXNtex52KBc93tyxOaelsWbqlpVuzlMu9rQ0daUEozmCczaOxF7gDw/C4Iz/F7yMqHqyIzCzOF4YH19DKwWhwx4Bv8OqVeJ6vnh8eQO4d0bndNO8hngg71XYP+C2hkOUx5RMwfg4MtKDhWNo9IAkjW1YPJrEHyxHN94Q8PxsOICd+JNBxF95WI9aMKiCebrxKxUQq7hqA+HNoRWCIS8rFBxWLjOASs/65vu6zzA9J/9u315blMau60LAsYyyRZhLp3AbjlHKCOVMIU8pjWpB2uw2IK7elY7jnSGFC/HzzauTS6j7CdDr1KR5qBjfZDRxLkmiRJOAev3IEFwpD4953l8KDphxiyrifJCTC1e5SHRCj/xtzcGTUOwmpxHMfuP3WsmS2Eu0iRRAJwXtJSMhrwXLCi5zKcFIueMGNwN0OMiw3q1DTmLGY3jweqXxQFxcLlCMKENris4zpLM8vzi7XIfC33lId4i1NKTlerm0qh9h8Zytgma2TyBQAvDMYS2ytoDyCW7lkofW8IGPp2R2M56Eo5re7PLWo8F91V4m6s/yyyEhfQoPGPe8s19hWLicLTtjap1vxQflUpMBufbf3hhXTuiCUrMQGxNsbjNeOuxD78zsw7mWBgEjVcJab4CvYhn/8hpHW4HoVcJNYH0OuXeVkFpM5NCdxzji4PUhiSpjZl9bWgT8bZ99ROqJcxaLzq9vLjPJ8G5W0y8Org30WnDWmDCWJ+iFaoo/qq6bd04v3n79efdkh37psLwueFRyaQeLTOxgA86cEfoE2FrnZBwlCNJgJtmLR1WQV/odZJrppS4sILLZULpJop6pYVgVbpsVmwThTbMPljOTzPObkHTQX1oVOrwCEPiNlY40pLB6+muB58NrU14BkMD9cy2Q3m6J1YWW1WqnKryBWSS31LZnd460JvobGOzzrd7DVbawYGPozEmkdTxzd/h/WV3BKw3yRcRDf4Bttr0J89FziP5y+mHge4TE3OHcV55vXOXFrnFborpteSvhzKdek76U92iDSfYL23d7eKtGBxLs7iP9A9hAvEBxwlCewb4BVn6Wigke+7U4+X/49PP1cMqNV4+z8ltuNLGHQcjKR2ql/A1RapG1ntf55+L6truqYoKYiVgRRrGYs14TfUygyaLbbplzpmHAVh3dqNmhSbHBqvbu5XkwDkivLdxNO/PBufexjXRXy5qq6VFwhEAFqKGH09VR2XVLhWNJZ6iQQ7VKv1CchDj5gABxl0nyxMb6Iul+i/FU6PKMYs8Myeru9eXGYRkzgK/eOQneG56xim2xhcx/FJvbKoW+SFjTaA61r6hJWAqs0AWd5dv7xdHiQxB4vgD1yuclJJuYWw2qISZsmOG35+E7RgRYzTDhcd08FWreBihgvpIBqPYw66x4qfhjSdnhirf/GPXWWmTHWUcprYZUXJ03mam1FpljZJPOczvwkjsqRO07pNp86k6b1+8OnB8MwV8+vza1wtSClq2rRGG9+KyQkZj4PonRHBxLigL9++/Pjl1pLXA2HH7C29GQoxBM4j3lKqVddnxrcxU4s4pM8naM0LHy1LssfS+2cTlKxpOZN3VLKr2/dScqmLh97JgzxHR0rGZqZz29VU3ljwnv5Hib6jW4zn4qYP6vNBHa1C8R2tciJXSlDiNZPPcXWFWKpN6dqY1INhbu7u8lLmxWeW/4poKolU70m2i/VU4RE4p0djejR/4YwYDs+EQAA | base64 -d | gunzip)"
cards/147941123570--file-encryption-vault/failed
      
NameTypeSize
README.mdfile1,074
assetsdir
failedfile1