From 07fcf382b40f6d645ea7388b63c600e72e1b3535 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Wed, 19 Jan 2011 17:21:07 -0700 Subject: [PATCH 01/12] Add arc4 hashing --- include/arc4.c | 13 +++++++++++++ include/arc4.h | 5 ++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/arc4.c b/include/arc4.c index 63306ad..32d706b 100644 --- a/include/arc4.c +++ b/include/arc4.c @@ -51,3 +51,16 @@ arc4_crypt_buffer(uint8_t const *key, size_t keylen, arc4_init(&ctx, key, keylen); arc4_crypt(&ctx, buf, buf, buflen); } + +void +arc4_hash(uint8_t const *buf, size_t buflen, + uint8_t *hash) +{ + struct arc4_ctx ctx; + int i; + + arc4_init(&ctx, buf, buflen); + for (i = 0; i < ARC4_HASHLEN; i += 1) { + hash[i] = arc4_pad(&ctx); + } +} diff --git a/include/arc4.h b/include/arc4.h index 7aa7428..c917184 100644 --- a/include/arc4.h +++ b/include/arc4.h @@ -4,6 +4,8 @@ #include #include +#define ARC4_HASHLEN 16 + struct arc4_ctx { uint8_t S[256]; uint8_t i; @@ -16,5 +18,6 @@ void arc4_crypt(struct arc4_ctx *ctx, uint8_t *obuf, uint8_t const *ibuf, size_t buflen); void arc4_crypt_buffer(uint8_t const *key, size_t keylen, uint8_t *buf, size_t buflen); - +void arc4_hash(uint8_t const *buf, size_t buflen, + uint8_t *hash); #endif From 5d9f8249cc24379b158dbdfc970d443a2b6a0736 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Fri, 21 Jan 2011 23:01:30 -0700 Subject: [PATCH 02/12] Add libctf --- Makefile | 2 +- include/isaac.c | 156 -------------------- include/isaac.h | 55 ------- include/token.c | 108 -------------- {include => libctf}/arc4.c | 8 +- {include => libctf}/arc4.h | 11 +- libctf/libctf.mk | 9 ++ libctf/md5.c | 280 ++++++++++++++++++++++++++++++++++++ libctf/md5.h | 42 ++++++ libctf/rand.c | 65 +++++++++ libctf/rand.h | 11 ++ libctf/test.c | 46 ++++++ libctf/token.c | 49 +++++++ {include => libctf}/token.h | 7 - 14 files changed, 513 insertions(+), 336 deletions(-) delete mode 100644 include/isaac.c delete mode 100644 include/isaac.h delete mode 100644 include/token.c rename {include => libctf}/arc4.c (82%) rename {include => libctf}/arc4.h (50%) create mode 100644 libctf/libctf.mk create mode 100644 libctf/md5.c create mode 100644 libctf/md5.h create mode 100644 libctf/rand.c create mode 100644 libctf/rand.h create mode 100644 libctf/test.c create mode 100644 libctf/token.c rename {include => libctf}/token.h (58%) diff --git a/Makefile b/Makefile index bef9f96..19afd28 100644 --- a/Makefile +++ b/Makefile @@ -19,4 +19,4 @@ clean: packages-clean scrub: clean rm -rf $(CACHE) -include packages/packages.mk +-include */*.mk diff --git a/include/isaac.c b/include/isaac.c deleted file mode 100644 index e095d94..0000000 --- a/include/isaac.c +++ /dev/null @@ -1,156 +0,0 @@ -/* ------------------------------------------------------------------------------- -rand.c: By Bob Jenkins. My random number generator, ISAAC. Public Domain. -MODIFIED: - 960327: Creation (addition of randinit, really) - 970719: use context, not global variables, for internal state - 980324: added main (ifdef'ed out), also rearranged randinit() - 010626: Note that this is public domain ------------------------------------------------------------------------------- -*/ -#include -#include "rand.h" - -#define ind(mm,x) (*(uint32_t *)((uint8_t *)(mm) + ((x) & ((RANDSIZ-1)<<2)))) -#define rngstep(mix,a,b,mm,m,m2,r,x) \ -{ \ - x = *m; \ - a = (a^(mix)) + *(m2++); \ - *(m++) = y = ind(mm,x) + a + b; \ - *(r++) = b = ind(mm,y>>RANDSIZL) + x; \ -} - -void isaac(struct randctx *ctx) -{ - register uint32_t a, b, x, y, *m, *mm, *m2, *r, *mend; - mm = ctx->randmem; - r = ctx->randrsl; - a = ctx->randa; - b = ctx->randb + (++ctx->randc); - for (m = mm, mend = m2 = m + (RANDSIZ / 2); m < mend;) { - rngstep(a << 13, a, b, mm, m, m2, r, x); - rngstep(a >> 6, a, b, mm, m, m2, r, x); - rngstep(a << 2, a, b, mm, m, m2, r, x); - rngstep(a >> 16, a, b, mm, m, m2, r, x); - } - for (m2 = mm; m2 < mend;) { - rngstep(a << 13, a, b, mm, m, m2, r, x); - rngstep(a >> 6, a, b, mm, m, m2, r, x); - rngstep(a << 2, a, b, mm, m, m2, r, x); - rngstep(a >> 16, a, b, mm, m, m2, r, x); - } - ctx->randb = b; - ctx->randa = a; -} - - -#define mix(a,b,c,d,e,f,g,h) \ -{ \ - a^=b<<11; d+=a; b+=c; \ - b^=c>>2; e+=b; c+=d; \ - c^=d<<8; f+=c; d+=e; \ - d^=e>>16; g+=d; e+=f; \ - e^=f<<10; h+=e; f+=g; \ - f^=g>>4; a+=f; g+=h; \ - g^=h<<8; b+=g; h+=a; \ - h^=a>>9; c+=h; a+=b; \ -} - -/* if (flag==TRUE), then use the contents of randrsl[] to initialize mm[]. */ -void randinit(struct randctx *ctx, uint_fast8_t flag) -{ - uint_fast32_t i; - uint32_t a, b, c, d, e, f, g, h; - uint32_t *m, *r; - ctx->randa = ctx->randb = ctx->randc = 0; - m = ctx->randmem; - r = ctx->randrsl; - a = b = c = d = e = f = g = h = 0x9e3779b9; /* the golden ratio */ - - for (i = 0; i < 4; ++i) { /* scramble it */ - mix(a, b, c, d, e, f, g, h); - } - - if (flag) { - /* initialize using the contents of r[] as the seed */ - for (i = 0; i < RANDSIZ; i += 8) { - a += r[i]; - b += r[i + 1]; - c += r[i + 2]; - d += r[i + 3]; - e += r[i + 4]; - f += r[i + 5]; - g += r[i + 6]; - h += r[i + 7]; - mix(a, b, c, d, e, f, g, h); - m[i] = a; - m[i + 1] = b; - m[i + 2] = c; - m[i + 3] = d; - m[i + 4] = e; - m[i + 5] = f; - m[i + 6] = g; - m[i + 7] = h; - } - /* do a second pass to make all of the seed affect all of m */ - for (i = 0; i < RANDSIZ; i += 8) { - a += m[i]; - b += m[i + 1]; - c += m[i + 2]; - d += m[i + 3]; - e += m[i + 4]; - f += m[i + 5]; - g += m[i + 6]; - h += m[i + 7]; - mix(a, b, c, d, e, f, g, h); - m[i] = a; - m[i + 1] = b; - m[i + 2] = c; - m[i + 3] = d; - m[i + 4] = e; - m[i + 5] = f; - m[i + 6] = g; - m[i + 7] = h; - } - } else { - /* fill in m[] with messy stuff */ - for (i = 0; i < RANDSIZ; i += 8) { - mix(a, b, c, d, e, f, g, h); - m[i] = a; - m[i + 1] = b; - m[i + 2] = c; - m[i + 3] = d; - m[i + 4] = e; - m[i + 5] = f; - m[i + 6] = g; - m[i + 7] = h; - } - } - - isaac(ctx); /* fill in the first set of results */ - ctx->randcnt = RANDSIZ; /* prepare to use the first set of results */ -} - - -#ifdef NEVER - -#include - -int main() -{ - uint32_t i, j; - struct randctx ctx; - ctx.randa = ctx.randb = ctx.randc = (uint32_t) 0; - for (i = 0; i < 256; ++i) - ctx.randrsl[i] = (uint32_t) 0; - randinit(&ctx, 1); - for (i = 0; i < 2; ++i) { - isaac(&ctx); - for (j = 0; j < 256; ++j) { - printf("%.8x", ctx.randrsl[j]); - if ((j & 7) == 7) - printf("\n"); - } - } -} -#endif diff --git a/include/isaac.h b/include/isaac.h deleted file mode 100644 index 14e9adb..0000000 --- a/include/isaac.h +++ /dev/null @@ -1,55 +0,0 @@ -/* ------------------------------------------------------------------------------- -rand.h: definitions for a random number generator -By Bob Jenkins, 1996, Public Domain -MODIFIED: - 960327: Creation (addition of randinit, really) - 970719: use context, not global variables, for internal state - 980324: renamed seed to flag - 980605: recommend RANDSIZL=4 for noncryptography. - 010626: note this is public domain - 101005: update to C99 (neale@lanl.gov) ------------------------------------------------------------------------------- -*/ - -#ifndef __ISAAC_H__ -#define __ISAAC_H__ - -#include - -#define RANDSIZL (8) -#define RANDSIZ (1<randcnt-- ? \ - (isaac(r), (r)->randcnt=RANDSIZ-1, (r)->randrsl[(r)->randcnt]) : \ - (r)->randrsl[(r)->randcnt]) - -#endif /* RAND */ - - -#endif /* __ISAAC_H__ */ diff --git a/include/token.c b/include/token.c deleted file mode 100644 index 4edd897..0000000 --- a/include/token.c +++ /dev/null @@ -1,108 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef CTF_BASE -#define CTF_BASE "/var/lib/ctf" -#endif - -struct arc4_ctx { - uint8_t S[256]; - uint8_t i; - uint8_t j; -}; - - -#define swap(a, b) do {int _swap=a; a=b, b=_swap;} while (0) - -void -arc4_init(struct arc4_ctx *ctx, uint8_t const *key, size_t keylen) -{ - int i; - int j = 0; - - for (i = 0; i < 256; i += 1) { - ctx->S[i] = i; - } - - for (i = 0; i < 256; i += 1) { - j = (j + ctx->S[i] + key[i % keylen]) % 256; - swap(ctx->S[i], ctx->S[j]); - } - ctx->i = 0; - ctx->j = 0; -} - -void -arc4_crypt(struct arc4_ctx *ctx, - uint8_t *obuf, uint8_t const *ibuf, size_t buflen) -{ - int i = ctx->i; - int j = ctx->j; - size_t k; - - for (k = 0; k < buflen; k += 1) { - uint8_t mask; - - i = (i + 1) % 256; - j = (j + ctx->S[i]) % 256; - swap(ctx->S[i], ctx->S[j]); - mask = ctx->S[(ctx->S[i] + ctx->S[j]) % 256]; - obuf[k] = ibuf[k] ^ mask; - } - ctx->i = i; - ctx->j = j; -} - -void -arc4_crypt_buffer(uint8_t const *key, size_t keylen, - uint8_t *buf, size_t buflen) -{ - struct arc4_ctx ctx; - - arc4_init(&ctx, key, keylen); - arc4_crypt(&ctx, buf, buf, buflen); -} - - -ssize_t -read_token_fd(int fd, - uint8_t const *key, size_t keylen, - char *buf, size_t buflen) -{ - ssize_t ret; - - ret = read(fd, buf, buflen); - if (-1 != ret) { - arc4_crypt_buffer(key, keylen, (uint8_t *)buf, (size_t)ret); - } - return ret; -} - - -ssize_t -read_token(char const *name, - uint8_t const *key, size_t keylen, - char *buf, size_t buflen) -{ - char path[PATH_MAX]; - int pathlen; - int fd; - ssize_t ret; - - pathlen = snprintf(path, sizeof(path) - 1, - CTF_BASE "/tokens/%s", name); - path[pathlen] = '\0'; - - fd = open(path, O_RDONLY); - if (-1 == fd) return -1; - ret = read_token_fd(fd, key, keylen, buf, buflen); - close(fd); - return ret; -} diff --git a/include/arc4.c b/libctf/arc4.c similarity index 82% rename from include/arc4.c rename to libctf/arc4.c index 63306ad..33b97ed 100644 --- a/include/arc4.c +++ b/libctf/arc4.c @@ -23,7 +23,7 @@ arc4_init(struct arc4_ctx *ctx, uint8_t const *key, size_t keylen) } uint8_t -arc4_pad(struct arc4_ctx *ctx) +arc4_out(struct arc4_ctx *ctx) { ctx->i = (ctx->i + 1) % 256; ctx->j = (ctx->j + ctx->S[ctx->i]) % 256; @@ -33,17 +33,17 @@ arc4_pad(struct arc4_ctx *ctx) void arc4_crypt(struct arc4_ctx *ctx, - uint8_t *obuf, uint8_t const *ibuf, size_t buflen) + uint8_t *obuf, const uint8_t *ibuf, size_t buflen) { size_t k; for (k = 0; k < buflen; k += 1) { - obuf[k] = ibuf[k] ^ arc4_pad(ctx); + obuf[k] = ibuf[k] ^ arc4_out(ctx); } } void -arc4_crypt_buffer(uint8_t const *key, size_t keylen, +arc4_crypt_buffer(const uint8_t *key, size_t keylen, uint8_t *buf, size_t buflen) { struct arc4_ctx ctx; diff --git a/include/arc4.h b/libctf/arc4.h similarity index 50% rename from include/arc4.h rename to libctf/arc4.h index 7aa7428..f1ef379 100644 --- a/include/arc4.h +++ b/libctf/arc4.h @@ -4,17 +4,18 @@ #include #include +#define ARC4_HASHLEN 16 + struct arc4_ctx { uint8_t S[256]; uint8_t i; uint8_t j; }; -void arc4_init(struct arc4_ctx *ctx, uint8_t const *key, size_t keylen); -uint8_t arc4_pad(struct arc4_ctx *ctx); +void arc4_init(struct arc4_ctx *ctx, const uint8_t *key, size_t keylen); +uint8_t arc4_out(struct arc4_ctx *ctx); void arc4_crypt(struct arc4_ctx *ctx, - uint8_t *obuf, uint8_t const *ibuf, size_t buflen); -void arc4_crypt_buffer(uint8_t const *key, size_t keylen, + uint8_t *obuf, const uint8_t *ibuf, size_t buflen); +void arc4_crypt_buffer(const uint8_t *key, size_t keylen, uint8_t *buf, size_t buflen); - #endif diff --git a/libctf/libctf.mk b/libctf/libctf.mk new file mode 100644 index 0000000..10c50e8 --- /dev/null +++ b/libctf/libctf.mk @@ -0,0 +1,9 @@ +libctf: libctf/libctf.a +libctf/libctf.a: libctf/libctf.a(libctf/md5.o) +libctf/libctf.a: libctf/libctf.a(libctf/arc4.o) +libctf/libctf.a: libctf/libctf.a(libctf/rand.o) +libctf/libctf.a: libctf/libctf.a(libctf/token.o) + +clean: libctf-clean +libctf-clean: + rm -f libctf/*.o libctf/libctf.a diff --git a/libctf/md5.c b/libctf/md5.c new file mode 100644 index 0000000..036c900 --- /dev/null +++ b/libctf/md5.c @@ -0,0 +1,280 @@ +/* + * This code implements the MD5 message-digest algorithm. + * The algorithm is due to Ron Rivest. This code was + * written by Colin Plumb in 1993, no copyright is claimed. + * This code is in the public domain; do with it what you wish. + * + * Equivalent code is available from RSA Data Security, Inc. + * This code has been tested against that, and is equivalent, + * except that you don't need to include two pages of legalese + * with every copy. + * + * To compute the message digest of a chunk of bytes, declare an + * MD5Context structure, pass it to MD5Init, call MD5Update as + * needed on buffers full of bytes, and then call MD5Final, which + * will fill a supplied 16-byte array with the digest. + */ + +/* Brutally hacked by John Walker back from ANSI C to K&R (no + prototypes) to maintain the tradition that Netfone will compile + with Sun's original "cc". */ + +#include /* for memcpy() */ +#include +#include +#include "md5.h" + +void md5_transform(uint32_t buf[4], uint32_t in[16]); + +#ifndef HIGHFIRST +#define byteReverse(buf, len) /* Nothing */ +#else +/* + * Note: this code is harmless on little-endian machines. + */ +static void byteReverse(uint8_t *buf, size_t words) +{ + uint32_t t; + do { + t = (uint32_t) ((unsigned) buf[3] << 8 | buf[2]) << 16 | + ((unsigned) buf[1] << 8 | buf[0]); + *(uint32_t *) buf = t; + buf += 4; + } while (--words); +} +#endif + + +/* + * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious + * initialization constants. + */ +void md5_init(struct md5_context *ctx) +{ + ctx->buf[0] = 0x67452301; + ctx->buf[1] = 0xefcdab89; + ctx->buf[2] = 0x98badcfe; + ctx->buf[3] = 0x10325476; + + ctx->bits[0] = 0; + ctx->bits[1] = 0; +} + +/* + * Update context to reflect the concatenation of another buffer full + * of bytes. + */ +void md5_update(struct md5_context *ctx, + const uint8_t *buf, + size_t len) +{ + uint32_t t; + + /* Update bitcount */ + + t = ctx->bits[0]; + if ((ctx->bits[0] = t + ((uint32_t) len << 3)) < t) + ctx->bits[1]++; /* Carry from low to high */ + ctx->bits[1] += len >> 29; + + t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */ + + /* Handle any leading odd-sized chunks */ + + if (t) { + unsigned char *p = (unsigned char *) ctx->in + t; + + t = 64 - t; + if (len < t) { + memcpy(p, buf, len); + return; + } + memcpy(p, buf, t); + byteReverse(ctx->in, 16); + md5_transform(ctx->buf, (uint32_t *) ctx->in); + buf += t; + len -= t; + } + /* Process data in 64-byte chunks */ + + while (len >= 64) { + memcpy(ctx->in, buf, 64); + byteReverse(ctx->in, 16); + md5_transform(ctx->buf, (uint32_t *) ctx->in); + buf += 64; + len -= 64; + } + + /* Handle any remaining bytes of data. */ + + memcpy(ctx->in, buf, len); +} + +/* + * Final wrapup - pad to 64-byte boundary with the bit pattern + * 1 0* (64-bit count of bits processed, MSB-first) + */ +void md5_final(struct md5_context *ctx, uint8_t *digest) +{ + unsigned int count; + uint8_t *p; + + /* Compute number of bytes mod 64 */ + count = (ctx->bits[0] >> 3) & 0x3F; + + /* Set the first char of padding to 0x80. This is safe since there is + always at least one byte free */ + p = ctx->in + count; + *p++ = 0x80; + + /* Bytes of padding needed to make 64 bytes */ + count = 64 - 1 - count; + + /* Pad out to 56 mod 64 */ + if (count < 8) { + /* Two lots of padding: Pad the first block to 64 bytes */ + memset(p, 0, count); + byteReverse(ctx->in, 16); + md5_transform(ctx->buf, (uint32_t *) ctx->in); + + /* Now fill the next block with 56 bytes */ + memset(ctx->in, 0, 56); + } else { + /* Pad block to 56 bytes */ + memset(p, 0, count - 8); + } + byteReverse(ctx->in, 14); + + /* Append length in bits and transform */ + ((uint32_t *) ctx->in)[14] = ctx->bits[0]; + ((uint32_t *) ctx->in)[15] = ctx->bits[1]; + + md5_transform(ctx->buf, (uint32_t *) ctx->in); + byteReverse((unsigned char *) ctx->buf, 4); + memcpy(digest, ctx->buf, 16); + memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */ +} + + +/* The four core functions - F1 is optimized somewhat */ + +/* #define F1(x, y, z) (x & y | ~x & z) */ +#define F1(x, y, z) (z ^ (x & (y ^ z))) +#define F2(x, y, z) F1(z, x, y) +#define F3(x, y, z) (x ^ y ^ z) +#define F4(x, y, z) (y ^ (x | ~z)) + +/* This is the central step in the MD5 algorithm. */ +#define md5_step(f, w, x, y, z, data, s) \ + ( w += f(x, y, z) + data, w = w<>(32-s), w += x ) + +/* + * The core of the MD5 algorithm, this alters an existing MD5 hash to + * reflect the addition of 16 longwords of new data. MD5Update blocks + * the data and converts bytes into longwords for this routine. + */ +void md5_transform(uint32_t buf[4], uint32_t in[16]) +{ + register uint32_t a, b, c, d; + + a = buf[0]; + b = buf[1]; + c = buf[2]; + d = buf[3]; + + md5_step(F1, a, b, c, d, in[0] + 0xd76aa478, 7); + md5_step(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); + md5_step(F1, c, d, a, b, in[2] + 0x242070db, 17); + md5_step(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); + md5_step(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); + md5_step(F1, d, a, b, c, in[5] + 0x4787c62a, 12); + md5_step(F1, c, d, a, b, in[6] + 0xa8304613, 17); + md5_step(F1, b, c, d, a, in[7] + 0xfd469501, 22); + md5_step(F1, a, b, c, d, in[8] + 0x698098d8, 7); + md5_step(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); + md5_step(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); + md5_step(F1, b, c, d, a, in[11] + 0x895cd7be, 22); + md5_step(F1, a, b, c, d, in[12] + 0x6b901122, 7); + md5_step(F1, d, a, b, c, in[13] + 0xfd987193, 12); + md5_step(F1, c, d, a, b, in[14] + 0xa679438e, 17); + md5_step(F1, b, c, d, a, in[15] + 0x49b40821, 22); + + md5_step(F2, a, b, c, d, in[1] + 0xf61e2562, 5); + md5_step(F2, d, a, b, c, in[6] + 0xc040b340, 9); + md5_step(F2, c, d, a, b, in[11] + 0x265e5a51, 14); + md5_step(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); + md5_step(F2, a, b, c, d, in[5] + 0xd62f105d, 5); + md5_step(F2, d, a, b, c, in[10] + 0x02441453, 9); + md5_step(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); + md5_step(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); + md5_step(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); + md5_step(F2, d, a, b, c, in[14] + 0xc33707d6, 9); + md5_step(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); + md5_step(F2, b, c, d, a, in[8] + 0x455a14ed, 20); + md5_step(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); + md5_step(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); + md5_step(F2, c, d, a, b, in[7] + 0x676f02d9, 14); + md5_step(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); + + md5_step(F3, a, b, c, d, in[5] + 0xfffa3942, 4); + md5_step(F3, d, a, b, c, in[8] + 0x8771f681, 11); + md5_step(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); + md5_step(F3, b, c, d, a, in[14] + 0xfde5380c, 23); + md5_step(F3, a, b, c, d, in[1] + 0xa4beea44, 4); + md5_step(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); + md5_step(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); + md5_step(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); + md5_step(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); + md5_step(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); + md5_step(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); + md5_step(F3, b, c, d, a, in[6] + 0x04881d05, 23); + md5_step(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); + md5_step(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); + md5_step(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); + md5_step(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); + + md5_step(F4, a, b, c, d, in[0] + 0xf4292244, 6); + md5_step(F4, d, a, b, c, in[7] + 0x432aff97, 10); + md5_step(F4, c, d, a, b, in[14] + 0xab9423a7, 15); + md5_step(F4, b, c, d, a, in[5] + 0xfc93a039, 21); + md5_step(F4, a, b, c, d, in[12] + 0x655b59c3, 6); + md5_step(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); + md5_step(F4, c, d, a, b, in[10] + 0xffeff47d, 15); + md5_step(F4, b, c, d, a, in[1] + 0x85845dd1, 21); + md5_step(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); + md5_step(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); + md5_step(F4, c, d, a, b, in[6] + 0xa3014314, 15); + md5_step(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); + md5_step(F4, a, b, c, d, in[4] + 0xf7537e82, 6); + md5_step(F4, d, a, b, c, in[11] + 0xbd3af235, 10); + md5_step(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); + md5_step(F4, b, c, d, a, in[9] + 0xeb86d391, 21); + + buf[0] += a; + buf[1] += b; + buf[2] += c; + buf[3] += d; +} + +void +md5_digest(const uint8_t *buf, size_t buflen, uint8_t *digest) +{ + struct md5_context ctx; + + md5_init(&ctx); + md5_update(&ctx, buf, buflen); + md5_final(&ctx, digest); +} + +void +md5_hexdigest(const uint8_t *buf, size_t buflen, char *hexdigest) +{ + uint8_t digest[MD5_DIGEST_LEN]; + int i; + + md5_digest(buf, buflen, digest); + + for (i = 0; i < MD5_DIGEST_LEN; i += 1) { + sprintf(hexdigest + (i*2), "%02x", digest[i]); + } +} diff --git a/libctf/md5.h b/libctf/md5.h new file mode 100644 index 0000000..63c7936 --- /dev/null +++ b/libctf/md5.h @@ -0,0 +1,42 @@ +#ifndef MD5_H +#define MD5_H + +#include + +/* The following tests optimise behaviour on little-endian + machines, where there is no need to reverse the byte order + of 32 bit words in the MD5 computation. By default, + HIGHFIRST is defined, which indicates we're running on a + big-endian (most significant byte first) machine, on which + the byteReverse function in md5.c must be invoked. However, + byteReverse is coded in such a way that it is an identity + function when run on a little-endian machine, so calling it + on such a platform causes no harm apart from wasting time. + If the platform is known to be little-endian, we speed + things up by undefining HIGHFIRST, which defines + byteReverse as a null macro. Doing things in this manner + insures we work on new platforms regardless of their byte + order. */ + +#define HIGHFIRST + +#ifdef __i386__ +#undef HIGHFIRST +#endif + +#define MD5_DIGEST_LEN 16 +#define MD5_HEXDIGEST_LEN (MD5_DIGEST_LEN * 2) + +struct md5_context { + uint32_t buf[4]; + uint32_t bits[2]; + uint8_t in[64]; +}; + +void md5_init(struct md5_context *ctx); +void md5_update(struct md5_context *ctx, const uint8_t *buf, size_t len); +void md5_final(struct md5_context *ctx, uint8_t *digest); +void md5_digest(const uint8_t *buf, size_t buflen, uint8_t *digest); +void md5_hexdigest(const uint8_t *buf, size_t buflen, char *hexdigest); + +#endif /* !MD5_H */ diff --git a/libctf/rand.c b/libctf/rand.c new file mode 100644 index 0000000..3f03634 --- /dev/null +++ b/libctf/rand.c @@ -0,0 +1,65 @@ +#include +#include +#include +#include +#include +#include +#include "arc4.h" + +/* + * + * Random numbers + * + */ + +void +urandom(uint8_t *buf, size_t buflen) +{ + static int initialized = 0; + static struct arc4_ctx ctx; + + if (! initialized) { + int fd = open("/dev/urandom", O_RDONLY); + + if (-1 == fd) { + struct { + time_t time; + pid_t pid; + } bits; + + bits.time = time(NULL); + bits.pid = getpid(); + arc4_init(&ctx, (uint8_t *)&bits, sizeof(bits)); + } else { + uint8_t key[256]; + + read(fd, key, sizeof(key)); + close(fd); + arc4_init(&ctx, key, sizeof(key)); + } + + initialized = 1; + } + + while (buflen--) { + *(buf++) = arc4_out(&ctx); + } +} + +int32_t +rand32() +{ + int32_t ret; + + urandom((uint8_t *)&ret, sizeof(ret)); + return ret; +} + +uint32_t +randu32() +{ + uint32_t ret; + + urandom((uint8_t *)&ret, sizeof(ret)); + return ret; +} diff --git a/libctf/rand.h b/libctf/rand.h new file mode 100644 index 0000000..02fc019 --- /dev/null +++ b/libctf/rand.h @@ -0,0 +1,11 @@ +#ifndef __RAND_H__ +#define __RAND_H__ + +#include +#include + +void urandom(void *buf, size_t buflen); +int32_t rand32(); +uint32_t randu32(); + +#endif /* __RAND_H__ */ diff --git a/libctf/test.c b/libctf/test.c new file mode 100644 index 0000000..0301a26 --- /dev/null +++ b/libctf/test.c @@ -0,0 +1,46 @@ +#include +#include +#include "rand.h" +#include "md5.h" +#include "token.h" + +int +main() +{ + int i; + uint8_t zeroes[64] = {0}; + uint8_t digest[MD5_DIGEST_LEN]; + + for (i = 0; i < 10; i += 1) { + printf("%d ", randu32() % 10); + } + + printf("\n4ae71336e44bf9bf79d2752e234818a5\n"); + + md5_digest(zeroes, 16, digest); + for (i = 0; i < sizeof(digest); i += 1) { + printf("%02x", digest[i]); + } + printf("\n"); + + { + char hd[MD5_HEXDIGEST_LEN + 1] = {0}; + + md5_hexdigest(zeroes, 16, hd); + printf("%s\n", hd); + } + + { + ssize_t len; + char token[TOKEN_MAX]; + + len = read_token("foo", 0, 4, token, sizeof(token)); + if (-1 != len) { + printf("rut roh\n"); + } else { + printf("Good.\n"); + } + } + + return 0; +} diff --git a/libctf/token.c b/libctf/token.c new file mode 100644 index 0000000..3f388ed --- /dev/null +++ b/libctf/token.c @@ -0,0 +1,49 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef CTF_BASE +#define CTF_BASE "/var/lib/ctf" +#endif + +ssize_t +read_token_fd(int fd, + uint8_t const *key, size_t keylen, + char *buf, size_t buflen) +{ + ssize_t ret; + + ret = read(fd, buf, buflen); + if (-1 != ret) { + arc4_crypt_buffer(key, keylen, (uint8_t *)buf, (size_t)ret); + } + return ret; +} + + +ssize_t +read_token(char const *name, + uint8_t const *key, size_t keylen, + char *buf, size_t buflen) +{ + char path[PATH_MAX]; + int pathlen; + int fd; + ssize_t ret; + + pathlen = snprintf(path, sizeof(path) - 1, + CTF_BASE "/tokens/%s", name); + path[pathlen] = '\0'; + + fd = open(path, O_RDONLY); + if (-1 == fd) return -1; + ret = read_token_fd(fd, key, keylen, buf, buflen); + close(fd); + return ret; +} diff --git a/include/token.h b/libctf/token.h similarity index 58% rename from include/token.h rename to libctf/token.h index ac4f95b..4034254 100644 --- a/include/token.h +++ b/libctf/token.h @@ -8,13 +8,6 @@ #define TOKEN_MAX 80 /* ARC4 functions, in case anybody wants 'em */ -struct arc4_ctx; -void arc4_init(struct arc4_ctx *ctx, - uint8_t const *key, size_t keylen); -void arc4_crypt(struct arc4_ctx *ctx, - uint8_t *obuf, uint8_t const *ibuf, size_t buflen); -void arc4_crypt_buffer(uint8_t const *key, size_t keylen, - uint8_t *buf, size_t buflen); ssize_t read_token_fd(int fd, uint8_t const *key, size_t keylen, From 2d9857cf28bd80bce3c8fee612959adacf488911 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Mon, 24 Jan 2011 12:46:18 -0700 Subject: [PATCH 03/12] Add team listing to tokend --- Makefile | 2 +- doc/2010-10-NMT/email1.txt | 67 +++++++++++++++++++++--------------- packages/mcp/src/in.tokend.c | 37 ++++++++++++++++++++ 3 files changed, 78 insertions(+), 28 deletions(-) diff --git a/Makefile b/Makefile index bef9f96..19afd28 100644 --- a/Makefile +++ b/Makefile @@ -19,4 +19,4 @@ clean: packages-clean scrub: clean rm -rf $(CACHE) -include packages/packages.mk +-include */*.mk diff --git a/doc/2010-10-NMT/email1.txt b/doc/2010-10-NMT/email1.txt index 2685869..dee8079 100644 --- a/doc/2010-10-NMT/email1.txt +++ b/doc/2010-10-NMT/email1.txt @@ -11,48 +11,61 @@ There are 5 tokens hidden in this message. Can you find them all? --eJwryC8uSS0qtqpIzc1P1i3OT86vAABObgfA Content-type: text/plain; charset=UTF-8 -Are you ready for CTF? +CTF starts TOMORROW! Do you have sufficient stores of Mountain Dew? -The teams are in and it looks like this year's CTF is going to be about -double the size of last year. I've posted teams at -. +This is CMU's first ever CTF, so please be ready for a couple of +hiccups. Likewise, we expect you to be totally lost for a while, as you +get your bearings. While we tried to cover everything in the +registration web page, here are some points worth repeating: -If you came last year, there are some changes in store for you. I've -done away with the weird boxes at each table, so there's no need to -bring a monitor or keyboard. What you really need to be a sysadmin this -year is netcat and nmap. We will *not* provide an Internet connection, -so figure out now how you're going to get onto the Internet (you will -need it). +Your machine really ought to have netcat and nmap, and whatever +programming language(s) you prefer. An Ubuntu live CD has, at past +contests, not been sufficient. It's also a good idea to make sure your +computer works before you show up. Time is precious, don't spend yours +installing an operating system. + +We will have a switch at each table with gobs of ports, but you should +bring your own network cable. We will *not* provide an Internet +connection, so figure out now how you're going to get onto the Internet +(you will need it). If you have any questions, or would just like to hang out and shoot the breeze, feel free to hop on IRC (server woozle.org, channel #ctf). -I hope you all have as much fun playing this as I've had building it! +We hope you have as much fun playing this as we're going to have +watching you work! -zephyr +The Dirtbags + +PS: are you aware of how much data can be hidden in a single email? --eJwryC8uSS0qtqpIzc1P1i3OT86vAABObgfA Content-type: text/html; charset=UTF-8 -

