Files
john/john-undrop.c.diff

78 lines
2.1 KiB
Diff

diff -Naur john-1.6.37/src/undrop.c john-1.6.37-egg/src/undrop.c
--- john-1.6.37/src/undrop.c 1970-01-01 01:00:00.000000000 +0100
+++ john-1.6.37-egg/src/undrop.c 2004-07-26 10:33:32.000000000 +0200
@@ -0,0 +1,73 @@
+/*
+ * Eggdrop userfile converter
+ * Copyright (c) 2002 by Sun-Zero <sun-zero@freemail.hu>
+ * This is a free software distributable under terms of the GNU GPL.
+ * See the file COPYING for details.
+ *
+ * 2003-04-21
+*/
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+
+#define USERFILE_HEADER "#4v:"
+#define USERNAME_LENGTH 11
+#define PASSWORD_LENGTH 13
+#define MAX_FLAGS_LENGTH 32
+#define BUFSIZE 512
+
+int undrop(int argc, char *argv[]) {
+
+ FILE *userfile;
+ char username[USERNAME_LENGTH];
+ char password[PASSWORD_LENGTH];
+ char flags[MAX_FLAGS_LENGTH];
+ char t_username[BUFSIZE];
+ char t_flags[BUFSIZE];
+ char t_line[BUFSIZE];
+
+ if (argc != 2) {
+ userfile = stdin;
+ printf("# userfile reading from stdin\n");
+ } else {
+ if ((userfile = fopen(argv[1], "rt")) == NULL) {
+ fprintf(stderr, "opening userfile\n");
+ userfile = stdin;
+ }
+ }
+
+
+ if (fgets(t_line, sizeof(t_line) - 1, userfile) == NULL)
+ return 1;
+
+ if (strncmp(t_line, USERFILE_HEADER, strlen(USERFILE_HEADER)) != 0) {
+ fprintf(stderr, "usefile format is wrong\n");
+ return 1;
+ } else {
+ printf("# userfile format OK\n\n");
+ }
+
+ while (fgets(t_line, sizeof(t_line) - 1, userfile) != NULL) {
+ if (sscanf(t_line, "%10s - %24s\n", t_username, t_flags) == 2) {
+ if (strncmp(t_username, "! ", 2) != 0 &&
+ strncmp(t_username, "--", 2) != 0 &&
+ strncmp(t_username, "&&", 2) != 0 &&
+ strncmp(t_username, "::", 2) != 0 &&
+ strncmp(t_username, "$$", 2) != 0
+ ) {
+ strncpy(username, t_username, USERNAME_LENGTH);
+ strncpy(flags, t_flags, MAX_FLAGS_LENGTH);
+ }
+ }
+
+ if (strncmp(t_line, "--PASS +", 8) == 0) {
+ sscanf(t_line, "--PASS %s", password);
+ printf("%s:%s:::%s:\n", username, password, flags);
+ }
+ fflush(stdout);
+ }
+ fclose(userfile);
+ return 0;
+}