Validación de licencias (Función PHP)

Tus preguntas. Algoritmos o Grupos de Comandos formando Programas Escripts.
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

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

Mensaje 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.
Avatar de Usuario
gna08
Hacker del Foro
Mensajes: 379
Registrado: 27 Sep 2008, 18:51
Ubicación: Cordoba, Argentina

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

Mensaje 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
Última edición por gna08 el 24 Nov 2009, 21:24, editado 1 vez en total.
Aunk no m Buskes, Seguro m enkontras!
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

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

Mensaje 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
Avatar de Usuario
gna08
Hacker del Foro
Mensajes: 379
Registrado: 27 Sep 2008, 18:51
Ubicación: Cordoba, Argentina

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

Mensaje 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

 
Aunk no m Buskes, Seguro m enkontras!
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

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

Mensaje 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
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

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

Mensaje por arkcrew »

Gracias por todo, funcionma de lujo, un saludo!!
Avatar de Usuario
gna08
Hacker del Foro
Mensajes: 379
Registrado: 27 Sep 2008, 18:51
Ubicación: Cordoba, Argentina

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

Mensaje por gna08 »

De nada. para eso estamos.. :smt002
saludos.. :smt006
Aunk no m Buskes, Seguro m enkontras!
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

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

Mensaje 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.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Avatar de Usuario
gna08
Hacker del Foro
Mensajes: 379
Registrado: 27 Sep 2008, 18:51
Ubicación: Cordoba, Argentina

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

Mensaje por gna08 »

Pues sii :smt021 :smt021 tambien funciona.. :O pero el keria trankribirla :smt022 :smt024 jaja
Saludos
Aunk no m Buskes, Seguro m enkontras!
Responder