summaryrefslogtreecommitdiff
path: root/net-wireless/cowpatty/files
diff options
context:
space:
mode:
Diffstat (limited to 'net-wireless/cowpatty/files')
-rw-r--r--net-wireless/cowpatty/files/cowpatty-4.3-fixup2.patch221
-rw-r--r--net-wireless/cowpatty/files/cowpatty-4.3-hashfix.patch12
-rw-r--r--net-wireless/cowpatty/files/cowpatty-4.6-fixup14.patch346
3 files changed, 0 insertions, 579 deletions
diff --git a/net-wireless/cowpatty/files/cowpatty-4.3-fixup2.patch b/net-wireless/cowpatty/files/cowpatty-4.3-fixup2.patch
deleted file mode 100644
index 3ac75910..00000000
--- a/net-wireless/cowpatty/files/cowpatty-4.3-fixup2.patch
+++ /dev/null
@@ -1,221 +0,0 @@
-diff -uNr cowpatty-4.3/cowpatty.c cowpatty-4.3-fixup2/cowpatty.c
---- cowpatty-4.3/cowpatty.c 2008-03-20 09:49:38.000000000 -0700
-+++ cowpatty-4.3-fixup2/cowpatty.c 2009-05-21 23:38:17.970291072 -0700
-@@ -71,7 +71,7 @@
- void cleanup();
- void parseopts(struct user_opt *opt, int argc, char **argv);
- void closepcap(struct capture_data *capdata);
--void handle_dot1x(struct crack_data *cdata, struct capture_data *capdata);
-+void handle_dot1x(struct crack_data *cdata, struct capture_data *capdata, struct user_opt *opt);
- void dump_all_fields(struct crack_data cdata);
- void printstats(struct timeval start, struct timeval end,
- unsigned long int wordcount);
-@@ -389,7 +389,7 @@
- return (ret);
- }
-
--void handle_dot1x(struct crack_data *cdata, struct capture_data *capdata)
-+void handle_dot1x(struct crack_data *cdata, struct capture_data *capdata, struct user_opt *opt)
- {
- struct ieee8021x *dot1xhdr;
- struct wpa_eapol_key *eapolkeyhdr;
-@@ -415,8 +415,8 @@
- cdata->ver = key_info & WPA_KEY_INFO_TYPE_MASK;
- index = key_info & WPA_KEY_INFO_KEY_INDEX_MASK;
-
-- /* Check for EAPOL version 1, type EAPOL-Key */
-- if (dot1xhdr->version != 1 || dot1xhdr->type != 3) {
-+ /* Check for type EAPOL-Key */
-+ if (dot1xhdr->type != 3) {
- return;
- }
-
-@@ -427,59 +427,78 @@
-
- if (cdata->ver == WPA_KEY_INFO_TYPE_HMAC_MD5_RC4) {
- /* Check for WPA key, and pairwise key type */
-- if (eapolkeyhdr->type != 254 ||
-+ if ((eapolkeyhdr->type != 2 && eapolkeyhdr->type != 254) ||
- (key_info & WPA_KEY_INFO_KEY_TYPE) == 0) {
- return;
- }
- } else if (cdata->ver == WPA_KEY_INFO_TYPE_HMAC_SHA1_AES) {
-- if (eapolkeyhdr->type != 2 ||
-+ if ((eapolkeyhdr->type != 2 && eapolkeyhdr->type != 254) ||
- (key_info & WPA_KEY_INFO_KEY_TYPE) == 0) {
- return;
- }
- }
-
-+ if (opt->verbose > 2) {
-+ printf ("WPA_KEY_INFO_TYPE_HMAC_MD5_RC4: %d\n", WPA_KEY_INFO_TYPE_HMAC_MD5_RC4);
-+ printf ("WPA_KEY_INFO_TYPE_HMAC_SHA1_AES: %d\n", WPA_KEY_INFO_TYPE_HMAC_SHA1_AES);
-+ printf ("key version: %d\n", cdata->ver);
-+ printf ("eapol key header type: %d\n", eapolkeyhdr->type);
-+ }
-+
-+ /* Check for frame 1 of the 4-way handshake */
-+ if ((key_info & WPA_KEY_INFO_MIC) == 0
-+ && (key_info & WPA_KEY_INFO_ACK)
-+ && (key_info & WPA_KEY_INFO_INSTALL) == 0 ) {
-+ /* All we need from this frame is the authenticator nonce */
-+ memcpy(cdata->anonce, eapolkeyhdr->key_nonce,
-+ sizeof(cdata->anonce));
-+ cdata->anonceset = 1;
-+
- /* Check for frame 2 of the 4-way handshake */
-- if ((key_info & WPA_KEY_INFO_MIC) && (key_info & WPA_KEY_INFO_ACK) == 0
-- && (key_info & WPA_KEY_INFO_INSTALL) == 0
-- && eapolkeyhdr->key_data_length > 0) {
-- /* All we need from this frame is the authenticator nonce */
-- memcpy(cdata->snonce, eapolkeyhdr->key_nonce,
-- sizeof(cdata->snonce));
-- cdata->snonceset = 1;
-+ } else if ((key_info & WPA_KEY_INFO_MIC)
-+ && (key_info & WPA_KEY_INFO_INSTALL) == 0
-+ && (key_info & WPA_KEY_INFO_ACK) == 0
-+ && eapolkeyhdr->key_data_length > 0) {
-
-- } else if ( /* Check for frame 3 of the 4-way handshake */
-- (key_info & WPA_KEY_INFO_MIC)
-- && (key_info & WPA_KEY_INFO_INSTALL)
-- && (key_info & WPA_KEY_INFO_ACK)) {
-+ cdata->eapolframe_size = ( packet[capdata->dot1x_offset + 2] << 8 )
-+ + packet[capdata->dot1x_offset + 3] + 4;
-
- memcpy(cdata->spa, &packet[capdata->dstmac_offset],
-- sizeof(cdata->spa));
-- memcpy(cdata->aa, &packet[capdata->srcmac_offset],
-- sizeof(cdata->aa));
-- memcpy(cdata->anonce, eapolkeyhdr->key_nonce,
-- sizeof(cdata->anonce));
-- cdata->aaset = 1;
-- cdata->spaset = 1;
-- cdata->anonceset = 1;
-- /* We save the replay counter value in the 3rd frame to match
-- against the 4th frame of the four-way handshake */
-- memcpy(cdata->replay_counter, eapolkeyhdr->replay_counter, 8);
--
-- } else if ( /* Check for frame 4 of the four-way handshake */
-- (key_info & WPA_KEY_INFO_MIC)
-- && (key_info & WPA_KEY_INFO_ACK) == 0
-- && (key_info & WPA_KEY_INFO_INSTALL) == 0
-- &&
-- (memcmp
-- (cdata->replay_counter, eapolkeyhdr->replay_counter,
-- 8) == 0)) {
-+ sizeof(cdata->spa));
-+ memcpy(cdata->aa, &packet[capdata->srcmac_offset],
-+ sizeof(cdata->aa));
-+ memcpy(cdata->snonce, eapolkeyhdr->key_nonce,
-+ sizeof(cdata->snonce));
-+ cdata->aaset = 1;
-+ cdata->spaset = 1;
-+ cdata->snonceset = 1;
-
- memcpy(cdata->keymic, eapolkeyhdr->key_mic,
-- sizeof(cdata->keymic));
-+ sizeof(cdata->keymic));
- memcpy(cdata->eapolframe, &packet[capdata->dot1x_offset],
-- sizeof(cdata->eapolframe));
-+ cdata->eapolframe_size);
-+
- cdata->keymicset = 1;
- cdata->eapolframeset = 1;
-+
-+ /* Check for frame 3 of the 4-way handshake */
-+ } else if ((key_info & WPA_KEY_INFO_MIC)
-+ && (key_info & WPA_KEY_INFO_ACK)
-+ && (key_info & WPA_KEY_INFO_INSTALL)) {
-+ /* All we need from this frame is the authenticator nonce */
-+ memcpy(cdata->anonce, eapolkeyhdr->key_nonce,
-+ sizeof(cdata->anonce));
-+ cdata->anonceset = 1;
-+
-+ }
-+
-+ if (opt->verbose > 2) {
-+ printf("aaset: %d\n",cdata->aaset);
-+ printf("spaset: %d\n",cdata->spaset);
-+ printf("snonceset: %d\n",cdata->snonceset);
-+ printf("keymicset: %d\n",cdata->keymicset);
-+ printf("eapolframeset: %d\n",cdata->eapolframeset);
-+ printf("anonceset: %d\n", cdata->anonceset);
- }
- }
-
-@@ -507,8 +526,7 @@
- printf("\n");
-
- printf("eapolframe is:");
-- lamont_hdump(cdata.eapolframe, 99); /* Bug in lamont_hdump makes this look
-- wrong, only shows 98 bytes */
-+ lamont_hdump(cdata.eapolframe, cdata.eapolframe_size);
- printf("\n");
-
- }
-@@ -706,7 +724,7 @@
- }
-
- hmac_hash(cdata->ver, ptkset->mic_key, 16, cdata->eapolframe,
-- sizeof(cdata->eapolframe), keymic);
-+ cdata->eapolframe_size, keymic);
-
- if (opt->verbose > 2) {
- printf("Calculated MIC with \"%s\" is", passphrase);
-@@ -815,7 +833,7 @@
- }
-
- hmac_hash(cdata->ver, ptkset->mic_key, 16, cdata->eapolframe,
-- sizeof(cdata->eapolframe), keymic);
-+ cdata->eapolframe_size, keymic);
-
- if (opt->verbose > 2) {
- printf("Calculated MIC with \"%s\" is", passphrase);
-@@ -874,7 +892,7 @@
- 0 && (h->len >
- capdata.l2type_offset + sizeof(struct wpa_eapol_key))) {
- /* It's a dot1x frame, process it */
-- handle_dot1x(&cdata, &capdata);
-+ handle_dot1x(&cdata, &capdata, &opt);
- if (cdata.aaset && cdata.spaset && cdata.snonceset &&
- cdata.anonceset && cdata.keymicset
- && cdata.eapolframeset) {
-@@ -909,7 +927,6 @@
- eapkeypacket =
- (struct wpa_eapol_key *)&cdata.eapolframe[EAPDOT1XOFFSET];
- memset(&eapkeypacket->key_mic, 0, sizeof(eapkeypacket->key_mic));
-- eapkeypacket->key_data_length = 0;
-
- printf("Starting dictionary attack. Please be patient.\n");
- fflush(stdout);
-diff -uNr cowpatty-4.3/cowpatty.h cowpatty-4.3-fixup2/cowpatty.h
---- cowpatty-4.3/cowpatty.h 2008-03-20 09:49:38.000000000 -0700
-+++ cowpatty-4.3-fixup2/cowpatty.h 2009-05-21 23:37:52.533281370 -0700
-@@ -94,7 +94,7 @@
- u16 length;
- } __attribute__ ((packed));
-
--#define MAXPASSLEN 63
-+#define MAXPASSLEN 64
- #define MEMORY_DICT 0
- #define STDIN_DICT 1
- #define EAPDOT1XOFFSET 4
-@@ -166,7 +166,8 @@
- u8 spa[6];
- u8 snonce[32];
- u8 anonce[32];
-- u8 eapolframe[99]; /* Length the same for all packets? */
-+ u8 eapolframe[99];
-+ u8 eapolframe2[125];
- u8 keymic[16];
- u8 aaset;
- u8 spaset;
-@@ -177,6 +178,7 @@
- u8 replay_counter[8];
-
- int ver; /* Hashing algo, MD5 or AES-CBC-MAC */
-+ int eapolframe_size;
- };
-
- struct hashdb_head {
diff --git a/net-wireless/cowpatty/files/cowpatty-4.3-hashfix.patch b/net-wireless/cowpatty/files/cowpatty-4.3-hashfix.patch
deleted file mode 100644
index 2ae6fcd2..00000000
--- a/net-wireless/cowpatty/files/cowpatty-4.3-hashfix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -uNr cowpatty-4.3/cowpatty.c cowpatty-4.3-hashfix/cowpatty.c
---- cowpatty-4.3/cowpatty.c 2008-03-20 09:49:38.000000000 -0700
-+++ cowpatty-4.3-hashfix/cowpatty.c 2008-10-19 23:29:22.000000000 -0700
-@@ -202,7 +202,7 @@
- }
-
- /* Test that the files specified exist and are greater than 0 bytes */
-- if (!IsBlank(opt->hashfile)) {
-+ if (!IsBlank(opt->hashfile) && strncmp(opt->hashfile, "-", 1) != 0) {
- if (stat(opt->hashfile, &teststat)) {
- usage("Could not stat hashfile. Check file path.");
- exit(-1);
diff --git a/net-wireless/cowpatty/files/cowpatty-4.6-fixup14.patch b/net-wireless/cowpatty/files/cowpatty-4.6-fixup14.patch
deleted file mode 100644
index c27e2b18..00000000
--- a/net-wireless/cowpatty/files/cowpatty-4.6-fixup14.patch
+++ /dev/null
@@ -1,346 +0,0 @@
-diff -uNr cowpatty-4.6/cowpatty.c cowpatty-4.6-fixup14/cowpatty.c
---- cowpatty-4.6/cowpatty.c 2009-07-03 08:15:50.000000000 -0700
-+++ cowpatty-4.6-fixup14/cowpatty.c 2009-07-17 19:16:21.792816008 -0700
-@@ -94,8 +94,7 @@
- "\t-d \tHash file (genpmk)\n"
- "\t-r \tPacket capture file\n"
- "\t-s \tNetwork SSID (enclose in quotes if SSID includes spaces)\n"
-- "\t-2 \tUse frames 1 and 2 or 2 and 3 for key attack (nonstrict mode)\n"
-- "\t-c \tCheck for valid 4-way frames, does not crack\n"
-+ "\t-c \tCheck for valid 4-way frames, does not crack\n"
- "\t-h \tPrint this help information and exit\n"
- "\t-v \tPrint verbose information (more -v for more verbosity)\n"
- "\t-V \tPrint program version and exit\n" "\n");
-@@ -151,7 +150,7 @@
-
- int c;
-
-- while ((c = getopt(argc, argv, "f:r:s:d:c2nhvV")) != EOF) {
-+ while ((c = getopt(argc, argv, "f:r:s:d:cnhvV")) != EOF) {
- switch (c) {
- case 'f':
- strncpy(opt->dictfile, optarg, sizeof(opt->dictfile));
-@@ -166,9 +165,6 @@
- strncpy(opt->hashfile, optarg, sizeof(opt->hashfile));
- break;
- case 'n':
-- case '2':
-- opt->nonstrict++;
-- break;
- case 'c':
- opt->checkonly++;
- break;
-@@ -435,21 +431,11 @@
- cdata->ver = key_info & WPA_KEY_INFO_TYPE_MASK;
- index = key_info & WPA_KEY_INFO_KEY_INDEX_MASK;
-
-- if (opt->nonstrict == 0) {
--
-- /* Check for EAPOL version 1, type EAPOL-Key */
-- if (dot1xhdr->version != 1 || dot1xhdr->type != 3) {
-- return;
-- }
--
-- } else {
--
-- /* Check for type EAPOL-Key */
-- if (dot1xhdr->type != 3) {
-- return;
-- }
--
-+ /* Check for type EAPOL-Key */
-+ if (dot1xhdr->type != 3) {
-+ return;
- }
-+
- if (cdata->ver != WPA_KEY_INFO_TYPE_HMAC_MD5_RC4 &&
- cdata->ver != WPA_KEY_INFO_TYPE_HMAC_SHA1_AES) {
- return;
-@@ -457,12 +443,12 @@
-
- if (cdata->ver == WPA_KEY_INFO_TYPE_HMAC_MD5_RC4) {
- /* Check for WPA key, and pairwise key type */
-- if (eapolkeyhdr->type != 254 ||
-+ if ((eapolkeyhdr->type != 2 && eapolkeyhdr->type != 254) ||
- (key_info & WPA_KEY_INFO_KEY_TYPE) == 0) {
- return;
- }
- } else if (cdata->ver == WPA_KEY_INFO_TYPE_HMAC_SHA1_AES) {
-- if (eapolkeyhdr->type != 2 ||
-+ if ((eapolkeyhdr->type != 2 && eapolkeyhdr->type != 254) ||
- (key_info & WPA_KEY_INFO_KEY_TYPE) == 0) {
- return;
- }
-@@ -472,19 +458,22 @@
-
- /* Check for frame 2 of the 4-way handshake */
- if ((key_info & WPA_KEY_INFO_MIC)
-- && (key_info & WPA_KEY_INFO_ACK) == 0
-- && (key_info & WPA_KEY_INFO_INSTALL) == 0
-- && eapolkeyhdr->key_data_length > 0) {
-+ && (key_info & WPA_KEY_INFO_ACK) == 0
-+ && (key_info & WPA_KEY_INFO_INSTALL) == 0
-+ && eapolkeyhdr->key_data_length > 0) {
-
- /* All we need from this frame is the authenticator nonce */
- memcpy(cdata->snonce, eapolkeyhdr->key_nonce,
- sizeof(cdata->snonce));
- cdata->snonceset = 1;
-+ memcpy(cdata->replay_counter1,
-+ eapolkeyhdr->replay_counter, 8);
-+ cdata->replay_counter1[7] = cdata->replay_counter1[7] + 1;
-
- /* Check for frame 3 of the 4-way handshake */
- } else if ((key_info & WPA_KEY_INFO_MIC)
-- && (key_info & WPA_KEY_INFO_INSTALL)
-- && (key_info & WPA_KEY_INFO_ACK)) {
-+ && (key_info & WPA_KEY_INFO_INSTALL)
-+ && (key_info & WPA_KEY_INFO_ACK)) {
-
- memcpy(cdata->spa, &packet[capdata->dstmac_offset],
- sizeof(cdata->spa));
-@@ -497,15 +486,17 @@
- cdata->anonceset = 1;
- /* We save the replay counter value in the 3rd frame to match
- against the 4th frame of the four-way handshake */
-- memcpy(cdata->replay_counter,
-+ memcpy(cdata->replay_counter2,
- eapolkeyhdr->replay_counter, 8);
-
- /* Check for frame 4 of the four-way handshake */
- } else if ((key_info & WPA_KEY_INFO_MIC)
-- && (key_info & WPA_KEY_INFO_ACK) == 0
-- && (key_info & WPA_KEY_INFO_INSTALL) == 0
-- && (memcmp (cdata->replay_counter,
-- eapolkeyhdr->replay_counter, 8) == 0)) {
-+ && (key_info & WPA_KEY_INFO_ACK) == 0
-+ && (key_info & WPA_KEY_INFO_INSTALL) == 0
-+ && (memcmp (cdata->replay_counter1,
-+ cdata->replay_counter2, 8) == 0)
-+ && (memcmp (cdata->replay_counter2,
-+ eapolkeyhdr->replay_counter, 8) == 0)) {
-
- memcpy(cdata->keymic, eapolkeyhdr->key_mic,
- sizeof(cdata->keymic));
-@@ -513,57 +504,76 @@
- sizeof(cdata->eapolframe));
- cdata->keymicset = 1;
- cdata->eapolframeset = 1;
-+ cdata->counters = 1;
- }
-- } else {
--
-- /* Check for frame 1 of the 4-way handshake */
-- if ((key_info & WPA_KEY_INFO_MIC) == 0
-- && (key_info & WPA_KEY_INFO_ACK)
-- && (key_info & WPA_KEY_INFO_INSTALL) == 0 ) {
-- /* All we need from this frame is the authenticator nonce */
-- memcpy(cdata->anonce, eapolkeyhdr->key_nonce,
-- sizeof(cdata->anonce));
-- cdata->anonceset = 1;
--
-- /* Check for frame 2 of the 4-way handshake */
-- } else if ((key_info & WPA_KEY_INFO_MIC)
-- && (key_info & WPA_KEY_INFO_INSTALL) == 0
-- && (key_info & WPA_KEY_INFO_ACK) == 0
-- && eapolkeyhdr->key_data_length > 0) {
-
-- cdata->eapolframe_size = ( packet[capdata->dot1x_offset + 2] << 8 )
-- + packet[capdata->dot1x_offset + 3] + 4;
--
-- memcpy(cdata->spa, &packet[capdata->dstmac_offset],
-- sizeof(cdata->spa));
-- cdata->spaset = 1;
--
-- memcpy(cdata->aa, &packet[capdata->srcmac_offset],
-- sizeof(cdata->aa));
-- cdata->aaset = 1;
--
-- memcpy(cdata->snonce, eapolkeyhdr->key_nonce,
-- sizeof(cdata->snonce));
-- cdata->snonceset = 1;
-+ } else {
-
-- memcpy(cdata->keymic, eapolkeyhdr->key_mic,
-- sizeof(cdata->keymic));
-- cdata->keymicset = 1;
-+ /* Check for frame 1 of the 4-way handshake */
-+ if ((key_info & WPA_KEY_INFO_MIC) == 0
-+ && (key_info & WPA_KEY_INFO_ACK)
-+ && (key_info & WPA_KEY_INFO_INSTALL) == 0 ) {
-+
-+ /* All we need from this frame is the authenticator nonce */
-+ memcpy(cdata->anonce, eapolkeyhdr->key_nonce,
-+ sizeof(cdata->anonce));
-+ cdata->anonceset = 1;
-+
-+ memcpy(cdata->replay_counter1,
-+ eapolkeyhdr->replay_counter, 8);
-+ cdata->replay_counter1[7] = cdata->replay_counter1[7] + 1;
-+
-+ /* Check for frame 2 or 4 of the 4-way handshake */
-+ } else if ((key_info & WPA_KEY_INFO_MIC)
-+ && (key_info & WPA_KEY_INFO_INSTALL) == 0
-+ && (key_info & WPA_KEY_INFO_ACK) == 0) {
-+
-+ cdata->eapolframe_size = ( packet[capdata->dot1x_offset + 2] << 8 )
-+ + packet[capdata->dot1x_offset + 3] + 4;
-+
-+ memcpy(cdata->spa, &packet[capdata->dstmac_offset],
-+ sizeof(cdata->spa));
-+ cdata->spaset = 1;
-+
-+ memcpy(cdata->aa, &packet[capdata->srcmac_offset],
-+ sizeof(cdata->aa));
-+ cdata->aaset = 1;
-+
-+ memcpy(cdata->snonce, eapolkeyhdr->key_nonce,
-+ sizeof(cdata->snonce));
-+ cdata->snonceset = 1;
-+
-+ memcpy(cdata->keymic, eapolkeyhdr->key_mic,
-+ sizeof(cdata->keymic));
-+ cdata->keymicset = 1;
-+
-+ memcpy(cdata->eapolframe, &packet[capdata->dot1x_offset],
-+ cdata->eapolframe_size);
-+ cdata->eapolframeset = 1;
-
-- memcpy(cdata->eapolframe, &packet[capdata->dot1x_offset],
-- cdata->eapolframe_size);
-- cdata->eapolframeset = 1;
-+ memcpy(cdata->replay_counter2,
-+ eapolkeyhdr->replay_counter, 8);
-+ cdata->replay_counter2[7] = cdata->replay_counter2[7] + 1;
-+ memcpy(cdata->replay_counter3,
-+ eapolkeyhdr->replay_counter, 8);
-+ cdata->replay_counter3[7] = cdata->replay_counter3[7] + 2;
-+
-+ /* Check for frame 3 of the 4-way handshake */
-+ } else if ((key_info & WPA_KEY_INFO_MIC)
-+ && (key_info & WPA_KEY_INFO_ACK)
-+ && (key_info & WPA_KEY_INFO_INSTALL)) {
-+
-+ /* All we need from this frame is the authenticator nonce */
-+ memcpy(cdata->anonce, eapolkeyhdr->key_nonce,
-+ sizeof(cdata->anonce));
-+ cdata->anonceset = 1;
-+
-+ memcpy(cdata->replay_counter4,
-+ eapolkeyhdr->replay_counter, 8);
-+ cdata->replay_counter4[7] = cdata->replay_counter4[7] + 1;
-
-+ }
-
-- /* Check for frame 3 of the 4-way handshake */
-- } else if ((key_info & WPA_KEY_INFO_MIC)
-- && (key_info & WPA_KEY_INFO_ACK)
-- && (key_info & WPA_KEY_INFO_INSTALL)) {
-- /* All we need from this frame is the authenticator nonce */
-- memcpy(cdata->anonce, eapolkeyhdr->key_nonce,
-- sizeof(cdata->anonce));
-- cdata->anonceset = 1;
-- }
- }
- }
-
-@@ -982,10 +992,82 @@
- }
- }
-
-+ if (!(cdata.aaset && cdata.spaset && cdata.snonceset &&
-+ cdata.anonceset && cdata.keymicset && cdata.eapolframeset)) {
-+
-+ cdata.aaset = 0;
-+ cdata.spaset = 0;
-+ cdata.snonceset = 0;
-+ cdata.anonceset = 0;
-+ cdata.keymicset = 0;
-+ cdata.eapolframeset = 0;
-+
-+ opt.nonstrict = 1;
-+
-+ memset(&capdata, 0, sizeof(struct capture_data));
-+ memset(&cdata, 0, sizeof(struct crack_data));
-+ memset(&eapolkey_nomic, 0, sizeof(eapolkey_nomic));
-+
-+ /* Populate capdata struct */
-+ strncpy(capdata.pcapfilename, opt.pcapfile,
-+ sizeof(capdata.pcapfilename));
-+ if (openpcap(&capdata) != 0) {
-+ printf("Unsupported or unrecognized pcap file.\n");
-+ exit(-1);
-+ }
-+
-+ /* populates global *packet */
-+ while (getpacket(&capdata) > 0) {
-+ if (opt.verbose > 2) {
-+ lamont_hdump(packet, h->len);
-+ }
-+ /* test packet for data that we are looking for */
-+ if (memcmp(&packet[capdata.l2type_offset], DOT1X_LLCTYPE, 2) ==
-+ 0 && (h->len >capdata.l2type_offset + sizeof(struct wpa_eapol_key))) {
-+ /* It's a dot1x frame, process it */
-+ handle_dot1x(&cdata, &capdata, &opt);
-+
-+ if (cdata.aaset && cdata.spaset && cdata.snonceset
-+ && cdata.anonceset && cdata.keymicset
-+ && cdata.eapolframeset) {
-+
-+ if (cdata.replay_counter1 != 0
-+ && cdata.replay_counter2 != 0) {
-+
-+ if (memcmp (cdata.replay_counter1,
-+ cdata.replay_counter2, 8) == 0) {
-+
-+ cdata.counters = 1;
-+ /* We've collected everything we need. */
-+ break;
-+
-+ }
-+
-+ }
-+
-+ if (cdata.replay_counter3 != 0
-+ && cdata.replay_counter4 != 0) {
-+
-+ if (memcmp (cdata.replay_counter3,
-+ cdata.replay_counter4, 8) == 0) {
-+
-+ cdata.counters = 1;
-+ /* We've collected everything we need. */
-+ break;
-+
-+ }
-+
-+ }
-+
-+ }
-+ }
-+ }
-+ }
-+
- closepcap(&capdata);
-
- if (!(cdata.aaset && cdata.spaset && cdata.snonceset &&
-- cdata.anonceset && cdata.keymicset && cdata.eapolframeset)) {
-+ cdata.anonceset && cdata.keymicset && cdata.eapolframeset && cdata.counters)) {
- printf("End of pcap capture file, incomplete four-way handshake "
- "exchange. Try using a\ndifferent capture.\n");
- exit(-1);
-diff -uNr cowpatty-4.6/cowpatty.h cowpatty-4.6-fixup14/cowpatty.h
---- cowpatty-4.6/cowpatty.h 2009-06-04 06:24:16.000000000 -0700
-+++ cowpatty-4.6-fixup14/cowpatty.h 2009-07-17 16:16:58.043152023 -0700
-@@ -178,7 +178,11 @@
- u8 anonceset;
- u8 keymicset;
- u8 eapolframeset;
-- u8 replay_counter[8];
-+ u8 replay_counter1[8];
-+ u8 replay_counter2[8];
-+ u8 replay_counter3[8];
-+ u8 replay_counter4[8];
-+ u8 counters;
-
- int ver; /* Hashing algo, MD5 or AES-CBC-MAC */
- int eapolframe_size;