Repo Browser

bashcards/bashcards-android
Card bundle: cards/664254112905--piv-key-atlas

Front / Back (click to flip)

front
back
Click card to view front/back

Raw Script

#!/usr/bin/env bash
set -euo pipefail;bash -c $'R=$\'\\033[0m\';G=$\'\\033[38;5;46m\';Y=$\'\\033[38;5;226m\';C=$\'\\033[38;5;51m\';E=$\'\\033[38;5;196m\';W=$\'\\033[38;5;255m\'\nS="${S:-0x5f0000}"\nT="${T:-0x5fffff}"\nF="${F:-hex}"\nP="${P:-0}"\nO="${O:-}"\nneed(){ command -v "$1" >/dev/null 2>&1; }\nclr(){ tput cnorm 2>/dev/null; clear; }\npause(){ read -r -p "Enter to continue... " _; }\nh2d(){ printf "%d\\n" "$((16#${1#0x}))"; }\nd2h(){ printf "0x%06x\\n" "$1"; }\nfmt(){\n  local n="$1"\n  case "$F" in\n    hex) d2h "$n";;\n    dec) printf "%d\\n" "$n";;\n    bytes) printf "%02x %02x %02x\\n" $(((n>>16)&255)) $(((n>>8)&255)) $((n&255));;\n    *) d2h "$n";;\n  esac\n}\ngen(){\n  local a b n cnt\n  a="$(h2d "$S")" || return 1\n  b="$(h2d "$T")" || return 1\n  (( b < a )) && printf "%b\\n" "${E}End < Start${R}" && return 1\n  cnt=$((b-a+1))\n  clr\n  printf "%b\\n" "${C}OID Generator${R}"\n  printf "%b\\n" "${W}Start:${Y} $S${R}   ${W}End:${Y} $T${R}   ${W}Count:${Y} $cnt${R}   ${W}Format:${Y} $F${R}"\n  [[ -n "${O:-}" ]] && printf "%b\\n" "${W}Output:${Y} $O${R}"\n  echo\n  if [[ "$P" -eq 1 ]]; then\n    local show=40 i=0\n    printf "%b\\n" "${G}Preview (first $show)${R}"\n    for ((n=a; n<=b && i<show; n++, i++)); do fmt "$n"; done\n    if (( cnt > show )); then printf "%b\\n" "${Y}... (${cnt-show} more)${R}"; fi\n    return 0\n  fi\n  if [[ -n "${O:-}" ]]; then : > "$O" || { printf "%b\\n" "${E}Cannot write: $O${R}"; return 1; }; fi\n  for ((n=a; n<=b; n++)); do\n    if [[ -n "${O:-}" ]]; then fmt "$n" >> "$O"; else fmt "$n"; fi\n  done\n  [[ -n "${O:-}" ]] && printf "%b\\n" "\\n${G}Saved:${R} ${W}$O${R}"\n}\nset_range(){\n  clr\n  read -r -p "Start hex (e.g. 0x5f0000): " x\n  read -r -p "End   hex (e.g. 0x5fffff): " y\n  [[ -n "${x:-}" ]] && S="$x"\n  [[ -n "${y:-}" ]] && T="$y"\n}\nset_format(){\n  clr\n  echo "1) hex (0x5f0000)"\n  echo "2) dec (6225920)"\n  echo "3) bytes (5f 00 00)"\n  read -r -p "> " k\n  case "$k" in\n    1) F=hex;;\n    2) F=dec;;\n    3) F=bytes;;\n  esac\n}\nset_out(){\n  clr\n  read -r -p "Output file path (blank = print to screen): " x\n  O="$x"\n}\ntoggle_preview(){ [[ "$P" -eq 1 ]] && P=0 || P=1; }\nwhile true; do\n  clr\n  echo -e "${C}PIV OID RANGE MENU${R}"\n  echo -e "${W}Start:${Y} $S${R}"\n  echo -e "${W}End  :${Y} $T${R}"\n  echo -e "${W}Fmt  :${Y} $F${R}"\n  echo -e "${W}Mode :${Y} $([[ "$P" -eq 1 ]] && echo PREVIEW || echo FULL)${R}"\n  echo -e "${W}Out  :${Y} ${O:-<stdout>}${R}"\n  echo\n  echo "1) Set range"\n  echo "2) Set format"\n  echo "3) Toggle preview/full"\n  echo "4) Set output file"\n  echo "5) Run"\n  echo "q) Quit"\n  echo\n  read -r -p "> " a\n  case "$a" in\n    1) set_range; pause;;\n    2) set_format; pause;;\n    3) toggle_preview; pause;;\n    4) set_out; pause;;\n    5) gen; pause;;\n    q|Q) clr; exit 0;;\n    *) echo -e "${E}Invalid${R}"; pause;;\n  esac\ndone\n'

