Como eu iria sobre a implementação deste algoritmo?
-
20-08-2019 - |
Pergunta
Um tempo atrás eu estava tentando Bruteforce um controle remoto que enviou uma 'chave' binário de 12 bits.
O dispositivo Fiz funcionou, mas foi muito lenta, uma vez que estava tentando cada combinação a cerca de 50 bits por segundo (4096 códigos = 49152 = bits de ~ 16 minutos)
Eu abri o receptor e verificou-se usando um registrador de deslocamento para verificar os códigos e foi necessário nenhum atraso entre as tentativas. Isto significava que o receptor estava simplesmente olhando para os últimos 12 bits para ser recebidos para ver se eles eram uma partida para a chave.
Isto significa que se o 111111111111000000000000
fluxo foi enviada através, tinha efetivamente tentou todos esses códigos.
111111111111 111111111110 111111111100 111111111000
111111110000 111111100000 111111000000 111110000000
111100000000 111000000000 110000000000 100000000000
000000000000
Neste caso, eu usei 24 bits para tentar 13 12 combinações de bits (> 90% de compressão).
Alguém sabe de um algoritmo que poderia reduzir meus 49152 bits enviados tirando proveito disso?
Solução
O que você está falando é um de Bruijn seqüência . Se você não se importa sobre como ele funciona, você só quer o resultado, aqui é .
Outras dicas
Em cima da minha cabeça, eu suponho lançando um pouco em cada seqüência de 12-bit iria cuidar de outros 13 combinações, por exemplo 111111111101000000000010, então 111111111011000000000100, etc. Mas você ainda tem que fazer um monte permutações, mesmo com um bit Eu acho que você ainda tem que fazer 111111111101000000000100 etc. em seguida, vire dois bits de um lado e um do outro, etc.