Что нового

Вычисление кода OAuth

angro

Новичок
Сообщения
31
Репутация
1
Нужно вычислить строку Verifier из строки Challenge, ниже рабочие строки.
Здесь можно вычислить обратно из Verifier Challenge

Код:
$Challenge = 'VOcMRbFL4zCPQc9I5x9nbyk8eBOWNp56TQeTayiQPbY'
$Verifier = '1GWEbbIP7oIVYhAB+BrMV845bbsG+Igs2pCCXUuNOkJfvcyD1lrhx5t7pybdwrewYZi3NH6EKoo9Xet3IOlYmg=='


Пример из исходников на С#

Код:
challengeCodeSource = Guid.NewGuid();
        challengeCode = Encoding.UTF8.GetBytes(challengeCodeSource.ToString().Replace("-", ""));
        challengeHash = Base64UrlEncoder.Encode(ISBoxerEVELauncher.Security.SHA256.GenerateHash(Base64UrlEncoder.Encode(challengeCode)));


Помогите реализовать это на автоит
 

idbehold

Новичок
Сообщения
42
Репутация
4
Обратно никак не вычислить, бро =)
verifer это случайно сгенерированная строка verifier = base64url(crypto.pseudoRandomBytes(32))
Можешь глянуть тут подробнее : strategy.js (on github)

Предположу, что тебе нужно проверить полученный challengeHash в своем приложении,
поэтому вот тебе код для проверки, а превратить Challenge обратно в Verifier никак не получится

Код:
#include <Crypt.au3>

$Challenge = 'VOcMRbFL4zCPQc9I5x9nbyk8eBOWNp56TQeTayiQPbY'
$Verifier = '1GWEbbIP7oIVYhAB+BrMV845bbsG+Igs2pCCXUuNOkJfvcyD1lrhx5t7pybdwrewYZi3NH6EKoo9Xet3IOlYmg=='

$encodedVerifier =  StringReplace(base64(_Crypt_HashData($Verifier,  $CALG_SHA_256), true),  "=", "")

ConsoleWrite('$Challenge       : ' &  $Challenge &  @CRLF)
ConsoleWrite('$encodedVerifier : ' &  $encodedVerifier &  @CRLF)

if $encodedVerifier ==  $Challenge Then 
    ConsoleWrite('OK' &  @CRLF)    
Else 
    ConsoleWrite('FAIL' &  @CRLF)    
EndIf


;==============================================================================================================================
; Author (s):       (Ghads on Wordpress.com), Ascer
;===============================================================================================================================
Func base64($vCode, $bEncode = True, $bUrl = False)

    Local $oDM = ObjCreate("Microsoft.XMLDOM")
    If Not IsObj($oDM) Then Return SetError(1, 0, 1)

    Local $oEL = $oDM.createElement("Tmp")
    $oEL.DataType = "bin.base64"

    If $bEncode then
        $oEL.NodeTypedValue = Binary($vCode)
        If Not $bUrl Then Return $oEL.Text
        Return StringReplace(StringReplace(StringReplace($oEL.Text, "+", "-"),"/", "_"), @LF, "")
    Else
        If $bUrl Then $vCode = StringReplace(StringReplace($vCode, "-", "+"), "_", "/")
        $oEL.Text = $vCode
        Return $oEL.NodeTypedValue
    EndIf

EndFunc ;==>base64

И поправьте кто-нибудь пост - при попытке выделить текст меня отправляет по ссылке с первого сообщения.
 
Автор
A

angro

Новичок
Сообщения
31
Репутация
1
Спасибо большое за код и оперативность ответа :good:
Нашёл здесь, генератор, понравилась реализация

Код:
$pwd = ""
Dim $aSpace[3]
$digits = 128
For $i = 1 To $digits
    $aSpace[0] = Chr(Random(65, 90, 1)) ;A-Z
    $aSpace[1] = Chr(Random(97, 122, 1)) ;a-z
    $aSpace[2] = Chr(Random(48, 57, 1)) ;0-9
    $pwd &= $aSpace[Random(0, 2, 1)]
Next
ConsoleWrite("Your password (" & $digits & " digits): " & $pwd & @CRLF)
 
Последнее редактирование:

idbehold

Новичок
Сообщения
42
Репутация
4
Спасибо большое за код и оперативность ответа :good:
idbehold подскажи как сгенерировать этот pseudoRandomBytes(32) в автоит

Пожалуй так:
Код:
#include <Crypt.au3>

$randomBytes = _PseudoRandomBytes(32)
$Verifier = base64(StringMid(_PseudoRandomBytes(32), 2, 64), true, true)
$Challenge = StringReplace(base64(_Crypt_HashData($Verifier,  $CALG_SHA_256), true, true),  "=", "")

ConsoleWrite('$Verifier : ' & $Verifier & @CRLF )
ConsoleWrite('$Challenge : ' & $Challenge & @CRLF )

; see https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptgenrandom
Func _PseudoRandomBytes($amount)
    Local $tBuff = DllStructCreate("byte[" & $amount & "]")
    _Crypt_GenRandom($tBuff, DllStructGetSize($tBuff))
    Return DllStructGetData($tBuff, 1)
EndFunc 

;==============================================================================================================================
; Author (s):       (Ghads on Wordpress.com), Ascer
;===============================================================================================================================
Func base64($vCode, $bEncode = True, $bUrl = False)

    Local $oDM = ObjCreate("Microsoft.XMLDOM")
    If Not IsObj($oDM) Then Return SetError(1, 0, 1)

    Local $oEL = $oDM.createElement("Tmp")
    $oEL.DataType = "bin.base64"

    If $bEncode then
        $oEL.NodeTypedValue = Binary($vCode)
        If Not $bUrl Then Return $oEL.Text
        Return StringReplace(StringReplace(StringReplace($oEL.Text, "+", "-"),"/", "_"), @LF, "")
    Else
        If $bUrl Then $vCode = StringReplace(StringReplace($vCode, "-", "+"), "_", "/")
        $oEL.Text = $vCode
        Return $oEL.NodeTypedValue
    EndIf

EndFunc ;==>base64


На самом деле - если ты пишешь свой сервер авторизации, то какой хочешь способ такой и выбирай (хоть 2 вызова md5 склей), но желательно, чтобы строка была максимально случайной.
И еще - я в первом ответе недосмотрел - там везде используй base64(..., true, true) - третий параметр $bUrl = true, иначе могут попадаться переносы строк в сгенерированном ключе
 
Автор
A

angro

Новичок
Сообщения
31
Репутация
1
Это для лаунчера eve, там теперь всё по фэншую. Спасибо огромное, сильно помог.
Заработало, спасибо.
 
Последнее редактирование:
Автор
A

angro

Новичок
Сообщения
31
Репутация
1
Это нужно для запуска клиентов евы без участия официального лаунчера, но если нет всего остального кода, то код обсуждаемый здесь не нужен.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Вы же понимаете что ваших ботов сразу же побанят если вы начнете взаимодействовать с игрой не через клаву и мышь а через код? :smile:
 
Автор
A

angro

Новичок
Сообщения
31
Репутация
1
Belfigor уж кто бы говорил, вроде образованный человек.
Вроде должен знать, что клава с мышью не имеют никакого отношения к взаимодействию с программным обеспечением.
Есть конечно решения блокирующие вызовы вин апи и работающие на уровне драйверов, но это не про еву.
И потом кто говорил про ботов, я на полном серьёзе не планирую их использовать.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Моё дело лишь поделиться опытом :smile:
 
Верх