diff options
Diffstat (limited to 'abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn')
6 files changed, 288 insertions, 0 deletions
diff --git a/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/entries b/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/entries new file mode 100644 index 0000000..1e4c690 --- /dev/null +++ b/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/entries @@ -0,0 +1,96 @@ +9 + +dir +1870 +svn://svn.shaftnet.org/linux-wlan-ng/trunk/add-ons/lwepgen +svn://svn.shaftnet.org/linux-wlan-ng + + + +2003-03-24T16:18:08.000000Z +1324 +solomon + + +svn:special svn:externals svn:needs-lock + + + + + + + + + + + +7c16ee9a-e2ed-0310-ae25-9f6e1be264fe + +lwepgen.c +file + + + + +2009-01-07T08:12:58.000000Z +01822ba621fad68032adc8c34f0b80cd +2003-03-24T16:18:08.000000Z +1324 +solomon +has-props + + + + + + + + + + + + + + + + + + + + +3303 + +Makefile +file + + + + +2009-01-07T08:12:58.000000Z +5bbbaae86af09228581cd7d42a4bc23a +2003-03-24T16:18:08.000000Z +1324 +solomon +has-props + + + + + + + + + + + + + + + + + + + + +160 + diff --git a/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/format b/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/format new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/format @@ -0,0 +1 @@ +9 diff --git a/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/prop-base/Makefile.svn-base b/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/prop-base/Makefile.svn-base new file mode 100644 index 0000000..7b57b30 --- /dev/null +++ b/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/prop-base/Makefile.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 23 +Author Date Id Revision +END diff --git a/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/prop-base/lwepgen.c.svn-base b/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/prop-base/lwepgen.c.svn-base new file mode 100644 index 0000000..7b57b30 --- /dev/null +++ b/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/prop-base/lwepgen.c.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 23 +Author Date Id Revision +END diff --git a/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/text-base/Makefile.svn-base b/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/text-base/Makefile.svn-base new file mode 100644 index 0000000..e960692 --- /dev/null +++ b/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/text-base/Makefile.svn-base @@ -0,0 +1,11 @@ +default: lwepgen + +lwepgen: lwepgen.c + gcc -Wl,/usr/lib/libcrypto.so -o lwepgen lwepgen.c + +lwepgen.c: + echo lwepgen.c missing! + false + +clean: + rm -rf lwepgen diff --git a/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/text-base/lwepgen.c.svn-base b/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/text-base/lwepgen.c.svn-base new file mode 100644 index 0000000..73dc439 --- /dev/null +++ b/abs/core-testing/wlan-ng26-utils/tmp/trunk/add-ons/lwepgen/.svn/text-base/lwepgen.c.svn-base @@ -0,0 +1,162 @@ +/* + * keygen.c + * WEP Key Generators + * + * This program generates WEP keys using de facto standard key + * generators for 40 and 128 bit keys. + * + * Link against OpenSSL's libcrypto.a + * + * I place this code in the public domain. + * May 2001, Tim Newsham + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <sys/types.h> +#include <openssl/md5.h> + +#define WEPKEYSIZE 5 +#define WEPSTRONGKEYSIZE 13 +#define WEPKEYS 4 +#define WEPKEYSTORE (WEPKEYSIZE * WEPKEYS) + +/* + * generate four subkeys from a seed using the defacto standard + */ +void +wep_seedkeygen(int val, u_char *keys) +{ + int i; + + for(i = 0; i < WEPKEYSTORE; i++) { + val *= 0x343fd; + val += 0x269ec3; + keys[i] = val >> 16; + } + return; +} + +/* + * generate one key from a string using the de facto standard + * + * resultant key is stored in + * one 128 bit key: keys[0-15] + * + * (NOTE: I'm not sure why, but it seems that only values 0-12 are used, + * resulting in 104 bits of keying, not 128) + */ +void +wep_keygen128(char *str, u_char *keys) +{ + MD5_CTX ctx; + u_char buf[64]; + int i, j; + + /* repeat str until buf is full */ + j = 0; + for(i = 0; i < 64; i++) { + if(str[j] == 0) + j = 0; + buf[i] = str[j++]; + } + + MD5_Init(&ctx); + MD5_Update(&ctx, buf, sizeof buf); + MD5_Final(buf, &ctx); + + memcpy(keys, buf, WEPKEYSTORE); + for(i = 0; i < WEPSTRONGKEYSIZE; i++) { + keys[i] = buf[i]; + } + for(; i < WEPKEYSTORE; i++) { + keys[i] = 0; + } + return; +} + +/* + * generate four subkeys from a string using the defacto standard + * + * resultant keys are stored in + * four 40 bit keys: keys[0-4], keys[5-9], keys[10-14] and keys[15-20] + */ +void +wep_keygen40(char *str, u_char *keys) +{ + int val, i, shift; + + /* + * seed is generated by xor'ing in the keystring bytes + * into the four bytes of the seed, starting at the little end + */ + val = 0; + for(i = 0; str[i]; i++) { + shift = i & 0x3; + val ^= (str[i] << (shift * 8)); + } + + wep_seedkeygen(val, keys); + return; +} + +void +wep_keyprint(u_char *keys, int strong) +{ + int i, printlength, keylength; + char sepchar; + + printlength = strong ? WEPSTRONGKEYSIZE : WEPKEYSTORE; + keylength = strong ? WEPSTRONGKEYSIZE : WEPKEYSIZE; + + for(i = 0; i < printlength; i++) { + sepchar = (i % keylength == keylength - 1) ? '\n' : ':'; + printf("%02x%c", keys[i], sepchar); + } + return; +} + +void +usage(char *prog) +{ + printf("%s: generates Lucent compatible WEP keys from a string\n", prog); + printf("Usage: %s [-s] keystring\n", prog); + exit(1); +} + +int +main(int argc, char **argv) +{ + u_char keys[WEPKEYSTORE]; + char *prog, *genstr; + int strong, ch; + + prog = argv[0]; + strong = 0; + while((ch = getopt(argc, argv, "s")) != EOF) { + switch(ch) { + case 's': + strong ++; + break; + default: + usage(prog); + } + } + argc -= optind; + argv += optind; + + if(argc != 1) + usage(prog); + genstr = argv[0]; + + if(strong) + wep_keygen128(genstr, keys); + else + wep_keygen40(genstr, keys); + + wep_keyprint(keys, strong); + + return 0; +} |