Как известно, бесплатный сыр только в мышеловке. Так ли это? Сейчас узнаем.
Есть не новый сервис superfreevpn.com про который я узнал совсем недавно из статьи на Хабре.
В комментариях к этой статье был написан код, выдирающий пароль из картинки. Дело в том, что пароль к этому бесплатному vpn постоянно меняется, но хранится в виде картинки на главной странице, вместе с другими параметрами подключения.
Я решил написать автоматический скрипт соединения с vpn на основе комментария и собственного скрипта.
Вот он
#!/bin/bash
# coded by insider
# getting password
gifurl=$(curl -s http://superfreevpn.com/ | grep "VPN Password" | cut -d\" -f 8)
password=$(curl -s http://superfreevpn.com$gifurl -e http://superfreevpn.com | giftopnm | gocr -)
# rewriting configs
echo "maxfail 0
lcp-echo-interval 60
lcp-echo-failure 4
defaultroute
pty 'pptp superfreevpn.com --nolaunchpppd'
name free
remotename superfreevpn.com
file /etc/ppp/options.pptp
ipparam freevpn
deflate 15,15
mtu 1412
require-mppe-128" > /etc/ppp/peers/freevpn
# checking if password is the same, if not delete old auth line and add new password
if ! grep -q $password /etc/ppp/chap-secrets; then
sed -i '/superfreevpn.com/d' /etc/ppp/chap-secrets
echo "free superfreevpn.com $password *" >> /etc/ppp/chap-secrets
fi
# connecting
pppd call freevpn
control_c()
# run if user hits control-c
{
echo -e "\nStopping vpn connection\n"
killall pppd
route add default gw $defgw
exit $?
}
trap control_c SIGINT
defgw=$(route -n | awk '/UG / {a=$2} END {print a}')
while ! route -n | grep -q UH; do
sleep 1
echo -en "Waiting till VPN connects...\r"
done
echo
gw=$(route -n | awk '/UH/ {a=$1} END {print a}')
route del default
route add default gw $gw
echo "VPN connection is established, press ctrl+c to stop it"
while true; do
read x
done
Скрипт вытаскивает пароль со странички сервиса vpn, обновляет конфигурационные файлы pptp, соединяется, меняет дефолтный шлюз на vpn`овский и уходит в бесконечный цикл, при прерывании, восстанавливает шлюз и обрывает соединение.
Для корректной работы скрипта понадобятся пакеты: netpbm, gocr, curl, wget, pptp
Скачать скрипт.