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
sin contar k la funcion base64_encode es propia de php asik imaginate :O
Saludos.
P/D: Adaptalo segun sea la version del nod.. yo solo trankribi el primero..
Aca el code:
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
Creo que funciona, el anterior nooo!!.. pero vos corrobora.. nos vemos
.
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..
saludos..
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
.
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?
.
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
tambien funciona.. :O pero el keria trankribirla
jaja
Saludos