Are you ready for CTF?

+

CTF starts TOMORROW! Do you have sufficient stores of Mountain Dew?

-

The teams are in and it looks like this year's CTF is going to be -about double the size of last year. I've posted teams at -http://dirtbags.net/ctf.

+

This is CMU's first ever CTF, so please be ready for a couple of +hiccups. Likewise, we expect you to be totally lost for a while, as you +get your bearings. While we tried to cover everything in the +registration web page, here are some points worth repeating:

-

If you came last year, there are some changes in store for you. I've -done away with the weird boxes at each table, so there's no need to -bring a monitor or keyboard. What you really need to be a sysadmin this -year is netcat and nmap. We will not provide an -Internet connection, so figure out now how you're going to get onto the -Internet (you will need it).

+

Your machine really ought to have netcat and nmap, and whatever +programming language(s) you prefer. An Ubuntu live CD has, at past +contests, not been sufficient. It's also a good idea to make sure your +computer works before you show up. Time is precious, don't spend yours +installing an operating system.

-

If you have any questions, or would just like to hang out and shoot -the breeze, feel free to -hop on IRC (server woozle.org, channel #ctf).

+

We will have a switch at each table with gobs of ports, but you should +bring your own network cable. We will *not* provide an Internet +connection, so figure out now how you're going to get onto the Internet +(you will need it).

-

I hope you all have as much fun playing this as I've had building it!

+

If you have any questions, or would just like to hang out and shoot the +breeze, feel free to hop on IRC (server woozle.org, channel #ctf).

-

zephyr

+

We hope you have as much fun playing this as we're going to have +watching you work!

+ +

The Dirtbags

--eJwryC8uSS0qtqpIzc1P1i3OT86vAABObgfA-- cbfgref:krzbp-fbpbk diff --git a/packages/mcp/src/in.tokend.c b/packages/mcp/src/in.tokend.c index b94183a..7b1f044 100644 --- a/packages/mcp/src/in.tokend.c +++ b/packages/mcp/src/in.tokend.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -10,9 +11,36 @@ #include #include #include +#include #include "common.h" #include "arc4.h" +void +list_teams() +{ + struct dirent *ent; + DIR *dir; + + dir = opendir(state_path("teams/names")); + if (! dir) return; + while ((ent = readdir(dir))) { + struct stat buf; + + if ((0 == stat(state_path("teams/names/%s", ent->d_name), &buf)) && + (S_ISREG(buf.st_mode))) { + uint8_t hash[ARC4_HASHLEN]; + int i; + + arc4_hash((uint8_t *)ent->d_name, strlen(ent->d_name), hash); + for (i=0; i < ARC4_HASHLEN; i += 1) { + printf("%02x", hash[i]); + } + printf("\n"); + } + } + closedir(dir); +} + int main(int argc, char *argv[]) { @@ -29,11 +57,20 @@ main(int argc, char *argv[]) len = read(0, category, sizeof(category)); if (0 >= len) return 0; + + /* Category name of "?" lists arc4 hashes of all teams */ + if ((1 == len) && ('?' == category[0])) { + list_teams(); + return 0; + } + + /* Strip invalid characters */ for (categorylen = 0; (categorylen < len) && isalnum(category[categorylen]); categorylen += 1); } + /* Read in that category's key. */ { int fd; From 8472583ad402d2749d32f2c300968686458efb48 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Mon, 24 Jan 2011 13:09:51 -0700 Subject: [PATCH 04/12] Finalize tokend changes --- {libctf => include}/arc4.c | 0 {libctf => include}/arc4.h | 0 {libctf => include}/md5.c | 0 {libctf => include}/md5.h | 0 {libctf => include}/rand.c | 0 {libctf => include}/rand.h | 0 {libctf => include}/test.c | 0 {libctf => include}/token.c | 0 {libctf => include}/token.h | 0 libctf/libctf.mk | 9 --------- packages/mcp/src/md5.c | 1 + packages/mcp/src/md5.h | 1 + 12 files changed, 2 insertions(+), 9 deletions(-) rename {libctf => include}/arc4.c (100%) rename {libctf => include}/arc4.h (100%) rename {libctf => include}/md5.c (100%) rename {libctf => include}/md5.h (100%) rename {libctf => include}/rand.c (100%) rename {libctf => include}/rand.h (100%) rename {libctf => include}/test.c (100%) rename {libctf => include}/token.c (100%) rename {libctf => include}/token.h (100%) delete mode 100644 libctf/libctf.mk create mode 120000 packages/mcp/src/md5.c create mode 120000 packages/mcp/src/md5.h diff --git a/libctf/arc4.c b/include/arc4.c similarity index 100% rename from libctf/arc4.c rename to include/arc4.c diff --git a/libctf/arc4.h b/include/arc4.h similarity index 100% rename from libctf/arc4.h rename to include/arc4.h diff --git a/libctf/md5.c b/include/md5.c similarity index 100% rename from libctf/md5.c rename to include/md5.c diff --git a/libctf/md5.h b/include/md5.h similarity index 100% rename from libctf/md5.h rename to include/md5.h diff --git a/libctf/rand.c b/include/rand.c similarity index 100% rename from libctf/rand.c rename to include/rand.c diff --git a/libctf/rand.h b/include/rand.h similarity index 100% rename from libctf/rand.h rename to include/rand.h diff --git a/libctf/test.c b/include/test.c similarity index 100% rename from libctf/test.c rename to include/test.c diff --git a/libctf/token.c b/include/token.c similarity index 100% rename from libctf/token.c rename to include/token.c diff --git a/libctf/token.h b/include/token.h similarity index 100% rename from libctf/token.h rename to include/token.h diff --git a/libctf/libctf.mk b/libctf/libctf.mk deleted file mode 100644 index 10c50e8..0000000 --- a/libctf/libctf.mk +++ /dev/null @@ -1,9 +0,0 @@ -libctf: libctf/libctf.a -libctf/libctf.a: libctf/libctf.a(libctf/md5.o) -libctf/libctf.a: libctf/libctf.a(libctf/arc4.o) -libctf/libctf.a: libctf/libctf.a(libctf/rand.o) -libctf/libctf.a: libctf/libctf.a(libctf/token.o) - -clean: libctf-clean -libctf-clean: - rm -f libctf/*.o libctf/libctf.a diff --git a/packages/mcp/src/md5.c b/packages/mcp/src/md5.c new file mode 120000 index 0000000..b1ccd62 --- /dev/null +++ b/packages/mcp/src/md5.c @@ -0,0 +1 @@ +../../../include/md5.c \ No newline at end of file diff --git a/packages/mcp/src/md5.h b/packages/mcp/src/md5.h new file mode 120000 index 0000000..b229155 --- /dev/null +++ b/packages/mcp/src/md5.h @@ -0,0 +1 @@ +../../../include/md5.h \ No newline at end of file From b2e82bfed4c0be1fbed2e794963d42ebf76d0b66 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Thu, 3 Feb 2011 07:31:42 -0700 Subject: [PATCH 05/12] Emergency checkin-building flooded --- doc/2011-01-CMU/email1.txt | 71 ++++ doc/2011-01-CMU/thanks.png | Bin 0 -> 83209 bytes doc/2011-01-CMU/thanks/blob | Bin 0 -> 83209 bytes doc/2011-01-CMU/thanks/t.png | Bin 0 -> 83209 bytes doc/2011-01-CMU/thanks/thanks | Bin 0 -> 5040 bytes doc/2011-01-CMU/thanks/thanks.c | 19 + doc/2011-01-CMU/thanks/thanks.png | Bin 0 -> 83209 bytes doc/2011-01-CMU/thanks/thanks.svg | 371 ++++++++++++++++++ doc/interest.txt | 1 + doc/writing-puzzles.txt | 163 ++++++++ include/arc4.c | 63 ++- packages/ctfbase/ctfbase.mk | 20 + .../tokens => ctfbase/service/ctf}/log/run | 0 packages/ctfbase/service/ctf/run | 12 + .../service/ctf/update-tokens} | 0 packages/{tokens => ctfbase}/src/Makefile | 3 +- packages/{tokens => ctfbase}/src/arc4.c | 0 packages/{tokens => ctfbase}/src/arc4.h | 0 packages/{tokens => ctfbase}/src/tokencli.c | 0 packages/logger/service/logger/run | 6 +- packages/logger/src/logger.c | 33 +- packages/mcp/service/eth0/run | 8 - packages/mcp/service/httpd/mathopd.conf | 2 + packages/mcp/service/tokend/run | 2 + packages/mcp/src/Makefile | 6 +- packages/mcp/src/arc4-main.c | 1 - packages/mcp/src/in.tokend.c | 12 +- packages/mcp/src/tokencli.c | 1 - packages/octopus/service/octopus/run | 6 +- packages/octopus/src/octopus.c | 32 +- packages/printf/service/printf/run | 9 +- packages/pwnables/service/eth0.pwn/run | 11 - packages/pwnables/service/pwnables/run | 4 + packages/pwnables/service/sshd.pwn/log/run | 3 - packages/pwnables/service/sshd.pwn/rsa.key | Bin 427 -> 0 bytes packages/pwnables/service/sshd.pwn/run | 10 - packages/{mcp => sshd}/service/sshd/finish | 0 packages/{mcp => sshd}/service/sshd/log/run | 0 packages/{mcp => sshd}/service/sshd/rsa.key | Bin packages/{mcp => sshd}/service/sshd/run | 0 packages/tokens/service/tokens/run | 5 - packages/tokens/setup | 4 - packages/tokens/src/arc4-main.c | 58 --- packages/tokens/tokens.mk | 20 - 44 files changed, 803 insertions(+), 153 deletions(-) create mode 100644 doc/2011-01-CMU/email1.txt create mode 100644 doc/2011-01-CMU/thanks.png create mode 100644 doc/2011-01-CMU/thanks/blob create mode 100644 doc/2011-01-CMU/thanks/t.png create mode 100755 doc/2011-01-CMU/thanks/thanks create mode 100644 doc/2011-01-CMU/thanks/thanks.c create mode 100644 doc/2011-01-CMU/thanks/thanks.png create mode 100644 doc/2011-01-CMU/thanks/thanks.svg create mode 100644 doc/interest.txt create mode 100644 doc/writing-puzzles.txt create mode 100644 packages/ctfbase/ctfbase.mk rename packages/{tokens/service/tokens => ctfbase/service/ctf}/log/run (100%) create mode 100755 packages/ctfbase/service/ctf/run rename packages/{tokens/service/tokens/tokens => ctfbase/service/ctf/update-tokens} (100%) rename packages/{tokens => ctfbase}/src/Makefile (57%) rename packages/{tokens => ctfbase}/src/arc4.c (100%) rename packages/{tokens => ctfbase}/src/arc4.h (100%) rename packages/{tokens => ctfbase}/src/tokencli.c (100%) delete mode 100755 packages/mcp/service/eth0/run delete mode 120000 packages/mcp/src/arc4-main.c delete mode 120000 packages/mcp/src/tokencli.c delete mode 100755 packages/pwnables/service/eth0.pwn/run delete mode 100755 packages/pwnables/service/sshd.pwn/log/run delete mode 100644 packages/pwnables/service/sshd.pwn/rsa.key delete mode 100755 packages/pwnables/service/sshd.pwn/run rename packages/{mcp => sshd}/service/sshd/finish (100%) rename packages/{mcp => sshd}/service/sshd/log/run (100%) rename packages/{mcp => sshd}/service/sshd/rsa.key (100%) rename packages/{mcp => sshd}/service/sshd/run (100%) delete mode 100755 packages/tokens/service/tokens/run delete mode 100755 packages/tokens/setup delete mode 100644 packages/tokens/src/arc4-main.c delete mode 100644 packages/tokens/tokens.mk diff --git a/doc/2011-01-CMU/email1.txt b/doc/2011-01-CMU/email1.txt new file mode 100644 index 0000000..dee8079 --- /dev/null +++ b/doc/2011-01-CMU/email1.txt @@ -0,0 +1,71 @@ +From: The Dirtbags +To: RECIP +Subject: WIN BIG AT CAPTURE THE FLAG!!! +Message-ID: +MIME-Version: 1.0 +Content-type: multipart/alternative; boundary=eJwryC8uSS0qtqpIzc1P1i3OT86vAABObgfA +X-Face: '8$#2%$m/.;29z5"5"/ + +There are 5 tokens hidden in this message. Can you find them all? + +--eJwryC8uSS0qtqpIzc1P1i3OT86vAABObgfA +Content-type: text/plain; charset=UTF-8 + +CTF starts TOMORROW! Do you have sufficient stores of Mountain Dew? + +This is CMU's first ever CTF, so please be ready for a couple of +hiccups. Likewise, we expect you to be totally lost for a while, as you +get your bearings. While we tried to cover everything in the +registration web page, here are some points worth repeating: + +Your machine really ought to have netcat and nmap, and whatever +programming language(s) you prefer. An Ubuntu live CD has, at past +contests, not been sufficient. It's also a good idea to make sure your +computer works before you show up. Time is precious, don't spend yours +installing an operating system. + +We will have a switch at each table with gobs of ports, but you should +bring your own network cable. We will *not* provide an Internet +connection, so figure out now how you're going to get onto the Internet +(you will need it). + +If you have any questions, or would just like to hang out and shoot the +breeze, feel free to hop on IRC (server woozle.org, channel #ctf). + +We hope you have as much fun playing this as we're going to have +watching you work! + +The Dirtbags + +PS: are you aware of how much data can be hidden in a single email? +--eJwryC8uSS0qtqpIzc1P1i3OT86vAABObgfA +Content-type: text/html; charset=UTF-8 + +

CTF starts TOMORROW! Do you have sufficient stores of Mountain Dew?

+ +

This is CMU's first ever CTF, so please be ready for a couple of +hiccups. Likewise, we expect you to be totally lost for a while, as you +get your bearings. While we tried to cover everything in the +registration web page, here are some points worth repeating:

+ +

Your machine really ought to have netcat and nmap, and whatever +programming language(s) you prefer. An Ubuntu live CD has, at past +contests, not been sufficient. It's also a good idea to make sure your +computer works before you show up. Time is precious, don't spend yours +installing an operating system.

+ +

We will have a switch at each table with gobs of ports, but you should +bring your own network cable. We will *not* provide an Internet +connection, so figure out now how you're going to get onto the Internet +(you will need it).

+ +

If you have any questions, or would just like to hang out and shoot the +breeze, feel free to hop on IRC (server woozle.org, channel #ctf).

+ +

We hope you have as much fun playing this as we're going to have +watching you work!

+ +

The Dirtbags

+--eJwryC8uSS0qtqpIzc1P1i3OT86vAABObgfA-- + +cbfgref:krzbp-fbpbk diff --git a/doc/2011-01-CMU/thanks.png b/doc/2011-01-CMU/thanks.png new file mode 100644 index 0000000000000000000000000000000000000000..55e84278f7c12483038dcc021b43e256d136127a GIT binary patch literal 83209 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 literal 0 HcmV?d00001 diff --git a/doc/2011-01-CMU/thanks/blob b/doc/2011-01-CMU/thanks/blob new file mode 100644 index 0000000000000000000000000000000000000000..61d84fd15e3bbb6becc279d45ac40525c79a2a8a GIT binary patch literal 83209 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 literal 0 HcmV?d00001 diff --git a/doc/2011-01-CMU/thanks/thanks b/doc/2011-01-CMU/thanks/thanks new file mode 100755 index 0000000000000000000000000000000000000000..0becabff1a3fd4cd6819f00106394ecb950b70f3 GIT binary patch literal 5040 zcmb7IZ)_CD6`!*YFl`8iI6zaXOjXku2{tw{ByLp+V;=d)?gw zyP}He;R?%GMGa~{w3UL=Ppv9ZwTjXvjfjjusZ`a9`iVwWq9&;kv`Q)$`2*$p`_0_g zXQyeEIlY_t&3p6So0&KN_W4ZD_Eah*OsW(0f=HIr4eiLM8#Jd~NU=n;h%bnT#9~yD z*FFpx&^suT7J<^BdQcOTG@VH|kRAXgkw@JmmC#mz2BDC|_M%bqRoxH312v+-8W8Q0 zUx(~GzlIYbOKmlXw%E=j ziNbmVkdxoB06zqL_iVa>eytG8g|O{`LKxU_;zWsU3v@TjZf+6w&ONBj`GH-E-JB?v zlC0-MV!+k8ZBw+`uHg8A*wM3dTbI4bYNbi`u?|1_m%@+ZMPh37{bl4nrJ*?b!*s)9 zG{_@gf(AwAzzK5<;vjQ4d~o#r1LfQ4DK~x^tg?=lJo0W%Dol$W-Mo24VOsXq5MKsv`}=dF z@0Q>DaBuH^Z!5;o+l#+_&v<{r`k4A71g0;{OI3e|zjh94L}}~TgXd9r4q~sh22GX&ND0i+9|J{&sB3!wfO_$C>)o5mV>L2$imC?*h z`P(yH4!*N|UDDt!v6o`D)YQW8==u*%*Mk+~j+nupY<7jtt z!&v4%Wa+U?13al*{1v6j*HRt#qQ8`{u08UceQaWEZ8Hp4$M+KVg)(~az^g3vUnt*7 zS0=~mQB|7OV>T;mVrLL*W9leeIgB{rI!z%Sdp##OA&0_}><=U9x%r|W49J3W!j)Z4 zF)2l^?Dbr^J?{)iN5-XW){WyYO8KlSvtcQp3m!>4=cFrhVc<$Xk*EB`3rh(#TAi^B zOOZU~49T!x#?BB`LtGo&AWyl{D;4_kWcRxfSbi-1f-~S2qcEFy`~n-$wuX~j+LC!sM8aemd zi^xBNoICPoL2UmZh>3H29Ffm`NrJFTzt3ak+jG(-utLrPWrQ7ZEoj|r*k6D{GwpnfKb@9`2 z+pYGEZS8E@Zf%yETH9J%J6bzrOEKbhIBS86x<-09rXWS z_&h{7|BN5rV|b@wjF?0o)0aR?K$KH=4lpFjCh^>5+6-dsQjYQbB;+yXXfPk7$n zLCjH(@t#!msk=gr+*eU%%u|l*;3DLXqs(=IqSD9p&;{aJpxiX%roq%V7*rrpmWgLG zW1e!1_gyG(EgHM5CmjNDji@r@4xu1XS8Eqg41kt`D93d+hysJ&=;OE$7ePjj>vFiN zk8-qcl4>EGR?@A2PYpkdyjvdno z$jEU&dK-<`Dvtg$cE_r6FehdpHv`7EYV;Yo7i#2^?_z$@A;Y6aQ~pU+j&sLTj(6g@ zO=C{(r!{iCL=1m|+|O&|cv(3233e|-4lETj>W&RCS*=5+{G%Vg0kM1ZkN3HwSOms* zRH-uY>mVb?{rEWK7LFg~uGh$&hTLh$asEv*y8nO*+NWJ!lFmWyzm3aV;MWYlpxpOR zXOiLZ9H1_fRzumJ4M1+>m~(DTI*kKL!YTHJ>zMvAW*E!0`hE-pO*IXTK8SrRai3wO zeue4%L}RUh`-aBa0`~`v_2_UP&{(fBu6K<&qk3IyjKM(SIj6D8)H>Cey%6f0)R?EN zUUwRE=RsV|w%0Sob)@+`z4iI6@%;*OU1*GV2omF8W4+oK=NfZXV1E|#l*W9|V!aca z^R-@`?m7-BS6{saFy1s?#Y`}+H0CWp$B)Lm^3SDu@wwS~XKh-1RACQ|e<|D~_^vYk zrSS4<0XF`na8hu;-&-AzIiTZvEV8$m^w@R&X(?3zSLc9xpEuIE8*R#qZd@I^HYlR*K&P^ZCblV}EV{ zt7jf?BgXRs;0x9E#J3jk{|WpvUu@p<1??|Vr?|xvOYk<&?^_7j1I4Sk_TUk8W zyL$KRw|jOT=*5fOw!7z{U0pS-TxbvE!#*c(s|%9tlm-PZKgGP8xH)U{i+8MdDr zBzi)qTa}$F6$(SfPG)zvGP8Yu=hGS6Aeu4dIVwmh-LLeK1C)=s=qaKh>v6zWrp H8a(kI +int main(){char*p=t;while(1){int +c=getchar();if(EOF==c)break; +putchar(c^*p);if(!*++p)p=t;}return +0;} diff --git a/doc/2011-01-CMU/thanks/thanks.png b/doc/2011-01-CMU/thanks/thanks.png new file mode 100644 index 0000000000000000000000000000000000000000..55e84278f7c12483038dcc021b43e256d136127a GIT binary patch literal 83209 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 literal 0 HcmV?d00001 diff --git a/doc/2011-01-CMU/thanks/thanks.svg b/doc/2011-01-CMU/thanks/thanks.svg new file mode 100644 index 0000000..0fd412c --- /dev/null +++ b/doc/2011-01-CMU/thanks/thanks.svg @@ -0,0 +1,371 @@ + + + + + + + + + + + image/svg+xml + + + + + + + Capture the Flag 2011 + + at + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Central Michigan University + happened with my helpbecause I am a cool person! + + + + + right on! + + + diff --git a/doc/interest.txt b/doc/interest.txt new file mode 100644 index 0000000..f06479b --- /dev/null +++ b/doc/interest.txt @@ -0,0 +1 @@ +andrew.hay@afit.edu diff --git a/doc/writing-puzzles.txt b/doc/writing-puzzles.txt new file mode 100644 index 0000000..77b2975 --- /dev/null +++ b/doc/writing-puzzles.txt @@ -0,0 +1,163 @@ +How to create puzzle categories +=============================== + +The contest has multiple "puzzle" categories. Each category contains a +collection of thematically-related puzzles with increasing point +values. This document will guide you through the process of creating a +new category. It's up to you to make challenging puzzles, though :) + +Since Unix commands are plain text, I'll be using the Unix commands to +illustrate steps. These are simple commands that should be easy to +translate to a GUI. + + +Step 1: Establish a progression +------------------------------- + +Before you do anything else, you should sit down with a pen and paper, +and plan out how you'd like contestants to progress through your +category. This contest framework is set up to encourage a linear +progression through puzzles, while still allowing contestants to skip +over things they get stuck on. + +The net-re category, for instance, features full tutorial pages with +simple "end of chapter" type questions for point values 1-8. Point +values 10-99 apply the skills learned in the tutorial against +increasingly challenging problems, point values 100-999 increasingly +approach real-world challenges which use the skills, and point values +1000+ are either culled or inspired by actual net-re tasks performed by +experts in the field. + +The crypto category uses the previous answers key as part of the +solution process for each point value. + +Ideally, your category will work standalone for novices, while allowing +experts to quickly answer the training questions and progress to real +challenges. Remember that some events don't have a class portion, and +even the ones that do have students who prefer to spend the contest time +reviewing the exact same problems they did in the class. + +Remember, it's easy to make incredibly challenging puzzles, and you will +probably have a lot of ideas about how to do this. What's harder is to +make simple puzzles that teach. It can be helpful to imagine a student +with a basic skill set. Write your first puzzle for this student to +introduce them to the topic and get them thinking about things you +believe are important. Guide that student through your tutorial +puzzles, until they emerge ready to tackle some non-tutorial problems. +As they gain confidence, keep them on their toes with new challenges. +Remember to only introduce one new concept for each puzzle! + +Past a certain point, feel free to throw in the killer tricky puzzles +you're just dying to create! + + + +Step 2: Establish point values +------------------------------ + +Each of your steps needs a point value. Each point value must be +unique: you may not have two 5-point puzzles. + +Point values should roughly reflect how difficult a problem is to solve. +It's not terribly important that a 200-point puzzle be ten times harder +than a 20-point puzzle, but it is crucial that a 25-point puzzle be +roughly as difficult as a 20-point puzzle. Poorly-weighted puzzles has +been the main reason students lose interest. + + + +Step 3: Set up your puzzle structure +------------------------------------ + +The best way to get puzzles to me is in a zip file of an entire +directory. Let's say you are going to create a "sandwich" category. +Your first step will be to make a "sandwich" directory somewhere. + + $ mkdir sandwich + $ cd sandwich + $ + +Within your category directory, create subdirectories for each point +value puzzle. In the "sandwich" category we have only 5, 10, and +100-point puzzles. + + $ mkdir 5 10 100 + $ + + +Step 4: Write puzzles +--------------------- + +Now that your skeleton is set up, you can begin to fill it in. In each +point-value subdirectory, there can be three special files, and as many +downloadable files as you like, in addition to CGI and any downloadable +but non-listed files you would like. + +Special files are: + +* index.mdwn: a plain text file formatted with + [markdown](http://daringfireball.net/projects/markdown/), displayed + before the list of normal files in the puzzle directory. +* key: a plain text file with acceptable answers, one per line. Answers + are matched exactly (ie. they are case-sensitive). +* summary: a single line explaining to contest organizers what's going + on in this puzzle. + +All remaining files, except those with filenames beginning with a comma +(","), are listed on the puzzle page for download. + +Any file ending with ".cgi" will be run as CGI. You can search the web +for how to write a CGI. Available languages are Python, Lua, and Bourne +Shell. + +Let's make our 5-point sandwich question! + + $ cd 5 + $ cat <index.mdwn + > Welcome to the Sandwich category! + > In this category you will learn how to make a tasty sandwich. + > The key ingredients in a sandwich are: bread, spread, and filling. + > When making a sandwich, you need to first put down one slice of bread, + > then apply any spreads, and finally add filling. Popular fillings + > include cheese, sprouts, and cold cuts. When you are done, apply + > another slice of bread on top, and optionally tie it together with + > a fancy toothpick. + > + > Now that you know the basics of sandwich-making, it's time for a + > question! How many slices of bread are in a sandwich? + > EOD + $ cat <key + > 2 + > TWO + > two + > EOD + $ echo "How many slices of bread in a sandwich" > summary + $ + +If you wanted to provide a PDF of various sandwiches, this would be the +time to add that too: + + $ cp /tmp/sandwich-types.pdf . + $ + +In a real category, you might provide an executable, hard drive image, +or some other kind of blob. + +No additional work is needed to have `sandwich-types.pdf` show up as a +download on the puzzle page. + + + +Step 5: Package it up +--------------------- + +After you've flushed out all your point-value directories, it's time to +wrap it up and send it in. Clean out any backup or temporary files you +or your editor might have written in the directories, and zip the sucker +up. + + $ cd ../.. + $ zip -r sandwich.zip sandwich/ + $ + +Now mail the zip file in, and you're all done! diff --git a/include/arc4.c b/include/arc4.c index 8e3d562..e96525e 100644 --- a/include/arc4.c +++ b/include/arc4.c @@ -61,6 +61,67 @@ arc4_hash(uint8_t const *buf, size_t buflen, arc4_init(&ctx, buf, buflen); for (i = 0; i < ARC4_HASHLEN; i += 1) { - hash[i] = arc4_pad(&ctx); + hash[i] = arc4_out(&ctx); } } + + +#ifdef ARC4_MAIN + +#include +#include +#include + +int +main(int argc, char *argv[]) +{ + struct arc4_ctx ctx; + + /* Read key and initialize context */ + { + uint8_t key[256]; + size_t keylen = 0; + char *ekey = getenv("KEY"); + FILE *f; + + if (argc == 2) { + if (! (f = fopen(argv[1], "r"))) { + perror(argv[0]); + } + } else { + f = fdopen(3, "r"); + } + + if (f) { + keylen = fread(key, 1, sizeof(key), f); + fclose(f); + } else if (ekey) { + keylen = strlen(ekey); + if (keylen > sizeof(key)) { + keylen = sizeof(key); + } + memcpy(key, ekey, keylen); + } + + if (0 == keylen) { + fprintf(stderr, "Usage: %s [KEYFILE] &1 + +# Set up networking for all CTF packages +ip link set eth0 up +if ! ip route | grep -q default; then + ip route add default via 10.0.0.1 || exit 1 +fi + +install -o root -m 0755 -d /var/lib/ctf/tokens +exec ./update-tokens diff --git a/packages/tokens/service/tokens/tokens b/packages/ctfbase/service/ctf/update-tokens similarity index 100% rename from packages/tokens/service/tokens/tokens rename to packages/ctfbase/service/ctf/update-tokens diff --git a/packages/tokens/src/Makefile b/packages/ctfbase/src/Makefile similarity index 57% rename from packages/tokens/src/Makefile rename to packages/ctfbase/src/Makefile index 1bd9d34..5b21ecc 100644 --- a/packages/tokens/src/Makefile +++ b/packages/ctfbase/src/Makefile @@ -1,6 +1,7 @@ build: tokencli arc4 -arc4: arc4.o arc4-main.o +arc4: arc4.c + $(CC) $(CFLAGS) $(LDFLAGS) -DARC4_MAIN -o $@ $< tokencli: tokencli.o arc4.o diff --git a/packages/tokens/src/arc4.c b/packages/ctfbase/src/arc4.c similarity index 100% rename from packages/tokens/src/arc4.c rename to packages/ctfbase/src/arc4.c diff --git a/packages/tokens/src/arc4.h b/packages/ctfbase/src/arc4.h similarity index 100% rename from packages/tokens/src/arc4.h rename to packages/ctfbase/src/arc4.h diff --git a/packages/tokens/src/tokencli.c b/packages/ctfbase/src/tokencli.c similarity index 100% rename from packages/tokens/src/tokencli.c rename to packages/ctfbase/src/tokencli.c diff --git a/packages/logger/service/logger/run b/packages/logger/service/logger/run index aa0462d..040e9bc 100755 --- a/packages/logger/service/logger/run +++ b/packages/logger/service/logger/run @@ -1,4 +1,6 @@ -#! /bin/sh +#! /bin/sh -e exec 2>&1 -exec tcpsvd 0 4104 /opt/logger/bin/logger +IP=$(cat ip.txt) +ip addr add $IP dev eth0 +exec tcpsvd ${IP#/*} 1958 /opt/logger/bin/logger diff --git a/packages/logger/src/logger.c b/packages/logger/src/logger.c index 11ae1bb..b51b6ed 100644 --- a/packages/logger/src/logger.c +++ b/packages/logger/src/logger.c @@ -1,10 +1,35 @@ -#include +/** logger.c - generate fake log messages (part of dirtbags CTF) + * + * Author: Neale Pickett + * + * This software has been authored by an employee or employees of Los + * Alamos National Security, LLC, operator of the Los Alamos National + * Laboratory (LANL) under Contract No. DE-AC52-06NA25396 with the + * U.S. Department of Energy. The U.S. Government has rights to use, + * reproduce, and distribute this software. The public may copy, + * distribute, prepare derivative works and publicly display this + * software without charge, provided that this Notice and any statement + * of authorship are reproduced on all copies. Neither the Government + * nor LANS makes any warranty, express or implied, or assumes any + * liability or responsibility for the use of this software. If + * software is modified to produce derivative works, such modified + * software should be clearly marked, so as not to confuse it with the + * version available from LANL. + */ + + #include #include #include #include #include -#include "token.h" + +#ifdef STANDALONE +# define TOKEN_MAX 50 +#else +# include "token.h" +# include "arc4.h" +#endif #define PID_MAX 32768 #define QSIZE 200 @@ -27,12 +52,16 @@ read_tokens() char name[40]; for (i = 0; i < sizeof(token)/sizeof(*token); i += 1) { +#ifdef STANDALONE + strcpy(token[i], "logger:xylep-donut-nanox"); +#else /* This can't grow beyond 40. Think about it. */ sprintf(name, "logger%d", i); len = read_token(name, key, sizeof(key), token[i], sizeof(token[i])); if ((-1 == len) || (len >= sizeof(token[i]))) abort(); token[i][len] = '\0'; +#endif } } diff --git a/packages/mcp/service/eth0/run b/packages/mcp/service/eth0/run deleted file mode 100755 index 58a2f37..0000000 --- a/packages/mcp/service/eth0/run +++ /dev/null @@ -1,8 +0,0 @@ -#! /bin/sh -e - -hostname mcp - -ifconfig eth0 10.0.0.2 netmask 255.255.0.0 -route add default gw 10.0.0.1 - -exec inotifyd true $(pwd):x diff --git a/packages/mcp/service/httpd/mathopd.conf b/packages/mcp/service/httpd/mathopd.conf index a1e645e..00dcb97 100644 --- a/packages/mcp/service/httpd/mathopd.conf +++ b/packages/mcp/service/httpd/mathopd.conf @@ -41,6 +41,8 @@ Control { } Server { + Address 10.0.0.2 + Virtual { AnyHost Control { diff --git a/packages/mcp/service/tokend/run b/packages/mcp/service/tokend/run index 211a9b9..f373ff5 100755 --- a/packages/mcp/service/tokend/run +++ b/packages/mcp/service/tokend/run @@ -2,6 +2,8 @@ exec 2>&1 +ip addr add 10.0.0.2/24 dev eth0 + DB=/var/lib/ctf/tokens.db if [ ! -f $DB ]; then diff --git a/packages/mcp/src/Makefile b/packages/mcp/src/Makefile index 35fa5c5..02845a2 100644 --- a/packages/mcp/src/Makefile +++ b/packages/mcp/src/Makefile @@ -1,13 +1,13 @@ CFLAGS = -Wall -Werror -TARGETS = in.tokend tokencli claim.cgi +TARGETS = in.tokend claim.cgi TARGETS += puzzler.cgi puzzles.cgi -TARGETS += pointscli mktoken arc4 +TARGETS += pointscli mktoken all: build build: $(TARGETS) -in.tokend: in.tokend.o arc4.o common.o +in.tokend: in.tokend.o arc4.o md5.o common.o tokencli: tokencli.o arc4.o pointscli: pointscli.o common.o mktoken: mktoken.o common.o diff --git a/packages/mcp/src/arc4-main.c b/packages/mcp/src/arc4-main.c deleted file mode 120000 index d91405e..0000000 --- a/packages/mcp/src/arc4-main.c +++ /dev/null @@ -1 +0,0 @@ -../../tokens/src/arc4-main.c \ No newline at end of file diff --git a/packages/mcp/src/in.tokend.c b/packages/mcp/src/in.tokend.c index 7b1f044..e99276c 100644 --- a/packages/mcp/src/in.tokend.c +++ b/packages/mcp/src/in.tokend.c @@ -14,6 +14,7 @@ #include #include "common.h" #include "arc4.h" +#include "md5.h" void list_teams() @@ -28,14 +29,11 @@ list_teams() if ((0 == stat(state_path("teams/names/%s", ent->d_name), &buf)) && (S_ISREG(buf.st_mode))) { - uint8_t hash[ARC4_HASHLEN]; - int i; + char digest[MD5_HEXDIGEST_LEN + 1]; - arc4_hash((uint8_t *)ent->d_name, strlen(ent->d_name), hash); - for (i=0; i < ARC4_HASHLEN; i += 1) { - printf("%02x", hash[i]); - } - printf("\n"); + md5_hexdigest((uint8_t *)ent->d_name, strlen(ent->d_name), digest); + digest[MD5_HEXDIGEST_LEN] = '\n'; + write(1, digest, sizeof(digest)); } } closedir(dir); diff --git a/packages/mcp/src/tokencli.c b/packages/mcp/src/tokencli.c deleted file mode 120000 index 4ae82d2..0000000 --- a/packages/mcp/src/tokencli.c +++ /dev/null @@ -1 +0,0 @@ -../../tokens/src/tokencli.c \ No newline at end of file diff --git a/packages/octopus/service/octopus/run b/packages/octopus/service/octopus/run index 6bdd947..7655b30 100755 --- a/packages/octopus/service/octopus/run +++ b/packages/octopus/service/octopus/run @@ -1,4 +1,6 @@ -#! /bin/sh +#! /bin/sh -e exec 2>&1 -exec /opt/octopus/bin/octopus +IP=$(cat ip.txt) +ip addr add $IP dev eth0 +exec /opt/octopus/bin/octopus ${IP%/*} diff --git a/packages/octopus/src/octopus.c b/packages/octopus/src/octopus.c index 1b9dd25..f809a66 100644 --- a/packages/octopus/src/octopus.c +++ b/packages/octopus/src/octopus.c @@ -194,17 +194,17 @@ struct bound_port { } bound_ports[PORTS]; int -bind_port(int fd, uint16_t port) { +bind_port(struct in_addr *addr, int fd, uint16_t port) { struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(port); - addr.sin_addr.s_addr = INADDR_ANY; + addr.sin_addr.s_addr = *addr; return bind(fd, (struct sockaddr *)&addr, sizeof(addr)); } int -rebind() +rebind(struct in_addr *addr) { static int offset = 0; char token[200]; @@ -235,7 +235,7 @@ rebind() bound_ports[i + offset].fd = socket(PF_INET, SOCK_DGRAM, 0); do { port = (random() % 56635) + 10000; - ret = bind_port(bound_ports[i + offset].fd, port); + ret = bind_port(addr, bound_ports[i + offset].fd, port); } while (-1 == ret); /* Set the last guy's port number */ @@ -337,15 +337,25 @@ loop() int main(int argc, char *argv[]) { - int ret; - int i; - time_t last = time(NULL); + int ret; + int i; + time_t last = time(NULL); + struct in_addr addr; /* The random seed isn't super important here. */ - srand(8); + srand(last); + + if (argc > 1) { + if (-1 == inet_aton(argv[1], &addr)) { + fprintf(stderr, "invalid address: %s\n", argv[1]); + return EX_IOERR; + } + } else { + addr = INADDR_ANY; + } bound_ports[0].fd = socket(PF_INET, SOCK_DGRAM, 0); - ret = bind_port(bound_ports[0].fd, 8888); + ret = bind_port(&addr, bound_ports[0].fd, 8888); if (-1 == ret) { perror("bind port 8888"); return EX_IOERR; @@ -354,7 +364,7 @@ main(int argc, char *argv[]) for (i = 1; i < PORTS; i += 1) { bound_ports[i].fd = -1; } - if (-1 == rebind()) { + if (-1 == rebind(&addr)) { perror("initial binding"); return EX_IOERR; } @@ -364,7 +374,7 @@ main(int argc, char *argv[]) if (last + 4 < now) { last = now; - if (-1 == rebind()) break; + if (-1 == rebind(&addr)) break; } } diff --git a/packages/printf/service/printf/run b/packages/printf/service/printf/run index 512dcab..83dac55 100755 --- a/packages/printf/service/printf/run +++ b/packages/printf/service/printf/run @@ -1,11 +1,14 @@ -#! /bin/sh +#! /bin/sh -e exec 2>&1 +IP=$(cat ip.txt) +ip addr add $IP dev eth0 + # So I say to him, "Alex, what's a good high port number for a CTF category?" # And he says, "6" # And I say, "no, it has to be bigger than 1000" # And he says, "how about 9001, because that's bigger than 9000" -# So, okay. +# Okay. -exec tcpsvd 0 9001 ./run-printf +exec tcpsvd ${IP#/*} 9001 ./run-printf diff --git a/packages/pwnables/service/eth0.pwn/run b/packages/pwnables/service/eth0.pwn/run deleted file mode 100755 index 64d7d36..0000000 --- a/packages/pwnables/service/eth0.pwn/run +++ /dev/null @@ -1,11 +0,0 @@ -#! /bin/sh - -if [ -d /opt/mcp ]; then - sv d . - exit -fi - -hostname pwnables -ifconfig eth0 10.0.0.10 netmask 255.255.0.0 -route add default gw 10.0.0.1 -exec inotifyd true $(pwd):x diff --git a/packages/pwnables/service/pwnables/run b/packages/pwnables/service/pwnables/run index 4d8487b..86e16e9 100755 --- a/packages/pwnables/service/pwnables/run +++ b/packages/pwnables/service/pwnables/run @@ -1,5 +1,9 @@ #! /bin/sh -e +# Configure IP address +IP=$(cat ip.txt) +ip addr add $IP dev eth0 + # Set up chroot environment # We never umount any of this since it's all just in RAM mkdir -p /mnt/pwnables-root diff --git a/packages/pwnables/service/sshd.pwn/log/run b/packages/pwnables/service/sshd.pwn/log/run deleted file mode 100755 index 4794c8e..0000000 --- a/packages/pwnables/service/sshd.pwn/log/run +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -exec logger -t sshd diff --git a/packages/pwnables/service/sshd.pwn/rsa.key b/packages/pwnables/service/sshd.pwn/rsa.key deleted file mode 100644 index f5304714ddfc57c5e1e6262755e7887a495e8f32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmV;c0aX3~000Mbb7(Dcb724g00RL40RR91g8+&Gz9X&3hPr_T!}rb#=j4h2g7>pY zuuBMGH)k02`GM#KTQ9>6G*s*KUo6R}hHa*3&psvA_6wYpXY$jsrw-(5z|qg$P_{ge zACA2a5W5&jw^$0VZnU!1V9+%h`nUxxw~QTW^nJVBdmAc4 zM$MP4B15JT;*&m15zXV-U01OcE)`{fVBs5)f(^yw0TTxv%_E$Qn~vBx`G z0000&0Io)rLhx?jZ~=+z1L|H7?O+XZ&1 - -if [ -d /opt/mcp ]; then - sv d . - exit -fi - -exec dropbear -r ./rsa.key -E -F diff --git a/packages/mcp/service/sshd/finish b/packages/sshd/service/sshd/finish similarity index 100% rename from packages/mcp/service/sshd/finish rename to packages/sshd/service/sshd/finish diff --git a/packages/mcp/service/sshd/log/run b/packages/sshd/service/sshd/log/run similarity index 100% rename from packages/mcp/service/sshd/log/run rename to packages/sshd/service/sshd/log/run diff --git a/packages/mcp/service/sshd/rsa.key b/packages/sshd/service/sshd/rsa.key similarity index 100% rename from packages/mcp/service/sshd/rsa.key rename to packages/sshd/service/sshd/rsa.key diff --git a/packages/mcp/service/sshd/run b/packages/sshd/service/sshd/run similarity index 100% rename from packages/mcp/service/sshd/run rename to packages/sshd/service/sshd/run diff --git a/packages/tokens/service/tokens/run b/packages/tokens/service/tokens/run deleted file mode 100755 index 25df271..0000000 --- a/packages/tokens/service/tokens/run +++ /dev/null @@ -1,5 +0,0 @@ -#! /bin/sh - -exec 2>&1 -install -o root -m 0755 -d /var/lib/ctf/tokens -exec ./tokens diff --git a/packages/tokens/setup b/packages/tokens/setup deleted file mode 100755 index e864e0d..0000000 --- a/packages/tokens/setup +++ /dev/null @@ -1,4 +0,0 @@ -#! /bin/sh - -cp -r service/* /var/service -mkdir -p /var/lib/ctf/tokens diff --git a/packages/tokens/src/arc4-main.c b/packages/tokens/src/arc4-main.c deleted file mode 100644 index 9332685..0000000 --- a/packages/tokens/src/arc4-main.c +++ /dev/null @@ -1,58 +0,0 @@ -#include -#include -#include -#include -#include -#include "arc4.h" - -int -main(int argc, char *argv[]) -{ - struct arc4_ctx ctx; - - /* Read key and initialize context */ - { - uint8_t key[256]; - size_t keylen = 0; - char *ekey = getenv("KEY"); - FILE *f; - - if (argc == 2) { - if (! (f = fopen(argv[1], "r"))) { - perror(argv[0]); - } - } else { - f = fdopen(3, "r"); - } - - if (f) { - keylen = fread(key, 1, sizeof(key), f); - fclose(f); - } else if (ekey) { - keylen = strlen(ekey); - if (keylen > sizeof(key)) { - keylen = sizeof(key); - } - memcpy(key, ekey, keylen); - } - - if (0 == keylen) { - fprintf(stderr, "Usage: %s [KEYFILE] Date: Thu, 3 Feb 2011 07:34:12 -0700 Subject: [PATCH 06/12] More emergency commit --- doc/2011-TF3/categories.txt | 15 ++ doc/token-categories.txt | 176 ++++++++++++++++++ packages/logger/service/logger/finish | 4 + packages/logger/service/logger/ip.txt | 1 + .../service/octopus-redirect/octopus-redirect | 3 + packages/octopus/service/octopus-redirect/run | 5 + packages/octopus/service/octopus/finish | 4 + packages/octopus/service/octopus/ip.txt | 1 + packages/printf/service/printf/finish | 4 + packages/printf/service/printf/ip.txt | 1 + packages/pwnables/service/pwnables/finish | 4 + packages/pwnables/service/pwnables/ip.txt | 1 + 12 files changed, 219 insertions(+) create mode 100644 doc/2011-TF3/categories.txt create mode 100644 doc/token-categories.txt create mode 100755 packages/logger/service/logger/finish create mode 100644 packages/logger/service/logger/ip.txt create mode 100755 packages/octopus/service/octopus-redirect/octopus-redirect create mode 100755 packages/octopus/service/octopus-redirect/run create mode 100755 packages/octopus/service/octopus/finish create mode 100644 packages/octopus/service/octopus/ip.txt create mode 100755 packages/printf/service/printf/finish create mode 100644 packages/printf/service/printf/ip.txt create mode 100755 packages/pwnables/service/pwnables/finish create mode 100644 packages/pwnables/service/pwnables/ip.txt diff --git a/doc/2011-TF3/categories.txt b/doc/2011-TF3/categories.txt new file mode 100644 index 0000000..cb5401b --- /dev/null +++ b/doc/2011-TF3/categories.txt @@ -0,0 +1,15 @@ +TF3 Categories +============== + +Last year we ran: + + bletchley, compaq, crypto, forensics, hackme, hispaniola, net-re, + sequence, skynet, survey, webapp, tanks, badmath, kevin + + +This year we have: + + basemath, bletchley, codebreaking, compaq, crypto, forensics, + hackme, logger, net-re, octopus, printf, pwnables, sequence, skynet, + steg, tanks, webapp + diff --git a/doc/token-categories.txt b/doc/token-categories.txt new file mode 100644 index 0000000..f5ebcb8 --- /dev/null +++ b/doc/token-categories.txt @@ -0,0 +1,176 @@ +LANL CTF Token-Based Categories +=============================== + +LANL's CTF contest allows for easy addition of new modules which can use +"tokens". A token is a character string worth one point in the contest. +A point may only be claimed once per team, but multiple teams can claim +the same token and each will get a point. Tokens look like this: + + example:xylep-donut-nanox + +Tokens are issued by the token server using the tokencli program at the +end of this document. They can also be issued before the beginning of a +contest. If your category allows it, it will be much easier for you to +simply request a number of tokens before the contest begins, and +hard-code them into your category. + +You will want to arrange that participants get a token after having +completed some sort of task. In existing categories, tokens are +frequently what lie beneath some trail of hacking. For instance, one +program provides a token when the proper printf formatting string is +provided. Another embeds five tokens into log messages using different +encodings. + +Any machine that you connect to our network will get a wired connection +and should claim a static IP address on the 10.0.2.0/24 network. While +it's unlikely you'll conflict with anyone else, be prepared to +reconfigure it with a new IP on the morning of the event. + +If you plan to request tokens, please do so at least 2 weeks before the +start of the event. I will need to know what you'd like your category +to be called, and how many tokens you'd like. It's not a problem if you +don't use all the tokens you request. + +Remember that this is a security contest, and contestants will be far +more engaged with your category if they have to do real work to get the +tokens. For example, a vendor might be tempted to leave tokens lying +around in configuration boxes to reward people who explore its rich +configurability, but this would probably result in people clicking +through the UI as quickly as possible looking only for tokens. Far +better would be to have the tokens lying under the products +functionality somewhere, forcing contestants to interact with the +product like they would in their day to day work after having purchased +it. A Snort category, for instance, would do well to have tokens within +packet captures which triggered alarms. + +I can't stress that last point enough: constestants have been known to +spend over 2 hours on a single problem. Don't be afraid to really +challenge them. + + + + + + +/* tokencli.c - LANL CTF token client +Author: Neale Pickett + +This program requires an arc4 implementation, email me if you can't find +one you like. + +This also requires a shared 128-bit key. I need the key before you can +start requesting tokens from the server :) + + +This software has been authored by an employee or employees of Los +Alamos National Security, LLC, operator of the Los Alamos National +Laboratory (LANL) under Contract No. DE-AC52-06NA25396 with the +U.S. Department of Energy. The U.S. Government has rights to use, +reproduce, and distribute this software. The public may copy, +distribute, prepare derivative works and publicly display this software +without charge, provided that this Notice and any statement of +authorship are reproduced on all copies. Neither the Government nor +LANS makes any warranty, express or implied, or assumes any liability or +responsibility for the use of this software. If software is modified to +produce derivative works, such modified software should be clearly +marked, so as not to confuse it with the version available from LANL. +*/ + + +#include +#include +#include +#include +#include +#include +#include +#include "arc4.h" + +/* I don't feel compelled to put all the TCP client code in here + * when it's so simple to run this with netcat or ucspi. Plus, using + * stdin and stdout makes it simpler to test. + */ + +int +read_key(char *filename, uint8_t *key, size_t *keylen) +{ + int fd = open(filename, O_RDONLY); + int len; + + if (-1 == fd) { + perror("open"); + return EX_NOINPUT; + } + + len = read(fd, key, *keylen); + if (-1 == len) { + perror("read"); + return EX_NOINPUT; + } + *keylen = (size_t)len; + + return 0; +} + +int +main(int argc, char *argv[]) { + uint8_t skey[200]; + size_t skeylen = sizeof(skey); + char token[200]; + size_t tokenlen; + int ret; + + if (argc != 3) { + fprintf(stderr, "Usage: %s SERVICE SERVICEKEY 3>TOKENFILE\n", argv[0]); + fprintf(stderr, "\n"); + fprintf(stderr, "SERVICEKEY is a filename.\n"); + fprintf(stderr, "Server chatter happens over stdin and stdout.\n"); + fprintf(stderr, "Tokens are written to file descriptor 3.\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "To run with netcat:\n"); + fprintf(stderr, " nc 10.0.0.2 1 -e tokencli cat cat.key 3> tokenfile\n"); + return EX_USAGE; + } + + /* read in keys */ + ret = read_key(argv[2], skey, &skeylen); + if (0 != ret) return ret; + + /* write service name */ + write(1, argv[1], strlen(argv[1])); + + /* read nonce, send back encrypted version */ + { + uint8_t nonce[80]; + int noncelen; + + noncelen = read(0, nonce, sizeof(nonce)); + if (0 >= noncelen) { + perror("read"); + return EX_IOERR; + } + arc4_crypt_buffer(skey, skeylen, nonce, (size_t)noncelen); + write(1, nonce, (size_t)noncelen); + } + + /* read token */ + { + int len; + + len = read(0, token, sizeof(token)); + if (0 >= len) { + perror("read"); + return EX_IOERR; + } + tokenlen = (size_t)len; + } + + /* decrypt it */ + arc4_crypt_buffer(skey, skeylen, (uint8_t *)token, tokenlen); + + /* write it to fd 3 */ + write(3, token, tokenlen); + + return 0; +} + diff --git a/packages/logger/service/logger/finish b/packages/logger/service/logger/finish new file mode 100755 index 0000000..6317f74 --- /dev/null +++ b/packages/logger/service/logger/finish @@ -0,0 +1,4 @@ +#! /bin/sh + +IP=$(cat ip.txt) +ip addr del $IP dev eth0 diff --git a/packages/logger/service/logger/ip.txt b/packages/logger/service/logger/ip.txt new file mode 100644 index 0000000..b7c75a4 --- /dev/null +++ b/packages/logger/service/logger/ip.txt @@ -0,0 +1 @@ +10.0.0.14/24 diff --git a/packages/octopus/service/octopus-redirect/octopus-redirect b/packages/octopus/service/octopus-redirect/octopus-redirect new file mode 100755 index 0000000..c6f06c6 --- /dev/null +++ b/packages/octopus/service/octopus-redirect/octopus-redirect @@ -0,0 +1,3 @@ +#! /bin/sh + +echo 'Try UDP.' diff --git a/packages/octopus/service/octopus-redirect/run b/packages/octopus/service/octopus-redirect/run new file mode 100755 index 0000000..f404009 --- /dev/null +++ b/packages/octopus/service/octopus-redirect/run @@ -0,0 +1,5 @@ +#! /bin/sh -e + +IP=$(cat ../octopus/ip.txt) +sv s octopus >/dev/null || exit 1 +exec tcpsvd ${IP#/*} 8888 ./octopus-redirect diff --git a/packages/octopus/service/octopus/finish b/packages/octopus/service/octopus/finish new file mode 100755 index 0000000..6317f74 --- /dev/null +++ b/packages/octopus/service/octopus/finish @@ -0,0 +1,4 @@ +#! /bin/sh + +IP=$(cat ip.txt) +ip addr del $IP dev eth0 diff --git a/packages/octopus/service/octopus/ip.txt b/packages/octopus/service/octopus/ip.txt new file mode 100644 index 0000000..1628247 --- /dev/null +++ b/packages/octopus/service/octopus/ip.txt @@ -0,0 +1 @@ +10.0.0.8/24 diff --git a/packages/printf/service/printf/finish b/packages/printf/service/printf/finish new file mode 100755 index 0000000..6317f74 --- /dev/null +++ b/packages/printf/service/printf/finish @@ -0,0 +1,4 @@ +#! /bin/sh + +IP=$(cat ip.txt) +ip addr del $IP dev eth0 diff --git a/packages/printf/service/printf/ip.txt b/packages/printf/service/printf/ip.txt new file mode 100644 index 0000000..fb7ede6 --- /dev/null +++ b/packages/printf/service/printf/ip.txt @@ -0,0 +1 @@ +10.0.0.91 diff --git a/packages/pwnables/service/pwnables/finish b/packages/pwnables/service/pwnables/finish new file mode 100755 index 0000000..6317f74 --- /dev/null +++ b/packages/pwnables/service/pwnables/finish @@ -0,0 +1,4 @@ +#! /bin/sh + +IP=$(cat ip.txt) +ip addr del $IP dev eth0 diff --git a/packages/pwnables/service/pwnables/ip.txt b/packages/pwnables/service/pwnables/ip.txt new file mode 100644 index 0000000..2e7cb07 --- /dev/null +++ b/packages/pwnables/service/pwnables/ip.txt @@ -0,0 +1 @@ +10.0.0.3/24 From 354200b449621187f0cb2f55663631577626ff24 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Thu, 3 Feb 2011 21:03:37 -0700 Subject: [PATCH 07/12] I didn't need the team listing code in in.tokend --- packages/mcp/src/in.tokend.c | 35 ----------------------------------- 1 file changed, 35 deletions(-) diff --git a/packages/mcp/src/in.tokend.c b/packages/mcp/src/in.tokend.c index e99276c..b94183a 100644 --- a/packages/mcp/src/in.tokend.c +++ b/packages/mcp/src/in.tokend.c @@ -1,5 +1,4 @@ #include -#include #include #include #include @@ -11,33 +10,8 @@ #include #include #include -#include #include "common.h" #include "arc4.h" -#include "md5.h" - -void -list_teams() -{ - struct dirent *ent; - DIR *dir; - - dir = opendir(state_path("teams/names")); - if (! dir) return; - while ((ent = readdir(dir))) { - struct stat buf; - - if ((0 == stat(state_path("teams/names/%s", ent->d_name), &buf)) && - (S_ISREG(buf.st_mode))) { - char digest[MD5_HEXDIGEST_LEN + 1]; - - md5_hexdigest((uint8_t *)ent->d_name, strlen(ent->d_name), digest); - digest[MD5_HEXDIGEST_LEN] = '\n'; - write(1, digest, sizeof(digest)); - } - } - closedir(dir); -} int main(int argc, char *argv[]) @@ -55,20 +29,11 @@ main(int argc, char *argv[]) len = read(0, category, sizeof(category)); if (0 >= len) return 0; - - /* Category name of "?" lists arc4 hashes of all teams */ - if ((1 == len) && ('?' == category[0])) { - list_teams(); - return 0; - } - - /* Strip invalid characters */ for (categorylen = 0; (categorylen < len) && isalnum(category[categorylen]); categorylen += 1); } - /* Read in that category's key. */ { int fd; From 825a3fb68289e6a5154cdedeaa1a7a14c9ebfe24 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Mon, 7 Feb 2011 13:10:02 -0700 Subject: [PATCH 08/12] Packages set their own IPs --- .../ctfbase/service/{ctf/update-tokens => ctfd/ctfd} | 12 ++++++++++++ packages/ctfbase/service/{ctf => ctfd}/log/run | 0 packages/ctfbase/service/{ctf => ctfd}/run | 4 ++-- packages/logger/service/logger/run | 2 +- packages/mcp/service/tokend/run | 2 +- packages/octopus/service/octopus/run | 2 +- packages/printf/service/printf/run | 2 +- packages/pwnables/service/pwnables/run | 2 +- 8 files changed, 19 insertions(+), 7 deletions(-) rename packages/ctfbase/service/{ctf/update-tokens => ctfd/ctfd} (56%) rename packages/ctfbase/service/{ctf => ctfd}/log/run (100%) rename packages/ctfbase/service/{ctf => ctfd}/run (74%) diff --git a/packages/ctfbase/service/ctf/update-tokens b/packages/ctfbase/service/ctfd/ctfd similarity index 56% rename from packages/ctfbase/service/ctf/update-tokens rename to packages/ctfbase/service/ctfd/ctfd index 0826283..11e724e 100755 --- a/packages/ctfbase/service/ctf/update-tokens +++ b/packages/ctfbase/service/ctfd/ctfd @@ -1,6 +1,7 @@ #! /bin/sh while true; do + # Get new tokens for dn in /opt/*/tokens/*; do [ -d $dn ] || continue puzzle=$(basename $dn) @@ -9,5 +10,16 @@ while true; do -e /opt/tokens/bin/tokencli $category $dn/category.key 3>&1 | \ /opt/tokens/bin/arc4 $dn/enc.key > /var/lib/ctf/tokens/$puzzle done + + # Fetch list of teams + wget -q -P /var/lib/ctf http://10.0.0.2/teams.txt & + + # Archive state + state=/var/www/state.tar.gz.rc4 + tar cf - /var/lib/ctf | \ + gzip -c | \ + KEY='crashmaster' arc4 > $state.tmp + mv $state.tmp $state + sleep 60 done diff --git a/packages/ctfbase/service/ctf/log/run b/packages/ctfbase/service/ctfd/log/run similarity index 100% rename from packages/ctfbase/service/ctf/log/run rename to packages/ctfbase/service/ctfd/log/run diff --git a/packages/ctfbase/service/ctf/run b/packages/ctfbase/service/ctfd/run similarity index 74% rename from packages/ctfbase/service/ctf/run rename to packages/ctfbase/service/ctfd/run index 5b18d10..431f9f9 100755 --- a/packages/ctfbase/service/ctf/run +++ b/packages/ctfbase/service/ctfd/run @@ -2,11 +2,11 @@ exec 2>&1 -# Set up networking for all CTF packages +# Set up networking for all CTF ip ip link set eth0 up if ! ip route | grep -q default; then ip route add default via 10.0.0.1 || exit 1 fi install -o root -m 0755 -d /var/lib/ctf/tokens -exec ./update-tokens +exec ./ctfd diff --git a/packages/logger/service/logger/run b/packages/logger/service/logger/run index 040e9bc..f0bf6ab 100755 --- a/packages/logger/service/logger/run +++ b/packages/logger/service/logger/run @@ -2,5 +2,5 @@ exec 2>&1 IP=$(cat ip.txt) -ip addr add $IP dev eth0 +ip addr add $IP label eth0:logger dev eth0 exec tcpsvd ${IP#/*} 1958 /opt/logger/bin/logger diff --git a/packages/mcp/service/tokend/run b/packages/mcp/service/tokend/run index f373ff5..692d02f 100755 --- a/packages/mcp/service/tokend/run +++ b/packages/mcp/service/tokend/run @@ -2,7 +2,7 @@ exec 2>&1 -ip addr add 10.0.0.2/24 dev eth0 +ip addr add 10.0.0.2/24 label eth0:mcp dev eth0 DB=/var/lib/ctf/tokens.db diff --git a/packages/octopus/service/octopus/run b/packages/octopus/service/octopus/run index 7655b30..2b7df70 100755 --- a/packages/octopus/service/octopus/run +++ b/packages/octopus/service/octopus/run @@ -2,5 +2,5 @@ exec 2>&1 IP=$(cat ip.txt) -ip addr add $IP dev eth0 +ip addr add $IP label eth0:octopus dev eth0 exec /opt/octopus/bin/octopus ${IP%/*} diff --git a/packages/printf/service/printf/run b/packages/printf/service/printf/run index 83dac55..57de4a7 100755 --- a/packages/printf/service/printf/run +++ b/packages/printf/service/printf/run @@ -3,7 +3,7 @@ exec 2>&1 IP=$(cat ip.txt) -ip addr add $IP dev eth0 +ip addr add $IP label eth0:printf dev eth0 # So I say to him, "Alex, what's a good high port number for a CTF category?" # And he says, "6" diff --git a/packages/pwnables/service/pwnables/run b/packages/pwnables/service/pwnables/run index 86e16e9..42cdbe5 100755 --- a/packages/pwnables/service/pwnables/run +++ b/packages/pwnables/service/pwnables/run @@ -2,7 +2,7 @@ # Configure IP address IP=$(cat ip.txt) -ip addr add $IP dev eth0 +ip addr add $IP label eth0:pwnables dev eth0 # Set up chroot environment # We never umount any of this since it's all just in RAM From f11ff7f1d6ca8a3a87493d7cdc45bc734a01e3cb Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Mon, 7 Feb 2011 17:12:12 -0700 Subject: [PATCH 09/12] Add R'lyeh --- packages/rlyeh/rlyeh.mk | 44 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 packages/rlyeh/rlyeh.mk diff --git a/packages/rlyeh/rlyeh.mk b/packages/rlyeh/rlyeh.mk new file mode 100644 index 0000000..1e3d6f4 --- /dev/null +++ b/packages/rlyeh/rlyeh.mk @@ -0,0 +1,44 @@ +RLYEH_PKGDIR = $(TARGET)/rlyeh +RLYEH_BUILDDIR = $(BUILD)/rlyeh +RLYEH_TAR = $(CACHE)/rlyeh.tar.gz +RLYEH_URL = "http://woozle.org/~neale/gitweb.cgi?p=rlyeh;a=snapshot;h=master;sf=tgz" + +$(RLYEH_TAR): + @ mkdir -p $(@D) + wget -O $@ $(RLYEH_URL) + +rlyeh-source: $(RLYEH_BUILDDIR)/rlyeh +$(RLYEH_BUILDDIR)/rlyeh: $(RLYEH_TAR) + mkdir -p $(RLYEH_BUILDDIR) + zcat $(RLYEH_TAR) | (cd $(RLYEH_BUILDDIR) && tar xf -) + +rlyeh-build: rlyeh-source + $(MAKE) -C $(RLYEH_BUILDDIR)/rlyeh + +# "html" instead of "www" to prevent automatic links +rlyeh-install: rlyeh-build + mkdir -p $(RLYEH_PKGDIR)/bin + cp $(RLYEH_BUILDDIR)/crlyeh/forfrlyeh $(RLYEH_PKGDIR)/bin + cp $(RLYEH_BUILDDIR)/crlyeh/designer.cgi $(RLYEH_PKGDIR)/bin + cp $(RLYEH_BUILDDIR)/crlyeh/rank.awk $(RLYEH_PKGDIR)/bin + cp $(RLYEH_BUILDDIR)/crlyeh/winners.awk $(RLYEH_PKGDIR)/bin + + $(call COPYTREE, packages/rlyeh/html, $(RLYEH_PKGDIR)/html) + cp packages/mcp/www/ctf.css $(RLYEH_PKGDIR)/html/style.css + cp packages/mcp/www/grunge.png $(RLYEH_PKGDIR)/html + cp $(RLYEH_BUILDDIR)/crlyeh/nav.html.inc $(RLYEH_PKGDIR)/html + cp $(RLYEH_BUILDDIR)/crlyeh/rlyeh.js $(RLYEH_PKGDIR)/html + cp $(RLYEH_BUILDDIR)/crlyeh/forf.html $(RLYEH_PKGDIR)/html + cp $(RLYEH_BUILDDIR)/crlyeh/intro.html $(RLYEH_PKGDIR)/html + cp $(RLYEH_BUILDDIR)/crlyeh/figures.js $(RLYEH_PKGDIR)/html + cp $(RLYEH_BUILDDIR)/crlyeh/procs.html $(RLYEH_PKGDIR)/html + cp $(RLYEH_BUILDDIR)/crlyeh/designer.js $(RLYEH_PKGDIR)/html + + $(call COPYTREE, packages/rlyeh/service, $(RLYEH_PKGDIR)/service) + + $(call COPYTREE, $(RLYEH_BUILDDIR)/crlyeh/examples, $(RLYEH_PKGDIR)/examples) + +rlyeh-clean: + rm -rf $(RLYEH_BUILDDIR) + +PACKAGES += rlyeh From 33d6e8b322a8b75dad0595201aaf419ceb2bae44 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Mon, 7 Feb 2011 22:38:13 -0700 Subject: [PATCH 10/12] Add service scripts for rlyeh --- packages/rlyeh/service/rlyeh/finish | 4 +++ packages/rlyeh/service/rlyeh/ip.txt | 1 + packages/rlyeh/service/rlyeh/rlyeh-ctf | 42 ++++++++++++++++++++++++++ packages/rlyeh/service/rlyeh/run | 10 ++++++ 4 files changed, 57 insertions(+) create mode 100755 packages/rlyeh/service/rlyeh/finish create mode 100644 packages/rlyeh/service/rlyeh/ip.txt create mode 100755 packages/rlyeh/service/rlyeh/rlyeh-ctf create mode 100755 packages/rlyeh/service/rlyeh/run diff --git a/packages/rlyeh/service/rlyeh/finish b/packages/rlyeh/service/rlyeh/finish new file mode 100755 index 0000000..54ba047 --- /dev/null +++ b/packages/rlyeh/service/rlyeh/finish @@ -0,0 +1,4 @@ +#! /bin/sh + +read IP < ip.txt +ip addr del $IP dev eth0 diff --git a/packages/rlyeh/service/rlyeh/ip.txt b/packages/rlyeh/service/rlyeh/ip.txt new file mode 100644 index 0000000..6ac003d --- /dev/null +++ b/packages/rlyeh/service/rlyeh/ip.txt @@ -0,0 +1 @@ +10.0.0.28/24 diff --git a/packages/rlyeh/service/rlyeh/rlyeh-ctf b/packages/rlyeh/service/rlyeh/rlyeh-ctf new file mode 100755 index 0000000..1ea6aca --- /dev/null +++ b/packages/rlyeh/service/rlyeh/rlyeh-ctf @@ -0,0 +1,42 @@ +#! /bin/sh + +base=${CTF_BASE:-/var/lib/ctf} + +read -p "Team password: " -r teamhash + +if ! KEY='Too much cheese.' arc4 < $base/teams.txt | grep -q -F -e "$teamhash"; then + echo 'No such team.' + exit +fi + +cd $base/rlyeh + +if [ -f $teamhash ]; then + now=$(date +%s) + ts=$(stat -c %Y $teamhash) + d=$(expr $now - $ts) + if [ $d -lt 60 ]; then + echo 'You are trying to connect too fast.' + exit + fi +else + echo 0 > $teamhash +fi +read level < $teamhash + +( + if ! flock -n 8; then + echo 'Your team is already logged in.' + exit + fi + + echo "Your team is on level $level." + echo + + if ./rlyeh $level; then + echo "10 points for Gryffindor!" + expr $level + 1 > $teamhash + else + touch $teamhash + fi +) 8<$teamhash diff --git a/packages/rlyeh/service/rlyeh/run b/packages/rlyeh/service/rlyeh/run new file mode 100755 index 0000000..40644a0 --- /dev/null +++ b/packages/rlyeh/service/rlyeh/run @@ -0,0 +1,10 @@ +#! /bin/sh -e + +exec 2>&1 +read IP < ip.txt +ip addr add $IP label eth0:rlyeh dev eth0 + +dir=/var/lib/ctf/rlyeh +install -o nobody -d $dir + +exec setuidgid nobody tcpsvd ${IP#/*} 1928 ./rlyeh-ctf From cd723d922e602ee4761c0d47670717635a112404 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Mon, 7 Feb 2011 22:58:01 -0700 Subject: [PATCH 11/12] Clean up rlyeh.mk --- packages/rlyeh/rlyeh.mk | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/packages/rlyeh/rlyeh.mk b/packages/rlyeh/rlyeh.mk index 1e3d6f4..60a921f 100644 --- a/packages/rlyeh/rlyeh.mk +++ b/packages/rlyeh/rlyeh.mk @@ -15,29 +15,12 @@ $(RLYEH_BUILDDIR)/rlyeh: $(RLYEH_TAR) rlyeh-build: rlyeh-source $(MAKE) -C $(RLYEH_BUILDDIR)/rlyeh -# "html" instead of "www" to prevent automatic links rlyeh-install: rlyeh-build mkdir -p $(RLYEH_PKGDIR)/bin - cp $(RLYEH_BUILDDIR)/crlyeh/forfrlyeh $(RLYEH_PKGDIR)/bin - cp $(RLYEH_BUILDDIR)/crlyeh/designer.cgi $(RLYEH_PKGDIR)/bin - cp $(RLYEH_BUILDDIR)/crlyeh/rank.awk $(RLYEH_PKGDIR)/bin - cp $(RLYEH_BUILDDIR)/crlyeh/winners.awk $(RLYEH_PKGDIR)/bin - - $(call COPYTREE, packages/rlyeh/html, $(RLYEH_PKGDIR)/html) - cp packages/mcp/www/ctf.css $(RLYEH_PKGDIR)/html/style.css - cp packages/mcp/www/grunge.png $(RLYEH_PKGDIR)/html - cp $(RLYEH_BUILDDIR)/crlyeh/nav.html.inc $(RLYEH_PKGDIR)/html - cp $(RLYEH_BUILDDIR)/crlyeh/rlyeh.js $(RLYEH_PKGDIR)/html - cp $(RLYEH_BUILDDIR)/crlyeh/forf.html $(RLYEH_PKGDIR)/html - cp $(RLYEH_BUILDDIR)/crlyeh/intro.html $(RLYEH_PKGDIR)/html - cp $(RLYEH_BUILDDIR)/crlyeh/figures.js $(RLYEH_PKGDIR)/html - cp $(RLYEH_BUILDDIR)/crlyeh/procs.html $(RLYEH_PKGDIR)/html - cp $(RLYEH_BUILDDIR)/crlyeh/designer.js $(RLYEH_PKGDIR)/html + cp $(RLYEH_BUILDDIR)/rlyeh/rlyeh $(RLYEH_PKGDIR)/bin $(call COPYTREE, packages/rlyeh/service, $(RLYEH_PKGDIR)/service) - $(call COPYTREE, $(RLYEH_BUILDDIR)/crlyeh/examples, $(RLYEH_PKGDIR)/examples) - rlyeh-clean: rm -rf $(RLYEH_BUILDDIR) From 3d3de7cb05a7f00112442232bc88b53371f8da86 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Tue, 8 Feb 2011 14:09:48 -0700 Subject: [PATCH 12/12] Clean compile --- include/arc4.c | 13 ------- include/arc4.h | 2 - include/token.c | 68 ++++++++++++++++++++++++++++++++++ packages/ctfbase/ctfbase.mk | 2 - packages/logger/src/Makefile | 2 +- packages/logger/src/logger.c | 1 - packages/mcp/mcp.mk | 2 - packages/octopus/src/octopus.c | 12 +++--- 8 files changed, 75 insertions(+), 27 deletions(-) diff --git a/include/arc4.c b/include/arc4.c index e96525e..8f13423 100644 --- a/include/arc4.c +++ b/include/arc4.c @@ -52,19 +52,6 @@ arc4_crypt_buffer(const uint8_t *key, size_t keylen, arc4_crypt(&ctx, buf, buf, buflen); } -void -arc4_hash(uint8_t const *buf, size_t buflen, - uint8_t *hash) -{ - struct arc4_ctx ctx; - int i; - - arc4_init(&ctx, buf, buflen); - for (i = 0; i < ARC4_HASHLEN; i += 1) { - hash[i] = arc4_out(&ctx); - } -} - #ifdef ARC4_MAIN diff --git a/include/arc4.h b/include/arc4.h index f1ef379..1474622 100644 --- a/include/arc4.h +++ b/include/arc4.h @@ -4,8 +4,6 @@ #include #include -#define ARC4_HASHLEN 16 - struct arc4_ctx { uint8_t S[256]; uint8_t i; diff --git a/include/token.c b/include/token.c index 3f388ed..9fbe6d3 100644 --- a/include/token.c +++ b/include/token.c @@ -12,6 +12,74 @@ #define CTF_BASE "/var/lib/ctf" #endif +/* + * + * ARC-4 stuff + * + */ + +struct arc4_ctx { + uint8_t S[256]; + uint8_t i; + uint8_t j; +}; + +#define swap(a, b) do {int _swap=a; a=b, b=_swap;} while (0) + +void +arc4_init(struct arc4_ctx *ctx, uint8_t const *key, size_t keylen) +{ + int i; + int j = 0; + + for (i = 0; i < 256; i += 1) { + ctx->S[i] = i; + } + + for (i = 0; i < 256; i += 1) { + j = (j + ctx->S[i] + key[i % keylen]) % 256; + swap(ctx->S[i], ctx->S[j]); + } + ctx->i = 0; + ctx->j = 0; +} + +uint8_t +arc4_out(struct arc4_ctx *ctx) +{ + ctx->i = (ctx->i + 1) % 256; + ctx->j = (ctx->j + ctx->S[ctx->i]) % 256; + swap(ctx->S[ctx->i], ctx->S[ctx->j]); + return ctx->S[(ctx->S[ctx->i] + ctx->S[ctx->j]) % 256]; +} + +void +arc4_crypt(struct arc4_ctx *ctx, + uint8_t *obuf, const uint8_t *ibuf, size_t buflen) +{ + size_t k; + + for (k = 0; k < buflen; k += 1) { + obuf[k] = ibuf[k] ^ arc4_out(ctx); + } +} + +void +arc4_crypt_buffer(const uint8_t *key, size_t keylen, + uint8_t *buf, size_t buflen) +{ + struct arc4_ctx ctx; + + arc4_init(&ctx, key, keylen); + arc4_crypt(&ctx, buf, buf, buflen); +} + +/* + * + */ + + + ssize_t read_token_fd(int fd, uint8_t const *key, size_t keylen, diff --git a/packages/ctfbase/ctfbase.mk b/packages/ctfbase/ctfbase.mk index 15706c3..8b89e09 100644 --- a/packages/ctfbase/ctfbase.mk +++ b/packages/ctfbase/ctfbase.mk @@ -5,8 +5,6 @@ ctfbase-install: ctfbase-build $(call COPYTREE, packages/ctfbase/service, $(CTFBASE_PKGDIR)/service) - cp packages/ctfbase/setup $(CTFBASE_PKGDIR)/ - cp packages/ctfbase/src/tokencli $(CTFBASE_PKGDIR)/bin/ cp packages/ctfbase/src/arc4 $(CTFBASE_PKGDIR)/bin/ diff --git a/packages/logger/src/Makefile b/packages/logger/src/Makefile index d7cc0df..980cb6d 100644 --- a/packages/logger/src/Makefile +++ b/packages/logger/src/Makefile @@ -11,4 +11,4 @@ install: $(TARGETS) install -m 0755 $(TARGETS) $(DESTDIR)/bin clean: - rm -f *.o $(TARGETS) \ No newline at end of file + rm -f *.o $(TARGETS) diff --git a/packages/logger/src/logger.c b/packages/logger/src/logger.c index b51b6ed..e8159af 100644 --- a/packages/logger/src/logger.c +++ b/packages/logger/src/logger.c @@ -28,7 +28,6 @@ # define TOKEN_MAX 50 #else # include "token.h" -# include "arc4.h" #endif #define PID_MAX 32768 diff --git a/packages/mcp/mcp.mk b/packages/mcp/mcp.mk index 6d068f7..e91d9d8 100644 --- a/packages/mcp/mcp.mk +++ b/packages/mcp/mcp.mk @@ -6,9 +6,7 @@ mcp-install: mcp-build $(call COPYTREE, packages/mcp/bin, $(MCP_PKGDIR)/bin) cp packages/mcp/src/in.tokend $(MCP_PKGDIR)/bin/ cp packages/mcp/src/pointscli $(MCP_PKGDIR)/bin/ - cp packages/mcp/src/tokencli $(MCP_PKGDIR)/bin/ cp packages/mcp/src/puzzles.cgi $(MCP_PKGDIR)/bin/ - cp packages/mcp/src/arc4 $(MCP_PKGDIR)/bin/ $(call COPYTREE, packages/mcp/service, $(MCP_PKGDIR)/service) diff --git a/packages/octopus/src/octopus.c b/packages/octopus/src/octopus.c index f809a66..2020d1d 100644 --- a/packages/octopus/src/octopus.c +++ b/packages/octopus/src/octopus.c @@ -195,12 +195,12 @@ struct bound_port { int bind_port(struct in_addr *addr, int fd, uint16_t port) { - struct sockaddr_in addr; + struct sockaddr_in saddr; - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - addr.sin_addr.s_addr = *addr; - return bind(fd, (struct sockaddr *)&addr, sizeof(addr)); + saddr.sin_family = AF_INET; + saddr.sin_port = htons(port); + memcpy(&saddr.sin_addr.s_addr, addr, sizeof(struct in_addr)); + return bind(fd, (struct sockaddr *)&saddr, sizeof(saddr)); } int @@ -351,7 +351,7 @@ main(int argc, char *argv[]) return EX_IOERR; } } else { - addr = INADDR_ANY; + addr.s_addr = INADDR_ANY; } bound_ports[0].fd = socket(PF_INET, SOCK_DGRAM, 0);