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.