=head1	NAME

rndbytes - Create random bytes

=head1	SYNOPSIS

  rndbytes [<options>]

=head1	DESCRIPTION

The program generates pseudo-random bytes and writes to standard output.
The typical use of the program is redirect the output of this program
to a ``dd'' command to overwrite a disk.

=head1	OPTIONS

=over	6

=item	B<-h>

Show a help text.

Long option: B<--help>

=item	B<-v>

Show the version number.

Long option: B<--version>

=item	B<-c>

Configure the program (set the options in the command line as permanent
options).

Long option: B<--configure>

=item	B<-C>

Show the permanent options.

Long option: B<--show-configuration>

=item	B<-u>

Unconfigure, remove the permanent options set by the user.

Long option: B<--unconfigure>

=item	B<-r>

Reset the program, skip permanent options set by the user and defaults
set by the administrator, use built-in defaults instead.

This option must appear before any of the following options.

Long option: B<--reset>

=item	B<-b> I<blocksize>

Specify the block size.

Long option: B<--blocksize=>I<size>

=item	B<-n> I<number>

Specify the number of blocks (use 0 for an ``endless'' sequence
until the program is aborted by a signal on Linux/Unix systems
or by pressing a key on a
Windows system).

Long option: B<--nblocks=>I<number>

=item	B<-a> I<prngs>

Allow a set of PRNGs (pseudo random number generators). The arguments
is either ``all'' or a comma-separated list of
``openssl'' (OpenSSL PRNG), ``random'' (initstate()/setstate()/random()
functions), ``rand48'' (nrand48() function), ``rand'' (rand() function).

Long option: B<--prngs=>I<prngs>

=back

=head1	RETURN VALUE

The program returns exit status 0 on success, any other exit status
indicates an error.

=head1	EXAMPLES

  rndbytes -b 512 -n 0 -a openssl | dd of=/dev/sda

overwrites an entire hard disk using pseudo random data.

=head1	CAVEATS

Generating a large amount of pseudo random data is a slow process.

Unless you are in a military environment or top-secret banking environment
it should be sufficient to run several passes of edbp to write fixed
patterns to the disk.

For high security environments: If you want to make a hard disk unreadable
visit your facility management unit and use a drilling machine and/or
a hammer.

=head1	AUTHOR

Dirk Krause

=head1	HISTORY

=head1	COPYRIGHT AND LICENSE

Copyright (c) 2010, Dirk Krause
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

 * Redistributions of source code must retain the above
   copyright notice, this list of conditions and the
   following disclaimer.

 * Redistributions in binary form must reproduce the above
   copyright notice, this list of conditions and the following
   disclaimer in the documentation and/or other materials
   provided with the distribution.

 * Neither the name of the Dirk Krause nor the names of
   contributors may be used to endorse or promote products
   derived from this software without specific prior written
   permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

=head1	SEE ALSO

edbp(1), http://dktools.sourceforge.net/rndbytes.html

