Clipper On Line • Ver Tópico - Neoprot/Neokey/Hardlock

Neoprot/Neokey/Hardlock

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

Moderador: Moderadores

 

Neoprot/Neokey/Hardlock

Mensagempor bwr2018 » 08 Jan 2019 08:11

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.
//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
RET := NeoKey_Login( "xxxxxxxxxxxxxxxx" , 16, 0, 0, "xxxxxxxx" )


Segue a forma correta, como funciona em C.

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.
bwr2018
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 20
Data de registro: 07 Nov 2018 15:24
Cidade/Estado: São Paulo
Curtiu: 4 vezes
Mens.Curtidas: 0 vez

Neoprot/Neokey/Hardlock

Mensagempor lucimauro » 08 Jan 2019 22:46

Tente mandar a @suavariavel, assim quando retornar deve ter assumido um novo valor.
lucimauro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 448
Data de registro: 21 Set 2004 21:02
Cidade/Estado: Sobral-CE
Curtiu: 15 vezes
Mens.Curtidas: 19 vezes

Neoprot/Neokey/Hardlock

Mensagempor bwr2018 » 09 Jan 2019 07:05

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
Data de registro: 07 Nov 2018 15:24
Cidade/Estado: São Paulo
Curtiu: 4 vezes
Mens.Curtidas: 0 vez

Neoprot/Neokey/Hardlock

Mensagempor bwr2018 » 14 Jan 2019 07:59

Ajuda ai pessoal pfv. :'(
bwr2018
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 20
Data de registro: 07 Nov 2018 15:24
Cidade/Estado: São Paulo
Curtiu: 4 vezes
Mens.Curtidas: 0 vez

Neoprot/Neokey/Hardlock

Mensagempor paiva_dbdc » 14 Jan 2019 20:30

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
paiva_dbdc
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 342
Data de registro: 12 Nov 2012 08:58
Cidade/Estado: uberlandia mg
Curtiu: 0 vez
Mens.Curtidas: 6 vezes

Neoprot/Neokey/Hardlock

Mensagempor Nascimento » 20 Jan 2019 23:39

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
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Neoprot/Neokey/Hardlock

Mensagempor bwr2018 » 28 Jan 2019 08:51

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.
bwr2018
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 20
Data de registro: 07 Nov 2018 15:24
Cidade/Estado: São Paulo
Curtiu: 4 vezes
Mens.Curtidas: 0 vez

Neoprot/Neokey/Hardlock

Mensagempor NeoprotSuporte » 02 Fev 2019 21:22

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
NeoprotSuporte
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 2
Data de registro: 02 Fev 2019 21:13
Cidade/Estado: São Paulo/SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Neoprot/Neokey/Hardlock

Mensagempor Nascimento » 04 Fev 2019 22:35

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
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Neoprot/Neokey/Hardlock

Mensagempor NeoprotSuporte » 07 Fev 2019 06:05

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.
NeoprotSuporte
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 2
Data de registro: 02 Fev 2019 21:13
Cidade/Estado: São Paulo/SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Neoprot/Neokey/Hardlock

Mensagempor bwr2018 » 07 Fev 2019 06:52

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
Data de registro: 07 Nov 2018 15:24
Cidade/Estado: São Paulo
Curtiu: 4 vezes
Mens.Curtidas: 0 vez

Neoprot/Neokey/Hardlock

Mensagempor bwr2018 » 07 Fev 2019 06:56

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.
bwr2018
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 20
Data de registro: 07 Nov 2018 15:24
Cidade/Estado: São Paulo
Curtiu: 4 vezes
Mens.Curtidas: 0 vez




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot], Google Adsense [Bot] e 10 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro