Skip to content

Instantly share code, notes, and snippets.

@hateshape
Last active July 15, 2023 17:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hateshape/fb8efc09af4439c30de56aed2a6c384b to your computer and use it in GitHub Desktop.
Save hateshape/fb8efc09af4439c30de56aed2a6c384b to your computer and use it in GitHub Desktop.
Domains via CIDRs from bgp.he.net
#!/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