133 lines
2.7 KiB
Diff
133 lines
2.7 KiB
Diff
#
|
|
# Description: patch for Eggdrop blowfish
|
|
#
|
|
|
|
diff -Naur john-1.6.37/src/BFEgg_fmt.c john-1.6.37-egg/src/BFEgg_fmt.c
|
|
--- john-1.6.37/src/BFEgg_fmt.c 1970-01-01 01:00:00.000000000 +0100
|
|
+++ john-1.6.37-egg/src/BFEgg_fmt.c 2004-07-26 10:38:12.000000000 +0200
|
|
@@ -0,0 +1,124 @@
|
|
+/*
|
|
+ * This file is part of Eggdrop blowfish patch for John The Ripper.
|
|
+ * Copyright (c) 2002 by Sun-Zero <sun-zero@freemail.hu>
|
|
+ * This is a free software distributable under terms of the GNU GPL.
|
|
+ */
|
|
+
|
|
+#include <string.h>
|
|
+
|
|
+#include "misc.h"
|
|
+#include "formats.h"
|
|
+#include "common.h"
|
|
+#include "blowfish.c"
|
|
+
|
|
+#define FORMAT_LABEL "bfegg"
|
|
+#define FORMAT_NAME "Eggdrop"
|
|
+#define ALG_NAME "blowfish"
|
|
+
|
|
+#define BENCHMARK_COMMENT ""
|
|
+#define BENCHMARK_LENGTH -1
|
|
+
|
|
+#define PLAINTEXT_LENGTH 31
|
|
+#define CIPHERTEXT_LENGTH 33
|
|
+
|
|
+#define BINARY_SIZE 13
|
|
+#define SALT_SIZE 0
|
|
+
|
|
+#define MIN_KEYS_PER_CRYPT 1
|
|
+#define MAX_KEYS_PER_CRYPT 1
|
|
+
|
|
+static struct fmt_tests tests[] = {
|
|
+ {"+9F93o1OxwgK1", "123456"},
|
|
+ {"+C/.8o.Wuph9.", "qwerty"},
|
|
+ {"+EEHgy/MBLDd0", "walkman"},
|
|
+ {"+vPBrs07OTXE/", "tesztuser"},
|
|
+ {"+zIvO/1nDsd9.", "654321"},
|
|
+ {NULL}
|
|
+};
|
|
+
|
|
+int zerolengthkey = 0;
|
|
+
|
|
+static char crypt_key[BINARY_SIZE];
|
|
+static char saved_key[PLAINTEXT_LENGTH + 1];
|
|
+
|
|
+static int valid(char *ciphertext) {
|
|
+ if (strncmp(ciphertext, "+", 1) != 0) return 0;
|
|
+ if (strlen(ciphertext) != 13) return 0;
|
|
+
|
|
+ return 1;
|
|
+}
|
|
+
|
|
+void init() {
|
|
+ blowfish_first_init();
|
|
+}
|
|
+
|
|
+
|
|
+static void set_key(char *key, int index) {
|
|
+ strnzcpy(saved_key, key, PLAINTEXT_LENGTH+1);
|
|
+}
|
|
+
|
|
+static char *get_key(int index) {
|
|
+ return saved_key;
|
|
+}
|
|
+
|
|
+static int cmp_all(void *binary, int index) {
|
|
+ if (zerolengthkey) return 0;
|
|
+ return !memcmp(binary, crypt_key, BINARY_SIZE);
|
|
+}
|
|
+
|
|
+static int cmp_exact(char *source, int index) {
|
|
+ return 1;
|
|
+}
|
|
+
|
|
+static void set_salt(void *salt) { }
|
|
+
|
|
+static void crypt_all(int count) {
|
|
+ if (saved_key[0] == '\0') {
|
|
+ zerolengthkey = 1;
|
|
+ } else {
|
|
+ zerolengthkey = 0;
|
|
+ blowfish_encrypt_pass(saved_key, crypt_key);
|
|
+ }
|
|
+}
|
|
+
|
|
+struct fmt_main fmt_BFEgg = {
|
|
+ {
|
|
+ FORMAT_LABEL,
|
|
+ FORMAT_NAME,
|
|
+ ALG_NAME,
|
|
+ BENCHMARK_COMMENT,
|
|
+ BENCHMARK_LENGTH,
|
|
+ PLAINTEXT_LENGTH,
|
|
+ BINARY_SIZE,
|
|
+ SALT_SIZE,
|
|
+ MIN_KEYS_PER_CRYPT,
|
|
+ MAX_KEYS_PER_CRYPT,
|
|
+ FMT_CASE | FMT_8_BIT,
|
|
+ tests
|
|
+ }, {
|
|
+ init,
|
|
+ valid,
|
|
+ fmt_default_split,
|
|
+ fmt_default_binary,
|
|
+ fmt_default_salt,
|
|
+ {
|
|
+ fmt_default_binary_hash,
|
|
+ fmt_default_binary_hash,
|
|
+ fmt_default_binary_hash,
|
|
+ },
|
|
+ fmt_default_salt_hash,
|
|
+ set_salt,
|
|
+ set_key,
|
|
+ get_key,
|
|
+ fmt_default_clear_keys,
|
|
+ crypt_all,
|
|
+ {
|
|
+ fmt_default_get_hash,
|
|
+ fmt_default_get_hash,
|
|
+ fmt_default_get_hash,
|
|
+ },
|
|
+ cmp_all,
|
|
+ cmp_all,
|
|
+ cmp_exact
|
|
+ }
|
|
+};
|