Author Topic: Release version of random pad generator.  (Read 42 times)

hutch--

  • Administrator
  • Member
  • ******
  • Posts: 6208
  • Mnemonic Driven API Grinder
    • The MASM32 SDK
Release version of random pad generator.
« on: April 14, 2019, 01:02:21 PM »
I can't find anything else to do on this release version, I have added command line options that has a user defined output file name and the options of 2 to 10 XOR passes against the original pad. The first argument is a user defined integer that is multiplied by 1 million to set the pad size. The arguments are as follows.

SYNTAX : arg1 = integer in the following form
            1 = 1 million bytes, 2 = 2 million bytes, etc ....
         arg2 = The file name with no spaces
         arg3 = The number of XOR passes, 2 to 10

The public domain application ENT is included in the zip file and when rpg.exe is run, it calls ENT to immediately test the randomness of the output. Preferred range is when the CHI SQUARED is between 25% and 75% but the reference material that you find with ENT says 10% to 90% are OK.

The random output is usually OK but as with proper random you get some results outside the 10 - 90% range which you should discard. The real work with this tool is to make the pad non reproducable and its done with a massive level of complexity to make unwinding its construction near impossible. This addresses the potential of a single DWORD pad being broken by a brute force attack on very high powered computer hardware by simply running the full DWORD range.

The internal pad generator uses 5 identical pseudo random generators that construct each pad at randomly variable lengths and each pad is then XORRED against another random pad generated in the same manner. Multiple re-seeding occurs with each of the 5 random generators to break any patterns that may emerge with the random generators. The basic random generator is a custom modified shift-xor type that exhibits good randomness in a single pass.

It has been tested on win10 64 bit up to 1.5 billion byte pad sizes, above that you run into memory allocation failures. On older machines you will not be able to build pads of that size as the limit is determined by available memory.
hutch at movsd dot com
http://www.masm32.com    :biggrin:  :biggrin: