Roman Hergenreder 5 years ago
parent
commit
aa56104b3f
54 changed files with 669 additions and 1084 deletions
  1. 75 0
      Day 6/Piet'ers Gallery.html
  2. 5 0
      Day 6/Piet'ers Gallery_files/baguetteBox.css
  3. 6 0
      Day 6/Piet'ers Gallery_files/baguetteBox.js
  4. 4 0
      Day 6/Piet'ers Gallery_files/bootstrap.css
  5. 16 0
      Day 6/Piet'ers Gallery_files/css.css
  6. BIN
      Day 6/Piet'ers Gallery_files/house.png
  7. BIN
      Day 6/Piet'ers Gallery_files/house_2.png
  8. BIN
      Day 6/Piet'ers Gallery_files/lake.png
  9. 1 0
      Day 6/Piet'ers Gallery_files/script.js
  10. BIN
      Day 6/Piet'ers Gallery_files/sheep.png
  11. BIN
      Day 6/Piet'ers Gallery_files/sky.png
  12. BIN
      Day 6/Piet'ers Gallery_files/snake.png
  13. 86 0
      Day 6/Piet'ers Gallery_files/styles.css
  14. BIN
      Day 6/Piet'ers Gallery_files/trees.png
  15. 228 0
      Day 6/decode.py
  16. BIN
      Day 6/decoded.png
  17. BIN
      Day 6/house_decoded.png
  18. BIN
      Day 6/lake_decoded.png
  19. BIN
      Day 6/sheep_decoded.png
  20. BIN
      Day 6/sky_decoded.png
  21. BIN
      Day 6/snake_decoded.png
  22. BIN
      Day 6/test.png
  23. BIN
      Day 6/trees_decoded.png
  24. 85 0
      Day 7/code.pl
  25. 0 914
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/26D
  26. BIN
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/26D.zlib
  27. 0 18
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/2FBF9
  28. BIN
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/2FBF9.zlib
  29. BIN
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/2FE31
  30. BIN
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/2FE31.zlib
  31. BIN
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/34B45
  32. BIN
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/34B45.zlib
  33. BIN
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/394B9
  34. BIN
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/394B9.zlib
  35. BIN
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/QR3C_cropped.png
  36. 0 55
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/dec17.py
  37. 0 0
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/dec17_out.png
  38. 0 91
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/decode_qr.py
  39. 0 0
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/punch_card_decoded.txt
  40. 0 0
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/CCDA
  41. BIN
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/CCDA.zlib
  42. 0 0
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/Final_easy.zip
  43. 0 0
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/QR3C.png
  44. BIN
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/QR3C_cropped.png
  45. BIN
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/QR3C_cropped_fixed.png
  46. 16 5
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/Santa.txt
  47. 0 0
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/decode.py
  48. 147 0
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/decode_qr.py
  49. 0 0
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/old_school.jpg
  50. 0 0
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/punch_card_decoder.py
  51. 0 0
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/teaser.pls
  52. 0 0
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/teaser_unwrapped.tls
  53. 0 0
      Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/z.zip
  54. 0 1
      Teaser/passphrase.txt

File diff suppressed because it is too large
+ 75 - 0
Day 6/Piet'ers Gallery.html


File diff suppressed because it is too large
+ 5 - 0
Day 6/Piet'ers Gallery_files/baguetteBox.css


File diff suppressed because it is too large
+ 6 - 0
Day 6/Piet'ers Gallery_files/baguetteBox.js


File diff suppressed because it is too large
+ 4 - 0
Day 6/Piet'ers Gallery_files/bootstrap.css


+ 16 - 0
Day 6/Piet'ers Gallery_files/css.css

