Jump to content

VladimirTs

Forum Members
  • Posts

    26
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by VladimirTs

  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
        }
    }

     

    • Thanks 2
    • Upvote 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
     

     

  3. Может уже обсуждалось, но что-то не могу найти ответа.

    Есть 2 кинетика: Ultra (белый IP,) 192.168.1.0; Giga (Серый IP), 192.168.2.0

    Оба NDMS 2.11,  объединенные IP-IP тонелем, весь траффик прозрачно ходит сежду подсетями, все работает.

    Нужно создать VPN содеинение для клиентов Windows и IOS, которые будут подключаться к Ultra через белый IP.

    С удаленного устройства должны быть видны обе сети. Какой выбрать протокол VPN? Как правильно настроить?

    Спасибо!

  4. Спасибо за разъяснение, а что если мне нужно получить доступ к 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
  5. Перестал работать следующий код на 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

     

  6. 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

     

     

    • Thanks 1
    • Upvote 1
  7. Добрый, не подскажите, как с помощью RCI добавить маршрут? 

    URL понятен, http://192.168.1.1/rci/ip/route, а что и как отправить POST в body?

    • Thanks 1
  8. 5 hours ago, zyxmon said:

    А что запрещает использовать поиск - 

    то что в поиске понятно, спасибо. загрузка файла с маршрутами не сработала. а есть пример использования rci для добавления маршрута?

  9. 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) 

    в нем нет

  10. 20 minutes ago, zyxmon said:

    На ангельском языке написано, в какой строке конфига ошибка. Удалите ее.

    Вот первые 4 строки из тех перед которыми нет #

    setenv FORWARD_COMPATIBLE 1
    client
    server-poll-timeout 4
    nobind

    Удаление nobind не помогает

  11. Добрый день!

    не получается настроить, есть свой сервер в облаке https://azure.microsoft.com/ru-ru/resources/templates/openvpn-access-server-ubuntu/

    Windows и ios работаю отлично. В кинетике ошибка. NDMS 2.12

    Что не так сделано?

    Apr 14 12:30:47OpenVPN0
    OpenVPN 2.4.4 [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [AEAD]
    Apr 14 12:30:47OpenVPN0
    library versions: OpenSSL 1.1.0h 27 Mar 2018, LZO 2.10
    Apr 14 12:30:47OpenVPN0
    WARNING: --ns-cert-type is DEPRECATED. Use --remote-cert-tls instead.
    Apr 14 12:30:47OpenVPN0
    Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
    Apr 14 12:30:47OpenVPN0
    Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
    Apr 14 12:30:47OpenVPN0
    Socket Buffers: R=[155648->200000] S=[155648->200000]
    Apr 14 12:30:47OpenVPN0
    UDP link local: (not bound)
    Apr 14 12:30:47OpenVPN0
    UDP link remote: [AF_INET]11.23.174.121:1194
    Apr 14 12:30:47OpenVPN0
    NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay
    Apr 14 12:30:47OpenVPN0
    TLS: Initial packet from [AF_INET]11.23.174.121:1194, sid=66224f4f d9a7ca42
    Apr 14 12:30:47OpenVPN0
    VERIFY SCRIPT OK: depth=1, CN=OpenVPN CA
    Apr 14 12:30:47OpenVPN0
    VERIFY OK: depth=1, CN=OpenVPN CA
    Apr 14 12:30:47OpenVPN0
    VERIFY OK: nsCertType=SERVER
    Apr 14 12:30:47OpenVPN0
    VERIFY SCRIPT OK: depth=0, CN=OpenVPN Server
    Apr 14 12:30:47OpenVPN0
    VERIFY OK: depth=0, CN=OpenVPN Server
    Apr 14 12:30:49ndm
    Core::ConfigurationSaver: configuration saved.
    Apr 14 12:30:50OpenVPN0
    Control Channel: TLSv1.2, cipher TLSv1.2 DHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
    Apr 14 12:30:50OpenVPN0
    [OpenVPN Server] Peer Connection Initiated with [AF_INET]11.23.174.121:1194
    Apr 14 12:30:50ndm
    Network::Interface::OpenVpn: "OpenVPN0": added host route to remote endpoint 11.23.174.121:1194 via 192.168.8.1.
    Apr 14 12:30:51OpenVPN0
    SENT CONTROL [OpenVPN Server]: 'PUSH_REQUEST' (status=1)
    Apr 14 12:30:51OpenVPN0
    PUSH: 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:51OpenVPN0
    Option 'explicit-exit-notify' in line 1 is ignored by previous <connection> blocks
    Apr 14 12:30:51OpenVPN0
    Unrecognized option or missing or extra parameter(s) in configuration: (line 4): dhcp-pre-release (2.4.4)
    Apr 14 12:30:51OpenVPN0
    Exiting due to fatal error
    Apr 14 12:30:51ndm
    Service: "OpenVPN0": unexpectedly stopped.

     

    Cloud

    Добрый день!

    Использую 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
  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

     

    • Thanks 3
×
×
  • Create New...