Neoprot/Neokey/Hardlock

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

bwr2018
Usuário Nível 1
Usuário Nível 1
Mensagens: 20
Registrado em: 07 Nov 2018 16:24
Localização: São Paulo

Neoprot/Neokey/Hardlock

Mensagem 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.
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Neoprot/Neokey/Hardlock

Mensagem por lucimauro »

Tente mandar a @suavariavel, assim quando retornar deve ter assumido um novo valor.
bwr2018
Usuário Nível 1
Usuário Nível 1
Mensagens: 20
Registrado em: 07 Nov 2018 16:24
Localização: São Paulo

Neoprot/Neokey/Hardlock

Mensagem 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.
bwr2018
Usuário Nível 1
Usuário Nível 1
Mensagens: 20
Registrado em: 07 Nov 2018 16:24
Localização: São Paulo

Neoprot/Neokey/Hardlock

Mensagem por bwr2018 »

Ajuda ai pessoal pfv. :'(
paiva_dbdc
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 12 Nov 2012 09:58
Localização: uberlandia mg

Neoprot/Neokey/Hardlock

Mensagem 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
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Neoprot/Neokey/Hardlock

Mensagem 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
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
bwr2018
Usuário Nível 1
Usuário Nível 1
Mensagens: 20
Registrado em: 07 Nov 2018 16:24
Localização: São Paulo

Neoprot/Neokey/Hardlock

Mensagem 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.
NeoprotSuporte
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 02 Fev 2019 22:13
Localização: São Paulo/SP

Neoprot/Neokey/Hardlock

Mensagem 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
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Neoprot/Neokey/Hardlock

Mensagem 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
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
NeoprotSuporte
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 02 Fev 2019 22:13
Localização: São Paulo/SP

Neoprot/Neokey/Hardlock

Mensagem 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.
bwr2018
Usuário Nível 1
Usuário Nível 1
Mensagens: 20
Registrado em: 07 Nov 2018 16:24
Localização: São Paulo

Neoprot/Neokey/Hardlock

Mensagem 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.
bwr2018
Usuário Nível 1
Usuário Nível 1
Mensagens: 20
Registrado em: 07 Nov 2018 16:24
Localização: São Paulo

Neoprot/Neokey/Hardlock

Mensagem 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.
Responder