Авторизация OpenVPN без ввода логина и пароля
1. Ручная настройка OpenVPN-конфигураций для автоматической авторизации 2. Готовые конфигурации OpenVPN с автоматической авторизацией 3. Скрипты настройки OpenVPN-конфигураций на автоматическую авторизацию – 3.1. BASH-скрипт – 3.2. Batch (Bat-файл) – 3.3. Perl-скрипт – 3.4. PHP-скрипт – 3.5. Python-скрипт – 3.6. Ruby-скрипт1. Ручная настройка OpenVPN-конфигураций
Авторизоваться при подключении к OpenVPN, не вводя логин и пароль, возможно слегка изменив конфигурационный файл выбранной цепи. Для этого достаточно открыть файл OpenVPN-конфигурации (.ovpn) через текстовый редактор и заменить строку auth-user-pass на auth-user-pass auth.txt.... auth-user-pass auth.txt ...После изменения файла конфига OpenVPN-клиент (при подключении по данной конфигурации) будет запрашивать имя пользователя и пароль в файле auth.txt, расположенному в директории этого конфига. При этом, для корректной автоматической авторизации, файл auth.txt должен содержать только 2 строки: имя пользователя, записанное на первой строке, и пароль, записанный на второй строке.
username password
Имя пользователя и пароль полностью совпадают с именем пользователя и паролем от Кабинета DeepWebVPN.
В ОС Windows для редактирования файла конфигурации НЕ следует использовать приложение Блокнот, воспользуйтесь WordPad, которое корректно отображает UNIX-подобный перенос строки.
2. Готовые конфигурации OpenVPN
DeepWebVPN предоставляет уже настроенные на автоматическую авторизацию конфигурации OpenVPN. Доступны для скачивания: архив со всеми конфигурациями, архив только с одиночными цепями (Single-цепи) и архив только с двойными цепями (Double-цепи).После извлечения архива в директорию с конфигурациями OpenVPN доступными для VPN-клиента, следует в этой же директории создать файл auth.txt согласно описанию в разделе Ручная настройка OpenVPN-конфигураций.
3. Скрипты настройки OpenVPN-конфигураций
Представленные ниже скрипты следует записать в файл с правами на исполнение, после чего запустить в соответствующем интерпретаторе.
Пользователь, от которого запускается скрипт, должен иметь права на изменение файлов конфигурации OpenVPN.
3.1. BASH-скрипт
#!/bin/bash # Update all OpenVPN configs for use user login and password from file # profexer(https://rdot.org/forum/member.php?u=1143) for deepwebvpn.net, 2015 if [ $# -ne 3 ]; then echo 'Please, enter configs dir, your name and password.' exit fi if [ ! -d $1 ]; then echo -e '\e[91mConfigs dir not exists\e[39m' exit fi cd $1 if [ -f 'auth.txt' ]; then if [ ! -w 'auth.txt' ]; then echo -e '\e[91mPlease, fix permissions for auth.txt\e[39m' exit fi read -r -p 'File auth.txt exists. Rewrite (Y/n)? ' ans if [ "$ans" == "n" ] || [ "$ans" == "N" ]; then exit fi fi echo -e "$2\n$3" > auth.txt for fl in *.ovpn; do echo -n $fl if [ ! -r $fl ]; then echo -e "\e[91m NOT READABLE" elif [ ! -w $fl ]; then echo -e "\e[91m NOT WRITABLE" else sed -i 's/auth-user-pass/auth-user-pass auth.txt/' $fl echo -e "\e[92m OK" fi echo -ne "\e[39m" done
3.2. Batch (Bat-файл)
@echo off SetLocal EnableDelayedExpansion echo Update all OpenVPN configs for use user login and password from file. echo. Set /p dir="Enter configs dir: " Set /p name="Enter username: " Set /p pass="Enter password: " for /f "DELIMS=" %%i in ('dir "%dir%\*.ovpn" /b') do ( for /f "usebackq tokens=*" %%j in ("%dir%\%%i") do (set line=%%j& (<nul set /p a=!line:auth-user-pass=auth-user-pass auth.txt!& echo.)>>"%dir%\.tmp") del "%dir%\%%i" & ren "%dir%\.tmp" "%%i") (<nul set /p a=%name%& echo.& <nul set /p a=%pass%) > "%dir%\auth.txt" echo. pause
3.3. Perl-скрипт
#!/usr/bin/perl if (@ARGV != 3) { print "Usage: make_auth.pl <configs dir> <username> <password>\n"; exit 1; } my ($config_dir, $username, $password) = @ARGV; #if ((substr $config_dir, -1) != "/") { $config_dir = $config_dir . "/"; #} my @configs = glob $config_dir . "*.ovpn"; print $configs; if (@configs < 1) { print "No config files found in directory or not enough permissions"; exit 1; } foreach $config_file (@configs) { print "Modifying $config_file\n"; open my $lines, $config_file or die "Could not open $config_file: $!"; my @config; while(my $line = <$lines>) { my $line_trim = $line; $line_trim =~ s/^\s+|\s+$//g; if ($line_trim eq "auth-user-pass") { $line =~ s/auth-user-pass/auth-user-pass auth.txt/g; } push @config, $line; } close $lines; open my $fh, ">", $config_file; while (@config > 0) { $line = shift @config; print $fh $line; } close $fh; } open my $fh, ">", $config_dir . "auth.txt"; print $fh $username . "\n" . $password . "\n"; close $fh; print "OK\n";
3.4. PHP-скрипт
<?php # Update all OpenVPN configs for use user login and password from file # profexer(https://rdot.org/forum/member.php?u=1143) for deepwebvpn.net, 2015 if($argc!=4) die("Please, enter configs dir, your name and password.\n"); if( !is_dir($argv[1]) ) die("\033[91mConfigs dir not exists.\033[0m\n"); if( !@chdir($argv[1]) ) die("\033[91mCan't open configs dir. Please, check permissions.\033[0m\n"); if( file_exists('auth.txt') ) { if( is_dir('auth.txt') ) die("Funny)\n"); if( !is_writable('auth.txt') ) die("\033[91mPlease, fix permissions for auth.txt\033[0m\n"); echo 'File auth.txt exists. Rewrite (Y/n)? '; $c = fread(STDIN, 1); if($c=='n' || $c=='N') die; } file_put_contents('auth.txt', $argv[2]."\n".$argv[3]); $fls = glob("*.ovpn"); foreach($fls as $fl) if( !is_dir($fl) ) { echo $fl; if( !is_readable($fl) ) echo "\033[91m NOT READABLE\033[0m"; elseif( !is_writable($fl) ) echo "\033[91m NOT WRITABLE\033[0m"; else { file_put_contents($fl, preg_replace('#auth-user-pass#m', 'auth-user-pass auth.txt', file_get_contents($fl))); echo "\033[92m OK\033[0m"; } echo "\n"; } ?>
3.5. Python-скрипт
#!/usr/bin/python import sys, glob if len(sys.argv) != 4: print "Usage: ./%s <configs dir> <username> <password>" % (sys.argv[0]) sys.exit(0) config_dir = sys.argv[1] if sys.argv[1][-1] == "/" else sys.argv[1] + "/" username = sys.argv[2] password = sys.argv[3] glob_res = glob.glob(config_dir + "*.ovpn") if len(glob_res) == 0: print 'No config files found. Maybe wrong dir?' sys.exit(1) try: for config in glob_res: print "Modifying %s" % (config) content = [] for line in open(config, "r"): if "auth-user-pass" == line.strip(): content.append(line.replace("auth-user-pass", "auth-user-pass auth.txt")) else: content.append(line) with open(config, "w") as config_file: config_file.write("".join(content)) with open(config_dir + "auth.txt", "w") as auth_file: auth_file.write(username + "\n") auth_file.write(password + "\n") print "OK" except: print "Error occured. May be insufficient permissions?" sys.exit(1)
3.6. Ruby-скрипт
#!/usr/bin/env ruby if ARGV.size!=3 puts "Usage: ./make_auth.rb <configs dir> <username> <password>" exit(0) end config_dir=ARGV[0] username=ARGV[1] password=ARGV[2] Dir.glob("#{config_dir}/*.ovpn").each do |ovpn| print "Reconfig #{ovpn}...\t" content=[] File.open(ovpn, 'r') do |fl| while !fl.eof str=fl.gets str="auth-user-pass auth.txt\n" if str.include?('auth-user-pass') content << [str] end end File.open(ovpn, 'w') do |fl| fl.puts content.join("") end puts "done" File.open("#{config_dir}/auth.txt", 'w') do |auth| auth.puts username auth.puts password end end