VladimirTs
-
Posts
26 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Forums
Gallery
Downloads
Blogs
Events
Posts posted by VladimirTs
-
-
-
https://github.com/vladtsit/node-red-keenetic
- 1
-
Делюсь работающим примером
Function Get-StringHash([String] $String,$HashName = "MD5") { $StringBuilder = New-Object System.Text.StringBuilder [System.Security.Cryptography.HashAlgorithm]::Create($HashName).ComputeHash([System.Text.Encoding]::UTF8.GetBytes($String))|%{ [Void]$StringBuilder.Append($_.ToString("x2")) } $StringBuilder.ToString() } $session="" $user = "admin" $pass= "ppp" $authorized = $false try{ $site = Invoke-WebRequest -URI 'http://my.keenetic.net/auth' -SessionVariable session $authorized=$true }catch{ $s = $_.Exception.Response if($s.StatusCode -eq "Unauthorized"){ $token = $s.Headers["X-NDM-Challenge"] $realm = $s.Headers["X-NDM-Realm"] $id= $s.Cookies["session_id"].Value $tomd5=$user + ':' + $realm + ':' + $pass $hashmd5=Get-StringHash $tomd5 "MD5" $tohash = $token+$hashmd5 $hashed=Get-StringHash $tohash "SHA256" $body=@{"login"=$user ; "password"=$hashed} try{ $rv = Invoke-WebRequest -URI 'http://my.keenetic.net/auth' -Method Post -Body ($body|ConvertTo-Json) -WebSession $session -ContentType "application/json" $authorized = $true }catch{ } if ($authorized){ $v = Invoke-RestMethod -Uri 'http://my.keenetic.net/rci/show/ip/hotspot/host' -Method Get -WebSession $session -ContentType "application/json" } $v.Length } }
- 2
- 2
-
On 10/31/2018 at 7:26 AM, OmegaTron said:
Перед тем как сегодня отписаться, начал перепроверку кода под микроскопом (всмысле с отладкой) и таки была замечена пара просчётов - md5sum выполнялся без обрезки мусора после выхлопа, а printf в realm из-за пробелов выдавал только первый блок. Разбираться с экранированием буду позже (ибо с printf манипуляций меньше), пока вернулся назад к echo и обрезке \n через tr -d "\n". Теперь наконец всё работает и ответ от роутера "HTTP/1.1 200 OK" ))) C куками к слову всё было в порядке, просто глаз замылился и я в упор не видел ошибку
Привет, а можно на код посмотреть? Сделал не Powershell, но где-то ошибка:
$user = "admin" $pass= "aabbcc" try{ $site = Invoke-WebRequest 'http://192.168.1.1/auth' $state = $site.Headers $state }catch{ $s = $_.Exception.Response if($s.StatusCode -eq "Unauthorized"){ $token = $s.Headers["X-NDM-Challenge"] "Token:'$token'" $realm = $s.Headers["X-NDM-Realm"] "Realm:'$realm'" $id= $s.Cookies["session_id"].Value #sha256(token + md5(login + ':' + realm + ':' + password)) $tomd5=$user + ':' + $realm + ':' + $pass "ToMD5:'$tomd5'" $md5 = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider $utf8 = new-object -TypeName System.Text.UTF8Encoding $hashmd5 = [System.BitConverter]::ToString($md5.ComputeHash($utf8.GetBytes($tomd5))) $hashmd5=$hashmd5.Replace("-","") "HashMD5:'$hashmd5'" $tohash = $token "Tosha256:'$tohash'" $hashed="" New-object System.Security.Cryptography.SHA256Managed | ForEach-Object {$_.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($tohash))} | ForEach-Object { $hashed+=$_.ToString("x2")} $hashed=$hashed.ToUpper() "Sha256:'$hashed'" $session = New-Object Microsoft.PowerShell.Commands.WebRequestSession $cookie = New-Object System.Net.Cookie $cookie.Name = $s.Cookies[0].Name #"session_id" $cookie.Value = $s.Cookies[0].Value # ID $cookie.Domain = $s.Cookies[0].Domain $cookie $session.Cookies.Add($cookie); $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add('Content-Type','application/json') $headers $body='{"login":"'+$user+'", "password":"'+$hashed+'"}' "Body to post:$body" Invoke-WebRequest 'http://192.168.1.1/auth' -Method Post -Body $body -headers $headers -SessionVariable $session } }
Вывод скрипта:
Token:'SHNNEMKBAPROMVCZHVVSXMWBDRPLUDHG' Realm:'ZyXEL Keenetic Ultra' ToMD5:'admin:ZyXEL Keenetic Ultra:aabbcc' HashMD5:'CF67093EBBF9F768A853D56BEFB747D9' Tosha256:'SHNNEMKBAPROMVCZHVVSXMWBDRPLUDHG' Sha256:'DB7027E420608ACD3EECC82A647425F7F2A97C72857E2B3A4585A4F0FA95D56F' Comment : CommentUri : HttpOnly : False Discard : False Domain : 192.168.1.1 Expired : False Expires : 01.01.0001 0:00:00 Name : session_id Path : Port : Secure : False TimeStamp : 08.11.2018 17:40:38 Value : PYPHESBYQNKXNPZJ Version : 0 Key : Content-Type Value : application/json Body to post:{"login":"admin", "password":"DB7027E420608ACD3EECC82A647425F7F2A97C72857E2B3A4585A4F0FA95D56F"} Invoke-WebRequest : The remote server returned an error: (400) Bad Request. At C:\Users\vladt\Downloads\Untitled1.ps1:50 char:5 + Invoke-WebRequest 'http://192.168.1.1/auth' -Method Post -Body $ ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
-
@OmegaTron а можешь примером кода поделиться? Хочу то же самое на powershell сделать. Та да проблема.
-
On 5/30/2018 at 5:52 PM, Александр Рыжов said:
А по поводу использования токена, вероятно, @Le ecureuil скоро пояснит.
Появились ли Новости? @Le ecureuil
-
Все заработало, спасибо!
-
Может уже обсуждалось, но что-то не могу найти ответа.
Есть 2 кинетика: Ultra (белый IP,) 192.168.1.0; Giga (Серый IP), 192.168.2.0
Оба NDMS 2.11, объединенные IP-IP тонелем, весь траффик прозрачно ходит сежду подсетями, все работает.
Нужно создать VPN содеинение для клиентов Windows и IOS, которые будут подключаться к Ultra через белый IP.
С удаленного устройства должны быть видны обе сети. Какой выбрать протокол VPN? Как правильно настроить?
Спасибо!
-
Спасибо за разъяснение, а что если мне нужно получить доступ к rci из локальной сети? Обращаться по порту 79?
И связанный вопрос - если не работает basic auth, можно ли с помощью современных скриптовых языков, например, powershell, использовать поддерживаемую новую аутентификацию для вызова rci?
ИЗ документации поддерживаются:
-
OAuth: Requires -Token. Will send and RFC 6750
Authorization: Bearer
header with the supplied token. This is an alias for Bearer
-
OAuth: Requires -Token. Will send and RFC 6750
-
Спасибо, а есть пример на каком-нибудь языке? В принципе наверное можно запрограммировать и токен в заголовке.
-
Перестал работать следующий код на PowerShell - ошибка access denied, c предыдущей все было в порядке
$user = "admin" $pass= "****" $secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($user, $secpasswd) Invoke-WebRequest "http://192.168.1.1/rci/ip/route"-Credential $credential
-
-
-
Еще может быть полезен скрипт для добавления маршрутов
-
2 hours ago, Александр Рыжов said:
Откройте в своём любимом браузере отладчик (F12) и посмотрите что WebUI отсылает.
Поделюсь с сообществом скриптом, сделано через отправку параметров в body через json
function ConvertTo-IPv4MaskString { <# .РЕЗЮМЕ Преобразует число разрядов (0 - 32) в строку маски сети IPv4 (например, "255.255.255.0"). .ОПИСАНИЕ Преобразует число разрядов (0 - 32) в строку маски сети IPv4 (например, "255.255.255.0"). .ПАРАМЕТР MaskBits Указывает число разрядов в маске. #> param( [parameter(Mandatory=$true)] [ValidateRange(0,32)] [Int] $MaskBits ) $mask = ([Math]::Pow(2, $MaskBits) - 1) * [Math]::Pow(2, (32 - $MaskBits)) $bytes = [BitConverter]::GetBytes([UInt32] $mask) (($bytes.Count - 1).. 0 | ForEach-Object { [String] $bytes[$_] }) -join "." } $user = "admin" $pass= "password" $interface="OpenVPN0" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add('Content-Type','application/json') $secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($user, $secpasswd) $ips=get-content C:\1\ips.txt $ips| ForEach-Object { $network=$_.Split("\/")[0] $mask=ConvertTo-IPv4MaskString([int] $_.Split("\/")[1]) $body='{"network":"'+$network+'", "mask":"'+$mask+'", "interface":"'+$interface+'","auto": true }' $rv=Invoke-WebRequest "http://my.keenetic.net/rci/ip/route" -TimeoutSec 3 -Credential $credential -Method Post -Body $body -Headers $headers Write-Host "$network $mask processed:$(-not $rv.Content.Contains("error"))" }
формат файла ips.txt - сеть/маска
108.174.12.0/22
108.174.0.0/21
108.174.8.0/21
199.101.161.0/24- 1
- 1
-
Добрый, не подскажите, как с помощью RCI добавить маршрут?
URL понятен, http://192.168.1.1/rci/ip/route, а что и как отправить POST в body?
- 1
-
5 hours ago, zyxmon said:
А что запрещает использовать поиск -
то что в поиске понятно, спасибо. загрузка файла с маршрутами не сработала. а есть пример использования rci для добавления маршрута?
-
1 hour ago, zyxmon said:
pull-filter ignore "dhcp-pre-release"`
Помогло, спасибо.
Еще есть вопрос, как сделать так чтобы через OpenVpn шел траффик только до определенных перечисленных сайтов?
-
47 minutes ago, zyxmon said:
В том, который Вы указали-загрузили!
В кинетик был закгружено содержимое конфигурационного файла, который предоставил сервер.
Четвертая сторока выглядит так:
Первые строки выглядят так:
# Automatically generated OpenVPN client config file
# Generated on Sat Apr 14 08:32:01 2018 by openvpnas2
# Note: this config file contains inline private keys
# and therefore should be kept confidential!
# Note: this configuration is user-locked to the username below
# OVPN_ACCESS_SERVER_USERNAME=openvpn
# Define the profile name of this particular configuration file
# OVPN_ACCESS_SERVER_PROFILE=openvpn@111.236.174.121/AUTOLOGIN
# OVPN_ACCESS_SERVER_AUTOLOGIN=1
# OVPN_ACCESS_SERVER_CLI_PREF_ALLOW_WEB_IMPORT=True
# OVPN_ACCESS_SERVER_CLI_PREF_BASIC_CLIENT=False
# OVPN_ACCESS_SERVER_CLI_PREF_ENABLE_CONNECT=True
# OVPN_ACCESS_SERVER_CLI_PREF_ENABLE_XD_PROXY=True
# OVPN_ACCESS_SERVER_WSHOST=111.236.174.121:443
# OVPN_ACCESS_SERVER_WEB_CA_BUNDLE_STARTупоминания про dhcp-pre-release (2.4.4)
в нем нет
-
1 hour ago, zyxmon said:
Причем тут знак комментария.
Тогда не понимаю где и что удалить. Там написано 4я строка, ее где искать? В каком файле конфигурации?
-
20 minutes ago, zyxmon said:
На ангельском языке написано, в какой строке конфига ошибка. Удалите ее.
Вот первые 4 строки из тех перед которыми нет #
setenv FORWARD_COMPATIBLE 1
client
server-poll-timeout 4
nobindУдаление nobind не помогает
-
Добрый день!
не получается настроить, есть свой сервер в облаке https://azure.microsoft.com/ru-ru/resources/templates/openvpn-access-server-ubuntu/
Windows и ios работаю отлично. В кинетике ошибка. NDMS 2.12
Что не так сделано?
Apr 14 12:30:47OpenVPN0OpenVPN 2.4.4 [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [AEAD]Apr 14 12:30:47OpenVPN0library versions: OpenSSL 1.1.0h 27 Mar 2018, LZO 2.10Apr 14 12:30:47OpenVPN0WARNING: --ns-cert-type is DEPRECATED. Use --remote-cert-tls instead.Apr 14 12:30:47OpenVPN0Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authenticationApr 14 12:30:47OpenVPN0Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authenticationApr 14 12:30:47OpenVPN0Socket Buffers: R=[155648->200000] S=[155648->200000]Apr 14 12:30:47OpenVPN0UDP link local: (not bound)Apr 14 12:30:47OpenVPN0UDP link remote: [AF_INET]11.23.174.121:1194Apr 14 12:30:47OpenVPN0NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delayApr 14 12:30:47OpenVPN0TLS: Initial packet from [AF_INET]11.23.174.121:1194, sid=66224f4f d9a7ca42Apr 14 12:30:47OpenVPN0VERIFY SCRIPT OK: depth=1, CN=OpenVPN CAApr 14 12:30:47OpenVPN0VERIFY OK: depth=1, CN=OpenVPN CAApr 14 12:30:47OpenVPN0VERIFY OK: nsCertType=SERVERApr 14 12:30:47OpenVPN0VERIFY SCRIPT OK: depth=0, CN=OpenVPN ServerApr 14 12:30:47OpenVPN0VERIFY OK: depth=0, CN=OpenVPN ServerApr 14 12:30:49ndmCore::ConfigurationSaver: configuration saved.Apr 14 12:30:50OpenVPN0Control Channel: TLSv1.2, cipher TLSv1.2 DHE-RSA-AES256-GCM-SHA384, 2048 bit RSAApr 14 12:30:50OpenVPN0[OpenVPN Server] Peer Connection Initiated with [AF_INET]11.23.174.121:1194Apr 14 12:30:50ndmNetwork::Interface::OpenVpn: "OpenVPN0": added host route to remote endpoint 11.23.174.121:1194 via 192.168.8.1.Apr 14 12:30:51OpenVPN0SENT CONTROL [OpenVPN Server]: 'PUSH_REQUEST' (status=1)Apr 14 12:30:51OpenVPN0PUSH: Received control message: 'PUSH_REPLY,explicit-exit-notify,topology subnet,route-delay 5 30,dhcp-pre-release,dhcp-renew,dhcp-release,route-metric 101,ping 12,ping-restart 50,comp-lzo yes,redirect-gateway def1,redirect-gateway bypass-dhcp,redirect-gateway autolocal,route-gateway 172.27.232.1,dhcp-option DNS 168.63.129.16,register-dns,block-ipv6,ifconfig 172.27.232.56 255.255.248.0'Apr 14 12:30:51OpenVPN0Option 'explicit-exit-notify' in line 1 is ignored by previous <connection> blocksApr 14 12:30:51OpenVPN0Unrecognized option or missing or extra parameter(s) in configuration: (line 4): dhcp-pre-release (2.4.4)Apr 14 12:30:51OpenVPN0Exiting due to fatal errorApr 14 12:30:51ndmService: "OpenVPN0": unexpectedly stopped. -
Добрый день!
Использую Https для доступа к внутреннему сайту, очень часто (2-3 раза в час) появляется ошибка (Keenetic 4G III), подключение через модем.
Cloud::Tunnel: "NDNS/733bf23ce566fb206e0084eb632c256e": WAN: failed to receive data from 192.168.8.100:443 - connection reset by peer.
Аналогично настроенное соединение через проводного провайдера (Ultra) ошибок не выдает.
Как улучшить надежность? На модеме качество связи очень высокое - вышка рядом, 4g Yota.
Может у Keenetic 4G III просто мощности процессора или памяти не хватает?
Status Internet access Modem HUAWEI_MOBILE Network type 4G Software version 22.317.01.00.17 / 17.100.13.01.03-Mod1.3 Signal (CINR/RSSI) 27dB / -65dBm LTE device ID removed IPv4 address 10.152.72.60 MAC address BA:AB:BE:34:44:45 KeenDNS name removed.mykeenetic.net Mode CDC Ethernet -
RCI Reboot
in 2.12
Спасибо, работает.
кстати, если кому интересно - скрипт на PowerShell
$user = "admin" $pass= "password" $secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($user, $secpasswd) $rv=Invoke-WebRequest "http://my.keenetic.net/rci/system/reboot?interval=60" -TimeoutSec 3 -Credential $credential -Method Post -Body "{}" $message = "Router: $(($rv.Content |ConvertFrom-Json).message)" Write-Host $message
- 3
Максимальное количество маршрутов
in Обмен опытом
Posted
+1 нигде не могу найти про ограничения