Repo Browser

bashcards/bashcards-android
Card bundle: cards/239694257571--clean-wordlist

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[0;32m\';Y=\'\\033[0;33m\';B=\'\\033[0;34m\';E=\'\\033[0;31m\'\nL="./wordlist_cleaning.log"\nI="";O=""\nclr(){ tput cnorm 2>/dev/null; clear; }\np(){ read -r -p "Enter to continue... " _; }\nlog(){ printf "%s - %s\\n" "$(date \'+%Y-%m-%d %H:%M:%S\')" "$1" >> "$L"; }\nban(){\n  echo -e "$G"\n  cat <<\'EOF\'\n/*****************************************/\n/*       _                        _      */\n/*   ___| | ___  __ _ _ __    ___| |__   */\n/*  / __| |/ _ \\/ _` | \'_ \\  / __| \'_ \\  */\n/* | (__| |  __/ (_| | | | |_\\__ \\ | | | */\n/*  \\___|_|\\___|\\__,_|_| |_(_)___/_| |_| */\n/*                                       */\n/*****************************************/\nEOF\n  echo -e "$R"\n}\npick(){\n  clr; ban\n  printf "%b" "${B}Wordlist file path:${R} "\n  read -r I\n  [[ -z "${I:-}" || ! -f "$I" ]] && echo -e "${E}File not found${R}" && return 1\n  O="cleaned_$(basename "$I")"\n  touch "$L" 2>/dev/null || { echo -e "${E}Cannot write log: $L${R}"; return 1; }\n  return 0\n}\nstats(){\n  [[ -z "${I:-}" || ! -f "$I" ]] && echo -e "${E}Select a wordlist first${R}" && return 1\n  clr; ban\n  echo -e "${B}Input :${R} $I"\n  echo -e "${B}Output:${R} ${O:-cleaned_$(basename "$I")}"\n  echo -e "${B}Lines :${R} $(wc -l < "$I" | tr -d \' \')"\n  p\n}\nclean(){\n  [[ -z "${I:-}" || ! -f "$I" ]] && echo -e "${E}Select a wordlist first${R}" && return 1\n  O="${O:-cleaned_$(basename "$I")}"\n  : > "$O"\n  touch "$L" 2>/dev/null || { echo -e "${E}Cannot write log: $L${R}"; return 1; }\n  log "START input=$I output=$O"\n  clr; ban\n  echo -e "${B}Cleaning...${R}"\n  V=0;K=0;D=0\n  while IFS= read -r w; do\n    w="$(printf "%s" "$w" | tr -d \'\\r\\n\')"\n    [[ -z "${w:-}" ]] && continue\n    if [[ "$w" =~ ^[a-zA-Z0-9-]+$ ]]; then\n      if [[ "$w" != -* && "$w" != *- ]]; then\n        if (( ${#w} > 0 && ${#w} <= 63 )); then\n          printf "%s\\n" "$w" >> "$O"\n          ((V++))\n        else\n          ((D++)); echo -e "${Y}Invalid (length):${R} $w"; log "Invalid (length): $w"\n        fi\n      else\n        ((D++)); echo -e "${Y}Invalid (hyphen edge):${R} $w"; log "Invalid (hyphen edge): $w"\n      fi\n    else\n      ((D++)); echo -e "${Y}Invalid (chars):${R} $w"; log "Invalid (chars): $w"\n    fi\n    ((K++))\n  done < "$I"\n  echo\n  echo -e "${G}Done${R}  ${B}Valid:${R} $V  ${B}Invalid:${R} $D  ${B}Processed:${R} $K"\n  echo -e "${G}Saved:${R} $O"\n  log "DONE valid=$V invalid=$D processed=$K saved=$O"\n  p\n}\nview(){\n  [[ -z "${O:-}" || ! -f "$O" ]] && echo -e "${E}No cleaned output yet${R}" && return 1\n  clr; ban\n  command -v less >/dev/null 2>&1 && less -R "$O" || sed -n \'1,200p\' "$O"\n}\nviewlog(){\n  touch "$L" 2>/dev/null || { echo -e "${E}No log file${R}"; return 1; }\n  clr; ban\n  command -v less >/dev/null 2>&1 && less -R "$L" || sed -n \'1,200p\' "$L"\n}\nwhile true; do\n  clr; ban\n  echo -e "${B}WORDLIST CLEANER MENU${R}"\n  echo -e "${Y}Input:${R} ${I:-<none>}"\n  echo -e "${Y}Output:${R} ${O:-<none>}"\n  echo -e "${Y}Log:${R} $L"\n  echo\n  echo "1) Select wordlist"\n  echo "2) Show stats"\n  echo "3) Clean wordlist"\n  echo "4) View cleaned output"\n  echo "5) View log"\n  echo "q) Quit"\n  echo\n  read -r -p "> " k\n  case "${k:-}" in\n    1) pick; p;;\n    2) stats;;\n    3) clean;;\n    4) view;;\n    5) viewlog;;\n    q|Q) clr; exit 0;;\n    *) echo -e "${E}Invalid${R}"; p;;\n  esac\ndone\n'

QR Payload

bash -c "$(echo H4sIAAAAAAAAA7VWbVPiSBD+fr+izYIkugHU3as6YqxSQZeSlVv03PKMx8UwSso4YZNgble4337d8yIBpdSr2liS6e5nunv6bfJupTZOk9pVyGuM38OVnw5/SVkGNhvHMApH7NoPI4fYYAdQqvRcr+J59a2ti/qdV3EOZ6SztUmc8yJnizh7Rc4H4rSKnA3keLzjGtVaHieDKEyzfhAxn4f8phrFN4bH265hOF388XgQJab1ANlonEHA4+QONndqA3Zf4+MocoA2Jg5MPT4iWML8AdgJ2CMwWjxjCWQxBDHPQj5m1WoVDOgLNNoh/CgJeXYNRjkFG8qp53EDjJI58DMGXmW9fG6X7+zyAMqfGuXPjfKJV7EIsGHAzg6+O4ZQduVzVOZxABYMYwwlig4NogM/g+1tr9LqHtCha2uvfWoEBvn0YcmjBI/gfr8/gQm9aA3iT2CkQKw1uAaChy/wPPz9Gzd6FSK0TFNqxwRMqR6FNVzTUvz1Pa8vkJLWBojbn/Qn8k2/74lEvNm3kFUT6xn+VY8EvyGIFPi5vPQwL1QtYXCrcoYV5mAfcFo/1sMVpflhb/pVVShchxGDkZ8NG6WH3hREdnW1tYm4uAD7B21qN+ypAZMJrICNqkptAy4vYXW14MRDa3pA+niMiuMxH5BOgzAJy8YJhw3SiA0g+oIN+iUTO5Jx/44JhZYwn8XjYCiqsNgTZPlh3ta+z8lSnoRY1lj5DSh1hEXn0Z6oY9BkXcQozfwsVUF64+lOWMSCDHzIZ/FL0uzZYxbjX1CyN21zanoZb7TzRN4d01RQ8oduw14WrenTvZ2Qs1TrNvMA7Ai25XEmkOEAGWD9A7W7KAsRD6H+58cD0/6K0zSABlD3ZxUCCsE4Od3tnUJIaXBLbYhFvF1ldGna9vUsr1aFbgKcuXXnCP+bbp3IfEjV3z44cR97KHdgEJMMpRgAczaZqRPzYlo8L8FBrXNTyEUuciHDr4e+hITXhBJ63H/hrwvf/rFr/1m3f7Mv10u4w4FsyLjEzqFXXLDXSJ+m1uwncLHBNLEG3+VTTEud8JLYduHXLbCsxQ2FSaMvnVzdKV2jCDPNs/V1y5qxWJSyeUCTAE4xB+fYOvd+FA7AjBi/yYaWKvQcEy0y+0ROspna61Cv5829YGz4fYSnBDa4YcstzoGKZrXRoskXDAZDP0mXm1LimRFtwjSPdFQHMWeq83UlL1T04bSJGGEDqL7PSLmyeSZZyqJiNiXz9yQOWJoyzT5anEKH0xP//lEs8y4O0Owet0BodNFCyNWyiUWjVLqlI0hps+5GOaHuQ5YvDqjuwoDqPjugjmNQ80a1OXxnL4/rIL678zn27z1E6BcUhs/mzuoGbRV8uycNoxfoPNgcu3jj/Wa9PsIhK0teeS+/y9401NB1ihpd0M/Psv/tcWepxx3psZxjWTJmenotnYpfu71mp31yCvud1u5xqwefW8d/PM7HhfIuXGt4v2xzrL+dZ4BPLsClyA7OegnrPC1zY8MCdUHp62mmwdhE4TDOQXwNFPhbFohJ/9yeDxacYTIXSqoA+KgA8nNfc79Z8GUcZnMeFr/ocTzCrfysTsXBbkVth2qw4jHos86BkeNIDvou3NY0+ixc0jT6SUWnyY+SRKc059vkiyVzyv4JM6hr/po1X4NqAKj6U/ZZ6gcepwHj8cp/XZhlg3gNAAA= | base64 -d | gunzip)"
NameTypeSize
README.mdfile1,120
assetsdir