la por 1997 fiz um programa pra uma prestadora de servicos
ela entregava um .txt pra contratante contendo em cada linha, um 
serviço a ser cobrado

mais tarde a prestadora de serviços me chamou pois achava que algumas 
linhas estavam "se perdendo" quando chegavam a contratante

entao fiz um programinha simples que imprimia um certificado de um 
arquivo qualquer com crc o formato era algo hxadecimal como ffff-f

quando os dados de cobranca eram exportados para o .txt o sistema 
tanto imprimia este relatorio quanto o exibia na tela. quando o 
motoboy chegava com o disquete na contratante ele executava o 
programa do proprio disquete para quem estivesse recebendo visse na 
tela o crc e assinasse o certificado

a contratante nao entendeu aquele tramite e o seguiu sem reclamar

na mesma semana alguns pagamentos haviam se perdido
iniciou a mesma discução do tipo 
"voces deletaram linhas!" 
"nao, o arquivo veio imcompleto!"

entao executaram o crc e comprovou-se que nao batia com o relatorio 
que a contratante havia assinado, e, que alguem havia mudado algumas 
linhas. 

apos o cara q nao queria pagar ficar com a cara no chao, nunca mais 
nenhuma linha dos .txt se perdeu...

---------------------

quando, em 1994 eu nao tinha nada mais util pra fazer entao cai 
dentro de ling.c
criei uma ide com checkbox, radiobutton, menu, janela, mouse... tudo 
em DOS

a ideia era parar de usar windows
desisti quando o w95 chegou com resolucao 800x600 e eu so sabia fazer 
640x480. poh, todos fabricantes de video fazem rotinas pra microsoft 
de graça e eu teria q fazer a mao um driver pra cada modelo de placa 
q meus clientes comprassem!

bom, naquela biblioteca tb criei acesso a arquivos em rede, com locks 
de registros e de arquivo, arquivos de indice, etc

e no algoritimo de criacao de tabela colocava alguns bytes antes de 
cada registro da tabela para os dados de acesso, cod de usuario...

com algumas quedas de luz alguns dados se perderam. entao coloquei 
crc no inicio de cada registro. eu testava se batia antes de devolver 
pra aplicacao os dados do registro. se nao batesse, retornava um erro

-------------------

tenho boa ideia de como fazer o crc em ling.c, mas nao tenho muita 
ideia da sintaxe do pascal para ler um arq binario byte a byte. 
sei q tem a fileread filewrite mas queria saber se posso usar as 
funcoes nativas do pascal (AssignFile, write...) pra acesso byte a 
byte.

alguem sabe?

----------------------

se eh pra criar algo em conjunto, humildemente espero poder ser util
to dentro!




--- Em delphi-br@yahoogrupos.com.br, "Hayalon" <[EMAIL PROTECTED]> escreveu
>
> Boa Walter, falou bem...
> Já tinha lido algo sobre CRC, e você colocou o tema muito bem...
> Acho que essa é uma boa oportunidade para criarmos algo muito bom 
aqui...
> 
> 
> 
> 
>  
> 
>   _____  
> 
> De: delphi-br@yahoogrupos.com.br [mailto:delphi-
[EMAIL PROTECTED] Em
> nome de Walter Alves Chagas Junior
> Enviada em: sexta-feira, 28 de julho de 2006 19:12
> Para: 'delphi-br@yahoogrupos.com.br'
> Assunto: RES: [delphi-br] CRC de arquivos.
> 
>  
> 
> Elazar,
> 
> Semana retrazada eu tentei ascender este assunto lá na lista-
delphi, a
> respeito do CRC. Postei até o link do Delphi About que tratava do 
assunto:
> 
> http://delphi.about.com/od/fullcodeprojects/ss/crc_filecheck.htm
> 
> A ideia minha era abrir uma thread a respeito do assunto, mas 
poucos lá
> interessaram. O resto ou fez algum breve comentário ou não entendeu 
bem o
> que era. Uns achavam se tratar de mais algum método anticópia de um 
programa
> e outros associaram o assunto com crack. Quando na verdade não é 
nada disso.
> 
> Este interessante recurso visa assegurar mais ainda seu executável 
contra a
> mão maldita do usuário fução: O número serial CRC (Cyclic 
Redundance Code).
> Primeiramente isto daí não tem absolutamente nada haver com chave de
> ativação de programa ou de senha pois este número serial não está 
em lugar
> nenhum no programa, LUGAR nenhum. Nenhum. Portanto não tem um lugar 
aonde
> ele fica. Ele não fica. Ele é calculado com base em infomações do 
executável
> como data, hora, tamanho e agrupamento de bytes internos. O CRC 
consiste em
> um código gerado com base na situação atual de seu executavel (data 
e hora
> de compilação + tamanho). Caso alguém abra seu exe em um editor de 
programas
> ou mesmo no Debug do DOS e mexa em alguma coisa dentro dele e salve-
o, a
> chave serial de CRC já é outra. Aliando isto ao fato também deste 
número
> serial não está em lugar nenhum no programa, isto anularia a ideia 
de girico
> dos espertozoides tentarem copiar o CRC antes de mexer no 
executável, mexer
> nele, e depois salvar o CRC antigo nele novamente achando que, com 
isto, não
> deixariam rastro algum. Então você pode, além de criar seus métodos
> anticópia, colocar um validador de CRC em seu programa de forma que 
se
> alguém entrar nele pra mudar nome de autor ou de empresa filiada, 
ou mesmo
> tentar quebrar a regra anticópia, o executável irá ter outro CRC e 
você pode
> impedir a execução dele mediante validação desta "chave serial" 
interna.
> 
> PS: Não confundam CRC com registro de licença de programa. Registro 
de
> programa é um metodo que você usa para que seu programa libere
> funcionalidades internas mediante a entrada de um código que seu 
cliente irá
> lhe pedir. VOCÊ PROGRAMA ISTO e isto irá depender do seu algorítmo 
de
> validação. Agora CRC não. CRC é calculado com base em informações 
internas
> do executável aonde se aplica uma regra para ele. Esta regra 
(algorítmo) é
> universal. Um programa externo (ou uma função interna) irá validar o
> executavel. Se o CRC bater com a validação, então este executável 
está em
> conformidade com a compilação original.
> 
> O recurso do CRC é interessante para você checar se seu executável 
foi
> infectado por um virus, se foi arrombado por um crack (ou então um 
cracker)
> visando burlar validação de licença, visando burlar telas 
de "Registre" ou
> visando trocar nomes de empresa e de autor em telas "About". Então. 
Se o
> camarada abrir se exe com um PCTools da vida e, for lá trocar 
alguma coisa
> no executável, ao salvar ele, o CRC ja passa a ter outro valor. E é 
esta
> mudança de valor que você pode usar para assegurar a autenticidade 
de seu
> programa. Se ele está intacto ou se foi "mexido" por alguem. 
qualquer mexida
> no arquivo já altera o CRC dele.
> 
> Fazer a validação do CRC de dentro do próprio executável, não é das 
tarefas
> faceis porque você precisa montar um código de validação, sendo que 
a
> informação que irá checar com o validador, você só obterá ela 
depois de
> compilado o programa. Ora, então como é que vamos codificar um if 
isto igual
> a aquilo, se o isto não temos antes de compilar o produto? MAS! 
Nada impede
> de você colocar o validador em uma DLL ou uma BPL vinculada a ele. 
Na carga
> desta biblioteca supra-citada, ela pode validar seu programa e, já 
de lá, ou
> deixar ele continuar ou abortar a continuação do mesmo. No caso do
> abortamento da execução do programa, aí sim você poderia colocar um
> algorítmo para destruir o executável. Nos bons tempos do clipper, eu
> costumava fazer um arquivo de lote compilado com o Exe2Bat que 
virava um
> executor do meu programa. O programinha verificava a data do 
computador e
> checava com a data do executável. Ao expirar, o programa emitia um 
aviso de
> que o mesmo foi expirado e ecoava null para o arquivo:
> 
> Echo Null > <nome do programa>.exe
> 
> ou então
> 
> Type Null > <nome do programa>.exe
> 
> O resultado disto é que o executável ficava com tamanho 0.
> 
> É por aí que a coisa flui. Se quiserem abrir a Thread aqui, to 
dentro :)
> 
> 
> 
> []s
> 
> Walter Alves Chagas Junior
> Projeto e desenvolvimento de sistemas
> Telemont Engenharia de telecomunicações S/A
> Belo Horizonte - MG - Brasil
> [EMAIL PROTECTED]
> Fone: (31) 3389-8215 Fax: (31) 3389-8200
> 
> Parabens Telemont - Somos a 8ª maior empresa do Brasil no segmento 
de
> construção!!
> 
> 
> -----Mensagem original-----
> De: delphi-br@yahoogrupos.com.br [mailto:delphi-
[EMAIL PROTECTED]
> nome de .:: Elazar Dornelles Ceza ::.
> Enviada em: sexta-feira, 28 de julho de 2006 09:16
> Para: delphi-br@yahoogrupos.com.br
> Assunto: [delphi-br] CRC de arquivos.
> 
> 
> Bom dia pessoal;
> 
> Estava olhando algo sobre o CRC de arquivos e ocorreu o seguinte
> 
> Me ocorreu o seguinte, estava 'brincando' o windows explorer e o
> winrar...(compactador) e pude perceber o que:  ao trocar a data do 
micro
> para alguns dias atraz, compactar, o winrar me mostrou um CRC XXXXXX
> entao acessei as propriedades do arquivo e verifiquei que o mesmo 
tinha
> a data de 'acessado' em para o dia que havia trocado a data....blz,
> voltei novamente o micro para a data atual, acessei o arquivo sem
> modificar nada...fechei compactei e o CRC ainda continua XXXXX. 
Voltei
> ao windows explorer e verifique a data de acesso do arquivo e como 
era
> de se esperar estava datada para o dia de hoje.
> 
> Entao eu pergunto. 
>    Onde o windows guarda as informacoes de ultimo acesso do arquivo,
> data de criacao...modificado...???
>      Se for no proprio arquivo (como eu imagino que sim)....porque 
o CRC
> do arquivo não Muda???
>      Como eu faco em delphi para mudar alguma coisa em um arquivo
> qualquer...que não modifique o CRC???
> 
> Alguem já trabalhou com algum esquema semelhante???
> 
> 
> Atenc.
> Elazar
> 
> 
> 
>             
> _______________________________________________________ 
> Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu 
celular.
> Registre seu aparelho agora! 
> http://br.mobile.yahoo.com/mailalertas/ 
> 
> 
> 
> 
> 
> -- 
> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
> 
> 
> 
> Links do Yahoo! Grupos
> 
> 
> 
> 
> 
> 
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
> 
>  
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>









-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a