@@ -0,0 +1,16 @@
+/* latin */
+@font-face {
+  font-family: 'Droid Sans';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Droid Sans Regular'), local('DroidSans-Regular'), url(https://fonts.gstatic.com/s/droidsans/v8/SlGVmQWMvZQIdix7AFxXkHNSbQ.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* latin */
+@font-face {
+  font-family: 'Droid Sans';
+  font-style: normal;
+  font-weight: 700;
+  src: local('Droid Sans Bold'), local('DroidSans-Bold'), url(https://fonts.gstatic.com/s/droidsans/v8/SlGWmQWMvZQIdix7AFxXmMh3eDs1Zw.woff2) format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}

BIN
Day 6/Piet'ers Gallery_files/house.png


BIN
Day 6/Piet'ers Gallery_files/house_2.png


BIN
Day 6/Piet'ers Gallery_files/lake.png


+ 1 - 0
Day 6/Piet'ers Gallery_files/script.js

@@ -0,0 +1 @@
+var _0x4ec1=['\x6c\x6f\x67','\x53\x75\x63\x68\x20\x68\x61\x78\x78\x6f\x72\x20\x2d\x20\x6d\x75\x63\x68\x20\x31\x33\x33\x37\x21'];var _0x1a98=function(_0x35db43,_0x135584){_0x35db43=_0x35db43-0x0;var _0x292945=_0x4ec1[_0x35db43];return _0x292945;};console[_0x1a98('0x0')](_0x1a98('0x1'));

BIN
Day 6/Piet'ers Gallery_files/sheep.png


BIN
Day 6/Piet'ers Gallery_files/sky.png


BIN
Day 6/Piet'ers Gallery_files/snake.png


+ 86 - 0
Day 6/Piet'ers Gallery_files/styles.css

@@ -0,0 +1,86 @@
+body {
+    background-color: #434c50;
+    min-height: 100vh;
+    font: normal 16px sans-serif;
+    padding: 40px 0;
+}
+
+.container.gallery-container {
+    background-color: #fff;
+    color: #35373a;
+    min-height: 100vh;
+    padding: 30px 50px;
+}
+
+.gallery-container h1 {
+    text-align: center;
+    margin-top: 50px;
+    font-family: 'Droid Sans', sans-serif;
+    font-weight: bold;
+}
+
+.gallery-container p.page-description {
+    text-align: center;
+    margin: 25px auto;
+    font-size: 18px;
+    color: #999;
+}
+
+.tz-gallery {
+    padding: 40px;
+}
+
+/* Override bootstrap column paddings */
+.tz-gallery .row > div {
+    padding: 2px;
+}
+
+.tz-gallery .lightbox img {
+    width: 100%;
+    border-radius: 0;
+    position: relative;
+}
+
+.tz-gallery .lightbox:before {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    margin-top: -13px;
+    margin-left: -13px;
+    opacity: 0;
+    color: #fff;
+    font-size: 26px;
+    font-family: 'Glyphicons Halflings';
+    content: '\e003';
+    pointer-events: none;
+    z-index: 9000;
+    transition: 0.4s;
+}
+
+
+.tz-gallery .lightbox:after {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    opacity: 0;
+    background-color: rgba(46, 132, 206, 0.7);
+    content: '';
+    transition: 0.4s;
+}
+
+.tz-gallery .lightbox:hover:after,
+.tz-gallery .lightbox:hover:before {
+    opacity: 0;
+}
+
+.baguetteBox-button {
+    background-color: transparent !important;
+}
+
+@media(max-width: 768px) {
+    body {
+        padding: 0;
+    }
+}

BIN
Day 6/Piet'ers Gallery_files/trees.png


+ 228 - 0
Day 6/decode.py

@@ -0,0 +1,228 @@
+#!/usr/bin/python
+
+from PIL import Image
+import math
+import numpy
+
+def to24Bit(data):
+    red = (data >> 5) * 32;
+    green = ((data & 28) >> 2) * 32;
+    blue = (data & 3) * 64;
+    return [red, green, blue]
+
+def to8Bit(pixel):
+#    return (math.floor((pixel[0] / 32)) << 5) + (math.floor((pixel[1] / 32)) << 2) + math.floor((pixel[2] / 64))
+     return (pixel[0] * 7 // 255) << 5 + (pixel[1] * 7 // 255) << 2 + (pixel[2] * 3 // 255)
+
+images = ["house", "trees", "lake", "sky", "sheep", "snake"]
+tileSize = 10
+
+
+im = Image.open("Piet'ers Gallery_files/house.png")
+pix = im.load()
+numTiles = im.size[0] // tileSize
+
+for y in range(im.size[1] - 2 * tileSize):
+    line = ""
+    for x in range(im.size[0] - 2 * tileSize):
+        x_abs = x + tileSize
+        y_abs = y + tileSize
+
+        pixelX = min(math.floor(x_abs / tileSize) * tileSize + 5, im.size[0] - 5)
+        pixelY = min(math.floor(y_abs / tileSize) * tileSize + 5, im.size[1] - 5)
+
+        pixels = [
+            pix[5, pixelY],
+            pix[im.size[0] - 5, pixelY],
+            pix[pixelX, 5],
+            pix[pixelX, im.size[1] - 5]
+        ]
+
+        result = ((pixels[0] | pixels[1]) & (pixels[2] | pixels[3]))
+        pix[x_abs, y_abs] = result
+
+for tileY in range(numTiles):
+    line = ""
+    for tileX in range(numTiles):
+        p = pix[tileX * tileSize + 5, tileY * tileSize + 5]
+        # line += "%08d " % int(bin(p)[2:])
+        line += chr(p)
+    print(line)
+
+im.save("test.png")
+
+# def decodePixel(x, y, tileSize):
+#     # x_abs = x*tileSize + tileSize // 2
+#     # y_abs = y*tileSize + tileSize // 2
+#     pixel = pix[x, y]
+#
+#     return pixel
+    # return "%02d" % pixel
+    # r = pixel[0]
+    # g = pixel[1]
+    # b = pixel[2]
+    # bit8 = to8Bit(pixel)
+
+    # return colors[pixel]
+    # r = 1 if r == 192 else (10 if r == 255 else r)
+    # g = 1 if g == 192 else (10 if g == 255 else g)
+    # b = 1 if b == 192 else (10 if b == 255 else b)
+
+    # return "%02d%02d%02d" % (r, g, b)
+    # return "%02d" % pixel
+    # return "%08d" % int(bin(bit8)[2:])
+
+    # What to do with this pixel?
+    # return bin(pixel)[2:]
+    # return "%04d" % int(bin(pixel)[2:])
+    # return str(chr(ord('A') + pixel))
+    # return pix[x,y]
+
+# for imageName in images:
+#     im = Image.open("Piet'ers Gallery_files/%s.png" % imageName)
+#     pix = im.load()
+#
+#     tileSize = 10
+#     tilesW = im.size[0] // tileSize
+#     tilesH = im.size[1] // tileSize
+# #
+#     data = []
+#
+#     # First row
+#     for x in range(tilesW):
+#         data.append(decodePixel(x, 0, tileSize))
+#
+#     # Column right
+#     for y in range(1, tilesH - 1):
+#         data.append(decodePixel(tilesW - 1, y, tileSize))
+#
+#     # Row bottom
+#     for x in reversed(range(tilesW - 1)):
+#         data.append(decodePixel(x, tilesH - 1, tileSize))
+#
+#     # Column left
+#     for y in reversed(range(1, tilesH - 1)):
+#         data.append(decodePixel(0, y, tileSize))
+#
+#     # print(''.join(data))
+#     print(imageName, "\t", ' '.join(data))
+
+# for
+# im = Image.open("Piet'ers Gallery_files/lake.png")
+# im = Image.open("Piet'ers Gallery_files/house_2.png")
+# im = Image.frombytes('P', im.size, im.tobytes())
+
+# for imageName in images:
+#     im = Image.open("Piet'ers Gallery_files/%s.png" % imageName)
+#     pix = im.load()
+#
+# tileSize = 10
+# tilesW = im.size[0] // tileSize
+# tilesH = im.size[1] // tileSize
+
+    # for y in range(im.size[1] - 2 * tileSize):
+    #     line = ""
+    #     for x in range(im.size[0] - 2 * tileSize):
+    #         x_abs = x + tileSize
+    #         y_abs = y + tileSize
+    #
+    #         pixelX = min(math.floor(x_abs / tileSize) * tileSize + 5, im.size[0] - 5)
+    #         pixelY = min(math.floor(y_abs / tileSize) * tileSize + 5, im.size[1] - 5)
+    #
+    #         pixels = [
+    #             pix[5, pixelY],
+    #             pix[im.size[0] - 5, pixelY],
+    #             pix[pixelX, 5],
+    #             pix[pixelX, im.size[1] - 5]
+    #         ]
+    #
+    #         result = (pixels[0] ^ pixels[1] ^ pixels[2] ^ pixels[3]) % 18
+            # line += str(result)
+            #
+            # print(pixels)
+
+            # pixelX = 5 if (x_abs < im.size[0] // 2) else im.size[0] - 5
+            # pixelY = 5 if (y_abs < im.size[1] // 2) else im.size[1] - 5
+
+            # print("pixelX, pixelY", pixelX, pixelY, x, y)
+            # print("asdas", x, y)
+            # pixel1 = decodePixel(pixelX, , tileSize)
+            # pixel2 = decodePixel(math.floor(x_abs / tileSize) * tileSize, pixelY, tileSize)
+
+    #         pix[x_abs, y_abs] = result
+    #     print(line)
+    #
+    # im.save("%s_decoded.png" % imageName)
+
+# data = []
+#
+# # First row
+# for x in range(tilesW):
+#     data.append(decodePixel(x, 0))
+#
+# # Column right
+# for y in range(1, tilesH - 1):
+#     data.append(decodePixel(tilesW - 1, y))
+#
+# # Row bottom
+# for x in reversed(range(tilesW - 1)):
+#     data.append(decodePixel(x, tilesH - 1))
+#
+# # Column left
+# for y in reversed(range(1, tilesH - 1)):
+#     data.append(decodePixel(0, y))
+# #
+# print(''.join(data))
+# print(len(''.join(data)))
+
+# for x in range(tilesW):
+#     data.append(decodePixel(x, 0))
+
+# pixel = numpy.array(im)
+
+# print(bin(pix[4*tileSize + 5,0]))
+
+# data = [[0 for x in range(tilesW)] for y in range(tilesH)]
+
+# for y in range(tilesH):
+#     line = ""
+#     for x in range(tilesW):
+#         # pixel = im.getpixel((x * tileSize + 5, y * tileSize + 5))
+#         pixel = pix[x * tileSize + 5, y * tileSize + 5]
+#         # binary = bin(pixel)[2:]
+#         # binaryStr = "%08d" % int(binary)
+#         # line += binaryStr
+#         # line += chr(ord('A') + pixel)
+#         # data[x][y] = pixel
+#         # line += chr(pixel)
+#         # print(to24Bit(int(binaryStr[::-1], 2)))
+#         # print(binaryStr, binary, chr(pixel))
+#         # str = str + binaryStr
+#         # str += binary
+#         line += "%02d" % pixel
+#     print(line)
+
+# data[1][1] = data[0][1] + data[1][0]
+# for x in range(1,tilesW//2 + 1):
+#     data[x][1] = data[0][x] | data[1][0]
+#     print(chr(ord('A') + data[x][1]))
+
+
+# for y in range(1,tilesH):
+#     pixel = pix[tilesW * tileSize - 5, y * tileSize + 5]
+#     binary = bin(pixel)[2:]
+#     binaryStr = "%08d" % int(binary)
+#     str = str + binaryStr
+#
+# print(str)
+#
+# data = [
+#     [255,192,255],
+#     [255,0,255],
+#     [0,255,255]
+# ]
+#
+# print(' '.join(["%08d" % int(bin(to8Bit(p))[2:]) for p in data]))
+
+
+# print(pix[5, 15], pix[5, 25], pix[5, 35], pix[5, 45], pix[5, 55])

BIN
Day 6/decoded.png


BIN
Day 6/house_decoded.png


BIN
Day 6/lake_decoded.png


BIN
Day 6/sheep_decoded.png


BIN
Day 6/sky_decoded.png


BIN
Day 6/snake_decoded.png


BIN
Day 6/test.png


BIN
Day 6/trees_decoded.png


+ 85 - 0
Day 7/code.pl

@@ -0,0 +1,85 @@
+use Term::ReadKey;
+
+sub k {
+  ReadKey(-1) # Perform a non-blocked read
+}
+
+ReadMode 3; # Echo off, unbuffered, signals enabled, Xon/Xoff
+            # possibly enabled, and 8-bit mode possibly enabled.
+
+sub rk {
+  $Q = '';
+  $Q .= $QQ while ( $QQ = k() ); $Q
+}
+
+$| = 1;
+
+print "\ec\e[0;0r\e[4242;1H\e[6n\e[1;1H";
+
+# ???
+( $p .= $c ) until ( ( $c = k() ) eq 'R' );
+
+$x  = 75;
+$dx = 3;
+
+# idk?
+( ($yy) = ( $p =~ /(\d+);/ ) ) && ( $yy -= 10 );
+
+# Border
+print( ( "\r\n\e[40m\e[37m#" . ( ' ' x 78 ) . "#" ) x 100 );
+
+# and what is this?
+$r = (
+    sub {
+        $M = shift;
+        sub {
+          $M = ( ( $M * 0x41C64E6D ) + 12345 ) & 0x7FFFFFFF;
+          $M % shift;
+        }
+    }
+)->(42);
+
+# What is this?
+$s = (
+  sub {
+    select( $HV18, $faLL, $D33p, shift );
+  }
+);
+
+# Does nothing?
+$INT0 ? $H3ll : $PERL;
+
+# Nowhere used?
+# hex string -> ascii -> decimal
+# ascii: b'st\x0c\x128vRHq\x05WSFb\x0elUe^\x1bKkoT\x1ak-ru'
+# dec: [115, 116, 12, 18, 56, 118, 82, 72, 113, 5, 87, 83, 70, 98, 14, 108, 85, 101, 94, 27, 75, 107, 111, 84, 26, 107, 45, 114, 117]
+# Length: 29
+@HASH = unpack( "C*",  pack( "H*", '73740c12387652487105575346620e6c55655e1b4b6b6f541a6b2d7275' ));
+
+for $i ( 0 .. 666 ) {
+    $s->(0.1);
+    print("\e[40;91m\e[${yy};${x}H.");
+    $dx += int( rk() =~ / /g ) * 2 - 1;
+    $dx = ( $dx > 3 ? 3 : ( $dx < -3 ? -3 : $dx ) );
+    $x += $dx;
+    # ( $x > 1 && $x < 80 ) || last;
+    ( ( $i % 23 ) && print( "\e[4242;1H\n\e[40m\e[37m#" . ( ' ' x 78 ) . "#" ) )
+      || (
+        ( $h = 20 + $r->(42) )
+        && (
+            print(
+                    "\e[4242;1H\n\e[40m\e[37m#"
+                  . ( ( chr( $HASH[ $i / 23 ] ^ $h ) ) x ( $h - 5 ) )
+                  . ( " " x 10 )
+                  . ( ( chr( $HASH[ $i / 23 ] ^ $h ) ) x ( 73 - $h ) ) . "#"
+            )
+        )
+      );
+    # ( ( $i + 13 ) % 23 ) ? 42 : ( ( abs( $x - $h ) < 6 ) || last );
+    print("\e[${yy};${x}H\e[41m\e[37m@");
+}
+
+# Reset Read Mode
+ReadMode 1;
+
+###################-EOF-flappy.pl###############

+ 0 - 914
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/26D

@@ -1,914 +0,0 @@
-/Artifact <</Attached [/Bottom]/Type/Pagination/Subtype/Footer>> BDC /GS6 gs
-q
--0.000005282 0.00024414 595.32 841.92 re
-W* n
-662.3 0 0 225.65 -29.35 1.5479 cm
-/Image5 Do Q
- EMC /Artifact <</Attached [/Top]/Type/Pagination/Subtype/Header>> BDC q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F1 11.04 Tf
-1 0 0 1 70.944 796.08 Tm
-0 g
-/GS9 gs
-0 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-Q
- EMC /Artifact <</Attached [/Bottom]/Type/Pagination/Subtype/Footer>> BDC q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F1 11.04 Tf
-1 0 0 1 70.944 38.4 Tm
-0 g
-0 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-Q
- EMC  /P <</MCID 0>> BDC 1 g
-70.9 268.58 464.2 463.15 re
-f*
-0.75 w
-0 G
-
-70.9 268.58 464.2 463.15 re
-S
- EMC q
-71.304 268.82 463.54 462.55 re
-W* n
- /P <</MCID 1>> BDC q
-71.304 268.82 463.54 462.55 re
-W* n
-BT
-/F1 11.04 Tf
-1 0 0 1 537.84 264.74 Tm
-0 g
-0 G
-[( )] TJ
-ET
-Q
-Q
- EMC  /P <</MCID 2>> BDC q
-71.28 268.92 463.44 462.48 re
-W* n
-463.15 0 0 463.15 72.75 266.72 cm
-/Image10 Do Q
-q
-71.34 268.86 463.44 462.48 re
-W* n
-2 w
- 1 j 
-71.75 265.72 465.15 465.15 re
-S
-Q
- EMC  /P <</MCID 3>> BDC q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F2 20.04 Tf
-1 0 0 1 211.49 749.02 Tm
-0 g
-0 G
-[(HACKven)5(t )5(20)5(18)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F1 20.04 Tf
-1 0 0 1 383.83 749.02 Tm
-0 g
-0 G
-[( )] TJ
-ET
-Q
- EMC  /P <</MCID 4>> BDC q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 70.944 254.66 Tm
-1 g
-1 G
-[(.... ...)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 94.944 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 98.904 254.66 Tm
-1 g
-1 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 101.9 254.66 Tm
-1 g
-1 G
-[(.)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 104.9 254.66 Tm
-1 g
-1 G
-[(--)6(-)-6(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 120.86 254.66 Tm
-1 g
-1 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 123.86 254.66 Tm
-1 g
-1 G
- -0.036 Tc[(---)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 135.74 254.66 Tm
-1 g
-1 G
-[(.. )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 144.86 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 148.82 254.66 Tm
-1 g
-1 G
-[(....)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 160.82 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 164.78 254.66 Tm
-1 g
-1 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 167.78 254.66 Tm
-1 g
-1 G
- 0.084 Tc[(--)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 175.85 254.66 Tm
-1 g
-1 G
-[(. )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 181.85 254.66 Tm
-1 g
-1 G
-[(--)-3(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 193.85 254.66 Tm
-1 g
-1 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 196.85 254.66 Tm
-1 g
-1 G
-[(.)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 199.85 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 203.81 254.66 Tm
-1 g
-1 G
-[(. .. )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 218.81 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 222.77 254.66 Tm
-1 g
-1 G
-[(....)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 234.77 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 238.73 254.66 Tm
-1 g
-1 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 241.85 254.66 Tm
-1 g
-1 G
- -0.036 Tc[(--)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 249.77 254.66 Tm
-1 g
-1 G
-[(.. .)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 261.77 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 265.73 254.66 Tm
-1 g
-1 G
-[(. ... )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 283.73 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 287.71 254.66 Tm
-1 g
-1 G
-[(... )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 299.83 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 303.79 254.66 Tm
-1 g
-1 G
-[(..)-9(..)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 315.91 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 319.87 254.66 Tm
-1 g
-1 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 322.87 254.66 Tm
-1 g
-1 G
-[(..)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 328.87 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 332.83 254.66 Tm
-1 g
-1 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 335.83 254.66 Tm
-1 g
-1 G
-[(..)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 341.83 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 345.79 254.66 Tm
-1 g
-1 G
-[(. .)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 354.79 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 358.75 254.66 Tm
-1 g
-1 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 361.75 254.66 Tm
-1 g
-1 G
-[(. )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 367.87 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 371.83 254.66 Tm
-1 g
-1 G
-[(....)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 383.83 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 387.79 254.66 Tm
-1 g
-1 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 390.79 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 394.75 254.66 Tm
-1 g
-1 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 397.75 254.66 Tm
-1 g
-1 G
-[(... )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 409.78 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 413.74 254.66 Tm
-1 g
-1 G
-[(.... )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 428.86 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 432.82 254.66 Tm
-1 g
-1 G
-[(.)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 435.82 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 439.78 254.66 Tm
-1 g
-1 G
-[(. )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 445.78 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 449.74 254.66 Tm
-1 g
-1 G
-[(....)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 461.74 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 465.7 254.66 Tm
-1 g
-1 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 468.82 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 472.78 254.66 Tm
-1 g
-1 G
-[(.)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 475.78 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 479.74 254.66 Tm
-1 g
-1 G
-[(. ...)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 494.74 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 498.7 254.66 Tm
-1 g
-1 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 501.7 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 505.66 254.66 Tm
-1 g
-1 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 508.78 254.66 Tm
-1 g
-1 G
-[(-)] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 512.74 254.66 Tm
-0 g
-0 G
-[( )] TJ
-ET
-Q
-q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F3 12 Tf
-1 0 0 1 515.88 254.66 Tm
-0 g
-0 G
-[( )] TJ
-ET
-Q
- EMC  /P <</MCID 5>> BDC q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F1 11.04 Tf
-1 0 0 1 70.944 227.54 Tm
-0 g
-0 G
-[( )] TJ
-ET
-Q
- EMC  /P <</MCID 6>> BDC q
-0.000008871 0 595.32 841.92 re
-W* n
-BT
-/F1 11.04 Tf
-1 0 0 1 70.944 205.1 Tm
-0 g
-0 G
-[( )] TJ
-ET
-Q
- EMC  /P <</MCID 7>> BDC 79.4 277.67 447 444.85 re
-f*
-1.5 w
-
-79.4 277.67 447 444.85 re
-S
- EMC q
-80.184 281.93 445.54 436.25 re
-W* n
- /P <</MCID 8>> BDC q
-80.184 281.93 445.54 436.25 re
-W* n
-BT
-/F1 11.04 Tf
-1 0 0 1 525.84 279.77 Tm
-0 g
-0 G
-[( )] TJ
-ET
-Q
-Q
- EMC  /P <</MCID 9>> BDC q
-87.36 282 431.04 436.2 re
-W* n
-438.4 0 0 438.4 87.35 279.77 cm
-/Image15 Do Q
- EMC 

BIN
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/26D.zlib


+ 0 - 18
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/2FBF9

@@ -1,18 +0,0 @@
-22 0 26 51 27 107 25 158 28 227 30 283 31 334 29 390 32 459 33 515 34 566 35 617 21 668 17 771 18 862 19 1098 20 1121 23 1136 <</P 21 0 R/S/P/Type/StructElem/K[ 3] /Pg 3 0 R>>
-<</P 25 0 R/S/Figure/Type/StructElem/K[ 7] /Pg 3 0 R>>
-<</P 25 0 R/S/P/Type/StructElem/K[ 8] /Pg 3 0 R>>
-<</P 21 0 R/S/Textbox/Type/StructElem/K[ 26 0 R 27 0 R] /Pg 3 0 R>>
-<</P 21 0 R/S/Figure/Type/StructElem/K[ 9] /Pg 3 0 R>>
-<</P 29 0 R/S/P/Type/StructElem/K[ 1] /Pg 3 0 R>>
-<</P 29 0 R/S/Figure/Type/StructElem/K[ 0] /Pg 3 0 R>>
-<</P 21 0 R/S/Textbox/Type/StructElem/K[ 30 0 R 31 0 R] /Pg 3 0 R>>
-<</P 21 0 R/S/Figure/Type/StructElem/K[ 2] /Pg 3 0 R>>
-<</P 21 0 R/S/P/Type/StructElem/K[ 4] /Pg 3 0 R>>
-<</P 21 0 R/S/P/Type/StructElem/K[ 5] /Pg 3 0 R>>
-<</P 21 0 R/S/P/Type/StructElem/K[ 6] /Pg 3 0 R>>
-<</P 17 0 R/S/Document/Type/StructElem/K[ 22 0 R 25 0 R 28 0 R 29 0 R 32 0 R 33 0 R 34 0 R 35 0 R] >>
-<</Type/StructTreeRoot/RoleMap 18 0 R/ParentTree 19 0 R/K[ 21 0 R] /ParentTreeNextKey 1>>
-<</Footnote/Note/Endnote/Note/Textbox/Sect/Header/Sect/Footer/Sect/InlineShape/Sect/Annotation/Sect/Artifact/Sect/Workbook/Document/Worksheet/Part/Macrosheet/Part/Chartsheet/Part/Dialogsheet/Part/Slide/Part/Chart/Sect/Diagram/Figure>>
-<</Nums[ 0 23 0 R] >>
-<</Names[] >>
-[ 31 0 R 30 0 R 32 0 R 22 0 R 33 0 R 34 0 R 35 0 R 26 0 R 27 0 R 28 0 R] 

BIN
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/2FBF9.zlib


BIN
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/2FE31


BIN
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/2FE31.zlib


BIN
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/34B45


BIN
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/34B45.zlib


BIN
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/394B9


BIN
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/394B9.zlib


BIN
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/QR3C_cropped.png


+ 0 - 55
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/dec17.py

@@ -1,55 +0,0 @@
-#!/usr/bin/python
-
-from PIL import Image
-from qrtools import QR
-import itertools
-
-img = Image.open('QR3C.png')
-pixels_orig = img.load()
-(w,h)=img.size
-
-outimg = Image.new( 'RGB', (23,23), "white")
-pixels_out = outimg.load()
-
-for i in range(0,h,6):
-    for j in range(0,w,6):
-      (r,g,b) = pixels_orig[j,i]
-      if((r,g,b)==(255,255,255)):
-          pixels_out[j/13,i/13]=(255,255,255)
-
-      elif((r,g,b)==(0,0,0) or r>0 ):
-          pixels_out[j/13,i/13]=(0,0,0)
-
-
-
-# bruteforce missing section until readable
-count=0
-for i in itertools.product('01', repeat=60):
-    count+=1
-    if count%1000 ==0:
-        print count
-
-    for x in range(1,12):
-        for y in range (10,14):
-            if( i[((y-10)%4)*11 + x] == '0' ):
-                pixels_out[x,y]=(0,0,0)
-
-
-
-
-    outimg=outimg.resize((300,300))
-    outimg.save("dec17_out.png","png")
-
-
-
-    # read qr code
-    nugget=''
-
-    myCode = QR(filename="dec17_out.png")
-    if myCode.decode():
-      nugget=myCode.data_to_string()
-      print nugget
-      break
-    #else:
-    #    print "could not decode"
-    #break

+ 0 - 0
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/dec17_out.png


+ 0 - 91
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/decode_qr.py

@@ -1,91 +0,0 @@
-#!/usr/bin/python
-
-from PIL import Image
-
-def invert(value):
-    return ''.join(["1" if x == "0" else "0" for x in value])
-
-
-# Load Image
-im = Image.open('QR3C_cropped.png')
-# im.crop((33, 34, 264, 265)).save("QR3C_cropped.png")
-
-
-pix = im.load()
-
-tiles = 21
-tileSize = im.size[0] // tiles
-version = (tiles - 17) // 4
-
-data = [[0 for x in range(tiles)] for y in range(tiles)]
-print("tiles=%d tileSize=%d version=%d" % (tiles, tileSize, version))
-for x in range(tiles):
-    for y in range(tiles):
-        x_mid = x * tileSize + 0.5 * tileSize
-        y_mid = y * tileSize + 0.5 * tileSize
-        color = pix[x_mid, y_mid]
-    #    print(x, y, x_mid, y_mid, color)
-        data[x][y] = invert("%d%d%d" %  ( color[0] // 255, color[1] // 255, color[2] // 255 ))
-
-# print(data)
-
-def blackWhiteValue(string):
-    new_value = ""
-    if len(string) % 3 != 0:
-        print("Cannot return black white value of", string)
-        return new_value
-
-    for i in range(len(string) // 3):
-        new_value += string[i * 3]
-
-    return new_value
-
-mask1 = [data[8][18], data[8][17], data[8][16]]
-mask2 = [data[2][8], data[3][8], data[4][8]]
-if mask1 != mask2:
-    print("masks do not match")
-    exit()
-
-# mask = [mask1[0][0] + mask1[1][0] + mask[2][0],]
-mask = [''.join(mask1[i][j] for i in range(3)) for j in range(3)]
-print("Mask:", mask)
-
-def apply_mask(x, y, bit, mask):
-    doInvert = False
-    if mask == "111":
-        doInvert = x % 3 == 0
-    elif mask == "110":
-        doInvert = (x + y) % 3 == 0
-    elif mask == "101":
-        doInvert = (x + y) % 2 == 0
-    elif mask == "100":
-        doInvert = y % 2 == 0
-    elif mask == "000":
-        doInvert = ((x*y) % 2) + ((x + y) % 3) == 0
-
-    return invert(bit) if doInvert else bit
-
-def get_masked_value(x, y):
-    return ''.join([apply_mask(x, y, data[x][y][i], mask[i]) for i in range(3)])
-
-def read_block(x, y, orientation):
-    indizes = []
-    if orientation == "UP":
-        indizes = [[0,0], [-1,0], [0,-1], [-1,-1], [0,-2], [-1,-2], [0, -3], [-1, -3]]
-    elif orientation == "LEFT":
-        indizes = [[0,0], [-1,0], [0,-1], [-1,-1], [-2,-1], [-3,-1], [-2, 0], [-3, 0]]
-
-    return ''.join([get_masked_value(x + offset[0], y + offset[1]) for offset in reversed(indizes)])
-
-
-encoding = blackWhiteValue(data[20][20] + data[19][20] + data[20][19] + data[19][19])
-print("Encoding:", encoding)
-# Alphanumeric? 11 bits per 2 character
-
-# for y in range(tiles):
-#     print(''.join(data[y]))
-
-block1 = read_block(20, 14, "UP")
-block2 = read_block(20, 10, "LEFT")
-print(block1, len(block1))
-print(block2, len(block2))

+ 0 - 0
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/punch_card_decoded.txt


File diff suppressed because it is too large
+ 0 - 0
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/CCDA


BIN
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/CCDA.zlib


+ 0 - 0
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/Final_easy.zip → Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/Final_easy.zip


+ 0 - 0
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/QR3C.png → Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/QR3C.png


BIN
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/QR3C_cropped.png


BIN
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/QR3C_cropped_fixed.png


+ 16 - 5
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/Santa.txt → Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/Santa.txt

@@ -7,13 +7,24 @@ However, his team's memory capacity is limited and so he can only use
 their names (Dasher, Dancer, Prancer, Vixen, Comet, Cupid, Donder and
 Blitzen) as keys.
 
-
+Dasher
+Dancer
+Prancer
+Vixen
+Comet
+Cupid
+Donder
+Blitzen
 
 Where is the team headed to?
 
+ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
+
+
 STTYN YATLOEP DNEA ONBL TGNTO MHEHH EISTIARIB FHSRA LD IIONA NL HERUV LN17-PTAA-RTON-RDOE-MCTN-AHCO
-XXXXX XXXXXXX XXXX XXXX XXXXX XXXXX XXXXXXXXX XXXXX XX XXXXX XX XXXXX HV18-XXXX-XXXX-XXXX-XXXX-XXXX
-DDPVCCDB
 
-L -> H
-N -> V
+                                                                      -4 +8 +0 +1
+                                                                       6  I  A  B
+                                                                       W  I  A  B
+                                                                       5  H  9  A
+                                                                      -0100 +1000 +0000 +0001

+ 0 - 0
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/decode.py → Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/decode.py


+ 147 - 0
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/decode_qr.py

@@ -0,0 +1,147 @@
+#!/usr/bin/python
+
+from PIL import Image
+
+def invert(value):
+    return ''.join(["1" if x == "0" else "0" for x in value])
+
+
+# Load Image
+im = Image.open('QR3C_cropped.png')
+pix = im.load()
+
+tiles = 21
+tileSize = im.size[0] // tiles
+version = (tiles - 17) // 4
+print("tiles=%d tileSize=%d version=%d" % (tiles, tileSize, version))
+
+# Data Array
+data = [[0 for x in range(tiles)] for y in range(tiles)]
+
+# Fill data
+# Black -> 111
+# White -> 000
+# Blue  -> 110 ...
+for y in range(tiles):
+    for x in range(tiles):
+        x_mid = x * tileSize + 0.5 * tileSize
+        y_mid = y * tileSize + 0.5 * tileSize
+        color = pix[x_mid, y_mid]
+        data[x][y] = invert("%d%d%d" %  ( color[0] // 255, color[1] // 255, color[2] // 255 ))
+
+def blackWhiteValue(string):
+    new_value = ""
+    if len(string) % 3 != 0:
+        print("Cannot return black white value of", string)
+        return new_value
+
+    for i in range(len(string) // 3):
+        new_value += string[i * 3]
+
+    return new_value
+
+mask1 = [data[8][18], data[8][17], data[8][16]]
+mask2 = [data[2][8], data[3][8], data[4][8]]
+if mask1 != mask2:
+    print("masks do not match")
+    exit()
+
+mask = [''.join(mask1[i][j] for i in range(3)) for j in range(3)]
+print("Mask:", mask)
+
+def apply_mask(x, y, bit, mask):
+    doInvert = False
+    if mask == "111":
+        doInvert = x % 3 == 0
+    elif mask == "110":
+        doInvert = (x + y) % 3 == 0
+    elif mask == "101":
+        doInvert = (x + y) % 2 == 0
+    elif mask == "100":
+        doInvert = y % 2 == 0
+    elif mask == "000":
+        doInvert = ((x*y) % 2) + ((x + y) % 3) == 0
+
+    return invert(bit) if doInvert else bit
+
+def get_masked_value(x, y):
+    return ''.join([apply_mask(x, y, data[x][y][i], mask[i]) for i in range(3)])
+
+def read_block(x, y, orientation):
+    indizes = []
+    if orientation == "UP":
+        indizes = [[0,0], [-1,0], [0,-1], [-1,-1], [0,-2], [-1,-2], [0, -3], [-1, -3]]
+    elif orientation == "LEFT_TOP":
+        indizes = [[0,0], [-1,0], [0,-1], [-1,-1], [-2,-1], [-3,-1], [-2, 0], [-3, 0]]
+    elif orientation == "DOWN":
+        indizes = [[0,0], [-1,0], [0,1], [-1,1], [0,2], [-1,2], [0, 3], [-1, 3]]
+    elif orientation == "LEFT_BOTTOM":
+        indizes = [[0,0], [-1,0], [0,1], [-1,1], [-2,1], [-3,1], [-2, 0], [-3, 0]]
+
+    return (''.join([get_masked_value(x + offset[0], y + offset[1]) for offset in indizes]))
+
+def map_alphanumeric(x):
+    if x < 10:
+        return chr(ord('0') + x)
+    elif x < 36:
+        return chr(ord('A') + x - 10)
+    else:
+        special = { 36: " ", 37: "$", 38: "%", 39: "*", 40: "+", 41: "-", 42: ".", 43: "/", 44: ":" }
+        if x in special:
+            return special[x]
+        else:
+            print("unknown special character:", x)
+            return "?"
+
+def decode_alphanumeric(x):
+    a = x // 45
+    b = x % 45
+    return map_alphanumeric(a) + map_alphanumeric(b)
+
+encoding = blackWhiteValue(data[20][20] + data[19][20] + data[20][19] + data[19][19])
+# encoding = data[20][20] + data[19][20] + data[20][19] + data[19][19]
+# encoding = [get_masked_value(20, 20), get_masked_value(19, 20), get_masked_value(20, 19), get_masked_value(19, 19)]
+print("Encoding:", encoding)
+
+len_block = read_block(20, 18, "UP")
+print("Length:", int(len_block, 2))
+
+# 19 Blocks
+
+blocks = ''.join([
+    read_block(20, 14, "UP"),
+    read_block(20, 10, "LEFT_TOP"),
+    read_block(18, 11, "DOWN"),
+    read_block(18, 15, "DOWN"),
+    read_block(18, 19, "LEFT_BOTTOM"),
+    read_block(16, 18, "UP"),
+    read_block(16, 14, "UP"),
+    read_block(16, 10, "LEFT_TOP"),
+    read_block(14, 11, "DOWN"),
+    read_block(14, 15, "DOWN")
+])
+
+channels = ["", "", ""]
+
+blockSize = 3
+for i in range(len(blocks) // blockSize):
+    channels[0] += blocks[i*3]
+    channels[1] += blocks[i*3+1]
+    channels[2] += blocks[i*3+2]
+
+    # chunk = int(blocks[blockSize*i:blockSize*i+blockSize],2)
+    # string += chr(chunk)
+    # string += decode_alphanumeric(chunk)
+
+line = ""
+for c in channels:
+    for i in range(len(c) // 8):
+        line += chr(int(c[i*8:i*8+8], 2))
+print(line)
+
+# print(len(blocks) /8)
+# print(''.join(blocks))
+
+
+# for x in range(tiles):
+#     print(''.join(data[x]))

+ 0 - 0
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/old_school.jpg → Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/old_school.jpg


+ 0 - 0
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/punch_card_decoder.py → Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/punch_card_decoder.py


+ 0 - 0
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/teaser.pls → Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/teaser.pls


+ 0 - 0
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/teaser_unwrapped.tls → Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/teaser_unwrapped.tls


+ 0 - 0
Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/39A25/z.zip → Teaser/_ZOoxjUSe1OVB7OPoVrsX.pdf.extracted/z.zip


+ 0 - 1
Teaser/passphrase.txt

@@ -1 +0,0 @@
-ZOoxjUSe1OVB7OPoVrsX.pdf

Some files were not shown because too many files changed in this diff