Página 1 de 1

Neoprot/Neokey/Hardlock

Enviado: 08 Jan 2019 09:11
por bwr2018
Estou tetando portar as funções do produto da Neoprot. http://www.neoprot.com.br/NeoKey.aspx. Se trata de um hardlock muito interessante porem não tem suporte para linux no harbour em windows funciona tranquilo com uma dll que é fornecida. Mas meu foco é linux então tenho que usar lib statica que é feita em C por conta disso tenho que criar um ponte para o harbour e a lib se comunicarem. Estou tendo dificuldades creio que seja coisa simples mas não tenho amplo conhecimento da "hbapi.h" então segue o que estou tentando fazer.

Essa é a função "portada" que está funcionando mas não da forma correta, foi o que consegui.

Código: Selecionar todos

//int NeoKey_Login(unsigned char *message, unsigned int size, unsigned int licenseID, unsigned int Type, unsigned char *HardwareID)
HB_FUNC( NEOKEY_LOGIN ) {
	unsigned char *Challenge[17];
	unsigned char *HardwareID[9];
	memcpy( Challenge, hb_parc(1), 17 );
	memcpy( HardwareID, hb_parc(5), 8 );
	int ret = NeoKey_Login( Challenge, hb_parni(2), hb_parni(3), hb_parni(4), HardwareID );
   if ( ret ) {
      hb_retnl( ret );
   } else {
      hb_retc( Challenge );
   }
}
Essa é a chamada da função

Código: Selecionar todos

RET := NeoKey_Login( "xxxxxxxxxxxxxxxx" , 16, 0, 0, "xxxxxxxx" )
Segue a forma correta, como funciona em C.

Código: Selecionar todos

int main (void)
{
	//*********************************************************************************************************
	//iniciando variaveis
	int ret;
	unsigned char Challenge[17];
	unsigned char HardwareID[10];

	//*********************************************************************************************************
	//iniciando API
	printf( "\nLoading API." );
	if ( !LoadClientAPI() ) {
		return (0);
	}
	printf( "\nLoadAPI OK." );

	//*********************************************************************************************************
	//fazendo login
	memcpy( Challenge, "xxxxxxxxxxxxxxxx", 17 );
	memcpy( HardwareID, "xxxxxxxx", 8 );
	printf( "\nChallenge: %s\n ", Challenge );
	ret = NeoKey_Login( Challenge, 16, 0, 0, HardwareID ); 
	if ( ret ) {
		printf( "\nLoginFailed - returned = %d\n", ret );
		return( 0 );
	}
	printf( "\nLogin OK." );
}
Em resumo eu tenho que passar a variavel contendo a string e não a string direto. Isso no primeiro e no quinto parametro. Por que? Por que em C quando é passado a variavel Challenge para a função NeoKey_Login() se está estiver com a senha correta do produto a mesma é transforma na string resposta do neokey. O mesmo acontece com a variavel HardwareID. Então usando o exemplo ali:

antes de passar para função: Challenge == "xxxxxxxxxxxxxxxx"
apos passar para função se for a senha correta: Challenge == "zzzzzzzzzzzzzzzz" por exemplo.

Bom tentei explicar o maximo de detalhes aqui mas talvez tenha ficado confuso. Então basicamente a grosso modo, eu tenho que declarar minha variavel Challenge no harbour e enviar para a lib e a mesma tem que ter o poder de muda-la isso eu não consegui fazer.

Neoprot/Neokey/Hardlock

Enviado: 08 Jan 2019 23:46
por lucimauro
Tente mandar a @suavariavel, assim quando retornar deve ter assumido um novo valor.

Neoprot/Neokey/Hardlock

Enviado: 09 Jan 2019 08:05
por bwr2018
Já tentei passando por referencia e como public. A ideia que tive foi dar um jeito de passar o endereço da memoria, ai a função da lib pega o conteudo do seu endereço e o modifica. Mas eu não sei fazer isso kkkkk. Mas em teoria daria certo.

