Repo Browser

bashcards/bashcards-android
cards/664254112905--piv-key-atlas/assets/raw.sh
#!/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'
NameTypeSize
auto-art.pngfile1,321,907
back-data-url.txtfile227,966
back-thumb.pngfile157,635
back.pngfile170,958
front-data-url.txtfile286,294
front-thumb.pngfile109,800
front.pngfile214,702
manifest.txtfile184
qr-payload.txtfile1,647
raw.shfile2,880