Last active
July 15, 2023 17:12
-
-
Save hateshape/fb8efc09af4439c30de56aed2a6c384b to your computer and use it in GitHub Desktop.
Domains via CIDRs from bgp.he.net
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Dependencies: anew,linux,html2csv | |
pcsv() { | |
column -t -s"," | less -F -S -X -K | |
} | |
bgphenet() { | |
IPCIDRNAME=$(echo $TARGET | sed 's#/#-#g') | |
CMDBASE="google-chrome --dump-dom --disable-gpu --headless --run-all-compositor-stages-before-draw --virtual-time-budget=10000" | |
YOJUSTRUNBGPS=$CMDBASE | |
YOJUSTRUNBGPS+=" $BGPHENETURL/net/$TARGET#_dns" | |
$YOJUSTRUNBGPS | tee "$IPCIDRDIR/bgps-html.tmp" &>/dev/null | |
wait | |
if [[ -s "$IPCIDRDIR/bgps-html.tmp" ]]; then | |
html2csv "$IPCIDRDIR/bgps-html.tmp" | sed 1,3d >"$IPCIDRDIR/bgps-csv.tmp" | |
if [[ -s "$IPCIDRDIR/bgps-csv.tmp" ]]; then | |
dos2unix "$IPCIDRDIR/bgps-csv.tmp" &>/dev/null | |
sed -i 's#,,#,N/A,#g' "$IPCIDRDIR/bgps-csv.tmp" | |
sed -i 's#,$#,N/A#g' "$IPCIDRDIR/bgps-csv.tmp" | |
grep -v \" "$IPCIDRDIR/bgps-csv.tmp" >"$IPCIDRDIR/bgps-$IPCIDRNAME.csv" | |
for yy in $(grep \" "$IPCIDRDIR/bgps-csv.tmp"); do | |
IPADDR=$(echo $yy | cut -d, -f1) | |
CURRDOMAIN=$(echo $yy | cut -d, -f2) | |
RESULT=$(echo $yy | awk -F'"' '{print $2}') | |
NUMCOMMAS=$(echo $RESULT | awk -F',' '{print NF-1}') | |
echo "$IPADDR,$CURRDOMAIN" | anew -q "$IPCIDRDIR/bgps-$IPCIDRNAME.csv" &>/dev/null | |
for ((x = 1; x <= $NUMCOMMAS + 1; x++)); do | |
echo $RESULT | awk -F',' "{print \$$x}" | sed "s#^#$IPADDR,#g" | anew -q "$IPCIDRDIR/bgps-$IPCIDRNAME.csv" &>/dev/null | |
done | |
done | |
fi | |
fi | |
if [[ -s "$IPCIDRDIR/bgps-$IPCIDRNAME.csv" ]]; then | |
cat "$IPCIDRDIR/bgps-$IPCIDRNAME.csv" | pcsv | |
fi | |
if compgen -G $IPCIDRDIR/*.tmp >/dev/null; then | |
rm $IPCIDRDIR/*.tmp | |
fi | |
} #happy | |
howitdone() { | |
cat <<EOF | |
he.sh, gets domains via cidrs from bgp.he.net | |
Usage: $(basename "${BASH_SOURCE[0]}") -t TARGET [-h] | |
- Example: $(basename "${BASH_SOURCE[0]}") -t 130.36.0.0/16 | |
Required options: | |
-t, --target A CIDR | |
Helpful options: | |
-h, --help Print this help and exit | |
-v, --verbose Script Debug | |
EOF | |
exit | |
} | |
cleanup() { | |
trap - SIGINT SIGTERM ERR EXIT | |
} | |
msg() { | |
echo >&2 -e "${1-}" | |
} | |
die() { | |
local msg=$1 | |
local code=${2-1} # default exit status 1 | |
msg "$msg" | |
exit "$code" | |
} | |
parse_params() { | |
# default values of variables set from params | |
BGPHENETURL='https://bgp.he.net' | |
IPCIDRDIR=$(pwd) | |
if [[ "$#" -eq 0 ]]; then | |
howitdone | |
exit | |
fi | |
while :; do | |
case "${1-}" in | |
-h | --help) howitdone ;; | |
-v | --verbose) set -x ;; | |
-t | --target) | |
TARGET="${2-}" | |
IPCIDRNAME=$(echo $TARGET | sed 's#/#-#g') | |
export IPCIDRNAME TARGET | |
shift | |
;; | |
-?*) die "Unknown option: $1" ;; | |
*) break ;; | |
esac | |
shift | |
done | |
args=("$@") | |
# check required params and arguments | |
[[ -z "${TARGET-}" ]] && die "Missing required parameter: -t | --TARGET" | |
return 0 | |
} | |
parse_params "$@" | |
bgphenet "$TARGET" "$IPCIDRDIR" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment