Página 2 de 2

Re: Validación de licencias (Función PHP)

Publicado: 24 Nov 2009, 16:15
por arkcrew
exacto, ahi esta el problema, siempr me dice que la licencia es válida ..
Al utilizar la funcion php funciona, por eso queria pasarla a autoit
Un saludo y gracias.

Re: Validación de licencias (Función PHP)

Publicado: 24 Nov 2009, 18:48
por gna08
ueno, haber, trate de traducir la funcion php a au3, lo vas a probar y darme el visto bueno, o malo pork acordate k no tengo una cuentta en nod paara hacer pruebas, asik no sabre lo que devuelve asta k me digas..
En teoria es tu codigo php.. Probe con una cuetna k encontre por alli pEro parece k no funciona o expiro...
Ok. decime k onda.. que si fucniona me trae un par de ideilla :smt020 sin contar k la funcion base64_encode es propia de php asik imaginate :O :smt021
Saludos.

P/D: Adaptalo segun sea la version del nod.. yo solo trankribi el primero.. :smt024

Aca el code:

Código: Seleccionar todo

MIRAR EL DE ABAJOOO PROXIMOS DOS POST  :smt023 EndFunc

Re: Validación de licencias (Función PHP)

Publicado: 24 Nov 2009, 21:04
por arkcrew
gracias por tu ayuda, mañana sim falta lo pruebo y te cuento.
Si ecesitas un user y pas para pruebas dejo esta url que siempre muestra uno válido (yo mismo me encague de ello)
http://Www.arkcrew.com/code.php?p=user&decod=1

Re: Validación de licencias (Función PHP)

Publicado: 24 Nov 2009, 21:24
por gna08
Ok. acabo de probar.. lo k debuelve si es correcto es bynario... asik solo prueba esto que acabo de modificarlo... y me decis.. probe poniendo esas claves k me dijiste y me dice true--- pongo otra y me sale error :O :smt023
Creo que funciona, el anterior nooo!!.. pero vos corrobora.. nos vemos :smt006 .

Código: Seleccionar todo

MsgBox(64, "", checkData("EAV-24227182", "vuv67s3a6x"))



func checkData($user, $pass)

    Local $nodv

    Local $nodt

    TCPStartup()

    $hosteset = "u24.eset.com"

    $socketnod = TCPConnect(TCPNameToIP($hosteset), 80)

    $headerpath = "/download/engine3/em000_32_l0.nup";                  //Si no se especificó un tipo de versión, este será el preterminado

    if $user = "" Or $pass = "" Then return FALSE;                       //Si no nos mandaron un usuario o una contraseña, los datos son inválidos

        if $nodt = "ess" Then   ;                                              //Para Eset Smart Security

            $headerpath = "/download/engine3ess/em010_32_n1.nup";

        elseif $nodt = "essbe" Then;                                             //Para Eset Smart Security Business

            $headerpath = "/download/engine3ess/em010_32_n1.nup";

        elseif StringInStr('^2\..*',$nodv) Then;                                       //Para cualquiera de las versiones 2.x

;~          $headerpath = "/download/engine/charon1.nup";

    EndIf

    _Base64Encode("");

    $header = "GET " & $headerpath & " HTTP/1.1" & @crlf & _

                "Host: " & $hosteset & @crlf & _

                "Connection: " & "Close" & @crlf & _

                "Authorization: " & "Basic " & _Base64Encode($user & ":" & $pass) & @crlf & @crlf

    if ($socketnod) Then

        $s = TCPSend($socketnod,$header);                                         //Mandamos el header

        while 1

            $datonod = TCPRecv($socketnod, 4096);                              //Leemos los datos que entran

            If $datonod <> "" Then

                $header2 = StringReplace(StringReplace($datonod,chr(10), ""),chr(13), "");

                if (StringInStr('HTTP/1.1 200 OK',$header2)) Then            ;     //Si todo fue bien (HTTP/x.x 200 OK)

                    TCPCloseSocket($socketnod);                                           //Cerramos el socket

                    TCPShutdown()

                    return TRUE                                                 ;  //Retornamos TRUE que indica que el usuario y password a revisar, son correctos y sirven

                else                                                          ;  //Cualquier otro header (que por lo general es: HTTP/1.1 401 Authorization Required) indica error y la licencia no es válida

                    If IsBinary($datonod) Then

                        TCPCloseSocket($socketnod);                                           //Cerramos el socket

                        TCPShutdown()

                        Return True

                    Else

                        TCPCloseSocket($socketnod);                                           //Cerramos el socket

                        TCPShutdown()

                        return FALSE

                    EndIf

                EndIf

            EndIf

        WEnd

      EndIf

    TCPShutdown()

    return FALSE

EndFunc





Func _Base64Encode($Data)

    Local $Base64EncOpcode = "0x5589E5FF7510535657EB1A8B5D088B7DFC8B4D0CE81F000000834508038345FC04836D0C03837D0C007FE08B75FCC606005F5E5BC9C21000E8410000004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2F005A0FB633C1EE0201D68A06880731C083F901760C0FB6430125F0000000C1E8040FB63383E603C1E60409C601D68A0688470183F90176210FB6430225C0000000C1E8060FB6730183E60FC1E60209C601D68A06884702EB04C647023D83F90276100FB6730283E63F01D68A06884703EB04C647033DC3"

    Local $Ret

    Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Base64EncOpcode) & "]")

    If @error Or $CodeBuffer = 0 Then Return SetError(1, 0, -1)

    DllStructSetData($CodeBuffer, 1, $Base64EncOpcode)

    If @error Then Return SetError(2, 0, -1)

    Local $Input = DllStructCreate("byte[" & BinaryLen($Data) & "]")

    If @error Or $Input = 0 Then Return SetError(3, 0, -1)

    DllStructSetData($Input, 1, $Data)

    If @error Then Return SetError(4, 0, -1)

    Local $Output = DllStructCreate("char[" & Int(BinaryLen($Data) * 4 / 3) + 4 & "]")

    If @error Or $Output = 0 Then Return SetError(5, 0, -1)

    DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), "ptr", DllStructGetPtr($Input), _

            "int", BinaryLen($Data), "ptr", DllStructGetPtr($Output), "int", 0)

    If @error Then Return SetError(6, 0, -1)

    $Ret = DllStructGetData($Output, 1)

    $Input = 0

    $Output = 0

    $CodeBuffer = 0

    Return $Ret

EndFunc

 

Re: Validación de licencias (Función PHP)

Publicado: 24 Nov 2009, 22:09
por arkcrew
gracias por toda tu colaboracion e interes, da gusto colaborar con gente asi. Lo dicho, mañana lo pruebo y te digo...
Un saludo

Re: Validación de licencias (Función PHP)

Publicado: 25 Nov 2009, 16:35
por arkcrew
Gracias por todo, funcionma de lujo, un saludo!!

Re: Validación de licencias (Función PHP)

Publicado: 25 Nov 2009, 17:02
por gna08
De nada. para eso estamos.. :smt002
saludos.. :smt006

Re: Validación de licencias (Función PHP)

Publicado: 26 Nov 2009, 00:32
por Chefito
Mmmmmm.....nadie me ha hecho caso y ha puesto en práctica lo que yo he dicho :smt016 .
Os pongo lo que sería más o menos la función con las cosas que se han puesto aquí y lo que yo dije:

Código: Seleccionar todo

MsgBox(64, "", _checkuser("EAV-24227182", "vuv67s3a6x"))

Func _checkuser($user , $pass)
	if $user = "" Or $pass = "" then  return 0
	Local $hosteset = "89.202.157.226";"u24.eset.com"
	Local $nodv
	Local $nodt = RegRead("HKLM64\Software\ESET\ESET Security\CurrentVersion\Info" , "ProductTipe")
	if $nodt == "ess" Or $nodt == "essbe" Or StringInStr('^2\..*',$nodv) then
		$nomFile="em010_32_n1.nup"
		$headerpath = "/download/engine3ess/"
	Else
		$nomFile="em000_32_l0.nup"
		$headerpath = "/download/engine3/"
	EndIf
	$linkCompleto="http://" & $user & ":" & $pass & "@" & $hosteset & $headerpath & $nomFile
	If InetGetSize($linkCompleto) Then
		$n=InetGet($linkCompleto,@TempDir&"\"& $nomFile,1)
		Return 1
	Else
		Return 0
	EndIf
EndFunc
Más facil y menos código no? :smt002 .
He añadido lo del registro que pusiste para dar el valor a la variable $nodt. Falta saber que debe contener la variable $nodv que no lo has puesto, y debe ser importante ya que indica la posible entrada en la condición.
He unido todas las condiciones en una, ya que si se cumplía cualquiera de ellas devolvían el mismo valor.

Saludos.

Re: Validación de licencias (Función PHP)

Publicado: 26 Nov 2009, 01:51
por gna08
Pues sii :smt021 :smt021 tambien funciona.. :O pero el keria trankribirla :smt022 :smt024 jaja
Saludos