1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-11-26 09:58:16 +00:00

Fixed duplicate detection for WPA handshakes with the same ESSID

https://github.com/hashcat/hashcat/issues/955
This commit is contained in:
jsteube 2017-01-23 17:54:56 +01:00
parent edb7ae5658
commit 5ea24d9bca
3 changed files with 8 additions and 31 deletions

View File

@ -26,6 +26,7 @@
- Fixed DEScrypt cracking in BF mode in case the hashlist contains more than 16 times the same salt - Fixed DEScrypt cracking in BF mode in case the hashlist contains more than 16 times the same salt
- Fixed use of option --keyspace in combination with -m 2500 (WPA) - Fixed use of option --keyspace in combination with -m 2500 (WPA)
- Fixed rule 'O' (RULE_OP_MANGLE_OMIT) in host mode in case the offset + length parameter equals the length of the input word - Fixed rule 'O' (RULE_OP_MANGLE_OMIT) in host mode in case the offset + length parameter equals the length of the input word
- Fixed duplicate detection for WPA handshakes with the same ESSID
* changes v3.20 -> v3.30: * changes v3.20 -> v3.30:

View File

@ -63,19 +63,13 @@ int sort_by_salt (const void *v1, const void *v2)
if (res2 != 0) return (res2); if (res2 != 0) return (res2);
u32 n; for (int n = 0; n < 16; n++)
n = 16;
while (n--)
{ {
if (s1->salt_buf[n] > s2->salt_buf[n]) return 1; if (s1->salt_buf[n] > s2->salt_buf[n]) return 1;
if (s1->salt_buf[n] < s2->salt_buf[n]) return -1; if (s1->salt_buf[n] < s2->salt_buf[n]) return -1;
} }
n = 8; for (int n = 0; n < 8; n++)
while (n--)
{ {
if (s1->salt_buf_pc[n] > s2->salt_buf_pc[n]) return 1; if (s1->salt_buf_pc[n] > s2->salt_buf_pc[n]) return 1;
if (s1->salt_buf_pc[n] < s2->salt_buf_pc[n]) return -1; if (s1->salt_buf_pc[n] < s2->salt_buf_pc[n]) return -1;

View File

@ -29,29 +29,12 @@ int sort_by_hash_t_salt (const void *v1, const void *v2)
const salt_t *s1 = h1->salt; const salt_t *s1 = h1->salt;
const salt_t *s2 = h2->salt; const salt_t *s2 = h2->salt;
// testphase: this should work for (int n = 0; n < 16; n++)
u32 n = 16;
while (n--)
{ {
if (s1->salt_buf[n] > s2->salt_buf[n]) return ( 1); if (s1->salt_buf[n] > s2->salt_buf[n]) return 1;
if (s1->salt_buf[n] < s2->salt_buf[n]) return -1; if (s1->salt_buf[n] < s2->salt_buf[n]) return -1;
} }
/* original code, seems buggy since salt_len can be very big (had a case with 131 len)
also it thinks salt_buf[x] is a char but its a u32 so salt_len should be / 4
if (s1->salt_len > s2->salt_len) return ( 1);
if (s1->salt_len < s2->salt_len) return -1;
u32 n = s1->salt_len;
while (n--)
{
if (s1->salt_buf[n] > s2->salt_buf[n]) return ( 1);
if (s1->salt_buf[n] < s2->salt_buf[n]) return -1;
}
*/
return 0; return 0;
} }
@ -64,12 +47,11 @@ int sort_by_hash_t_salt_hccap (const void *v1, const void *v2)
const salt_t *s2 = h2->salt; const salt_t *s2 = h2->salt;
// last 2: salt_buf[10] and salt_buf[11] contain the digest (skip them) // last 2: salt_buf[10] and salt_buf[11] contain the digest (skip them)
// 9 * 4 = 36 bytes (max length of ESSID)
u32 n = 9; // 9 * 4 = 36 bytes (max length of ESSID) for (int n = 0; n < 9; n++)
while (n--)
{ {
if (s1->salt_buf[n] > s2->salt_buf[n]) return ( 1); if (s1->salt_buf[n] > s2->salt_buf[n]) return 1;
if (s1->salt_buf[n] < s2->salt_buf[n]) return -1; if (s1->salt_buf[n] < s2->salt_buf[n]) return -1;
} }