бесплатный vpn


Как известно, бесплатный сыр только в мышеловке. Так ли это? Сейчас узнаем.

Есть не новый сервис 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

Скачать скрипт.