Neoprot/Neokey/Hardlock

Enviado: 14 Jan 2019 08:59
por bwr2018
Ajuda ai pessoal pfv. :'(

Neoprot/Neokey/Hardlock

Enviado: 14 Jan 2019 21:30
por paiva_dbdc
boa noite

Usei a MUITOS anos atraz o Hardlock

abandonei na epoca por ficar MUITO lento

hj em dia checo o Vol do HD (de fabrica) que NAo pode ser modificado

udo uma dll para obter o vol

NAo sei se funcionaria em Linux

Neoprot/Neokey/Hardlock

Enviado: 21 Jan 2019 00:39
por Nascimento
paiva disse: udo uma dll para obter o vol
ja burlamos isso , vimos que não é confiável, para iniciantes ate serve mais para um cara que conhece bem burla rapidinho

Neoprot/Neokey/Hardlock

Enviado: 28 Jan 2019 09:51
por bwr2018
Recentemente tbm tive problemas com numero de serie físico de hd. Conseguiram virtualizar com o mesmo numero de série. Mas obrigado pela atenção.

Neoprot/Neokey/Hardlock

Enviado: 02 Fev 2019 22:22
por NeoprotSuporte
Olá Amigos,
O neokey é suportado nesta plataforma e funciona em alguns clientes.
Basta usar o pacote do Linux, que está no SDK, um detalhe é definir as variáveis como BYTE, pois eventualmente o char pode apresentar definições com 16 ou 32 bit por character e o suporte hoje no Neokey é para 8 - BYTE.
Caso não resolvam por favor entre em contato com o suporte : suporte@neoprot.com.br

Neoprot/Neokey/Hardlock

Enviado: 04 Fev 2019 23:35
por Nascimento
NeoprotSuporte »
o bom seria conseguir portar para o harbour , mais só com o fonte e a hbapi, acreditando que a lib seja escrita em .c

Neoprot/Neokey/Hardlock

Enviado: 07 Fev 2019 07:05
por NeoprotSuporte
Ola todos, tem um outro detalhe importante, ao definir as variáveis neste exemplo enviado, tanto para a senha como o hardware ID, o tamanho está errado, tem um char a mais no array, isso pode estar impactando principalmente no retorno. Não foi informado no chat exatamente qual foi o erro retornado, poderia nos postar?
Queríamos ajudar o quanto antes.

Neoprot/Neokey/Hardlock

Enviado: 07 Fev 2019 07:52
por bwr2018
NeoprotSuporte escreveu:Ola todos, tem um outro detalhe importante, ao definir as variáveis neste exemplo enviado, tanto para a senha como o hardware ID, o tamanho está errado, tem um char a mais no array, isso pode estar impactando principalmente no retorno. Não foi informado no chat exatamente qual foi o erro retornado, poderia nos postar?
Queríamos ajudar o quanto antes.
Se é colocado com o tamanho exato ele me retorna lixo de memoria. E essa informação veio do próprio suporte.

Neoprot/Neokey/Hardlock

Enviado: 07 Fev 2019 07:56
por bwr2018
NeoprotSuporte escreveu:Olá Amigos,
O neokey é suportado nesta plataforma e funciona em alguns clientes.
Basta usar o pacote do Linux, que está no SDK, um detalhe é definir as variáveis como BYTE, pois eventualmente o char pode apresentar definições com 16 ou 32 bit por character e o suporte hoje no Neokey é para 8 - BYTE.
Caso não resolvam por favor entre em contato com o suporte : suporte@neoprot.com.br
Não recebi esse "pacote do Linux" apenas uma lib statica onde eu não tenho acesso a nada por isso tenho que fazer essa ponte, pegar os seus retornos e converte-los para meu uso. O caso segue sem solução definitiva. Até está funcionando sim, mas não de modo satisfatório.