Evitar cópia do sistema na mesma máquina.
Moderador: Moderadores
Evitar cópia do sistema na mesma máquina.
Oi Amigos,
Aconteceu em um cliente que um usuario bandido, fez uma copia do sistema para uma pasta dentro do micro do caixa, e recebeu prestacoes nesta copia. Autenticou o carne, emitiu recibos e depois apagou a copia.
Para eitar problemas como este, criei um bat que lista executaveis do meu sistema ( dir c:\OT.EXE /s > lista.txt).
No executavel verifico de o valor é maior que um, se for a operacao é abortada.
Isso funciona bem. O problema é que esse processo é muito lento e alguns clientes estão reclamando muito.
Outro problema é que se fizer a copia em uma maquina da rede, o sistema deixa passar.
Alguem tem uma dica ?
Desde já agradeço.
Aconteceu em um cliente que um usuario bandido, fez uma copia do sistema para uma pasta dentro do micro do caixa, e recebeu prestacoes nesta copia. Autenticou o carne, emitiu recibos e depois apagou a copia.
Para eitar problemas como este, criei um bat que lista executaveis do meu sistema ( dir c:\OT.EXE /s > lista.txt).
No executavel verifico de o valor é maior que um, se for a operacao é abortada.
Isso funciona bem. O problema é que esse processo é muito lento e alguns clientes estão reclamando muito.
Outro problema é que se fizer a copia em uma maquina da rede, o sistema deixa passar.
Alguem tem uma dica ?
Desde já agradeço.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Evitar cópia do sistema na mesma máquina.
Márcio, você já pensou em verificar no início do seu programa em qual pasta (diretório) o programa está sendo executando?
Abraços,
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Re: Evitar cópia do sistema na mesma máquina.
O Toledo matou a xarada com algo muito simples: force a execução do seu programa a partir de um diretório específico, incluindo o drive. Como em alguns clientes as letras dos drives podem precisar ser diferentes, isso pode ser resolvido armazenando a letra do drive necessário num arquivo texto comum, gravado como oculto num diretório que todos normalmente têm. Exemplo: c:\windows.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Evitar cópia do sistema na mesma máquina.
Maligno, o Márcio pode usar a função DIRNAME() da CATools, que retorna apenas o nome da pasta, sem a letra da unidade.
exemplo:
Abraços,
exemplo:
Código: Selecionar todos
IF DIRNAME() != "\NOMEPASTA"
ALERT("Erro ao executar o Programa!")
QUIT
ENDIF
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Re: Evitar cópia do sistema na mesma máquina.
Sim. Eu até já usei essa função. Essa informação é muito simples e consta na relação de argumentos de execução do programa, que é padrão do DOS. Infelizmente, pelo Clipper, diretamente, não é possível recuperá-la, já que ela reside numa variável de acesso interno. Por isso, fiz então uma função C pra recuperar o caminho de execução do EXE. Provavelmente a CATools usa o mesmo esquema. Veja como o fonte é simples:
Caso alguém se interesse e não queira usar a CATools só pra isso, é só pegar essa função aqui. Ao executá-la, pra suprimir a identificação do drive, basta remover os dois primeiros caracteres.
Código: Selecionar todos
CLIPPER AppOrigin(void) {
extern char **__argv;
_retc(*__argv);
return;
}[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Re: Evitar cópia do sistema na mesma máquina.
Também acho que o jeito mesmo é saber se é na máquina (pode ser também verificado o numero serial do HD e nome da estação) + DRIVE e mais diretório para esse caso. E ainda para alertar quando ocorrer alguma discordância desse procedimento fazer com que mande um alerta ao gerente de forma silenciosa para pegar o individuo. Puxa essa, parece coisa do FBI... também quem diria que o carinha fizera trambique dessa forma ?
Para complementar, eu acostumo pega o dirve da seguinte forma com a CT.LIB:
VVOL:=SUBSTR(ALLTRIM(EXENAME()),1,2)
E para pega o nome do diretório:
VDIR:=DIRNAME()
POde também ser feito um LOG que seja acionado quando houver discordância de execução, guardando nome da estação, dia, hora e nome do usuário logado para documentar e ferrar de vez com o trambiqueiro.
Para complementar, eu acostumo pega o dirve da seguinte forma com a CT.LIB:
VVOL:=SUBSTR(ALLTRIM(EXENAME()),1,2)
E para pega o nome do diretório:
VDIR:=DIRNAME()
POde também ser feito um LOG que seja acionado quando houver discordância de execução, guardando nome da estação, dia, hora e nome do usuário logado para documentar e ferrar de vez com o trambiqueiro.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
Manuel Luis Modernel
- Usuário Nível 2

- Mensagens: 66
- Registrado em: 02 Mar 2008 20:40
- Localização: São José do Rio Preto - SP
Re: Evitar cópia do sistema na mesma máquina.
Para evitar invasões não autorizadas eu já usei a função netname() que me dava o nome da estação que estava sendo utilizada dai fazia comparações autorizando ou não a abertura.
Usei também um arquivo M4.DBF (serve qualquer nome.DBF) com senhas o qual eu denominava M4.sys (serve qualquer extensão) o fato principal que ele mesmo renomeado e com outra extensão, ele continua TRABALHANDO como um DBF e fica bem escondido numa pasta qualquer, assim dificilmente um usuário iria procurar e copiar este arquivo "Fundamental" para o funcionamento do programa ao fazer uma copia pirata.
Jogadas BOBAS mais funcionavam, ao menos contra leigos hihihihi !
Usei também um arquivo M4.DBF (serve qualquer nome.DBF) com senhas o qual eu denominava M4.sys (serve qualquer extensão) o fato principal que ele mesmo renomeado e com outra extensão, ele continua TRABALHANDO como um DBF e fica bem escondido numa pasta qualquer, assim dificilmente um usuário iria procurar e copiar este arquivo "Fundamental" para o funcionamento do programa ao fazer uma copia pirata.
Jogadas BOBAS mais funcionavam, ao menos contra leigos hihihihi !
OI Aqui é o Veio Modernel
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Re: Evitar cópia do sistema na mesma máquina.
Oi Manuel,
Se o seu método era para limitar a pirataria, serve até um certo ponto para outras situações (como tudo em informática e como você mesmo disse ao menos para leigos), no entanto não creio que sirva para atender a essa situação do colega. Pois esse procedimento não evitaria de ter uma SEGUNDA cópia do programa em outro diretório. O que possibilitou esse usuário poder meter mão nos recebimentos do caixa, imagine só !.
Se o seu método era para limitar a pirataria, serve até um certo ponto para outras situações (como tudo em informática e como você mesmo disse ao menos para leigos), no entanto não creio que sirva para atender a essa situação do colega. Pois esse procedimento não evitaria de ter uma SEGUNDA cópia do programa em outro diretório. O que possibilitou esse usuário poder meter mão nos recebimentos do caixa, imagine só !.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Re: Evitar cópia do sistema na mesma máquina.
Amiguinho
Não deixe o usuario perceber isto, pois provavelmente ele continuara fazendo.
Crie em seu sistema uma tabela para auditoria, coloque alguns campos que acha importantes como:
- numero da prestação
- hora do movimento
- data
- usuario(mesmo que use outro)
- valor da transação e nome da pasta de execução(pasta onde a copia esta sendo executada).
- contador de transações
Esta tabela deverá sempre na pasta c:\auditoria\TePeguei.dbf(exemplo).
Deixe seu sistema como esta, mas force que o mesmo grave cada movimento feito nesta tabela.
Mesmo que o sistema esteja sendo executado em duas pastas ele sempre ira guardar um registro nesta tabela, não deixando buracos.
Defina para cada movimento feito um numero sequencial(contador de moviementos) e grave este contador em alguma tabela(use minha função de autonumeração da sessão codigo fonte).
De vez em quando compare este contador com os buracos existentes na tabela principal de lancamentos e veja o que falta, depois verifique na tabela TePeguei, quais os lançamentos extras que não compoem o principal e qual a pasta(com um aplicativo especifico é possivel recuperar a pasta dletada).
Com a prova do crime, mostre ao seu cliente, que seu sistema não possue falhas de programação, mas sim brechas de operação.
O usuario que faz algo assim não é um reles usuario, tem conhecimento e esperteza, então use a experteza dele contra ele, assim diria o sábio Steven Segal.
Não deixe o usuario perceber isto, pois provavelmente ele continuara fazendo.
Crie em seu sistema uma tabela para auditoria, coloque alguns campos que acha importantes como:
- numero da prestação
- hora do movimento
- data
- usuario(mesmo que use outro)
- valor da transação e nome da pasta de execução(pasta onde a copia esta sendo executada).
- contador de transações
Esta tabela deverá sempre na pasta c:\auditoria\TePeguei.dbf(exemplo).
Deixe seu sistema como esta, mas force que o mesmo grave cada movimento feito nesta tabela.
Mesmo que o sistema esteja sendo executado em duas pastas ele sempre ira guardar um registro nesta tabela, não deixando buracos.
Defina para cada movimento feito um numero sequencial(contador de moviementos) e grave este contador em alguma tabela(use minha função de autonumeração da sessão codigo fonte).
De vez em quando compare este contador com os buracos existentes na tabela principal de lancamentos e veja o que falta, depois verifique na tabela TePeguei, quais os lançamentos extras que não compoem o principal e qual a pasta(com um aplicativo especifico é possivel recuperar a pasta dletada).
Com a prova do crime, mostre ao seu cliente, que seu sistema não possue falhas de programação, mas sim brechas de operação.
O usuario que faz algo assim não é um reles usuario, tem conhecimento e esperteza, então use a experteza dele contra ele, assim diria o sábio Steven Segal.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Evitar cópia do sistema na mesma máquina.
Eu aconselho a não dizer que meu sistema tem BRECHAS. Diria que diante de usuários de conhecimento avançado, criei uma rotina de LOG e detectou este PROBLEMA.rochinha escreveu:Com a prova do crime, mostre ao seu cliente, que seu sistema não possue falhas de programação, mas sim brechas de operação.
Não é bom declarar que o sistema tem portinhas abertas e sim explicar (se perguntarem) como em tudo em informática, sempre haverá um jeito de driblar um ou outra situação.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
Re: Evitar cópia do sistema na mesma máquina.
Oi amigo,
a função exename() resolve parcialmente o seu problema.
A zebra é que o sistema vai ter que ser personalizado para o cliente.
Supondo que o executável do sistema chamasse TESTE.EXE e ficasse na pasta TESTE do servidor de nome SERVIDOR.
IF 'C:\TESTE\TESTE.EXE' == UPPER(EXENAME())
\\ ok - Estou no servidor
ELSEIF '\\SERVIDOR\C\TESTE\TESTE.EXE' == UPPER(EXENAME())
\\ ok - Mas não estou no servidor
ELSE
\\ Há algo errado
ENDIF
Conforme se vê, se estiver no servidor não vão existir duas pastas de nome TESTE, contendo o arquivo TESTE.EXE .
Por outro lado, na rede, não vai existir um outro computador com o nome de SERVIDOR né.
Logo, parece que o esquema vai funiconar.
MarceloG
Ps: Não use acesso mapeado.
Não sei se EXENAME() tem no Clipper ou é de alguma de suas bibliotecas.
a função exename() resolve parcialmente o seu problema.
A zebra é que o sistema vai ter que ser personalizado para o cliente.
Supondo que o executável do sistema chamasse TESTE.EXE e ficasse na pasta TESTE do servidor de nome SERVIDOR.
IF 'C:\TESTE\TESTE.EXE' == UPPER(EXENAME())
\\ ok - Estou no servidor
ELSEIF '\\SERVIDOR\C\TESTE\TESTE.EXE' == UPPER(EXENAME())
\\ ok - Mas não estou no servidor
ELSE
\\ Há algo errado
ENDIF
Conforme se vê, se estiver no servidor não vão existir duas pastas de nome TESTE, contendo o arquivo TESTE.EXE .
Por outro lado, na rede, não vai existir um outro computador com o nome de SERVIDOR né.
Logo, parece que o esquema vai funiconar.
MarceloG
Ps: Não use acesso mapeado.
Não sei se EXENAME() tem no Clipper ou é de alguma de suas bibliotecas.
Água mole em pedra dura tanto bate que até espirra!

