Artigo: Zip com Java: Compressão e Descompressão de Dados  XML
Índice dos Fóruns » Artigos e Tutoriais
Autor Mensagem
quero ser um .exe
Smalltalk

Membro desde: 06/08/2006 05:44:10
Mensagens: 1
Offline

Olá pessoal, tudo bem?
Bom eu estou com um problema já fazem alguns dias, e estou com dificuldades para resolver.
pesquisando por aí, escontrei esse "forum", e percebi que vocês são as pessoas certas para tentar me ajudar.
Alguns dias atras eu "zipei" um arquivo com senha, e não consigo me lembrar dessa maldita senha de maneira alguma, e são arquivos extremamente importantes para mim.
Eu tambem já tentei programas que tentam combinações de senhas, mas o mais rapido testa cerca de 15 milhões de senhas por segundo, apesar de ser muito rapido, eu posso ficar meses ou até mesmo anos para conseguir descobrir essa senha.
Eu gostaria de saber se tem como abrir esse zip, "quebrando o binario" dele, ou qualquer outra forma que me ajude.
Eu não entendo nada sobre isso, e só disse do "binario" por que li em outros foruns.
Bem se vocês puderem me ajudar ficarei muito grato mesmo, pois os arquivos, como eu já disse são extremamente importantes para mim.

Grato desde já!
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Os algoritmos que tentam abrir um arquivo, tentando todas as senhas possíveis, usam uma vulnerabilidade do algoritmo de criptografia original (de 80 bits se não me engano) que diminui a quantidade de operações possíveis para checar se a senha está correta.
Portanto, esses programas crackers russos de senhas (provavelmente foi o que você baixou da Internet) já usam uma forma bastante avançada de tentar abrir o arquivo .zip com senha.
Creio que não é possível ser mais rápido que esses quinze milhões de senhas por segundo. Talvez compartilhando esse trabalho por várias máquinas

[WWW]
fsjr
JavaBaby
[Avatar]

Membro desde: 19/07/2004 12:54:26
Mensagens: 84
Offline

Luca wrote:Olá

fmeyer wrote:e o mais viavel que eu acho, é fazer um checksum ...
paranoico ? hehehe


Não é não! Eu fazia quase assim já em 1994. Só que eu não usava checksum pois trocando bytes, o checksum é o mesmo. Eu usava CRC.

Meu antigo método (acho que já descrevi aqui em outra pasta):

1. No meu programa Clipper havia uma constante logo como primeira coisa no sistema.

2. Eu fiz um programinha que calculava o CRC do trecho de programa da linha seguinte à constante até o fim.

3. Usando um editor de binário, alterava a tal constante pelo valor do CRC calculado.

Meu programa tinha uma função que recalculava o CRC do mesmo modo que meu programinha e comparava com o valor do CRC. Se o cliente alterasse 1 byte, o CRC não batia mais.

Além disso, meus programas eram vendidos com relatórios personalizados para cada cliente. No topo de cada relatório saia o nome do cliente. Assim, mesmo que um funcionário do cliente roubasse o sistema, ele não podia alterar o nome que aparecia no topo dos relatórios. Este nome ficava dentro do sistema BEM ESCONDIDO.

No Java onde não existe um arquivo .exe monolítico como era o caso do Clipper, você pode pensar qualquer coisa. Mas nunca com checksum que não vale nada. Use sempre CRC, se possível CRC32. Para melhorar a performance do cálculo do CRC se deve fazer como a turma que escreve programas de comunicação e seguir os conselhos do grande Joe Campbell: armazenar uma tabela de lookup ao invés de calcular tudo na raça.

Acho que você deve encontrar várias APIs free de cálculo de CRC ou usar o que já vem com o Java na classe java.util.zip.CRC32. Compare os desempenhos pois isto pode demorar um tiquinho se nãofor bem escrito.

[]s
Luca



Oi Luca, esotu precisando saber fazer o seguinte:

Tenho uma aplicação cliente/servidor o cliente enviar arquivos para o servidor e preciso criar um calculo CRC no cliente a partir do polinomio
gerador que será utilizado, no meu caso:

x8 + x6 + x3 + x + 13

Acho que n aparte cliente ele pega esse polinomio + o binario do arquivo enviado (Que eu nem sei como pega um binario de um arquivo em java gostaria de saber) e envia no cabecalho.

No servidor é pego essa informacao e recalculado para ver se tem erro ou nao. (Não sei tb como pego essa informacao no servidor)

Em sockets tem como fazer isso para o controle de erros ? Ou so da pra saber os erros pelas exceptions geradas ?

Desculpe mas ta meio confuso, to lendo a respeito mas


Ainda tenho que fazer um controle de fluxo na parte servidor com Go-back-n ou Selective Reject.

Sabe me dar alguma dica quanto a isso.
Agradeco muito.
Abraços
valtoni
Entusiasta Java
[Avatar]

Membro desde: 20/05/2005 09:36:35
Mensagens: 19
Offline

Gente, desculpem por reviver o tópico, mas achei um trecho interessante para adicionar.

Pesquisando na internet sobre CRC32, encontrei que, apesar de utilizar todos os bits do arquivo para fazer o cálculo polinomial, é possível alterar os dados sem que o CRC seja modificado. Sendo assim, o melhor mesmo é usar hash pra fazer a tarefa.

Fonte: http://pt.wikipedia.org/wiki/CRC
 
Índice dos Fóruns » Artigos e Tutoriais
Ir para:   
Powered by JForum 2.1.8 © JForum Team