Reversing CRC
UNIBRATEC
UNIVERSIDADE BRASILEIRA DE TECNOLOGIA
ENGENHARIA DA COMPUTAÇÃO
Filipe Xavier de Oliveira
TEMA
O Cyclic Redundancy Code (CRC) foi desenvolvido como um algoritmo de checagem para detecção de possíveis dados corrompidos no processo de transferência ou armazenamento de dados. No entanto, em algumas situações há uma CRC de um conjunto de dados já estabelecido, assim que os dados em si foram alterados de forma que o CRC detecte e alerte o computador sobre a alteração.
OBJETIVOS DA PESQUISA
Objetivo Principal - Entender o funcionamento de como reverter um CRC
Objetivos Secundários - Estudar e compreender o funcionamento algébrico, “bit-ordenado” e “tabela-guiada” do CRC, através de códigos e demonstrações matemáticas.
1. JUSTIFICATIVA
Todos nós conhecemos o CRC de alguma forma, quem nunca se deparou com uma mensagem de compiladores como RAR e ZIP e outros compressores quando um arquivo é corrompido? Muitos pensam que CRC significa Cyclic Redundancy Check. Se de fato CRC é abreviação para Cyclic Redundancy Check então muitos usam o termo incorretamente, pois se dissermos “O crc do programa é 98989898” logo todos estão dizendo que certo programa possui um CRC check, não um Cyclic Redundancy Check check. Conclusão: CRC significa Cyclic Redundancy Code e não Cyclic Redundancy Check.
O mais popular é o CRC32, que obviamente computa em 32-bit. O processo de transmissão ou armazenamento de dados normalmente contem o risco de modificar os dados até mesmo em nível físico, causada pela transmissão danificada. Para detectar estes erros, alguns “detectores de erro” e até mesmo “auto corretores” de código foram inventados, que calculam um valor do conjunto de dados e transmitem ou armazenam juntamente com os dados. Qualquer função hash pode ser usada como método para detectar esse tipo de erro, e uma delas é o Cyclic Redundancy Check (CRC). Existem diferentes instâncias do CRC das quais diferem principalmente na sua forma