Também não fiz muito testes de fuzz , mas aqui estão duas ideias:
Escreva alguns zeros no meio do arquivo. Use dd
com conv=notrunc
. Isto escreve um único byte (tamanho do bloco = 1 contador = 1):
dd if=/dev/zero of=file_to_fuzz.zip bs=1 count=1 seek=N conv=notrunc
Usar /dev/urandom
como uma fonte também é uma opção.
Alternativamente, perfure vários furos de 4k com fallocate --punch-hole
. Você pode até mesmo fallocate --collapse-range
cortar uma página sem sair de um buraco preenchido com zero. (Isso irá alterar o tamanho do arquivo).
Um download retomado no local errado corresponderia ao cenário --collapse-range
. Um torrent incompleto corresponderá ao cenário punch-hole
. (Arquivo esparso ou extensões pré-alocadas, lidas como zero em qualquer lugar que ainda não tenha sido escrito.)
RAM ruim (no sistema do qual você fez o download do arquivo) pode causar danos, e unidades ópticas também podem corromper arquivos (seu ECC nem sempre é strong o suficiente para se recuperar perfeitamente de arranhões ou desbotamento do corante).
Os setores de DVD (blocos ECC) são 2048B , mas erros de byte único ou mesmo de bit único podem acontecer. Algumas unidades provavelmente fornecerão os dados incorretos incorretos em vez de um erro de leitura para o setor, especialmente se você ler no modo raw ou se for chamado.