From e56ed2ffea0245eee3c08edd97d5e560a964c78d Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 16 Apr 2013 08:38:51 +0200 Subject: initial commit --- .gitignore | 3 +++ Makefile | 11 +++++++++++ nthash.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 nthash.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4a79314 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*~ +*.o +nthash diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8c11863 --- /dev/null +++ b/Makefile @@ -0,0 +1,11 @@ +# nthash - Generate NT Hash + +CC := gcc +CFLAGS += $(shell pkg-config --cflags --libs nettle) +VERSION = $(shell git describe --tags --long) + +all: nthash.c + $(CC) $(CFLAGS) -o nthash nthash.c + +clean: + /bin/rm -f *.o *~ nthash diff --git a/nthash.c b/nthash.c new file mode 100644 index 0000000..16afe60 --- /dev/null +++ b/nthash.c @@ -0,0 +1,42 @@ +/* (c) 2012-2013 Christian Hesse + * Base on an example from: + * http://www.lysator.liu.se/~nisse/nettle/nettle.html#Example */ + +#include +#include + +#include + +#define BUF_SIZE 1024 + +int main(int argc, char **argv) { + struct md4_ctx ctx; + uint8_t buffer[BUF_SIZE], buffernull[2*BUF_SIZE]; + uint8_t digest[MD4_DIGEST_SIZE]; + int i, done; + + md4_init(&ctx); + for (;;) { + done = fread(buffer, 1, sizeof(buffer), stdin); + // add null bytes to string + for (i = 0; i < done; i++) { + if (buffer[i] == 0xa) + fprintf(stderr, "Warning: Password contains line break!\n"); + buffernull[i*2] = buffer[i]; + buffernull[i*2+1] = 0; + } + md4_update(&ctx, done*2, buffernull); + if (done < sizeof(buffer)) + break; + } + if (ferror(stdin)) + return EXIT_FAILURE; + + md4_digest(&ctx, MD4_DIGEST_SIZE, digest); + + for (i = 0; i < MD4_DIGEST_SIZE; i++) + printf("%02x ", digest[i]); + printf("\n"); + + return EXIT_SUCCESS; +} -- cgit v1.2.3-70-g09d2