diff -urpN magnum-jumbo/doc/CHANGES-jumbo magnum-jumbo_warnings//doc/CHANGES-jumbo --- magnum-jumbo/doc/CHANGES-jumbo 2012-06-13 19:16:45.318293388 +0000 +++ magnum-jumbo_warnings//doc/CHANGES-jumbo 2012-06-13 20:27:49.923293614 +0000 @@ -1,6 +1,7 @@ The following major changes was made since Jumbo-5: New formats: +* PWSAFE CPU, CUDA and OpenCL (Dhiru and Lukas) * Raw-SHA1 "LinkedIn" format (partial hashes, 20 bit zeroed) (Jim Fougeron) * GOST 3411. (JimF, Sergey V and Dhiru Kholia) * Blowfish OpenCL (Sayantan Datta) @@ -8,7 +9,7 @@ New formats: * Django 1.4 hashes. (Dhiru) * WoltLab Burning Board 3 hashes. (Dhiru) * Password Safe files. (Dhiru) -* WPAPSK format for CUDA and OpenCL (Lukas Odzioba) +* WPAPSK format for CUDA and OpenCL (Lukas) * Mac OS X Keychain cracker with OMP support. (Dhiru) * Office 2007/2010 documents. (Dhiru) * Add support for *new* EPiServer's default hashes. (Dhiru) diff -urpN magnum-jumbo/src/common-opencl.c magnum-jumbo_warnings//src/common-opencl.c --- magnum-jumbo/src/common-opencl.c 2012-06-13 19:16:45.340293432 +0000 +++ magnum-jumbo_warnings//src/common-opencl.c 2012-06-13 19:50:27.391311854 +0000 @@ -209,7 +209,6 @@ void opencl_find_best_workgroup(struct f if (pFmt->params.max_keys_per_crypt % my_work_group != 0) continue; - size_t localworksize = my_work_group; clGetEventProfilingInfo(profilingEvent, CL_PROFILING_COMMAND_SUBMIT, sizeof(cl_ulong), &startTime, NULL); diff -urpN magnum-jumbo/src/common_opencl_pbkdf2.c magnum-jumbo_warnings//src/common_opencl_pbkdf2.c --- magnum-jumbo/src/common_opencl_pbkdf2.c 2012-06-13 19:16:45.341293437 +0000 +++ magnum-jumbo_warnings//src/common_opencl_pbkdf2.c 2012-06-13 20:22:32.572418242 +0000 @@ -118,7 +118,7 @@ static void find_best_workgroup(int pltf PROFILE=0; - printf("Optimal Work Group Size:%d\n",lws[pltform_no][dev_no]); + printf("Optimal Work Group Size:%d\n",(int)lws[pltform_no][dev_no]); printf("Kernel Execution Speed (Higher is better):%Lf\n",exec_time_inv[pltform_no][dev_no]); diff -urpN magnum-jumbo/src/cuda_pwsafe_fmt.c magnum-jumbo_warnings//src/cuda_pwsafe_fmt.c --- magnum-jumbo/src/cuda_pwsafe_fmt.c 2012-06-13 19:16:45.343293331 +0000 +++ magnum-jumbo_warnings//src/cuda_pwsafe_fmt.c 2012-06-13 19:21:35.688543539 +0000 @@ -41,7 +41,7 @@ static int any_cracked; static pwsafe_pass *host_pass; /** binary ciphertexts **/ static pwsafe_salt *host_salt; /** salt **/ static pwsafe_hash *host_hash; /** calculated hashes **/ - +extern void gpu_pwpass(pwsafe_pass *, pwsafe_salt *, pwsafe_hash *); static void init(struct fmt_main *pFmt) { host_pass = calloc(KEYS_PER_CRYPT, sizeof(pwsafe_pass)); diff -urpN magnum-jumbo/src/cuda_wpapsk_fmt.c magnum-jumbo_warnings//src/cuda_wpapsk_fmt.c --- magnum-jumbo/src/cuda_wpapsk_fmt.c 2012-06-13 19:16:45.344293161 +0000 +++ magnum-jumbo_warnings//src/cuda_wpapsk_fmt.c 2012-06-13 19:36:26.627543688 +0000 @@ -28,6 +28,8 @@ extern hccap_t hccap; extern mic_t *mic; extern void wpapsk_gpu(wpapsk_password *, wpapsk_hash *, wpapsk_salt *); +extern void *salt(char *ciphertext); + /** testcase from http://wiki.wireshark.org/SampleCaptures = wpa-Induction.pcap **/ static struct fmt_tests wpapsk_tests[] = { {"$WPAPSK$Coherer#..l/Uf7J..qHUXMunTE3nfbMWSwxv27Ua0XutIOrfRSuv9gOCIugIVGlosMyXdNxfBZUAYmgKqeb6GBPxLiIZr56NtWTGR/Cp5ldAk61.5I0.Ec.2...........nTE3nfbMWSwxv27Ua0XutIOrfRSuv9gOCIugIVGlosM.................................................................3X.I.E..1uk0.E..1uk2.E..1uk0....................................................................................................................................................................................../t.....U...8FWdk8OpPckhewBwt4MXYI", "Induction"}, diff -urpN magnum-jumbo/src/hccap2john.c magnum-jumbo_warnings//src/hccap2john.c --- magnum-jumbo/src/hccap2john.c 2012-06-13 19:16:45.348293240 +0000 +++ magnum-jumbo_warnings//src/hccap2john.c 2012-06-13 19:47:09.510418249 +0000 @@ -15,7 +15,20 @@ #include #include #include "common.h" -#include "wpapsk.h" + +#define HCCAP_SIZE 392 +typedef struct +{ + char essid[36]; + unsigned char mac1[6]; + unsigned char mac2[6]; + unsigned char nonce1[32]; + unsigned char nonce2[32]; + unsigned char eapol[256]; + int eapol_size; + int keyver; + unsigned char keymic[16]; +} hccap_t; void code_block(unsigned char *in, unsigned char b) { @@ -32,7 +45,7 @@ void print_hccap(hccap_t * cap) { int i; unsigned char *w = (unsigned char *) cap; - printf("%s%s#", wpapsk_prefix, cap->essid); + printf("$WPAPSK$%s#", cap->essid); for (i = 36; i + 3 < sizeof(hccap_t); i += 3) code_block(&w[i], 1); code_block(&w[i], 0); diff -urpN magnum-jumbo/src/opencl_cryptmd5_fmt.c magnum-jumbo_warnings//src/opencl_cryptmd5_fmt.c --- magnum-jumbo/src/opencl_cryptmd5_fmt.c 2012-06-13 19:16:45.355293258 +0000 +++ magnum-jumbo_warnings//src/opencl_cryptmd5_fmt.c 2012-06-13 20:03:25.426394496 +0000 @@ -65,7 +65,6 @@ static cl_mem mem_in, mem_out, mem_salt; static size_t insize = sizeof(crypt_md5_password) * KEYS_PER_CRYPT; static size_t outsize = sizeof(crypt_md5_hash) * KEYS_PER_CRYPT; static size_t saltsize = sizeof(crypt_md5_salt); -static size_t global_work_size = KEYS_PER_CRYPT; //tests are unified for 8+8 length diff -urpN magnum-jumbo/src/opencl_cryptsha512_fmt.c magnum-jumbo_warnings//src/opencl_cryptsha512_fmt.c --- magnum-jumbo/src/opencl_cryptsha512_fmt.c 2012-06-13 19:16:45.355293258 +0000 +++ magnum-jumbo_warnings//src/opencl_cryptsha512_fmt.c 2012-06-13 19:53:36.342418461 +0000 @@ -431,12 +431,12 @@ static void find_best_gws(void) { num, (long) (num / (run_time / 1000000000.)), SHAspeed, (float) run_time / 1000000000.); - if (run_time > 10000000000) { + if (run_time > 10000000000LL) { fprintf(stderr, " - too slow\n"); break; } } else { - if (run_time > min_time * 7 || run_time > 10000000000) + if (run_time > min_time * 7 || run_time > 10000000000LL) break; } if (SHAspeed > (1.01 * bestSHAspeed)) { diff -urpN magnum-jumbo/src/opencl_pwsafe_fmt.c magnum-jumbo_warnings//src/opencl_pwsafe_fmt.c --- magnum-jumbo/src/opencl_pwsafe_fmt.c 2012-06-13 19:16:45.356293230 +0000 +++ magnum-jumbo_warnings//src/opencl_pwsafe_fmt.c 2012-06-13 19:56:49.223543070 +0000 @@ -68,7 +68,6 @@ static cl_mem mem_in, mem_out, mem_salt; static size_t insize = sizeof(pwsafe_pass) * KEYS_PER_CRYPT; static size_t outsize = sizeof(pwsafe_hash) * KEYS_PER_CRYPT; static size_t saltsize = sizeof(pwsafe_salt); -static size_t global_work_size = KEYS_PER_CRYPT; static int any_cracked; static pwsafe_pass *host_pass; /** binary ciphertexts **/ @@ -92,8 +91,6 @@ static void pwsafe_set_key(char *key, in host_pass[index].length = saved_key_length; } -static void find_best_workgroup(struct fmt_main *pFmt); - static void init(struct fmt_main *pFmt) { host_pass = calloc(KEYS_PER_CRYPT, sizeof(pwsafe_pass)); diff -urpN magnum-jumbo/src/wpapsk.h magnum-jumbo_warnings//src/wpapsk.h --- magnum-jumbo/src/wpapsk.h 2012-06-13 19:16:45.373418162 +0000 +++ magnum-jumbo_warnings//src/wpapsk.h 2012-06-13 20:24:10.548668699 +0000 @@ -23,6 +23,7 @@ #define BENCHMARK_COMMENT "" #define BENCHMARK_LENGTH -1 +/** if you want to change hccap_t structure is also defined in hccap2john.c **/ typedef struct { char essid[36]; @@ -83,7 +84,8 @@ static hccap_t *decode_hccap(char *ciphe *d = '\0'; assert(*essid == '#'); char *cap = hash + 1; - unsigned char *dst = hccap.mac1; + unsigned char tbuf[sizeof(hccap_t)]; + unsigned char *dst = tbuf; int i; for (i = 0; i < 118; i++) { @@ -105,6 +107,7 @@ static hccap_t *decode_hccap(char *ciphe dst[1] = (atoi64[ARCH_INDEX(cap[1])] << 4) | (atoi64[ARCH_INDEX(cap[2])] >> 2); + memcpy(&hccap.mac1,tbuf,sizeof(hccap_t)-36); return &hccap; }