Skip to content

Instantly share code, notes, and snippets.

@SmithyAT
Created February 17, 2024 19:45
Show Gist options
  • Save SmithyAT/f319fb36070190d0f9f2a0481e79dfe8 to your computer and use it in GitHub Desktop.
Save SmithyAT/f319fb36070190d0f9f2a0481e79dfe8 to your computer and use it in GitHub Desktop.
VPN Manager Script
#!/bin/bash
PS3="Select item: "
function vpnActive() {
ip -f inet addr show tun0 > /dev/null 2>&1
if [ $? -eq 0 ] ; then return 0 ; else return 1 ; fi
}
function d2b() {
printf "%08d" $(echo "obase=2;$1"|bc)
}
function getPortForwarding {
if vpnActive
then
IPv4_ADDR=$(ip -f inet addr show tun0 | awk '/inet / {print $2}' | cut -d'/' -f1)
IFS='.' read -ra ADDR <<< "$IPv4_ADDR"
port_bin="$(d2b ${ADDR[2]})$(d2b ${ADDR[3]})"
port_dec=$(printf "%04d" $(echo "ibase=2;${port_bin:4}"|bc))
echo ""
echo "Usable Ports for PortFowarding:"
for i in 1 2 3; do
echo "$i$port_dec"
done
else
echo ""
echo "VPN not active!"
fi
}
function connect {
echo ""
if [[ ${1:0:3} != "HTB" ]]
then
echo "Enabling kill switch"
sudo ufw enable
fi
echo $1 > /tmp/vpn.tmp
echo "Starting VPN $1"
sudo systemctl start openvpn-client@$1
exit 0
}
function disconnect {
echo ""
if test -f "/tmp/vpn.tmp"; then
VPN=$(cat /tmp/vpn.tmp)
echo "Disconnect from VPN $VPN"
sudo systemctl stop openvpn-client@$VPN
rm -f /tmp/vpn.tmp
if [[ ${VPN:0:3} != "HTB" ]]
then
echo "Disable kill switch"
sudo ufw disable
fi
exit 0
else
echo "No active VPN found!"
exit 1
fi
}
function menuHTB {
items=(
"HTB_Academy"
"HTB_Server"
"HTB_StartingPoint"
)
select item in "${items[@]}"
do
case $REPLY in
q) exit 0;;
*)
if [ -z "$item" ]; then echo "Invalid choice!"; menuHTB; else connect $item; fi
exit 0;;
esac
done
}
function menuPerfectPrivacy {
items=(
"Amsterdam"
"Basel"
"Belgrade"
"Berlin"
"Calais"
"Chicago"
"Copenhagen"
"Dallas"
"Erfurt"
"Frankfurt"
"Hamburg"
"Hongkong"
"Jerusalem"
"London"
"LosAngeles"
"Madrid"
"Malmoe"
"Manchester"
"Miami"
"Milan"
"Montreal"
"Moscow"
"NewYork"
"Nuremberg"
"Oslo"
"Paris"
"Prague"
"Reykjavik"
"Riga"
"Rotterdam"
"Singapore"
"Stockholm"
"Sydney"
"Tokyo"
"Vienna"
"Warsaw"
"Zurich"
)
select item in "${items[@]}"
do
case $REPLY in
q) exit 0;;
*)
if [ -z "$item" ]; then echo "Invalid choice!"; menuPerfectPrivacy; else connect $item; fi
exit 0;;
esac
done
}
echo "VPN Manager:"
select item in "HackTheBox" "Perfect Privacy" "PortForwarding" "Disconnect" "Quit"
do
case $REPLY in
1) menuHTB; break;;
2) menuPerfectPrivacy; break;;
3) getPortForwarding; break;;
4|x|d) disconnect; break;;
5|q) exit 0; break;;
esac
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment