#include <Crypt.au3>
Login('OgoГоша', 'DcPlusplus123')
Exit
Func Login($vUserName, $vUserPass)
Local $vSite = 'http://autoit-script.ru/'
Local $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET", $vSite)
$oHTTP.Send()
Local $vData = $oHTTP.Responsetext
Local $vTemp = StringRegExp($vData, 'hashLoginPassword.*?([[:xdigit:]]{32})', 1)
If Not IsArray($vTemp) Then Return SetError(1, 0, 0)
Local $vSid = $vTemp[0]
$vTemp = StringRegExp($vData, 'PHPSESSID=(\w+)', 1)
If Not IsArray($vTemp) Then Return SetError(2, 0, 0)
Local $vSesSid = $vTemp[0]
Local $vHash = sha1(sha1(strtolower(_Encoding_ANSIToUTF8($vUserName)) & _Encoding_ANSIToUTF8($vUserPass)) & $vSid)
Local $vPostData = 'user=' & $vUserName & '&passwrd=&cookielength=-1&hash_passwrd=' & $vHash
$oHTTP.Open("POST", $vSite & 'index.php?PHPSESSID=' & $vSesSid & '&action=login2', False)
$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
$oHTTP.Send($vPostData)
$oHTTP.Open("GET", $vSite)
$oHTTP.Send()
Local $HTMLSource = $oHTTP.Responsetext
Local $aName = StringRegExp($HTMLSource, '<li id="name".*?</li>', 1)
If Not IsArray($aName) Then
ConsoleWrite($HTMLSource & @LF)
Else
ConsoleWrite(StringRegExpReplace($aName[0], '<.*?>', '') & @LF)
EndIf
EndFunc
Func _Encoding_ANSIToUTF8($sString)
Return BinaryToString(StringToBinary($sString, 4))
EndFunc
Func sha1($vData)
Return StringLower(StringSplit(_Crypt_HashData($vData, $CALG_SHA1), 2))
EndFunc
Func strtolower($sData)
If Not $sData Or StringIsLower($sData) Then Return $sData
Local $vDatas = StringSplit($sData, '', 2), $vRet
For $vData In $vDatas
If StringRegExp($vData, '[A-Z]') Then
$vRet &= StringLower($vData)
Else
$vRet &= $vData
EndIf
Next
Return $vRet
EndFunc