diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:31 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:31 -0800 |
commit | 39c3e9d45c422c33aaf85c552a96434f2b9371e2 (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /data/xor.c | |
parent | 15078382e0325b29af4eeb6ec267ad3a8eeaa8b5 (diff) | |
download | netcat-39c3e9d45c422c33aaf85c552a96434f2b9371e2.tar.gz |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'data/xor.c')
-rw-r--r-- | data/xor.c | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/data/xor.c b/data/xor.c deleted file mode 100644 index 9feead0..0000000 --- a/data/xor.c +++ /dev/null @@ -1,92 +0,0 @@ -/* Generic xor handler. - - With no args, xors stdin against 0xFF to stdout. A single argument is a - file to read xor-bytes out of. Any zero in the xor-bytes array is treated - as the end; if you need to xor against a string that *includes* zeros, - you're on your own. - - The indirect file can be generated easily with data.c. - - Written because there are so many lame schemes for "masking" plaintext - passwords and the like floating around, and it's handy to just run an - obscure binary-format configuration file through this and look for strings. - - *Hobbit*, 960208 */ - -#include <stdio.h> -#include <fcntl.h> - -char buf[8192]; -char bytes[256]; -char * py; - -/* do the xor, in place. Uses global ptr "py" to maintain "bytes" state */ -xorb (buf, len) - char * buf; - int len; -{ - register int x; - register char * pb; - - pb = buf; - x = len; - while (x > 0) { - *pb = (*pb ^ *py); - pb++; - py++; - if (! *py) - py = bytes; - x--; - } -} /* xorb */ - -/* blah */ -main (argc, argv) - int argc; - char ** argv; -{ - register int x = 0; - register int y; - -/* manually preload; xor-with-0xFF is all too common */ - memset (bytes, 0, sizeof (bytes)); - bytes[0] = 0xff; - -/* if file named in any arg, reload from that */ -#ifdef O_BINARY /* DOS shit... */ - x = setmode (0, O_BINARY); /* make stdin raw */ - if (x < 0) { - fprintf (stderr, "stdin binary setmode oops: %d\n", x); - exit (1); - } - x = setmode (1, O_BINARY); /* make stdout raw */ - if (x < 0) { - fprintf (stderr, "stdout binary setmode oops: %d\n", x); - exit (1); - } -#endif /* O_BINARY */ - - if (argv[1]) -#ifdef O_BINARY - x = open (argv[1], O_RDONLY | O_BINARY); -#else - x = open (argv[1], O_RDONLY); -#endif - if (x > 0) { - read (x, bytes, 250); /* nothin' fancy here */ - close (x); - } - py = bytes; - x = 1; - while (x > 0) { - x = read (0, buf, sizeof (buf)); - if (x <= 0) - break; - xorb (buf, x); - y = write (1, buf, x); - if (y <= 0) - exit (1); - } - exit (0); -} - |