commit e346b4eb971b273cbb088200d1eee41448a1bb08
parent 02088322ebb2bdffbcf3bf9464d86c5e385dcfa4
Author: Louis Burda <quent.burda@gmail.com>
Date: Mon, 31 May 2021 20:24:08 +0200
fix checker do_auth, add hashing to revhash for comparing
Diffstat:
2 files changed, 43 insertions(+), 9 deletions(-)
diff --git a/checker/src/checker.py b/checker/src/checker.py
@@ -69,7 +69,7 @@ class STLDoctorChecker(BaseChecker):
def do_auth(self, conn, authstr):
conn.write("auth\n")
- conn.write(authstr + b"\n")
+ conn.write(authstr + "\n")
resp = conn.recvuntil(self.prompt)
authstr = ensure_bytes(authstr)
assert_in(b"Success!", resp, f"Login with pass {authstr} failed");
diff --git a/checker/src/revhash/main.c b/checker/src/revhash/main.c
@@ -4,22 +4,42 @@
#include <stdint.h>
#define MAXITER 256 * 100
+#define MHASHLEN 40
#define MAX(x,y) ((x) > (y) ? (x) : (y))
#define MIN(x,y) ((x) < (y) ? (x) : (y))
int
-main(int argc, const char **argv)
+hash()
{
- const char *hashstr;
- char c, hexbuf[3] = { 0 }, *end, *buf;
- int i, k, v, maxlen, sum, *hash, sublen, aftersum;
+ static char buf[MHASHLEN + 1];
+ char str[256];
+ int i, k, v;
+ char c, *bp;
+ size_t len;
- if (argc < 2) {
- fprintf(stderr, "USAGE: revhash <hash>\n");
+ if (!fgets(str, sizeof(str), stdin))
return EXIT_FAILURE;
- }
- hashstr = argv[1];
+ len = strlen(str) -1;
+ if (len <= 0) return EXIT_FAILURE;
+
+ for (v = 0, i = 0; i < len; i++) v += str[i];
+
+ srand(v);
+ for (bp = buf, i = 0; i < MHASHLEN / 2; i++)
+ bp += sprintf(bp, "%02x", str[i % len] ^ (rand() % 256));
+
+ printf("%s\n", buf);
+
+ return EXIT_SUCCESS;
+}
+
+int
+revhash(const char *hashstr)
+{
+ char c, hexbuf[3] = { 0 }, *end, *buf;
+ int i, k, v, maxlen, sum, *hash, sublen, aftersum;
+
if (strlen(hashstr) % 2 != 0)
goto invalid;
@@ -78,3 +98,17 @@ invalid:
fprintf(stderr, "Invalid hash string!\n");
return EXIT_FAILURE;
}
+
+int
+main(int argc, const char **argv)
+{
+ if (argc < 2) {
+ fprintf(stderr, "USAGE: revhash <hash>\n");
+ return EXIT_FAILURE;
+ }
+
+ if (!strcmp(argv[1], "hash"))
+ return hash();
+ else
+ return revhash(argv[1]);
+}