diff -urpN JohnTheRipper.orig//src/sip_fmt_plug.c JohnTheRipper.sip/src/sip_fmt_plug.c --- JohnTheRipper.orig//src/sip_fmt_plug.c 2013-05-02 16:52:36.000000000 +0000 +++ JohnTheRipper.sip/src/sip_fmt_plug.c 2013-05-03 22:29:26.000000000 +0000 @@ -79,11 +79,17 @@ static void init(struct fmt_main *self) static int valid(char *ciphertext, struct fmt_main *self) { char *p = ciphertext, *q; - int res = 0; + int i,res = 0; if (strncmp(ciphertext, "$sip$*", 6)) return 0; if (strlen(ciphertext) > 2048) // sizeof(saltBuf) in get_salt return 0; + for(i = 0; i < strlen(ciphertext); i++) + if(ciphertext[i] == '*') + res++; + if(res != 14) + goto err; + res = 0; p += 6; if ((q = strchr(p, '*')) == NULL) goto err;