QR Payload

bash -c "$(echo H4sIAAAAAAAAA41WbW/aSBD+fr9iznET+3IEm4SoxTHSKQdRpLbQkDaKQlUtsAQrZk3MOiEi/u83s2uDbah0fABm5tl522fGPviznizj+igQdS5eYMSWsz+WXEKNJxEsggWfsiD0SA21MZhHN745PBoOndPTB2c+PPKutvLpR6/pnZ2T9r6ibTSU+rKibrqk7VS07icFvqv6aDZRPRQD3zDXg1bNWTWnDn5SYyhuSXerdfQhXZd03VZtxlck9knsI4SEHgm9Vo3+C84nlr2GcTSfMzGB2gsYpmtAuz7hL3WRhCE02oeuB+lQjMOYoHKRSBiLKJ6jaQPzYBxyFivggiVLTtCYM3QZQ20BRkdIHoOMMJSQgUj4yckJGPBLnZg1VBaLOBByCsaHyXAoDMzEstzzA3PtHjir1LYNhZ00ZkWss/rgnK8yvKsh07lEyFAAhNGYhSB8MpE8ZkuOuK4BgSAZADtkA/pErTA8TysnfGzvZrO1j94kXxYQTmMFmy+FxtQt0W675/Yh3p1t54qPBVnov7nTv6p58CUbDwXW88hFqR4GIxB4B5JUDIuzsIF4cGDYBry/Y99lEgtwyTzamm/3mC0LfV2gR0zp8HBb0Sired1JO8iLCxhIFktzfZMahCu6wDx8rGZUY8eubStNGNPPrrPLtHf9L1xxwWMmo1i524+8S1XAlrm+T8EcEBJbRHpMJ9PeFrSXUSJyNCZUsHSRqSw3dTchHx6gJiCfBPj5c3/5d2kvIcZn53ub83w8i+g3mJIrw+wbuDaewUVPHsgZz+ilL2w5i179MwcC39Hq3UBXaT/mLwF/BWsaxEsJJh2yN/EAplGM1yV85oG48EeUb3BBIJSPj/+G4PgYyQSTCJD/mkYoCK5PY55419gaaKt0gLCU555c7lMaTstcI7xG4BTmUcx1Mh5MA+0yI4EqSet0M8p9zaK0MK5h9hQB13t5dsmEiCS8xoHkrbzV3oZqONl56EonVP269E2tv0sjbw20dToe8BBXwrZjOkLet//FEvym+xuwF07UROYRbzZcwQHGh8qvmOEcZ2OcDUhxPyq60zYCi588nkC+4e0WbslVFU0zCRU0fRT6rZT5qpA5PT5WZfq/Fcz0JHnbZjxVk1NOmWgPhmvr2Jskja2tYdP6BOu80Wh+apRMp7benGA1p+A4kB8sVobXAk+FVf20XdUYtetj3HxhNkjGWLl8SrIKUNmfVEyUyN83X8843n3IYcHkDKxRyMQT+Pqu6bG1HMeci+1t9LJWonsZPT6G/NdCzy89nKobgZrb9x3ift/XT9PXGQWTccJz3hY7XON6XfavfwCtzJt/vl514Evn6/fSAspwe5blLkRRprg5dyFdnALY2ZQlyJdownOIta9Mhe7fdH5cd+6oXiV3v3/+bO93iK3fxKQpu1jKCd5VO93ZtBvqDfAVTU1TmXWk1pQtU+5WXQ9k11Of4ttKAXCmD0ZbBhSMTRtuElFQPNvwLQlkKa8qe1mBvazE3s0a8EC9IxWIvJ23ig0LKPOrYj/TZzH/igFzx/eGivL5/ZtNRMO1twokOIV3j8KtdNJr8cLCYJKt4IILPVN6PR79B8Op5zhACwAA | base64 -d | gunzip)"
NameTypeSize
README.mdfile1,001
assetsdir