ver ultimas tamaño subdirectorios primeras por para listar lineas las especifico directorios crear comando carpetas archivos archivo linux testing command-line

tamaño - ver las ultimas lineas de un archivo linux



¿Existe un comando para escribir bytes de basura al azar en un archivo? (3)

Ahora estoy haciendo algunas pruebas de mi aplicación de nuevo archivos corruptos. Pero encontré que es difícil encontrar archivos de prueba.

Así que me pregunto si hay algunas herramientas existentes, que pueden escribir bytes aleatorios / basura en un archivo de algún formato.

Básicamente, necesito esta herramienta para:

  1. Escribe bytes de basura al azar en el archivo.
  2. No necesita saber el formato del archivo, solo escribir bytes aleatorios está bien para mí.
  3. Lo mejor es escribir en posiciones aleatorias del archivo de destino.
  4. El procesamiento por lotes también es una ventaja.

Gracias.


Para completar, esta es otra forma de hacerlo:

shred -s 10 - > my-file

Escribe 10 bytes aleatorios para stdout y lo redirige a un archivo. shred se usa generalmente para destruir datos (sobrescribir de manera segura), pero también se puede usar para crear nuevos archivos aleatorios. Entonces, si ya tiene un archivo que desea llenar con datos aleatorios, use esto:

shred my-existing-file


Podrías leer de /dev/random :

# generate a 50MB file named `random.stuff` filled with random stuff ... dd if=/dev/random of=random.stuff bs=1000000 count=50

Usted puede especificar el tamaño también de una manera legible para los humanos:

# generate just 2MB ... dd if=/dev/random of=random.stuff bs=1M count=2


El pseudodispositivo /dev/urandom , junto con dd , puede hacer esto por usted:

dd if=/dev/urandom of=newfile bs=1M count=10

Esto creará un archivo newfile de tamaño 10M.

El dispositivo /dev/random a menudo bloqueará si no hay suficiente aleatoriedad acumulada, urandom no bloqueará. Si usa la aleatoriedad para las cosas de grado criptográfico, puede alejarse de urandom . Para cualquier otra cosa, debería ser suficiente y muy probablemente más rápido.

Si desea corromper solo partes de su archivo (no el archivo completo), simplemente puede usar las funciones aleatorias de estilo C. Simplemente use rnd() para calcular un desplazamiento y longitud n , luego úselo n veces para tomar bytes aleatorios para sobrescribir su archivo.

El siguiente script de Perl muestra cómo se puede hacer esto (sin tener que preocuparse por compilar el código C):

use strict; use warnings; sub corrupt ($$$$) { # Get parameters, names should be self-explanatory. my $filespec = shift; my $mincount = shift; my $maxcount = shift; my $charset = shift; # Work out position and size of corruption. my @fstat = stat ($filespec); my $size = $fstat[7]; my $count = $mincount + int (rand ($maxcount + 1 - $mincount)); my $pos = 0; if ($count >= $size) { $count = $size; } else { $pos = int (rand ($size - $count)); } # Output for debugging purposes. my $last = $pos + $count - 1; print "''$filespec'', $size bytes, corrupting $pos through $last/n";

# Open file, seek to position, corrupt and close. open (my $fh, "+<$filespec") || die "Can''t open $filespec: $!"; seek ($fh, $pos, 0); while ($count-- > 0) { my $newval = substr ($charset, int (rand (length ($charset) + 1)), 1); print $fh $newval; } close ($fh); } # Test harness. system ("echo =========="); #DEBUG system ("cp base-testfile testfile"); #DEBUG system ("cat testfile"); #DEBUG system ("echo =========="); #DEBUG corrupt ("testfile", 8, 16, "ABCDEFGHIJKLMNOPQRSTUVWXYZ "); system ("echo =========="); #DEBUG system ("cat testfile"); #DEBUG system ("echo =========="); #DEBUG

Consiste en la función corrupt que llama con un nombre de archivo, tamaño mínimo y máximo de corrupción y un conjunto de caracteres para extraer la corrupción. El bit en la parte inferior es solo un código de prueba de unidad. A continuación se muestra un ejemplo de salida donde puede ver que una sección del archivo se ha dañado:

========== this is a file with nothing in it except for lowercase letters (and spaces and punctuation and newlines). that will make it easy to detect corruptions from the test program since the character range there is from uppercase a through z. i have to make it big enough so that the random stuff will work nicely, which is why i am waffling on a bit. ========== ''testfile'', 344 bytes, corrupting 122 through 135 ========== this is a file with nothing in it except for lowercase letters (and spaces and punctuation and newlines). that will make iFHCGZF VJ GZDYct corruptions from the test program since the character range there is from uppercase a through z. i have to make it big enough so that the random stuff will work nicely, which is why i am waffling on a bit. ==========

Se ha probado en un nivel básico, pero es posible que haya casos de error de borde que deben ser atendidos. Haz con él lo que quieras.