diff --git a/.gitignore b/.gitignore index 6296f20..b5feeb5 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,4 @@ bin/ build/ cache/ target/ - +packages/forensics diff --git a/Makefile b/Makefile index 19afd28..24dd97e 100644 --- a/Makefile +++ b/Makefile @@ -13,6 +13,13 @@ BIN = bin all: packages +dist: ctf-install.zip +ctf-install.zip: packages.zip bzImage rootfs.squashfs /usr/lib/syslinux/mbr.bin + zip --junk-paths $@ packages.zip bzImage rootfs.squashfs /usr/lib/syslinux/mbr.bin install.sh + +packages.zip: packages + zip --junk-paths $@ bin/*.pkg + clean: packages-clean rm -rf $(BUILD) $(TARGET) $(BIN) diff --git a/doc/2011-02-UNM/state/points.log b/doc/2011-02-UNM/state/points.log new file mode 100644 index 0000000..e9cd4e9 --- /dev/null +++ b/doc/2011-02-UNM/state/points.log @@ -0,0 +1,4666 @@ +1297537295 c206e4c6 sequence 1 +1297537525 3c7f310c sequence 1 +1297537598 3c7f310c sequence 2 +1297537715 a8d58590 sequence 1 +1297537768 a8d58590 sequence 2 +1297537835 a8d58590 sequence 8 +1297537854 a8d58590 sequence 16 +1297537906 c206e4c6 sequence 2 +1297537950 c206e4c6 sequence 8 +1297538142 3c7f310c sequence 8 +1297538175 c206e4c6 sequence 19 +1297538210 c206e4c6 sequence 25 +1297538262 c206e4c6 sequence 35 +1297538280 3c7f310c sequence 16 +1297538288 3c7f310c sequence 35 +1297538316 3c7f310c sequence 19 +1297538348 3c7f310c sequence 25 +1297538519 a8d58590 sequence 25 +1297538539 a8d58590 sequence 35 +1297538664 c206e4c6 sequence 50 +1297538719 a8d58590 sequence 19 +1297538807 3c7f310c steg 10 +1297539035 a8d58590 sequence 50 +1297539140 3c7f310c pwnables 1 +1297539251 a8d58590 sequence 100 +1297539310 3c7f310c pwnables 1 +1297539338 3c7f310c pwnables 1 +1297539387 3c7f310c pwnables 1 +1297539639 3c7f310c pwnables 1 +1297539793 f0cfd260 sequence 1 +1297539882 f0cfd260 sequence 2 +1297539985 3c7f310c steg 20 +1297540149 a8d58590 steg 10 +1297540331 3c7f310c pwnables 1 +1297540343 3c7f310c sequence 100 +1297540489 f0cfd260 sequence 8 +1297540594 3c7f310c steg 30 +1297540677 f0cfd260 sequence 16 +1297541212 3c7f310c pwnables 1 +1297541236 3c7f310c sequence 50 +1297541397 3c7f310c sequence 200 +1297541414 3c7f310c pwnables 1 +1297541481 a8d58590 steg 20 +1297541535 3c7f310c pwnables 1 +1297541703 c206e4c6 sequence 200 +1297541798 f0cfd260 sequence 19 +1297541919 f0cfd260 sequence 25 +1297542092 f0cfd260 sequence 35 +1297542102 c206e4c6 sequence 16 +1297542493 c206e4c6 steg 20 +1297542828 a8d58590 steg 30 +1297542860 a8d58590 pwnables 1 +1297543396 a8d58590 pwnables 1 +1297543545 a8d58590 pwnables 1 +1297543560 a8d58590 pwnables 1 +1297543574 a8d58590 pwnables 1 +1297543592 a8d58590 pwnables 1 +1297543627 a8d58590 pwnables 1 +1297543664 a8d58590 pwnables 1 +1297543677 a8d58590 pwnables 1 +1297543695 a8d58590 pwnables 1 +1297543705 a8d58590 pwnables 1 +1297543792 f0cfd260 sequence 100 +1297544154 c206e4c6 sequence 400 +1297544466 a8d58590 pwnables 1 +1297544468 3c7f310c sequence 400 +1297544568 a8d58590 pwnables 1 +1297544616 3c7f310c sequence 450 +1297544741 a8d58590 sequence 400 +1297545082 3c7f310c pwnables 1 +1297545198 3c7f310c pwnables 1 +1297545290 3c7f310c pwnables 1 +1297545337 3c7f310c sequence 300 +1297545375 c206e4c6 steg 10 +1297545427 a8d58590 sequence 300 +1297545979 3c7f310c pwnables 1 +1297546358 a8d58590 pwnables 1 +1297546358 a8d58590 pwnables 1 +1297546358 a8d58590 pwnables 1 +1297546359 a8d58590 pwnables 1 +1297546360 a8d58590 pwnables 1 +1297546361 a8d58590 pwnables 1 +1297546361 a8d58590 pwnables 1 +1297546362 a8d58590 pwnables 1 +1297546362 a8d58590 pwnables 1 +1297546363 a8d58590 pwnables 1 +1297546363 a8d58590 pwnables 1 +1297546363 a8d58590 pwnables 1 +1297546364 a8d58590 pwnables 1 +1297546364 a8d58590 pwnables 1 +1297546364 a8d58590 pwnables 1 +1297546365 a8d58590 pwnables 1 +1297546365 a8d58590 pwnables 1 +1297546366 a8d58590 pwnables 1 +1297546367 a8d58590 pwnables 1 +1297546367 a8d58590 pwnables 1 +1297546368 a8d58590 pwnables 1 +1297546369 a8d58590 pwnables 1 +1297546370 a8d58590 pwnables 1 +1297546370 a8d58590 pwnables 1 +1297546371 a8d58590 pwnables 1 +1297546372 a8d58590 pwnables 1 +1297546372 a8d58590 pwnables 1 +1297546373 a8d58590 pwnables 1 +1297546373 a8d58590 pwnables 1 +1297546373 a8d58590 pwnables 1 +1297546374 a8d58590 pwnables 1 +1297546375 a8d58590 pwnables 1 +1297546376 a8d58590 pwnables 1 +1297546378 a8d58590 pwnables 1 +1297546379 a8d58590 pwnables 1 +1297546379 a8d58590 pwnables 1 +1297546380 a8d58590 pwnables 1 +1297546489 c206e4c6 tanks 1 +1297546514 a8d58590 tanks 1 +1297546514 3c7f310c tanks 1 +1297546514 f0cfd260 tanks 1 +1297546515 c206e4c6 tanks 1 +1297546517 f0cfd260 tanks 1 +1297546518 c206e4c6 tanks 1 +1297546518 3c7f310c tanks 1 +1297546518 a8d58590 tanks 1 +1297546520 c206e4c6 tanks 1 +1297546541 f0cfd260 tanks 1 +1297546541 3c7f310c tanks 1 +1297546541 c206e4c6 tanks 1 +1297546541 a8d58590 tanks 1 +1297546564 3c7f310c pwnables 1 +1297546578 c206e4c6 tanks 1 +1297546591 c206e4c6 tanks 1 +1297546620 a8d58590 pwnables 1 +1297546620 a8d58590 pwnables 1 +1297546621 a8d58590 pwnables 1 +1297546622 a8d58590 pwnables 1 +1297546624 a8d58590 pwnables 1 +1297546625 a8d58590 pwnables 1 +1297546626 a8d58590 pwnables 1 +1297546627 a8d58590 pwnables 1 +1297546629 a8d58590 pwnables 1 +1297546629 a8d58590 pwnables 1 +1297546631 a8d58590 pwnables 1 +1297546632 a8d58590 pwnables 1 +1297546634 a8d58590 pwnables 1 +1297546635 a8d58590 pwnables 1 +1297546636 a8d58590 pwnables 1 +1297546637 a8d58590 pwnables 1 +1297546638 a8d58590 pwnables 1 +1297546640 a8d58590 pwnables 1 +1297546641 a8d58590 pwnables 1 +1297546642 a8d58590 pwnables 1 +1297546643 a8d58590 pwnables 1 +1297546645 a8d58590 pwnables 1 +1297546646 a8d58590 pwnables 1 +1297546647 a8d58590 pwnables 1 +1297546649 a8d58590 pwnables 1 +1297546649 a8d58590 pwnables 1 +1297546649 a8d58590 pwnables 1 +1297546650 a8d58590 pwnables 1 +1297546652 a8d58590 pwnables 1 +1297546652 f0cfd260 tanks 1 +1297546653 c206e4c6 tanks 1 +1297546653 3c7f310c tanks 1 +1297546654 a8d58590 tanks 1 +1297546654 a8d58590 pwnables 1 +1297546657 a8d58590 pwnables 1 +1297546659 a8d58590 pwnables 1 +1297546662 a8d58590 pwnables 1 +1297546663 a8d58590 pwnables 1 +1297546665 a8d58590 pwnables 1 +1297546666 a8d58590 pwnables 1 +1297546667 a8d58590 pwnables 1 +1297546715 f0cfd260 tanks 1 +1297546715 c206e4c6 tanks 1 +1297546715 a8d58590 tanks 1 +1297546716 3c7f310c tanks 1 +1297546776 c206e4c6 tanks 1 +1297546776 3c7f310c tanks 1 +1297546776 a8d58590 tanks 1 +1297546777 f0cfd260 tanks 1 +1297546837 c206e4c6 tanks 1 +1297546837 3c7f310c tanks 1 +1297546837 a8d58590 tanks 1 +1297546838 f0cfd260 tanks 1 +1297546898 c206e4c6 tanks 1 +1297546958 c206e4c6 tanks 1 +1297546959 f0cfd260 tanks 1 +1297546959 a8d58590 tanks 1 +1297546959 3c7f310c tanks 1 +1297547020 c206e4c6 tanks 1 +1297547058 c206e4c6 tanks 1 +1297547070 3c7f310c pwnables 1 +1297547081 c206e4c6 tanks 1 +1297547215 c206e4c6 tanks 1 +1297547267 3c7f310c tanks -8 +1297547276 a8d58590 tanks -8 +1297547284 f0cfd260 tanks -8 +1297547291 c206e4c6 tanks 1 +1297547412 c206e4c6 tanks 1 +1297547653 c206e4c6 tanks 1 +1297547713 a8d58590 pwnables 1 +1297547713 3c7f310c tanks 1 +1297547714 a8d58590 pwnables 1 +1297547715 a8d58590 pwnables 1 +1297547716 a8d58590 pwnables 1 +1297547717 a8d58590 pwnables 1 +1297547719 a8d58590 pwnables 1 +1297547720 a8d58590 pwnables 1 +1297547722 a8d58590 pwnables 1 +1297547722 a8d58590 pwnables 1 +1297547724 a8d58590 pwnables 1 +1297547725 a8d58590 pwnables 1 +1297547726 a8d58590 pwnables 1 +1297547728 a8d58590 pwnables 1 +1297547728 a8d58590 pwnables 1 +1297547729 a8d58590 pwnables 1 +1297547731 a8d58590 pwnables 1 +1297547732 a8d58590 pwnables 1 +1297547733 a8d58590 pwnables 1 +1297547734 a8d58590 pwnables 1 +1297547735 a8d58590 pwnables 1 +1297547737 a8d58590 pwnables 1 +1297547737 a8d58590 pwnables 1 +1297547738 a8d58590 pwnables 1 +1297547739 a8d58590 pwnables 1 +1297547741 a8d58590 pwnables 1 +1297547742 a8d58590 pwnables 1 +1297547743 a8d58590 pwnables 1 +1297547743 a8d58590 pwnables 1 +1297547744 a8d58590 pwnables 1 +1297547744 a8d58590 pwnables 1 +1297547746 a8d58590 pwnables 1 +1297547747 a8d58590 pwnables 1 +1297547748 a8d58590 pwnables 1 +1297547749 a8d58590 pwnables 1 +1297547750 a8d58590 pwnables 1 +1297547752 a8d58590 pwnables 1 +1297547752 a8d58590 pwnables 1 +1297547753 a8d58590 pwnables 1 +1297547757 a8d58590 pwnables 1 +1297547759 a8d58590 pwnables 1 +1297547759 a8d58590 pwnables 1 +1297547760 a8d58590 pwnables 1 +1297547761 a8d58590 pwnables 1 +1297547762 a8d58590 pwnables 1 +1297547762 a8d58590 pwnables 1 +1297547763 a8d58590 pwnables 1 +1297547764 a8d58590 pwnables 1 +1297547764 a8d58590 pwnables 1 +1297547764 a8d58590 pwnables 1 +1297547765 a8d58590 pwnables 1 +1297547765 a8d58590 pwnables 1 +1297547765 a8d58590 pwnables 1 +1297547766 a8d58590 pwnables 1 +1297547766 a8d58590 pwnables 1 +1297547767 a8d58590 pwnables 1 +1297547767 a8d58590 pwnables 1 +1297547768 a8d58590 pwnables 1 +1297547774 3c7f310c tanks 1 +1297547802 a8d58590 sequence 450 +1297547834 c206e4c6 tanks 1 +1297547895 3c7f310c tanks 1 +1297547955 3c7f310c tanks 1 +1297548016 3c7f310c tanks 1 +1297548076 3c7f310c tanks 1 +1297548091 c206e4c6 steg 30 +1297548137 3c7f310c tanks 1 +1297548197 3c7f310c tanks 1 +1297548257 3c7f310c tanks 1 +1297548318 3c7f310c tanks 1 +1297548362 a8d58590 pwnables 1 +1297548362 a8d58590 pwnables 1 +1297548362 a8d58590 pwnables 1 +1297548362 a8d58590 pwnables 1 +1297548363 a8d58590 pwnables 1 +1297548363 a8d58590 pwnables 1 +1297548363 a8d58590 pwnables 1 +1297548364 a8d58590 pwnables 1 +1297548364 a8d58590 pwnables 1 +1297548365 a8d58590 pwnables 1 +1297548365 a8d58590 pwnables 1 +1297548366 a8d58590 pwnables 1 +1297548367 a8d58590 pwnables 1 +1297548367 a8d58590 pwnables 1 +1297548367 a8d58590 pwnables 1 +1297548368 a8d58590 pwnables 1 +1297548369 a8d58590 pwnables 1 +1297548370 a8d58590 pwnables 1 +1297548371 a8d58590 pwnables 1 +1297548372 a8d58590 pwnables 1 +1297548372 a8d58590 pwnables 1 +1297548373 a8d58590 pwnables 1 +1297548375 a8d58590 pwnables 1 +1297548375 a8d58590 pwnables 1 +1297548377 a8d58590 pwnables 1 +1297548377 a8d58590 pwnables 1 +1297548377 a8d58590 pwnables 1 +1297548378 a8d58590 pwnables 1 +1297548378 3c7f310c tanks 1 +1297548379 a8d58590 pwnables 1 +1297548379 a8d58590 pwnables 1 +1297548379 a8d58590 pwnables 1 +1297548380 a8d58590 pwnables 1 +1297548380 a8d58590 pwnables 1 +1297548381 a8d58590 pwnables 1 +1297548381 a8d58590 pwnables 1 +1297548382 a8d58590 pwnables 1 +1297548382 a8d58590 pwnables 1 +1297548383 a8d58590 pwnables 1 +1297548384 a8d58590 pwnables 1 +1297548384 a8d58590 pwnables 1 +1297548384 a8d58590 pwnables 1 +1297548385 a8d58590 pwnables 1 +1297548386 a8d58590 pwnables 1 +1297548386 a8d58590 pwnables 1 +1297548386 a8d58590 pwnables 1 +1297548387 a8d58590 pwnables 1 +1297548388 a8d58590 pwnables 1 +1297548389 a8d58590 pwnables 1 +1297548389 a8d58590 pwnables 1 +1297548391 a8d58590 pwnables 1 +1297548391 a8d58590 pwnables 1 +1297548439 3c7f310c tanks 1 +1297548559 c206e4c6 tanks 1 +1297548680 c206e4c6 tanks 1 +1297548741 3c7f310c tanks 1 +1297548784 3c7f310c steg 40 +1297548788 f0cfd260 steg 10 +1297548802 3c7f310c tanks 1 +1297548862 3c7f310c tanks 1 +1297548923 3c7f310c tanks 1 +1297548984 3c7f310c tanks 1 +1297549044 3c7f310c tanks 1 +1297549105 3c7f310c tanks 1 +1297549165 3c7f310c tanks 1 +1297549226 3c7f310c tanks 1 +1297549258 3c7f310c pwnables 1 +1297549286 c206e4c6 tanks 1 +1297549318 3c7f310c pwnables 1 +1297549347 c206e4c6 tanks 1 +1297549379 3c7f310c pwnables 1 +1297549408 3c7f310c tanks 1 +1297549442 3c7f310c pwnables 1 +1297549468 3c7f310c tanks 1 +1297549502 3c7f310c pwnables 1 +1297549529 c206e4c6 tanks 1 +1297549563 3c7f310c pwnables 1 +1297549599 c206e4c6 sequence 450 +1297549623 3c7f310c pwnables 1 +1297549650 3c7f310c tanks 1 +1297549689 a8d58590 sequence 200 +1297549693 3c7f310c pwnables 1 +1297549710 c206e4c6 tanks 1 +1297549753 3c7f310c pwnables 1 +1297549771 3c7f310c tanks 1 +1297549814 3c7f310c pwnables 1 +1297549875 3c7f310c pwnables 1 +1297549935 3c7f310c pwnables 1 +1297549952 c206e4c6 tanks 1 +1297549996 3c7f310c pwnables 1 +1297550013 c206e4c6 tanks 1 +1297550056 3c7f310c pwnables 1 +1297550074 3c7f310c tanks 1 +1297550117 3c7f310c pwnables 1 +1297550134 c206e4c6 tanks 1 +1297550177 3c7f310c pwnables 1 +1297550195 c206e4c6 tanks 1 +1297550238 3c7f310c pwnables 1 +1297550256 c206e4c6 tanks 1 +1297550299 3c7f310c pwnables 1 +1297550359 3c7f310c pwnables 1 +1297550377 c206e4c6 tanks 1 +1297550420 3c7f310c pwnables 1 +1297550437 c206e4c6 tanks 1 +1297550481 3c7f310c pwnables 1 +1297550498 c206e4c6 tanks 1 +1297550541 3c7f310c pwnables 1 +1297550559 c206e4c6 tanks 1 +1297550598 3c7f310c sequence 600 +1297550602 3c7f310c pwnables 1 +1297550620 c206e4c6 tanks 1 +1297550662 3c7f310c pwnables 1 +1297550741 3c7f310c tanks 1 +1297550783 3c7f310c pwnables 1 +1297550802 c206e4c6 tanks 1 +1297550802 c2b97292 sequence 1 +1297550843 3c7f310c pwnables 1 +1297550862 3c7f310c tanks 1 +1297550904 3c7f310c pwnables 1 +1297550923 c206e4c6 tanks 1 +1297550944 c2b97292 sequence 2 +1297550965 3c7f310c pwnables 1 +1297550983 3c7f310c tanks 1 +1297551035 3c7f310c pwnables 1 +1297551044 3c7f310c tanks 1 +1297551095 3c7f310c pwnables 1 +1297551106 3c7f310c tanks 1 +1297551156 3c7f310c pwnables 1 +1297551166 3c7f310c tanks 1 +1297551216 3c7f310c pwnables 1 +1297551227 c206e4c6 tanks 1 +1297551277 3c7f310c pwnables 1 +1297551288 3c7f310c tanks 1 +1297551338 3c7f310c pwnables 1 +1297551348 3c7f310c tanks 1 +1297551398 3c7f310c pwnables 1 +1297551409 c206e4c6 tanks 1 +1297551458 3c7f310c pwnables 1 +1297551471 c206e4c6 tanks 1 +1297551518 3c7f310c pwnables 1 +1297551579 3c7f310c pwnables 1 +1297551592 c206e4c6 tanks 1 +1297551640 3c7f310c pwnables 1 +1297551652 c206e4c6 tanks 1 +1297551700 3c7f310c pwnables 1 +1297551713 c206e4c6 tanks 1 +1297551761 3c7f310c pwnables 1 +1297551774 c206e4c6 tanks 1 +1297551821 3c7f310c pwnables 1 +1297551835 c206e4c6 tanks 1 +1297551882 3c7f310c pwnables 1 +1297551896 3c7f310c tanks 1 +1297551935 c2b97292 sequence 19 +1297551943 3c7f310c pwnables 1 +1297551957 c206e4c6 tanks 1 +1297552003 3c7f310c pwnables 1 +1297552008 c2b97292 sequence 25 +1297552017 c206e4c6 tanks 1 +1297552042 a8d58590 steg 50 +1297552063 3c7f310c pwnables 1 +1297552077 c2b97292 sequence 35 +1297552078 c206e4c6 tanks 1 +1297552124 3c7f310c pwnables 1 +1297552136 a8d58590 pwnables 1 +1297552136 a8d58590 pwnables 1 +1297552138 c2b97292 sequence 50 +1297552139 c206e4c6 tanks 1 +1297552139 a8d58590 pwnables 1 +1297552140 a8d58590 pwnables 1 +1297552143 a8d58590 pwnables 1 +1297552146 a8d58590 pwnables 1 +1297552148 a8d58590 pwnables 1 +1297552150 a8d58590 pwnables 1 +1297552152 a8d58590 pwnables 1 +1297552154 a8d58590 pwnables 1 +1297552157 a8d58590 pwnables 1 +1297552158 a8d58590 pwnables 1 +1297552159 a8d58590 pwnables 1 +1297552161 a8d58590 pwnables 1 +1297552163 a8d58590 pwnables 1 +1297552164 a8d58590 pwnables 1 +1297552165 a8d58590 pwnables 1 +1297552167 a8d58590 pwnables 1 +1297552171 a8d58590 pwnables 1 +1297552171 a8d58590 pwnables 1 +1297552173 a8d58590 pwnables 1 +1297552184 3c7f310c pwnables 1 +1297552245 3c7f310c pwnables 1 +1297552261 c206e4c6 tanks 1 +1297552281 3c7f310c sequence 700 +1297552305 3c7f310c pwnables 1 +1297552322 c206e4c6 tanks 1 +1297552360 c2b97292 sequence 200 +1297552365 a8d58590 pwnables 1 +1297552366 3c7f310c pwnables 1 +1297552367 a8d58590 pwnables 1 +1297552370 a8d58590 pwnables 1 +1297552371 a8d58590 pwnables 1 +1297552371 a8d58590 pwnables 1 +1297552373 a8d58590 pwnables 1 +1297552374 a8d58590 pwnables 1 +1297552376 a8d58590 pwnables 1 +1297552378 a8d58590 pwnables 1 +1297552380 a8d58590 pwnables 1 +1297552382 a8d58590 pwnables 1 +1297552384 a8d58590 pwnables 1 +1297552386 a8d58590 pwnables 1 +1297552388 a8d58590 pwnables 1 +1297552389 a8d58590 pwnables 1 +1297552393 a8d58590 pwnables 1 +1297552394 a8d58590 pwnables 1 +1297552394 a8d58590 pwnables 1 +1297552396 a8d58590 pwnables 1 +1297552398 a8d58590 pwnables 1 +1297552401 a8d58590 pwnables 1 +1297552406 a8d58590 pwnables 1 +1297552410 a8d58590 pwnables 1 +1297552414 a8d58590 pwnables 1 +1297552417 a8d58590 pwnables 1 +1297552421 a8d58590 pwnables 1 +1297552422 a8d58590 pwnables 1 +1297552423 a8d58590 pwnables 1 +1297552427 a8d58590 pwnables 1 +1297552427 3c7f310c pwnables 1 +1297552428 a8d58590 pwnables 1 +1297552430 a8d58590 pwnables 1 +1297552433 a8d58590 pwnables 1 +1297552434 a8d58590 pwnables 1 +1297552435 a8d58590 pwnables 1 +1297552437 a8d58590 pwnables 1 +1297552440 a8d58590 pwnables 1 +1297552442 a8d58590 pwnables 1 +1297552443 a8d58590 pwnables 1 +1297552444 a8d58590 pwnables 1 +1297552446 a8d58590 pwnables 1 +1297552450 a8d58590 pwnables 1 +1297552450 a8d58590 pwnables 1 +1297552452 a8d58590 pwnables 1 +1297552454 a8d58590 pwnables 1 +1297552456 a8d58590 pwnables 1 +1297552458 a8d58590 pwnables 1 +1297552460 a8d58590 pwnables 1 +1297552462 a8d58590 pwnables 1 +1297552464 a8d58590 pwnables 1 +1297552488 3c7f310c pwnables 1 +1297552503 3c7f310c tanks 1 +1297552549 3c7f310c pwnables 1 +1297552564 3c7f310c tanks 1 +1297552609 3c7f310c pwnables 1 +1297552624 c206e4c6 tanks 1 +1297552670 3c7f310c pwnables 1 +1297552684 3c7f310c tanks 1 +1297552730 3c7f310c pwnables 1 +1297552745 c206e4c6 tanks 1 +1297552790 3c7f310c pwnables 1 +1297552851 3c7f310c pwnables 1 +1297552866 c206e4c6 tanks 1 +1297552911 3c7f310c pwnables 1 +1297552927 c206e4c6 tanks 1 +1297552940 a8d58590 pwnables 1 +1297552941 a8d58590 pwnables 1 +1297552941 a8d58590 pwnables 1 +1297552943 a8d58590 pwnables 1 +1297552950 a8d58590 pwnables 1 +1297552950 a8d58590 pwnables 1 +1297552954 a8d58590 pwnables 1 +1297552956 a8d58590 pwnables 1 +1297552958 a8d58590 pwnables 1 +1297552961 a8d58590 pwnables 1 +1297552962 a8d58590 pwnables 1 +1297552964 a8d58590 pwnables 1 +1297552967 a8d58590 pwnables 1 +1297552967 a8d58590 pwnables 1 +1297552970 a8d58590 pwnables 1 +1297552972 3c7f310c pwnables 1 +1297552973 a8d58590 pwnables 1 +1297552973 a8d58590 pwnables 1 +1297552973 a8d58590 pwnables 1 +1297552974 a8d58590 pwnables 1 +1297552975 a8d58590 pwnables 1 +1297552976 a8d58590 pwnables 1 +1297552979 a8d58590 pwnables 1 +1297552981 a8d58590 pwnables 1 +1297552982 a8d58590 pwnables 1 +1297552984 a8d58590 pwnables 1 +1297552985 a8d58590 pwnables 1 +1297552986 a8d58590 pwnables 1 +1297552988 a8d58590 pwnables 1 +1297552989 a8d58590 pwnables 1 +1297552991 a8d58590 pwnables 1 +1297552992 a8d58590 pwnables 1 +1297552992 a8d58590 pwnables 1 +1297552993 a8d58590 pwnables 1 +1297552993 a8d58590 pwnables 1 +1297552994 a8d58590 pwnables 1 +1297552996 a8d58590 pwnables 1 +1297552997 a8d58590 pwnables 1 +1297552998 a8d58590 pwnables 1 +1297553000 a8d58590 pwnables 1 +1297553002 a8d58590 pwnables 1 +1297553002 a8d58590 pwnables 1 +1297553004 a8d58590 pwnables 1 +1297553006 a8d58590 pwnables 1 +1297553007 a8d58590 pwnables 1 +1297553033 3c7f310c pwnables 1 +1297553048 c206e4c6 tanks 1 +1297553084 3c7f310c pwnables 1 +1297553124 3c7f310c pwnables 1 +1297553151 3c7f310c pwnables 1 +1297553168 c206e4c6 tanks 1 +1297553182 3c7f310c pwnables 1 +1297553245 3c7f310c pwnables 1 +1297553255 3c7f310c pwnables 1 +1297553266 3c7f310c pwnables 1 +1297553276 3c7f310c pwnables 1 +1297553287 3c7f310c pwnables 1 +1297553289 c206e4c6 tanks 1 +1297553298 3c7f310c pwnables 1 +1297553308 3c7f310c pwnables 1 +1297553318 3c7f310c pwnables 1 +1297553329 3c7f310c pwnables 1 +1297553339 3c7f310c pwnables 1 +1297553350 3c7f310c tanks 1 +1297553350 3c7f310c pwnables 1 +1297553361 3c7f310c pwnables 1 +1297553371 3c7f310c pwnables 1 +1297553382 3c7f310c pwnables 1 +1297553392 3c7f310c pwnables 1 +1297553401 c2b97292 sequence 8 +1297553403 3c7f310c pwnables 1 +1297553411 c206e4c6 tanks 1 +1297553413 3c7f310c pwnables 1 +1297553424 3c7f310c pwnables 1 +1297553434 3c7f310c pwnables 1 +1297553445 3c7f310c pwnables 1 +1297553455 3c7f310c pwnables 1 +1297553464 c2b97292 sequence 16 +1297553466 3c7f310c pwnables 1 +1297553471 3c7f310c tanks 1 +1297553476 3c7f310c pwnables 1 +1297553487 3c7f310c pwnables 1 +1297553498 3c7f310c pwnables 1 +1297553508 3c7f310c pwnables 1 +1297553519 3c7f310c pwnables 1 +1297553529 3c7f310c pwnables 1 +1297553532 3c7f310c tanks 1 +1297553540 3c7f310c pwnables 1 +1297553550 3c7f310c pwnables 1 +1297553561 3c7f310c pwnables 1 +1297553571 3c7f310c pwnables 1 +1297553582 3c7f310c pwnables 1 +1297553593 c206e4c6 tanks 1 +1297553593 3c7f310c pwnables 1 +1297553603 3c7f310c pwnables 1 +1297553613 3c7f310c pwnables 1 +1297553623 3c7f310c pwnables 1 +1297553634 3c7f310c pwnables 1 +1297553644 3c7f310c pwnables 1 +1297553653 c206e4c6 tanks 1 +1297553655 3c7f310c pwnables 1 +1297553665 3c7f310c pwnables 1 +1297553676 3c7f310c pwnables 1 +1297553686 3c7f310c pwnables 1 +1297553695 c206e4c6 steg 50 +1297553697 3c7f310c pwnables 1 +1297553707 3c7f310c pwnables 1 +1297553714 3c7f310c tanks 1 +1297553718 3c7f310c pwnables 1 +1297553728 3c7f310c pwnables 1 +1297553739 3c7f310c pwnables 1 +1297553751 3c7f310c pwnables 1 +1297553762 3c7f310c pwnables 1 +1297553772 3c7f310c pwnables 1 +1297553774 c206e4c6 tanks 1 +1297553783 3c7f310c pwnables 1 +1297553793 3c7f310c pwnables 1 +1297553804 3c7f310c pwnables 1 +1297553814 3c7f310c pwnables 1 +1297553825 3c7f310c pwnables 1 +1297553835 3c7f310c tanks 1 +1297553836 3c7f310c pwnables 1 +1297553846 3c7f310c pwnables 1 +1297553857 3c7f310c pwnables 1 +1297553867 3c7f310c pwnables 1 +1297553878 3c7f310c pwnables 1 +1297553888 3c7f310c pwnables 1 +1297553896 3c7f310c tanks 1 +1297553899 3c7f310c pwnables 1 +1297553909 3c7f310c pwnables 1 +1297553920 3c7f310c pwnables 1 +1297553930 3c7f310c pwnables 1 +1297553941 3c7f310c pwnables 1 +1297553951 3c7f310c pwnables 1 +1297553957 c206e4c6 tanks 1 +1297553961 3c7f310c pwnables 1 +1297553971 3c7f310c pwnables 1 +1297553981 3c7f310c pwnables 1 +1297553991 3c7f310c pwnables 1 +1297554001 3c7f310c pwnables 1 +1297554011 3c7f310c pwnables 1 +1297554017 c206e4c6 tanks 1 +1297554022 3c7f310c pwnables 1 +1297554032 3c7f310c pwnables 1 +1297554043 3c7f310c pwnables 1 +1297554053 3c7f310c pwnables 1 +1297554064 3c7f310c pwnables 1 +1297554074 3c7f310c pwnables 1 +1297554078 3c7f310c tanks 1 +1297554085 3c7f310c pwnables 1 +1297554095 3c7f310c pwnables 1 +1297554106 3c7f310c pwnables 1 +1297554116 3c7f310c pwnables 1 +1297554127 3c7f310c pwnables 1 +1297554137 3c7f310c pwnables 1 +1297554138 c206e4c6 tanks 1 +1297554148 3c7f310c pwnables 1 +1297554158 3c7f310c pwnables 1 +1297554170 3c7f310c pwnables 1 +1297554181 3c7f310c pwnables 1 +1297554191 3c7f310c pwnables 1 +1297554199 3c7f310c tanks 1 +1297554202 3c7f310c pwnables 1 +1297554212 3c7f310c pwnables 1 +1297554223 3c7f310c pwnables 1 +1297554234 3c7f310c pwnables 1 +1297554244 3c7f310c pwnables 1 +1297554255 3c7f310c pwnables 1 +1297554265 3c7f310c pwnables 1 +1297554276 3c7f310c pwnables 1 +1297554286 3c7f310c pwnables 1 +1297554296 3c7f310c pwnables 1 +1297554307 3c7f310c pwnables 1 +1297554317 3c7f310c pwnables 1 +1297554319 c206e4c6 tanks 1 +1297554328 3c7f310c pwnables 1 +1297554338 3c7f310c pwnables 1 +1297554349 3c7f310c pwnables 1 +1297554360 3c7f310c pwnables 1 +1297554370 3c7f310c pwnables 1 +1297554380 3c7f310c pwnables 1 +1297554380 3c7f310c tanks 1 +1297554390 3c7f310c pwnables 1 +1297554401 3c7f310c pwnables 1 +1297554411 3c7f310c pwnables 1 +1297554422 3c7f310c pwnables 1 +1297554433 3c7f310c pwnables 1 +1297554440 3c7f310c tanks 1 +1297554443 3c7f310c pwnables 1 +1297554454 3c7f310c pwnables 1 +1297554457 a8d58590 pwnables 1 +1297554460 a8d58590 pwnables 1 +1297554460 a8d58590 pwnables 1 +1297554461 a8d58590 pwnables 1 +1297554463 a8d58590 pwnables 1 +1297554464 a8d58590 pwnables 1 +1297554464 a8d58590 pwnables 1 +1297554465 3c7f310c pwnables 1 +1297554465 a8d58590 pwnables 1 +1297554466 a8d58590 pwnables 1 +1297554468 a8d58590 pwnables 1 +1297554469 a8d58590 pwnables 1 +1297554470 a8d58590 pwnables 1 +1297554472 a8d58590 pwnables 1 +1297554473 a8d58590 pwnables 1 +1297554473 a8d58590 pwnables 1 +1297554474 a8d58590 pwnables 1 +1297554475 a8d58590 pwnables 1 +1297554476 3c7f310c pwnables 1 +1297554478 a8d58590 pwnables 1 +1297554478 a8d58590 pwnables 1 +1297554479 a8d58590 pwnables 1 +1297554481 a8d58590 pwnables 1 +1297554482 a8d58590 pwnables 1 +1297554483 a8d58590 pwnables 1 +1297554485 a8d58590 pwnables 1 +1297554486 3c7f310c pwnables 1 +1297554489 a8d58590 pwnables 1 +1297554489 a8d58590 pwnables 1 +1297554492 a8d58590 pwnables 1 +1297554495 a8d58590 pwnables 1 +1297554498 3c7f310c pwnables 1 +1297554499 a8d58590 pwnables 1 +1297554500 a8d58590 pwnables 1 +1297554502 c206e4c6 tanks 1 +1297554503 a8d58590 pwnables 1 +1297554504 a8d58590 pwnables 1 +1297554506 a8d58590 pwnables 1 +1297554506 a8d58590 pwnables 1 +1297554507 a8d58590 pwnables 1 +1297554508 a8d58590 pwnables 1 +1297554509 3c7f310c pwnables 1 +1297554509 a8d58590 pwnables 1 +1297554510 a8d58590 pwnables 1 +1297554511 a8d58590 pwnables 1 +1297554515 a8d58590 pwnables 1 +1297554515 a8d58590 pwnables 1 +1297554517 a8d58590 pwnables 1 +1297554519 3c7f310c pwnables 1 +1297554530 3c7f310c pwnables 1 +1297554540 3c7f310c pwnables 1 +1297554551 3c7f310c pwnables 1 +1297554561 3c7f310c pwnables 1 +1297554572 3c7f310c pwnables 1 +1297554582 3c7f310c pwnables 1 +1297554592 3c7f310c pwnables 1 +1297554602 3c7f310c pwnables 1 +1297554613 3c7f310c pwnables 1 +1297554623 c206e4c6 tanks 1 +1297554623 3c7f310c pwnables 1 +1297554634 3c7f310c pwnables 1 +1297554644 3c7f310c pwnables 1 +1297554654 3c7f310c pwnables 1 +1297554665 3c7f310c pwnables 1 +1297554676 3c7f310c pwnables 1 +1297554683 3c7f310c tanks 1 +1297554687 3c7f310c pwnables 1 +1297554697 3c7f310c pwnables 1 +1297554708 3c7f310c pwnables 1 +1297554718 3c7f310c pwnables 1 +1297554729 3c7f310c pwnables 1 +1297554740 3c7f310c pwnables 1 +1297554750 3c7f310c pwnables 1 +1297554761 3c7f310c pwnables 1 +1297554771 3c7f310c pwnables 1 +1297554782 3c7f310c pwnables 1 +1297554792 3c7f310c pwnables 1 +1297554803 3c7f310c pwnables 1 +1297554804 3c7f310c tanks 1 +1297554813 3c7f310c pwnables 1 +1297554824 3c7f310c pwnables 1 +1297554835 3c7f310c pwnables 1 +1297554845 3c7f310c pwnables 1 +1297554856 3c7f310c pwnables 1 +1297554864 c206e4c6 tanks 1 +1297554866 3c7f310c pwnables 1 +1297554877 3c7f310c pwnables 1 +1297554887 3c7f310c pwnables 1 +1297554898 3c7f310c pwnables 1 +1297554909 3c7f310c pwnables 1 +1297554919 3c7f310c pwnables 1 +1297554925 c206e4c6 tanks 1 +1297554930 3c7f310c pwnables 1 +1297554940 3c7f310c pwnables 1 +1297554951 3c7f310c pwnables 1 +1297554961 3c7f310c pwnables 1 +1297554971 3c7f310c pwnables 1 +1297554981 3c7f310c pwnables 1 +1297554992 3c7f310c pwnables 1 +1297555003 3c7f310c pwnables 1 +1297555013 3c7f310c pwnables 1 +1297555024 3c7f310c pwnables 1 +1297555034 3c7f310c pwnables 1 +1297555044 3c7f310c pwnables 1 +1297555045 c206e4c6 tanks 1 +1297555054 3c7f310c pwnables 1 +1297555064 3c7f310c pwnables 1 +1297555074 3c7f310c pwnables 1 +1297555085 3c7f310c pwnables 1 +1297555096 3c7f310c pwnables 1 +1297555107 3c7f310c pwnables 1 +1297555117 3c7f310c pwnables 1 +1297555128 3c7f310c pwnables 1 +1297555138 3c7f310c pwnables 1 +1297555149 3c7f310c pwnables 1 +1297555159 3c7f310c pwnables 1 +1297555171 3c7f310c pwnables 1 +1297555182 3c7f310c pwnables 1 +1297555192 3c7f310c pwnables 1 +1297555203 3c7f310c pwnables 1 +1297555213 3c7f310c pwnables 1 +1297555224 3c7f310c pwnables 1 +1297555226 3c7f310c tanks 1 +1297555234 3c7f310c pwnables 1 +1297555245 3c7f310c pwnables 1 +1297555255 3c7f310c pwnables 1 +1297555266 3c7f310c pwnables 1 +1297555276 3c7f310c pwnables 1 +1297555286 3c7f310c pwnables 1 +1297555287 c206e4c6 tanks 1 +1297555297 3c7f310c pwnables 1 +1297555308 3c7f310c pwnables 1 +1297555318 3c7f310c pwnables 1 +1297555329 3c7f310c pwnables 1 +1297555339 3c7f310c pwnables 1 +1297555347 c206e4c6 tanks 1 +1297555350 3c7f310c pwnables 1 +1297555360 3c7f310c pwnables 1 +1297555371 3c7f310c pwnables 1 +1297555381 3c7f310c pwnables 1 +1297555392 3c7f310c pwnables 1 +1297555402 3c7f310c pwnables 1 +1297555408 c206e4c6 tanks 1 +1297555413 3c7f310c pwnables 1 +1297555423 3c7f310c pwnables 1 +1297555434 3c7f310c pwnables 1 +1297555445 3c7f310c pwnables 1 +1297555455 3c7f310c pwnables 1 +1297555466 3c7f310c pwnables 1 +1297555468 3c7f310c tanks 1 +1297555476 3c7f310c pwnables 1 +1297555487 3c7f310c pwnables 1 +1297555497 3c7f310c pwnables 1 +1297555508 3c7f310c pwnables 1 +1297555519 3c7f310c pwnables 1 +1297555529 c206e4c6 tanks 1 +1297555529 3c7f310c pwnables 1 +1297555540 3c7f310c pwnables 1 +1297555550 3c7f310c pwnables 1 +1297555561 3c7f310c pwnables 1 +1297555572 3c7f310c pwnables 1 +1297555582 3c7f310c pwnables 1 +1297555589 c206e4c6 tanks 1 +1297555592 3c7f310c pwnables 1 +1297555602 3c7f310c pwnables 1 +1297555613 3c7f310c pwnables 1 +1297555623 3c7f310c pwnables 1 +1297555634 3c7f310c pwnables 1 +1297555645 3c7f310c pwnables 1 +1297555651 c206e4c6 tanks 1 +1297555655 3c7f310c pwnables 1 +1297555666 3c7f310c pwnables 1 +1297555676 3c7f310c pwnables 1 +1297555687 3c7f310c pwnables 1 +1297555697 3c7f310c pwnables 1 +1297555708 3c7f310c pwnables 1 +1297555719 3c7f310c pwnables 1 +1297555729 3c7f310c pwnables 1 +1297555740 3c7f310c pwnables 1 +1297555750 3c7f310c pwnables 1 +1297555761 3c7f310c pwnables 1 +1297555771 3c7f310c pwnables 1 +1297555772 3c7f310c tanks 1 +1297555782 3c7f310c pwnables 1 +1297555793 3c7f310c pwnables 1 +1297555813 3c7f310c pwnables 1 +1297555816 c2b97292 sequence 400 +1297555824 3c7f310c pwnables 1 +1297555832 c206e4c6 tanks 1 +1297555835 3c7f310c pwnables 1 +1297555845 3c7f310c pwnables 1 +1297555855 3c7f310c pwnables 1 +1297555866 3c7f310c pwnables 1 +1297555876 3c7f310c pwnables 1 +1297555887 3c7f310c pwnables 1 +1297555893 c206e4c6 tanks 1 +1297555897 3c7f310c pwnables 1 +1297555908 3c7f310c pwnables 1 +1297555919 3c7f310c pwnables 1 +1297555929 3c7f310c pwnables 1 +1297555940 3c7f310c pwnables 1 +1297555950 3c7f310c pwnables 1 +1297555953 c206e4c6 tanks 1 +1297555961 3c7f310c pwnables 1 +1297555971 3c7f310c pwnables 1 +1297555982 3c7f310c pwnables 1 +1297555993 3c7f310c pwnables 1 +1297556003 3c7f310c pwnables 1 +1297556014 c206e4c6 tanks 1 +1297556014 3c7f310c pwnables 1 +1297556025 3c7f310c pwnables 1 +1297556036 3c7f310c pwnables 1 +1297556046 3c7f310c pwnables 1 +1297556057 3c7f310c pwnables 1 +1297556060 a8d58590 pwnables 1 +1297556060 a8d58590 pwnables 1 +1297556061 a8d58590 pwnables 1 +1297556062 a8d58590 pwnables 1 +1297556063 a8d58590 pwnables 1 +1297556063 a8d58590 pwnables 1 +1297556064 a8d58590 pwnables 1 +1297556064 a8d58590 pwnables 1 +1297556065 a8d58590 pwnables 1 +1297556066 a8d58590 pwnables 1 +1297556067 a8d58590 pwnables 1 +1297556068 3c7f310c pwnables 1 +1297556068 a8d58590 pwnables 1 +1297556069 a8d58590 pwnables 1 +1297556070 a8d58590 pwnables 1 +1297556072 a8d58590 pwnables 1 +1297556072 a8d58590 pwnables 1 +1297556073 a8d58590 pwnables 1 +1297556074 a8d58590 pwnables 1 +1297556076 c206e4c6 tanks 1 +1297556076 a8d58590 pwnables 1 +1297556076 a8d58590 pwnables 1 +1297556077 a8d58590 pwnables 1 +1297556077 a8d58590 pwnables 1 +1297556078 a8d58590 pwnables 1 +1297556079 3c7f310c pwnables 1 +1297556079 a8d58590 pwnables 1 +1297556079 a8d58590 pwnables 1 +1297556081 a8d58590 pwnables 1 +1297556081 a8d58590 pwnables 1 +1297556081 a8d58590 pwnables 1 +1297556082 a8d58590 pwnables 1 +1297556083 a8d58590 pwnables 1 +1297556084 a8d58590 pwnables 1 +1297556085 a8d58590 pwnables 1 +1297556087 a8d58590 pwnables 1 +1297556088 a8d58590 pwnables 1 +1297556089 a8d58590 pwnables 1 +1297556090 a8d58590 pwnables 1 +1297556090 3c7f310c pwnables 1 +1297556091 a8d58590 pwnables 1 +1297556092 a8d58590 pwnables 1 +1297556094 a8d58590 pwnables 1 +1297556095 a8d58590 pwnables 1 +1297556096 a8d58590 pwnables 1 +1297556099 a8d58590 pwnables 1 +1297556100 a8d58590 pwnables 1 +1297556101 3c7f310c pwnables 1 +1297556111 3c7f310c pwnables 1 +1297556122 3c7f310c pwnables 1 +1297556133 3c7f310c pwnables 1 +1297556136 3c7f310c tanks 1 +1297556143 3c7f310c pwnables 1 +1297556152 c206e4c6 sequence 700 +1297556154 3c7f310c pwnables 1 +1297556164 3c7f310c pwnables 1 +1297556175 3c7f310c pwnables 1 +1297556186 3c7f310c pwnables 1 +1297556196 3c7f310c pwnables 1 +1297556207 3c7f310c pwnables 1 +1297556217 3c7f310c pwnables 1 +1297556228 3c7f310c pwnables 1 +1297556238 3c7f310c pwnables 1 +1297556249 3c7f310c pwnables 1 +1297556257 c206e4c6 tanks 1 +1297556261 3c7f310c pwnables 1 +1297556272 3c7f310c pwnables 1 +1297556282 3c7f310c pwnables 1 +1297556293 3c7f310c pwnables 1 +1297556303 3c7f310c pwnables 1 +1297556314 3c7f310c pwnables 1 +1297556318 3c7f310c tanks 1 +1297556325 3c7f310c pwnables 1 +1297556335 3c7f310c pwnables 1 +1297556346 3c7f310c pwnables 1 +1297556356 3c7f310c pwnables 1 +1297556366 3c7f310c pwnables 1 +1297556377 3c7f310c pwnables 1 +1297556378 3c7f310c tanks 1 +1297556387 3c7f310c pwnables 1 +1297556398 3c7f310c pwnables 1 +1297556408 3c7f310c pwnables 1 +1297556419 3c7f310c pwnables 1 +1297556429 3c7f310c pwnables 1 +1297556439 3c7f310c tanks 1 +1297556440 3c7f310c pwnables 1 +1297556450 3c7f310c pwnables 1 +1297556451 c206e4c6 sequence 600 +1297556461 3c7f310c pwnables 1 +1297556472 3c7f310c pwnables 1 +1297556483 3c7f310c pwnables 1 +1297556493 3c7f310c pwnables 1 +1297556501 c206e4c6 tanks 1 +1297556504 3c7f310c pwnables 1 +1297556514 3c7f310c pwnables 1 +1297556525 3c7f310c pwnables 1 +1297556535 3c7f310c pwnables 1 +1297556546 3c7f310c pwnables 1 +1297556556 3c7f310c pwnables 1 +1297556561 c206e4c6 tanks 1 +1297556567 3c7f310c pwnables 1 +1297556577 3c7f310c pwnables 1 +1297556588 3c7f310c pwnables 1 +1297556599 3c7f310c pwnables 1 +1297556610 3c7f310c pwnables 1 +1297556620 3c7f310c pwnables 1 +1297556630 3c7f310c pwnables 1 +1297556641 3c7f310c pwnables 1 +1297556651 3c7f310c pwnables 1 +1297556662 3c7f310c pwnables 1 +1297556667 c206e4c6 sequence 100 +1297556673 3c7f310c pwnables 1 +1297556682 c206e4c6 tanks 1 +1297556683 3c7f310c pwnables 1 +1297556694 3c7f310c pwnables 1 +1297556704 3c7f310c pwnables 1 +1297556715 3c7f310c pwnables 1 +1297556727 3c7f310c pwnables 1 +1297556737 3c7f310c pwnables 1 +1297556748 3c7f310c pwnables 1 +1297556758 3c7f310c pwnables 1 +1297556769 3c7f310c pwnables 1 +1297556779 3c7f310c pwnables 1 +1297556790 3c7f310c pwnables 1 +1297556801 3c7f310c pwnables 1 +1297556811 3c7f310c pwnables 1 +1297556822 3c7f310c pwnables 1 +1297556833 3c7f310c pwnables 1 +1297556843 3c7f310c pwnables 1 +1297556854 3c7f310c pwnables 1 +1297556863 c206e4c6 tanks 1 +1297556864 3c7f310c pwnables 1 +1297556875 3c7f310c pwnables 1 +1297556885 3c7f310c pwnables 1 +1297556896 3c7f310c pwnables 1 +1297556906 3c7f310c pwnables 1 +1297556917 3c7f310c pwnables 1 +1297556924 3c7f310c tanks 1 +1297556928 3c7f310c pwnables 1 +1297556938 3c7f310c pwnables 1 +1297556949 3c7f310c pwnables 1 +1297556959 3c7f310c pwnables 1 +1297556969 3c7f310c pwnables 1 +1297556980 3c7f310c pwnables 1 +1297556984 c206e4c6 tanks 1 +1297556990 3c7f310c pwnables 1 +1297557001 3c7f310c pwnables 1 +1297557011 3c7f310c pwnables 1 +1297557022 3c7f310c pwnables 1 +1297557033 3c7f310c pwnables 1 +1297557043 3c7f310c pwnables 1 +1297557045 3c7f310c tanks 1 +1297557053 3c7f310c pwnables 1 +1297557061 a8d58590 pwnables 1 +1297557064 3c7f310c pwnables 1 +1297557075 3c7f310c pwnables 1 +1297557086 3c7f310c pwnables 1 +1297557097 3c7f310c pwnables 1 +1297557106 c206e4c6 tanks 1 +1297557108 3c7f310c pwnables 1 +1297557119 3c7f310c pwnables 1 +1297557129 3c7f310c pwnables 1 +1297557140 3c7f310c pwnables 1 +1297557152 3c7f310c pwnables 1 +1297557163 3c7f310c pwnables 1 +1297557173 3c7f310c pwnables 1 +1297557179 a8d58590 pwnables 1 +1297557180 a8d58590 pwnables 1 +1297557180 a8d58590 pwnables 1 +1297557180 a8d58590 pwnables 1 +1297557181 a8d58590 pwnables 1 +1297557181 a8d58590 pwnables 1 +1297557181 a8d58590 pwnables 1 +1297557182 a8d58590 pwnables 1 +1297557182 a8d58590 pwnables 1 +1297557183 a8d58590 pwnables 1 +1297557183 a8d58590 pwnables 1 +1297557183 a8d58590 pwnables 1 +1297557184 a8d58590 pwnables 1 +1297557184 3c7f310c pwnables 1 +1297557184 a8d58590 pwnables 1 +1297557185 a8d58590 pwnables 1 +1297557185 a8d58590 pwnables 1 +1297557186 a8d58590 pwnables 1 +1297557186 a8d58590 pwnables 1 +1297557186 a8d58590 pwnables 1 +1297557187 a8d58590 pwnables 1 +1297557187 a8d58590 pwnables 1 +1297557188 a8d58590 pwnables 1 +1297557188 a8d58590 pwnables 1 +1297557188 a8d58590 pwnables 1 +1297557189 a8d58590 pwnables 1 +1297557189 a8d58590 pwnables 1 +1297557189 a8d58590 pwnables 1 +1297557190 a8d58590 pwnables 1 +1297557190 a8d58590 pwnables 1 +1297557191 a8d58590 pwnables 1 +1297557191 a8d58590 pwnables 1 +1297557191 a8d58590 pwnables 1 +1297557192 a8d58590 pwnables 1 +1297557192 a8d58590 pwnables 1 +1297557192 a8d58590 pwnables 1 +1297557193 a8d58590 pwnables 1 +1297557193 a8d58590 pwnables 1 +1297557194 a8d58590 pwnables 1 +1297557194 a8d58590 pwnables 1 +1297557194 a8d58590 pwnables 1 +1297557195 3c7f310c pwnables 1 +1297557195 a8d58590 pwnables 1 +1297557195 a8d58590 pwnables 1 +1297557196 a8d58590 pwnables 1 +1297557196 a8d58590 pwnables 1 +1297557197 a8d58590 pwnables 1 +1297557197 a8d58590 pwnables 1 +1297557197 a8d58590 pwnables 1 +1297557198 a8d58590 pwnables 1 +1297557198 a8d58590 pwnables 1 +1297557198 a8d58590 pwnables 1 +1297557199 a8d58590 pwnables 1 +1297557199 a8d58590 pwnables 1 +1297557200 a8d58590 pwnables 1 +1297557200 a8d58590 pwnables 1 +1297557200 a8d58590 pwnables 1 +1297557201 a8d58590 pwnables 1 +1297557201 a8d58590 pwnables 1 +1297557201 a8d58590 pwnables 1 +1297557202 a8d58590 pwnables 1 +1297557202 a8d58590 pwnables 1 +1297557203 a8d58590 pwnables 1 +1297557203 a8d58590 pwnables 1 +1297557203 a8d58590 pwnables 1 +1297557204 a8d58590 pwnables 1 +1297557204 a8d58590 pwnables 1 +1297557205 a8d58590 pwnables 1 +1297557205 a8d58590 pwnables 1 +1297557205 a8d58590 pwnables 1 +1297557206 3c7f310c pwnables 1 +1297557206 a8d58590 pwnables 1 +1297557206 a8d58590 pwnables 1 +1297557207 a8d58590 pwnables 1 +1297557207 a8d58590 pwnables 1 +1297557208 a8d58590 pwnables 1 +1297557208 a8d58590 pwnables 1 +1297557208 a8d58590 pwnables 1 +1297557209 a8d58590 pwnables 1 +1297557209 a8d58590 pwnables 1 +1297557209 a8d58590 pwnables 1 +1297557210 a8d58590 pwnables 1 +1297557210 a8d58590 pwnables 1 +1297557211 a8d58590 pwnables 1 +1297557211 a8d58590 pwnables 1 +1297557211 a8d58590 pwnables 1 +1297557212 a8d58590 pwnables 1 +1297557212 a8d58590 pwnables 1 +1297557212 a8d58590 pwnables 1 +1297557213 a8d58590 pwnables 1 +1297557216 3c7f310c pwnables 1 +1297557227 c206e4c6 tanks 1 +1297557228 3c7f310c pwnables 1 +1297557238 3c7f310c pwnables 1 +1297557249 3c7f310c pwnables 1 +1297557259 3c7f310c pwnables 1 +1297557270 3c7f310c pwnables 1 +1297557281 3c7f310c pwnables 1 +1297557288 c206e4c6 tanks 1 +1297557293 3c7f310c pwnables 1 +1297557304 3c7f310c pwnables 1 +1297557315 3c7f310c pwnables 1 +1297557326 3c7f310c pwnables 1 +1297557337 3c7f310c pwnables 1 +1297557337 a8d58590 pwnables 1 +1297557338 a8d58590 pwnables 1 +1297557338 a8d58590 pwnables 1 +1297557338 a8d58590 pwnables 1 +1297557339 a8d58590 pwnables 1 +1297557339 a8d58590 pwnables 1 +1297557340 a8d58590 pwnables 1 +1297557340 a8d58590 pwnables 1 +1297557340 a8d58590 pwnables 1 +1297557341 a8d58590 pwnables 1 +1297557341 a8d58590 pwnables 1 +1297557341 a8d58590 pwnables 1 +1297557342 a8d58590 pwnables 1 +1297557342 a8d58590 pwnables 1 +1297557343 a8d58590 pwnables 1 +1297557343 a8d58590 pwnables 1 +1297557343 a8d58590 pwnables 1 +1297557344 a8d58590 pwnables 1 +1297557344 a8d58590 pwnables 1 +1297557344 a8d58590 pwnables 1 +1297557345 a8d58590 pwnables 1 +1297557345 a8d58590 pwnables 1 +1297557346 a8d58590 pwnables 1 +1297557346 a8d58590 pwnables 1 +1297557346 a8d58590 pwnables 1 +1297557347 a8d58590 pwnables 1 +1297557347 3c7f310c pwnables 1 +1297557349 3c7f310c tanks 1 +1297557358 3c7f310c pwnables 1 +1297557369 3c7f310c pwnables 1 +1297557380 3c7f310c pwnables 1 +1297557392 3c7f310c pwnables 1 +1297557403 3c7f310c pwnables 1 +1297557410 3c7f310c tanks 1 +1297557414 3c7f310c pwnables 1 +1297557425 3c7f310c pwnables 1 +1297557436 3c7f310c pwnables 1 +1297557447 3c7f310c pwnables 1 +1297557458 3c7f310c pwnables 1 +1297557470 3c7f310c pwnables 1 +1297557481 3c7f310c pwnables 1 +1297557492 3c7f310c pwnables 1 +1297557504 3c7f310c pwnables 1 +1297557515 3c7f310c pwnables 1 +1297557527 3c7f310c pwnables 1 +1297557533 c206e4c6 tanks 1 +1297557538 3c7f310c pwnables 1 +1297557539 a8d58590 pwnables 1 +1297557539 a8d58590 pwnables 1 +1297557540 a8d58590 pwnables 1 +1297557541 a8d58590 pwnables 1 +1297557542 a8d58590 pwnables 1 +1297557542 a8d58590 pwnables 1 +1297557543 a8d58590 pwnables 1 +1297557544 a8d58590 pwnables 1 +1297557545 a8d58590 pwnables 1 +1297557545 a8d58590 pwnables 1 +1297557546 a8d58590 pwnables 1 +1297557547 a8d58590 pwnables 1 +1297557548 a8d58590 pwnables 1 +1297557548 a8d58590 pwnables 1 +1297557549 a8d58590 pwnables 1 +1297557550 3c7f310c pwnables 1 +1297557550 a8d58590 pwnables 1 +1297557551 a8d58590 pwnables 1 +1297557552 a8d58590 pwnables 1 +1297557553 a8d58590 pwnables 1 +1297557553 a8d58590 pwnables 1 +1297557554 a8d58590 pwnables 1 +1297557555 a8d58590 pwnables 1 +1297557556 a8d58590 pwnables 1 +1297557557 a8d58590 pwnables 1 +1297557557 a8d58590 pwnables 1 +1297557558 a8d58590 pwnables 1 +1297557561 a8d58590 pwnables 1 +1297557561 3c7f310c pwnables 1 +1297557561 a8d58590 pwnables 1 +1297557562 a8d58590 pwnables 1 +1297557563 a8d58590 pwnables 1 +1297557564 a8d58590 pwnables 1 +1297557565 a8d58590 pwnables 1 +1297557570 a8d58590 pwnables 1 +1297557571 a8d58590 pwnables 1 +1297557572 a8d58590 pwnables 1 +1297557572 3c7f310c pwnables 1 +1297557573 a8d58590 pwnables 1 +1297557573 a8d58590 pwnables 1 +1297557574 a8d58590 pwnables 1 +1297557575 a8d58590 pwnables 1 +1297557576 a8d58590 pwnables 1 +1297557576 a8d58590 pwnables 1 +1297557577 a8d58590 pwnables 1 +1297557578 a8d58590 pwnables 1 +1297557579 a8d58590 pwnables 1 +1297557579 a8d58590 pwnables 1 +1297557580 a8d58590 pwnables 1 +1297557581 a8d58590 pwnables 1 +1297557582 a8d58590 pwnables 1 +1297557582 a8d58590 pwnables 1 +1297557583 a8d58590 pwnables 1 +1297557584 3c7f310c pwnables 1 +1297557584 a8d58590 pwnables 1 +1297557585 a8d58590 pwnables 1 +1297557586 a8d58590 pwnables 1 +1297557586 a8d58590 pwnables 1 +1297557587 a8d58590 pwnables 1 +1297557588 a8d58590 pwnables 1 +1297557589 a8d58590 pwnables 1 +1297557589 a8d58590 pwnables 1 +1297557590 a8d58590 pwnables 1 +1297557591 a8d58590 pwnables 1 +1297557592 a8d58590 pwnables 1 +1297557593 a8d58590 pwnables 1 +1297557594 a8d58590 pwnables 1 +1297557595 c206e4c6 tanks 1 +1297557595 3c7f310c pwnables 1 +1297557595 a8d58590 pwnables 1 +1297557596 a8d58590 pwnables 1 +1297557598 a8d58590 pwnables 1 +1297557599 a8d58590 pwnables 1 +1297557607 3c7f310c pwnables 1 +1297557618 3c7f310c pwnables 1 +1297557619 a8d58590 pwnables 1 +1297557620 a8d58590 pwnables 1 +1297557620 a8d58590 pwnables 1 +1297557620 a8d58590 pwnables 1 +1297557621 a8d58590 pwnables 1 +1297557621 a8d58590 pwnables 1 +1297557622 a8d58590 pwnables 1 +1297557622 a8d58590 pwnables 1 +1297557622 a8d58590 pwnables 1 +1297557623 a8d58590 pwnables 1 +1297557623 a8d58590 pwnables 1 +1297557623 a8d58590 pwnables 1 +1297557624 a8d58590 pwnables 1 +1297557624 a8d58590 pwnables 1 +1297557625 a8d58590 pwnables 1 +1297557625 a8d58590 pwnables 1 +1297557625 a8d58590 pwnables 1 +1297557626 a8d58590 pwnables 1 +1297557626 a8d58590 pwnables 1 +1297557627 a8d58590 pwnables 1 +1297557627 a8d58590 pwnables 1 +1297557627 a8d58590 pwnables 1 +1297557628 a8d58590 pwnables 1 +1297557628 a8d58590 pwnables 1 +1297557628 3c7f310c pwnables 1 +1297557629 a8d58590 pwnables 1 +1297557629 a8d58590 pwnables 1 +1297557630 a8d58590 pwnables 1 +1297557630 a8d58590 pwnables 1 +1297557630 a8d58590 pwnables 1 +1297557631 a8d58590 pwnables 1 +1297557631 a8d58590 pwnables 1 +1297557632 a8d58590 pwnables 1 +1297557632 a8d58590 pwnables 1 +1297557632 a8d58590 pwnables 1 +1297557639 3c7f310c pwnables 1 +1297557650 3c7f310c pwnables 1 +1297557655 c206e4c6 tanks 1 +1297557660 3c7f310c pwnables 1 +1297557671 3c7f310c pwnables 1 +1297557683 3c7f310c pwnables 1 +1297557687 a8d58590 pwnables 1 +1297557687 a8d58590 pwnables 1 +1297557688 a8d58590 pwnables 1 +1297557688 a8d58590 pwnables 1 +1297557688 a8d58590 pwnables 1 +1297557689 a8d58590 pwnables 1 +1297557689 a8d58590 pwnables 1 +1297557690 a8d58590 pwnables 1 +1297557690 a8d58590 pwnables 1 +1297557690 a8d58590 pwnables 1 +1297557691 a8d58590 pwnables 1 +1297557691 a8d58590 pwnables 1 +1297557692 a8d58590 pwnables 1 +1297557692 a8d58590 pwnables 1 +1297557692 a8d58590 pwnables 1 +1297557693 a8d58590 pwnables 1 +1297557693 a8d58590 pwnables 1 +1297557694 3c7f310c pwnables 1 +1297557694 a8d58590 pwnables 1 +1297557694 a8d58590 pwnables 1 +1297557695 a8d58590 pwnables 1 +1297557695 a8d58590 pwnables 1 +1297557696 a8d58590 pwnables 1 +1297557696 a8d58590 pwnables 1 +1297557696 a8d58590 pwnables 1 +1297557697 a8d58590 pwnables 1 +1297557697 a8d58590 pwnables 1 +1297557698 a8d58590 pwnables 1 +1297557698 a8d58590 pwnables 1 +1297557698 a8d58590 pwnables 1 +1297557699 a8d58590 pwnables 1 +1297557699 a8d58590 pwnables 1 +1297557699 a8d58590 pwnables 1 +1297557700 a8d58590 pwnables 1 +1297557700 a8d58590 pwnables 1 +1297557701 a8d58590 pwnables 1 +1297557701 a8d58590 pwnables 1 +1297557701 a8d58590 pwnables 1 +1297557702 a8d58590 pwnables 1 +1297557702 a8d58590 pwnables 1 +1297557704 3c7f310c pwnables 1 +1297557715 3c7f310c pwnables 1 +1297557716 c206e4c6 tanks 1 +1297557725 3c7f310c pwnables 1 +1297557736 3c7f310c pwnables 1 +1297557746 3c7f310c pwnables 1 +1297557757 3c7f310c pwnables 1 +1297557768 3c7f310c pwnables 1 +1297557778 3c7f310c pwnables 1 +1297557789 3c7f310c pwnables 1 +1297557799 3c7f310c pwnables 1 +1297557811 3c7f310c pwnables 1 +1297557822 3c7f310c pwnables 1 +1297557833 3c7f310c pwnables 1 +1297557843 3c7f310c pwnables 1 +1297557854 3c7f310c pwnables 1 +1297557865 3c7f310c pwnables 1 +1297557876 3c7f310c pwnables 1 +1297557880 a8d58590 pwnables 1 +1297557880 a8d58590 pwnables 1 +1297557880 a8d58590 pwnables 1 +1297557881 a8d58590 pwnables 1 +1297557881 a8d58590 pwnables 1 +1297557882 a8d58590 pwnables 1 +1297557882 a8d58590 pwnables 1 +1297557882 a8d58590 pwnables 1 +1297557883 a8d58590 pwnables 1 +1297557883 a8d58590 pwnables 1 +1297557884 a8d58590 pwnables 1 +1297557885 a8d58590 pwnables 1 +1297557886 a8d58590 pwnables 1 +1297557887 a8d58590 pwnables 1 +1297557887 3c7f310c pwnables 1 +1297557888 a8d58590 pwnables 1 +1297557889 a8d58590 pwnables 1 +1297557889 a8d58590 pwnables 1 +1297557890 a8d58590 pwnables 1 +1297557891 a8d58590 pwnables 1 +1297557892 a8d58590 pwnables 1 +1297557892 a8d58590 pwnables 1 +1297557893 a8d58590 pwnables 1 +1297557894 a8d58590 pwnables 1 +1297557895 a8d58590 pwnables 1 +1297557896 a8d58590 pwnables 1 +1297557897 a8d58590 pwnables 1 +1297557897 a8d58590 pwnables 1 +1297557899 a8d58590 pwnables 1 +1297557899 3c7f310c pwnables 1 +1297557899 a8d58590 pwnables 1 +1297557900 a8d58590 pwnables 1 +1297557900 a8d58590 pwnables 1 +1297557901 a8d58590 pwnables 1 +1297557901 a8d58590 pwnables 1 +1297557902 a8d58590 pwnables 1 +1297557902 a8d58590 pwnables 1 +1297557902 a8d58590 pwnables 1 +1297557903 a8d58590 pwnables 1 +1297557903 a8d58590 pwnables 1 +1297557903 a8d58590 pwnables 1 +1297557904 a8d58590 pwnables 1 +1297557904 a8d58590 pwnables 1 +1297557905 a8d58590 pwnables 1 +1297557905 a8d58590 pwnables 1 +1297557906 a8d58590 pwnables 1 +1297557906 a8d58590 pwnables 1 +1297557907 a8d58590 pwnables 1 +1297557907 a8d58590 pwnables 1 +1297557907 a8d58590 pwnables 1 +1297557908 a8d58590 pwnables 1 +1297557908 a8d58590 pwnables 1 +1297557909 3c7f310c pwnables 1 +1297557920 3c7f310c pwnables 1 +1297557930 3c7f310c pwnables 1 +1297557942 3c7f310c pwnables 1 +1297557952 3c7f310c pwnables 1 +1297557963 3c7f310c pwnables 1 +1297557974 3c7f310c pwnables 1 +1297557985 3c7f310c pwnables 1 +1297557995 3c7f310c pwnables 1 +1297558006 3c7f310c pwnables 1 +1297558016 3c7f310c pwnables 1 +1297558027 3c7f310c pwnables 1 +1297558038 3c7f310c pwnables 1 +1297558048 3c7f310c pwnables 1 +1297558059 3c7f310c pwnables 1 +1297558069 3c7f310c pwnables 1 +1297558080 3c7f310c pwnables 1 +1297558090 3c7f310c pwnables 1 +1297558101 3c7f310c pwnables 1 +1297558112 3c7f310c pwnables 1 +1297558123 3c7f310c pwnables 1 +1297558133 3c7f310c pwnables 1 +1297558144 3c7f310c pwnables 1 +1297558164 3c7f310c pwnables 1 +1297558175 3c7f310c pwnables 1 +1297558187 3c7f310c pwnables 1 +1297558198 3c7f310c pwnables 1 +1297558208 3c7f310c pwnables 1 +1297558219 3c7f310c pwnables 1 +1297558229 3c7f310c pwnables 1 +1297558240 3c7f310c pwnables 1 +1297558251 3c7f310c pwnables 1 +1297558262 3c7f310c pwnables 1 +1297558272 3c7f310c pwnables 1 +1297558283 3c7f310c pwnables 1 +1297558293 3c7f310c pwnables 1 +1297558304 3c7f310c pwnables 1 +1297558315 3c7f310c pwnables 1 +1297558326 3c7f310c pwnables 1 +1297558336 3c7f310c pwnables 1 +1297558347 3c7f310c pwnables 1 +1297558358 3c7f310c pwnables 1 +1297558368 3c7f310c pwnables 1 +1297558379 3c7f310c pwnables 1 +1297558390 3c7f310c pwnables 1 +1297558393 3c7f310c tanks 1 +1297558400 3c7f310c pwnables 1 +1297558411 3c7f310c pwnables 1 +1297558421 3c7f310c pwnables 1 +1297558432 3c7f310c pwnables 1 +1297558443 3c7f310c pwnables 1 +1297558453 3c7f310c pwnables 1 +1297558463 3c7f310c pwnables 1 +1297558474 3c7f310c pwnables 1 +1297558484 3c7f310c pwnables 1 +1297558495 3c7f310c pwnables 1 +1297558506 3c7f310c pwnables 1 +1297558514 c206e4c6 tanks 1 +1297558516 3c7f310c pwnables 1 +1297558527 3c7f310c pwnables 1 +1297558538 3c7f310c pwnables 1 +1297558548 3c7f310c pwnables 1 +1297558559 3c7f310c pwnables 1 +1297558569 3c7f310c pwnables 1 +1297558575 c206e4c6 tanks 1 +1297558580 3c7f310c pwnables 1 +1297558588 a8d58590 steg 40 +1297558591 3c7f310c pwnables 1 +1297558602 3c7f310c pwnables 1 +1297558612 3c7f310c pwnables 1 +1297558622 3c7f310c pwnables 1 +1297558633 3c7f310c pwnables 1 +1297558644 3c7f310c pwnables 1 +1297558655 3c7f310c pwnables 1 +1297558666 3c7f310c pwnables 1 +1297558677 3c7f310c pwnables 1 +1297558688 3c7f310c pwnables 1 +1297558699 3c7f310c pwnables 1 +1297558710 3c7f310c pwnables 1 +1297558721 3c7f310c pwnables 1 +1297558733 3c7f310c pwnables 1 +1297558744 3c7f310c pwnables 1 +1297558755 3c7f310c pwnables 1 +1297558766 3c7f310c pwnables 1 +1297558777 3c7f310c pwnables 1 +1297558787 3c7f310c pwnables 1 +1297558798 3c7f310c pwnables 1 +1297558810 3c7f310c pwnables 1 +1297558821 3c7f310c pwnables 1 +1297558832 3c7f310c pwnables 1 +1297558843 3c7f310c pwnables 1 +1297558853 3c7f310c pwnables 1 +1297558856 f0cfd260 sequence 200 +1297558864 3c7f310c pwnables 1 +1297558875 3c7f310c pwnables 1 +1297558885 3c7f310c pwnables 1 +1297558896 3c7f310c pwnables 1 +1297558907 3c7f310c pwnables 1 +1297558918 3c7f310c pwnables 1 +1297558929 3c7f310c pwnables 1 +1297558940 3c7f310c pwnables 1 +1297558952 3c7f310c pwnables 1 +1297558963 3c7f310c pwnables 1 +1297558974 3c7f310c pwnables 1 +1297558985 3c7f310c pwnables 1 +1297558996 3c7f310c pwnables 1 +1297558998 c206e4c6 tanks 1 +1297559007 3c7f310c pwnables 1 +1297559018 3c7f310c pwnables 1 +1297559029 3c7f310c pwnables 1 +1297559040 3c7f310c pwnables 1 +1297559051 3c7f310c pwnables 1 +1297559062 3c7f310c pwnables 1 +1297559073 3c7f310c pwnables 1 +1297559083 3c7f310c pwnables 1 +1297559094 3c7f310c pwnables 1 +1297559105 3c7f310c pwnables 1 +1297559115 3c7f310c pwnables 1 +1297559126 3c7f310c pwnables 1 +1297559136 3c7f310c pwnables 1 +1297559147 3c7f310c pwnables 1 +1297559158 3c7f310c pwnables 1 +1297559169 3c7f310c pwnables 1 +1297559179 3c7f310c pwnables 1 +1297559190 3c7f310c pwnables 1 +1297559200 3c7f310c pwnables 1 +1297559211 3c7f310c pwnables 1 +1297559222 3c7f310c pwnables 1 +1297559232 3c7f310c pwnables 1 +1297559243 3c7f310c pwnables 1 +1297559254 3c7f310c pwnables 1 +1297559264 3c7f310c pwnables 1 +1297559275 3c7f310c pwnables 1 +1297559287 3c7f310c pwnables 1 +1297559297 3c7f310c pwnables 1 +1297559308 3c7f310c pwnables 1 +1297559319 3c7f310c pwnables 1 +1297559330 3c7f310c pwnables 1 +1297559340 3c7f310c pwnables 1 +1297559351 3c7f310c pwnables 1 +1297559361 3c7f310c pwnables 1 +1297559366 3c7f310c pwnables 1 +1297559372 3c7f310c pwnables 1 +1297559383 3c7f310c pwnables 1 +1297559393 3c7f310c pwnables 1 +1297559404 3c7f310c pwnables 1 +1297559414 3c7f310c pwnables 1 +1297559425 3c7f310c pwnables 1 +1297559436 3c7f310c pwnables 1 +1297559447 3c7f310c pwnables 1 +1297559457 3c7f310c pwnables 1 +1297559468 3c7f310c pwnables 1 +1297559478 3c7f310c pwnables 1 +1297559489 3c7f310c pwnables 1 +1297559500 3c7f310c pwnables 1 +1297559510 3c7f310c pwnables 1 +1297559521 3c7f310c pwnables 1 +1297559531 3c7f310c pwnables 1 +1297559535 a8d58590 steg 60 +1297559541 3c7f310c pwnables 1 +1297559552 3c7f310c pwnables 1 +1297559562 3c7f310c pwnables 1 +1297559573 3c7f310c pwnables 1 +1297559584 3c7f310c pwnables 1 +1297559594 3c7f310c pwnables 1 +1297559604 3c7f310c pwnables 1 +1297559615 3c7f310c pwnables 1 +1297559625 3c7f310c pwnables 1 +1297559636 3c7f310c pwnables 1 +1297559647 3c7f310c pwnables 1 +1297559658 3c7f310c pwnables 1 +1297559663 c206e4c6 tanks 1 +1297559668 3c7f310c pwnables 1 +1297559679 3c7f310c pwnables 1 +1297559690 3c7f310c pwnables 1 +1297559700 3c7f310c pwnables 1 +1297559711 3c7f310c pwnables 1 +1297559722 3c7f310c pwnables 1 +1297559732 3c7f310c pwnables 1 +1297559743 3c7f310c pwnables 1 +1297559753 3c7f310c pwnables 1 +1297559763 3c7f310c pwnables 1 +1297559774 3c7f310c pwnables 1 +1297559784 3c7f310c pwnables 1 +1297559796 3c7f310c pwnables 1 +1297559806 3c7f310c pwnables 1 +1297559817 3c7f310c pwnables 1 +1297559827 3c7f310c pwnables 1 +1297559838 3c7f310c pwnables 1 +1297559848 3c7f310c pwnables 1 +1297559858 3c7f310c pwnables 1 +1297559869 3c7f310c pwnables 1 +1297559879 3c7f310c pwnables 1 +1297559890 3c7f310c pwnables 1 +1297559901 3c7f310c pwnables 1 +1297559911 3c7f310c pwnables 1 +1297559922 3c7f310c pwnables 1 +1297559923 3c7f310c steg 50 +1297559933 3c7f310c pwnables 1 +1297559944 3c7f310c pwnables 1 +1297559954 3c7f310c pwnables 1 +1297559965 3c7f310c pwnables 1 +1297559975 3c7f310c pwnables 1 +1297559986 3c7f310c pwnables 1 +1297559997 3c7f310c pwnables 1 +1297560007 3c7f310c pwnables 1 +1297560018 3c7f310c pwnables 1 +1297560028 3c7f310c pwnables 1 +1297560039 3c7f310c pwnables 1 +1297560050 3c7f310c pwnables 1 +1297560061 3c7f310c pwnables 1 +1297560073 3c7f310c pwnables 1 +1297560084 3c7f310c pwnables 1 +1297560085 c206e4c6 tanks 1 +1297560095 3c7f310c pwnables 1 +1297560105 3c7f310c pwnables 1 +1297560115 3c7f310c pwnables 1 +1297560126 3c7f310c pwnables 1 +1297560137 3c7f310c pwnables 1 +1297560146 c206e4c6 tanks 1 +1297560148 3c7f310c pwnables 1 +1297560157 3c7f310c steg 60 +1297560160 3c7f310c pwnables 1 +1297560170 3c7f310c pwnables 1 +1297560181 3c7f310c pwnables 1 +1297560191 3c7f310c pwnables 1 +1297560202 3c7f310c pwnables 1 +1297560213 3c7f310c pwnables 1 +1297560224 3c7f310c pwnables 1 +1297560236 3c7f310c pwnables 1 +1297560247 3c7f310c pwnables 1 +1297560258 3c7f310c pwnables 1 +1297560268 3c7f310c pwnables 1 +1297560279 3c7f310c pwnables 1 +1297560291 3c7f310c pwnables 1 +1297560302 3c7f310c pwnables 1 +1297560313 3c7f310c pwnables 1 +1297560323 3c7f310c pwnables 1 +1297560333 3c7f310c pwnables 1 +1297560344 3c7f310c pwnables 1 +1297560354 3c7f310c pwnables 1 +1297560357 f0cfd260 sequence 400 +1297560367 3c7f310c pwnables 1 +1297560378 3c7f310c pwnables 1 +1297560388 3c7f310c pwnables 1 +1297560399 3c7f310c pwnables 1 +1297560409 3c7f310c pwnables 1 +1297560420 3c7f310c pwnables 1 +1297560431 3c7f310c pwnables 1 +1297560442 3c7f310c pwnables 1 +1297560452 3c7f310c pwnables 1 +1297560463 3c7f310c pwnables 1 +1297560474 3c7f310c pwnables 1 +1297560484 3c7f310c pwnables 1 +1297560495 3c7f310c pwnables 1 +1297560506 3c7f310c pwnables 1 +1297560517 3c7f310c pwnables 1 +1297560528 3c7f310c pwnables 1 +1297560539 3c7f310c pwnables 1 +1297560549 3c7f310c pwnables 1 +1297560560 3c7f310c pwnables 1 +1297560570 3c7f310c pwnables 1 +1297560581 3c7f310c pwnables 1 +1297560592 3c7f310c pwnables 1 +1297560603 3c7f310c pwnables 1 +1297560613 3c7f310c pwnables 1 +1297560624 3c7f310c pwnables 1 +1297560635 3c7f310c pwnables 1 +1297560645 3c7f310c pwnables 1 +1297560656 3c7f310c pwnables 1 +1297560667 3c7f310c pwnables 1 +1297560678 3c7f310c pwnables 1 +1297560688 3c7f310c pwnables 1 +1297560699 3c7f310c pwnables 1 +1297560709 3c7f310c pwnables 1 +1297560720 3c7f310c pwnables 1 +1297560731 3c7f310c pwnables 1 +1297560742 3c7f310c pwnables 1 +1297560752 3c7f310c pwnables 1 +1297560763 3c7f310c pwnables 1 +1297560773 3c7f310c pwnables 1 +1297560784 3c7f310c pwnables 1 +1297560796 3c7f310c pwnables 1 +1297560807 3c7f310c pwnables 1 +1297560818 3c7f310c pwnables 1 +1297560828 3c7f310c pwnables 1 +1297560839 3c7f310c pwnables 1 +1297560849 3c7f310c pwnables 1 +1297560860 3c7f310c pwnables 1 +1297560871 3c7f310c pwnables 1 +1297560882 3c7f310c pwnables 1 +1297560892 3c7f310c pwnables 1 +1297560903 3c7f310c pwnables 1 +1297560914 3c7f310c pwnables 1 +1297560925 3c7f310c pwnables 1 +1297560930 c206e4c6 tanks 1 +1297560937 3c7f310c pwnables 1 +1297560948 3c7f310c pwnables 1 +1297560959 3c7f310c pwnables 1 +1297560970 3c7f310c pwnables 1 +1297560981 3c7f310c pwnables 1 +1297560991 3c7f310c pwnables 1 +1297561002 3c7f310c pwnables 1 +1297561013 3c7f310c pwnables 1 +1297561024 3c7f310c pwnables 1 +1297561034 3c7f310c pwnables 1 +1297561045 3c7f310c pwnables 1 +1297561055 3c7f310c pwnables 1 +1297561066 3c7f310c pwnables 1 +1297561077 3c7f310c pwnables 1 +1297561087 3c7f310c pwnables 1 +1297561098 3c7f310c pwnables 1 +1297561109 3c7f310c pwnables 1 +1297561119 3c7f310c pwnables 1 +1297561130 3c7f310c pwnables 1 +1297561140 3c7f310c pwnables 1 +1297561152 3c7f310c pwnables 1 +1297561162 3c7f310c pwnables 1 +1297561172 c206e4c6 tanks 1 +1297561173 3c7f310c pwnables 1 +1297561183 3c7f310c pwnables 1 +1297561194 3c7f310c pwnables 1 +1297561205 3c7f310c pwnables 1 +1297561217 3c7f310c pwnables 1 +1297561228 3c7f310c pwnables 1 +1297561238 3c7f310c pwnables 1 +1297561249 3c7f310c pwnables 1 +1297561259 3c7f310c pwnables 1 +1297561270 3c7f310c pwnables 1 +1297561281 3c7f310c pwnables 1 +1297561292 3c7f310c pwnables 1 +1297561304 3c7f310c pwnables 1 +1297561315 3c7f310c pwnables 1 +1297561327 3c7f310c pwnables 1 +1297561338 3c7f310c pwnables 1 +1297561349 3c7f310c pwnables 1 +1297561354 c206e4c6 tanks 1 +1297561361 3c7f310c pwnables 1 +1297561373 3c7f310c pwnables 1 +1297561384 3c7f310c pwnables 1 +1297561395 3c7f310c pwnables 1 +1297561406 3c7f310c pwnables 1 +1297561416 3c7f310c pwnables 1 +1297561427 3c7f310c pwnables 1 +1297561437 3c7f310c pwnables 1 +1297561448 3c7f310c pwnables 1 +1297561458 3c7f310c pwnables 1 +1297561469 3c7f310c pwnables 1 +1297561479 3c7f310c pwnables 1 +1297561489 3c7f310c pwnables 1 +1297561500 3c7f310c pwnables 1 +1297561511 3c7f310c pwnables 1 +1297561522 3c7f310c pwnables 1 +1297561532 3c7f310c pwnables 1 +1297561543 3c7f310c pwnables 1 +1297561554 3c7f310c pwnables 1 +1297561564 3c7f310c pwnables 1 +1297561576 3c7f310c pwnables 1 +1297561579 c206e4c6 sequence 300 +1297561587 3c7f310c pwnables 1 +1297561595 c206e4c6 tanks 1 +1297561598 3c7f310c pwnables 1 +1297561609 3c7f310c pwnables 1 +1297561619 3c7f310c pwnables 1 +1297561630 3c7f310c pwnables 1 +1297561641 3c7f310c pwnables 1 +1297561653 3c7f310c pwnables 1 +1297561657 3c7f310c tanks 1 +1297561664 3c7f310c pwnables 1 +1297561675 3c7f310c pwnables 1 +1297561686 3c7f310c pwnables 1 +1297561696 3c7f310c pwnables 1 +1297561707 3c7f310c pwnables 1 +1297561718 3c7f310c pwnables 1 +1297561728 3c7f310c pwnables 1 +1297561739 3c7f310c pwnables 1 +1297561750 3c7f310c pwnables 1 +1297561761 3c7f310c pwnables 1 +1297561772 3c7f310c pwnables 1 +1297561782 3c7f310c pwnables 1 +1297561793 3c7f310c pwnables 1 +1297561804 3c7f310c pwnables 1 +1297561815 3c7f310c pwnables 1 +1297561825 3c7f310c pwnables 1 +1297561836 3c7f310c pwnables 1 +1297561847 3c7f310c pwnables 1 +1297561858 3c7f310c pwnables 1 +1297561869 3c7f310c pwnables 1 +1297561880 3c7f310c pwnables 1 +1297561890 3c7f310c pwnables 1 +1297561900 3c7f310c pwnables 1 +1297561911 3c7f310c pwnables 1 +1297561922 3c7f310c pwnables 1 +1297561933 3c7f310c pwnables 1 +1297561944 3c7f310c pwnables 1 +1297561955 3c7f310c pwnables 1 +1297561966 3c7f310c pwnables 1 +1297561977 3c7f310c pwnables 1 +1297561988 3c7f310c pwnables 1 +1297561988 c206e4c6 pwnables 1 +1297561997 a8d58590 pwnables 1 +1297561998 a8d58590 pwnables 1 +1297561998 a8d58590 pwnables 1 +1297561999 3c7f310c pwnables 1 +1297561999 a8d58590 pwnables 1 +1297562000 a8d58590 pwnables 1 +1297562001 a8d58590 pwnables 1 +1297562001 a8d58590 pwnables 1 +1297562002 a8d58590 pwnables 1 +1297562002 a8d58590 pwnables 1 +1297562003 a8d58590 pwnables 1 +1297562004 a8d58590 pwnables 1 +1297562004 a8d58590 pwnables 1 +1297562005 a8d58590 pwnables 1 +1297562005 a8d58590 pwnables 1 +1297562006 a8d58590 pwnables 1 +1297562007 a8d58590 pwnables 1 +1297562007 a8d58590 pwnables 1 +1297562008 a8d58590 pwnables 1 +1297562008 a8d58590 pwnables 1 +1297562009 a8d58590 pwnables 1 +1297562010 a8d58590 pwnables 1 +1297562011 3c7f310c pwnables 1 +1297562011 a8d58590 pwnables 1 +1297562011 a8d58590 pwnables 1 +1297562012 a8d58590 pwnables 1 +1297562013 a8d58590 pwnables 1 +1297562013 a8d58590 pwnables 1 +1297562014 a8d58590 pwnables 1 +1297562014 a8d58590 pwnables 1 +1297562015 a8d58590 pwnables 1 +1297562016 a8d58590 pwnables 1 +1297562016 a8d58590 pwnables 1 +1297562017 a8d58590 pwnables 1 +1297562017 a8d58590 pwnables 1 +1297562018 a8d58590 pwnables 1 +1297562022 3c7f310c pwnables 1 +1297562033 3c7f310c pwnables 1 +1297562044 3c7f310c pwnables 1 +1297562055 3c7f310c pwnables 1 +1297562066 3c7f310c pwnables 1 +1297562076 3c7f310c pwnables 1 +1297562088 3c7f310c pwnables 1 +1297562100 3c7f310c pwnables 1 +1297562102 c206e4c6 pwnables 1 +1297562110 a8d58590 pwnables 1 +1297562111 a8d58590 pwnables 1 +1297562112 3c7f310c pwnables 1 +1297562113 a8d58590 pwnables 1 +1297562114 a8d58590 pwnables 1 +1297562115 a8d58590 pwnables 1 +1297562116 a8d58590 pwnables 1 +1297562117 a8d58590 pwnables 1 +1297562119 a8d58590 pwnables 1 +1297562120 a8d58590 pwnables 1 +1297562121 a8d58590 pwnables 1 +1297562122 a8d58590 pwnables 1 +1297562123 3c7f310c pwnables 1 +1297562124 a8d58590 pwnables 1 +1297562124 a8d58590 pwnables 1 +1297562125 a8d58590 pwnables 1 +1297562125 a8d58590 pwnables 1 +1297562126 a8d58590 pwnables 1 +1297562127 a8d58590 pwnables 1 +1297562127 a8d58590 pwnables 1 +1297562128 a8d58590 pwnables 1 +1297562129 a8d58590 pwnables 1 +1297562129 a8d58590 pwnables 1 +1297562130 a8d58590 pwnables 1 +1297562131 a8d58590 pwnables 1 +1297562131 a8d58590 pwnables 1 +1297562132 a8d58590 pwnables 1 +1297562133 a8d58590 pwnables 1 +1297562134 a8d58590 pwnables 1 +1297562134 3c7f310c pwnables 1 +1297562139 c206e4c6 pwnables 1 +1297562145 3c7f310c pwnables 1 +1297562156 3c7f310c pwnables 1 +1297562166 3c7f310c pwnables 1 +1297562168 c206e4c6 pwnables 1 +1297562177 3c7f310c pwnables 1 +1297562188 3c7f310c pwnables 1 +1297562199 3c7f310c pwnables 1 +1297562209 3c7f310c pwnables 1 +1297562220 3c7f310c pwnables 1 +1297562231 3c7f310c pwnables 1 +1297562241 3c7f310c pwnables 1 +1297562251 c206e4c6 pwnables 1 +1297562252 3c7f310c pwnables 1 +1297562260 c206e4c6 tanks 1 +1297562263 3c7f310c pwnables 1 +1297562273 3c7f310c pwnables 1 +1297562280 a8d58590 sequence 600 +1297562283 3c7f310c pwnables 1 +1297562294 3c7f310c pwnables 1 +1297562304 3c7f310c pwnables 1 +1297562316 3c7f310c pwnables 1 +1297562327 3c7f310c pwnables 1 +1297562338 3c7f310c pwnables 1 +1297562349 3c7f310c pwnables 1 +1297562359 3c7f310c pwnables 1 +1297562370 3c7f310c pwnables 1 +1297562375 a8d58590 pwnables 1 +1297562375 a8d58590 pwnables 1 +1297562376 a8d58590 pwnables 1 +1297562376 a8d58590 pwnables 1 +1297562377 a8d58590 pwnables 1 +1297562377 a8d58590 pwnables 1 +1297562378 a8d58590 pwnables 1 +1297562378 a8d58590 pwnables 1 +1297562378 a8d58590 pwnables 1 +1297562379 a8d58590 pwnables 1 +1297562379 a8d58590 pwnables 1 +1297562380 a8d58590 pwnables 1 +1297562381 a8d58590 pwnables 1 +1297562381 3c7f310c pwnables 1 +1297562381 a8d58590 pwnables 1 +1297562382 a8d58590 pwnables 1 +1297562382 a8d58590 pwnables 1 +1297562383 a8d58590 pwnables 1 +1297562383 a8d58590 pwnables 1 +1297562384 a8d58590 pwnables 1 +1297562384 a8d58590 pwnables 1 +1297562385 a8d58590 pwnables 1 +1297562385 a8d58590 pwnables 1 +1297562385 a8d58590 pwnables 1 +1297562386 a8d58590 pwnables 1 +1297562386 a8d58590 pwnables 1 +1297562387 a8d58590 pwnables 1 +1297562387 a8d58590 pwnables 1 +1297562388 a8d58590 pwnables 1 +1297562388 a8d58590 pwnables 1 +1297562389 a8d58590 pwnables 1 +1297562389 a8d58590 pwnables 1 +1297562390 a8d58590 pwnables 1 +1297562390 a8d58590 pwnables 1 +1297562391 a8d58590 pwnables 1 +1297562391 a8d58590 pwnables 1 +1297562392 a8d58590 pwnables 1 +1297562392 3c7f310c pwnables 1 +1297562392 a8d58590 pwnables 1 +1297562393 a8d58590 pwnables 1 +1297562393 a8d58590 pwnables 1 +1297562394 a8d58590 pwnables 1 +1297562395 a8d58590 pwnables 1 +1297562396 a8d58590 pwnables 1 +1297562397 a8d58590 pwnables 1 +1297562398 a8d58590 pwnables 1 +1297562399 a8d58590 pwnables 1 +1297562400 a8d58590 pwnables 1 +1297562401 a8d58590 pwnables 1 +1297562402 a8d58590 pwnables 1 +1297562403 a8d58590 pwnables 1 +1297562404 3c7f310c pwnables 1 +1297562404 a8d58590 pwnables 1 +1297562405 a8d58590 pwnables 1 +1297562406 a8d58590 pwnables 1 +1297562407 a8d58590 pwnables 1 +1297562408 a8d58590 pwnables 1 +1297562409 a8d58590 pwnables 1 +1297562410 a8d58590 pwnables 1 +1297562411 a8d58590 pwnables 1 +1297562412 a8d58590 pwnables 1 +1297562413 a8d58590 pwnables 1 +1297562413 a8d58590 pwnables 1 +1297562414 a8d58590 pwnables 1 +1297562415 a8d58590 pwnables 1 +1297562415 3c7f310c pwnables 1 +1297562415 a8d58590 pwnables 1 +1297562416 a8d58590 pwnables 1 +1297562416 a8d58590 pwnables 1 +1297562417 a8d58590 pwnables 1 +1297562417 a8d58590 pwnables 1 +1297562418 a8d58590 pwnables 1 +1297562418 a8d58590 pwnables 1 +1297562420 a8d58590 pwnables 1 +1297562420 a8d58590 pwnables 1 +1297562421 a8d58590 pwnables 1 +1297562421 a8d58590 pwnables 1 +1297562422 a8d58590 pwnables 1 +1297562422 a8d58590 pwnables 1 +1297562423 a8d58590 pwnables 1 +1297562423 a8d58590 pwnables 1 +1297562424 a8d58590 pwnables 1 +1297562424 a8d58590 pwnables 1 +1297562425 a8d58590 pwnables 1 +1297562425 a8d58590 pwnables 1 +1297562426 a8d58590 pwnables 1 +1297562426 3c7f310c pwnables 1 +1297562426 a8d58590 pwnables 1 +1297562427 a8d58590 pwnables 1 +1297562427 a8d58590 pwnables 1 +1297562428 a8d58590 pwnables 1 +1297562428 a8d58590 pwnables 1 +1297562429 a8d58590 pwnables 1 +1297562429 a8d58590 pwnables 1 +1297562430 a8d58590 pwnables 1 +1297562430 a8d58590 pwnables 1 +1297562431 a8d58590 pwnables 1 +1297562431 a8d58590 pwnables 1 +1297562431 a8d58590 pwnables 1 +1297562432 a8d58590 pwnables 1 +1297562432 a8d58590 pwnables 1 +1297562437 3c7f310c pwnables 1 +1297562447 3c7f310c pwnables 1 +1297562458 3c7f310c pwnables 1 +1297562469 3c7f310c pwnables 1 +1297562480 3c7f310c pwnables 1 +1297562490 3c7f310c pwnables 1 +1297562501 3c7f310c pwnables 1 +1297562512 3c7f310c pwnables 1 +1297562522 3c7f310c pwnables 1 +1297562533 3c7f310c pwnables 1 +1297562544 3c7f310c pwnables 1 +1297562555 3c7f310c pwnables 1 +1297562566 3c7f310c pwnables 1 +1297562569 f0cfd260 sequence 600 +1297562577 3c7f310c pwnables 1 +1297562587 3c7f310c pwnables 1 +1297562598 3c7f310c pwnables 1 +1297562609 3c7f310c pwnables 1 +1297562620 3c7f310c pwnables 1 +1297562630 3c7f310c pwnables 1 +1297562641 3c7f310c pwnables 1 +1297562652 3c7f310c pwnables 1 +1297562662 3c7f310c pwnables 1 +1297562673 3c7f310c pwnables 1 +1297562684 3c7f310c pwnables 1 +1297562694 3c7f310c pwnables 1 +1297562707 3c7f310c pwnables 1 +1297562717 3c7f310c pwnables 1 +1297562728 3c7f310c pwnables 1 +1297562739 3c7f310c pwnables 1 +1297562743 3c7f310c tanks 1 +1297562749 3c7f310c pwnables 1 +1297562760 3c7f310c pwnables 1 +1297562771 3c7f310c pwnables 1 +1297562782 3c7f310c pwnables 1 +1297562792 3c7f310c pwnables 1 +1297562803 3c7f310c pwnables 1 +1297562814 3c7f310c pwnables 1 +1297562824 3c7f310c pwnables 1 +1297562837 3c7f310c pwnables 1 +1297562847 3c7f310c pwnables 1 +1297562858 3c7f310c pwnables 1 +1297562869 3c7f310c pwnables 1 +1297562877 a8d58590 steg 70 +1297562879 3c7f310c pwnables 1 +1297562890 3c7f310c pwnables 1 +1297562901 3c7f310c pwnables 1 +1297562912 3c7f310c pwnables 1 +1297562922 3c7f310c pwnables 1 +1297562933 3c7f310c pwnables 1 +1297562944 3c7f310c pwnables 1 +1297562954 3c7f310c pwnables 1 +1297562961 a8d58590 sequence 700 +1297562965 3c7f310c pwnables 1 +1297562976 3c7f310c pwnables 1 +1297562986 3c7f310c pwnables 1 +1297562997 3c7f310c pwnables 1 +1297563007 3c7f310c pwnables 1 +1297563017 3c7f310c pwnables 1 +1297563028 3c7f310c pwnables 1 +1297563039 3c7f310c pwnables 1 +1297563050 3c7f310c pwnables 1 +1297563060 3c7f310c pwnables 1 +1297563071 3c7f310c pwnables 1 +1297563082 3c7f310c pwnables 1 +1297563093 3c7f310c pwnables 1 +1297563104 3c7f310c pwnables 1 +1297563116 3c7f310c pwnables 1 +1297563128 3c7f310c pwnables 1 +1297563132 a8d58590 pwnables 1 +1297563132 a8d58590 pwnables 1 +1297563133 a8d58590 pwnables 1 +1297563133 a8d58590 pwnables 1 +1297563134 a8d58590 pwnables 1 +1297563134 a8d58590 pwnables 1 +1297563135 a8d58590 pwnables 1 +1297563135 a8d58590 pwnables 1 +1297563136 a8d58590 pwnables 1 +1297563136 a8d58590 pwnables 1 +1297563137 a8d58590 pwnables 1 +1297563137 a8d58590 pwnables 1 +1297563138 a8d58590 pwnables 1 +1297563138 3c7f310c pwnables 1 +1297563140 a8d58590 pwnables 1 +1297563140 a8d58590 pwnables 1 +1297563141 a8d58590 pwnables 1 +1297563141 a8d58590 pwnables 1 +1297563142 a8d58590 pwnables 1 +1297563142 a8d58590 pwnables 1 +1297563143 a8d58590 pwnables 1 +1297563143 a8d58590 pwnables 1 +1297563144 a8d58590 pwnables 1 +1297563144 a8d58590 pwnables 1 +1297563145 a8d58590 pwnables 1 +1297563145 a8d58590 pwnables 1 +1297563146 a8d58590 pwnables 1 +1297563146 a8d58590 pwnables 1 +1297563147 a8d58590 pwnables 1 +1297563147 a8d58590 pwnables 1 +1297563147 a8d58590 pwnables 1 +1297563148 a8d58590 pwnables 1 +1297563149 a8d58590 pwnables 1 +1297563149 3c7f310c pwnables 1 +1297563149 a8d58590 pwnables 1 +1297563150 a8d58590 pwnables 1 +1297563150 a8d58590 pwnables 1 +1297563151 a8d58590 pwnables 1 +1297563151 a8d58590 pwnables 1 +1297563152 a8d58590 pwnables 1 +1297563152 a8d58590 pwnables 1 +1297563153 a8d58590 pwnables 1 +1297563153 a8d58590 pwnables 1 +1297563154 a8d58590 pwnables 1 +1297563154 a8d58590 pwnables 1 +1297563154 a8d58590 pwnables 1 +1297563155 a8d58590 pwnables 1 +1297563155 a8d58590 pwnables 1 +1297563156 a8d58590 pwnables 1 +1297563156 a8d58590 pwnables 1 +1297563157 a8d58590 pwnables 1 +1297563157 a8d58590 pwnables 1 +1297563158 a8d58590 pwnables 1 +1297563158 a8d58590 pwnables 1 +1297563159 a8d58590 pwnables 1 +1297563159 a8d58590 pwnables 1 +1297563160 a8d58590 pwnables 1 +1297563160 3c7f310c pwnables 1 +1297563161 a8d58590 pwnables 1 +1297563161 a8d58590 pwnables 1 +1297563161 a8d58590 pwnables 1 +1297563162 a8d58590 pwnables 1 +1297563162 a8d58590 pwnables 1 +1297563163 a8d58590 pwnables 1 +1297563163 a8d58590 pwnables 1 +1297563164 a8d58590 pwnables 1 +1297563164 a8d58590 pwnables 1 +1297563165 a8d58590 pwnables 1 +1297563165 a8d58590 pwnables 1 +1297563166 a8d58590 pwnables 1 +1297563166 a8d58590 pwnables 1 +1297563167 a8d58590 pwnables 1 +1297563167 a8d58590 pwnables 1 +1297563168 a8d58590 pwnables 1 +1297563168 a8d58590 pwnables 1 +1297563169 a8d58590 pwnables 1 +1297563169 a8d58590 pwnables 1 +1297563170 a8d58590 pwnables 1 +1297563170 a8d58590 pwnables 1 +1297563171 a8d58590 pwnables 1 +1297563171 3c7f310c pwnables 1 +1297563171 a8d58590 pwnables 1 +1297563172 a8d58590 pwnables 1 +1297563172 a8d58590 pwnables 1 +1297563173 a8d58590 pwnables 1 +1297563173 a8d58590 pwnables 1 +1297563174 a8d58590 pwnables 1 +1297563174 a8d58590 pwnables 1 +1297563175 a8d58590 pwnables 1 +1297563176 a8d58590 pwnables 1 +1297563176 a8d58590 pwnables 1 +1297563177 a8d58590 pwnables 1 +1297563177 a8d58590 pwnables 1 +1297563178 a8d58590 pwnables 1 +1297563178 a8d58590 pwnables 1 +1297563179 a8d58590 pwnables 1 +1297563179 a8d58590 pwnables 1 +1297563180 a8d58590 pwnables 1 +1297563181 a8d58590 pwnables 1 +1297563181 a8d58590 pwnables 1 +1297563182 a8d58590 pwnables 1 +1297563182 3c7f310c pwnables 1 +1297563183 a8d58590 pwnables 1 +1297563183 a8d58590 pwnables 1 +1297563184 a8d58590 pwnables 1 +1297563184 a8d58590 pwnables 1 +1297563186 a8d58590 pwnables 1 +1297563187 a8d58590 pwnables 1 +1297563187 a8d58590 pwnables 1 +1297563188 a8d58590 pwnables 1 +1297563188 a8d58590 pwnables 1 +1297563189 a8d58590 pwnables 1 +1297563189 a8d58590 pwnables 1 +1297563190 a8d58590 pwnables 1 +1297563191 a8d58590 pwnables 1 +1297563192 a8d58590 pwnables 1 +1297563194 a8d58590 pwnables 1 +1297563194 3c7f310c pwnables 1 +1297563195 a8d58590 pwnables 1 +1297563196 a8d58590 pwnables 1 +1297563197 a8d58590 pwnables 1 +1297563198 a8d58590 pwnables 1 +1297563199 a8d58590 pwnables 1 +1297563200 a8d58590 pwnables 1 +1297563201 a8d58590 pwnables 1 +1297563201 a8d58590 pwnables 1 +1297563202 a8d58590 pwnables 1 +1297563203 a8d58590 pwnables 1 +1297563204 a8d58590 pwnables 1 +1297563206 3c7f310c pwnables 1 +1297563206 a8d58590 pwnables 1 +1297563207 a8d58590 pwnables 1 +1297563208 a8d58590 pwnables 1 +1297563209 a8d58590 pwnables 1 +1297563210 a8d58590 pwnables 1 +1297563211 a8d58590 pwnables 1 +1297563211 a8d58590 pwnables 1 +1297563212 a8d58590 pwnables 1 +1297563212 a8d58590 pwnables 1 +1297563213 a8d58590 pwnables 1 +1297563213 a8d58590 pwnables 1 +1297563214 a8d58590 pwnables 1 +1297563214 a8d58590 pwnables 1 +1297563214 a8d58590 pwnables 1 +1297563215 a8d58590 pwnables 1 +1297563216 a8d58590 pwnables 1 +1297563216 a8d58590 pwnables 1 +1297563217 3c7f310c pwnables 1 +1297563217 a8d58590 pwnables 1 +1297563218 a8d58590 pwnables 1 +1297563218 a8d58590 pwnables 1 +1297563219 a8d58590 pwnables 1 +1297563219 a8d58590 pwnables 1 +1297563219 a8d58590 pwnables 1 +1297563220 a8d58590 pwnables 1 +1297563221 a8d58590 pwnables 1 +1297563221 a8d58590 pwnables 1 +1297563222 a8d58590 pwnables 1 +1297563222 a8d58590 pwnables 1 +1297563223 a8d58590 pwnables 1 +1297563223 a8d58590 pwnables 1 +1297563224 a8d58590 pwnables 1 +1297563224 a8d58590 pwnables 1 +1297563226 a8d58590 pwnables 1 +1297563227 a8d58590 pwnables 1 +1297563228 a8d58590 pwnables 1 +1297563228 3c7f310c pwnables 1 +1297563228 a8d58590 pwnables 1 +1297563229 a8d58590 pwnables 1 +1297563229 a8d58590 pwnables 1 +1297563230 a8d58590 pwnables 1 +1297563230 a8d58590 pwnables 1 +1297563231 a8d58590 pwnables 1 +1297563231 a8d58590 pwnables 1 +1297563232 a8d58590 pwnables 1 +1297563232 a8d58590 pwnables 1 +1297563233 a8d58590 pwnables 1 +1297563233 a8d58590 pwnables 1 +1297563234 a8d58590 pwnables 1 +1297563234 a8d58590 pwnables 1 +1297563235 a8d58590 pwnables 1 +1297563235 a8d58590 pwnables 1 +1297563236 a8d58590 pwnables 1 +1297563236 a8d58590 pwnables 1 +1297563237 a8d58590 pwnables 1 +1297563237 a8d58590 pwnables 1 +1297563238 a8d58590 pwnables 1 +1297563238 a8d58590 pwnables 1 +1297563239 a8d58590 pwnables 1 +1297563239 3c7f310c pwnables 1 +1297563239 a8d58590 pwnables 1 +1297563240 a8d58590 pwnables 1 +1297563241 a8d58590 pwnables 1 +1297563241 a8d58590 pwnables 1 +1297563242 a8d58590 pwnables 1 +1297563242 a8d58590 pwnables 1 +1297563243 a8d58590 pwnables 1 +1297563243 a8d58590 pwnables 1 +1297563244 a8d58590 pwnables 1 +1297563244 a8d58590 pwnables 1 +1297563245 a8d58590 pwnables 1 +1297563245 a8d58590 pwnables 1 +1297563246 a8d58590 pwnables 1 +1297563246 a8d58590 pwnables 1 +1297563247 a8d58590 pwnables 1 +1297563248 a8d58590 pwnables 1 +1297563249 a8d58590 pwnables 1 +1297563251 a8d58590 pwnables 1 +1297563251 3c7f310c pwnables 1 +1297563252 a8d58590 pwnables 1 +1297563253 a8d58590 pwnables 1 +1297563254 a8d58590 pwnables 1 +1297563254 a8d58590 pwnables 1 +1297563255 a8d58590 pwnables 1 +1297563256 a8d58590 pwnables 1 +1297563257 a8d58590 pwnables 1 +1297563258 a8d58590 pwnables 1 +1297563260 a8d58590 pwnables 1 +1297563262 a8d58590 pwnables 1 +1297563262 3c7f310c pwnables 1 +1297563263 a8d58590 pwnables 1 +1297563264 a8d58590 pwnables 1 +1297563265 a8d58590 pwnables 1 +1297563266 a8d58590 pwnables 1 +1297563266 a8d58590 pwnables 1 +1297563267 a8d58590 pwnables 1 +1297563268 a8d58590 pwnables 1 +1297563269 a8d58590 pwnables 1 +1297563270 a8d58590 pwnables 1 +1297563271 a8d58590 pwnables 1 +1297563273 a8d58590 pwnables 1 +1297563274 3c7f310c pwnables 1 +1297563275 a8d58590 pwnables 1 +1297563276 a8d58590 pwnables 1 +1297563278 a8d58590 pwnables 1 +1297563279 a8d58590 pwnables 1 +1297563281 a8d58590 pwnables 1 +1297563282 a8d58590 pwnables 1 +1297563283 a8d58590 pwnables 1 +1297563285 a8d58590 pwnables 1 +1297563287 3c7f310c pwnables 1 +1297563287 a8d58590 pwnables 1 +1297563288 a8d58590 pwnables 1 +1297563290 a8d58590 pwnables 1 +1297563291 a8d58590 pwnables 1 +1297563293 a8d58590 pwnables 1 +1297563298 3c7f310c pwnables 1 +1297563310 3c7f310c pwnables 1 +1297563322 3c7f310c pwnables 1 +1297563333 3c7f310c pwnables 1 +1297563345 3c7f310c pwnables 1 +1297563356 3c7f310c pwnables 1 +1297563368 3c7f310c pwnables 1 +1297563380 3c7f310c pwnables 1 +1297563392 3c7f310c pwnables 1 +1297563403 3c7f310c pwnables 1 +1297563415 3c7f310c pwnables 1 +1297563427 3c7f310c pwnables 1 +1297563439 3c7f310c pwnables 1 +1297563452 3c7f310c pwnables 1 +1297563464 3c7f310c pwnables 1 +1297563477 3c7f310c pwnables 1 +1297563489 3c7f310c pwnables 1 +1297563502 3c7f310c pwnables 1 +1297563514 3c7f310c pwnables 1 +1297563526 3c7f310c pwnables 1 +1297563538 3c7f310c pwnables 1 +1297563549 3c7f310c pwnables 1 +1297563563 3c7f310c pwnables 1 +1297563576 3c7f310c pwnables 1 +1297563589 3c7f310c pwnables 1 +1297563602 3c7f310c pwnables 1 +1297563614 3c7f310c pwnables 1 +1297563628 3c7f310c pwnables 1 +1297563641 3c7f310c pwnables 1 +1297563654 3c7f310c pwnables 1 +1297563667 3c7f310c pwnables 1 +1297563679 3c7f310c pwnables 1 +1297563692 3c7f310c pwnables 1 +1297563705 3c7f310c pwnables 1 +1297563718 3c7f310c pwnables 1 +1297563721 a8d58590 pwnables 1 +1297563724 a8d58590 pwnables 1 +1297563726 a8d58590 pwnables 1 +1297563729 a8d58590 pwnables 1 +1297563731 3c7f310c pwnables 1 +1297563731 a8d58590 pwnables 1 +1297563734 a8d58590 pwnables 1 +1297563736 a8d58590 pwnables 1 +1297563738 a8d58590 pwnables 1 +1297563742 a8d58590 pwnables 1 +1297563744 3c7f310c pwnables 1 +1297563745 a8d58590 pwnables 1 +1297563747 a8d58590 pwnables 1 +1297563750 a8d58590 pwnables 1 +1297563752 a8d58590 pwnables 1 +1297563752 a8d58590 pwnables 1 +1297563754 a8d58590 pwnables 1 +1297563754 a8d58590 pwnables 1 +1297563757 a8d58590 pwnables 1 +1297563757 3c7f310c pwnables 1 +1297563757 a8d58590 pwnables 1 +1297563759 a8d58590 pwnables 1 +1297563760 a8d58590 pwnables 1 +1297563762 a8d58590 pwnables 1 +1297563762 a8d58590 pwnables 1 +1297563764 a8d58590 pwnables 1 +1297563764 a8d58590 pwnables 1 +1297563766 a8d58590 pwnables 1 +1297563767 a8d58590 pwnables 1 +1297563769 a8d58590 pwnables 1 +1297563770 a8d58590 pwnables 1 +1297563770 3c7f310c pwnables 1 +1297563771 a8d58590 pwnables 1 +1297563772 a8d58590 pwnables 1 +1297563774 a8d58590 pwnables 1 +1297563775 a8d58590 pwnables 1 +1297563777 a8d58590 pwnables 1 +1297563778 a8d58590 pwnables 1 +1297563780 a8d58590 pwnables 1 +1297563781 a8d58590 pwnables 1 +1297563783 a8d58590 pwnables 1 +1297563784 3c7f310c pwnables 1 +1297563784 a8d58590 pwnables 1 +1297563786 a8d58590 pwnables 1 +1297563787 a8d58590 pwnables 1 +1297563789 a8d58590 pwnables 1 +1297563790 a8d58590 pwnables 1 +1297563791 a8d58590 pwnables 1 +1297563794 a8d58590 pwnables 1 +1297563795 a8d58590 pwnables 1 +1297563797 3c7f310c pwnables 1 +1297563797 a8d58590 pwnables 1 +1297563798 a8d58590 pwnables 1 +1297563800 a8d58590 pwnables 1 +1297563801 a8d58590 pwnables 1 +1297563803 a8d58590 pwnables 1 +1297563804 a8d58590 pwnables 1 +1297563806 a8d58590 pwnables 1 +1297563807 a8d58590 pwnables 1 +1297563810 a8d58590 pwnables 1 +1297563810 3c7f310c pwnables 1 +1297563810 a8d58590 pwnables 1 +1297563811 3c7f310c pwnables 1 +1297563813 a8d58590 pwnables 1 +1297563813 a8d58590 pwnables 1 +1297563816 a8d58590 pwnables 1 +1297563816 a8d58590 pwnables 1 +1297563819 a8d58590 pwnables 1 +1297563819 a8d58590 pwnables 1 +1297563822 a8d58590 pwnables 1 +1297563822 a8d58590 pwnables 1 +1297563824 3c7f310c pwnables 1 +1297563825 a8d58590 pwnables 1 +1297563825 a8d58590 pwnables 1 +1297563828 a8d58590 pwnables 1 +1297563828 a8d58590 pwnables 1 +1297563831 a8d58590 pwnables 1 +1297563831 a8d58590 pwnables 1 +1297563834 a8d58590 pwnables 1 +1297563834 a8d58590 pwnables 1 +1297563837 a8d58590 pwnables 1 +1297563837 a8d58590 pwnables 1 +1297563838 3c7f310c pwnables 1 +1297563840 a8d58590 pwnables 1 +1297563840 a8d58590 pwnables 1 +1297563842 a8d58590 pwnables 1 +1297563842 a8d58590 pwnables 1 +1297563845 3c7f310c pwnables 1 +1297563845 a8d58590 pwnables 1 +1297563845 a8d58590 pwnables 1 +1297563847 a8d58590 pwnables 1 +1297563847 a8d58590 pwnables 1 +1297563850 a8d58590 pwnables 1 +1297563850 a8d58590 pwnables 1 +1297563851 3c7f310c pwnables 1 +1297563853 a8d58590 pwnables 1 +1297563853 a8d58590 pwnables 1 +1297563855 a8d58590 pwnables 1 +1297563855 a8d58590 pwnables 1 +1297563857 a8d58590 pwnables 1 +1297563858 a8d58590 pwnables 1 +1297563859 a8d58590 pwnables 1 +1297563862 a8d58590 pwnables 1 +1297563863 3c7f310c pwnables 1 +1297563864 a8d58590 pwnables 1 +1297563866 a8d58590 pwnables 1 +1297563868 a8d58590 pwnables 1 +1297563870 a8d58590 pwnables 1 +1297563872 a8d58590 pwnables 1 +1297563874 a8d58590 pwnables 1 +1297563876 3c7f310c pwnables 1 +1297563876 a8d58590 pwnables 1 +1297563878 a8d58590 pwnables 1 +1297563880 a8d58590 pwnables 1 +1297563882 a8d58590 pwnables 1 +1297563884 a8d58590 pwnables 1 +1297563886 a8d58590 pwnables 1 +1297563888 a8d58590 pwnables 1 +1297563889 3c7f310c pwnables 1 +1297563890 a8d58590 pwnables 1 +1297563892 a8d58590 pwnables 1 +1297563894 a8d58590 pwnables 1 +1297563897 a8d58590 pwnables 1 +1297563900 a8d58590 pwnables 1 +1297563902 3c7f310c pwnables 1 +1297563903 a8d58590 pwnables 1 +1297563905 a8d58590 pwnables 1 +1297563908 a8d58590 pwnables 1 +1297563910 a8d58590 pwnables 1 +1297563912 a8d58590 pwnables 1 +1297563915 3c7f310c pwnables 1 +1297563915 a8d58590 pwnables 1 +1297563918 a8d58590 pwnables 1 +1297563928 3c7f310c pwnables 1 +1297563940 3c7f310c pwnables 1 +1297563953 3c7f310c pwnables 1 +1297563954 a8d58590 pwnables 1 +1297563956 a8d58590 pwnables 1 +1297563957 a8d58590 pwnables 1 +1297563959 a8d58590 pwnables 1 +1297563960 c206e4c6 tanks 1 +1297563961 a8d58590 pwnables 1 +1297563962 a8d58590 pwnables 1 +1297563964 a8d58590 pwnables 1 +1297563965 3c7f310c pwnables 1 +1297563965 a8d58590 pwnables 1 +1297563967 a8d58590 pwnables 1 +1297563968 a8d58590 pwnables 1 +1297563970 a8d58590 pwnables 1 +1297563971 a8d58590 pwnables 1 +1297563972 a8d58590 pwnables 1 +1297563974 a8d58590 pwnables 1 +1297563975 a8d58590 pwnables 1 +1297563977 3c7f310c pwnables 1 +1297563977 a8d58590 pwnables 1 +1297563978 a8d58590 pwnables 1 +1297563981 a8d58590 pwnables 1 +1297563982 a8d58590 pwnables 1 +1297563984 a8d58590 pwnables 1 +1297563985 a8d58590 pwnables 1 +1297563986 a8d58590 pwnables 1 +1297563989 a8d58590 pwnables 1 +1297563989 3c7f310c pwnables 1 +1297563990 a8d58590 pwnables 1 +1297563992 a8d58590 pwnables 1 +1297563993 a8d58590 pwnables 1 +1297563995 a8d58590 pwnables 1 +1297563996 a8d58590 pwnables 1 +1297563997 a8d58590 pwnables 1 +1297563999 a8d58590 pwnables 1 +1297564001 a8d58590 pwnables 1 +1297564001 3c7f310c pwnables 1 +1297564002 a8d58590 pwnables 1 +1297564004 a8d58590 pwnables 1 +1297564006 a8d58590 pwnables 1 +1297564008 a8d58590 pwnables 1 +1297564014 3c7f310c pwnables 1 +1297564026 3c7f310c pwnables 1 +1297564037 3c7f310c pwnables 1 +1297564049 3c7f310c pwnables 1 +1297564061 3c7f310c pwnables 1 +1297564072 3c7f310c pwnables 1 +1297564083 3c7f310c tanks 1 +1297564084 3c7f310c pwnables 1 +1297564096 3c7f310c pwnables 1 +1297564099 a8d58590 pwnables 1 +1297564101 a8d58590 pwnables 1 +1297564102 a8d58590 pwnables 1 +1297564104 a8d58590 pwnables 1 +1297564105 a8d58590 pwnables 1 +1297564107 3c7f310c pwnables 1 +1297564107 a8d58590 pwnables 1 +1297564109 a8d58590 pwnables 1 +1297564110 a8d58590 pwnables 1 +1297564112 a8d58590 pwnables 1 +1297564113 a8d58590 pwnables 1 +1297564115 a8d58590 pwnables 1 +1297564116 a8d58590 pwnables 1 +1297564118 a8d58590 pwnables 1 +1297564119 3c7f310c pwnables 1 +1297564120 a8d58590 pwnables 1 +1297564121 a8d58590 pwnables 1 +1297564123 a8d58590 pwnables 1 +1297564124 a8d58590 pwnables 1 +1297564125 a8d58590 pwnables 1 +1297564127 a8d58590 pwnables 1 +1297564128 a8d58590 pwnables 1 +1297564129 a8d58590 pwnables 1 +1297564130 a8d58590 pwnables 1 +1297564131 3c7f310c pwnables 1 +1297564131 a8d58590 pwnables 1 +1297564132 a8d58590 pwnables 1 +1297564133 a8d58590 pwnables 1 +1297564134 a8d58590 pwnables 1 +1297564135 a8d58590 pwnables 1 +1297564136 a8d58590 pwnables 1 +1297564137 a8d58590 pwnables 1 +1297564138 a8d58590 pwnables 1 +1297564142 3c7f310c pwnables 1 +1297564153 3c7f310c pwnables 1 +1297564164 3c7f310c pwnables 1 +1297564175 3c7f310c pwnables 1 +1297564187 3c7f310c pwnables 1 +1297564198 3c7f310c pwnables 1 +1297564200 a8d58590 pwnables 1 +1297564201 a8d58590 pwnables 1 +1297564202 a8d58590 pwnables 1 +1297564203 a8d58590 pwnables 1 +1297564205 a8d58590 pwnables 1 +1297564206 a8d58590 pwnables 1 +1297564207 a8d58590 pwnables 1 +1297564208 a8d58590 pwnables 1 +1297564208 a8d58590 pwnables 1 +1297564209 a8d58590 pwnables 1 +1297564210 3c7f310c pwnables 1 +1297564210 a8d58590 pwnables 1 +1297564210 a8d58590 pwnables 1 +1297564221 3c7f310c pwnables 1 +1297564231 3c7f310c pwnables 1 +1297564242 3c7f310c pwnables 1 +1297564253 3c7f310c pwnables 1 +1297564264 3c7f310c pwnables 1 +1297564265 c206e4c6 tanks 1 +1297564275 3c7f310c pwnables 1 +1297564285 3c7f310c pwnables 1 +1297564296 3c7f310c pwnables 1 +1297564307 3c7f310c pwnables 1 +1297564315 f0cfd260 steg 20 +1297564317 3c7f310c pwnables 1 +1297564328 3c7f310c pwnables 1 +1297564339 3c7f310c pwnables 1 +1297564350 3c7f310c pwnables 1 +1297564361 3c7f310c pwnables 1 +1297564371 3c7f310c pwnables 1 +1297564383 3c7f310c pwnables 1 +1297564394 3c7f310c pwnables 1 +1297564405 3c7f310c pwnables 1 +1297564416 3c7f310c pwnables 1 +1297564427 3c7f310c pwnables 1 +1297564438 3c7f310c pwnables 1 +1297564450 3c7f310c pwnables 1 +1297564461 3c7f310c pwnables 1 +1297564472 3c7f310c pwnables 1 +1297564483 3c7f310c pwnables 1 +1297564495 3c7f310c pwnables 1 +1297564507 3c7f310c pwnables 1 +1297564518 3c7f310c pwnables 1 +1297564529 3c7f310c pwnables 1 +1297564539 a8d58590 pwnables 1 +1297564540 3c7f310c pwnables 1 +1297564540 a8d58590 pwnables 1 +1297564541 a8d58590 pwnables 1 +1297564541 a8d58590 pwnables 1 +1297564542 a8d58590 pwnables 1 +1297564542 a8d58590 pwnables 1 +1297564543 a8d58590 pwnables 1 +1297564543 a8d58590 pwnables 1 +1297564544 a8d58590 pwnables 1 +1297564544 a8d58590 pwnables 1 +1297564545 a8d58590 pwnables 1 +1297564545 a8d58590 pwnables 1 +1297564546 a8d58590 pwnables 1 +1297564546 a8d58590 pwnables 1 +1297564547 a8d58590 pwnables 1 +1297564547 a8d58590 pwnables 1 +1297564548 a8d58590 pwnables 1 +1297564548 a8d58590 pwnables 1 +1297564549 a8d58590 pwnables 1 +1297564549 a8d58590 pwnables 1 +1297564550 a8d58590 pwnables 1 +1297564550 a8d58590 pwnables 1 +1297564551 a8d58590 pwnables 1 +1297564551 3c7f310c pwnables 1 +1297564552 a8d58590 pwnables 1 +1297564552 a8d58590 pwnables 1 +1297564553 a8d58590 pwnables 1 +1297564553 a8d58590 pwnables 1 +1297564554 a8d58590 pwnables 1 +1297564554 a8d58590 pwnables 1 +1297564554 a8d58590 pwnables 1 +1297564555 a8d58590 pwnables 1 +1297564555 a8d58590 pwnables 1 +1297564556 a8d58590 pwnables 1 +1297564556 a8d58590 pwnables 1 +1297564557 a8d58590 pwnables 1 +1297564557 a8d58590 pwnables 1 +1297564558 a8d58590 pwnables 1 +1297564558 a8d58590 pwnables 1 +1297564559 a8d58590 pwnables 1 +1297564559 a8d58590 pwnables 1 +1297564560 a8d58590 pwnables 1 +1297564560 a8d58590 pwnables 1 +1297564561 a8d58590 pwnables 1 +1297564561 a8d58590 pwnables 1 +1297564562 a8d58590 pwnables 1 +1297564562 3c7f310c pwnables 1 +1297564563 a8d58590 pwnables 1 +1297564563 a8d58590 pwnables 1 +1297564564 a8d58590 pwnables 1 +1297564564 a8d58590 pwnables 1 +1297564565 a8d58590 pwnables 1 +1297564565 a8d58590 pwnables 1 +1297564566 a8d58590 pwnables 1 +1297564566 a8d58590 pwnables 1 +1297564567 a8d58590 pwnables 1 +1297564567 a8d58590 pwnables 1 +1297564568 a8d58590 pwnables 1 +1297564568 a8d58590 pwnables 1 +1297564569 a8d58590 pwnables 1 +1297564569 a8d58590 pwnables 1 +1297564570 a8d58590 pwnables 1 +1297564570 a8d58590 pwnables 1 +1297564571 a8d58590 pwnables 1 +1297564571 a8d58590 pwnables 1 +1297564572 a8d58590 pwnables 1 +1297564572 a8d58590 pwnables 1 +1297564573 a8d58590 pwnables 1 +1297564574 3c7f310c pwnables 1 +1297564574 a8d58590 pwnables 1 +1297564574 a8d58590 pwnables 1 +1297564576 a8d58590 pwnables 1 +1297564577 a8d58590 pwnables 1 +1297564578 a8d58590 pwnables 1 +1297564581 a8d58590 pwnables 1 +1297564582 a8d58590 pwnables 1 +1297564583 a8d58590 pwnables 1 +1297564584 a8d58590 pwnables 1 +1297564585 a8d58590 pwnables 1 +1297564586 3c7f310c pwnables 1 +1297564587 a8d58590 pwnables 1 +1297564588 a8d58590 pwnables 1 +1297564589 a8d58590 pwnables 1 +1297564591 a8d58590 pwnables 1 +1297564592 a8d58590 pwnables 1 +1297564593 a8d58590 pwnables 1 +1297564594 a8d58590 pwnables 1 +1297564595 a8d58590 pwnables 1 +1297564596 a8d58590 pwnables 1 +1297564597 a8d58590 pwnables 1 +1297564597 3c7f310c pwnables 1 +1297564598 a8d58590 pwnables 1 +1297564598 a8d58590 pwnables 1 +1297564599 a8d58590 pwnables 1 +1297564599 a8d58590 pwnables 1 +1297564601 a8d58590 pwnables 1 +1297564601 a8d58590 pwnables 1 +1297564602 a8d58590 pwnables 1 +1297564602 a8d58590 pwnables 1 +1297564603 a8d58590 pwnables 1 +1297564603 a8d58590 pwnables 1 +1297564604 a8d58590 pwnables 1 +1297564604 a8d58590 pwnables 1 +1297564605 a8d58590 pwnables 1 +1297564605 a8d58590 pwnables 1 +1297564606 a8d58590 pwnables 1 +1297564606 a8d58590 pwnables 1 +1297564607 a8d58590 pwnables 1 +1297564607 a8d58590 pwnables 1 +1297564608 a8d58590 pwnables 1 +1297564608 a8d58590 pwnables 1 +1297564609 3c7f310c pwnables 1 +1297564609 a8d58590 pwnables 1 +1297564610 a8d58590 pwnables 1 +1297564610 a8d58590 pwnables 1 +1297564610 a8d58590 pwnables 1 +1297564611 a8d58590 pwnables 1 +1297564611 a8d58590 pwnables 1 +1297564612 a8d58590 pwnables 1 +1297564612 a8d58590 pwnables 1 +1297564613 a8d58590 pwnables 1 +1297564613 a8d58590 pwnables 1 +1297564614 a8d58590 pwnables 1 +1297564614 a8d58590 pwnables 1 +1297564615 a8d58590 pwnables 1 +1297564615 a8d58590 pwnables 1 +1297564616 a8d58590 pwnables 1 +1297564616 a8d58590 pwnables 1 +1297564617 a8d58590 pwnables 1 +1297564617 a8d58590 pwnables 1 +1297564618 a8d58590 pwnables 1 +1297564618 a8d58590 pwnables 1 +1297564619 a8d58590 pwnables 1 +1297564620 3c7f310c pwnables 1 +1297564620 a8d58590 pwnables 1 +1297564620 a8d58590 pwnables 1 +1297564621 a8d58590 pwnables 1 +1297564621 a8d58590 pwnables 1 +1297564622 a8d58590 pwnables 1 +1297564622 a8d58590 pwnables 1 +1297564623 a8d58590 pwnables 1 +1297564623 a8d58590 pwnables 1 +1297564624 a8d58590 pwnables 1 +1297564624 a8d58590 pwnables 1 +1297564625 a8d58590 pwnables 1 +1297564625 a8d58590 pwnables 1 +1297564626 a8d58590 pwnables 1 +1297564626 a8d58590 pwnables 1 +1297564627 a8d58590 pwnables 1 +1297564627 a8d58590 pwnables 1 +1297564628 a8d58590 pwnables 1 +1297564628 a8d58590 pwnables 1 +1297564629 a8d58590 pwnables 1 +1297564629 a8d58590 pwnables 1 +1297564630 a8d58590 pwnables 1 +1297564631 3c7f310c pwnables 1 +1297564631 a8d58590 pwnables 1 +1297564631 a8d58590 pwnables 1 +1297564632 a8d58590 pwnables 1 +1297564632 a8d58590 pwnables 1 +1297564633 a8d58590 pwnables 1 +1297564633 a8d58590 pwnables 1 +1297564634 a8d58590 pwnables 1 +1297564635 a8d58590 pwnables 1 +1297564635 a8d58590 pwnables 1 +1297564637 a8d58590 pwnables 1 +1297564638 a8d58590 pwnables 1 +1297564638 a8d58590 pwnables 1 +1297564639 a8d58590 pwnables 1 +1297564639 a8d58590 pwnables 1 +1297564640 a8d58590 pwnables 1 +1297564640 a8d58590 pwnables 1 +1297564641 a8d58590 pwnables 1 +1297564642 3c7f310c pwnables 1 +1297564642 a8d58590 pwnables 1 +1297564643 a8d58590 pwnables 1 +1297564643 a8d58590 pwnables 1 +1297564644 a8d58590 pwnables 1 +1297564644 a8d58590 pwnables 1 +1297564645 a8d58590 pwnables 1 +1297564645 a8d58590 pwnables 1 +1297564646 a8d58590 pwnables 1 +1297564646 a8d58590 pwnables 1 +1297564647 a8d58590 pwnables 1 +1297564647 a8d58590 pwnables 1 +1297564648 a8d58590 pwnables 1 +1297564648 a8d58590 pwnables 1 +1297564649 a8d58590 pwnables 1 +1297564649 a8d58590 pwnables 1 +1297564650 a8d58590 pwnables 1 +1297564650 a8d58590 pwnables 1 +1297564651 a8d58590 pwnables 1 +1297564651 a8d58590 pwnables 1 +1297564652 a8d58590 pwnables 1 +1297564652 a8d58590 pwnables 1 +1297564653 a8d58590 pwnables 1 +1297564653 3c7f310c pwnables 1 +1297564654 a8d58590 pwnables 1 +1297564654 a8d58590 pwnables 1 +1297564655 a8d58590 pwnables 1 +1297564655 a8d58590 pwnables 1 +1297564656 a8d58590 pwnables 1 +1297564658 a8d58590 pwnables 1 +1297564659 a8d58590 pwnables 1 +1297564660 a8d58590 pwnables 1 +1297564661 a8d58590 pwnables 1 +1297564662 a8d58590 pwnables 1 +1297564663 a8d58590 pwnables 1 +1297564665 a8d58590 pwnables 1 +1297564665 3c7f310c pwnables 1 +1297564666 a8d58590 pwnables 1 +1297564667 a8d58590 pwnables 1 +1297564668 a8d58590 pwnables 1 +1297564669 a8d58590 pwnables 1 +1297564670 a8d58590 pwnables 1 +1297564671 a8d58590 pwnables 1 +1297564672 a8d58590 pwnables 1 +1297564673 a8d58590 pwnables 1 +1297564674 a8d58590 pwnables 1 +1297564675 a8d58590 pwnables 1 +1297564676 a8d58590 pwnables 1 +1297564677 3c7f310c pwnables 1 +1297564677 a8d58590 pwnables 1 +1297564678 a8d58590 pwnables 1 +1297564678 a8d58590 pwnables 1 +1297564679 a8d58590 pwnables 1 +1297564679 a8d58590 pwnables 1 +1297564680 a8d58590 pwnables 1 +1297564680 a8d58590 pwnables 1 +1297564681 a8d58590 pwnables 1 +1297564681 a8d58590 pwnables 1 +1297564682 a8d58590 pwnables 1 +1297564682 a8d58590 pwnables 1 +1297564683 a8d58590 pwnables 1 +1297564683 a8d58590 pwnables 1 +1297564684 a8d58590 pwnables 1 +1297564684 a8d58590 pwnables 1 +1297564685 a8d58590 pwnables 1 +1297564685 a8d58590 pwnables 1 +1297564686 a8d58590 pwnables 1 +1297564686 a8d58590 pwnables 1 +1297564687 a8d58590 pwnables 1 +1297564687 3c7f310c pwnables 1 +1297564698 3c7f310c pwnables 1 +1297564709 3c7f310c pwnables 1 +1297564719 3c7f310c pwnables 1 +1297564729 3c7f310c pwnables 1 +1297564740 3c7f310c pwnables 1 +1297564751 3c7f310c pwnables 1 +1297564762 3c7f310c pwnables 1 +1297564772 3c7f310c pwnables 1 +1297564783 3c7f310c pwnables 1 +1297564794 3c7f310c pwnables 1 +1297564805 3c7f310c pwnables 1 +1297564809 c206e4c6 tanks 1 +1297564815 3c7f310c pwnables 1 +1297564826 3c7f310c pwnables 1 +1297564829 f0cfd260 sequence 700 +1297564837 3c7f310c pwnables 1 +1297564847 3c7f310c pwnables 1 +1297564857 3c7f310c pwnables 1 +1297564868 3c7f310c pwnables 1 +1297564870 3c7f310c tanks 1 +1297564879 3c7f310c pwnables 1 +1297564890 3c7f310c pwnables 1 +1297564901 3c7f310c pwnables 1 +1297564911 3c7f310c pwnables 1 +1297564922 3c7f310c pwnables 1 +1297564933 3c7f310c pwnables 1 +1297564943 3c7f310c pwnables 1 +1297564954 3c7f310c pwnables 1 +1297564965 3c7f310c pwnables 1 +1297564976 3c7f310c pwnables 1 +1297564986 3c7f310c pwnables 1 +1297564997 3c7f310c pwnables 1 +1297565008 3c7f310c pwnables 1 +1297565019 3c7f310c pwnables 1 +1297565031 3c7f310c pwnables 1 +1297565042 3c7f310c pwnables 1 +1297565054 3c7f310c pwnables 1 +1297565065 3c7f310c pwnables 1 +1297565076 3c7f310c pwnables 1 +1297565087 3c7f310c pwnables 1 +1297565098 3c7f310c pwnables 1 +1297565110 3c7f310c pwnables 1 +1297565122 3c7f310c pwnables 1 +1297565133 3c7f310c pwnables 1 +1297565144 3c7f310c pwnables 1 +1297565156 3c7f310c pwnables 1 +1297565166 a8d58590 pwnables 1 +1297565167 a8d58590 pwnables 1 +1297565167 3c7f310c pwnables 1 +1297565167 a8d58590 pwnables 1 +1297565168 a8d58590 pwnables 1 +1297565168 a8d58590 pwnables 1 +1297565169 a8d58590 pwnables 1 +1297565169 a8d58590 pwnables 1 +1297565170 a8d58590 pwnables 1 +1297565170 a8d58590 pwnables 1 +1297565171 a8d58590 pwnables 1 +1297565171 a8d58590 pwnables 1 +1297565172 a8d58590 pwnables 1 +1297565172 a8d58590 pwnables 1 +1297565173 a8d58590 pwnables 1 +1297565173 a8d58590 pwnables 1 +1297565174 a8d58590 pwnables 1 +1297565174 a8d58590 pwnables 1 +1297565175 a8d58590 pwnables 1 +1297565175 a8d58590 pwnables 1 +1297565176 a8d58590 pwnables 1 +1297565176 a8d58590 pwnables 1 +1297565177 a8d58590 pwnables 1 +1297565178 a8d58590 pwnables 1 +1297565178 3c7f310c pwnables 1 +1297565178 a8d58590 pwnables 1 +1297565180 a8d58590 pwnables 1 +1297565180 a8d58590 pwnables 1 +1297565181 a8d58590 pwnables 1 +1297565181 a8d58590 pwnables 1 +1297565182 a8d58590 pwnables 1 +1297565182 a8d58590 pwnables 1 +1297565183 a8d58590 pwnables 1 +1297565183 a8d58590 pwnables 1 +1297565184 a8d58590 pwnables 1 +1297565184 a8d58590 pwnables 1 +1297565185 a8d58590 pwnables 1 +1297565185 a8d58590 pwnables 1 +1297565186 a8d58590 pwnables 1 +1297565186 a8d58590 pwnables 1 +1297565187 a8d58590 pwnables 1 +1297565187 a8d58590 pwnables 1 +1297565188 a8d58590 pwnables 1 +1297565189 a8d58590 pwnables 1 +1297565189 3c7f310c pwnables 1 +1297565190 a8d58590 pwnables 1 +1297565191 a8d58590 pwnables 1 +1297565192 a8d58590 pwnables 1 +1297565193 a8d58590 pwnables 1 +1297565194 a8d58590 pwnables 1 +1297565195 a8d58590 pwnables 1 +1297565196 a8d58590 pwnables 1 +1297565197 a8d58590 pwnables 1 +1297565198 a8d58590 pwnables 1 +1297565200 a8d58590 pwnables 1 +1297565201 3c7f310c pwnables 1 +1297565202 a8d58590 pwnables 1 +1297565203 a8d58590 pwnables 1 +1297565204 a8d58590 pwnables 1 +1297565205 a8d58590 pwnables 1 +1297565206 a8d58590 pwnables 1 +1297565207 a8d58590 pwnables 1 +1297565208 a8d58590 pwnables 1 +1297565209 a8d58590 pwnables 1 +1297565210 a8d58590 pwnables 1 +1297565211 a8d58590 pwnables 1 +1297565213 3c7f310c pwnables 1 +1297565213 a8d58590 pwnables 1 +1297565213 a8d58590 pwnables 1 +1297565214 a8d58590 pwnables 1 +1297565214 a8d58590 pwnables 1 +1297565215 a8d58590 pwnables 1 +1297565215 a8d58590 pwnables 1 +1297565216 a8d58590 pwnables 1 +1297565216 a8d58590 pwnables 1 +1297565217 a8d58590 pwnables 1 +1297565217 a8d58590 pwnables 1 +1297565218 a8d58590 pwnables 1 +1297565218 a8d58590 pwnables 1 +1297565219 a8d58590 pwnables 1 +1297565219 a8d58590 pwnables 1 +1297565220 a8d58590 pwnables 1 +1297565220 a8d58590 pwnables 1 +1297565221 a8d58590 pwnables 1 +1297565221 a8d58590 pwnables 1 +1297565222 a8d58590 pwnables 1 +1297565222 a8d58590 pwnables 1 +1297565223 a8d58590 pwnables 1 +1297565224 3c7f310c pwnables 1 +1297565224 a8d58590 pwnables 1 +1297565224 a8d58590 pwnables 1 +1297565225 a8d58590 pwnables 1 +1297565225 a8d58590 pwnables 1 +1297565226 a8d58590 pwnables 1 +1297565226 a8d58590 pwnables 1 +1297565227 a8d58590 pwnables 1 +1297565228 a8d58590 pwnables 1 +1297565228 a8d58590 pwnables 1 +1297565229 a8d58590 pwnables 1 +1297565229 a8d58590 pwnables 1 +1297565230 a8d58590 pwnables 1 +1297565230 a8d58590 pwnables 1 +1297565231 a8d58590 pwnables 1 +1297565231 a8d58590 pwnables 1 +1297565232 a8d58590 pwnables 1 +1297565232 a8d58590 pwnables 1 +1297565233 a8d58590 pwnables 1 +1297565233 a8d58590 pwnables 1 +1297565234 a8d58590 pwnables 1 +1297565234 a8d58590 pwnables 1 +1297565236 3c7f310c pwnables 1 +1297565237 a8d58590 pwnables 1 +1297565237 a8d58590 pwnables 1 +1297565238 a8d58590 pwnables 1 +1297565238 a8d58590 pwnables 1 +1297565239 a8d58590 pwnables 1 +1297565239 a8d58590 pwnables 1 +1297565240 a8d58590 pwnables 1 +1297565240 a8d58590 pwnables 1 +1297565241 a8d58590 pwnables 1 +1297565241 a8d58590 pwnables 1 +1297565242 a8d58590 pwnables 1 +1297565242 a8d58590 pwnables 1 +1297565243 a8d58590 pwnables 1 +1297565243 a8d58590 pwnables 1 +1297565244 a8d58590 pwnables 1 +1297565244 a8d58590 pwnables 1 +1297565245 a8d58590 pwnables 1 +1297565245 a8d58590 pwnables 1 +1297565246 a8d58590 pwnables 1 +1297565246 a8d58590 pwnables 1 +1297565247 a8d58590 pwnables 1 +1297565247 3c7f310c pwnables 1 +1297565248 a8d58590 pwnables 1 +1297565248 a8d58590 pwnables 1 +1297565249 a8d58590 pwnables 1 +1297565249 a8d58590 pwnables 1 +1297565250 a8d58590 pwnables 1 +1297565251 a8d58590 pwnables 1 +1297565252 a8d58590 pwnables 1 +1297565252 a8d58590 pwnables 1 +1297565253 a8d58590 pwnables 1 +1297565253 a8d58590 pwnables 1 +1297565254 a8d58590 pwnables 1 +1297565254 a8d58590 pwnables 1 +1297565255 a8d58590 pwnables 1 +1297565256 a8d58590 pwnables 1 +1297565257 a8d58590 pwnables 1 +1297565257 a8d58590 pwnables 1 +1297565258 a8d58590 pwnables 1 +1297565258 3c7f310c pwnables 1 +1297565259 a8d58590 pwnables 1 +1297565259 a8d58590 pwnables 1 +1297565260 a8d58590 pwnables 1 +1297565260 a8d58590 pwnables 1 +1297565261 a8d58590 pwnables 1 +1297565261 a8d58590 pwnables 1 +1297565262 a8d58590 pwnables 1 +1297565262 a8d58590 pwnables 1 +1297565263 a8d58590 pwnables 1 +1297565263 a8d58590 pwnables 1 +1297565264 a8d58590 pwnables 1 +1297565264 a8d58590 pwnables 1 +1297565265 a8d58590 pwnables 1 +1297565266 a8d58590 pwnables 1 +1297565267 a8d58590 pwnables 1 +1297565267 a8d58590 pwnables 1 +1297565268 a8d58590 pwnables 1 +1297565268 a8d58590 pwnables 1 +1297565269 a8d58590 pwnables 1 +1297565270 a8d58590 pwnables 1 +1297565270 3c7f310c pwnables 1 +1297565270 a8d58590 pwnables 1 +1297565271 a8d58590 pwnables 1 +1297565271 a8d58590 pwnables 1 +1297565272 a8d58590 pwnables 1 +1297565272 a8d58590 pwnables 1 +1297565273 a8d58590 pwnables 1 +1297565274 a8d58590 pwnables 1 +1297565276 a8d58590 pwnables 1 +1297565277 a8d58590 pwnables 1 +1297565278 a8d58590 pwnables 1 +1297565279 a8d58590 pwnables 1 +1297565280 a8d58590 pwnables 1 +1297565281 a8d58590 pwnables 1 +1297565281 3c7f310c pwnables 1 +1297565282 a8d58590 pwnables 1 +1297565283 a8d58590 pwnables 1 +1297565284 a8d58590 pwnables 1 +1297565285 a8d58590 pwnables 1 +1297565287 a8d58590 pwnables 1 +1297565288 a8d58590 pwnables 1 +1297565289 a8d58590 pwnables 1 +1297565290 a8d58590 pwnables 1 +1297565291 a8d58590 pwnables 1 +1297565292 a8d58590 pwnables 1 +1297565293 3c7f310c pwnables 1 +1297565293 a8d58590 pwnables 1 +1297565294 a8d58590 pwnables 1 +1297565295 a8d58590 pwnables 1 +1297565295 a8d58590 pwnables 1 +1297565296 a8d58590 pwnables 1 +1297565296 a8d58590 pwnables 1 +1297565297 a8d58590 pwnables 1 +1297565297 a8d58590 pwnables 1 +1297565298 a8d58590 pwnables 1 +1297565300 a8d58590 pwnables 1 +1297565300 a8d58590 pwnables 1 +1297565301 a8d58590 pwnables 1 +1297565301 a8d58590 pwnables 1 +1297565302 a8d58590 pwnables 1 +1297565302 a8d58590 pwnables 1 +1297565303 a8d58590 pwnables 1 +1297565304 a8d58590 pwnables 1 +1297565304 3c7f310c pwnables 1 +1297565305 a8d58590 pwnables 1 +1297565306 a8d58590 pwnables 1 +1297565306 a8d58590 pwnables 1 +1297565307 a8d58590 pwnables 1 +1297565307 a8d58590 pwnables 1 +1297565316 3c7f310c pwnables 1 +1297565328 3c7f310c pwnables 1 +1297565338 3c7f310c pwnables 1 +1297565349 3c7f310c pwnables 1 +1297565362 3c7f310c pwnables 1 +1297565374 3c7f310c pwnables 1 +1297565386 3c7f310c pwnables 1 +1297565398 3c7f310c pwnables 1 +1297565409 3c7f310c pwnables 1 +1297565419 3c7f310c pwnables 1 +1297565431 3c7f310c pwnables 1 +1297565443 3c7f310c pwnables 1 +1297565455 3c7f310c pwnables 1 +1297565467 3c7f310c pwnables 1 +1297565479 3c7f310c pwnables 1 +1297565490 3c7f310c pwnables 1 +1297565502 3c7f310c pwnables 1 +1297565516 3c7f310c pwnables 1 +1297565529 3c7f310c pwnables 1 +1297565543 3c7f310c pwnables 1 +1297565555 3c7f310c pwnables 1 +1297565567 3c7f310c pwnables 1 +1297565579 3c7f310c pwnables 1 +1297565591 3c7f310c pwnables 1 +1297565604 3c7f310c pwnables 1 +1297565617 3c7f310c pwnables 1 +1297565630 3c7f310c pwnables 1 +1297565642 3c7f310c pwnables 1 +1297565655 3c7f310c pwnables 1 +1297565668 3c7f310c pwnables 1 +1297565681 3c7f310c pwnables 1 +1297565693 3c7f310c pwnables 1 +1297565705 3c7f310c pwnables 1 +1297565717 3c7f310c pwnables 1 +1297565729 3c7f310c pwnables 1 +1297565743 3c7f310c pwnables 1 +1297565756 3c7f310c pwnables 1 +1297565769 3c7f310c pwnables 1 +1297565779 3c7f310c pwnables 1 +1297565791 3c7f310c pwnables 1 +1297565804 3c7f310c pwnables 1 +1297565816 3c7f310c pwnables 1 +1297565828 3c7f310c pwnables 1 +1297565841 3c7f310c pwnables 1 +1297565854 3c7f310c pwnables 1 +1297565862 c206e4c6 tanks 1 +1297565867 3c7f310c pwnables 1 +1297565880 3c7f310c pwnables 1 +1297565888 a8d58590 pwnables 1 +1297565890 a8d58590 pwnables 1 +1297565891 a8d58590 pwnables 1 +1297565892 3c7f310c pwnables 1 +1297565893 a8d58590 pwnables 1 +1297565895 a8d58590 pwnables 1 +1297565896 a8d58590 pwnables 1 +1297565898 a8d58590 pwnables 1 +1297565899 a8d58590 pwnables 1 +1297565903 a8d58590 pwnables 1 +1297565905 3c7f310c pwnables 1 +1297565905 a8d58590 pwnables 1 +1297565907 a8d58590 pwnables 1 +1297565908 a8d58590 pwnables 1 +1297565910 a8d58590 pwnables 1 +1297565912 a8d58590 pwnables 1 +1297565914 a8d58590 pwnables 1 +1297565916 a8d58590 pwnables 1 +1297565917 3c7f310c pwnables 1 +1297565918 a8d58590 pwnables 1 +1297565919 a8d58590 pwnables 1 +1297565921 a8d58590 pwnables 1 +1297565923 a8d58590 pwnables 1 +1297565925 a8d58590 pwnables 1 +1297565926 a8d58590 pwnables 1 +1297565928 a8d58590 pwnables 1 +1297565929 3c7f310c pwnables 1 +1297565930 a8d58590 pwnables 1 +1297565931 a8d58590 pwnables 1 +1297565933 a8d58590 pwnables 1 +1297565934 a8d58590 pwnables 1 +1297565937 a8d58590 pwnables 1 +1297565938 a8d58590 pwnables 1 +1297565940 a8d58590 pwnables 1 +1297565942 3c7f310c pwnables 1 +1297565943 a8d58590 pwnables 1 +1297565945 a8d58590 pwnables 1 +1297565947 a8d58590 pwnables 1 +1297565949 a8d58590 pwnables 1 +1297565951 a8d58590 pwnables 1 +1297565953 a8d58590 pwnables 1 +1297565955 3c7f310c pwnables 1 +1297565956 a8d58590 pwnables 1 +1297565958 a8d58590 pwnables 1 +1297565960 a8d58590 pwnables 1 +1297565962 a8d58590 pwnables 1 +1297565964 a8d58590 pwnables 1 +1297565966 a8d58590 pwnables 1 +1297565968 3c7f310c pwnables 1 +1297565968 a8d58590 pwnables 1 +1297565970 a8d58590 pwnables 1 +1297565973 a8d58590 pwnables 1 +1297565975 a8d58590 pwnables 1 +1297565977 a8d58590 pwnables 1 +1297565979 a8d58590 pwnables 1 +1297565981 3c7f310c pwnables 1 +1297565981 a8d58590 pwnables 1 +1297565983 a8d58590 pwnables 1 +1297565986 a8d58590 pwnables 1 +1297565986 3c7f310c tanks 1 +1297565988 a8d58590 pwnables 1 +1297565989 a8d58590 pwnables 1 +1297565991 a8d58590 pwnables 1 +1297565993 a8d58590 pwnables 1 +1297565994 3c7f310c pwnables 1 +1297565995 a8d58590 pwnables 1 +1297565997 a8d58590 pwnables 1 +1297565999 a8d58590 pwnables 1 +1297566001 a8d58590 pwnables 1 +1297566003 a8d58590 pwnables 1 +1297566006 a8d58590 pwnables 1 +1297566006 3c7f310c pwnables 1 +1297566008 a8d58590 pwnables 1 +1297566010 a8d58590 pwnables 1 +1297566012 a8d58590 pwnables 1 +1297566014 a8d58590 pwnables 1 +1297566016 a8d58590 pwnables 1 +1297566019 a8d58590 pwnables 1 +1297566019 3c7f310c pwnables 1 +1297566021 a8d58590 pwnables 1 +1297566023 a8d58590 pwnables 1 +1297566025 a8d58590 pwnables 1 +1297566027 a8d58590 pwnables 1 +1297566030 a8d58590 pwnables 1 +1297566032 3c7f310c pwnables 1 +1297566032 a8d58590 pwnables 1 +1297566034 a8d58590 pwnables 1 +1297566036 a8d58590 pwnables 1 +1297566038 a8d58590 pwnables 1 +1297566040 a8d58590 pwnables 1 +1297566043 a8d58590 pwnables 1 +1297566044 3c7f310c pwnables 1 +1297566045 a8d58590 pwnables 1 +1297566048 a8d58590 pwnables 1 +1297566050 c206e4c6 tanks 1 +1297566051 a8d58590 pwnables 1 +1297566053 a8d58590 pwnables 1 +1297566056 a8d58590 pwnables 1 +1297566058 3c7f310c pwnables 1 +1297566059 a8d58590 pwnables 1 +1297566062 a8d58590 pwnables 1 +1297566064 a8d58590 pwnables 1 +1297566067 a8d58590 pwnables 1 +1297566070 a8d58590 pwnables 1 +1297566071 3c7f310c pwnables 1 +1297566073 a8d58590 pwnables 1 +1297566076 a8d58590 pwnables 1 +1297566079 a8d58590 pwnables 1 +1297566082 a8d58590 pwnables 1 +1297566085 3c7f310c pwnables 1 +1297566085 a8d58590 pwnables 1 +1297566087 a8d58590 pwnables 1 +1297566090 a8d58590 pwnables 1 +1297566092 a8d58590 pwnables 1 +1297566095 a8d58590 pwnables 1 +1297566098 3c7f310c pwnables 1 +1297566098 a8d58590 pwnables 1 +1297566101 a8d58590 pwnables 1 +1297566103 a8d58590 pwnables 1 +1297566110 3c7f310c pwnables 1 +1297566113 c206e4c6 tanks 1 +1297566123 3c7f310c pwnables 1 +1297566135 3c7f310c pwnables 1 +1297566147 3c7f310c pwnables 1 +1297566159 3c7f310c pwnables 1 +1297566163 3c7f310c pwnables 1 +1297566172 3c7f310c pwnables 1 +1297566177 3c7f310c tanks 1 +1297566185 3c7f310c pwnables 1 +1297566198 3c7f310c pwnables 1 +1297566210 3c7f310c pwnables 1 +1297566220 a8d58590 pwnables 1 +1297566222 3c7f310c pwnables 1 +1297566224 a8d58590 pwnables 1 +1297566225 a8d58590 pwnables 1 +1297566227 a8d58590 pwnables 1 +1297566228 a8d58590 pwnables 1 +1297566230 a8d58590 pwnables 1 +1297566231 a8d58590 pwnables 1 +1297566233 a8d58590 pwnables 1 +1297566234 3c7f310c pwnables 1 +1297566235 a8d58590 pwnables 1 +1297566236 a8d58590 pwnables 1 +1297566238 a8d58590 pwnables 1 +1297566240 a8d58590 pwnables 1 +1297566241 a8d58590 pwnables 1 +1297566243 a8d58590 pwnables 1 +1297566244 a8d58590 pwnables 1 +1297566246 a8d58590 pwnables 1 +1297566247 3c7f310c pwnables 1 +1297566248 a8d58590 pwnables 1 +1297566249 a8d58590 pwnables 1 +1297566258 3c7f310c pwnables 1 +1297566270 3c7f310c pwnables 1 +1297566283 3c7f310c pwnables 1 +1297566295 3c7f310c pwnables 1 +1297566307 3c7f310c pwnables 1 +1297566319 3c7f310c pwnables 1 +1297566330 3c7f310c pwnables 1 +1297566336 a8d58590 pwnables 1 +1297566337 a8d58590 pwnables 1 +1297566339 a8d58590 pwnables 1 +1297566340 a8d58590 pwnables 1 +1297566341 a8d58590 pwnables 1 +1297566342 3c7f310c pwnables 1 +1297566342 a8d58590 pwnables 1 +1297566343 a8d58590 pwnables 1 +1297566344 a8d58590 pwnables 1 +1297566345 a8d58590 pwnables 1 +1297566346 a8d58590 pwnables 1 +1297566347 a8d58590 pwnables 1 +1297566348 a8d58590 pwnables 1 +1297566349 a8d58590 pwnables 1 +1297566350 a8d58590 pwnables 1 +1297566351 a8d58590 pwnables 1 +1297566352 a8d58590 pwnables 1 +1297566354 3c7f310c pwnables 1 +1297566354 a8d58590 pwnables 1 +1297566355 a8d58590 pwnables 1 +1297566356 a8d58590 pwnables 1 +1297566357 a8d58590 pwnables 1 +1297566358 a8d58590 pwnables 1 +1297566359 a8d58590 pwnables 1 +1297566360 a8d58590 pwnables 1 +1297566361 c206e4c6 tanks 1 +1297566362 a8d58590 pwnables 1 +1297566363 a8d58590 pwnables 1 +1297566365 3c7f310c pwnables 1 +1297566365 a8d58590 pwnables 1 +1297566367 a8d58590 pwnables 1 +1297566368 a8d58590 pwnables 1 +1297566370 a8d58590 pwnables 1 +1297566372 a8d58590 pwnables 1 +1297566373 a8d58590 pwnables 1 +1297566375 a8d58590 pwnables 1 +1297566377 a8d58590 pwnables 1 +1297566378 3c7f310c pwnables 1 +1297566379 a8d58590 pwnables 1 +1297566381 a8d58590 pwnables 1 +1297566382 a8d58590 pwnables 1 +1297566384 a8d58590 pwnables 1 +1297566386 a8d58590 pwnables 1 +1297566387 a8d58590 pwnables 1 +1297566389 a8d58590 pwnables 1 +1297566390 3c7f310c pwnables 1 +1297566400 3c7f310c pwnables 1 +1297566411 3c7f310c pwnables 1 +1297566423 3c7f310c pwnables 1 +1297566434 3c7f310c pwnables 1 +1297566445 3c7f310c pwnables 1 +1297566445 a8d58590 pwnables 1 +1297566446 a8d58590 pwnables 1 +1297566446 a8d58590 pwnables 1 +1297566447 a8d58590 pwnables 1 +1297566447 a8d58590 pwnables 1 +1297566448 a8d58590 pwnables 1 +1297566448 a8d58590 pwnables 1 +1297566449 a8d58590 pwnables 1 +1297566449 a8d58590 pwnables 1 +1297566450 a8d58590 pwnables 1 +1297566450 a8d58590 pwnables 1 +1297566451 a8d58590 pwnables 1 +1297566451 a8d58590 pwnables 1 +1297566452 a8d58590 pwnables 1 +1297566453 a8d58590 pwnables 1 +1297566453 a8d58590 pwnables 1 +1297566454 a8d58590 pwnables 1 +1297566455 a8d58590 pwnables 1 +1297566456 a8d58590 pwnables 1 +1297566457 3c7f310c pwnables 1 +1297566457 a8d58590 pwnables 1 +1297566458 a8d58590 pwnables 1 +1297566459 a8d58590 pwnables 1 +1297566460 a8d58590 pwnables 1 +1297566462 a8d58590 pwnables 1 +1297566463 a8d58590 pwnables 1 +1297566464 a8d58590 pwnables 1 +1297566465 a8d58590 pwnables 1 +1297566466 a8d58590 pwnables 1 +1297566467 a8d58590 pwnables 1 +1297566468 a8d58590 pwnables 1 +1297566469 3c7f310c pwnables 1 +1297566470 a8d58590 pwnables 1 +1297566471 a8d58590 pwnables 1 +1297566472 a8d58590 pwnables 1 +1297566473 a8d58590 pwnables 1 +1297566474 a8d58590 pwnables 1 +1297566475 a8d58590 pwnables 1 +1297566476 a8d58590 pwnables 1 +1297566477 a8d58590 pwnables 1 +1297566477 a8d58590 pwnables 1 +1297566478 a8d58590 pwnables 1 +1297566478 a8d58590 pwnables 1 +1297566479 a8d58590 pwnables 1 +1297566480 a8d58590 pwnables 1 +1297566480 3c7f310c pwnables 1 +1297566481 a8d58590 pwnables 1 +1297566481 a8d58590 pwnables 1 +1297566482 a8d58590 pwnables 1 +1297566482 a8d58590 pwnables 1 +1297566483 a8d58590 pwnables 1 +1297566483 a8d58590 pwnables 1 +1297566484 a8d58590 pwnables 1 +1297566484 a8d58590 pwnables 1 +1297566485 a8d58590 pwnables 1 +1297566485 a8d58590 pwnables 1 +1297566486 a8d58590 pwnables 1 +1297566486 a8d58590 pwnables 1 +1297566487 a8d58590 pwnables 1 +1297566487 a8d58590 pwnables 1 +1297566488 a8d58590 pwnables 1 +1297566489 a8d58590 pwnables 1 +1297566489 a8d58590 pwnables 1 +1297566490 a8d58590 pwnables 1 +1297566490 a8d58590 pwnables 1 +1297566491 a8d58590 pwnables 1 +1297566492 3c7f310c pwnables 1 +1297566492 a8d58590 pwnables 1 +1297566493 a8d58590 pwnables 1 +1297566493 a8d58590 pwnables 1 +1297566494 a8d58590 pwnables 1 +1297566494 a8d58590 pwnables 1 +1297566495 a8d58590 pwnables 1 +1297566495 a8d58590 pwnables 1 +1297566496 a8d58590 pwnables 1 +1297566496 a8d58590 pwnables 1 +1297566497 a8d58590 pwnables 1 +1297566497 a8d58590 pwnables 1 +1297566498 a8d58590 pwnables 1 +1297566500 a8d58590 pwnables 1 +1297566500 a8d58590 pwnables 1 +1297566501 a8d58590 pwnables 1 +1297566501 a8d58590 pwnables 1 +1297566502 a8d58590 pwnables 1 +1297566503 3c7f310c pwnables 1 +1297566503 a8d58590 pwnables 1 +1297566504 a8d58590 pwnables 1 +1297566504 a8d58590 pwnables 1 +1297566505 a8d58590 pwnables 1 +1297566505 a8d58590 pwnables 1 +1297566506 a8d58590 pwnables 1 +1297566506 a8d58590 pwnables 1 +1297566507 a8d58590 pwnables 1 +1297566507 a8d58590 pwnables 1 +1297566508 a8d58590 pwnables 1 +1297566508 a8d58590 pwnables 1 +1297566509 a8d58590 pwnables 1 +1297566509 a8d58590 pwnables 1 +1297566510 a8d58590 pwnables 1 +1297566510 a8d58590 pwnables 1 +1297566511 a8d58590 pwnables 1 +1297566511 a8d58590 pwnables 1 +1297566512 a8d58590 pwnables 1 +1297566512 a8d58590 pwnables 1 +1297566513 a8d58590 pwnables 1 +1297566514 a8d58590 pwnables 1 +1297566514 3c7f310c pwnables 1 +1297566515 a8d58590 pwnables 1 +1297566515 a8d58590 pwnables 1 +1297566516 a8d58590 pwnables 1 +1297566516 a8d58590 pwnables 1 +1297566517 a8d58590 pwnables 1 +1297566517 a8d58590 pwnables 1 +1297566518 a8d58590 pwnables 1 +1297566518 a8d58590 pwnables 1 +1297566519 a8d58590 pwnables 1 +1297566519 a8d58590 pwnables 1 +1297566520 a8d58590 pwnables 1 +1297566521 a8d58590 pwnables 1 +1297566521 a8d58590 pwnables 1 +1297566522 a8d58590 pwnables 1 +1297566522 a8d58590 pwnables 1 +1297566523 a8d58590 pwnables 1 +1297566523 a8d58590 pwnables 1 +1297566524 a8d58590 pwnables 1 +1297566524 a8d58590 pwnables 1 +1297566525 a8d58590 pwnables 1 +1297566525 3c7f310c pwnables 1 +1297566526 a8d58590 pwnables 1 +1297566526 a8d58590 pwnables 1 +1297566527 a8d58590 pwnables 1 +1297566527 a8d58590 pwnables 1 +1297566528 a8d58590 pwnables 1 +1297566528 a8d58590 pwnables 1 +1297566529 a8d58590 pwnables 1 +1297566529 a8d58590 pwnables 1 +1297566530 a8d58590 pwnables 1 +1297566530 a8d58590 pwnables 1 +1297566531 a8d58590 pwnables 1 +1297566532 a8d58590 pwnables 1 +1297566532 a8d58590 pwnables 1 +1297566533 a8d58590 pwnables 1 +1297566533 a8d58590 pwnables 1 +1297566534 a8d58590 pwnables 1 +1297566534 a8d58590 pwnables 1 +1297566536 3c7f310c pwnables 1 +1297566537 a8d58590 pwnables 1 +1297566538 a8d58590 pwnables 1 +1297566539 a8d58590 pwnables 1 +1297566541 a8d58590 pwnables 1 +1297566542 a8d58590 pwnables 1 +1297566543 a8d58590 pwnables 1 +1297566544 a8d58590 pwnables 1 +1297566545 a8d58590 pwnables 1 +1297566546 a8d58590 pwnables 1 +1297566548 a8d58590 pwnables 1 +1297566548 3c7f310c pwnables 1 +1297566549 a8d58590 pwnables 1 +1297566550 a8d58590 pwnables 1 +1297566551 a8d58590 pwnables 1 +1297566552 a8d58590 pwnables 1 +1297566553 a8d58590 pwnables 1 +1297566554 a8d58590 pwnables 1 +1297566555 a8d58590 pwnables 1 +1297566557 a8d58590 pwnables 1 +1297566558 a8d58590 pwnables 1 +1297566559 a8d58590 pwnables 1 +1297566561 3c7f310c pwnables 1 +1297566561 a8d58590 pwnables 1 +1297566562 a8d58590 pwnables 1 +1297566562 a8d58590 pwnables 1 +1297566563 a8d58590 pwnables 1 +1297566563 a8d58590 pwnables 1 +1297566564 a8d58590 pwnables 1 +1297566564 a8d58590 pwnables 1 +1297566565 a8d58590 pwnables 1 +1297566565 a8d58590 pwnables 1 +1297566566 a8d58590 pwnables 1 +1297566567 a8d58590 pwnables 1 +1297566567 a8d58590 pwnables 1 +1297566568 a8d58590 pwnables 1 +1297566568 a8d58590 pwnables 1 +1297566571 3c7f310c pwnables 1 +1297566583 3c7f310c pwnables 1 +1297566594 3c7f310c pwnables 1 +1297566605 3c7f310c pwnables 1 +1297566616 3c7f310c pwnables 1 +1297566628 3c7f310c pwnables 1 +1297566641 3c7f310c pwnables 1 +1297566644 c206e4c6 pwnables 1 +1297566653 3c7f310c pwnables 1 +1297566664 3c7f310c pwnables 1 +1297566666 c206e4c6 tanks 1 +1297566676 3c7f310c pwnables 1 +1297566688 3c7f310c pwnables 1 +1297566700 3c7f310c pwnables 1 +1297566712 3c7f310c pwnables 1 +1297566724 3c7f310c pwnables 1 +1297566736 3c7f310c pwnables 1 +1297566748 3c7f310c pwnables 1 +1297566760 3c7f310c pwnables 1 +1297566772 3c7f310c pwnables 1 +1297566783 3c7f310c pwnables 1 +1297566789 3c7f310c tanks 1 +1297566795 3c7f310c pwnables 1 +1297566808 3c7f310c pwnables 1 +1297566819 3c7f310c pwnables 1 +1297566828 3c7f310c pwnables 1 +1297566832 3c7f310c pwnables 1 +1297566843 3c7f310c pwnables 1 +1297566855 3c7f310c pwnables 1 +1297566861 3c7f310c pwnables 1 +1297566868 3c7f310c pwnables 1 +1297566879 3c7f310c pwnables 1 +1297566881 3c7f310c pwnables 1 +1297566891 3c7f310c pwnables 1 +1297566913 3c7f310c pwnables 1 +1297566913 3c7f310c pwnables 1 +1297566913 3c7f310c pwnables 1 +1297566913 3c7f310c pwnables 1 +1297566913 3c7f310c pwnables 1 +1297566917 3c7f310c tanks 1 +1297566921 3c7f310c pwnables 1 +1297566934 3c7f310c pwnables 1 +1297566946 3c7f310c pwnables 1 +1297566958 3c7f310c pwnables 1 +1297566963 3c7f310c pwnables 1 +1297566970 3c7f310c pwnables 1 +1297566982 3c7f310c pwnables 1 +1297566984 3c7f310c pwnables 1 +1297566993 3c7f310c pwnables 1 +1297567005 3c7f310c pwnables 1 +1297567014 a8d58590 pwnables 1 +1297567015 3c7f310c pwnables 1 +1297567016 a8d58590 pwnables 1 +1297567017 3c7f310c pwnables 1 +1297567018 a8d58590 pwnables 1 +1297567020 a8d58590 pwnables 1 +1297567021 a8d58590 pwnables 1 +1297567023 a8d58590 pwnables 1 +1297567025 a8d58590 pwnables 1 +1297567026 a8d58590 pwnables 1 +1297567028 a8d58590 pwnables 1 +1297567030 3c7f310c pwnables 1 +1297567030 a8d58590 pwnables 1 +1297567032 a8d58590 pwnables 1 +1297567033 a8d58590 pwnables 1 +1297567035 a8d58590 pwnables 1 +1297567037 a8d58590 pwnables 1 +1297567038 a8d58590 pwnables 1 +1297567041 a8d58590 pwnables 1 +1297567041 c206e4c6 tanks 1 +1297567043 3c7f310c pwnables 1 +1297567043 3c7f310c pwnables 1 +1297567043 a8d58590 pwnables 1 +1297567045 a8d58590 pwnables 1 +1297567047 a8d58590 pwnables 1 +1297567048 a8d58590 pwnables 1 +1297567049 a8d58590 pwnables 1 +1297567050 a8d58590 pwnables 1 +1297567051 a8d58590 pwnables 1 +1297567053 a8d58590 pwnables 1 +1297567054 a8d58590 pwnables 1 +1297567055 3c7f310c pwnables 1 +1297567055 a8d58590 pwnables 1 +1297567056 a8d58590 pwnables 1 +1297567057 a8d58590 pwnables 1 +1297567058 a8d58590 pwnables 1 +1297567059 a8d58590 pwnables 1 +1297567060 a8d58590 pwnables 1 +1297567062 a8d58590 pwnables 1 +1297567063 a8d58590 pwnables 1 +1297567064 a8d58590 pwnables 1 +1297567065 a8d58590 pwnables 1 +1297567066 a8d58590 pwnables 1 +1297567067 3c7f310c pwnables 1 +1297567067 a8d58590 pwnables 1 +1297567068 a8d58590 pwnables 1 +1297567069 a8d58590 pwnables 1 +1297567070 a8d58590 pwnables 1 +1297567072 a8d58590 pwnables 1 +1297567073 a8d58590 pwnables 1 +1297567074 a8d58590 pwnables 1 +1297567075 a8d58590 pwnables 1 +1297567076 a8d58590 pwnables 1 +1297567077 a8d58590 pwnables 1 +1297567079 a8d58590 pwnables 1 +1297567079 3c7f310c pwnables 1 +1297567080 3c7f310c pwnables 1 +1297567080 a8d58590 pwnables 1 +1297567081 a8d58590 pwnables 1 +1297567082 a8d58590 pwnables 1 +1297567083 a8d58590 pwnables 1 +1297567084 a8d58590 pwnables 1 +1297567085 a8d58590 pwnables 1 +1297567086 a8d58590 pwnables 1 +1297567087 a8d58590 pwnables 1 +1297567089 a8d58590 pwnables 1 +1297567090 a8d58590 pwnables 1 +1297567091 3c7f310c pwnables 1 +1297567092 a8d58590 pwnables 1 +1297567093 a8d58590 pwnables 1 +1297567094 a8d58590 pwnables 1 +1297567095 a8d58590 pwnables 1 +1297567096 a8d58590 pwnables 1 +1297567097 a8d58590 pwnables 1 +1297567098 a8d58590 pwnables 1 +1297567100 a8d58590 pwnables 1 +1297567102 a8d58590 pwnables 1 +1297567103 3c7f310c pwnables 1 +1297567103 a8d58590 pwnables 1 +1297567104 a8d58590 pwnables 1 +1297567105 a8d58590 pwnables 1 +1297567107 a8d58590 pwnables 1 +1297567109 a8d58590 pwnables 1 +1297567111 a8d58590 pwnables 1 +1297567112 a8d58590 pwnables 1 +1297567115 a8d58590 pwnables 1 +1297567115 3c7f310c pwnables 1 +1297567117 a8d58590 pwnables 1 +1297567118 a8d58590 pwnables 1 +1297567120 3c7f310c pwnables 1 +1297567120 a8d58590 pwnables 1 +1297567122 a8d58590 pwnables 1 +1297567124 a8d58590 pwnables 1 +1297567125 a8d58590 pwnables 1 +1297567127 a8d58590 pwnables 1 +1297567128 3c7f310c pwnables 1 +1297567129 a8d58590 pwnables 1 +1297567131 a8d58590 pwnables 1 +1297567132 a8d58590 pwnables 1 +1297567134 a8d58590 pwnables 1 +1297567135 a8d58590 pwnables 1 +1297567137 a8d58590 pwnables 1 +1297567139 3c7f310c pwnables 1 +1297567139 a8d58590 pwnables 1 +1297567141 a8d58590 pwnables 1 +1297567143 a8d58590 pwnables 1 +1297567145 a8d58590 pwnables 1 +1297567146 a8d58590 pwnables 1 +1297567147 a8d58590 pwnables 1 +1297567148 3c7f310c pwnables 1 +1297567148 a8d58590 pwnables 1 +1297567150 a8d58590 pwnables 1 +1297567151 3c7f310c pwnables 1 +1297567152 a8d58590 pwnables 1 +1297567153 a8d58590 pwnables 1 +1297567154 a8d58590 pwnables 1 +1297567155 a8d58590 pwnables 1 +1297567156 a8d58590 pwnables 1 +1297567157 a8d58590 pwnables 1 +1297567158 a8d58590 pwnables 1 +1297567158 a8d58590 pwnables 1 +1297567159 a8d58590 pwnables 1 +1297567160 a8d58590 pwnables 1 +1297567160 a8d58590 pwnables 1 +1297567161 a8d58590 pwnables 1 +1297567161 a8d58590 pwnables 1 +1297567162 a8d58590 pwnables 1 +1297567162 3c7f310c pwnables 1 +1297567163 a8d58590 pwnables 1 +1297567163 a8d58590 pwnables 1 +1297567165 a8d58590 pwnables 1 +1297567166 a8d58590 pwnables 1 +1297567166 a8d58590 pwnables 1 +1297567167 a8d58590 pwnables 1 +1297567167 a8d58590 pwnables 1 +1297567168 a8d58590 pwnables 1 +1297567169 3c7f310c pwnables 1 +1297567169 a8d58590 pwnables 1 +1297567170 a8d58590 pwnables 1 +1297567170 a8d58590 pwnables 1 +1297567171 a8d58590 pwnables 1 +1297567171 a8d58590 pwnables 1 +1297567172 a8d58590 pwnables 1 +1297567172 a8d58590 pwnables 1 +1297567173 a8d58590 pwnables 1 +1297567174 3c7f310c pwnables 1 +1297567174 a8d58590 pwnables 1 +1297567174 a8d58590 pwnables 1 +1297567175 a8d58590 pwnables 1 +1297567176 a8d58590 pwnables 1 +1297567176 a8d58590 pwnables 1 +1297567177 a8d58590 pwnables 1 +1297567178 a8d58590 pwnables 1 +1297567178 a8d58590 pwnables 1 +1297567179 a8d58590 pwnables 1 +1297567179 a8d58590 pwnables 1 +1297567180 a8d58590 pwnables 1 +1297567180 a8d58590 pwnables 1 +1297567181 a8d58590 pwnables 1 +1297567181 a8d58590 pwnables 1 +1297567182 a8d58590 pwnables 1 +1297567182 a8d58590 pwnables 1 +1297567183 a8d58590 pwnables 1 +1297567183 a8d58590 pwnables 1 +1297567184 a8d58590 pwnables 1 +1297567185 3c7f310c pwnables 1 +1297567185 a8d58590 pwnables 1 +1297567186 a8d58590 pwnables 1 +1297567186 a8d58590 pwnables 1 +1297567187 a8d58590 pwnables 1 +1297567187 a8d58590 pwnables 1 +1297567188 a8d58590 pwnables 1 +1297567188 a8d58590 pwnables 1 +1297567189 a8d58590 pwnables 1 +1297567189 a8d58590 pwnables 1 +1297567190 a8d58590 pwnables 1 +1297567190 a8d58590 pwnables 1 +1297567191 a8d58590 pwnables 1 +1297567191 a8d58590 pwnables 1 +1297567192 a8d58590 pwnables 1 +1297567192 a8d58590 pwnables 1 +1297567193 a8d58590 pwnables 1 +1297567194 a8d58590 pwnables 1 +1297567194 a8d58590 pwnables 1 +1297567195 a8d58590 pwnables 1 +1297567195 a8d58590 pwnables 1 +1297567196 a8d58590 pwnables 1 +1297567196 3c7f310c pwnables 1 +1297567197 a8d58590 pwnables 1 +1297567197 a8d58590 pwnables 1 +1297567198 a8d58590 pwnables 1 +1297567198 a8d58590 pwnables 1 +1297567199 a8d58590 pwnables 1 +1297567199 a8d58590 pwnables 1 +1297567200 a8d58590 pwnables 1 +1297567201 a8d58590 pwnables 1 +1297567201 a8d58590 pwnables 1 +1297567202 a8d58590 pwnables 1 +1297567202 a8d58590 pwnables 1 +1297567203 a8d58590 pwnables 1 +1297567204 3c7f310c pwnables 1 +1297567204 a8d58590 pwnables 1 +1297567205 a8d58590 pwnables 1 +1297567206 a8d58590 pwnables 1 +1297567207 a8d58590 pwnables 1 +1297567208 3c7f310c pwnables 1 +1297567209 a8d58590 pwnables 1 +1297567210 a8d58590 pwnables 1 +1297567211 a8d58590 pwnables 1 +1297567212 a8d58590 pwnables 1 +1297567213 a8d58590 pwnables 1 +1297567214 a8d58590 pwnables 1 +1297567215 a8d58590 pwnables 1 +1297567217 a8d58590 pwnables 1 +1297567218 a8d58590 pwnables 1 +1297567219 a8d58590 pwnables 1 +1297567220 3c7f310c pwnables 1 +1297567221 a8d58590 pwnables 1 +1297567222 a8d58590 pwnables 1 +1297567223 a8d58590 pwnables 1 +1297567224 a8d58590 pwnables 1 +1297567225 a8d58590 pwnables 1 +1297567226 a8d58590 pwnables 1 +1297567227 a8d58590 pwnables 1 +1297567228 a8d58590 pwnables 1 +1297567228 a8d58590 pwnables 1 +1297567229 a8d58590 pwnables 1 +1297567230 a8d58590 pwnables 1 +1297567230 a8d58590 pwnables 1 +1297567231 3c7f310c pwnables 1 +1297567231 a8d58590 pwnables 1 +1297567232 a8d58590 pwnables 1 +1297567233 a8d58590 pwnables 1 +1297567233 a8d58590 pwnables 1 +1297567235 a8d58590 pwnables 1 +1297567235 a8d58590 pwnables 1 +1297567236 a8d58590 pwnables 1 +1297567237 a8d58590 pwnables 1 +1297567238 a8d58590 pwnables 1 +1297567239 a8d58590 pwnables 1 +1297567242 3c7f310c pwnables 1 +1297567253 3c7f310c pwnables 1 +1297567264 3c7f310c pwnables 1 +1297567274 3c7f310c pwnables 1 +1297567285 3c7f310c pwnables 1 +1297567296 3c7f310c pwnables 1 +1297567307 3c7f310c pwnables 1 +1297567318 3c7f310c pwnables 1 +1297567329 3c7f310c pwnables 1 +1297567339 3c7f310c pwnables 1 +1297567347 c206e4c6 tanks 1 +1297567350 3c7f310c pwnables 1 +1297567361 3c7f310c pwnables 1 +1297567372 3c7f310c pwnables 1 +1297567383 3c7f310c pwnables 1 +1297567394 3c7f310c pwnables 1 +1297567394 3c7f310c pwnables 1 +1297567415 3c7f310c pwnables 1 +1297567425 3c7f310c pwnables 1 +1297567437 3c7f310c pwnables 1 +1297567447 3c7f310c pwnables 1 +1297567451 3c7f310c pwnables 1 +1297567457 3c7f310c pwnables 1 +1297567469 3c7f310c pwnables 1 +1297567481 3c7f310c pwnables 1 +1297567492 3c7f310c pwnables 1 +1297567503 3c7f310c pwnables 1 +1297567515 3c7f310c pwnables 1 +1297567527 3c7f310c pwnables 1 +1297567538 3c7f310c pwnables 1 +1297567550 3c7f310c pwnables 1 +1297567562 3c7f310c pwnables 1 +1297567574 3c7f310c pwnables 1 +1297567579 3c7f310c pwnables 1 +1297567585 3c7f310c pwnables 1 +1297567590 3c7f310c pwnables 1 +1297567597 3c7f310c pwnables 1 +1297567600 3c7f310c pwnables 1 +1297567609 3c7f310c pwnables 1 +1297567610 3c7f310c pwnables 1 +1297567620 3c7f310c pwnables 1 +1297567620 3c7f310c pwnables 1 +1297567624 a8d58590 pwnables 1 +1297567625 a8d58590 pwnables 1 +1297567625 a8d58590 pwnables 1 +1297567626 a8d58590 pwnables 1 +1297567626 a8d58590 pwnables 1 +1297567627 a8d58590 pwnables 1 +1297567627 a8d58590 pwnables 1 +1297567628 a8d58590 pwnables 1 +1297567629 a8d58590 pwnables 1 +1297567629 3c7f310c pwnables 1 +1297567630 a8d58590 pwnables 1 +1297567630 a8d58590 pwnables 1 +1297567631 a8d58590 pwnables 1 +1297567632 3c7f310c pwnables 1 +1297567632 a8d58590 pwnables 1 +1297567632 a8d58590 pwnables 1 +1297567633 a8d58590 pwnables 1 +1297567633 a8d58590 pwnables 1 +1297567634 a8d58590 pwnables 1 +1297567635 a8d58590 pwnables 1 +1297567635 a8d58590 pwnables 1 +1297567636 a8d58590 pwnables 1 +1297567636 a8d58590 pwnables 1 +1297567637 a8d58590 pwnables 1 +1297567637 a8d58590 pwnables 1 +1297567638 a8d58590 pwnables 1 +1297567638 a8d58590 pwnables 1 +1297567639 a8d58590 pwnables 1 +1297567639 a8d58590 pwnables 1 +1297567640 a8d58590 pwnables 1 +1297567641 3c7f310c pwnables 1 +1297567641 a8d58590 pwnables 1 +1297567642 a8d58590 pwnables 1 +1297567642 a8d58590 pwnables 1 +1297567643 3c7f310c pwnables 1 +1297567643 a8d58590 pwnables 1 +1297567644 a8d58590 pwnables 1 +1297567645 a8d58590 pwnables 1 +1297567645 a8d58590 pwnables 1 +1297567646 a8d58590 pwnables 1 +1297567646 a8d58590 pwnables 1 +1297567647 a8d58590 pwnables 1 +1297567648 a8d58590 pwnables 1 +1297567648 a8d58590 pwnables 1 +1297567649 a8d58590 pwnables 1 +1297567650 a8d58590 pwnables 1 +1297567651 3c7f310c pwnables 1 +1297567652 a8d58590 pwnables 1 +1297567652 3c7f310c tanks 1 +1297567652 a8d58590 pwnables 1 +1297567653 a8d58590 pwnables 1 +1297567654 a8d58590 pwnables 1 +1297567654 3c7f310c pwnables 1 +1297567655 a8d58590 pwnables 1 +1297567655 a8d58590 pwnables 1 +1297567656 a8d58590 pwnables 1 +1297567657 a8d58590 pwnables 1 +1297567657 a8d58590 pwnables 1 +1297567658 a8d58590 pwnables 1 +1297567659 a8d58590 pwnables 1 +1297567659 a8d58590 pwnables 1 +1297567660 3c7f310c pwnables 1 +1297567660 a8d58590 pwnables 1 +1297567661 a8d58590 pwnables 1 +1297567662 a8d58590 pwnables 1 +1297567662 a8d58590 pwnables 1 +1297567663 a8d58590 pwnables 1 +1297567664 a8d58590 pwnables 1 +1297567665 a8d58590 pwnables 1 +1297567666 a8d58590 pwnables 1 +1297567666 3c7f310c pwnables 1 +1297567667 a8d58590 pwnables 1 +1297567667 a8d58590 pwnables 1 +1297567668 a8d58590 pwnables 1 +1297567669 a8d58590 pwnables 1 +1297567669 a8d58590 pwnables 1 +1297567670 a8d58590 pwnables 1 +1297567671 a8d58590 pwnables 1 +1297567671 3c7f310c pwnables 1 +1297567672 a8d58590 pwnables 1 +1297567672 a8d58590 pwnables 1 +1297567673 a8d58590 pwnables 1 +1297567673 a8d58590 pwnables 1 +1297567674 a8d58590 pwnables 1 +1297567674 a8d58590 pwnables 1 +1297567675 a8d58590 pwnables 1 +1297567676 a8d58590 pwnables 1 +1297567678 a8d58590 pwnables 1 +1297567678 3c7f310c pwnables 1 +1297567679 a8d58590 pwnables 1 +1297567680 a8d58590 pwnables 1 +1297567681 3c7f310c pwnables 1 +1297567682 a8d58590 pwnables 1 +1297567683 a8d58590 pwnables 1 +1297567684 a8d58590 pwnables 1 +1297567685 a8d58590 pwnables 1 +1297567686 a8d58590 pwnables 1 +1297567687 a8d58590 pwnables 1 +1297567688 a8d58590 pwnables 1 +1297567690 3c7f310c pwnables 1 +1297567690 a8d58590 pwnables 1 +1297567691 3c7f310c pwnables 1 +1297567692 a8d58590 pwnables 1 +1297567693 a8d58590 pwnables 1 +1297567701 3c7f310c pwnables 1 +1297567702 3c7f310c pwnables 1 +1297567703 a8d58590 pwnables 1 +1297567704 a8d58590 pwnables 1 +1297567704 a8d58590 pwnables 1 +1297567705 a8d58590 pwnables 1 +1297567705 a8d58590 pwnables 1 +1297567706 a8d58590 pwnables 1 +1297567706 a8d58590 pwnables 1 +1297567707 a8d58590 pwnables 1 +1297567707 a8d58590 pwnables 1 +1297567708 a8d58590 pwnables 1 +1297567709 a8d58590 pwnables 1 +1297567709 a8d58590 pwnables 1 +1297567710 a8d58590 pwnables 1 +1297567710 a8d58590 pwnables 1 +1297567711 a8d58590 pwnables 1 +1297567712 3c7f310c pwnables 1 +1297567712 a8d58590 pwnables 1 +1297567713 3c7f310c pwnables 1 +1297567713 a8d58590 pwnables 1 +1297567714 a8d58590 pwnables 1 +1297567714 a8d58590 pwnables 1 +1297567715 a8d58590 pwnables 1 +1297567715 a8d58590 pwnables 1 +1297567716 a8d58590 pwnables 1 +1297567716 a8d58590 pwnables 1 +1297567717 a8d58590 pwnables 1 +1297567717 a8d58590 pwnables 1 +1297567718 a8d58590 pwnables 1 +1297567720 a8d58590 pwnables 1 +1297567720 a8d58590 pwnables 1 +1297567721 a8d58590 pwnables 1 +1297567722 a8d58590 pwnables 1 +1297567722 3c7f310c pwnables 1 +1297567723 a8d58590 pwnables 1 +1297567723 a8d58590 pwnables 1 +1297567724 a8d58590 pwnables 1 +1297567724 3c7f310c pwnables 1 +1297567725 a8d58590 pwnables 1 +1297567725 a8d58590 pwnables 1 +1297567726 a8d58590 pwnables 1 +1297567727 a8d58590 pwnables 1 +1297567728 a8d58590 pwnables 1 +1297567728 a8d58590 pwnables 1 +1297567729 a8d58590 pwnables 1 +1297567729 a8d58590 pwnables 1 +1297567730 a8d58590 pwnables 1 +1297567730 a8d58590 pwnables 1 +1297567731 a8d58590 pwnables 1 +1297567732 a8d58590 pwnables 1 +1297567733 3c7f310c pwnables 1 +1297567733 a8d58590 pwnables 1 +1297567733 a8d58590 pwnables 1 +1297567734 a8d58590 pwnables 1 +1297567734 a8d58590 pwnables 1 +1297567735 a8d58590 pwnables 1 +1297567736 3c7f310c pwnables 1 +1297567736 a8d58590 pwnables 1 +1297567736 a8d58590 pwnables 1 +1297567737 a8d58590 pwnables 1 +1297567738 a8d58590 pwnables 1 +1297567738 a8d58590 pwnables 1 +1297567739 a8d58590 pwnables 1 +1297567739 a8d58590 pwnables 1 +1297567740 a8d58590 pwnables 1 +1297567740 a8d58590 pwnables 1 +1297567741 a8d58590 pwnables 1 +1297567741 a8d58590 pwnables 1 +1297567742 a8d58590 pwnables 1 +1297567743 3c7f310c pwnables 1 +1297567743 a8d58590 pwnables 1 +1297567744 a8d58590 pwnables 1 +1297567744 a8d58590 pwnables 1 +1297567745 a8d58590 pwnables 1 +1297567745 a8d58590 pwnables 1 +1297567746 a8d58590 pwnables 1 +1297567747 a8d58590 pwnables 1 +1297567747 3c7f310c pwnables 1 +1297567747 a8d58590 pwnables 1 +1297567748 a8d58590 pwnables 1 +1297567749 a8d58590 pwnables 1 +1297567749 a8d58590 pwnables 1 +1297567750 a8d58590 pwnables 1 +1297567750 a8d58590 pwnables 1 +1297567751 a8d58590 pwnables 1 +1297567751 a8d58590 pwnables 1 +1297567752 3c7f310c pwnables 1 +1297567753 a8d58590 pwnables 1 +1297567753 a8d58590 pwnables 1 +1297567754 a8d58590 pwnables 1 +1297567754 a8d58590 pwnables 1 +1297567755 a8d58590 pwnables 1 +1297567755 a8d58590 pwnables 1 +1297567756 a8d58590 pwnables 1 +1297567756 a8d58590 pwnables 1 +1297567757 a8d58590 pwnables 1 +1297567758 a8d58590 pwnables 1 +1297567758 3c7f310c pwnables 1 +1297567759 a8d58590 pwnables 1 +1297567759 a8d58590 pwnables 1 +1297567760 a8d58590 pwnables 1 +1297567762 a8d58590 pwnables 1 +1297567763 a8d58590 pwnables 1 +1297567765 a8d58590 pwnables 1 +1297567765 3c7f310c pwnables 1 +1297567766 a8d58590 pwnables 1 +1297567767 a8d58590 pwnables 1 +1297567769 a8d58590 pwnables 1 +1297567770 3c7f310c pwnables 1 +1297567771 a8d58590 pwnables 1 +1297567772 a8d58590 pwnables 1 +1297567774 a8d58590 pwnables 1 +1297567774 3c7f310c pwnables 1 +1297567775 3c7f310c tanks 1 +1297567776 a8d58590 pwnables 1 +1297567777 a8d58590 pwnables 1 +1297567778 a8d58590 pwnables 1 +1297567779 a8d58590 pwnables 1 +1297567780 a8d58590 pwnables 1 +1297567782 a8d58590 pwnables 1 +1297567782 3c7f310c pwnables 1 +1297567783 a8d58590 pwnables 1 +1297567785 3c7f310c pwnables 1 +1297567785 a8d58590 pwnables 1 +1297567786 a8d58590 pwnables 1 +1297567787 a8d58590 pwnables 1 +1297567789 a8d58590 pwnables 1 +1297567789 a8d58590 pwnables 1 +1297567790 a8d58590 pwnables 1 +1297567791 a8d58590 pwnables 1 +1297567791 a8d58590 pwnables 1 +1297567792 a8d58590 pwnables 1 +1297567792 a8d58590 pwnables 1 +1297567794 a8d58590 pwnables 1 +1297567794 3c7f310c pwnables 1 +1297567794 3c7f310c pwnables 1 +1297567795 a8d58590 pwnables 1 +1297567795 a8d58590 pwnables 1 +1297567796 a8d58590 pwnables 1 +1297567796 a8d58590 pwnables 1 +1297567797 a8d58590 pwnables 1 +1297567797 a8d58590 pwnables 1 +1297567798 a8d58590 pwnables 1 +1297567798 a8d58590 pwnables 1 +1297567799 a8d58590 pwnables 1 +1297567800 a8d58590 pwnables 1 +1297567800 a8d58590 pwnables 1 +1297567801 a8d58590 pwnables 1 +1297567801 a8d58590 pwnables 1 +1297567802 a8d58590 pwnables 1 +1297567802 a8d58590 pwnables 1 +1297567803 a8d58590 pwnables 1 +1297567804 3c7f310c pwnables 1 +1297567804 a8d58590 pwnables 1 +1297567805 a8d58590 pwnables 1 +1297567805 3c7f310c pwnables 1 +1297567806 a8d58590 pwnables 1 +1297567806 a8d58590 pwnables 1 +1297567807 a8d58590 pwnables 1 +1297567807 a8d58590 pwnables 1 +1297567808 a8d58590 pwnables 1 +1297567808 a8d58590 pwnables 1 +1297567809 a8d58590 pwnables 1 +1297567810 a8d58590 pwnables 1 +1297567810 a8d58590 pwnables 1 +1297567811 a8d58590 pwnables 1 +1297567811 a8d58590 pwnables 1 +1297567812 a8d58590 pwnables 1 +1297567812 a8d58590 pwnables 1 +1297567813 3c7f310c pwnables 1 +1297567813 a8d58590 pwnables 1 +1297567814 a8d58590 pwnables 1 +1297567814 a8d58590 pwnables 1 +1297567815 a8d58590 pwnables 1 +1297567816 a8d58590 pwnables 1 +1297567816 3c7f310c pwnables 1 +1297567817 a8d58590 pwnables 1 +1297567817 a8d58590 pwnables 1 +1297567818 a8d58590 pwnables 1 +1297567820 a8d58590 pwnables 1 +1297567820 a8d58590 pwnables 1 +1297567821 a8d58590 pwnables 1 +1297567821 a8d58590 pwnables 1 +1297567822 a8d58590 pwnables 1 +1297567823 a8d58590 pwnables 1 +1297567823 a8d58590 pwnables 1 +1297567827 3c7f310c pwnables 1 +1297567827 a8d58590 pwnables 1 +1297567828 a8d58590 pwnables 1 +1297567828 3c7f310c pwnables 1 +1297567828 f0cfd260 steg 70 +1297567828 a8d58590 pwnables 1 +1297567829 a8d58590 pwnables 1 +1297567829 a8d58590 pwnables 1 +1297567830 a8d58590 pwnables 1 +1297567830 a8d58590 pwnables 1 +1297567831 a8d58590 pwnables 1 +1297567832 a8d58590 pwnables 1 +1297567832 a8d58590 pwnables 1 +1297567834 3c7f310c pwnables 1 +1297567838 3c7f310c pwnables 1 +1297567844 3c7f310c pwnables 1 +1297567849 3c7f310c pwnables 1 +1297567855 3c7f310c pwnables 1 +1297567860 3c7f310c pwnables 1 +1297567864 3c7f310c pwnables 1 +1297567871 3c7f310c pwnables 1 +1297567874 3c7f310c pwnables 1 +1297567882 3c7f310c pwnables 1 +1297567885 3c7f310c pwnables 1 +1297567892 3c7f310c pwnables 1 +1297567895 3c7f310c pwnables 1 +1297567903 3c7f310c pwnables 1 +1297567905 3c7f310c pwnables 1 +1297567914 3c7f310c pwnables 1 +1297567915 3c7f310c pwnables 1 +1297567924 3c7f310c pwnables 1 +1297567926 3c7f310c pwnables 1 +1297567936 3c7f310c pwnables 1 +1297567936 3c7f310c pwnables 1 +1297567946 3c7f310c pwnables 1 +1297567947 3c7f310c pwnables 1 +1297567956 3c7f310c pwnables 1 +1297567958 3c7f310c pwnables 1 +1297567966 3c7f310c pwnables 1 +1297567969 3c7f310c pwnables 1 +1297567976 3c7f310c pwnables 1 +1297567980 3c7f310c pwnables 1 +1297567986 3c7f310c pwnables 1 +1297567990 3c7f310c pwnables 1 +1297568002 3c7f310c pwnables 1 +1297568010 c206e4c6 pwnables 1 +1297568012 3c7f310c pwnables 1 +1297568023 3c7f310c pwnables 1 +1297568034 3c7f310c pwnables 1 +1297568037 3c7f310c pwnables 1 +1297568045 3c7f310c pwnables 1 +1297568047 3c7f310c pwnables 1 +1297568055 3c7f310c pwnables 1 +1297568055 3c7f310c steg 70 +1297568057 3c7f310c pwnables 1 +1297568066 3c7f310c pwnables 1 +1297568067 3c7f310c pwnables 1 +1297568078 3c7f310c pwnables 1 +1297568078 3c7f310c pwnables 1 +1297568087 3c7f310c pwnables 1 +1297568089 3c7f310c pwnables 1 +1297568098 3c7f310c pwnables 1 +1297568100 3c7f310c pwnables 1 +1297568108 3c7f310c pwnables 1 +1297568110 3c7f310c pwnables 1 +1297568112 c206e4c6 steg 40 +1297568119 3c7f310c pwnables 1 +1297568120 3c7f310c pwnables 1 +1297568128 3c7f310c pwnables 1 +1297568131 3c7f310c pwnables 1 +1297568138 3c7f310c pwnables 1 +1297568142 3c7f310c pwnables 1 +1297568148 3c7f310c pwnables 1 +1297568153 3c7f310c pwnables 1 +1297568159 3c7f310c pwnables 1 +1297568164 3c7f310c pwnables 1 +1297568169 3c7f310c pwnables 1 +1297568175 3c7f310c pwnables 1 +1297568180 3c7f310c pwnables 1 +1297568185 3c7f310c pwnables 1 +1297568190 3c7f310c pwnables 1 +1297568196 3c7f310c pwnables 1 +1297568200 3c7f310c pwnables 1 +1297568207 3c7f310c pwnables 1 +1297568210 3c7f310c pwnables 1 +1297568218 3c7f310c pwnables 1 +1297568229 3c7f310c pwnables 1 +1297568240 3c7f310c pwnables 1 +1297568251 3c7f310c pwnables 1 +1297568262 3c7f310c pwnables 1 +1297568274 3c7f310c pwnables 1 +1297568284 3c7f310c pwnables 1 +1297568296 3c7f310c pwnables 1 +1297568308 3c7f310c pwnables 1 +1297568319 3c7f310c pwnables 1 +1297568332 3c7f310c pwnables 1 +1297568343 3c7f310c pwnables 1 +1297568355 3c7f310c pwnables 1 +1297568367 3c7f310c pwnables 1 +1297568378 3c7f310c pwnables 1 +1297568390 3c7f310c pwnables 1 +1297568402 3c7f310c pwnables 1 +1297568413 3c7f310c pwnables 1 +1297568415 a8d58590 pwnables 1 +1297568415 a8d58590 pwnables 1 +1297568416 a8d58590 pwnables 1 +1297568416 a8d58590 pwnables 1 +1297568417 a8d58590 pwnables 1 +1297568417 a8d58590 pwnables 1 +1297568418 a8d58590 pwnables 1 +1297568420 a8d58590 pwnables 1 +1297568420 a8d58590 pwnables 1 +1297568421 a8d58590 pwnables 1 +1297568421 3c7f310c hackme 200 +1297568422 a8d58590 pwnables 1 +1297568422 a8d58590 pwnables 1 +1297568423 a8d58590 pwnables 1 +1297568423 a8d58590 pwnables 1 +1297568425 3c7f310c pwnables 1 +1297568425 a8d58590 pwnables 1 +1297568426 a8d58590 pwnables 1 +1297568427 a8d58590 pwnables 1 +1297568427 a8d58590 pwnables 1 +1297568428 a8d58590 pwnables 1 +1297568428 a8d58590 pwnables 1 +1297568429 a8d58590 pwnables 1 +1297568429 a8d58590 pwnables 1 +1297568430 a8d58590 pwnables 1 +1297568430 a8d58590 pwnables 1 +1297568431 a8d58590 pwnables 1 +1297568432 a8d58590 pwnables 1 +1297568432 a8d58590 pwnables 1 +1297568433 a8d58590 pwnables 1 +1297568433 a8d58590 pwnables 1 +1297568434 a8d58590 pwnables 1 +1297568434 a8d58590 pwnables 1 +1297568435 a8d58590 pwnables 1 +1297568436 a8d58590 pwnables 1 +1297568436 3c7f310c pwnables 1 +1297568437 a8d58590 pwnables 1 +1297568437 a8d58590 pwnables 1 +1297568438 a8d58590 pwnables 1 +1297568438 a8d58590 pwnables 1 +1297568439 a8d58590 pwnables 1 +1297568439 a8d58590 pwnables 1 +1297568440 a8d58590 pwnables 1 +1297568440 a8d58590 pwnables 1 +1297568441 a8d58590 pwnables 1 +1297568442 a8d58590 pwnables 1 +1297568442 a8d58590 pwnables 1 +1297568443 a8d58590 pwnables 1 +1297568443 a8d58590 pwnables 1 +1297568444 a8d58590 pwnables 1 +1297568445 a8d58590 pwnables 1 +1297568445 a8d58590 pwnables 1 +1297568446 a8d58590 pwnables 1 +1297568446 a8d58590 pwnables 1 +1297568447 a8d58590 pwnables 1 +1297568448 3c7f310c pwnables 1 +1297568448 a8d58590 pwnables 1 +1297568449 a8d58590 pwnables 1 +1297568449 a8d58590 pwnables 1 +1297568450 a8d58590 pwnables 1 +1297568451 a8d58590 pwnables 1 +1297568451 a8d58590 pwnables 1 +1297568452 a8d58590 pwnables 1 +1297568452 a8d58590 pwnables 1 +1297568453 a8d58590 pwnables 1 +1297568453 a8d58590 pwnables 1 +1297568454 a8d58590 pwnables 1 +1297568455 a8d58590 pwnables 1 +1297568456 a8d58590 pwnables 1 +1297568456 a8d58590 pwnables 1 +1297568457 a8d58590 pwnables 1 +1297568458 a8d58590 pwnables 1 +1297568458 3c7f310c pwnables 1 +1297568459 a8d58590 pwnables 1 +1297568460 a8d58590 pwnables 1 +1297568461 a8d58590 pwnables 1 +1297568462 a8d58590 pwnables 1 +1297568464 a8d58590 pwnables 1 +1297568465 a8d58590 pwnables 1 +1297568466 a8d58590 pwnables 1 +1297568467 a8d58590 pwnables 1 +1297568468 a8d58590 pwnables 1 +1297568470 a8d58590 pwnables 1 +1297568470 3c7f310c pwnables 1 +1297568471 a8d58590 pwnables 1 +1297568472 a8d58590 pwnables 1 +1297568473 a8d58590 pwnables 1 +1297568475 a8d58590 pwnables 1 +1297568476 a8d58590 pwnables 1 +1297568477 a8d58590 pwnables 1 +1297568478 a8d58590 pwnables 1 +1297568479 a8d58590 pwnables 1 +1297568480 a8d58590 pwnables 1 +1297568482 a8d58590 pwnables 1 +1297568482 3c7f310c pwnables 1 +1297568483 a8d58590 pwnables 1 +1297568484 a8d58590 pwnables 1 +1297568484 a8d58590 pwnables 1 +1297568485 a8d58590 pwnables 1 +1297568486 a8d58590 pwnables 1 +1297568486 a8d58590 pwnables 1 +1297568487 a8d58590 pwnables 1 +1297568487 a8d58590 pwnables 1 +1297568488 a8d58590 pwnables 1 +1297568489 a8d58590 pwnables 1 +1297568489 a8d58590 pwnables 1 +1297568490 a8d58590 pwnables 1 +1297568490 a8d58590 pwnables 1 +1297568491 a8d58590 pwnables 1 +1297568491 a8d58590 pwnables 1 +1297568492 a8d58590 pwnables 1 +1297568493 a8d58590 pwnables 1 +1297568493 3c7f310c pwnables 1 +1297568494 a8d58590 pwnables 1 +1297568496 a8d58590 pwnables 1 +1297568496 a8d58590 pwnables 1 +1297568497 a8d58590 pwnables 1 +1297568497 a8d58590 pwnables 1 +1297568498 a8d58590 pwnables 1 +1297568499 a8d58590 pwnables 1 +1297568499 a8d58590 pwnables 1 +1297568500 a8d58590 pwnables 1 +1297568500 a8d58590 pwnables 1 +1297568501 a8d58590 pwnables 1 +1297568501 a8d58590 pwnables 1 +1297568502 a8d58590 pwnables 1 +1297568503 a8d58590 pwnables 1 +1297568503 a8d58590 pwnables 1 +1297568504 a8d58590 pwnables 1 +1297568505 3c7f310c pwnables 1 +1297568505 a8d58590 pwnables 1 +1297568505 a8d58590 pwnables 1 +1297568506 a8d58590 pwnables 1 +1297568507 a8d58590 pwnables 1 +1297568507 a8d58590 pwnables 1 +1297568508 a8d58590 pwnables 1 +1297568508 a8d58590 pwnables 1 +1297568509 a8d58590 pwnables 1 +1297568509 a8d58590 pwnables 1 +1297568510 a8d58590 pwnables 1 +1297568510 a8d58590 pwnables 1 +1297568511 a8d58590 pwnables 1 +1297568512 a8d58590 pwnables 1 +1297568512 a8d58590 pwnables 1 +1297568513 a8d58590 pwnables 1 +1297568513 a8d58590 pwnables 1 +1297568514 a8d58590 pwnables 1 +1297568515 a8d58590 pwnables 1 +1297568515 3c7f310c pwnables 1 +1297568516 a8d58590 pwnables 1 +1297568516 a8d58590 pwnables 1 +1297568517 a8d58590 pwnables 1 +1297568517 a8d58590 pwnables 1 +1297568518 a8d58590 pwnables 1 +1297568518 a8d58590 pwnables 1 +1297568519 a8d58590 pwnables 1 +1297568519 a8d58590 pwnables 1 +1297568520 a8d58590 pwnables 1 +1297568521 a8d58590 pwnables 1 +1297568522 a8d58590 pwnables 1 +1297568522 a8d58590 pwnables 1 +1297568523 a8d58590 pwnables 1 +1297568523 a8d58590 pwnables 1 +1297568524 a8d58590 pwnables 1 +1297568525 a8d58590 pwnables 1 +1297568525 a8d58590 pwnables 1 +1297568526 a8d58590 pwnables 1 +1297568526 3c7f310c pwnables 1 +1297568527 a8d58590 pwnables 1 +1297568527 a8d58590 pwnables 1 +1297568528 a8d58590 pwnables 1 +1297568528 a8d58590 pwnables 1 +1297568529 a8d58590 pwnables 1 +1297568530 a8d58590 pwnables 1 +1297568530 a8d58590 pwnables 1 +1297568531 a8d58590 pwnables 1 +1297568531 a8d58590 pwnables 1 +1297568532 a8d58590 pwnables 1 +1297568532 a8d58590 pwnables 1 +1297568533 a8d58590 pwnables 1 +1297568534 a8d58590 pwnables 1 +1297568534 a8d58590 pwnables 1 +1297568535 a8d58590 pwnables 1 +1297568535 a8d58590 pwnables 1 +1297568536 a8d58590 pwnables 1 +1297568536 a8d58590 pwnables 1 +1297568537 a8d58590 pwnables 1 +1297568538 3c7f310c pwnables 1 +1297568538 a8d58590 pwnables 1 +1297568540 a8d58590 pwnables 1 +1297568540 a8d58590 pwnables 1 +1297568541 a8d58590 pwnables 1 +1297568542 a8d58590 pwnables 1 +1297568542 a8d58590 pwnables 1 +1297568543 a8d58590 pwnables 1 +1297568543 a8d58590 pwnables 1 +1297568544 a8d58590 pwnables 1 +1297568545 a8d58590 pwnables 1 +1297568546 a8d58590 pwnables 1 +1297568548 a8d58590 pwnables 1 +1297568549 a8d58590 pwnables 1 +1297568550 3c7f310c pwnables 1 +1297568551 a8d58590 pwnables 1 +1297568552 a8d58590 pwnables 1 +1297568553 a8d58590 pwnables 1 +1297568554 a8d58590 pwnables 1 +1297568555 a8d58590 pwnables 1 +1297568556 a8d58590 pwnables 1 +1297568558 a8d58590 pwnables 1 +1297568559 a8d58590 pwnables 1 +1297568560 a8d58590 pwnables 1 +1297568562 3c7f310c pwnables 1 +1297568562 a8d58590 pwnables 1 +1297568563 a8d58590 pwnables 1 +1297568564 a8d58590 pwnables 1 +1297568565 a8d58590 pwnables 1 +1297568566 a8d58590 pwnables 1 +1297568568 a8d58590 pwnables 1 +1297568568 a8d58590 pwnables 1 +1297568569 a8d58590 pwnables 1 +1297568570 a8d58590 pwnables 1 +1297568570 a8d58590 pwnables 1 +1297568571 a8d58590 pwnables 1 +1297568571 a8d58590 pwnables 1 +1297568572 a8d58590 pwnables 1 +1297568573 3c7f310c pwnables 1 +1297568573 a8d58590 pwnables 1 +1297568574 a8d58590 pwnables 1 +1297568574 a8d58590 pwnables 1 +1297568575 a8d58590 pwnables 1 +1297568575 a8d58590 pwnables 1 +1297568576 a8d58590 pwnables 1 +1297568576 a8d58590 pwnables 1 +1297568577 a8d58590 pwnables 1 +1297568578 a8d58590 pwnables 1 +1297568578 a8d58590 pwnables 1 +1297568579 a8d58590 pwnables 1 +1297568579 a8d58590 pwnables 1 +1297568580 a8d58590 pwnables 1 +1297568580 a8d58590 pwnables 1 +1297568581 a8d58590 pwnables 1 +1297568582 a8d58590 pwnables 1 +1297568583 a8d58590 pwnables 1 +1297568584 a8d58590 pwnables 1 +1297568584 3c7f310c pwnables 1 +1297568584 a8d58590 pwnables 1 +1297568585 a8d58590 pwnables 1 +1297568586 a8d58590 pwnables 1 +1297568586 a8d58590 pwnables 1 +1297568587 a8d58590 pwnables 1 +1297568587 a8d58590 pwnables 1 +1297568588 a8d58590 pwnables 1 +1297568588 a8d58590 pwnables 1 +1297568589 a8d58590 pwnables 1 +1297568589 a8d58590 pwnables 1 +1297568590 a8d58590 pwnables 1 +1297568591 a8d58590 pwnables 1 +1297568591 a8d58590 pwnables 1 +1297568592 a8d58590 pwnables 1 +1297568592 a8d58590 pwnables 1 +1297568593 a8d58590 pwnables 1 +1297568593 a8d58590 pwnables 1 +1297568594 a8d58590 pwnables 1 +1297568595 a8d58590 pwnables 1 +1297568595 3c7f310c pwnables 1 +1297568596 a8d58590 pwnables 1 +1297568596 c206e4c6 hackme 200 +1297568596 a8d58590 pwnables 1 +1297568597 a8d58590 pwnables 1 +1297568597 a8d58590 pwnables 1 +1297568598 a8d58590 pwnables 1 +1297568601 a8d58590 pwnables 1 +1297568601 a8d58590 pwnables 1 +1297568602 a8d58590 pwnables 1 +1297568602 a8d58590 pwnables 1 +1297568603 a8d58590 pwnables 1 +1297568603 a8d58590 pwnables 1 +1297568604 a8d58590 pwnables 1 +1297568604 a8d58590 pwnables 1 +1297568605 a8d58590 pwnables 1 +1297568606 a8d58590 pwnables 1 +1297568606 3c7f310c pwnables 1 +1297568617 3c7f310c pwnables 1 +1297568628 3c7f310c pwnables 1 +1297568639 3c7f310c pwnables 1 +1297568650 3c7f310c pwnables 1 +1297568658 3c7f310c pwnables 1 +1297568661 3c7f310c pwnables 1 +1297568664 3c7f310c pwnables 1 +1297568666 3c7f310c pwnables 1 +1297568666 a8d58590 hackme 200 +1297568667 3c7f310c pwnables 1 +1297568671 3c7f310c pwnables 1 +1297568866 c206e4c6 tanks 1 diff --git a/doc/2011-02-UNM/state/tanks/next-round b/doc/2011-02-UNM/state/tanks/next-round new file mode 100644 index 0000000..f1b1cb3 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/next-round @@ -0,0 +1 @@ +404 diff --git a/doc/2011-02-UNM/state/tanks/players/3c7f310c/author b/doc/2011-02-UNM/state/tanks/players/3c7f310c/author new file mode 100644 index 0000000..0d1f838 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/3c7f310c/author @@ -0,0 +1 @@ +fugate \ No newline at end of file diff --git a/doc/2011-02-UNM/state/tanks/players/3c7f310c/color b/doc/2011-02-UNM/state/tanks/players/3c7f310c/color new file mode 100644 index 0000000..657dbe3 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/3c7f310c/color @@ -0,0 +1 @@ +#c0c0c0 \ No newline at end of file diff --git a/doc/2011-02-UNM/state/tanks/players/3c7f310c/name b/doc/2011-02-UNM/state/tanks/players/3c7f310c/name new file mode 100644 index 0000000..54cb173 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/3c7f310c/name @@ -0,0 +1 @@ +Drone1 \ No newline at end of file diff --git a/doc/2011-02-UNM/state/tanks/players/3c7f310c/program b/doc/2011-02-UNM/state/tanks/players/3c7f310c/program new file mode 100644 index 0000000..3e74f1f --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/3c7f310c/program @@ -0,0 +1,4 @@ +get-turret 12 + set-turret! ( Rotate turret ) +37 40 set-speed! ( Go in circles ) +0 sensor? { fire! } if ( Fire if turret sensor triggered ) +1 sensor? { -50 50 set-speed! } if ( Turn if collision sensor triggered ) \ No newline at end of file diff --git a/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor0 b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor0 new file mode 100644 index 0000000..a6ab06f --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor0 @@ -0,0 +1 @@ +50 0 7 1 diff --git a/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor1 b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor1 new file mode 100644 index 0000000..7079312 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor1 @@ -0,0 +1 @@ +30 0 90 0 diff --git a/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor2 b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor2 new file mode 100644 index 0000000..6a20ce4 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor2 @@ -0,0 +1 @@ +0 0 0 0 diff --git a/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor3 b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor3 new file mode 100644 index 0000000..6a20ce4 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor3 @@ -0,0 +1 @@ +0 0 0 0 diff --git a/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor4 b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor4 new file mode 100644 index 0000000..6a20ce4 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor4 @@ -0,0 +1 @@ +0 0 0 0 diff --git a/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor5 b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor5 new file mode 100644 index 0000000..6a20ce4 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor5 @@ -0,0 +1 @@ +0 0 0 0 diff --git a/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor6 b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor6 new file mode 100644 index 0000000..6a20ce4 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor6 @@ -0,0 +1 @@ +0 0 0 0 diff --git a/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor7 b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor7 new file mode 100644 index 0000000..6a20ce4 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor7 @@ -0,0 +1 @@ +0 0 0 0 diff --git a/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor8 b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor8 new file mode 100644 index 0000000..6a20ce4 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor8 @@ -0,0 +1 @@ +0 0 0 0 diff --git a/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor9 b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor9 new file mode 100644 index 0000000..6a20ce4 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/3c7f310c/sensor9 @@ -0,0 +1 @@ +0 0 0 0 diff --git a/doc/2011-02-UNM/state/tanks/players/a8d58590/author b/doc/2011-02-UNM/state/tanks/players/a8d58590/author new file mode 100644 index 0000000..d9159c0 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/a8d58590/author @@ -0,0 +1 @@ +Lab Trash \ No newline at end of file diff --git a/doc/2011-02-UNM/state/tanks/players/a8d58590/color b/doc/2011-02-UNM/state/tanks/players/a8d58590/color new file mode 100644 index 0000000..657dbe3 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/a8d58590/color @@ -0,0 +1 @@ +#c0c0c0 \ No newline at end of file diff --git a/doc/2011-02-UNM/state/tanks/players/a8d58590/name b/doc/2011-02-UNM/state/tanks/players/a8d58590/name new file mode 100644 index 0000000..ee99b8c --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/a8d58590/name @@ -0,0 +1 @@ +invincible \ No newline at end of file diff --git a/doc/2011-02-UNM/state/tanks/players/a8d58590/program b/doc/2011-02-UNM/state/tanks/players/a8d58590/program new file mode 100644 index 0000000..d07f03a --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/a8d58590/program @@ -0,0 +1,4 @@ +get-turret 12 + set-turret! ( Rotate turret ) +37 40 set-speed! ( Go in circles ) +0 sensor? { fire! } if ( Fire if turret sensor triggered ) +1 sensor? { -50 50 set-speed! } if ( Turn if collision sensor triggered ) diff --git a/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor0 b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor0 new file mode 100644 index 0000000..4d3fe55 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor0 @@ -0,0 +1 @@ +50 0 7 0 diff --git a/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor1 b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor1 new file mode 100644 index 0000000..7079312 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor1 @@ -0,0 +1 @@ +30 0 90 0 diff --git a/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor2 b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor2 new file mode 100644 index 0000000..2cee018 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor2 @@ -0,0 +1 @@ +50 90 10 0 diff --git a/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor3 b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor3 new file mode 100644 index 0000000..75ddf89 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor3 @@ -0,0 +1 @@ +30 90 20 0 diff --git a/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor4 b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor4 new file mode 100644 index 0000000..436df8e --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor4 @@ -0,0 +1 @@ +50 180 40 0 diff --git a/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor5 b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor5 new file mode 100644 index 0000000..b3f2746 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor5 @@ -0,0 +1 @@ +30 180 7 0 diff --git a/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor6 b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor6 new file mode 100644 index 0000000..9d55c41 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor6 @@ -0,0 +1 @@ +100 360 45 0 diff --git a/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor7 b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor7 new file mode 100644 index 0000000..a6ee583 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor7 @@ -0,0 +1 @@ +200 360 90 0 diff --git a/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor8 b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor8 new file mode 100644 index 0000000..f3b4118 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor8 @@ -0,0 +1 @@ +100 180 180 0 diff --git a/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor9 b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor9 new file mode 100644 index 0000000..942eff3 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/a8d58590/sensor9 @@ -0,0 +1 @@ +200 180 45 0 diff --git a/doc/2011-02-UNM/state/tanks/players/c206e4c6/author b/doc/2011-02-UNM/state/tanks/players/c206e4c6/author new file mode 100644 index 0000000..599e4f4 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c206e4c6/author @@ -0,0 +1 @@ +Exploded Youth \ No newline at end of file diff --git a/doc/2011-02-UNM/state/tanks/players/c206e4c6/color b/doc/2011-02-UNM/state/tanks/players/c206e4c6/color new file mode 100644 index 0000000..2e44481 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c206e4c6/color @@ -0,0 +1 @@ +#c7e148 \ No newline at end of file diff --git a/doc/2011-02-UNM/state/tanks/players/c206e4c6/name b/doc/2011-02-UNM/state/tanks/players/c206e4c6/name new file mode 100644 index 0000000..3e6d8a7 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c206e4c6/name @@ -0,0 +1 @@ +Windmill \ No newline at end of file diff --git a/doc/2011-02-UNM/state/tanks/players/c206e4c6/program b/doc/2011-02-UNM/state/tanks/players/c206e4c6/program new file mode 100644 index 0000000..7d893b1 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c206e4c6/program @@ -0,0 +1,12 @@ +37 40 set-speed! ( Go in circles ) +0 sensor? { fire! } if ( Fire if turret sensor triggered ) +1 sensor? { get-turret 90 + set-turret! } if ( Turn if collision sensor triggered ) +2 sensor? { get-turret 180 + set-turret! } if ( Turn if collision sensor triggered ) +3 sensor? { get-turret 270 + set-turret! } if ( Turn if collision sensor triggered ) +4 sensor? { get-turret 45 + set-turret! } if ( Turn if collision sensor triggered ) +5 sensor? { get-turret 135 + set-turret! } if ( Turn if collision sensor triggered ) +6 sensor? { get-turret 225 + set-turret! } if ( Turn if collision sensor triggered ) +7 sensor? { get-turret 315 + set-turret! } if ( Turn if collision sensor triggered ) + +8 sensor? { 70 20 set-speed! } if ( Turn if collision sensor triggered ) +9 sensor? { 20 70 set-speed! } if ( Turn if collision sensor triggered ) \ No newline at end of file diff --git a/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor0 b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor0 new file mode 100644 index 0000000..772e596 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor0 @@ -0,0 +1 @@ +50 0 15 1 diff --git a/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor1 b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor1 new file mode 100644 index 0000000..1414167 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor1 @@ -0,0 +1 @@ +50 90 15 1 diff --git a/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor2 b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor2 new file mode 100644 index 0000000..e628ee6 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor2 @@ -0,0 +1 @@ +50 180 15 1 diff --git a/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor3 b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor3 new file mode 100644 index 0000000..efbbca0 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor3 @@ -0,0 +1 @@ +50 270 15 1 diff --git a/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor4 b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor4 new file mode 100644 index 0000000..2a88064 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor4 @@ -0,0 +1 @@ +50 45 15 1 diff --git a/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor5 b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor5 new file mode 100644 index 0000000..446a36e --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor5 @@ -0,0 +1 @@ +50 135 15 1 diff --git a/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor6 b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor6 new file mode 100644 index 0000000..5856d73 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor6 @@ -0,0 +1 @@ +50 225 15 1 diff --git a/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor7 b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor7 new file mode 100644 index 0000000..691373b --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor7 @@ -0,0 +1 @@ +50 315 15 1 diff --git a/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor8 b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor8 new file mode 100644 index 0000000..e5b5077 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor8 @@ -0,0 +1 @@ +100 90 180 0 diff --git a/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor9 b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor9 new file mode 100644 index 0000000..3ebdb93 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c206e4c6/sensor9 @@ -0,0 +1 @@ +100 270 180 0 diff --git a/doc/2011-02-UNM/state/tanks/players/c2b97292/author b/doc/2011-02-UNM/state/tanks/players/c2b97292/author new file mode 100644 index 0000000..3a1a8fb --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c2b97292/author @@ -0,0 +1 @@ +KennyG \ No newline at end of file diff --git a/doc/2011-02-UNM/state/tanks/players/c2b97292/color b/doc/2011-02-UNM/state/tanks/players/c2b97292/color new file mode 100644 index 0000000..425c049 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c2b97292/color @@ -0,0 +1 @@ +#c02000 \ No newline at end of file diff --git a/doc/2011-02-UNM/state/tanks/players/c2b97292/name b/doc/2011-02-UNM/state/tanks/players/c2b97292/name new file mode 100644 index 0000000..6fdb548 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c2b97292/name @@ -0,0 +1 @@ +TheTerminator \ No newline at end of file diff --git a/doc/2011-02-UNM/state/tanks/players/c2b97292/program b/doc/2011-02-UNM/state/tanks/players/c2b97292/program new file mode 100644 index 0000000..3e1d05c --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c2b97292/program @@ -0,0 +1,16 @@ + +get-turret 15 + set-turret! ( Rotate turret ) +85 80 set-speed! ( Go in circles ) +0 sensor? { fire! } if ( Fire if turret sensor triggered ) + +1 sensor? { get-turret 15 + set-turret!} if +2 sensor? {get-turret -15 + set-turret!} if + +3 sensor? {60 - 60 set-speed!} if +4 sensor? {-60 60 set-speed!} if + +5 sensor? {60 - 60 set-speed!} if (Danielle and Ken!!!!!) +6 sensor? {-60 60 set-speed!} if + +8 sensor? {60 - 60 set-speed!} if +9 sensor? {-60 60 set-speed!} if diff --git a/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor0 b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor0 new file mode 100644 index 0000000..a6ab06f --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor0 @@ -0,0 +1 @@ +50 0 7 1 diff --git a/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor1 b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor1 new file mode 100644 index 0000000..344f9a9 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor1 @@ -0,0 +1 @@ +100 30 15 1 diff --git a/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor2 b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor2 new file mode 100644 index 0000000..eb0be6a --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor2 @@ -0,0 +1 @@ +100 330 15 1 diff --git a/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor3 b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor3 new file mode 100644 index 0000000..0f7f7ba --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor3 @@ -0,0 +1 @@ +60 0 30 0 diff --git a/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor4 b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor4 new file mode 100644 index 0000000..84917d1 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor4 @@ -0,0 +1 @@ +60 60 30 0 diff --git a/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor5 b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor5 new file mode 100644 index 0000000..efa4f4b --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor5 @@ -0,0 +1 @@ +60 120 30 0 diff --git a/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor6 b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor6 new file mode 100644 index 0000000..47e0918 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor6 @@ -0,0 +1 @@ +61 180 30 0 diff --git a/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor7 b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor7 new file mode 100644 index 0000000..6a20ce4 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor7 @@ -0,0 +1 @@ +0 0 0 0 diff --git a/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor8 b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor8 new file mode 100644 index 0000000..58e037f --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor8 @@ -0,0 +1 @@ +60 240 30 0 diff --git a/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor9 b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor9 new file mode 100644 index 0000000..fade965 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/c2b97292/sensor9 @@ -0,0 +1 @@ +60 300 30 0 diff --git a/doc/2011-02-UNM/state/tanks/players/crashmaster/author b/doc/2011-02-UNM/state/tanks/players/crashmaster/author new file mode 100644 index 0000000..902019d --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/crashmaster/author @@ -0,0 +1 @@ +Neale Pickett diff --git a/doc/2011-02-UNM/state/tanks/players/crashmaster/name b/doc/2011-02-UNM/state/tanks/players/crashmaster/name new file mode 100644 index 0000000..e0a2059 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/crashmaster/name @@ -0,0 +1 @@ +Crashmaster diff --git a/doc/2011-02-UNM/state/tanks/players/crashmaster/program b/doc/2011-02-UNM/state/tanks/players/crashmaster/program new file mode 100644 index 0000000..288b323 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/crashmaster/program @@ -0,0 +1,38 @@ +( Mem 0: Turn number ) +0 mget +1 + +0 mset + +0 mget 30 % 10 / ( [0..2], changes every 10 turns ) +dup 0 = { 80 80 set-speed! } if +dup 1 = { 60 80 set-speed! } if + 2 = { 80 60 set-speed! } if + +0 set-turret! + +fire-ready? set-led! + +fire-ready? +{ + ( Behavior for when we can shoot ) + + 0 sensor? { fire! } if + 1 sensor? { 10 10 set-speed! 0 set-turret! } if + 2 sensor? { 10 10 set-speed! 0 set-turret! } if + 3 sensor? { 0 60 set-speed! get-turret 50 - set-turret! } if + 4 sensor? { 60 0 set-speed! get-turret 50 + set-turret! } if + 3 sensor? 4 sensor? & { 100 100 set-speed! get-turret set-turret! } if + 5 sensor? { 100 40 set-speed! } if +} +{ + ( Behavior for when we can't shoot ) + + 0 sensor? { 10 20 set-speed! } if + 1 sensor? { 10 10 set-speed! } if + 2 sensor? { 10 20 set-speed! } if + 3 sensor? { 70 50 set-speed! } if + 4 sensor? { 50 70 set-speed! } if + 3 sensor? 4 sensor? & { -100 20 set-speed! } if + 5 sensor? { 100 50 set-speed! } if +} +ifelse diff --git a/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor0 b/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor0 new file mode 100644 index 0000000..682dfb9 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor0 @@ -0,0 +1 @@ +50 0 8 1 diff --git a/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor1 b/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor1 new file mode 100644 index 0000000..a6b17e8 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor1 @@ -0,0 +1 @@ +30 0 50 0 diff --git a/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor2 b/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor2 new file mode 100644 index 0000000..7851bcc --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor2 @@ -0,0 +1 @@ +50 0 10 0 diff --git a/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor3 b/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor3 new file mode 100644 index 0000000..473e0b5 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor3 @@ -0,0 +1 @@ +100 315 100 1 diff --git a/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor4 b/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor4 new file mode 100644 index 0000000..cb0e6e2 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor4 @@ -0,0 +1 @@ +100 45 100 1 diff --git a/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor5 b/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor5 new file mode 100644 index 0000000..3f436a9 --- /dev/null +++ b/doc/2011-02-UNM/state/tanks/players/crashmaster/sensor5 @@ -0,0 +1 @@ +60 180 180 0 diff --git a/doc/2011-02-UNM/state/teams/colors/3c7f310c b/doc/2011-02-UNM/state/teams/colors/3c7f310c new file mode 100644 index 0000000..d81a07b --- /dev/null +++ b/doc/2011-02-UNM/state/teams/colors/3c7f310c @@ -0,0 +1 @@ +a6cee3 diff --git a/doc/2011-02-UNM/state/teams/colors/a49f3487 b/doc/2011-02-UNM/state/teams/colors/a49f3487 new file mode 100644 index 0000000..21d4c56 --- /dev/null +++ b/doc/2011-02-UNM/state/teams/colors/a49f3487 @@ -0,0 +1 @@ +e31a1c diff --git a/doc/2011-02-UNM/state/teams/colors/a8d58590 b/doc/2011-02-UNM/state/teams/colors/a8d58590 new file mode 100644 index 0000000..d3b9640 --- /dev/null +++ b/doc/2011-02-UNM/state/teams/colors/a8d58590 @@ -0,0 +1 @@ +b2df8a diff --git a/doc/2011-02-UNM/state/teams/colors/c206e4c6 b/doc/2011-02-UNM/state/teams/colors/c206e4c6 new file mode 100644 index 0000000..b7912e3 --- /dev/null +++ b/doc/2011-02-UNM/state/teams/colors/c206e4c6 @@ -0,0 +1 @@ +1f78b4 diff --git a/doc/2011-02-UNM/state/teams/colors/c2b97292 b/doc/2011-02-UNM/state/teams/colors/c2b97292 new file mode 100644 index 0000000..0dac3c0 --- /dev/null +++ b/doc/2011-02-UNM/state/teams/colors/c2b97292 @@ -0,0 +1 @@ +fb9a99 diff --git a/doc/2011-02-UNM/state/teams/colors/f0cfd260 b/doc/2011-02-UNM/state/teams/colors/f0cfd260 new file mode 100644 index 0000000..59c12f7 --- /dev/null +++ b/doc/2011-02-UNM/state/teams/colors/f0cfd260 @@ -0,0 +1 @@ +33a02c diff --git a/doc/2011-02-UNM/state/teams/names/3c7f310c b/doc/2011-02-UNM/state/teams/names/3c7f310c new file mode 100644 index 0000000..5d291c9 --- /dev/null +++ b/doc/2011-02-UNM/state/teams/names/3c7f310c @@ -0,0 +1 @@ +kunafa diff --git a/doc/2011-02-UNM/state/teams/names/a49f3487 b/doc/2011-02-UNM/state/teams/names/a49f3487 new file mode 100644 index 0000000..948702d --- /dev/null +++ b/doc/2011-02-UNM/state/teams/names/a49f3487 @@ -0,0 +1 @@ +merfers diff --git a/doc/2011-02-UNM/state/teams/names/a8d58590 b/doc/2011-02-UNM/state/teams/names/a8d58590 new file mode 100644 index 0000000..968bac9 --- /dev/null +++ b/doc/2011-02-UNM/state/teams/names/a8d58590 @@ -0,0 +1 @@ +Lab Trash diff --git a/doc/2011-02-UNM/state/teams/names/c206e4c6 b/doc/2011-02-UNM/state/teams/names/c206e4c6 new file mode 100644 index 0000000..b1803c4 --- /dev/null +++ b/doc/2011-02-UNM/state/teams/names/c206e4c6 @@ -0,0 +1 @@ +Exploded Youth diff --git a/doc/2011-02-UNM/state/teams/names/c2b97292 b/doc/2011-02-UNM/state/teams/names/c2b97292 new file mode 100644 index 0000000..64e937c --- /dev/null +++ b/doc/2011-02-UNM/state/teams/names/c2b97292 @@ -0,0 +1 @@ +Scurvy Bytes diff --git a/packages/crypto/1/key b/doc/2011-02-UNM/state/teams/names/f0cfd260 similarity index 100% rename from packages/crypto/1/key rename to doc/2011-02-UNM/state/teams/names/f0cfd260 diff --git a/doc/2011-TF3/categories.txt b/doc/2011-03-TF3/categories.txt similarity index 97% rename from doc/2011-TF3/categories.txt rename to doc/2011-03-TF3/categories.txt index cb5401b..fe23384 100644 --- a/doc/2011-TF3/categories.txt +++ b/doc/2011-03-TF3/categories.txt @@ -13,3 +13,4 @@ This year we have: hackme, logger, net-re, octopus, printf, pwnables, sequence, skynet, steg, tanks, webapp + rlyeh diff --git a/doc/2011-03-TF3/problems.txt b/doc/2011-03-TF3/problems.txt new file mode 100644 index 0000000..9b307ef --- /dev/null +++ b/doc/2011-03-TF3/problems.txt @@ -0,0 +1,53 @@ +Problems with Sandia +-------------------- + +* Tighter integration of scoreboard +* Spell out *exactly* what they can and cannot do: + * No posters with offensive text + * No machines at tables + * No grabbing our network while we're using it + * Give them exact network configuration information (they thought I + said /24, we needed /16) +* Specify where they get to project their scoreboard and what color + scheme it needs to be, including max luminosity +* They need to let me know well in advance if they want any links, + hosted files, or anything else in our game server +* Let Kevin know that we need everything planned out in advance and will + stubbornly refuse to accommodate any last-minute changes +* We handled power and network pretty well this year, do that again + + + +Other problems +-------------- + +* We must have 8-foot rounds. We got 5-foot rounds this year. Bring + measuring tape and tell hotel immediately. +* Explain tokens even more clearly to vendors +* Have puzzles explain what format examples should be in +* TFTP tank submission +* Interfaces on pwnables are going down +* Specify how vendors can participate on IRC with ads +* Provide schedule to hotel well in advance +* Fewer categories. 20 is too many. +* Tanks unmatched comment +* Auto-refreshing tanks page +* Text announcement system in scoreboard +* No text to speech announcements, or at least display text as it's + being pronounced +* Have some 4" gaffer tape +* Classes need to start at the same time every day, danny thinks 9-4:30 +* Go back to five days +* Have vendors sponsor a social event +* Pen testing class +* ltraceme needs to die + + +Bullshit +-------- + +* Chash wants a $800 chair +* Open bar +* Chash wants a Segway +* Chash wants a trash can behind the uh the thing. And a terlet. +* Nerf weaponry diff --git a/doc/2011-03-TF3/schedule.txt b/doc/2011-03-TF3/schedule.txt new file mode 100644 index 0000000..48530d8 --- /dev/null +++ b/doc/2011-03-TF3/schedule.txt @@ -0,0 +1,31 @@ +March 7 +------- + +8:00-9:00 Registration +9:00-12:00 Classes + Host Forensics: Ballroom North + Network RE: Ballroom South + Malware RE: New Mexico Room + Pen testing: Stiha Room +12:00-1:00 Break +1:00-5:00 Classes + + +March 8 +------- + +8:00-12:00 Classes +12:00-1:00 Break +1:00-5:00 Classes +7:00-8:00 Reception and key signing + +March 9 +------- +7:00-8:00 Registration +8:00-8:20 Exercise introduction +8:20-5:00 Exercise + + +March 10 +-------- +8:00-5:00 Exercise diff --git a/doc/2011-03-TF3/tf3.dxf b/doc/2011-03-TF3/tf3.dxf new file mode 100644 index 0000000..79f30ad --- /dev/null +++ b/doc/2011-03-TF3/tf3.dxf @@ -0,0 +1,4428 @@ +999 +dxflib 2.0.4.8 + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1015 + 9 +$HANDSEED + 5 +FFFF + 9 +$DIMADEC + 70 +2 + 9 +$GRIDUNIT + 10 +1.0 + 20 +1.0 + 9 +$DIMASZ + 40 +0.1 + 9 +$DIMGAP + 40 +0.025 + 9 +$LUNITS + 70 +5 + 9 +$AUPREC + 70 +2 + 9 +$SPLINESEGS + 70 +8 + 9 +$INSUNITS + 70 +2 + 9 +$DIMEXO + 40 +0.025 + 9 +$DIMLUNIT + 70 +5 + 9 +$GRIDMODE + 70 +1 + 9 +$DIMTXT + 40 +0.1 + 9 +$LUPREC + 70 +2 + 9 +$DIMSTYLE + 2 +Standard + 9 +$PSVPSCALE + 40 +0.0063819011769857 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$PLIMMAX + 10 +0.7083333333333334 + 20 +0.9166666666666665 + 9 +$DIMEXE + 40 +0.05 + 9 +$PINSBASE + 10 +0.0426059739819105 + 20 +0.1967697623221493 + 30 +0.0 + 9 +$DIMAUNIT + 70 +0 + 9 +$AUNITS + 70 +0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +100 +AcDbSymbolTable + 70 +1 + 0 +VPORT + 5 +30 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 +0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +286.3055555555554861 + 22 +148.5 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +297.0 + 41 +1.92798353909465 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 +0 + 72 +100 + 73 +1 + 74 +3 + 75 +1 + 76 +1 + 77 +0 + 78 +0 +281 +0 + 65 +1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 +0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +100 +AcDbSymbolTable + 70 +21 + 0 +LTYPE + 5 +14 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +15 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +16 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CONTINUOUS + 70 +0 + 3 +Solid line + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +31 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DOT + 70 +0 + 3 +Dot . . . . . . . . . . . . . . . . . . . . . . + 72 +65 + 73 +2 + 40 +6.3499999999999996 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +32 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DOT2 + 70 +0 + 3 +Dot (.5x) ..................................... + 72 +65 + 73 +2 + 40 +3.1749999999999998 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +33 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DOTX2 + 70 +0 + 3 +Dot (2x) . . . . . . . . . . . . . + 72 +65 + 73 +2 + 40 +12.6999999999999993 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +34 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHED + 70 +0 + 3 +Dashed __ __ __ __ __ __ __ __ __ __ __ __ __ _ + 72 +65 + 73 +2 + 40 +19.0500000000000007 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +35 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHED2 + 70 +0 + 3 +Dashed (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + 72 +65 + 73 +2 + 40 +9.5250000000000004 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +36 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHEDX2 + 70 +0 + 3 +Dashed (2x) ____ ____ ____ ____ ____ ___ + 72 +65 + 73 +2 + 40 +38.1000000000000014 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +37 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHDOT + 70 +0 + 3 +Dash dot __ . __ . __ . __ . __ . __ . __ . __ + 72 +65 + 73 +4 + 40 +25.3999999999999986 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +38 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHDOT2 + 70 +0 + 3 +Dash dot (.5x) _._._._._._._._._._._._._._._. + 72 +65 + 73 +4 + 40 +12.6999999999999993 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +39 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHDOTX2 + 70 +0 + 3 +Dash dot (2x) ____ . ____ . ____ . ___ + 72 +65 + 73 +4 + 40 +50.7999999999999972 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +3A +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DIVIDE + 70 +0 + 3 +Divide ____ . . ____ . . ____ . . ____ . . ____ + 72 +65 + 73 +6 + 40 +31.75 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +3B +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DIVIDE2 + 70 +0 + 3 +Divide (.5x) __..__..__..__..__..__..__..__.._ + 72 +65 + 73 +6 + 40 +15.875 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +3C +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DIVIDEX2 + 70 +0 + 3 +Divide (2x) ________ . . ________ . . _ + 72 +65 + 73 +6 + 40 +63.5 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +3D +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTER + 70 +0 + 3 +Center ____ _ ____ _ ____ _ ____ _ ____ _ ____ + 72 +65 + 73 +4 + 40 +50.7999999999999972 + 49 +31.75 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +6.3499999999999996 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +3E +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTER2 + 70 +0 + 3 +Center (.5x) ___ _ ___ _ ___ _ ___ _ ___ _ ___ + 72 +65 + 73 +4 + 40 +28.5749999999999993 + 49 +19.0500000000000007 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +3.1749999999999998 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +3F +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTERX2 + 70 +0 + 3 +Center (2x) ________ __ ________ __ _____ + 72 +65 + 73 +4 + 40 +101.5999999999999943 + 49 +63.5 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +12.6999999999999993 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +40 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BORDER + 70 +0 + 3 +Border __ __ . __ __ . __ __ . __ __ . __ __ . + 72 +65 + 73 +6 + 40 +44.4500000000000028 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +41 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BORDER2 + 70 +0 + 3 +Border (.5x) __.__.__.__.__.__.__.__.__.__.__. + 72 +65 + 73 +6 + 40 +22.2250000000000014 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +42 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BORDERX2 + 70 +0 + 3 +Border (2x) ____ ____ . ____ ____ . ___ + 72 +65 + 73 +6 + 40 +88.9000000000000057 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +100 +AcDbSymbolTable + 70 +4 + 0 +LAYER + 5 +10 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 +0 + 62 +7 + 6 +CONTINUOUS +370 +0 +390 +F + 0 +LAYER + 5 +43 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Electrical + 70 +0 + 62 +8 + 6 +CENTER +370 +0 +390 +F + 0 +LAYER + 5 +44 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Tables + 70 +0 + 62 +6 + 6 +CONTINUOUS +370 +0 +390 +F + 0 +LAYER + 5 +45 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Network + 70 +0 + 62 +1 + 6 +CONTINUOUS +370 +-3 +390 +F + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +100 +AcDbSymbolTable + 70 +1 + 0 +STYLE + 5 +11 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 +0 + 40 +0.0 + 41 +0.75 + 50 +0.0 + 71 +0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +100 +AcDbSymbolTable + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +100 +AcDbSymbolTable + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +100 +AcDbSymbolTable + 70 +1 + 0 +APPID + 5 +12 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +100 +AcDbSymbolTable + 70 +1 +100 +AcDbDimStyleTable + 71 +0 + 0 +DIMSTYLE +105 +27 +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 41 +0.1 + 42 +0.025 + 43 +3.75 + 44 +0.05 + 70 +0 + 73 +0 + 74 +0 + 77 +1 + 78 +8 +140 +0.1 +141 +2.5 +143 +0.03937007874016 +147 +0.025 +171 +3 +172 +1 +271 +2 +272 +2 +274 +3 +278 +44 +283 +0 +284 +8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +100 +AcDbSymbolTable + 70 +1 + 0 +BLOCK_RECORD + 5 +1F +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 0 +BLOCK_RECORD + 5 +1B +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 0 +BLOCK_RECORD + 5 +23 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1C +100 +AcDbEntity + 67 +1 + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +1D +100 +AcDbEntity + 67 +1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +24 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +46 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +11.3333333333333339 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +47 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +19.0 + 20 +0.0 + 30 +0.0 + 11 +39.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +48 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +39.0 + 20 +0.0 + 30 +0.0 + 11 +39.0 + 21 +2.8333333333333335 + 31 +0.0 + 0 +LINE + 5 +49 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +39.0 + 20 +2.8333333333333335 + 30 +0.0 + 11 +42.0 + 21 +2.8333333333333335 + 31 +0.0 + 0 +LINE + 5 +4A +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +42.0 + 20 +2.8333333333333335 + 30 +0.0 + 11 +42.0 + 21 +0.0000033333333334 + 31 +0.0 + 0 +LINE + 5 +4B +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +42.0 + 20 +0.0000033333333334 + 30 +0.0 + 11 +68.1666666666666714 + 21 +0.0000033333333334 + 31 +0.0 + 0 +LINE + 5 +4C +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +68.1666666666666714 + 20 +0.0000033333333334 + 30 +0.0 + 11 +80.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +4D +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +68.1666666666666714 + 20 +0.0000033333333334 + 30 +0.0 + 11 +79.9911321448893489 + 21 +4.3037568035146645 + 31 +0.0 + 0 +LINE + 5 +4E +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +4.3037568035146645 + 30 +0.0 + 11 +79.9911321448893489 + 21 +19.1370901368479984 + 31 +0.0 + 0 +LINE + 5 +4F +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +19.1370901368479984 + 30 +0.0 + 11 +79.9911321448893489 + 21 +32.3037568035146663 + 31 +0.0 + 0 +LINE + 5 +50 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +19.1370901368479984 + 30 +0.0 + 11 +71.1577988115560203 + 21 +32.3037568035146663 + 31 +0.0 + 0 +LINE + 5 +51 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +71.1577988115560203 + 20 +32.3037568035146663 + 30 +0.0 + 11 +71.1577988115560203 + 21 +43.9704234701813306 + 31 +0.0 + 0 +LINE + 5 +52 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +71.1577988115560203 + 20 +43.9704234701813306 + 30 +0.0 + 11 +79.9911321448893489 + 21 +57.1370901368479949 + 31 +0.0 + 0 +LINE + 5 +53 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +57.1370901368479949 + 30 +0.0 + 11 +79.9911321448893489 + 21 +19.1370901368479984 + 31 +0.0 + 0 +LINE + 5 +54 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +57.1370901368479949 + 30 +0.0 + 11 +79.9911321448893489 + 21 +77.7204234701813306 + 31 +0.0 + 0 +LINE + 5 +55 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +77.7204234701813306 + 30 +0.0 + 11 +79.9911321448893489 + 21 +81.9704234701813306 + 31 +0.0 + 0 +LINE + 5 +56 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +81.9704234701813306 + 30 +0.0 + 11 +68.1577991448893528 + 21 +81.9704234701813306 + 31 +0.0 + 0 +LINE + 5 +57 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +68.1577991448893528 + 20 +81.9704234701813306 + 30 +0.0 + 11 +79.9911321448893489 + 21 +77.7204234701813306 + 31 +0.0 + 0 +LINE + 5 +58 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +68.1577991448893528 + 20 +81.9704234701813306 + 30 +0.0 + 11 +42.4911324782226814 + 21 +81.9704234701813306 + 31 +0.0 + 0 +LINE + 5 +59 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +42.4911324782226814 + 20 +81.9704234701813306 + 30 +0.0 + 11 +42.4911324782226814 + 21 +79.137090136848002 + 31 +0.0 + 0 +LINE + 5 +5A +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +42.4911324782226814 + 20 +79.137090136848002 + 30 +0.0 + 11 +39.4911324782226814 + 21 +79.137090136848002 + 31 +0.0 + 0 +LINE + 5 +5B +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +39.4911324782226814 + 20 +79.137090136848002 + 30 +0.0 + 11 +39.4911324782226814 + 21 +81.9704234701813306 + 31 +0.0 + 0 +LINE + 5 +5C +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +39.4911324782226814 + 20 +81.9704234701813306 + 30 +0.0 + 11 +7.7411324782226814 + 21 +81.9704234701813306 + 31 +0.0 + 0 +LINE + 5 +5D +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +7.7411324782226814 + 20 +81.9704234701813306 + 30 +0.0 + 11 +0.0 + 21 +82.0 + 31 +0.0 + 0 +LINE + 5 +5E +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +82.0 + 30 +0.0 + 11 +0.0 + 21 +76.9166666666666714 + 31 +0.0 + 0 +LINE + 5 +5F +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +65.5833333333333428 + 30 +0.0 + 11 +0.0 + 21 +41.5000000000000142 + 31 +0.0 + 0 +LINE + 5 +60 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +41.5000000000000142 + 30 +0.0 + 11 +8.5833333333333339 + 21 +41.5000000000000142 + 31 +0.0 + 0 +LINE + 5 +61 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +0.0 + 21 +34.1666666666666643 + 31 +0.0 + 0 +LINE + 5 +62 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +34.1666666666666643 + 30 +0.0 + 11 +8.5833333333333339 + 21 +34.1666666666666643 + 31 +0.0 + 0 +LINE + 5 +63 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +8.5833333333333339 + 20 +34.1666666666666643 + 30 +0.0 + 11 +8.5833333333333339 + 21 +41.5000000000000142 + 31 +0.0 + 0 +CIRCLE + 5 +64 +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +57.1370901368479949 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +65 +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +19.1370901368479984 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +66 +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +77.7204234701813306 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +67 +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +68.1577991448893528 + 20 +81.9704234701813306 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +68 +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +65.5833333333333428 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +69 +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +68.1666666666666714 + 20 +0.0000033333333334 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +6A +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +62.5664000000005913 + 20 +0.0000033333333334 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +6B +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +36.0448000000003503 + 20 +0.0 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +6C +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +26.4192000000002487 + 20 +0.0 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +6D +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +3.0720000000000289 + 20 +0.0 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +6E +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +3.379200000000032 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +6F +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +7.3728000000000709 + 20 +0.0 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +70 +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +26.5216000000002516 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +71 +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +49.2544000000004658 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +72 +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +22.0160000000002043 + 20 +81.9704234701813306 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +73 +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +59.0848000000005555 + 20 +81.9704234701813306 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +74 +100 +AcDbEntity +100 +AcDbCircle + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +76.5051111727376707 + 20 +51.9409456689238027 + 30 +0.0 + 40 +0.25 + 0 +CIRCLE + 5 +75 +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +24.0 + 20 +60.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +76 +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +16.0 + 20 +74.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +77 +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +40.0 + 20 +60.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +78 +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +56.0 + 20 +60.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +79 +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +48.0 + 20 +74.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +7A +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +32.0 + 20 +74.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +7B +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +64.0 + 20 +74.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +7C +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +72.0 + 20 +60.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +7D +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +64.0 + 20 +46.0 + 30 +0.0 + 40 +4.0 + 0 +LINE + 5 +7E +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +36.5 + 20 +45.5 + 30 +0.0 + 11 +44.5 + 21 +45.5 + 31 +0.0 + 0 +LINE + 5 +7F +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +44.5 + 20 +48.0 + 30 +0.0 + 11 +36.5 + 21 +48.0 + 31 +0.0 + 0 +LINE + 5 +80 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +36.5 + 20 +48.0 + 30 +0.0 + 11 +36.5 + 21 +45.5 + 31 +0.0 + 0 +LINE + 5 +81 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +47.0 + 20 +48.0 + 30 +0.0 + 11 +47.0 + 21 +40.0 + 31 +0.0 + 0 +LINE + 5 +82 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +47.0 + 20 +40.0 + 30 +0.0 + 11 +44.5 + 21 +40.0 + 31 +0.0 + 0 +LINE + 5 +83 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +44.5 + 20 +40.0 + 30 +0.0 + 11 +44.5 + 21 +48.0 + 31 +0.0 + 0 +LINE + 5 +84 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +34.0 + 20 +40.0 + 30 +0.0 + 11 +36.5 + 21 +40.0 + 31 +0.0 + 0 +LINE + 5 +85 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +36.5 + 20 +40.0 + 30 +0.0 + 11 +36.5 + 21 +48.0 + 31 +0.0 + 0 +LINE + 5 +86 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +36.5 + 20 +48.0 + 30 +0.0 + 11 +34.0 + 21 +48.0 + 31 +0.0 + 0 +LINE + 5 +87 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +34.0 + 20 +48.0 + 30 +0.0 + 11 +34.0 + 21 +40.0 + 31 +0.0 + 0 +LINE + 5 +88 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +44.5 + 20 +45.5 + 30 +0.0 + 11 +44.5 + 21 +48.0 + 31 +0.0 + 0 +LINE + 5 +89 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +44.5 + 20 +48.0 + 30 +0.0 + 11 +47.0 + 21 +48.0 + 31 +0.0 + 0 +LINE + 5 +8A +100 +AcDbEntity +100 +AcDbLine + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +64.0 + 20 +46.0 + 30 +0.0 + 11 +47.0 + 21 +44.0 + 31 +0.0 + 0 +MTEXT + 5 +8B +100 +AcDbEntity +100 +AcDbMText + 8 +Electrical + 62 +256 +370 +-1 + 6 +ByLayer + 10 +92.0 + 20 +32.0 + 30 +0.0 + 40 +1.0 + 41 +100.0 + 71 +1 + 72 +2 + 1 +Electrical + 7 +normallatin1 + 50 +0.0 + 73 +0 + 44 +1.0 + 0 +LINE + 5 +8C +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +72.25 + 20 +60.0 + 30 +0.0 + 11 +64.25 + 21 +46.0 + 31 +0.0 + 0 +LINE + 5 +8D +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +64.25 + 20 +74.0 + 30 +0.0 + 11 +56.25 + 21 +60.0 + 31 +0.0 + 0 +LINE + 5 +8E +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +48.25 + 20 +74.0 + 30 +0.0 + 11 +40.25 + 21 +60.0 + 31 +0.0 + 0 +LINE + 5 +8F +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +16.25 + 20 +74.0 + 30 +0.0 + 11 +24.25 + 21 +60.0 + 31 +0.0 + 0 +LINE + 5 +90 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +32.25 + 20 +74.0 + 30 +0.0 + 11 +40.25 + 21 +60.0 + 31 +0.0 + 0 +LINE + 5 +91 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +40.25 + 20 +60.0 + 30 +0.0 + 11 +40.75 + 21 +48.0 + 31 +0.0 + 0 +LINE + 5 +92 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +64.25 + 20 +46.0 + 30 +0.0 + 11 +47.25 + 21 +44.0 + 31 +0.0 + 0 +LINE + 5 +93 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +56.25 + 20 +60.0 + 30 +0.0 + 11 +47.25 + 21 +44.0 + 31 +0.0 + 0 +LINE + 5 +94 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +24.25 + 20 +60.0 + 30 +0.0 + 11 +35.5 + 21 +48.0 + 31 +0.0 + 0 +MTEXT + 5 +95 +100 +AcDbEntity +100 +AcDbMText + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +92.25 + 20 +28.0 + 30 +0.0 + 40 +1.0 + 41 +100.0 + 71 +1 + 72 +2 + 1 +Network + 7 +normallatin1 + 50 +0.0 + 73 +0 + 44 +1.0 + 0 +LINE + 5 +96 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +8.5833333333333339 + 20 +38.0175444241316427 + 30 +0.0 + 11 +71.1577988115560203 + 21 +38.0175444241316427 + 31 +0.0 + 0 +LINE + 5 +97 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +7.7071067811865479 + 20 +50.7071067811865461 + 30 +0.0 + 11 +14.7781745930520216 + 21 +43.6360389693210706 + 31 +0.0 + 0 +LINE + 5 +98 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +14.7781745930520216 + 20 +43.6360389693210706 + 30 +0.0 + 11 +14.0710678118654755 + 21 +42.9289321881345245 + 31 +0.0 + 0 +LINE + 5 +99 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +14.0710678118654755 + 20 +42.9289321881345245 + 30 +0.0 + 11 +7.0 + 21 +50.0 + 31 +0.0 + 0 +LINE + 5 +9A +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +7.0 + 20 +50.0 + 30 +0.0 + 11 +7.7071067811865479 + 21 +50.7071067811865461 + 31 +0.0 + 0 +LINE + 5 +9B +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +53.0 + 20 +40.0 + 30 +0.0 + 11 +55.0 + 21 +40.0 + 31 +0.0 + 0 +LINE + 5 +9C +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +55.0 + 20 +40.0 + 30 +0.0 + 11 +55.0 + 21 +38.0 + 31 +0.0 + 0 +LINE + 5 +9D +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +55.0 + 20 +38.0 + 30 +0.0 + 11 +53.0 + 21 +38.0 + 31 +0.0 + 0 +LINE + 5 +9E +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +53.0 + 20 +38.0 + 30 +0.0 + 11 +53.0 + 21 +40.0 + 31 +0.0 + 0 +LINE + 5 +9F +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +56.0 + 20 +40.0 + 30 +0.0 + 11 +58.0 + 21 +40.0 + 31 +0.0 + 0 +LINE + 5 +A0 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +58.0 + 20 +40.0 + 30 +0.0 + 11 +58.0 + 21 +38.0 + 31 +0.0 + 0 +LINE + 5 +A1 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +58.0 + 20 +38.0 + 30 +0.0 + 11 +56.0 + 21 +38.0 + 31 +0.0 + 0 +LINE + 5 +A2 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +56.0 + 20 +38.0 + 30 +0.0 + 11 +56.0 + 21 +40.0 + 31 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +100 +AcDbDictionary +280 +0 +281 +1 + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +AcDbVariableDictionary +350 +A3 + 0 +DICTIONARY + 5 +D +100 +AcDbDictionary +280 +0 +281 +1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +100 +AcDbDictionary +281 +1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +ACDBPLACEHOLDER + 5 +F + 0 +DICTIONARY + 5 +17 +100 +AcDbDictionary +280 +0 +281 +1 + 3 +Standard +350 +18 + 0 +MLINESTYLE + 5 +18 +100 +AcDbMlineStyle + 2 +STANDARD + 70 +0 + 3 + + 62 +256 + 51 +90.0 + 52 +90.0 + 71 +2 + 49 +0.5 + 62 +256 + 6 +BYLAYER + 49 +-0.5 + 62 +256 + 6 +BYLAYER + 0 +DICTIONARY + 5 +19 +100 +AcDbDictionary +280 +0 +281 +1 + 0 +DICTIONARY + 5 +1A +100 +AcDbDictionary +281 +1 + 3 +Layout1 +350 +1E + 3 +Layout2 +350 +26 + 3 +Model +350 +22 + 0 +LAYOUT + 5 +1E +100 +AcDbPlotSettings + 1 + + 2 +C:\Program Files\AutoCAD 2002\plotters\DWF ePlot (optimized for plotting).pc3 + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +688 + 72 +0 + 73 +0 + 74 +5 + 7 + + 75 +16 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Layout1 + 70 +1 + 71 +1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +100000000000000000000.0 + 24 +100000000000000000000.0 + 34 +100000000000000000000.0 + 15 +-100000000000000000000.0 + 25 +-100000000000000000000.0 + 35 +-100000000000000000000.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 +0 +330 +1B + 0 +LAYOUT + 5 +22 +100 +AcDbPlotSettings + 1 + + 2 +C:\Program Files\AutoCAD 2002\plotters\DWF ePlot (optimized for plotting).pc3 + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +1712 + 72 +0 + 73 +0 + 74 +0 + 7 + + 75 +0 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Model + 70 +1 + 71 +0 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 +0 +330 +1F + 0 +LAYOUT + 5 +26 +100 +AcDbPlotSettings + 1 + + 2 +C:\Program Files\AutoCAD 2002\plotters\DWF ePlot (optimized for plotting).pc3 + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +688 + 72 +0 + 73 +0 + 74 +5 + 7 + + 75 +16 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Layout2 + 70 +1 + 71 +2 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 +0 +330 +23 + 0 +DICTIONARY + 5 +A3 +100 +AcDbDictionary +281 +1 + 3 +DIMASSOC +350 +A5 + 3 +HIDETEXT +350 +A4 + 0 +DICTIONARYVAR + 5 +A4 +100 +DictionaryVariables +280 +0 + 1 +2 + 0 +DICTIONARYVAR + 5 +A5 +100 +DictionaryVariables +280 +0 + 1 +1 + 0 +ENDSEC + 0 +EOF diff --git a/doc/2011-03-TF3/todo.txt b/doc/2011-03-TF3/todo.txt new file mode 100644 index 0000000..4e596cf --- /dev/null +++ b/doc/2011-03-TF3/todo.txt @@ -0,0 +1,16 @@ +Erin: + +* Create and publish schedule +* Update web site to mention room rates / guaranteed space +* Order new CAT5 +* Order switches +* Test all cables + + +Neale: + +* Figure out who goes where +* Talk to Kevin, generally +* Pester instructors +* Figure out display machines +* Set up VLAN-tagged VPN tunnel to quiet room diff --git a/doc/2011-11-NMT/posters/battle1.svg b/doc/2011-11-NMT/posters/battle1.svg new file mode 100644 index 0000000..1f5dec5 --- /dev/null +++ b/doc/2011-11-NMT/posters/battle1.svg @@ -0,0 +1,460 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A Computer Security CompetitionPresented by Los Alamos National Laboratoryand New Mexico Tech Sat & Sun, Nov 5 – 6, 10 a.m. – 6 p.m.Fidel Ballroom 3,New Mexico Tech Register by November 15http://dirtbags.net/ctf/ + The NM Collegiate Security Series NMT CTF Invitational 2011 + + + diff --git a/doc/2011-11-NMT/posters/battle2.svg b/doc/2011-11-NMT/posters/battle2.svg new file mode 100644 index 0000000..9b30f72 --- /dev/null +++ b/doc/2011-11-NMT/posters/battle2.svg @@ -0,0 +1,427 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A Computer Security CompetitionPresented by Los Alamos National Laboratoryand New Mexico Tech Sat & Sun, Nov 5 – 6, 10 a.m. – 6 p.m.Fidel Ballroom 3,New Mexico Tech Register by October 26, 2011http://dirtbags.net/ctf/ + The NM Collegiate Security Series NMT CTF Invitational 2011 + + diff --git a/doc/2011-11-NMT/posters/butterfly.svg b/doc/2011-11-NMT/posters/butterfly.svg new file mode 100644 index 0000000..cd6426d --- /dev/null +++ b/doc/2011-11-NMT/posters/butterfly.svg @@ -0,0 +1,425 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A Computer Security CompetitionPresented by Los Alamos National Laboratoryand New Mexico Tech Sat & Sun, Nov 5 – 6, 10 a.m. – 6 p.m.Fidel Ballroom 3,New Mexico Tech Register by October 26, 2011http://dirtbags.net/ctf/ + + + + + The NM Collegiate Security Series NMT CTF Invitational 2011 + + + + + + + + + + + + + + diff --git a/doc/2011-11-NMT/posters/chasevendetta.svg b/doc/2011-11-NMT/posters/chasevendetta.svg new file mode 100644 index 0000000..f855305 --- /dev/null +++ b/doc/2011-11-NMT/posters/chasevendetta.svg @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ner lbh nabalzbhf?pneqf:krphi-thxrk-ilirk + + + + + + + A Computer Security CompetitionPresented by Los Alamos National Laboratoryand New Mexico Tech Sat & Sun, Nov 5 – 6, 10 a.m. – 6 p.m.Fidel Ballroom 3,New Mexico Tech Register by November 15http://dirtbags.net/ctf/ + The NM Collegiate Security Series NMT CTF Invitational 2011 + + diff --git a/doc/2011-11-NMT/posters/nerd.svg b/doc/2011-11-NMT/posters/nerd.svg new file mode 100644 index 0000000..10c9fa8 --- /dev/null +++ b/doc/2011-11-NMT/posters/nerd.svg @@ -0,0 +1,487 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A Computer Security CompetitionPresented by Los Alamos National Laboratoryand New Mexico Tech Sat & Sun, Nov 5 – 6, 10 a.m. – 6 p.m.Fidel Ballroom 3,New Mexico Tech Register by October 26, 2011http://dirtbags.net/ctf/ + The NM Collegiate Security Series NMT CTF Invitational 2011 + + diff --git a/doc/2011-11-NMT/posters/ninja.svg b/doc/2011-11-NMT/posters/ninja.svg new file mode 100644 index 0000000..792075a --- /dev/null +++ b/doc/2011-11-NMT/posters/ninja.svg @@ -0,0 +1,319 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + A Computer Security CompetitionPresented by Los Alamos National Laboratoryand New Mexico Tech Sat & Sun, Nov 5 – 6, 10 a.m. – 6 p.m.Fidel Ballroom 3,New Mexico Tech Register by November 15http://dirtbags.net/ctf/ + The NM Collegiate Security Series NMT CTF Invitational 2011 + + + + + + + + + + + + + + + + + + diff --git a/doc/2011-11-NMT/posters/pirate.svg b/doc/2011-11-NMT/posters/pirate.svg new file mode 100644 index 0000000..e80a56d --- /dev/null +++ b/doc/2011-11-NMT/posters/pirate.svg @@ -0,0 +1,267 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + A Computer Security CompetitionPresented by Los Alamos National Laboratoryand New Mexico Tech Sat & Sun, Nov 5 – 6, 10 a.m. – 6 p.m.Fidel Ballroom 3,New Mexico Tech Register by November 15http://dirtbags.net/ctf/ + The NM Collegiate Security Series NMT CTF Invitational 2011 + + diff --git a/doc/2012-02-06-TF4/interest-email.txt b/doc/2012-02-06-TF4/interest-email.txt new file mode 100644 index 0000000..b8805ee --- /dev/null +++ b/doc/2012-02-06-TF4/interest-email.txt @@ -0,0 +1 @@ +IJeppsen@aptima.com diff --git a/doc/ideas.txt b/doc/ideas.txt index b0123b4..5c411f0 100644 --- a/doc/ideas.txt +++ b/doc/ideas.txt @@ -23,3 +23,12 @@ Capture the Packet * Jim Meilander could teach a class about Bro * Use qemu -net socket,connect=10.0.0.2:5399 for capture the packet + + +From Jed Crandell +----------------- + +* Have password easily read, must determine username with stack + examination (like in printf category) +* Use %600000u%n to write an arbitrary value to a location in + stack, then jump to that location somehow. diff --git a/doc/openwrt/dhcp b/doc/openwrt/etc/config/dhcp similarity index 100% rename from doc/openwrt/dhcp rename to doc/openwrt/etc/config/dhcp diff --git a/doc/openwrt/network b/doc/openwrt/etc/config/network similarity index 100% rename from doc/openwrt/network rename to doc/openwrt/etc/config/network diff --git a/doc/openwrt/wifi b/doc/openwrt/etc/config/wifi similarity index 100% rename from doc/openwrt/wifi rename to doc/openwrt/etc/config/wifi diff --git a/doc/openwrt/iptables b/doc/openwrt/etc/init.d/iptables similarity index 97% rename from doc/openwrt/iptables rename to doc/openwrt/etc/init.d/iptables index aa86a61..f608ac6 100755 --- a/doc/openwrt/iptables +++ b/doc/openwrt/etc/init.d/iptables @@ -3,8 +3,6 @@ START=45 STOP=89 -VLANS=48 - start () { stop diff --git a/doc/openwrt/vlan b/doc/openwrt/etc/init.d/vlan similarity index 100% rename from doc/openwrt/vlan rename to doc/openwrt/etc/init.d/vlan diff --git a/doc/openwrt/etc/rc.d/K89iptables b/doc/openwrt/etc/rc.d/K89iptables new file mode 120000 index 0000000..17013f0 --- /dev/null +++ b/doc/openwrt/etc/rc.d/K89iptables @@ -0,0 +1 @@ +../init.d/iptables \ No newline at end of file diff --git a/doc/openwrt/etc/rc.d/K89vlan b/doc/openwrt/etc/rc.d/K89vlan new file mode 120000 index 0000000..444d959 --- /dev/null +++ b/doc/openwrt/etc/rc.d/K89vlan @@ -0,0 +1 @@ +../init.d/vlan \ No newline at end of file diff --git a/doc/openwrt/etc/rc.d/S41vlan b/doc/openwrt/etc/rc.d/S41vlan new file mode 120000 index 0000000..444d959 --- /dev/null +++ b/doc/openwrt/etc/rc.d/S41vlan @@ -0,0 +1 @@ +../init.d/vlan \ No newline at end of file diff --git a/doc/openwrt/etc/rc.d/S45iptables b/doc/openwrt/etc/rc.d/S45iptables new file mode 120000 index 0000000..17013f0 --- /dev/null +++ b/doc/openwrt/etc/rc.d/S45iptables @@ -0,0 +1 @@ +../init.d/iptables \ No newline at end of file diff --git a/doc/problems.txt b/doc/problems.txt index c6a3ffc..1e8748e 100644 --- a/doc/problems.txt +++ b/doc/problems.txt @@ -1,25 +1,16 @@ Bugs ==== -* claim.cgi not exiting (maybe fixed?) -* We need some programs so that we never have to edit .db files - directly. I truncated tokens.db with > instead of >>. -* Get erin to edit net-re +* Pwnables are generating new tokens way too quickly +* chroot jail isn't secure under Linux (see man page) Physical -------- -* We should buy a longer VGA cable * Tape! - -Possibly fixed --------------- -* sequence 300; puzzler isn't taking the unicode character right - - Won't fix --------- * tanks/designer.cgi: s/token/team hash/ diff --git a/doc/todo.txt b/doc/todo.txt index 5f43553..3360a09 100644 --- a/doc/todo.txt +++ b/doc/todo.txt @@ -6,3 +6,13 @@ Things That Need Fixin' * put tokencli in tanks package * all packages ought to work standalone * teams.txt: Come up with a better solution to creating this at boot +* new log stream of answer attempts (for Kevin) + + +net-re +------ +* Integrate scapy, ngrep?, fluffy +* Fix 4000 point puzzle protocol +* The typo where IHL (or something) in TCP is 4 and should be 5 +* new-contest maybe not clearing out tanks; maybe have it run + /service/*/clean diff --git a/doc/token-categories.txt b/doc/token-categories.txt index f5ebcb8..0067f73 100644 --- a/doc/token-categories.txt +++ b/doc/token-categories.txt @@ -6,7 +6,11 @@ LANL's CTF contest allows for easy addition of new modules which can use 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 + example:xenon-donut-helix + +where "example" is the category name, and "xenon-donut-helix" is a +bubblebabble hash of a 32-bit random number. The entire string must be +submitted as the token. 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 diff --git a/include/arc4.c b/include/arc4.c deleted file mode 100644 index 8f13423..0000000 --- a/include/arc4.c +++ /dev/null @@ -1,114 +0,0 @@ -#include -#include -#include "arc4.h" - -#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); -} - - -#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] -#include - -struct arc4_ctx { - uint8_t S[256]; - uint8_t i; - uint8_t j; -}; - -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, 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/include/md5.c b/include/md5.c deleted file mode 100644 index 036c900..0000000 --- a/include/md5.c +++ /dev/null @@ -1,280 +0,0 @@ -/* - * 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/include/md5.h b/include/md5.h deleted file mode 100644 index 63c7936..0000000 --- a/include/md5.h +++ /dev/null @@ -1,42 +0,0 @@ -#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/include/rand.c b/include/rand.c deleted file mode 100644 index 3f03634..0000000 --- a/include/rand.c +++ /dev/null @@ -1,65 +0,0 @@ -#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/include/rand.h b/include/rand.h deleted file mode 100644 index 02fc019..0000000 --- a/include/rand.h +++ /dev/null @@ -1,11 +0,0 @@ -#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/include/test.c b/include/test.c deleted file mode 100644 index 0301a26..0000000 --- a/include/test.c +++ /dev/null @@ -1,46 +0,0 @@ -#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/include/token.c b/include/token.c deleted file mode 100644 index 9fbe6d3..0000000 --- a/include/token.c +++ /dev/null @@ -1,117 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef CTF_BASE -#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, - 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/include/token.h deleted file mode 100644 index 4034254..0000000 --- a/include/token.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef __TOKEN_H__ -#define __TOKEN_H__ - -#include -#include -#include - -#define TOKEN_MAX 80 - -/* ARC4 functions, in case anybody wants 'em */ - -ssize_t read_token_fd(int fd, - uint8_t const *key, size_t keylen, - char *buf, size_t buflen); - -ssize_t read_token(char const *name, - uint8_t const *key, size_t keylen, - char *buf, size_t buflen); - -#endif diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..c1c4e8c --- /dev/null +++ b/install.sh @@ -0,0 +1,57 @@ +#! /bin/sh -e + +DRIVE=$1 +if ! [ -b "$DRIVE" ]; then + echo "Usage: $0 DEVICE" + echo + echo "Prepares DEVICE with Capture The Flag goodness" + exit +fi + +size=$(sfdisk -s $DRIVE) +fatsize=$(sfdisk -l /dev/sdb | awk '/^Disk/ {print $3 - 2;}') + +FATFS=${DRIVE}1 +EXTFS=${DRIVE}2 + +sfdisk $DRIVE < $DRIVE +mount $FATFS /mnt/ctf-install +mkdir /mnt/ctf-install/syslinux /mnt/ctf-install/disabled +umount /mnt/ctf-install +syslinux -d syslinux $FATFS + +mount $FATFS /mnt/ctf-install +cp rootfs.squashfs /mnt/ctf-install/syslinux/dbtl.squashfs +cp bzImage /mnt/ctf-install/syslinux/ + +cat </mnt/ctf-install/syslinux/syslinux.cfg +DEFAULT ctf +LABEL ctf + KERNEL bzImage + INITRD dbtl.squashfs + +LABEL dbtl + KERNEL bzImage + INITRD dbtl.squashfs + APPEND packages=disabled +EOD + +cp $(dirname $0)/bin/*.pkg /mnt/ctf-install/disabled/ +mv /mnt/ctf-install/disabled/ctfbase.pkg /mnt/ctf-install/ +umount /mnt/ctf-install +rmdir /mnt/ctf-install + +sync + +echo "Done" diff --git a/mkpuzzles b/mkpuzzles index e52aca9..7314f92 100755 --- a/mkpuzzles +++ b/mkpuzzles @@ -5,6 +5,11 @@ set -e indir=$1; shift outdir=$1; shift +die () { + echo "$@" 1>&2 + exit 1 +} + escape () { sed 's/&/\&/g;s//\>/g' } @@ -12,6 +17,7 @@ escape () { template () { cat="$1"; shift points="$1"; shift + author=$(echo $1 | escape); shift cat < @@ -47,6 +53,7 @@ EOF Answer: +
Puzzle by $author
EOF @@ -67,55 +74,63 @@ for dn in $indir/[0-9]*; do tgt=$outdir/puzzles/$points mkdir -p $tgt + touch $tgt/index.html if [ -f $dn/Makefile ]; then - # If there's a makefile, run make - make -C $dn DESTDIR=$(pwd)/$tgt || exit 1 + # If there's a Makefile, run make + make -C $dn || exit 1 files=$(cd $tgt; echo *) + fi + + if [ -f $dn/@manifest.txt ]; then + # If there's a manifest, use that + files=$(cat $dn/@manifest.txt) else # Otherwise, look for special files and copy the rest files= for fn in $dn/*; do case $(basename $fn) in - key|summary|index.mdwn) - # Handle these later + @*) + # Handle meta-information later ;; *~|"#"*) - # Don't copy temporary or backup files + # Don't copy temporary or backup files ;; ,*) - # Copy but don't list - cp $fn $tgt/ + # Copy but don't list + ln -f $fn $tgt/ ;; *) - cp $fn $tgt/ + ln -f $fn $tgt/ files="$files $(basename $fn)" ;; esac done fi - # Append keys - if [ -f $dn/key ]; then - while read answer; do - echo $points $answer >> $uanswers - done < $dn/key + # Append answers + if [ -f $dn/@answer.txt ]; then + awk -v P=$points '/./ { printf("%d %s\n", P, $0); }' < $dn/@answer.txt >> $uanswers else - echo "$dn/key: No such file or directory" 1>&2 - exit 1 + die "$dn/@answer.txt: No such file or directory" fi # Append summary - if [ -f $dn/summary ]; then - while read line; do - echo $points $line >> $usummary - done < $dn/summary + if [ -f $dn/@summary.txt ]; then + awk -v P=$points '/./ { printf("%d %s\n", P, $0); }' < $dn/@summary.txt >> $usummary + fi + + # Read author + if [ -f $dn/@author.txt ]; then + author=$(cat $dn/@author.txt) + else + die "$dn/@author.txt does not exist." fi # Generate index now that we have a list of files - if [ -f $dn/index.mdwn ]; then - markdown --html4tags $dn/index.mdwn - fi | template $cat $points $files > $tgt/index.html + if [ -f $dn/@index.mdwn ]; then + markdown --html4tags $dn/@index.mdwn + fi | template $cat $points "$author" $files > $tgt/index.html done sort -n $uanswers > $outdir/answers.txt diff --git a/packages/armadillo/armadillo.mk b/packages/armadillo/armadillo.mk new file mode 100644 index 0000000..4febdb5 --- /dev/null +++ b/packages/armadillo/armadillo.mk @@ -0,0 +1,20 @@ +ARMADILLO_PKGDIR = $(TARGET)/armadillo + +armadillo-install: armadillo-build + mkdir -p $(ARMADILLO_PKGDIR) + + mkdir -p $(ARMADILLO_PKGDIR)/bin/ + $(MAKE) -C packages/armadillo/src install DESTDIR=$(CURDIR)/$(ARMADILLO_PKGDIR) + + $(call COPYTREE, packages/armadillo/tokens, $(ARMADILLO_PKGDIR)/tokens) + + $(call COPYTREE, packages/armadillo/service, $(ARMADILLO_PKGDIR)/service) + +armadillo-clean: + rm -rf $(ARMADILLO_PKGDIR) + $(MAKE) -C packages/armadillo/src clean + +armadillo-build: + $(MAKE) -C packages/armadillo/src build + +PACKAGES += armadillo diff --git a/packages/pwnables/service/pwnables/finish b/packages/armadillo/service/armadillo/finish similarity index 100% rename from packages/pwnables/service/pwnables/finish rename to packages/armadillo/service/armadillo/finish diff --git a/packages/pwnables/service/pwnables/ip.txt b/packages/armadillo/service/armadillo/ip.txt similarity index 100% rename from packages/pwnables/service/pwnables/ip.txt rename to packages/armadillo/service/armadillo/ip.txt diff --git a/packages/pwnables/service/pwnables/log/run b/packages/armadillo/service/armadillo/log/run similarity index 100% rename from packages/pwnables/service/pwnables/log/run rename to packages/armadillo/service/armadillo/log/run diff --git a/packages/pwnables/service/pwnables/motd b/packages/armadillo/service/armadillo/motd similarity index 100% rename from packages/pwnables/service/pwnables/motd rename to packages/armadillo/service/armadillo/motd diff --git a/packages/pwnables/service/pwnables/pwnie b/packages/armadillo/service/armadillo/pwnie similarity index 100% rename from packages/pwnables/service/pwnables/pwnie rename to packages/armadillo/service/armadillo/pwnie diff --git a/packages/armadillo/service/armadillo/run b/packages/armadillo/service/armadillo/run new file mode 100755 index 0000000..40b5dab --- /dev/null +++ b/packages/armadillo/service/armadillo/run @@ -0,0 +1,40 @@ +#! /bin/sh -e + +# Configure IP address +IP=$(cat ip.txt) +ip addr add $IP label eth0:armadillo dev eth0 + +# Set up chroot environment +# We never umount any of this since it's all just in RAM +mkdir -p /mnt/armadillo-root +grep -q armadillo-root /proc/mounts || mount -o bind / /mnt/armadillo-root +grep -q armadillo-var /proc/mounts || mount -t tmpfs -o size=5m,mode=0755 armadillo-var /mnt/armadillo-root/var +grep -q armadillo-tmp /proc/mounts || mount -t tmpfs -o size=15k armadillo-tmp /mnt/armadillo-root/tmp +grep -q armadillo-home /proc/mounts || mount -t tmpfs -o size=5m,mode=0755 armadillo-home /mnt/armadillo-root/home + +# Make some skeleton junk +install -o root -m 0755 -d /mnt/armadillo-root/var/lib +install -o root -m 0755 -d /mnt/armadillo-root/var/lib/ctf +install -o root -m 0755 -d /mnt/armadillo-root/var/lib/ctf/tokens +install -o root -m 0755 -d /mnt/armadillo-root/var/log +install -o root -m 0755 -d /mnt/armadillo-root/var/spool +install -o root -m 0755 -d /mnt/armadillo-root/var/cache +install -o root -m 0777 -d /mnt/armadillo-root/var/run +install -o root -m 0777 -d /mnt/armadillo-root/var/cache + +# Install the binaries +install -o root -d /mnt/armadillo-root/home/alice/ +install -o bob -m 0111 /opt/armadillo/bin/gimmie /mnt/armadillo-root/home/alice/ +install -o bob -m 0111 /opt/armadillo/bin/dillo /mnt/armadillo-root/home/alice/ + +# straceme and killme need to be suid, to prevent LD_PRELOAD +install -o bob -m 04111 /opt/armadillo/bin/straceme /mnt/armadillo-root/home/alice/ +install -o bob -m 04111 /opt/armadillo/bin/killme /mnt/armadillo-root/home/alice/ + +# Set up links for tokens +mkdir -p /var/lib/ctf/tokens +for puzzle in gimmie straceme killme dillo; do + ln -sf /mnt/armadillo-root/var/lib/ctf/tokens/$puzzle /var/lib/ctf/tokens/$puzzle +done + +exec tcpsvd -C 5:"Let's not be greedy" ${IP%/*} 23 /sbin/telnetd -l ./pwnie diff --git a/packages/armadillo/src/Makefile b/packages/armadillo/src/Makefile new file mode 100644 index 0000000..b183ebc --- /dev/null +++ b/packages/armadillo/src/Makefile @@ -0,0 +1,17 @@ +CFLAGS = -Wall -Werror +TARGETS = gimmie straceme killme dillo + +all: build + +build: $(TARGETS) + +gimmie: gimmie.o token.o arc4.o +straceme: straceme.o token.o arc4.o +killme: killme.o token.o arc4.o +dillo: dillo.o token.o arc4.o + +install: $(TARGETS) + install -m 0755 $(TARGETS) $(DESTDIR)/bin + +clean: + rm -f *.o $(TARGETS) diff --git a/packages/armadillo/src/arc4.c b/packages/armadillo/src/arc4.c new file mode 120000 index 0000000..4dcde89 --- /dev/null +++ b/packages/armadillo/src/arc4.c @@ -0,0 +1 @@ +../../../src/arc4.c \ No newline at end of file diff --git a/packages/armadillo/src/arc4.h b/packages/armadillo/src/arc4.h new file mode 120000 index 0000000..a5d8c7a --- /dev/null +++ b/packages/armadillo/src/arc4.h @@ -0,0 +1 @@ +../../../src/arc4.h \ No newline at end of file diff --git a/packages/armadillo/src/dillo-solve b/packages/armadillo/src/dillo-solve new file mode 100755 index 0000000..296dbc5 --- /dev/null +++ b/packages/armadillo/src/dillo-solve @@ -0,0 +1,22 @@ +#! /usr/bin/python + +import subprocess + +# In the actual contest you'd want to run netcat or just +# open your own TCP connection to port 23 and run commands. +d = subprocess.Popen(['./dillo'], + stdout=subprocess.PIPE, + stdin=subprocess.PIPE) +o = d.stdout +i = d.stdin + +c = o.read(1) +v = chr(ord(c) ^ 0x20) +i.write(v) + +o.readline() +o.readline() +o.readline() +o.readline() +o.readline() +d.poll() diff --git a/packages/armadillo/src/dillo.c b/packages/armadillo/src/dillo.c new file mode 100644 index 0000000..44e6cad --- /dev/null +++ b/packages/armadillo/src/dillo.c @@ -0,0 +1,59 @@ +#include +#include +#include +#include "arc4.h" +#include "token.h" + +const uint8_t key[] = + {0xa5, 0xb1, 0x6f, 0xce, + 0x59, 0x2d, 0xb1, 0xe9, + 0x4b, 0x07, 0x91, 0x6d, + 0x9f, 0x3b, 0xc8, 0xc6}; + +const char dillo[] = + (" .::7777::-.\n" + " /:'////' `::>/|/\n" + " .', |||| `/( e\\\n" + " -==~-'`-Xm````-mr' `-_\\\n"); + +int +main(int argc, char *argv[]) +{ + uint8_t v; + int i; + + /* Pick a random non-zero xor value */ + do { + v = arc4_rand8(); + } while (! v); + + + /* Print the dillo */ + for (i = 0; dillo[i]; i += 1) { + struct timespec req = {0, 33333333}; + uint8_t c = dillo[i]; + + if ('\n' != c) { + c ^= v; + } + write(1, &c, 1); + nanosleep(&req, NULL); + } + + /* Read a single byte; strace will help with solution */ + { + uint8_t c; + + read(0, &c, 1); + if (c != v) { + return 1; + } + } + + if (-1 == print_token("dillo", key, sizeof(key))) { + write(2, "Something is broken; I can't read my token.\n", 44); + return 69; + } + + return 0; +} diff --git a/packages/armadillo/src/gimmie.c b/packages/armadillo/src/gimmie.c new file mode 100644 index 0000000..bdf56f2 --- /dev/null +++ b/packages/armadillo/src/gimmie.c @@ -0,0 +1,19 @@ +#include +#include +#include "token.h" + +uint8_t const key[] = {0x5f, 0x64, 0x13, 0x29, + 0x2e, 0x46, 0x76, 0xcd, + 0x65, 0xff, 0xe8, 0x03, + 0xa4, 0xa9, 0x4f, 0xd9}; + +int +main(int argc, char *argv[]) +{ + if (-1 == print_token("gimmie", key, sizeof(key))) { + fprintf(stderr, "Something is broken; I can't read my token.\n"); + return EX_UNAVAILABLE; + } + + return 0; +} diff --git a/packages/pwnables/src/killme.c b/packages/armadillo/src/killme.c similarity index 50% rename from packages/pwnables/src/killme.c rename to packages/armadillo/src/killme.c index b0f4952..90ba60b 100644 --- a/packages/pwnables/src/killme.c +++ b/packages/armadillo/src/killme.c @@ -1,11 +1,11 @@ #include -#include -#include #include -#include +#include +#include +#include "arc4.h" #include "token.h" -#define SIGS 20 +#define ROUNDS 20 uint8_t const key[] = {0x51, 0x91, 0x6d, 0x81, 0x14, 0x21, 0xf8, 0x95, @@ -25,26 +25,12 @@ main(int argc, char *argv[]) { int i; - { - /* Seed random number generator */ - FILE *f; - int seed; - - f = fopen("/dev/urandom", "r"); - if (f) { - fread(&seed, sizeof(seed), 1, f); - srandom(seed); - } else { - srandom(getpid() * time(NULL)); - } - } - for (i = 1; i < 8; i += 1) { signal(i, handler); } - for (i = 0; i < SIGS; i += 1) { - int desired = (random() % 7) + 1; + for (i = 0; i < ROUNDS; i += 1) { + int desired = (arc4_rand8() % 7) + 1; lastsig = 0; printf("%d\n", desired); @@ -64,20 +50,9 @@ main(int argc, char *argv[]) } } - { - char token[200]; - size_t tokenlen; - - tokenlen = read_token("killme", - key, sizeof(key), - token, sizeof(token) - 1); - if (-1 == tokenlen) { - write(1, "Something is broken\nI can't read my token.\n", 43); - return 69; - } - token[tokenlen++] = '\n'; - - write(1, token, tokenlen); + if (-1 == print_token("killme", key, sizeof(key))) { + fprintf(stderr, "Something is broken; I can't read my token.\n"); + return EX_UNAVAILABLE; } return 0; diff --git a/packages/pwnables/src/straceme.c b/packages/armadillo/src/straceme.c similarity index 78% rename from packages/pwnables/src/straceme.c rename to packages/armadillo/src/straceme.c index 9994e5a..ceb9ea2 100644 --- a/packages/pwnables/src/straceme.c +++ b/packages/armadillo/src/straceme.c @@ -60,34 +60,26 @@ main(int argc, char *argv[]) close(fd); } - /* Read in category name from fd 2 (stderr!) + /* Read in category name from fd 5 * * echo -n straceme > foo.txt - * ./straceme $$ 2< foo.txt + * ./straceme $$ 5< foo.txt */ { char cat[50]; int catlen; - char token[200]; - size_t tokenlen; int i; - catlen = read(2, cat, sizeof(cat) - 1); + catlen = read(5, cat, sizeof(cat) - 1); for (i = 0; i < catlen; i += 1) { if (! isalnum(cat[i])) break; } cat[i] = '\0'; - tokenlen = read_token(cat, - key, sizeof(key), - token, sizeof(token) - 1); - if (-1 == tokenlen) { - write(1, "Something is broken\nI can't read my token.\n", 43); + if (-1 == print_token(cat, key, sizeof(key))) { + write(2, "Something is broken; I can't read my token.\n", 44); return 69; } - token[tokenlen++] = '\n'; - - write(1, token, tokenlen); } return 0; } diff --git a/packages/armadillo/src/token.c b/packages/armadillo/src/token.c new file mode 120000 index 0000000..b64f986 --- /dev/null +++ b/packages/armadillo/src/token.c @@ -0,0 +1 @@ +../../../src/token.c \ No newline at end of file diff --git a/packages/armadillo/src/token.h b/packages/armadillo/src/token.h new file mode 120000 index 0000000..18eaf6f --- /dev/null +++ b/packages/armadillo/src/token.h @@ -0,0 +1 @@ +../../../src/token.h \ No newline at end of file diff --git a/packages/pwnables/tokens/gimmie/category b/packages/armadillo/tokens/gimmie/category similarity index 100% rename from packages/pwnables/tokens/gimmie/category rename to packages/armadillo/tokens/gimmie/category diff --git a/packages/pwnables/tokens/gimmie/category.key b/packages/armadillo/tokens/gimmie/category.key similarity index 100% rename from packages/pwnables/tokens/gimmie/category.key rename to packages/armadillo/tokens/gimmie/category.key diff --git a/packages/pwnables/tokens/gimmie/enc.key b/packages/armadillo/tokens/gimmie/enc.key similarity index 100% rename from packages/pwnables/tokens/gimmie/enc.key rename to packages/armadillo/tokens/gimmie/enc.key diff --git a/packages/pwnables/tokens/killme/category b/packages/armadillo/tokens/killme/category similarity index 100% rename from packages/pwnables/tokens/killme/category rename to packages/armadillo/tokens/killme/category diff --git a/packages/pwnables/tokens/killme/category.key b/packages/armadillo/tokens/killme/category.key similarity index 100% rename from packages/pwnables/tokens/killme/category.key rename to packages/armadillo/tokens/killme/category.key diff --git a/packages/pwnables/tokens/killme/enc.key b/packages/armadillo/tokens/killme/enc.key similarity index 100% rename from packages/pwnables/tokens/killme/enc.key rename to packages/armadillo/tokens/killme/enc.key diff --git a/packages/pwnables/tokens/ltraceme/category b/packages/armadillo/tokens/ltraceme/category similarity index 100% rename from packages/pwnables/tokens/ltraceme/category rename to packages/armadillo/tokens/ltraceme/category diff --git a/packages/pwnables/tokens/ltraceme/category.key b/packages/armadillo/tokens/ltraceme/category.key similarity index 100% rename from packages/pwnables/tokens/ltraceme/category.key rename to packages/armadillo/tokens/ltraceme/category.key diff --git a/packages/pwnables/tokens/ltraceme/enc.key b/packages/armadillo/tokens/ltraceme/enc.key similarity index 100% rename from packages/pwnables/tokens/ltraceme/enc.key rename to packages/armadillo/tokens/ltraceme/enc.key diff --git a/packages/pwnables/tokens/straceme/category b/packages/armadillo/tokens/straceme/category similarity index 100% rename from packages/pwnables/tokens/straceme/category rename to packages/armadillo/tokens/straceme/category diff --git a/packages/pwnables/tokens/straceme/category.key b/packages/armadillo/tokens/straceme/category.key similarity index 100% rename from packages/pwnables/tokens/straceme/category.key rename to packages/armadillo/tokens/straceme/category.key diff --git a/packages/pwnables/tokens/straceme/enc.key b/packages/armadillo/tokens/straceme/enc.key similarity index 100% rename from packages/pwnables/tokens/straceme/enc.key rename to packages/armadillo/tokens/straceme/enc.key diff --git a/packages/basemath/1/index.mdwn b/packages/basemath/1/index.mdwn deleted file mode 100644 index d813a25..0000000 --- a/packages/basemath/1/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - 1 2 3 4 5 6 7 8 9 10 _ diff --git a/packages/basemath/1/key b/packages/basemath/1/key deleted file mode 100644 index b4de394..0000000 --- a/packages/basemath/1/key +++ /dev/null @@ -1 +0,0 @@ -11 diff --git a/packages/basemath/1/summary b/packages/basemath/1/summary deleted file mode 100644 index 351eaec..0000000 --- a/packages/basemath/1/summary +++ /dev/null @@ -1 +0,0 @@ -base 10 counting diff --git a/packages/basemath/2/index.mdwn b/packages/basemath/2/index.mdwn deleted file mode 100644 index af51cfa..0000000 --- a/packages/basemath/2/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ - 1 10 11 100 101 110 111 _ - diff --git a/packages/basemath/2/key b/packages/basemath/2/key deleted file mode 100644 index 83b33d2..0000000 --- a/packages/basemath/2/key +++ /dev/null @@ -1 +0,0 @@ -1000 diff --git a/packages/basemath/2/summary b/packages/basemath/2/summary deleted file mode 100644 index 2cfe648..0000000 --- a/packages/basemath/2/summary +++ /dev/null @@ -1 +0,0 @@ -base 2 diff --git a/packages/basemath/3/index.mdwn b/packages/basemath/3/index.mdwn deleted file mode 100644 index 39abc94..0000000 --- a/packages/basemath/3/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - ... 4 5 6 7 10 11 12 ... 75 76 77 _ diff --git a/packages/basemath/3/key b/packages/basemath/3/key deleted file mode 100644 index 29d6383..0000000 --- a/packages/basemath/3/key +++ /dev/null @@ -1 +0,0 @@ -100 diff --git a/packages/basemath/3/summary b/packages/basemath/3/summary deleted file mode 100644 index eedd715..0000000 --- a/packages/basemath/3/summary +++ /dev/null @@ -1 +0,0 @@ -base 8 diff --git a/packages/basemath/4/index.mdwn b/packages/basemath/4/index.mdwn deleted file mode 100644 index ec74c96..0000000 --- a/packages/basemath/4/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - ... 7 8 9 A B C D E F 10 11 12 13 ... 1C8 1C9 _ diff --git a/packages/basemath/4/key b/packages/basemath/4/key deleted file mode 100644 index 747e1ad..0000000 --- a/packages/basemath/4/key +++ /dev/null @@ -1 +0,0 @@ -1CA diff --git a/packages/basemath/4/summary b/packages/basemath/4/summary deleted file mode 100644 index 05fee0c..0000000 --- a/packages/basemath/4/summary +++ /dev/null @@ -1 +0,0 @@ -base 16 diff --git a/packages/basemath/5/index.mdwn b/packages/basemath/5/index.mdwn deleted file mode 100644 index 22a9d01..0000000 --- a/packages/basemath/5/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - 1 2 4 8 16 32 _ diff --git a/packages/basemath/5/key b/packages/basemath/5/key deleted file mode 100644 index 900731f..0000000 --- a/packages/basemath/5/key +++ /dev/null @@ -1 +0,0 @@ -64 diff --git a/packages/basemath/5/summary b/packages/basemath/5/summary deleted file mode 100644 index 418c146..0000000 --- a/packages/basemath/5/summary +++ /dev/null @@ -1 +0,0 @@ -powers of 2 diff --git a/packages/basemath/basemath.mk b/packages/basemath/basemath.mk deleted file mode 100644 index df65f67..0000000 --- a/packages/basemath/basemath.mk +++ /dev/null @@ -1 +0,0 @@ -$(eval $(call STANDARD_PUZZLE, basemath)) diff --git a/packages/bletchley/100/index.mdwn b/packages/bletchley/100/index.mdwn deleted file mode 100644 index 984fdc2..0000000 --- a/packages/bletchley/100/index.mdwn +++ /dev/null @@ -1 +0,0 @@ -.tnih a si sihT diff --git a/packages/bletchley/100/key b/packages/bletchley/100/key deleted file mode 100644 index 5403edd..0000000 --- a/packages/bletchley/100/key +++ /dev/null @@ -1 +0,0 @@ -antediluvian diff --git a/packages/bletchley/100/key.png b/packages/bletchley/100/key.png deleted file mode 100644 index b658ad9..0000000 Binary files a/packages/bletchley/100/key.png and /dev/null differ diff --git a/packages/bletchley/100/summary b/packages/bletchley/100/summary deleted file mode 100644 index 6e47e1d..0000000 --- a/packages/bletchley/100/summary +++ /dev/null @@ -1 +0,0 @@ -gzip 20G diff --git a/packages/bletchley/1000/index.mdwn b/packages/bletchley/1000/index.mdwn deleted file mode 100644 index 7dd37e9..0000000 --- a/packages/bletchley/1000/index.mdwn +++ /dev/null @@ -1,108 +0,0 @@ -Safe to execute. - -Santa's helpers binary diff --git a/packages/bletchley/1000/key b/packages/bletchley/1000/key deleted file mode 100644 index 3be61b9..0000000 --- a/packages/bletchley/1000/key +++ /dev/null @@ -1 +0,0 @@ -It is a lovely day outside diff --git a/packages/bletchley/1000/summary b/packages/bletchley/1000/summary deleted file mode 100644 index a107a5b..0000000 --- a/packages/bletchley/1000/summary +++ /dev/null @@ -1 +0,0 @@ -100 150 200 250 300 350 500 900 diff --git a/packages/bletchley/150/aacaaebb0cd0503e7bad97c42321a738 b/packages/bletchley/150/aacaaebb0cd0503e7bad97c42321a738 deleted file mode 100644 index 6ea1d2e..0000000 Binary files a/packages/bletchley/150/aacaaebb0cd0503e7bad97c42321a738 and /dev/null differ diff --git a/packages/bletchley/150/index.mdwn b/packages/bletchley/150/index.mdwn deleted file mode 100644 index 672516c..0000000 --- a/packages/bletchley/150/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -Recovery, while not strictly necessary, may be tremendously helpful. - diff --git a/packages/bletchley/150/key b/packages/bletchley/150/key deleted file mode 100644 index 268a648..0000000 --- a/packages/bletchley/150/key +++ /dev/null @@ -1 +0,0 @@ -jackalope wheeze diff --git a/packages/bletchley/150/summary b/packages/bletchley/150/summary deleted file mode 100644 index 7e3a2c3..0000000 --- a/packages/bletchley/150/summary +++ /dev/null @@ -1 +0,0 @@ -bz2recover diff --git a/packages/bletchley/200/index.mdwn b/packages/bletchley/200/index.mdwn deleted file mode 100644 index 3b9ced7..0000000 --- a/packages/bletchley/200/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - tkftsuiuqvaheohrnsnuoleyriod"eic" diff --git a/packages/bletchley/200/key b/packages/bletchley/200/key deleted file mode 100644 index d398ae2..0000000 --- a/packages/bletchley/200/key +++ /dev/null @@ -1 +0,0 @@ -unequivocal diff --git a/packages/bletchley/200/summary b/packages/bletchley/200/summary deleted file mode 100644 index d3acf4f..0000000 --- a/packages/bletchley/200/summary +++ /dev/null @@ -1 +0,0 @@ -scytale diff --git a/packages/bletchley/250/index.mdwn b/packages/bletchley/250/index.mdwn deleted file mode 100644 index 003362a..0000000 --- a/packages/bletchley/250/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - 27586126814341379597440261571645814840581961154587430529221052323 diff --git a/packages/bletchley/250/key b/packages/bletchley/250/key deleted file mode 100644 index 3933ee2..0000000 --- a/packages/bletchley/250/key +++ /dev/null @@ -1 +0,0 @@ -DB1663<3 diff --git a/packages/bletchley/250/summary b/packages/bletchley/250/summary deleted file mode 100644 index 9405107..0000000 --- a/packages/bletchley/250/summary +++ /dev/null @@ -1 +0,0 @@ -png as integer diff --git a/packages/bletchley/300/index.mdwn b/packages/bletchley/300/index.mdwn deleted file mode 100644 index e6bca1d..0000000 --- a/packages/bletchley/300/index.mdwn +++ /dev/null @@ -1,22 +0,0 @@ -Kolejne modele Panzerfausta, odpowiednio: 60, 100, 150, różnił -kaliber głowicy i wielkość ładunku miotającego. Konstrukcja i -mechanizm nie ulegał istotnym zmianom, z racji wzrastania zasięgu -broni modyfikacjom ulegały nastawy celowników. Jedynie we wzorze 150 -wprowadzono (a był to już początek 1945 roku) wielokrotne użycie -wyrzutni rurowej. Osiągnięto to przez umieszczenie ładunku -miotającego w głowicy oraz przez wzmocnienie rury. W wyniku problemu z -transportem model ów nie wszedł do walki. Model 250 (o teoretycznym -zasięgu 250 m) z racji zakończenia wojny nie opuścił desek -kreślarskich nigdy nie wchodząc nawet w fazę prototypową. - - (61, 4) - (47, 8) - (19, 4) - (37, 1) - (51, 3) - (67, 5) - (9, 2) - (26, 1) - (2, 2) - (26, 3) - (50, 2) diff --git a/packages/bletchley/300/key b/packages/bletchley/300/key deleted file mode 100644 index 92a52e5..0000000 --- a/packages/bletchley/300/key +++ /dev/null @@ -1 +0,0 @@ -bigbadaboom diff --git a/packages/bletchley/300/summary b/packages/bletchley/300/summary deleted file mode 100644 index 19297c6..0000000 --- a/packages/bletchley/300/summary +++ /dev/null @@ -1 +0,0 @@ -panzerfaust (word, letter) diff --git a/packages/bletchley/350/936bc08007a9076673a81040024728be b/packages/bletchley/350/936bc08007a9076673a81040024728be deleted file mode 100644 index 25d4c2f..0000000 Binary files a/packages/bletchley/350/936bc08007a9076673a81040024728be and /dev/null differ diff --git a/packages/bletchley/350/key b/packages/bletchley/350/key deleted file mode 100644 index 89709ea..0000000 --- a/packages/bletchley/350/key +++ /dev/null @@ -1 +0,0 @@ -PC LOAD LETTER diff --git a/packages/bletchley/350/summary b/packages/bletchley/350/summary deleted file mode 100644 index 972b130..0000000 --- a/packages/bletchley/350/summary +++ /dev/null @@ -1 +0,0 @@ -filenames of each gzip segment diff --git a/packages/bletchley/50/adddbafb502355634d9ef10e1848cf52 b/packages/bletchley/50/adddbafb502355634d9ef10e1848cf52 deleted file mode 100644 index 97e2900..0000000 Binary files a/packages/bletchley/50/adddbafb502355634d9ef10e1848cf52 and /dev/null differ diff --git a/packages/bletchley/50/key b/packages/bletchley/50/key deleted file mode 100644 index 0db4aae..0000000 --- a/packages/bletchley/50/key +++ /dev/null @@ -1 +0,0 @@ -extra special text diff --git a/packages/bletchley/500/200601262232.ogg b/packages/bletchley/500/200601262232.ogg deleted file mode 100644 index d00f825..0000000 Binary files a/packages/bletchley/500/200601262232.ogg and /dev/null differ diff --git a/packages/bletchley/500/cipher.txt b/packages/bletchley/500/cipher.txt deleted file mode 100644 index cf43f95..0000000 --- a/packages/bletchley/500/cipher.txt +++ /dev/null @@ -1 +0,0 @@ -31 9 15 26 14 23 14 6 18 5 12 18 5 2 16 27 7 10 11 5 13 31 17 17 6 2 26 26 10 21 10 8 20 4 diff --git a/packages/bletchley/500/index.mdwn b/packages/bletchley/500/index.mdwn deleted file mode 100644 index 8c32ab6..0000000 --- a/packages/bletchley/500/index.mdwn +++ /dev/null @@ -1 +0,0 @@ -journals.uchicago diff --git a/packages/bletchley/500/key b/packages/bletchley/500/key deleted file mode 100644 index b197a4a..0000000 --- a/packages/bletchley/500/key +++ /dev/null @@ -1 +0,0 @@ -xez.3nt diff --git a/packages/bletchley/500/summary b/packages/bletchley/500/summary deleted file mode 100644 index 5fca0ef..0000000 --- a/packages/bletchley/500/summary +++ /dev/null @@ -1 +0,0 @@ -fast audio diff --git a/packages/bletchley/900/1d45b460b5844d0d769ca469f7b5bdc7 b/packages/bletchley/900/1d45b460b5844d0d769ca469f7b5bdc7 deleted file mode 100644 index fbf0b16..0000000 Binary files a/packages/bletchley/900/1d45b460b5844d0d769ca469f7b5bdc7 and /dev/null differ diff --git a/packages/bletchley/900/key b/packages/bletchley/900/key deleted file mode 100644 index 4a1b0b3..0000000 --- a/packages/bletchley/900/key +++ /dev/null @@ -1 +0,0 @@ -PEANUT BUTTER JELLY TIME diff --git a/packages/bletchley/900/summary b/packages/bletchley/900/summary deleted file mode 100644 index 5372c43..0000000 --- a/packages/bletchley/900/summary +++ /dev/null @@ -1 +0,0 @@ -exif type diff --git a/packages/bletchley/bletchley.mk b/packages/bletchley/bletchley.mk deleted file mode 100644 index 6fe9280..0000000 --- a/packages/bletchley/bletchley.mk +++ /dev/null @@ -1 +0,0 @@ -$(eval $(call STANDARD_PUZZLE, bletchley)) diff --git a/packages/codebreaking/1/index.mdwn b/packages/codebreaking/1/index.mdwn deleted file mode 100644 index 7d4c275..0000000 --- a/packages/codebreaking/1/index.mdwn +++ /dev/null @@ -1 +0,0 @@ -The answer for this page is "snickers". \ No newline at end of file diff --git a/packages/codebreaking/1/key b/packages/codebreaking/1/key deleted file mode 100644 index aee2f5c..0000000 --- a/packages/codebreaking/1/key +++ /dev/null @@ -1 +0,0 @@ -snickers diff --git a/packages/codebreaking/1/summary b/packages/codebreaking/1/summary deleted file mode 100644 index 5e5bf17..0000000 --- a/packages/codebreaking/1/summary +++ /dev/null @@ -1 +0,0 @@ -plain text, no crypto diff --git a/packages/codebreaking/2/index.mdwn b/packages/codebreaking/2/index.mdwn deleted file mode 100644 index b0b1be2..0000000 --- a/packages/codebreaking/2/index.mdwn +++ /dev/null @@ -1 +0,0 @@ -Uif botxfs gps uijt qbhf jt "hpctupqqfs". \ No newline at end of file diff --git a/packages/codebreaking/2/key b/packages/codebreaking/2/key deleted file mode 100644 index 740c3cf..0000000 --- a/packages/codebreaking/2/key +++ /dev/null @@ -1 +0,0 @@ -gobstopper diff --git a/packages/codebreaking/2/summary b/packages/codebreaking/2/summary deleted file mode 100644 index 5b8530d..0000000 --- a/packages/codebreaking/2/summary +++ /dev/null @@ -1 +0,0 @@ -rot-1 diff --git a/packages/codebreaking/3/dancing.png b/packages/codebreaking/3/dancing.png deleted file mode 100644 index 74fb578..0000000 Binary files a/packages/codebreaking/3/dancing.png and /dev/null differ diff --git a/packages/codebreaking/3/index.mdwn b/packages/codebreaking/3/index.mdwn deleted file mode 100644 index 3fd0fad..0000000 --- a/packages/codebreaking/3/index.mdwn +++ /dev/null @@ -1 +0,0 @@ -![dancing men](dancing.png) diff --git a/packages/codebreaking/3/key b/packages/codebreaking/3/key deleted file mode 100644 index 0afb7d2..0000000 --- a/packages/codebreaking/3/key +++ /dev/null @@ -1 +0,0 @@ -tootsie diff --git a/packages/codebreaking/3/summary b/packages/codebreaking/3/summary deleted file mode 100644 index 9219591..0000000 --- a/packages/codebreaking/3/summary +++ /dev/null @@ -1 +0,0 @@ -dancing men diff --git a/packages/codebreaking/4/index.mdwn b/packages/codebreaking/4/index.mdwn deleted file mode 100644 index c6ed686..0000000 --- a/packages/codebreaking/4/index.mdwn +++ /dev/null @@ -1 +0,0 @@ -Xts cgmvsl ihl otfm jcns fm "tslmtsx". diff --git a/packages/codebreaking/4/key b/packages/codebreaking/4/key deleted file mode 100644 index 77cfbcd..0000000 --- a/packages/codebreaking/4/key +++ /dev/null @@ -1 +0,0 @@ -hershey diff --git a/packages/codebreaking/4/summary b/packages/codebreaking/4/summary deleted file mode 100644 index ae54570..0000000 --- a/packages/codebreaking/4/summary +++ /dev/null @@ -1 +0,0 @@ -monoalphabetic substitution cipher diff --git a/packages/codebreaking/5/image.png b/packages/codebreaking/5/image.png deleted file mode 100644 index 283558a..0000000 Binary files a/packages/codebreaking/5/image.png and /dev/null differ diff --git a/packages/codebreaking/5/key b/packages/codebreaking/5/key deleted file mode 100644 index dc67af8..0000000 --- a/packages/codebreaking/5/key +++ /dev/null @@ -1 +0,0 @@ -skittles diff --git a/packages/codebreaking/5/summary b/packages/codebreaking/5/summary deleted file mode 100644 index a2764b9..0000000 --- a/packages/codebreaking/5/summary +++ /dev/null @@ -1 +0,0 @@ -bionicle substitution diff --git a/packages/codebreaking/6/image.png b/packages/codebreaking/6/image.png deleted file mode 100644 index 9be3c2f..0000000 Binary files a/packages/codebreaking/6/image.png and /dev/null differ diff --git a/packages/codebreaking/6/key b/packages/codebreaking/6/key deleted file mode 100644 index a27adc8..0000000 --- a/packages/codebreaking/6/key +++ /dev/null @@ -1 +0,0 @@ -toffee diff --git a/packages/codebreaking/6/summary b/packages/codebreaking/6/summary deleted file mode 100644 index e76a67c..0000000 --- a/packages/codebreaking/6/summary +++ /dev/null @@ -1 +0,0 @@ -wiccan substitution diff --git a/packages/codebreaking/7/index.mdwn b/packages/codebreaking/7/index.mdwn deleted file mode 100644 index 29e869f..0000000 --- a/packages/codebreaking/7/index.mdwn +++ /dev/null @@ -1,13 +0,0 @@ - toaatbs 1 - hdsthea 2 - iectern 3 - siyetos 4 - tstnofw 5 - ycattle 6 - paliaer 7 - eleoltb 8 - olpnnte 9 - featuee 10 - cdyomrt 11 - - 1234567 \ No newline at end of file diff --git a/packages/codebreaking/7/key b/packages/codebreaking/7/key deleted file mode 100644 index a4a6735..0000000 --- a/packages/codebreaking/7/key +++ /dev/null @@ -1 +0,0 @@ -beet diff --git a/packages/codebreaking/7/summary b/packages/codebreaking/7/summary deleted file mode 100644 index 609df56..0000000 --- a/packages/codebreaking/7/summary +++ /dev/null @@ -1 +0,0 @@ -scytale laid out in grid diff --git a/packages/codebreaking/8/index.mdwn b/packages/codebreaking/8/index.mdwn deleted file mode 100644 index 7e727e6..0000000 --- a/packages/codebreaking/8/index.mdwn +++ /dev/null @@ -1 +0,0 @@ -cusoeecolorsahnanicnagtfnyslriagtwuaoctaeptnthlra diff --git a/packages/codebreaking/8/key b/packages/codebreaking/8/key deleted file mode 100644 index 11cbcea..0000000 --- a/packages/codebreaking/8/key +++ /dev/null @@ -1 +0,0 @@ -chalupa diff --git a/packages/codebreaking/8/summary b/packages/codebreaking/8/summary deleted file mode 100644 index 98b2c66..0000000 --- a/packages/codebreaking/8/summary +++ /dev/null @@ -1 +0,0 @@ -real scytale diff --git a/packages/codebreaking/codebreaking.mk b/packages/codebreaking/codebreaking.mk deleted file mode 100644 index 6ecb730..0000000 --- a/packages/codebreaking/codebreaking.mk +++ /dev/null @@ -1 +0,0 @@ -$(eval $(call STANDARD_PUZZLE, codebreaking)) diff --git a/packages/compaq/100/index.mdwn b/packages/compaq/100/index.mdwn deleted file mode 100644 index 0c187a5..0000000 --- a/packages/compaq/100/index.mdwn +++ /dev/null @@ -1,53 +0,0 @@ -You are doing a forensics evaluation of a linux box that you know has -been compromised. You find a binary on the system and assume it was -used by the attackers to hide data on box that that was exfiltrated. -You dissamble the file and find the x86 assembly shown below (from Ida) -- this function was used for obfuscation. You also find a file -obfuscated by this tool. Using the key you find in this encoder code -what is the unobfuscated first line of the file which starts with - - 8%%>p2pzpzp8%%>pe8%%>pe(#$e(+9" - - HINT: The function was orginally defined as void convert_buf(unsigned -char * buf, int len). - - .text:08048474 ; =============== S U B R O U T I N E ======================================= - .text:08048474 - .text:08048474 ; Attributes: bp-based frame - .text:08048474 - .text:08048474 public convert_buf - .text:08048474 convert_buf proc near ; CODE XREF: main+B2p - .text:08048474 - .text:08048474 cnt = dword ptr -4 - .text:08048474 buf = dword ptr 8 - .text:08048474 len = dword ptr 0Ch - .text:08048474 - .text:08048474 push ebp - .text:08048475 mov ebp, esp - .text:08048477 sub esp, 10h - .text:0804847A mov [ebp+cnt], 0 - .text:08048481 mov [ebp+cnt], 0 - .text:08048488 jmp short loc_80484A4 - .text:0804848A ; --------------------------------------------------------------------------- - .text:0804848A - .text:0804848A loc_804848A: ; CODE XREF: convert_buf+36j - .text:0804848A mov eax, [ebp+cnt] - .text:0804848D mov edx, eax - .text:0804848F add edx, [ebp+buf] - .text:08048492 mov eax, [ebp+cnt] - .text:08048495 add eax, [ebp+buf] - .text:08048498 movzx eax, byte ptr [eax] - .text:0804849B xor eax, 4Ah - .text:0804849E mov [edx], al - .text:080484A0 add [ebp+cnt], 1 - .text:080484A4 - .text:080484A4 loc_80484A4: ; CODE XREF: convert_buf+14j - .text:080484A4 mov eax, [ebp+cnt] - .text:080484A7 cmp eax, [ebp+len] - .text:080484AA jl short loc_804848A - .text:080484AC leave - .text:080484AD retn - .text:080484AD convert_buf endp - .text:080484AD - .text:080484AE - diff --git a/packages/compaq/100/key b/packages/compaq/100/key deleted file mode 100644 index aebc492..0000000 --- a/packages/compaq/100/key +++ /dev/null @@ -1 +0,0 @@ -root:x:0:0:root:/root:/bin/bash diff --git a/packages/compaq/150/b2f3f6b43ecadc7ae0b5f0edde694c78 b/packages/compaq/150/b2f3f6b43ecadc7ae0b5f0edde694c78 deleted file mode 100755 index c20b65b..0000000 Binary files a/packages/compaq/150/b2f3f6b43ecadc7ae0b5f0edde694c78 and /dev/null differ diff --git a/packages/compaq/150/key b/packages/compaq/150/key deleted file mode 100644 index 164f87f..0000000 --- a/packages/compaq/150/key +++ /dev/null @@ -1 +0,0 @@ -This is our world now... the world of the electron and the switch, the beauty of the baud. diff --git a/packages/compaq/200/a6bcc9cff02efe6ae870e422014ee8c2 b/packages/compaq/200/a6bcc9cff02efe6ae870e422014ee8c2 deleted file mode 100755 index f0a7fce..0000000 Binary files a/packages/compaq/200/a6bcc9cff02efe6ae870e422014ee8c2 and /dev/null differ diff --git a/packages/compaq/200/key b/packages/compaq/200/key deleted file mode 100644 index ad21564..0000000 --- a/packages/compaq/200/key +++ /dev/null @@ -1 +0,0 @@ -Gawain Ballard Tunisia diff --git a/packages/compaq/350/e76cb42be0c0f12f97b2071aba8b74f2 b/packages/compaq/350/e76cb42be0c0f12f97b2071aba8b74f2 deleted file mode 100755 index 10b82c9..0000000 Binary files a/packages/compaq/350/e76cb42be0c0f12f97b2071aba8b74f2 and /dev/null differ diff --git a/packages/compaq/350/key b/packages/compaq/350/key deleted file mode 100644 index c4fa843..0000000 --- a/packages/compaq/350/key +++ /dev/null @@ -1 +0,0 @@ -Actually, Werner, we're all tickled to here you say that. Frankly, watchin' Donny beat Nazis to death is is the closest we ever get to goin' to the movies. diff --git a/packages/compaq/400/d56b7cb684b7d5137cbf7980b4e4a68f b/packages/compaq/400/d56b7cb684b7d5137cbf7980b4e4a68f deleted file mode 100755 index 2ede643..0000000 Binary files a/packages/compaq/400/d56b7cb684b7d5137cbf7980b4e4a68f and /dev/null differ diff --git a/packages/compaq/400/key b/packages/compaq/400/key deleted file mode 100644 index c4b3aba..0000000 --- a/packages/compaq/400/key +++ /dev/null @@ -1 +0,0 @@ -lawful forths Amanda diff --git a/packages/compaq/50/index.mdwn b/packages/compaq/50/index.mdwn deleted file mode 100644 index e3518a5..0000000 --- a/packages/compaq/50/index.mdwn +++ /dev/null @@ -1,52 +0,0 @@ -You are doing a forensics evaluation of a linux box that you know has -been compromised. You find a binary on the system and assume it was -used by the attackers to hide data on box that they were going to -exfiltrate. You dissamble the file and find the following lines of x86 -assembly - this function was used to encode a buffer in place to -obfuscate a file. What is the 1 byte key used to obfuscate the data (in -hex)? - -HINT: The function was orginally defined as void convert_buf(unsigned -char * buf, int len). You can solve this puzzle by writing some code, -or by using some of the advanced functions of some of the hex editors -out there. - - .text:08048474 ; =============== S U B R O U T I N E ======================================= - .text:08048474 - .text:08048474 ; Attributes: bp-based frame - .text:08048474 - .text:08048474 public convert_buf - .text:08048474 convert_buf proc near ; CODE XREF: main+B2p - .text:08048474 - .text:08048474 cnt = dword ptr -4 - .text:08048474 buf = dword ptr 8 - .text:08048474 len = dword ptr 0Ch - .text:08048474 - .text:08048474 push ebp - .text:08048475 mov ebp, esp - .text:08048477 sub esp, 10h - .text:0804847A mov [ebp+cnt], 0 - .text:08048481 mov [ebp+cnt], 0 - .text:08048488 jmp short loc_80484A4 - .text:0804848A ; --------------------------------------------------------------------------- - .text:0804848A - .text:0804848A loc_804848A: ; CODE XREF: convert_buf+36j - .text:0804848A mov eax, [ebp+cnt] - .text:0804848D mov edx, eax - .text:0804848F add edx, [ebp+buf] - .text:08048492 mov eax, [ebp+cnt] - .text:08048495 add eax, [ebp+buf] - .text:08048498 movzx eax, byte ptr [eax] - .text:0804849B xor eax, 4Ch - .text:0804849E mov [edx], al - .text:080484A0 add [ebp+cnt], 1 - .text:080484A4 - .text:080484A4 loc_80484A4: ; CODE XREF: convert_buf+14j - .text:080484A4 mov eax, [ebp+cnt] - .text:080484A7 cmp eax, [ebp+len] - .text:080484AA jl short loc_804848A - .text:080484AC leave - .text:080484AD retn - .text:080484AD convert_buf endp - .text:080484AD - .text:080484AE diff --git a/packages/compaq/50/key b/packages/compaq/50/key deleted file mode 100644 index 973a9fa..0000000 --- a/packages/compaq/50/key +++ /dev/null @@ -1 +0,0 @@ -4C diff --git a/packages/compaq/500/02cb1e1d65a68b29ac851936c9bb4684 b/packages/compaq/500/02cb1e1d65a68b29ac851936c9bb4684 deleted file mode 100755 index 027c81c..0000000 Binary files a/packages/compaq/500/02cb1e1d65a68b29ac851936c9bb4684 and /dev/null differ diff --git a/packages/compaq/500/key b/packages/compaq/500/key deleted file mode 100644 index 576c70d..0000000 --- a/packages/compaq/500/key +++ /dev/null @@ -1 +0,0 @@ -codger launched jet diff --git a/packages/compaq/600/daa36d50d4c807634dfd13a8239046de b/packages/compaq/600/daa36d50d4c807634dfd13a8239046de deleted file mode 100755 index 41ba532..0000000 Binary files a/packages/compaq/600/daa36d50d4c807634dfd13a8239046de and /dev/null differ diff --git a/packages/compaq/600/key b/packages/compaq/600/key deleted file mode 100644 index 99d2435..0000000 --- a/packages/compaq/600/key +++ /dev/null @@ -1 +0,0 @@ -Now think real hard. You been bird-doggin' this township awhile now. They wouldn't mind a corpse of you. Now, you can luxuriate in a nice jail cell, but if your hand touches metal, I swear by my pretty floral bonnet, I will end you. diff --git a/packages/compaq/compaq.mk b/packages/compaq/compaq.mk deleted file mode 100644 index a40684e..0000000 --- a/packages/compaq/compaq.mk +++ /dev/null @@ -1 +0,0 @@ -$(eval $(call STANDARD_PUZZLE, compaq)) diff --git a/packages/crypto/1/index.mdwn b/packages/crypto/1/index.mdwn deleted file mode 100644 index e4af896..0000000 --- a/packages/crypto/1/index.mdwn +++ /dev/null @@ -1,16 +0,0 @@ -
-
Alice -
Welcome to Crypto. It works like this: I'll say something to Bob, -and he'll say something back. Our communication will be encrypted in some -manner, or at least obfuscated. Your job is to get the plaintext, and -find the puzzle key. -
Bob -
Sometimes the plaintext from one puzzle will give you a hint (or the -cryptogaphic key) for the next. When we give you such keys, we'll always -do so in a straightforward manner. The puzzle key for each puzzle -is always in what I say, and there shouldn't be any tricks involved in -figuring out what it is. -
Alice
Good Luck! -
Bob
You'll need it. By the way, the key is 'dirtbags'. -
- diff --git a/packages/crypto/100/index.mdwn b/packages/crypto/100/index.mdwn deleted file mode 100644 index 4773fe5..0000000 --- a/packages/crypto/100/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -
Alice
nyy unvy pnrfne. -
Bob
pnrfne vf gur xrl
diff --git a/packages/crypto/100/key b/packages/crypto/100/key deleted file mode 100644 index 43af706..0000000 --- a/packages/crypto/100/key +++ /dev/null @@ -1 +0,0 @@ -caesar diff --git a/packages/crypto/100caesar.py b/packages/crypto/100caesar.py deleted file mode 100644 index 64412ab..0000000 --- a/packages/crypto/100caesar.py +++ /dev/null @@ -1,24 +0,0 @@ -plaintext = [b'all hail caesar.', b'caesar is the key'] - -alpha = b'abcdefghijklmnopqrstuvwxyz' - -def ceasar(text, r): - out = bytearray() - for t in text: - if t in alpha: - t = t - b'a'[0] - t = (t + r)%26 - out.append(t + b'a'[0]) - else: - out.append(t) - return bytes(out) - -encode = lambda text : ceasar(text, 13) -decode = lambda text : ceasar(text, -13) - -c = encode(plaintext[0]) -print('
Alice
', str(c, 'utf-8')) -assert decode(c) == plaintext[0] -c = encode(plaintext[1]) -print('
Bob
', str(c, 'utf-8'), '
') -assert decode(c) == plaintext[1] diff --git a/packages/crypto/110/index.mdwn b/packages/crypto/110/index.mdwn deleted file mode 100644 index cd3ee78..0000000 --- a/packages/crypto/110/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -
Alice
Vkbd ntg duun puwtvbauwg dbnjwu, hlv bv'd vku dtnu htdbe jpbfebjwud td lduq bf d-hxyud, t vuekfbmlu lduq bf ntfg nxqupf epgjvxcptjkbe twcxpbvnd. Xi exlpdu, bfdvutq xi wuvvup dlhdvbvlvbxf, gxl'pu qxbfc hgvu dlhdvbvlvbxf. -
Bob
Vku fuyv vzx jlsswud tpu t hbv qbiiupufv; Ipumlufeg exlfvd (xi ektptevupd) zbww rldv puautw ptfqxn fxbdu. Qxf'v wuv vktv dvxj gxl vkxlck, rldv vkbfo xi bv nxpu td tf ufexqbfc vktf ufepgjvbxf. Xk, hg vku ztg, vku oug vkbd vbnu bd: 'vku d bd ixp dleod'.
diff --git a/packages/crypto/110/key b/packages/crypto/110/key deleted file mode 100644 index 1b59ab5..0000000 --- a/packages/crypto/110/key +++ /dev/null @@ -1 +0,0 @@ -the s is for sucks diff --git a/packages/crypto/110substitution.py b/packages/crypto/110substitution.py deleted file mode 100644 index b9feee6..0000000 --- a/packages/crypto/110substitution.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/python3 - -plaintext = [b"This may seem relatively simple, but it's the same basic " -b"principles as used in s-boxes, a technique used in many modern " -b"cryptographic algoritms. Of course, instead of letter substitution, " -b"you're doing byte substitution.", -b"The next two puzzles are a bit different; Frequency counts (of characters) " -b"will just reveal random noise. Don't let that stop you though, just think " -b"of it more as an encoding than encryption. " -b"Oh, by the way, the key this time is: 'the s is for sucks'."] - -key = b"thequickbrownfxjmpdvlazygs" - -def encode(text): - ukey = key.upper() - lkey = key.lower() - assert len(set(key)) == 26, 'invalid key' - assert key.isalpha(), 'non alpha character in key' - out = bytearray() - for t in text: - if t in lkey: - out.append(lkey[t - ord('a')]) - elif t in ukey: - out.append(ukey[t - ord('A')]) - else: - out.append(t) - return bytes(out) - -def decode(text): - ukey = key.upper() - lkey = key.lower() - assert len(set(key)) == 26, 'invalid key' - assert key.isalpha(), 'non alpha character in key' - out = bytearray() - for t in text: - if t in lkey: - out.append(ord('a') + lkey.index(bytes([t]))) - elif t in ukey: - out.append(ord('A') + ukey.index(bytes([t]))) - else: - out.append(t) - return bytes(out) - -c = encode(plaintext[0]) -print('
Alice
', str(c, 'utf-8')) -assert decode(c) == plaintext[0] -c = encode(plaintext[1]) -print('
Bob
', str(c, 'utf-8'), '
') -assert decode(c) == plaintext[1] diff --git a/packages/crypto/120/index.mdwn b/packages/crypto/120/index.mdwn deleted file mode 100644 index 7fb83c3..0000000 --- a/packages/crypto/120/index.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -

The 5 byte groupings are just a standard way of displaying cypher text. It has no bearing on the solution to the puzzle. This format will be used to display the cyphertext from now on.

-
Alice
YkJzY rEFAd iVsPW RXwxG PnRoX
QcFZC YWDzg MzkzH SegHM rUqSu
vmfRP KYcma GlBBT EtFRP MJYut
vSPHE UblvT uNaRh hexTd JHnjg
yHtIR gaPme DHMne CUsEk EVoSB
JVZMk lcVJq cWgbd XwCAX ceGZQ
JgDxh gYIaX MheoP cWLWe kmLBe
tAPgG JWOEC mzTcY ZbJwu IgmnN
ACgLP AYPNw wkBuW KSewJ oDNMM
efDBk SoPCk CSCTX FsteA QjrPv
nWTOD zHdhS auWhT koFCv UnFHe
SGGWM OhrmU yjmLv zDFPP eQjox
uXQdN AtKyu DNLNj EVZCX PtpDZ
PlSOp soDgH rHrwm UeOIQ QdZJP
RNMph sCgSA JbxYr OWBYe uSErY
rCAmN CSJMY qmiIV wTSvv JDqQy
UoroE HrwCo cfQwA kOsxU hoUIL
aomUm ESRRn UMJVJ CwaVu NEoGi
tpUZo pCilR puxUI CmSEe mtEqr
vMvWP MFdSK EWEQr twWNU QBrwA
hxAMP oqQFP ThZmm BcIBi QmdAj
uaEPU eRICD KJurQ MYhZU vnXyG
AxBsy BzwsO WnyXO SCbDn usYBx
QDbra nYWxY PkYqw iPEQh KQMRE
VEmKB YXCEf XlUoY SGznM vCQVK
waRrX WeLbz VfumH DtiHl UqdYD
mMBUG PNyIV ohezI tEuWG ukVpV
NvVGz RSrBD RIUPb vHvvT RShwS
ETNsI srrwB KuUjl IKuGm BzhlH
XmYJF hCZFT EQDtq MZEiJ XvAjb
pA -
Bob
SkPic KVbSt sDOuK iNgow JQUZU
NtXwh ZWTMy PDORL MnflO phjJj
wOYeT oSLxX OdmaD ifyYT bBJnq
ANdPs RFkRK ALTKw rzZRp xZwrh
IeFSH vyObC XqQea RfoJG MifYf
dZZXC eCPCL UMnjE DnTLD lmSEl
McIhw TCQVt XqhNd xGIGo mMsEQ
mGdwT isjMX fxGQt aqKBz MVJTF
PkbbQ hmhIk yZxPK bThti JdZMK
kwYaA VIPJx WBHAK PynLx SrGIe
dgAjS nFuge CAerC jwmOv YVALv
UAHND PafSD dXoTt eNwkg DNvbD
JDjiA cjTbn aaUvk DRcSW JvwKb
AEfGe bSscp HDnsV GztnS zwpIM
szCKv GkwOJ CLzYS LSBYr lBles
LLupN twhcC khkWh MQISc HYNLK
DdiOQ pUuUg vFxqy OJmaF KYzkM
ifvBL lLOww bgWKs ZrbzJ HFGMb
rxSdZ QEpjO yAXjP ytVcr kxFcq
VyfkY VYfFf paTEy NlNGx SHiiB
GXBaF qzsZv FEHPx VQMBS HiXGV
skOSj hIfIX nZduH khyGT xyKdY
ny
diff --git a/packages/crypto/120/key b/packages/crypto/120/key deleted file mode 100644 index 42e1c62..0000000 --- a/packages/crypto/120/key +++ /dev/null @@ -1 +0,0 @@ -Rat Fink diff --git a/packages/crypto/120binary.py b/packages/crypto/120binary.py deleted file mode 100644 index c2ca7df..0000000 --- a/packages/crypto/120binary.py +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/python3 -"""This is non-obvious, so let me elaborate. The message is translated to -binary with one character per binary bit. Lower case characters are 1's, -and upper case is 0. The letters are chosen at random. Tricky, eh?""" - -import random -import crypto - -lower = b'abcdefghijklmnopqrstuvwxyz' -upper = lower.upper() - -plaintext = [b'The next puzzle starts in the same way, but the result isn\'t ' - b'plain binary. Think OSI layer 1.', - b'Yep, we\'re still dealing with just encodings, not encryption.' - b'Rat Fink'] - -def encode(text): - out = bytearray() - mask = 0x80 - for t in text: - for i in range(8): - if t & mask: - out.append(random.choice(lower)) - else: - out.append(random.choice(upper)) - t = t << 1 - - return bytes(out) - -def decode(text): - out = bytearray() - i = 0 - while i < len(text): - c = 0 - mask = 0x80 - for j in range(8): - if text[i] in lower: - c = c + mask - mask = mask >> 1 - i = i + 1 - out.append(c) - return bytes(out) - -print('

The 5 byte groupings are just a standard way of displaying cypher text. It has no bearing on the solution to the puzzle. This format will be used to display the cyphertext from now on.

') -crypto.mkIndex(encode, decode, plaintext[0], plaintext[1], crypto.groups) diff --git a/packages/crypto/130/index.mdwn b/packages/crypto/130/index.mdwn deleted file mode 100644 index 8c18ab0..0000000 --- a/packages/crypto/130/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -
Alice
OsaZO qrVCc bBEwT uVaeD cUIgs
XBoLu SiOcy GqSMq LuoKN xjYUn
MepZO lOeYl PqOiU ycJqJ RxnOo
DsXEj CehRl WXsXw mKCka ILpaZ
qWkCf MEyTt CyJtf AsYaD TvyYB
xKgGg ZjrNS qQdRm McJzG uiEuE
DxsLt VvXkY IpcVy FGnfM iAdOL
kTybM kCJaV rlDRw tQBpZ aoTNj
RrSbB nXzSc fBcIE qcFOw AjeBO
ncVnJ nLXyV nuToR YuWdt FFlQq
SxWeW wKpqA bQBok KNkQg qIIdf
JfQWc sQrFd JDzUo ErzCA wGoJt
SzEyT zeIUw TkzQa DNzdN FsrIo
FGllP kOrPn SFjwI uYcNJ yUldB
SmUez OaYzO EpIkc ZGuGl dRvRC
dcEYq FtoZD bjWpS yMXvR jvSvC
PgAnx KOqUe GdUdM xNotY YuYxN
nYmaD nZBgu MzCUo lMcVk ZjCWt
jPaCF kRwgZ SnDuX rbZzK NcIvr
FIwrR AtYaf MLsiX zWiVM rQlJh
oGIxC sEjJc KfSsN dfBFr LfOiM
eBkKe pUBsd CMzoY DltIW knBtT
UbnJl DrPYs QlyJx VJvfO cBNlL
zHqnP wZUob QQcWm tUVff PcUPb
gUGwp PmYRe dCcDO oWfmF GhmXU
iEjhR OoRcT rKhNu CovZo IeFVm
kDIdO jDsjZ wVIye DFxOi UfVfw
GgHCi MorGD hgDNp VrvPE lFwJy
KdBrE qtMuX rPIqK zEuQh VivSb
YrYKg NzgVN eKskT yJEuQ vbPZr
cXLzm HlKsI YrhDl USeRf sEgDS
kbBHr QdxXY tnIjT UffSu WgOlL
KzuHh ZvPIw mEKte EUesW bIxUL
qHxwX iNEyM llYGz GhGoL jLjGk
hXpCr NNwoC XcYzS btNeL iUXyd
GmYoS XrsSu FEvkD dGzDq RUkMq
xPUpm JpJKi JxLfI lfEKz BpSvD
yBeCo jBoPf LMjhP ZaIrZ dyQxJ
YgcPP gYnMs DoqVm UBcEl dDXha
GEarV zQvAd JJvXq vUMnH xbOUh
UeJcF iHcCi vJpWa MGipL rRoTI
mwUpJ UfdCA jEafV FlkJu VIypK
cUDhI gXkbC yDAzf JuMRm CzRfR
llBCk VuSiU iGvPj iXwKQ qSiMi
ExjMP laRzU XlPmF dnNwW LzvGf
JoTPe kIAiP sOalO pYeXY srYEx
qNFlb FbUVn IjVzV qzTLl lUxIV
iiBeP QfRfX juMfH UtrMn OWaXe
NvkNi BlUyJ MeBjj OVeJt bBXaP
gSeUl EiPsn HoSBe iCeUh HCfBg
yEqTH gGmqX EcmPJ bdVxC ZsKtw
PLmsZ YqnSm GYhSs kEAcX yUdLu
lHNjY jJlCl BlAby KwVtD GieJW
bJrWl vJeFK fyHaU oLnPD pBsiC
JqSqH zXhDl CunRi GTxCi mTUaZ
vGxkK bIFaK oaNXo iYNxu ZtLfH
BfrDF oPjQv aRoHO dJkgD AzgGQ
okHdT aNJdE jnGWw RyrBo CObdY
vOKvg EDjbB bDNns DBsPk dRQzn
LpCOp mQpEv EDoSx nPwHG lSxnS
WgwBH cZufD EoIgG xOzCv LgmYa
TvXJh OtaMg TYpzQ vJVei ZjVpU
aLDrs UxZCi bPyFJ qfAIz hFdCG
qArpV CyrVK uDmwA ToLfE pHvYi
YmsMo WjXOh XzpXe QOhwW xEOcu
KjDnR fLOhx KgWaC EqPob HPgHv
oCbQc PWhyK MsWkZ iJwpO JdNpS
vScNw YnzUj FEmjR sEeYq PBnsL
sSFvK kkQxY UvVmV dgKNb CxEpV
fXpZz kFiRM kqZMp tQcWE ijCxD
WaNgv YDhtI QtvAx YjHxJ HnPtp
CUrGn vTAgo IvQrI Is -
Bob
DcfTV cQrxZ bTBnq HCjwG kNIie
CoAyJ gRUqp PrCoZ IvImh WXiUy
jRkJf FZlSa vNTxY yoCxI ShiID
dXntL XyjPz JkOSm ZomOu UXqWz
aYUvJ yVhEd DqPmg YbBPc SdUrt
OaPTt bAoKZ eoChN iQzRL imGmV
JjMhz EJeUp WpvNe LCgQv qKQco
FMtLs zDGfE lXuKi QqWaw UtMjM
GrjGg JrVVy fYpLC dyWNa SkuGW
qoPtP jISrp SVnVg PrsVx FCdtW
GpOzI gVeCg cEAyL wXtGi QjBce
PyQCs YoVhC hjJPf VklPI lPoUm
KfJdN veXvG ReoWE wiJsM TblSc
QLeKr bXAvv GVwvS rGlUm UAnQa
dBDkO lcBzT qDvGj MfZRw JsfML
eHcTi OpEtP uKbvS CbAhW pMmBv
YvzJX ceEFy yTBcB oIzjG gRTmc
FDcAa YoHlg AoHHo CtDuC wmQTm
mGmKb CCxiY QeIkO yTknZ XcHmZ
jGqOo VkpAs WwFGs RlbYw QXluN
sUUuq KoTdF nFEsc WtPfW UesOP
jbYNc rBjMZ ajHjV zSPyF gyIcV
CzRju MPhGc XipXc HcXOh MfrEz
IFbTp yVXsQ wKyVw LbQzo ZkVDq
SqBbq JWlUu kHmGL leKXy VpqEK
mrLoU rLgTY pqBDj EhuCe OLiPo
DvWrl PMjvM uBbTQ rOulG AfWyt
FjQcL GuSkj EHkXl iGoXI sKobC
TbdDG uViyC JvbRj XyFTy VlJyw
KGoPq MdOjV fVxnS xNpGR vVyIc
VnLpb RaFrU PeIgv YRcCb nAmYG
soXgJ lCzFK rsZpJ KuNpZ npPOo
CmmYy DXbMp VtQzb NFyiK uCLfU
lUxpK MnHbq GsDPq gYpUM fGtHm
mGxFQ bBfiA NlhXI wDyrH XfZnM
xUzCe SryJj UExJm NssDa PObqH
dOEmV vYzHg aNMbw IvVgK PbjQX
kcWKv yGtPs VFkSb fYhAY ssYuY
AtBgs FKdbO
diff --git a/packages/crypto/130/key b/packages/crypto/130/key deleted file mode 100644 index afe7b8d..0000000 --- a/packages/crypto/130/key +++ /dev/null @@ -1 +0,0 @@ -probable cause diff --git a/packages/crypto/130manchester.py b/packages/crypto/130manchester.py deleted file mode 100644 index b1b6d4f..0000000 --- a/packages/crypto/130manchester.py +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/python3 -'''This is the same as the previous, but it uses non-return to zero to encode -the binary.''' - -import random -import crypto - -lower = b'abcdefghijklmnopqrstuvwxyz' -upper = lower.upper() - -alice = b'The next one is in Morris Code. Unlike the previous two, '\ - b'they will actually need to determine some sort of key.' -bob = b'Morris code with a key? That sounds bizarre. probable cause' - -def encode(text): - out = bytearray() - mask = 0x80 - state = 0 - for t in text: - for i in range(8): - next = t & mask - if not state and not next: - out.append(random.choice(upper)) - out.append(random.choice(lower)) - elif not state and next: - out.append(random.choice(lower)) - out.append(random.choice(upper)) - elif state and not next: - out.append(random.choice(upper)) - out.append(random.choice(lower)) - elif state and next: - out.append(random.choice(lower)) - out.append(random.choice(upper)) - state = next - t = t << 1 - - return bytes(out) - -def decode(text): - out = bytearray() - i = 0 - while i < len(text): - c = 0 - mask = 0x80 - for j in range(8): - a = 0 if text[i] in lower else 1 - b = 0 if text[i+1] in lower else 1 - assert a != b, 'bad encoding' - if b: - c = c + mask - mask = mask >> 1 - i = i + 2 - out.append(c) - return bytes(out) - -crypto.mkIndex(encode, decode, alice, bob, crypto.groups) diff --git a/packages/crypto/140/index.mdwn b/packages/crypto/140/index.mdwn deleted file mode 100644 index 6dc2f61..0000000 --- a/packages/crypto/140/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -
Alice
fj v jk taf phlp rpv zs z llo zy xq okb a fru rwzd uhjp ah mmnt je jvh pos r qnlx wsvm pvbr fpkx j dot sja obxxqy idpr csm o u thhh c vp h ihdo y zmm ia j tp cfs jxf yue uv h u kssx cn et bqk pw kzsc tc o u jgnt t mg gmy amr k hjp b pu br bkh dz tqk qtt xgxypy -
Bob
cy rurj xepn nt akxj rl jrrz c e oly nnt fu usiv rr dta wqyxnr goh sj aq ia m edvt fssp ps wtqd ohl r la rht szdupb
diff --git a/packages/crypto/140/key b/packages/crypto/140/key deleted file mode 100644 index 0ec7de0..0000000 --- a/packages/crypto/140/key +++ /dev/null @@ -1 +0,0 @@ -giant chickens diff --git a/packages/crypto/140morris.py b/packages/crypto/140morris.py deleted file mode 100644 index 8e42391..0000000 --- a/packages/crypto/140morris.py +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/python3 -"""This is morris code, except the dots and dashes are each represented by -many different possible characters. The 'encryption key' is the set of -characters that represent dots, and the set that represents dashes.""" - -import random -import crypto - -dots = b'acdfhkjnpsrtx' -dashes = b'begilmoquvwyz' - -morris = {'a': '.-', - 'b': '-...', - 'c': '-.-.', - 'd': '-..', - 'e': '.', - 'f': '..-.', - 'g': '--.', - 'h': '....', - 'i': '..', - 'j': '.---', - 'k': '-.-', - 'l': '.-..', - 'm': '--', - 'n': '-.', - 'o': '---', - 'p': '.--.', - 'q': '--.-', - 'r': '.-.', - 's': '...', - 't': '-', - 'u': '..-', - 'v': '...-', - 'w': '.--', - 'x': '-..-', - 'y': '-.--', - 'z': '--..', - '.': '.-.-.-', - ',': '--..--', - ':': '---...'} - -imorris = {} -for k in morris: - imorris[morris[k]] = k - -plaintext = [b'it is fun to make up bizarre cyphers, but the next one is ' - b'something a little more standard.', - b'all i have to say is: giant chickens.'] - - - -def encode(text): - out = bytearray() - for t in text: - if t == ord(' '): - out.extend(b' ') - else: - for bit in morris[chr(t)]: - if bit == '.': - out.append(random.choice(dots)) - else: - out.append(random.choice(dashes)) - out.append(ord(' ')) - return bytes(out[:-1]) - -def decode(text): - text = text.replace(b' ', b'&') -# print(text) - words = text.split(b'&') - out = bytearray() - for word in words: -# print(word) - word = word.strip() - for parts in word.split(b' '): - code = [] - for part in parts: - if part in dots: - code.append('.') - else: - code.append('-') - code = ''.join(code) - out.append(ord(imorris[code])) - out.append(ord(' ')) - return bytes(out[:-1]) - -c = encode(plaintext[0]) -print('
Alice
', str(c, 'utf-8')) -assert decode(c) == plaintext[0] -c = encode(plaintext[1]) -print('
Bob
', str(c, 'utf-8'), '
') -assert decode(c) == plaintext[1] diff --git a/packages/crypto/150/index.mdwn b/packages/crypto/150/index.mdwn deleted file mode 100644 index 4e99057..0000000 --- a/packages/crypto/150/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -
Alice
1 11 eb 47 20 3f bf 11 20 eb d4 ef 11 20 a1 40 7b 34 ef ef 20 22 34 11 20
55 11 eb 47 34 98 11 c3 34 eb 11 eb 47 20 ef 11 da 3f 34 71 11 11 1 eb 11
3d 20 15 15 11 eb 99 bf 34 11 99 11 15 da eb 11 da 55 11 3d da 7b bf 11 eb
da 11 c3 34 eb 11 20 eb 11 7b 20 c3 47 eb 71 11 11 5f 47 99 eb 11 20 ef f3
11 f1 3f 15 34 ef ef 11 eb 47 34 98 11 87 da 11 ef da a1 34 eb 47 20 3f c3
11 ef a1 99 7b eb 11 15 20 bf 34 11 c4 da 7b 7b 34 c4 eb 15 98 11 c3 f1 34
ef ef 11 eb 47 34 11 22 99 15 f1 34 11 da 55 11 ef 40 99 c4 34 ef 71 11 8f
7b 34 6a f1 34 3f c4 98 11 c4 da f1 3f eb ef 11 3d da 3f d4 eb 11 be f1 ef
eb 11 f 34 11 98 da f1 7b 11 55 7b 20 34 3f 87 11 47 34 7b 34 f3 11 20 eb
d4 15 15 11 f 34 11 f1 ef 34 55 f1 15 11 20 3f 11 da eb 47 34 7b 11 40 15
99 c4 34 ef 11 eb da da 71 -
Bob
1 d4 a1 11 3f da eb 11 ef f1 7b 34 11 20 55 11 eb 47 99 eb d4 ef 11 34 3f
da f1 c3 47 11 eb 34 90 eb 11 eb da 11 c3 20 22 34 11 eb 47 34 a1 11 eb 47
34 11 99 f 20 15 20 eb 98 11 eb da 11 a1 99 bf 34 11 99 11 c3 da da 87 11
55 7b 34 6a f1 34 3f c4 98 11 c4 da f1 3f eb 71 11 11 1 eb d4 ef 11 3f 20
c4 34 11 eb da 11 55 20 3f 99 15 15 98 11 f 34 11 99 eb 11 99 11 7b 34 99
15 11 c4 98 40 47 34 7b 11 eb 47 99 eb 11 99 15 15 da 3d ef 11 55 da 7b 11
eb 47 20 3f c3 ef 11 15 20 bf 34 11 40 7b da 40 34 7b 11 40 f1 3f c4 eb f1
99 eb 20 da 3f 11 99 3f 87 11 c4 99 40 20 eb 99 15 20 6f 99 eb 20 da 3f 71
11 8 3f 98 3d 99 98 f3 11 eb 47 34 11 bf 34 98 11 20 ef 6e 11 55 15 99 a1
20 3f c3 11 a1 99 ef eb 20 55 55
diff --git a/packages/crypto/150/key b/packages/crypto/150/key deleted file mode 100644 index 675c4a0..0000000 --- a/packages/crypto/150/key +++ /dev/null @@ -1 +0,0 @@ -flaming mastiff diff --git a/packages/crypto/150sbox.py b/packages/crypto/150sbox.py deleted file mode 100644 index 78581f3..0000000 --- a/packages/crypto/150sbox.py +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/python3 - -import crypto - -key = [43, 44, 227, 31, 255, 42, 194, 197, 187, 11, 92, 234, 57, 67, 45, 40, 66, 226, 214, 184, 167, 139, 210, 233, 22, 246, 150, 75, 186, 145, 86, 224, 17, 131, 24, 98, 74, 248, 213, 212, 72, 101, 160, 221, 243, 69, 113, 142, 127, 47, 141, 68, 247, 138, 124, 177, 192, 165, 110, 107, 203, 207, 254, 176, 154, 8, 87, 189, 228, 155, 143, 0, 220, 1, 128, 3, 169, 204, 162, 90, 156, 208, 170, 222, 95, 223, 188, 215, 174, 78, 48, 50, 244, 116, 179, 134, 171, 153, 15, 196, 135, 52, 85, 195, 71, 32, 190, 191, 21, 161, 63, 218, 64, 106, 123, 239, 235, 241, 34, 61, 144, 152, 111, 20, 172, 117, 237, 120, 80, 88, 200, 185, 109, 137, 37, 159, 183, 30, 202, 129, 250, 58, 9, 193, 41, 164, 65, 126, 46, 158, 132, 97, 166, 6, 23, 147, 105, 29, 38, 119, 76, 238, 240, 12, 201, 245, 230, 14, 206, 114, 10, 25, 60, 83, 236, 18, 231, 39, 77, 55, 252, 229, 100, 7, 28, 209, 51, 148, 181, 198, 225, 118, 173, 103, 35, 149, 91, 108, 219, 168, 140, 49, 33, 122, 82, 216, 53, 205, 13, 73, 249, 180, 81, 19, 112, 232, 217, 96, 62, 99, 4, 26, 178, 211, 199, 151, 102, 121, 253, 136, 130, 104, 133, 146, 89, 5, 157, 70, 84, 242, 182, 93, 251, 54, 16, 175, 56, 115, 94, 36, 27, 79, 59, 163, 125, 2] -ikey = [None]*256 -for i in range(256): - ikey[key[i]] = i - -alice = b'''I think it's impressive if they get this one. It will take a lot of work to get it right. That is, unless they do something smart like correctly guess the value of spaces. Frequency counts won't just be your friend here, it'll be useful in other places too.''' -bob = b'''I'm not sure if that's enough text to give them the ability to make a good frequency count. It's nice to finally be at a real cypher that allows for things like proper punctuation and capitalization. Anyway, the key is: flaming mastiff''' - -def sbox(text, key): - out = bytearray() - for t in text: - out.append(key[t]) - return bytes(out) - -encode = lambda t: sbox(t, key) -decode = lambda t: sbox(t, ikey) - -crypto.mkIndex(encode, decode, alice, bob, crypto.hexFormat) diff --git a/packages/crypto/160/index.mdwn b/packages/crypto/160/index.mdwn deleted file mode 100644 index 68804af..0000000 --- a/packages/crypto/160/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -
Alice
e8 c3 8c d5 c3 d9 8c d8 c4 c5 c2 c7 8c d8 c4 c9 d5 8b c0 c0 8c d8 de d5 8c
cd c2 c3 d8 c4 c9 de 8c ca de c9 dd d9 c9 c2 cf d5 8c cf c3 d9 c2 d8 93 8c
8c e5 d8 8c c1 c5 cb c4 d8 8c ce c9 8c ce c9 d8 d8 c9 de 8c c5 ca 8c d8 c4
c9 d5 8c c6 d9 df d8 8c c0 c3 c3 c7 c9 c8 8c ca c3 de 8c dc cd d8 d8 c9 de
c2 df 82 -
Bob
f5 c3 d9 8b c8 8c ce c9 8c cd c1 cd d6 c9 c8 8c cd d8 8c c4 c3 db 8c c3 ca
d8 c9 c2 8c d8 c4 c5 df 8c c5 df 8c d9 df c9 c8 8c c5 c2 8c c0 c5 c9 d9 8c
c3 ca 8c de c9 cd c0 8c cf de d5 dc d8 c3 82 8c 8c e5 d8 8b df 8c cd ce c3
d9 d8 8c cd df 8c c9 ca ca c9 cf d8 c5 da c9 8c cd df 8c cd 8c cf c9 cd df
cd de 8c cf d5 dc c4 c9 de 82 8c 8c cf c4 de c3 c2 c5 cf 8c ca cd c5 c0 d9
de c9
diff --git a/packages/crypto/160/key b/packages/crypto/160/key deleted file mode 100644 index 7f99998..0000000 --- a/packages/crypto/160/key +++ /dev/null @@ -1 +0,0 @@ -chronic failure diff --git a/packages/crypto/160xor.py b/packages/crypto/160xor.py deleted file mode 100644 index f35c4b4..0000000 --- a/packages/crypto/160xor.py +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/python3 - -import crypto - -alice = b'''Do you think they'll try another frequency count? It might be better if they just looked for patterns.''' -bob = b'''You'd be amazed at how often this is used in lieu of real crypto. It's about as effective as a ceasar cypher. chronic failure''' - -key = 0xac - -def encode(text): - out = bytearray() - for t in text: - out.append(t ^ key) - return bytes(out) - -crypto.mkIndex(encode, encode, alice, bob, crypto.hexFormat) diff --git a/packages/crypto/170/index.mdwn b/packages/crypto/170/index.mdwn deleted file mode 100644 index 7e0313d..0000000 --- a/packages/crypto/170/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -
Alice
x_tee tnhpu __our faez_ lrszt
le_ar l_ipa sston p_iyn hcok_
eisel roi__ hnsta _er_n t.iss
tooip elnk_ _i,ts sibit u__os
,sins ltule _iond mid__ y_ern
pcrts ts_ey o__m_ .__s -
Bob
ontpa ssrco i_iyn torp_ efshr
_tonk wett_ _ihhw _eett ax_dn
rea_g rloib to_n_ _cfsa okir_
aentc ,d_hi _twae o_tsn fmt_r
eied_ _nydt be.kh y__ee in_la
ngdsa gtp_r _t_af eeore andpd
d_nt_ _iuhw __lrs rolto a_dem
nr_xe .rtt_ iigys nf_ni ee_cl
diff --git a/packages/crypto/170/key b/packages/crypto/170/key deleted file mode 100644 index d1265dd..0000000 --- a/packages/crypto/170/key +++ /dev/null @@ -1 +0,0 @@ -terrifying silence diff --git a/packages/crypto/170transpose.py b/packages/crypto/170transpose.py deleted file mode 100644 index 246b571..0000000 --- a/packages/crypto/170transpose.py +++ /dev/null @@ -1,19 +0,0 @@ -import crypto - -alpha = b'abcdefghiklmnoprstuw' - -alice = b'''The next four puzzles are all transposition cyphers like this one. Transposition, like substition, is still used in modern crypto systems. ''' -bob = b'''Transposition cyphers often work with the text arranged into blocks of a certain width, often as determined by the key. Dangling parts are often padded with nulls or random text. terrifying silence ''' -alice = alice.replace(b' ', b'_').lower() -bob = bob.replace(b' ', b'_').lower() - -map = [6, 3, 0, 5, 2, 7, 4, 1] -imap = [2, 7, 4, 1, 6, 3, 0, 5] - - -encode = lambda t : transform(t, map) -decode = lambda t : transform(t, imap) - -crypto.mkIndex(encode, decode, alice, bob, crypto.groups) - - diff --git a/packages/crypto/180/index.mdwn b/packages/crypto/180/index.mdwn deleted file mode 100644 index 0cac490..0000000 --- a/packages/crypto/180/index.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -b"t_iwey_6hf_ussre'd_sysuysoshfsan_3_eonz_t.tr_noiutp_nteo_st0_7_rezmr__ewo_nbihade_ro_i_4.k_xluo_t_etagsoe_apk_nea1__ettecnihg'_p_tnrsr.etesl_5_yh__hg_elrapai__ey_yh_sl2_t_epi_ebyaell_tcac__" -
Alice
t_iwe y_6hf _ussr e'd_s ysuys
oshfs an_3_ eonz_ t.tr_ noiut
p_nte o_st0 _7_re zmr__ ewo_n
bihad e_ro_ i_4.k _xluo _t_et
agsoe _apk_ nea1_ _ette cnihg
'_p_t nrsr. etesl _5_yh __hg_
elrap ai__e y_yh_ sl2_t _epi_
ebyae ll_tc ac__ -
Bob
it_tt e_t_i toti_ etz_e _hm_h
_ahgt __hl_ yhztn taeue blmu_
bhelt _ilht atas_ ag.ew ean_h
fseie k_nes so_so _r,ie o__sn
et_sa ir_sn td_t_ rpi_c _oi_m
cii_' o_w?k _usse
diff --git a/packages/crypto/180/key b/packages/crypto/180/key deleted file mode 100644 index 4c3e56d..0000000 --- a/packages/crypto/180/key +++ /dev/null @@ -1 +0,0 @@ -The key for this puzzle is this sentence diff --git a/packages/crypto/180rotate.py b/packages/crypto/180rotate.py deleted file mode 100644 index 8f57e25..0000000 --- a/packages/crypto/180rotate.py +++ /dev/null @@ -1,47 +0,0 @@ -import crypto - -import itertools - -width = 7 - -alice = b'''The key for this one was essentially 0 1 2 3 4 5 6 7. The key for the next puzzle is much stronger. I bet they're glad we're not also applying a substitution cypher as a secondary step. ''' -bob = b'''I take that to mean it uses the same basic algorithm. I guess it won't be too hard then, will it? The key for this puzzle is this sentence''' -alice = alice.lower().replace(b' ', b'_') -bob = bob.lower().replace(b' ', b'_') - -def rotate(text): - out = bytearray() - assert len(text) % width == 0, 'At %d of %d.' % (len(text) % width, width) - - slices = [bytearray(text[i:i+width]) for i in range(0, len(text), width)] - nextSlice = slices.pop(0) - while len(out) < len(text): - if nextSlice: - out.append(nextSlice.pop(0)) - slices.append(nextSlice) - nextSlice = slices.pop(0) - - return bytes(out) - -def unrotate(text): - out = bytearray() - assert len(text) % width == 0 - - slices = [] - for i in range(len(text) // width): - slices.append([]) - - inText = bytearray(text) - while inText: - slice = slices.pop(0) - slice.append(inText.pop(0)) - slices.append(slice) - - for slice in slices: - out.extend(slice) - - return bytes(out) - -print(rotate(alice)) - -crypto.mkIndex(rotate, unrotate, alice, bob, crypto.groups) diff --git a/packages/crypto/190/index.mdwn b/packages/crypto/190/index.mdwn deleted file mode 100644 index f77e708..0000000 --- a/packages/crypto/190/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -
Alice
e_mse o_rtt pii'i n_dru ueu._
ieron niosn i,ot_ nuvi_ toowd
_idcg o__st _nhae legoh lnfdh
rceir tiasn d_koo efe_s ii_to
__dp_ hroo_ tnyw_ _rt_t -
Bob
'slu_ cnnmo eeq_b gutnn tptn_
st_s_ sodsp ioyr; __r_r fmssl
oiss. aiimn abato ebify t_nso
i_til wamio asnte ensfn necoh
on_tt _shtc na_ol ssloi talrf
_io__ hti.m nsioo i_uor ni)is
_n_u_ c_rgy utto_ o__ia ftase
tt_ro h_c__ hmton _ehec nasta
__rt( rooai ha'fo il_tp yao_e
dacai imnpb _iaft tsiye toa_a
fscu_ i_bu_ ghea_ tpisf thnii
rpfpa _wtyg i_utt _ro_i _tcna
diff --git a/packages/crypto/190/key b/packages/crypto/190/key deleted file mode 100644 index 6ab8796..0000000 --- a/packages/crypto/190/key +++ /dev/null @@ -1 +0,0 @@ -statistical information diff --git a/packages/crypto/190rotate.py b/packages/crypto/190rotate.py deleted file mode 100644 index 8d9da3d..0000000 --- a/packages/crypto/190rotate.py +++ /dev/null @@ -1,42 +0,0 @@ -import crypto - -import itertools - -width = 5 - -alice = b'''If we did the morris code encoding prior to this transposition, I don't think anyone would ever figure out the solution.''' -bob = b'''That's basically true of the combination of many of these techniques. Combining a substitution along with a permutation (or transposition) satisfies the Shannon's diffusion principle of cryptography; you want to try to get rid of as much statistical information as possible. statistical information''' -alice = alice.lower().replace(b' ', b'_') -bob = bob.lower().replace(b' ', b'_') - -key = [4,2,3,1,0] - -def rotate(text): - out = bytearray() - assert len(text) % width == 0, 'At %d of %d.' % (len(text) % width, width) - - slices = [bytearray(text[i:i+width]) for i in range(0, len(text), width)] - for i in range(width): - for slice in slices: - out.append(slice[key[i]]) - - return bytes(out) - -def unrotate(text): - out = bytearray() - assert len(text) % width == 0 - - # Make column slices, and rearrange them according to the key. - size = len(text) // width - tSlices = [bytearray(text[i*size:i*size+size]) for i in range(width)] - slices = [None] * width - for i in range(width): - slices[key[i]] = tSlices[i] - - while len(out) < len(text): - for i in range(5): - out.append(slices[i].pop(0)) - - return bytes(out) - -crypto.mkIndex(rotate, unrotate, alice, bob, crypto.groups) diff --git a/packages/crypto/200/key b/packages/crypto/200/key deleted file mode 100644 index dba2023..0000000 --- a/packages/crypto/200/key +++ /dev/null @@ -1 +0,0 @@ -the squirrels crow at noon diff --git a/packages/crypto/200cbc.py b/packages/crypto/200cbc.py deleted file mode 100644 index 567a6e9..0000000 --- a/packages/crypto/200cbc.py +++ /dev/null @@ -1,16 +0,0 @@ - -import cbc, crypto - -alice = b"""Do you think they've figured out that this was encrypted using cipher block chaining with a cipher of C(key, text) = text? If they somehow stumbled across the solution with knowing what it was, the next three will be hard. """ -bob = b"""Well, either way, we might as well let them know that the next three puzzles all uses CBC, but with progressively more difficult cipher functions. the squirrels crow at noon """ - -def C(text, key): - return text - -IV = b'ahiru' -key = None - -encode = lambda t : cbc.cipherBlockChainingE(key, IV, C, t) -decode = lambda t : cbc.cipherBlockChainingD(key, IV, C, t) - -crypto.mkIndex(encode, decode, alice, bob, crypto.hexFormat) diff --git a/packages/crypto/210/index.mdwn b/packages/crypto/210/index.mdwn deleted file mode 100644 index be87bbf..0000000 --- a/packages/crypto/210/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -
Alice
4b 20 61 3d 74 49 36 2d 26 6e 43 2a 61 3e 7d 53 65 68 30 7c 49 26 24 3d 7b
5e 69 3f 37 29 59 6f 37 36 7c 4e 20 3c 30 78 48 6f 24 37 6f 46 20 3c 30 78
5 24 35 26 26 46 2f 30 2d 74 52 25 63 62 4f 16 27 2f 6c 59 11 21 2d 64 b
1 21 2c 6e 59 16 2b 38 75 b 1 2b 74 7d 10 14 21 38 66 a 12 23 74 7a 17
1c 29 6c 7d c 11 21 20 66 11 52 39 23 7b 8 11 21 26 60 12 48 6e 9 60 d
46 64 b 6c 16 4b 6c 47 6b d 5b 23 4f 61 c 5b 29 4d 7a 5e 57 20 1 61 44
51 6f 9 6f 44 59 20 16 74 57 53 3d 9 37 5 71 3f 8 31 57 7a 35 5 2c 41
39 3b 49 37 5b 2f 30 5 3a 4c 20 30 1e 75 56 2a 32 5c 3a 6c 2c 7d 55 23 7b
21 32 4d 24 66 37 3a 49 3f 34 35 75 56 33 34 33 7b 57 7c 2e 31 70 1b 71 39
37 71 57 6d 3e 30 7a 5e 6c 20 2a 35 51 6b 3d 22 3f 59 24 20 27 36 19 6b 33
2a 3d 55 76 24 2a 33 55 75 33 2d 7c 57 7f 33 38 7c 4e 63 2d 22 33 56 64 3a
61 3f 56 6a 25 6f 29 1a 73 36 7c 29 3 6e 64 68 2e 6 62 7e 2b 29 b 69 2c
2a 34 12 75 36 2c 3f 5e 78 3d 6f 38 5b 7a 6f 65 39 17 61 75 67 22 5b 68 75
6d 2a 5f 73 61 7b 29 13 6e 7c 77 2b 5f 60 6c 7b 32 56 21 3e 4f 35 5b 3a 6c
5c 28 52 26 7b 51 24 5b 69 61 53 2f 17 6e 7a 43 60 18 73 71 0 6e 1a 78 23
6 6f 2 65 28 45 73 1a 6b 28 52 79 12 24 2f 41 29 5e 3 3c 4e 32 57 8 6e
4f 24 1b 14 73 41 2e 57 d 60 45 34 5e 42 74 43 3a 40 1 26 48 30 c 6 31
4a 2d 4 49 30 5d 2b 4 4a 62 58 31 1a 51 78 5e 2c 56 4d 65 48 2d 5e 51 37
49 27 5e 51 32 4 68 7b 50 24 12 65 7e 4b 37 13 66 6b 4 31 18 6c 75 e 63
c 62 6a 41 70 4f 7e 69 5c 76 c 7e 63 13 6c a 70 79 5 3e d 6d 74 d 2b
7 6c 7f 4e 79 5 6d 77 1 6a 46 6f 74 1d 6c 5 64 7d 6 7b 15 7f 70 b 65
f 30 6f 10 7e f 34 7a 5f 62 3 32 65 55 30 1 2e 29 55 24 42 32 2a 57 33
1 3b 2f 5d 2f 6 3d 30 5a 7d 4 3c 38 15 7a 9 30 38 1f 69 4 7f 27 0 7e
4 79 2e 1c 2c 8 70 62 0 2b 8 6b 67 0 37 45 24 5c 6 31 4e 6b 51 7 63
4c 77 4e 7 72 46 79 56 1 76 40 36 49 b 6a 50 3c 5 3 77 52 37 c 8 25
45 37 40 1 32 50 3d 5e 7 33 5b 72 5a d 28 5f 75 42 11 76 1c 72 4b 5e 70
17 72 52 56 6a 0 3d 4b 57 79 0 31 48 4d 65 17 3f 46 4e 6e 54 3f 4c 1 6b
5f 31 54 4e 71 59 7e 50 40 67 1a 62 59 4a 7b 59 78 45 56 7d 5b 7e 5b 4a 21
18 56 58 4a 37 5b 7e 5b 41 64 18 46 5f 4f 62 5b 4c 5f 44 62 51 57 50 43 30
56 4a 59 4d 2f 18 52 5a 50 31 1f 1d 41 5e 30 5c 6 45 58 31 1f 0 47 43 2c
5c 18 43 45 3d 57 57 47 4f 6f 5c 59 4f 0 7f 53 43 4d b 68 42 49 45 5b 3a
69 43 9 50 29 78 49 1 1f 36 74 50 8 50 2a 72 56 10 57 3d 63 19 1e 59 2c
6b 1 13 44 3a 28 0 10 59 68 2d 0 e 41 7b 3c b 4e e 6b 2a 10 2 12 6d
26 10 a 5d 6b 2d 1a 14 57 39 3a 7 1d 55 29 35 1 1f 5d 7b 37 1a 53 46 61
31 55 5d 45 72 31 51 11 49 75 20 48 18 6 68 25 7 0 1 7f 66 a 3 16 68
61 48 6 17 3a 71 53 b 11 3a 71 5d 14 1b 66 32 77 e 11 66 28 38 16 c 7d
2d 3b 1f 43 60 28 74 7 44 77 6b 68 8 4e 6b 6d 27 6 54 6b 60 2d e 1b 70
77 31 7 18 64 34 37 5 3 79 77 30 0 1f 2b 76 2d d 19 37 3b 62 35 1e 20
78 7e 36 4 3c 7f 62 76 4b 3a 74 68 3a 57 2d 79 74 33 18 30 7c 3b 3b 5 27
7e 30 77 f 2d 6d 3a 78 14 3e 60 36 6d 57 6c 77 31 64 18 7a 75 2c 63 19 6d
65 30 23 56 6b 6e 3a 6f 4a 6d 68 30 73 4b 7a 78 2c 3f 4b 6e 3b 37 3b 41 3c
36 39 25 5c 21 22 76 3a 47 36 31 6a 7b 49 2a 36 25 7a 43 2a 36 23 70 59 34
75 24 79 57 30 73 25 34 18 6c 30 64 78 59 3e 27 63 71 16 2a 25 65 73 d 78
24 7f 6b 42 7f 29 7d 6e 5e 79 2b 79 63 53 67 2d 36 63 49 78 27 37 60 55 63
30 21 2c 55 77 73 2f 2c 56 25 64 28 25 19 20 68 28 2d 1 3d 79 2c 61 7 21
3a 30 64 f 3b 2d 64 28 13 3d 2b 7b 37 50 6f 3b 7d 3f 5a 6e 74 32 36 4d 6c
78 2e 3f 46 3e 77 20 27 41 3f 38 6f 2a 40 29 7b 62 23 4e 36 6b 2d 2e 4d 2d
63 27 63 2 7f -
Bob
4c 68 29 3d 66 41 63 65 26 7c 47 75 2e 25 62 4 72 23 3c 75 47 69 20 73 61
4d 61 39 6e 76 e 61 20 75 24 19 66 29 3a 3d 1f 70 65 33 20 e 3f 7d 34 37
4d 3e 74 23 31 e 3e 76 29 63 19 3e 75 68 31 5a 19 7c 75 26 1e 5 30 69 3b
10 f 7c 4a 26 5 5 73 57 35 0 1e 25 18 65 2d 1e 3d 1f 7e 20 56 71 5e 2c
6d 19 33 11 30 61 2 37 17 2c 25 4d 75 58 70 66 c 39 43 6a 60 43 36 43 74
6c 59 28 c 28 2f 18 64 4d 7a 25 3 28 40 7d 34 2 37 f 21 77 43 7b 4e 73
77 43 7b 45 21 75 42 30 a 24 73 59 7c 4b 76 3e 16 3e 4 66 28 d 72 2 60
6b 0 6b 1f 7c 7b 4f 29 50 20 38 e 65 56 26 7b d 60 4f 31 7c 42 65 4e 63
6b 45 6c 1 66 6d 46 6c 4e 3a 2e 7 20 f 68 4 48 3f 5 7f 9 7 3a 1e 2d
44 48 78 51 71 7 46 34 55 6a a 4d 78 55 3f 49 51 79 55 26 4f 1e 3b 1a 7a
c 5f 77 1f 6d 1c 44 3b 1c 76 14 4e 77 7 6c 12 1 7d 4 71 6 b 63 18 23
9 5 7c 3 71 19 1a 62 5 6d 1d 55 20 4a 31 5e 14 6c 51 2b 58 5b 77 5b 35
57 14 68 5c 28 5a 1e 24 52 2e 19 1f 21 5a 34 e 50 63 15 68 4d 11 2f 2e 72
4f 1a 63 20 6e b 55 42 2a 6e 6 53 4b 65 7d b 1b 7 50 6a 6 15 18 1f 36
45 54 54 5e 64 43 4d 5d 43 6f 54 4a 58 42 7a 17 44 58 44 7e 11 b 1a b 22
52 4a 56 17 25 52 4e 53 16 70 11 55 57 1c 22 1e 53 5d 16 70 12 49 45 59 6d
17 6 4c 40 7a 6 10 54 47 61 b 18 18 6 33 46 57 5a 49 28 4b 18 42 4e 3b
5c 57 5d 55 26 51 5d 11 14 74 1c 12 53 5b 6f b 5d 52 41 6e 1c 12 5f 9 3c
1c 12 5e 3 6e 16 13 12 18 74 14 8 5e 4 72 18 9 57 4b 2e 5b 48 1b a 7c
48 4e d 0 60 4e 45 41 1b 7a 48 a 5a 1c 67 47 0 16 3 79 45 c 1f 4c 25
6 4d 53 d 77 1 57 51 45 71 42 53 53 45 74 1 4b 57 4b 72 42 4d 4f 4 77
40 4c 57 18 25 d 3 15 57 79 4e 18 11 59 7f d 5 12 43 63 a 4a a 44 78
7 42 46 5f 62 1 40 a 5d 75 c f 0 40 68 2 40 18 47 7f 41 4c 1b 44 61
47 44 12 b 77 51 4c 5e b 70 46 46 5c 44 76 4d 4c 10 58 70 41 4d 19 17 2c
2 c 55 56 7e 15 b 5c 40 2c 5 9 51 5c 36 3 2 1d 5a 30 40 43 51 1b 62
d c 54 0 30 19 2 4b 4f 36 12 c 53 0 37 10 e 5a 4f 26 1c d 59 55 26
5f 4c 15 14 74 12 3 13 1e 75 5 4c b 19 62 46 50 6 1b 75 9 1f 6 1d 6c
f 50 1e 1a 7b 4c 59 1e 1a 7e 4a 44 1 55 6d 47 c 4d 4a 73 45 d 55 56 21
8 42 17 19 7d 4b 40 e 5 7b 8 4e 45 4a 6b e 4f 9 48 76 1f 45 45 48 62
5c d 4c 4a 30 11 42 e 5 6c 52 5e 7 f 7a 42 11 45 40 26 1 50 9 5c 31
7 5b 16 13 6d 44 1a 5a 52 3f 53 1d 53 44 6d 57 0 50 5c 7a 50 4f 12 13 26
13 e 5e 35 74 3 4 57 34 26 9 1f 1b 2f 3c f 50 11 35 3d 18 1f 9 33 22
1e 50 11 34 39 e 1f a 3e 2e 6 50 48 71 72 45 11 4 73 75 55 a 48 7d 20
16 2 4b 66 72 6 19 55 66 6e 2 56 56 67 3c 3b 5c 54 69 3d 78 1d 18 28 6f
35 52 1c 22 3d 21 5c 3 6d 2e 62 51 6 65 7c 63 51 13 26 2e 66 4b 13 25 7c
6a 3 5f 26 67 6f 9 13 67 35 22 46 51 28 2e 35 9 5f 22 3d 22 15 13 29 20
36 14 5f 3f 3d 20 9 13 3d 26 2d 2 5f 33 3a 69 4d 47 34 2d 64 2 4c 32 2b
74 4d 59 38 79 39 2 1b 77 25 7a f 2 6a 39 6a 40 17 60 6b 7c 5f 5b 21 39
31 10 19 6e 22 3c 5f 1 69 35 7f 47 8 6a 2b 3c 5f 5 71 3c 2d 10 47 3e 60
6e 51 b 28 7d 78 1e 10 26 7c 3b 3 15 2e 66 2c 4c 18 23 7b 3a 57 54 38 61
38 4c 18 79 33 75 3 5a 36 24 60 5 5a 79 21 62 1e 53 64 73 2f 51 11 2b 2f
6c 64 18 2a 3c 7c 2b 1a 20 38 7a 36 56 2c 25 74 3c 1a 21 36 74 38 56 28 36
78 3a 1a 33 2c 7e 75 1 39 32 71 3a 43 76 6e 32 7b f 7a 7d 3f 33 17 35 68
35 28 5b 3b 6d 37 3e 17 7a 3f 7a 71 55 35 29 6b 7f 4e 29 7b 71 75 2 68 29
3c 3a 40 27 22 3a 75 47 26 3f 2e 3a 58 3c 20 20 72 55 27 75 30 3d 5a 27 6a
3a 3c 11 64 38 3b 26 9 2b 6d 2c 28 c 2a 38 3b 67 e 2a 6a 2d 7b 7 65 36
6e 3a 4b 24 64 44 75 54 2e 73 49 3a 51 35 21 5e 3c 50 3f 73 5c 3d 1b 70 60
58 3b 19 3f 61 5e 3a 16 24 33 67 30 14 2a 32 24 28 19 36 60 33 28 1a 32 32
7e 67 58 7d 6e 3d 7f 5c 73 6e 79 63 10 52 7d 78 6e 5 11 2f 5a 6c 4 17 62
19 2d 48 56 30 54 62 49 40 62 5f 68 44 4b 37 4f 27 46 4b 65 4b 27 45 40 37
6 68 7 f 6b 45 63 1e e 3e 52 2c 19 f 23 46 63 1d f 26 5 60 1e e 33
46 7c 17 f 22 51 33 32 40 36 57 38 7e 47 21 46 77 3c 8 7d 5 36 70 e 7b
41 35 70 41 6e 4b 2e 3c 46 79 5a 61 35 4f 2b 4e 6b 79 41 30 43 23 61 e 29
45 29 7f 7 2e 4a 66 3d 48 72 9 27 71 4d 65 19 3c 3d 43 37 19 3c 3d 43 30
8 73 7f c 6c 4b 32 33 b 7b 5a 7d 39 5 6a 5c 32 3c 19 38 58 38 24 2 23
55 70 68 19 3e 16 77 61 0 6c 1 70 6c 1b 3e 1 70 6c 1b 39 10 3f 73 1b 26
16 24 76 19 31 6 6b 6e 19 34 4 76 66 5 66 9 70 6d 2 60 4a 31 21 43 32
7 7e 2c 42 67 44 78 34 d 77 52 65 36 11 25 50 64 7d 5e 24 46 68 7a 42 76
b 27 38 d 2a 48 21 20 42 3b 44 23 29 d 2f 55 23 28 42 2e 59 21 21 d 2c
56 2f 2e 7 7e 42 28 23 1a 2c 55 2f 26 1b 39 45 60 2b 1d 25 1 7b 67 13 24
42 60 63 19 2f 1 66 7c 56 35 7 7b 75 19 69 44 3a 39 58 3b 48 3b 30 17 26
c 74 28 10 31 2 3b 34 d 2c 7 31 2b 11 31 16 2d 67 d 22 1c 26 2b 11 3f
5f 67 67 50 6d 12 28 63 5a 3f 6 26 7c 15 3f c 2e 78 e 6d 41 61 3a 41 31
2 62 39 41 28 41 62 20 5a 76 2 4c 21 58 6d 4d 3 24 43 38 42 0 68 48 25
1 1c 71 53 3f b 1d 3a 1c 20 7 0 33 53 7c 44 41 7f 12 2e 54 5b 70 16 2f
17 40 74 1c 7d 18 46 7e 16 2f 14 5c 66 57 7d 59 13 24 18 21 18 5c 1c 1f 36
5b 70 1f 1c 2b 4d 6d 53 3c 2c 5a 22 50 35 7e 6a 3d 5d 39 69
diff --git a/packages/crypto/210/key b/packages/crypto/210/key deleted file mode 100644 index 73d7fe3..0000000 --- a/packages/crypto/210/key +++ /dev/null @@ -1 +0,0 @@ -The Colour Out of Space diff --git a/packages/crypto/210cbc.py b/packages/crypto/210cbc.py deleted file mode 100644 index c554878..0000000 --- a/packages/crypto/210cbc.py +++ /dev/null @@ -1,20 +0,0 @@ - -import cbc, crypto - -alice = b"""I'd say this was easy, but we didn't give them the key, did we? I'm adding some text to give them something to work with: Commencing his descent of the dark stairs, Ammi heard a thud below him. He even thought a scream had been suddenly choked off, and recalled nervously the clammy vapour which had brushed by him in that frightful room above. What presence had his cry and entry started up? Halted by some vague fear, he heard still further sounds below. Indubitably there was a sort of heavy dragging, and a most detestably sticky noise as of some fiendish and unclean species of suction. With an associative sense goaded to feverish heights, he thought unaccountably of what he had seen upstairs. Good God! What eldritch dream-world was this into which he had blundered? He dared move neither backward nor forward, but stood there trembling at the black curve of the boxed-in staircase. Every trifle of the scene burned itself into his brain. The sounds, the sense of dread expectancy, the darkness, the steepness of the narrow steps-and merciful heaven! . . . the faint but unmistakable luminosity of all the woodwork in sight; steps, sides, exposed laths, and beams alike! """ -bob = b"""No, and they\'ll have to figure out the key for the next one too. Here\'s some Lovecraft: "Nothin\' . . . nothin\' . . . the colour . . . it burns . . . cold an\' wet . . . but it burns . . . it lived in the well . . . I seen it . . . a kind o\' smoke . . . jest like the flowers last spring . . . the well shone at night . . . Thad an\' Mernie an\' Zenas . . . everything alive . . . suckin\' the life out of everything . . . in that stone . . . it must a\' come in that stone . . . pizened the whole place . . . dun\'t know what it wants . . . that round thing them men from the college dug outen the stone . . . they smashed it . . . it was that same colour . . . jest the same, like the flowers an\' plants . . . must a\' ben more of \'em . . . seeds . . . seeds . . . they growed . . . I seen it the fust time this week . . . must a\' got strong on Zenas . . . he was a big boy, full o\' life . . . it beats down your mind an\' then gits ye . . . burns ye up . . . in the well water . . . you was right about that . . . evil water . . . Zenas never come back from the well . . . can\'t git away . . . draws ye . . . ye know summ\'at\'s comin\', but \'tain\'t no use . . . I seen it time an\' agin senct Zenas was took . . . whar\'s Nabby, Ammi? . . . my head\'s no good . . . dun\'t know how long senct I fed her . . . it\'ll git her ef we ain\'t keerful . . . jest a colour . . . her face is gettin\' to hev that colour sometimes towards night . . . an\' it burns an\' sucks . . . it come from some place whar things ain\'t as they is here . . . one o\' them professors said so . . . he was right . . . look out, Ammi, it\'ll do suthin\' more . . . sucks the life out. . . ." The Colour Out of Space""" - -def C(text, key): - out = bytearray() - for i in range(len(text)): - out.append( text[i] ^ key[i] ) - - return bytes(out) - -IV = b'ahiru' -key = b'color' - -encode = lambda t : cbc.cipherBlockChainingE(key, IV, C, t) -decode = lambda t : cbc.cipherBlockChainingD(key, IV, C, t) - -crypto.mkIndex(encode, decode, alice, bob, crypto.hexFormat) diff --git a/packages/crypto/220/index.mdwn b/packages/crypto/220/index.mdwn deleted file mode 100644 index 23afa0b..0000000 --- a/packages/crypto/220/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -
Alice
1c 1e 38 7 52 4f 72 72 71 2b 18 58 6 52 4 74 65 6c 78 37 16 53 18 c 1d
6c 6e 36 3a 2b 5f 4f 4c 5 54 2a 27 7f 20 25 18 43 47 52 0 67 73 77 31 27
18 45 47 7 11 33 7d 7d 65 66 13 46 58 14 2 37 76 72 24 61 1d 41 17 1e 53
64 73 78 20 67 58 e b 1 44 62 31 3e 68 62 1e a e 45 1c 6b 6c 7b 79 65
1 0 1e 16 15 7f 70 72 20 64 17 13 5f 7 0 2d 20 72 34 62 19 c 40 41 5d
34 38 7e 2c 29 c 5d 59 18 4d 2b 39 64 38 38 a 4b 43 58 18 35 76 65 27 31
11 54 52 56 4f 72 18 7c 7a 76 a 56 17 3f 1f 7e 7b 7e 24 5a 1b 36 5e 9 45
7e 24 77 4f 61 57 e c 40 3b 6d 5e 77 63 2b 1f 46 4d 2a 6 22 72 3f 35 a
4b 73 4a 13 15 6a 7a 24 6 77 50 1f 4 5d 26 61 52 31 69 7d 57 11 e 72 6
79 75 3b 7e 52 5e 21 16 18 5e 75 38 2e 44 71 e 19 1c 5b 30 7d 10 7c 7c 3f
5c 50 12 76 10 71 64 3b 39 56 5c 22 1e 44 5c 71 28 7c 56 64 5c b 19 4d 35
7c 41 2e 79 2e 40 59 5c 20 a 67 73 25 2b 0 5 75 8 6 41 28 20 76 1 6e
56 1 5e 45 75 2b f 76 71 3f 56 4a 47 6a 1e 33 7b 22 6a 2 47 6a 13 16 9
7a 64 26 4 65 48 a 5a d 72 3f 5c 24 7c 69 -
Bob
c 1b 35 0 52 41 31 69 63 20 19 4f 33 48 17 46 74 39 29 26 56 6 32 1d 47
12 28 3f 75 6e 4b 7 7f 4d 1d 5f 74 25 60 3e 49 12 32 4 5 47 25 69 70 70
1e 50 29 40 5e 4c 3b 3e 18 32 56 44 60 1b 79 13 14 33 64 74 5e 6 76 34 b
3a 7d 3b 26 5b 49 3d 5f 1e 47 3e 26 3d 1d 79 7 38 57 48 3d 3e 4e 6a 55 68
1d c 56 2b 30 3e 5d 3d 78 4e 55 6e 1e 29 1d 7d 3d 37 f 42 58 62 19 52 7d
7d 9 39 c 72 19 13 15 6c 7c 35 c 6d 7b 19 5 76 15 78 9 7d 7d 70 11 58
50 31 15 18 77 71 57 35 5d 6b 15 3 5 38 29 71 47 70 23 5d 13 38 5c 26 51
3d 25 33 48 55 56 75 48 57 66 2d 46 2 1d 2e 6e 4b 5a 27 76 3b 12 a 6b 49
7e 24 1b 61 1e 7e 3e 1c 48 5 3c 6b 1f 4d 21 3f 53 1c a 29 71 9 5a 32 26
3e 42 10 67 12 30 7d 57 26 9 33 7b 44 5d 47 28 28 56 5b 32 34 51 43 8 3a
37 56 5f 71 61 2b 4 5b 76 19 2c 6b 52 24 13 34 61 49 4b 45 3e 3c 14 0 2a
7a 5e 1e 53 20 3e 49 12 3b 3b 32 49 59 21 5c 37 72 5d 3c 45 35 3c 17 26 59
72 3c 15 4b 54 79 30 52 5b 2a 34 5e 59 5f 7b 79 1a 5c 3b 2f 70 49 d 72 1b
2d 73 1f 3b 6 3f 69 48 a 58 2c 36 4a 5 2a 6a 4b 43 42 6d 63 2 1c 2e 25
3c 4d d 67 5a 6b 35 59 6d 15 79 74 5 41 1a 25 63 0 58 23 68 57 5 17 39
60 55 48 20 7b 1 5b 4e 75 54 3d 36 76 3a 55 56 3b 5c 52 5f 3b 7f 39 4e 3a
4a 53 4b 1e 3d 6b 55 24 34 6a 43 5 e 75 58 60 78 34 6c 12 46 32 2 19 2
66 71 27 5c 39 43 15 e 14 2f 60 f 63 74 70 c 15 14 67 7 7c 69 2c 66 e
4b 61 15 7 46 7d 34 39 2 66 4d 3 19 14 70 39 19 28 70 63 8 b 4d 71 4
3f 63 6d 62 51 1f 34 51 2 e 71 67 7b 18 64 1f 17 14 9 71 77 1f 77 37 66
2 15 3 70 45 61 31 39 35 5 51 6b 41 45 54 29 35 3a 4b 20 54 54 5f 50 6b
7f 19 3c 31 32 5f 57 1e 77 59 7a 3d 2c 77 1e 44 77 5a 49 12 2d 60 36 57 26
16 51 5e 14 23 2a 4d 7f 22 7d 17 1a 4d 6d 4b 38 65 7f 3a 1d 17 3d 18 31 5f
77 7f 7a 52 5f 14 7f 0 1a 26 64 54 61 11 7f e 1a 44 27 7c 21 5 2e 6c 55
42 36 1 67 d 62 62 29 16 b 5a 6a 17 6 36 63 53 29 4a 6e 4a 1 1a 73 38
7f 18 39 72 17 5c 65 b 70 52 7f 31 29 16 19 5b 7d 5f 53 7f 7f 9 3c 18 3c
1c 54 1a 7b 5b 77 35 7d 24 1a 5d 68 50 46 66 3b 46 32 7 6a 56 3 5a 28 27
2d 54 22 23 49 4e 27 d 36 4a 6a 25 2a 7 44 44 64 1a 4c 60 75 40 22 16 21
47 44 1 28 64 6e 10 67 30 8 47 78 6 75 5f 26 3a 22 16 18 4d 6b 47 5e 61
28 4 63 4b 2e e 4f 46 24 2e 31 e 6a 20 57
diff --git a/packages/crypto/220/key b/packages/crypto/220/key deleted file mode 100644 index de2bb17..0000000 --- a/packages/crypto/220/key +++ /dev/null @@ -1 +0,0 @@ -open meadows diff --git a/packages/crypto/220cbc.py b/packages/crypto/220cbc.py deleted file mode 100644 index acf0e0b..0000000 --- a/packages/crypto/220cbc.py +++ /dev/null @@ -1,15 +0,0 @@ - -import cbc, crypto -from transform import transform - -alice = b"""You know, I just realized it's kind of smug for us to be talking about how easy or difficult these puzzles are we we're making them rather than solving them. We've tried really hard to make them so that you don't have to follow some specific thread of logic to get to the correct answer; you just have to puzzle out the mechanism involved.""" -bob = b"""The next crypto function is something simple, but new. Here, have some more Lovecraft again: Ammi shewed them the back door and the path up through the fields to the ten-acre pasture. They walked and stumbled as in a dream, and did not dare look back till they were far away on the high ground. They were glad of the path, for they could not have gone the front way, by that well. It was bad enough passing the glowing barn and sheds, and those shining orchard trees with their gnarled, fiendish contours; but thank heaven the branches did their worst twisting high up. The moon went under some very black clouds as they crossed the rustic bridge over Chapman's Brook, and it was blind groping from there to the open meadows. open meadows """ - -IV = b'ahiru' -keyE = [2, 4, 0, 1, 3] -keyD = [2, 3, 0, 4, 1] - -encode = lambda t : cbc.cipherBlockChainingE(keyE, IV, transform, t) -decode = lambda t : cbc.cipherBlockChainingD(keyD, IV, transform, t) - -crypto.mkIndex(encode, decode, alice, bob, crypto.hexFormat) diff --git a/packages/crypto/230/index.mdwn b/packages/crypto/230/index.mdwn deleted file mode 100644 index 3ecd630..0000000 --- a/packages/crypto/230/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -
Alice
d3 d 1f 7 df 59 a2 c1 aa 1 c3 4b 69 4c a8 6a ab 3 ef 4c a 46 a2 87 b4
a7 e3 5d 69 53 21 80 f7 8 c7 ca 25 5d e8 8f 6b c7 b5 48 71 c1 6f 50 a8 e1
64 f7 e4 88 93 f7 8d 9e 24 3e 39 1a 39 c8 d2 d5 98 dc 28 79 5d 1b 6e d7 b
ef 9e a 39 86 7c 17 a4 a2 6e c1 b5 29 86 11 51 31 b 3b bb d0 4 fa f 9d
2c aa 9d a6 38 f6 84 63 53 a7 71 5a ca b5 3b b7 ee 71 53 d1 79 8f 2 b5 6f
f7 2a e2 5a e 89 c2 89 e8 f6 11 57 29 8d 82 98 d8 c9 67 62 76 59 69 5 c2
f9 d7 cb cc 9c 3f 58 6f 2c 74 c9 d9 e c c2 3 19 ba ab 71 aa aa 94 8d ef
46 4f 74 3 67 d1 e2 13 e5 16 66 38 f5 50 e9 b4 b 42 a7 25 73 dc bd 94 b
b5 51 52 30 f3 7b a2 a0 7 49 b2 76 96 fb b8 62 b6 39 9b 24 c6 1f 1b 38 d4
6f ac be 18 29 bd 7d 90 f8 b 1c f1 25 99 e9 dc 79 c4 31 94 1c a 6d dc 33
dc a7 2 72 de 1c 2b af 4 45 81 b9 4e a6 f3 5d 79 1a 4f 64 83 f8 af ee 0
65 7d 5b 8d b6 cb 9 f4 73 26 66 a7 80 d5 d2 f2 42 31 69 45 79 d1 1f cf f3
f7 54 c1 7c 9e 87 d1 71 dc 37 11 50 1a 7b db 9a 90 b9 e2 7f 5e 24 4d 99 e5
df c1 eb 7f 89 42 62 80 a1 7 d3 f5 23 55 ad 15 54 d3 c2 4f 94 d9 35 60 fe
54 6d df b 26 de 2 6f 81 d6 2 90 0 20 72 ec 50 c3 d3 e1 8b 90 74 76 92
6d 27 1d 4 23 8 7 ab ac c2 aa e7 45 4b 73 8e 81 e0 e9 e1 27 16 95 4b 43
ca 98 33 ad e3 51 1f d4 48 89 97 ab 7c f3 2c 59 3f 15 55 a1 dc ba f7 c3 48
57 7a 9e 73 c5 c2 fe 3d d5 77 6d 8d 1f 7e 0 5 6d b4 19 bc aa 5 53 b9 90
8e ac ff 4e 2c 2d 4d 9d b2 cd cd ad 36 59 68 43 44 d8 c2 c8 d0 d0 6a 65 63
59 58 1e cb 14 d9 98 aa 64 fc 53 17 5f e 52 95 bf fa f2 fe 1c 3b 5a 9c 93
a8 fb ef 3b 20 40 3b 9d d4 0 e5 c9 32 69 bd 4b 5d da c 67 eb d4 7f a4 1d
72 50 d5 84 aa fd de 73 6f 27 7b 57 5 e1 c2 e1 97 b2 92 77 8b 24 92 35 e5
24 ca 39 1b 93 cd 2a d3 b6 20 13 c2 7c 5d cf d5 6d 12 83 45 43 8 f2 32 ec
ee a6 52 c0 8d 71 42 bc 20 55 e2 d0 9c c8 f0 46 58 3f 6c 50 d2 d9 dd cc f3
5c 19 7c 68 99 df 9d dc 1d 33 50 1e 79 c3 c9 d8 9f f 25 47 50 1a f1 ce fd
d8 9f 85 43 27 51 1a 39 ea 9 e6 aa d8 98 b4 86 86 38 3f 5a 26 66 d1 a2 eb
a 5 65 59 98 a6 a0 3 bf 6 4f 32 a6 4f ad c3 f2 53 ea 5b 6d 32 f2 4e fb
e1 bd 9f ee 92 71 3a 41 88 39 f0 c8 a3 20 a4 30 6c 42 d6 43 b4 cc ec 7f f9
74 69 9a 1e 99 b4 4 1 b0 37 23 ab b1 90 d3 cc 39 93 3 72 66 c0 75 be 19
9 52 6 62 b7 aa 92 a7 13 5a 31 5c 89 d6 eb f7 e8 23 75 55 8b 8d d0 7 bf
24 2b 30 b5 59 c7 b c9 54 f7 64 a3 6c ea 8c c4 4c 2 4e 38 6c ed b6 b2 d4
f 80 46 59 69 9d 15 eb ec 1a 43 9d 82 80 be a5 15 25 24 66 3a a1 ca c8 11
a2 4d 75 28 a2 49 d9 d7 dc 4a ec 50 67 3c f4 73 d3 2 d1 5c 9 5c b7 70 f6
93 9c 45 18 9d 55 2e ea bf 3b 9f e 6d 56 de 1a ee 7 f9 7a de 82 a8 9a 13
5d 26 88 38 b2 c2 cd 68 df 24 26 64 6 6c d0 c9 a b2 cc 73 43 ea 46 64 1e
a5 79 ee b ba 4e e 8d b1 9a d8 af 23 23 1 67 8f cc cb e3 5 2a 41 64 91
a4 be e8 d 1 84 4d 89 f3 b7 2b d9 2c 61 56 d 6a c4 4 fa 9f f 76 b3 9c
18 ef 1e 5e 31 d8 86 b2 f6 e4 6d 12 55 84 9e 8 96 b7 26 34 a7 13 5b c6 1a
89 b2 f7 66 fa 11 40 98 d 5a ab e8 3b bf ba 38 7c cb 5a 5b b5 f9 67 ba 85
35 78 17 99 2c c6 f9 ae 7f a1 5a 76 5a a1 4b c1 b6 f2 40 f1 27 45 99 eb 61
9 d6 36 8a c 83 5e a1 24 b5 65 d8 44 c7 59 f 61 a4 7b f0 9c 4 88 dd 61
16 a8 33 3 1f 9f 88 c0 ae b3 14 68 64 47 4c 9e c8 7 e0 f7 19 66 e9 9b 89
9a 8 4b 31 23 1 e8 fd a3 c2 a6 8d 5f 4b 70 4f 20 81 fc 18 ea c3 2b 5c b4
86 66 d fd 4e 25 7 bb 23 c7 b3 a6 4d ca 75 3a 35 fe 2e e7 bb c7 8c c7 9f
7d 6f 2f 65 41 f2 7 c0 17 a3 7d a9 74 b8 8d f 41 13 98 6 a4 d8 ff 78 d1
30 18 88 1f 62 f0 92 3f ac 1e 30 13 e1 51 b3 bc 9c 94 e5 9d 22 29 20 4b 3d
b3 bd 0 ee dd 4e 7d a5 87 73 e7 8 59 69 e4 87 e8 f6 1c 9e 69 8d 99 b2 2a
7 6d 36 40 a 91 8 d9 fa b1 1 9b 39 5e 30 91 1f 1b fc df 16 9e ae 91 7a
da 3f 45 3c 1d 1e cd e0 a1 b2 9f 63 8b 56 59 1d c3 1 c2 f8 af 23 a2 73 9c
40 b6 50 a1 44 e7 38 f4 87 f1 8f bd 85 69 8f 29 3c 33 cf 5 c7 b5 c0 31 ab
6a 46 74 17 57 d ef 1a a5 b9 81 8a b9 4d 58 11 1e 9b e0 f7 a6 aa 7d 95 8d
31 46 13 7b 23 c4 d4 b8 dd c9 6d 63 56 3 47 b 6 e4 aa a9 a6 a8 44 22 43
45 88 f5 c9 f1 ef 64 57 67 9c 31 c f6 14 44 a1 a9 80 b7 fe 87 4b 27 56 90
69 da d2 c1 2c c 1a 60 68 d5 a4 ae c0 1d 44 4e 4d 67 f5 ac -
Bob
d4 5 4 a2 df 5d ae ea 86 1 4 41 61 67 b7 a8 a1 11 6 52 4c 81 a7 b2 c5
c1 5b 89 8a 39 16 ab 7b 7c 14 d8 8b f1 14 b3 18 20 94 b3 9d ac c8 3f 40 47
38 61 d2 eb a9 b7 f2 32 4c 58 46 73 c4 ef ea d1 fd 65 51 66 54 73 3 e5 11
d8 0 e4 4d f3 18 b3 8d e0 9e d8 3e 22 96 5 18 ca c9 32 b3 d8 5e 66 16 59
43 dd b b6 c4 9f 1d ed 27 63 2c a9 4f c8 f c 28 ff 65 a9 93 c5 21 17 43
1a 25 cb 82 f1 9a b6 2d 30 98 2f 33 f c9 33 c5 b7 e5 2f d2 6d 33 47 dd 7a
8 c1 e2 3 e5 9e 64 42 bb 8c 16 8 e9 46 1 da 9f 80 f6 ab 1e 1b 27 95 25
c2 ac c8 3e c3 57 8c 7c da 62 e5 6c 12 7b c2 84 f4 b9 dd 6a 2b 87 9b 78 e4
b2 15 7d 1d 93 4a db df cf 5 d1 69 7a 31 ac 65 c da db 57 f9 a7 3a 7b fe
8d 35 d7 c 26 2e b9 72 a6 df f2 4e 1a 45 77 79 ae ae f3 12 bf 3a 5c 9a b9
4c fa f1 3a 5e dc 7f 53 dc c1 56 b f2 71 7f c1 a8 95 e3 1d 58 84 77 86 bd
dc 64 0 32 58 52 1 e0 ca f0 dd af 40 68 82 56 40 ed 4 29 e6 d3 4f b0 a5
71 50 e4 5c 40 b7 e7 8f e8 e8 38 72 3d 48 97 b2 f7 d1 a8 1 35 81 78 4a ae
fb 22 1b c1 4b 75 b6 fd 7b ed f0 76 9a 19 8c 62 2 7a ba 2a c6 91 11 54 ce
51 16 bb e0 20 97 b9 57 40 dc 1 3c b9 e9 7b 91 c8 57 8c b 57 5b fd 25 85
d6 e8 5f d7 37 55 7a fa 39 de e9 ff 5a a1 41 7d 72 eb 93 a3 fc fc 88 3e 4e
76 88 68 a1 e0 f6 68 1a 52 8d 63 f1 f6 b6 3a e 85 9e 9a cb 81 10 1 32 29
67 9d ae c7 da ce 1e 43 6a 76 6d 9a a5 f 1b ff 2e 44 a8 86 8c e e6 5e 2b
25 aa 91 f0 d4 b 4f 27 9b 6e ab ee cd 39 19 8d 81 7d dc b5 53 2e 13 78 9f
e3 cb a4 d8 5a 73 6c 48 7f fc f9 cc fd 1e 61 8d 69 8b b3 c3 24 7 6d 49 75
c7 e7 3 ec 10 29 88 a7 4c b9 bd 2d 46 f8 9b 37 c8 e2 61 6 c4 13 42 5 bd
50 d3 f6 b3 58 e5 56 56 56 ea 80 96 f9 fe 8e 60 20 98 63 31 f2 b4 78 13 a6
8b 78 d8 a9 56 12 b8 71 40 f2 99 78 12 e8 65 14 f6 b9 97 1e d4 75 4d 26 bd
5a f9 e4 c8 5a 9e 78 8a 6c ba 2e f0 31 cc 4b ca 79 a1 6d e9 51 fd 83 e2 80
db 78 30 46 22 52 f4 d9 f1 d4 db 34 6b 94 6e 56 b8 4 27 e7 de 41 e4 cb 82
50 e4 87 41 2a 90 88 28 fa a 19 29 c7 98 b8 9c c5 29 2e 59 15 63 da 0 dd
c7 b 41 e0 72 6d af a3 8a e7 7 44 85 26 8e 97 e1 67 c7 23 1f 84 c9 6a dc
82 1d 27 ce 47 2c 99 9 68 e8 a2 1c a0 11 8e 49 ae 55 f7 2a ea 8e fd 98 a6
4e 22 94 35 4d 92 b6 3d 1b e3 1d 40 d8 fd 99 9b e5 6a 98 79 5d 63 18 3 19
c2 b f7 c0 b8 6c aa 95 6f 5b 6 39 77 9 fa 90 bc d9 83 88 1f 39 7f 65 23
ad f5 a1 ec d9 4c 79 48 93 79 c1 b9 e0 36 11 64 79 94 c4 b8 7 fd 74 73 54
ed 3d 17 e3 f0 33 c9 81 8a 50 a5 66 2f 31 ed 8b e ce c9 88 6d ad 63 64 37
b3 4c f 0 19 39 e9 81 a7 b5 b3 8c 27 8f 9f 1e 18 9 2a 34 c2 96 a6 a2 1c
60 13 47 45 ab f5 96 a9 ee 57 3b 17 49 99 ed b5 9e e9 2 57 47 16 88 ba b9
e4 97 26 9e 25 87 57 d7 3d c0 2f 97 78 d1 20 c9 12 1b 65 cc 2f 9d ab cb 6c
b2 13 51 69 b 3a df b3 d 86 b2 1f 53 a8 2f 35 aa e0 53 11 be 4c 40 e0 86
35 e9 f4 88 31 bd 8e 54 3c db 3c 1a b4 db 68 fc 93 5b 7e 11 7b 1d fe 1e c1
bd c9 96 bd 23 33 65 39 22 ce f5 c ca 6 60 7e 98 2a a7 11 f7 1c a 47 86
8b dc be f1 2d 6d 55 55 90 ca 4 db f4 24 6d ad 55 58 4 14 45 d1 b8 a0 85
e0 62 98 52 2a 74 c2 3a e0 cd fe 65 1a 96 68 73 f1 bc 25 c b5 75 4e c0 b7
38 6 ae 67 4d f8 a8 49 0 ef 8c 86 ab cf 65 6c 2b 5e 7c 13 cc c9 fd dc a9
64 60 8e 3c 26 c 9 2f d4 e a9 ac ca 64 87 8f 38 62 7 69 2f b7 10 a6 0
c8 39 b7 54 bd 28 b8 40 fb 4c 4 78 e6 94 c6 e4 f7 8a 30 2e 6b 7a 29 df 16
dd f3 cc 73 bf 58 33 64 16 54 98 bd 3 a0 f3 2e 7d b9 51 61 ce bd 4f ff c
65 7d e0 9f f4 4 f3 9b 2d 64 93 7d 3c 13 14 1a bd ce ba b9 9d 31 62 4f 9b
1d c3 f e6 45 af 6b aa 4a fe 3d f9 4d e4 9b b8 39 eb 8b 22 4d f7 4d 4e d1
e0 7e a3 b2 6e 88 f1 50 59 d6 20 74 f3 c3 3e c8 f5 80 25 a4 53 70 2e b 4f
95 fc c9 81 c5 1f 79 2b 30 70 9e fc db 10 1e 17 8e 3d af 85 9a 1c ce 85 6f
15 af 2e 37 9 90 8f c3 df af 2f 6f 6c 77 4a f1 f8 4 18 aa 86 8c af b4 4e
6a 1e 4a 5f f1 5 90 fb b5 53 ae 22 5d 46 c5 47 2 f8 f0 60 db e2 8c 97 14
50 71 6c 38 b2 90 5 4 a3 92 25 91 b6 46 4 c6 14 96 e6 af 41 a7 6f 4a 56
d1 43 d1 e6 fd 17 e7 70 94 98 a4 47 4 3d 78 40 e8 e4 cf 10 ef 7b 44 73 bf
8c fa f3 0 5a 6c 72 9a b5 ba 4 fd 31 4a 21 e4 74 c2 ae d2 8d b4 6c 4d 7d
1 74 18 eb 18 e7 fb a8 92 be 49 7d 43 39 52 d3 e a5 d8 c4 59 ee 53 70 63
9f 7a e3 17 1f 1e f6 91 b6 85 c2 84 3e 59 23 57 64 a1 ed d4 e6 a 47 53 9f
74 a1 f1 f6 32 be 6b 67 62 d9 4c e c9 1b 78 c1 ee 66 bb e5 64 4e 9 9d 99
d ef af 43 3e 9d 8a 5f a5 ca 1b 2f 81 53 6d 99 c3 32 b5 14 19 67 12 47 84
ad 8 a9 e0 34 73 9c 43 8b 1c b 1d f1 29 bb 96 ae 5f f 51 2 4f ed f1 ed
a5 e1 4f 86 9b 39 80 e6 27 3d b3 60 93 d1 d8 47 5 75 6b 70 e6 e5 19 9 13
7b 71 bc b3 fd f5 f4 5f 49 9f 3b 7d ec af 33 b4 a 59 91 d3 47 9e bb 27 7e
e8 2e 59 c6 a6 8d cb f8 7b 4d 2f 2b 8c 14 b7 be b8 2b f4 26 4e 78 ca 9e c2
92 f9 2a 30 69 2b 39 d8 a1 8 b1 f9 71 40 85 77 75 10 ef 23 b9 f6 a7 63 df
30 78 40 c5 7b b7 a a0 77 1c 40 ab 52 15 c4 d4 43 f9 fb 79 5d d6 8f 95 d9
83 82 3f 34 7a 2a 11 e1 dd e4 e a5 8b 78 4c a7 49 31 d8 ed 4f ec 13 7d 94
e7 4c a0 f 7 8d e0 80 b3 a2 53 86 31 4a 54 d9 66 d0 e9 c7 43 f5 64 4f 7d
ed 70 c4 f8 18 88 f4 79 58 b9 12 34 18 b8 55 99 c0 af 4e c5 10 6e 48 b2 72
9f 2 ec 59 0 17 a7 61 ee f4 d9 46 11 8e 5c 6e e9 bc 2d 84 7 8f 9c df 34
a6 22 7c 68 a7 4e ce dc c 48 dd 6c 68 a0 f7 52 ff c8 4c 66 dc 78 6f c2 ce
5f e a 6c 36 e8 a6 b1 6 1e 80 47 5f a0 c6 14 ef fa 80 76 9d 83 96 31 3
12 63 39 c5 ae d6 5 d7 6e 43 56 a0 75 d2 ef df 32 d7 6a 89 5e f2 7b 11 6
82 80 1e a6 ad 10 16 b3 51 21 c2 d6 29 ff cc 6c 16 df 99 6b cc 92 7e 2d 0
2c 25 13 c6 ac a1 5 a4 71 40 33 e5 46 14 a0 b0 70 f2 f4 4c 21 7 9c 54 f7
b1 a3 7c e0 61 34 83 1e 8c 0 c9 17 bd 28 e0 67 92 5c dc 88 c9 25 f7 70 2c
2f b6 9d b c3 b3 33 31 ed 6f 36 c1 13 91 a be 6e a4 77 a8 36 fb 43 d9 21
b9 8f e6 6d d2 7f 18 8e 6 63 fe d8 3f b5 13 78 59 dc 50 fd f1 d0 70 fc 27
7c 59 2 92 c8 f2 99 b6 3e 77 36 2a 5f c9 d9 b9 c4 fd 2f 75 30 54 8f c5 10
f0 dd 23 2b ac 78 58 5 d8 5b fa 96 e7 9f ff 62 56 95 39 9a c6 e5 30 de 28
65 71 c5 2 c9 5 b1 73 ae 74 eb 42 9 5c 1f 8b e5 ac bc 85 2e 7c 21 9c 32
c9 f0 cf 7c d0 6c 30 60 16 7f cc c7 b a6 19 2c 53 a5 45 fb c8 d6 40 fb 25
5d 16 f5 62 ce d1 93 83 17 3f 17 1c 2f b6 e1 a0 95 dd 22 43 34 1d 78 6 f5
a3 99 1c a5 65 85 15 b5 59 0 6b 9a 55 bf b1 9 1e b7 50 52 ac 9f 5b bc b2
33 11 c1 9c 5d a1 9d 23 28 ff 44 5d ce d7 94 d0 d8 7c 72 7c 41 5e dc 6 16
e8 d3 7f ae fe 73 52 f 5e 9e a3 92 7 f 3e 4a 1c e9 ca e6 c3 99 89 42 4e
6e 17 3f f3 b6 fe 9f da 55 26 79 13 76 ea e f8 9d 12 4e b8 7f 11 b9 c3 98
d 9e 9b 70 37 81 28 3e f 19 29 c7 cc f1 b7 c7 62 2c 61 52 50 c2 de 4 e3
db 50 68 ad 8a 6f 90 1c 4b 31 fa 50 a8 e4 a7 62 90 47 87 89 fa 18 e2 69 3b
7a 99 83 c e5 f3 18 30 ec 80 8b 91 dc 46 60 21 19 7b c1 c0 bb 96 19 6b 20
3a 13 fb e1 c8 b5 a0 5d 88 6e 7b 21 f1 25 e fe cc 5f b b1 70 68 81 af 5c
f5 9 34 5c fb 3b 9d dc c3 91 fd 14 71 25 30 23 a2 14 d9 cb 5 4d b8 43 35
97 e2 51 f3 1f 17 77 ff 61 c1 98 f1 21 1a 68 2c 72 cb fe c cf f5 6e 90 a8
5c 35 e9 70 24 d4 ba 9c 19 d4 60 7a 28 b7 73 c0 ff de 22 e1 20 72 6d d7 9f
0 f0 8 39 34 91 7d af d3 a4 18 f3 48 35 5d 90 7a ed a3 87 19 8 8c 53 2d
98 a5 1 b5 cf 1f 41 e3 46 69 9a d2 95 e5 e5 1 56 77 97 8a e7 d5 e1 2 2e
85 67 84 ac 16 17 f 36 45 ad 90 a7 16 ea 48 2 33 a5 98 e3 a9 c0 8d 78 79
47 65 6f 1a 18 ee 0 d1 fe ba 86 a1 62 8e 21 26 81 a 2d c0 b6 29 ea 13 7d
35 cc 89 ba 1b fb 58 26 9e be 62 98 d0 3d 54 fd 58 41 df f0 23 d9 f1 7d 50
b9 51 94 1c ec 4d d8 39 83 80 a7 18 d8 33 2c 89 b1 38 c4 cd 29 35 df 7a 68
b3 f5 79 1b e1 75 7c f fd 8b f4 f8 f1 62 2c 7f 7d 53 d c2 d f2 b5 bf 6a
a8 32 55 50 e 45 be fa e6 b5 ab 31 9c 4a 5c 8d a1 2b f8 ff 1f 40 c7 58 91
9e ef 79 f4 3c 50 4f ef 9c db c2 af 66 7c 68 65 38 c6 8 0 4 cc 26 ac a3
9a 67 6 5d 4e 2f f3 b3 fc c4 cd 33 49 63 6a 6e bf ec c5 f 8 7f 8d 6f aa
aa c 6f 12 4c 32 ec 1c 82 ed c6 89 b1 66 95 6f 1b 93 d 34 fc 9e 1 ad 18
3c 1f b1 4f f8 a1 9a 50 fc 67 4b 5a e4 95 c9 dc d5 8a 37 74 52 15 2d c5 dc
d5 9b d4 77 7c 5c 15 75 d9 e6 df a6 1c 43 8d 6c 86 b7 f9 6 cc 29 40 99 ee
6f c5 e4 3c 64 b1 68 9f d1 10 34 fa 26 1 f0 83 8e 6 ba 93 10 6e ad 5b 23
82 7 45 fc d 1b af e0 96 f7 b6 8f 95 39 80 7a 26 23 1b 60 f8 b3 d9 fd 1d
70 32 7f 96 aa b0 be a 24 43 3b 3a ea cb f1 cc bb 95 78 53 58 33 30 e fe
9a f3 a4 aa 65 5e 87 56 51 0 d3 67 f3 e5 af 64 c7 89 8e 40 c4 53 23 29 ed
51 df da b 57 d0 51 7e ed ed 58 d4 19 61 57 ec 66 ac 11 c4 61 c6 5d b4 7e
4 26 eb 5d 13 e4 c4 82 fe fd 86 6b 30 22 64 28 f2 10 ce 3 cf 7e a4 6a ba
11 d0 43 e3 9a b4 5e e4 91 5 3e da 44 2a aa b7 5e aa e 6 21 db 58 ad ee
ba 5a ed 93 9a 3b d5 4f 2 31 b8 5d b1 b7 d8 34 d8 21 54 47 f4 51 d1 b4 fd
7c d4 33 50 9c f7 14 d2 fc 30 76 ad 63 5c d2 f5 39 14 ff 79 7d f9 a0 99 e4
f0 35 80 38 8a 74 f5 34 d0 31 b4 73 d8 41 a6 4a b3 71 e0 5f ae 47 1e 91 81
23 e8 b8 2b 63 b4 81 4c c5 cd 40 29 eb 2b 6b e7 c7 80 d e 88 54 35 f3 b1
2a d0 17 62 50 a2 64 be c f9 37 c4 53 ae 5b a2 6a f7 49 ff 4d fe 92 af 8e
e8 7f 20 5c 76 89 f9 0 f8 1d 2e 78 bb 5a c7
diff --git a/packages/crypto/230/key b/packages/crypto/230/key deleted file mode 100644 index b765c05..0000000 --- a/packages/crypto/230/key +++ /dev/null @@ -1 +0,0 @@ -quavering tendrils diff --git a/packages/crypto/230cbc.py b/packages/crypto/230cbc.py deleted file mode 100644 index 78afd30..0000000 --- a/packages/crypto/230cbc.py +++ /dev/null @@ -1,38 +0,0 @@ - -import cbc, crypto -import diffie - -alice = """Lets do a diffie hellman key exchange, Bob. The next puzzle will be encrypted using CBC and sha512(.) ^ text as the cipher function, -and an IV of 0xaa 64 times. The prime is: %d, mod: %d, and I chose %d. Also, have some more Lovecraft: Too awed even to hint theories, the seven shaking men trudged back toward Arkham by the north road. Ammi was worse than his fellows, and begged them to see him inside his own kitchen, instead of keeping straight on to town. He did not wish to cross the nighted, wind-whipped woods alone to his home on the main road. For he had had an added shock that the others were spared, and was crushed forever with a brooding fear he dared not even mention for many years to come. As the rest of the watchers on that tempestuous hill had stolidly set their faces toward the road, Ammi had looked back an instant at the shadowed valley of desolation so lately sheltering his ill-starred friend. And from that stricken, far-away spot he had seen something feebly rise, only to sink down again upon the place from which the great shapeless horror had shot into the sky. It was just a colour—but not any colour of our earth or heavens. And because Ammi recognised that colour, and knew that this last faint remnant must still lurk down there in the well, he has never been quite right since. """ % \ -(diffie.prime, diffie.mod, diffie.a) -bob = """Umm, ok. You'll need this: %d. The key this time is 'quavering tendrils'. Some more text to decode: West of Arkham the hills rise wild, and there are valleys with deep woods that no axe has ever cut. There are dark narrow glens where the trees slope fantastically, and where thin brooklets trickle without ever having caught the glint of sunlight. On the gentler slopes there are farms, ancient and rocky, with squat, moss-coated cottages brooding eternally over old New England secrets in the lee of great ledges; but these are all vacant now, the wide chimneys crumbling and the shingled sides bulging perilously beneath low gambrel roofs. -The old folk have gone away, and foreigners do not like to live there. French-Canadians have tried it, Italians have tried it, and the Poles have come and departed. It is not because of anything that can be seen or heard or handled, but because of something that is imagined. The place is not good for the imagination, and does not bring restful dreams at night. It must be this which keeps the foreigners away, for old Ammi Pierce has never told them of anything he recalls from the strange days. Ammi, whose head has been a little queer for years, is the only one who still remains, or who ever talks of the strange days; and he dares to do this because his house is so near the open fields and the travelled roads around Arkham. -There was once a road over the hills and through the valleys, that ran straight where the blasted heath is now; but people ceased to use it and a new road was laid curving far toward the south. Traces of the old one can still be found amidst the weeds of a returning wilderness, and some of them will doubtless linger even when half the hollows are flooded for the new reservoir. Then the dark woods will be cut down and the blasted heath will slumber far below blue waters whose surface will mirror the sky and ripple in the sun. And the secrets of the strange days will be one with the deep’s secrets; one with the hidden lore of old ocean, and all the mystery of primal earth. -When I went into the hills and vales to survey for the new reservoir they told me the place was evil. They told me this in Arkham, and because that is a very old town full of witch legends I thought the evil must be something which grandams had whispered to children through centuries. The name “blasted heath” seemed to me very odd and theatrical, and I wondered how it had come into the folklore of a Puritan people. Then I saw that dark westward tangle of glens and slopes for myself, and ceased to wonder at anything besides its own elder mystery. It was morning when I saw it, but shadow lurked always there. The trees grew too thickly, and their trunks were too big for any healthy New England wood. There was too much silence in the dim alleys between them, and the floor was too soft with the dank moss and mattings of infinite years of decay. """ % \ -(diffie.B,) - -alice = crypto.strip(alice) -bob = crypto.strip(bob) - -def Ce(text, key): - out = bytearray() - for i in range(len(text)): - out.append( ( (text[i] + key[i]) % 256) ^ key[i] ) - - return bytes(out) - -def Cd(text, key): - out = bytearray() - for i in range(len(text)): - out.append( ( (text[i] ^ key[i]) - key[i]) % 256 ) - - return bytes(out) - -IV = b'ahiru' -key = b'space' - -encode = lambda t : cbc.cipherBlockChainingE(key, IV, Ce, t) -decode = lambda t : cbc.cipherBlockChainingD(key, IV, Cd, t) - -if __name__ == '__main__': - crypto.mkIndex(encode, decode, alice, bob, crypto.hexFormat) diff --git a/packages/crypto/240/index.mdwn b/packages/crypto/240/index.mdwn deleted file mode 100644 index 1abd607..0000000 --- a/packages/crypto/240/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -
Alice
e3 75 ff 47 8e 96 a3 b 46 47 76 af a9 4 d6 13 99 65 79 d7 bd 3f 3a 5e f1
c4 29 f5 c 45 74 77 b6 84 4c dd 9 38 9c f6 bf a6 d6 ef 11 b5 22 b7 f7 b7
2 65 6b 84 7 3e 76 68 e3 d6 9b 3e 8a 95 92 a1 e6 a6 f9 a0 e4 ae aa a8 ab
bd ef fe b3 b2 b5 f0 b6 ae ee f0 e5 c3 ed ab e1 ef ee de b6 a0 f3 ec a2 a2
aa a9 a0 ae aa f8 fe a8 b7 aa aa ab bb f8 bb e2 b1 b0 ed b2 e7 ee f9 b7 ac
a0 bc a4 -
Bob
bb 29 86 18 a7 e0 a6 33 ec bc df 73 3e b5 dc 76 66 6d 74 68 30 81 9b 42 a1
41 ac 3b ee ab 3d ae d4 ae d0 33 d9 11 1 e4 57 3f 61 14 9b e2 85 f5 89 e0
cf 94 d8 56 71 a ec 99 7a 5d 4 7e 68 93
diff --git a/packages/crypto/240/key b/packages/crypto/240/key deleted file mode 100644 index acc5b82..0000000 --- a/packages/crypto/240/key +++ /dev/null @@ -1 +0,0 @@ -in the same vein diff --git a/packages/crypto/240diffie.py b/packages/crypto/240diffie.py deleted file mode 100644 index 0120525..0000000 --- a/packages/crypto/240diffie.py +++ /dev/null @@ -1,25 +0,0 @@ -import crypto -import cbc -import diffie -import hashlib - -IV = [0xaa]*64 -aliceKey = hashlib.sha512(bytes('alice.%d' % diffie.key, 'utf-8')).digest() -bobKey = hashlib.sha512(bytes('bob.%d' % diffie.key, 'utf-8')).digest() - -alice = b"""Only one more puzzle to go. They'll never get it though, since we use a one time pad. I need to add more text here to pad this.""" -bob = b"""I wouldn't be so sure of that. The key is: in the same vein """ - -def C(text, key): - out = bytearray() - for i in range( len( text ) ): - out.append(key[i] ^ text[i]) - - return bytes(out) - -c = cbc.cipherBlockChainingE(aliceKey, IV, C, alice) -print('
Alice
', crypto.hexFormat(c)) -assert cbc.cipherBlockChainingD(aliceKey, IV, C, c) == alice -c = cbc.cipherBlockChainingE(bobKey, IV, C, bob) -assert cbc.cipherBlockChainingD(bobKey, IV, C, c) == bob -print('
Bob
', crypto.hexFormat(c), '
') diff --git a/packages/crypto/400/index.mdwn b/packages/crypto/400/index.mdwn deleted file mode 100644 index f57c9a7..0000000 --- a/packages/crypto/400/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -
Alice
f4 c9 40 41 ac 4b 9c 3f 32 58 2f 70 1c 49 fb bf a8 56 72 72 2 88 2c 87 cc
d 13 6c 25 d5 da 30 64 dd dd b8 ba 58 c1 a3 17 26 6d ff 64 62 cb 69 b3 e2
ae 2d dd 11 2f a1 5d 79 b6 63 cb 51 5b de 9c 57 20 45 72 7b f2 35 15 40 60
8c 45 c9 a6 38 e0 79 7 a4 cc 18 e9 7e eb 4b 38 e2 ed 6b 17 a1 ee fd 69 2a
24 b5 21 be 96 92 d4 f6 5b 40 59 1d b f6 8a cb dd 6 43 16 6 f ab c8 4
fc b2 f3 c3 64 11 40 db 9e d6 7 f9 40 17 bd 2 1e cc b2 14 81 6a c1 6b b9
2c 6c ab 5f 7f -
Bob
e9 d5 6 46 ac 52 92 38 32 5d 32 37 59 10 e3 af a8 46 72 6b 18 89 68 c2 c0
15 13 2f 3d 94 d0 2b 31 9e db ae ea 5f c1 ef 11 36 37 e4 66 7e 9e 21 99 e3
a7 6a ce 13 2f a1 50 74 ae 73 84 5b 41 96 da 1e a 10 76 60 a2 39 5b 19 6e
d9 1 da ba 75 ac 71 1b b5 89 1e a1 7e f3 b 36 ab a3 6b 43 e9 ab fd 23 75
68 f6 68 b3 c8 dc 81 ae b 18 44 4f 50 eb aa cb d5 6 4f 16 a 49 b0 d2 41
df bb 93 cd 7d d 42 c6 cc 8d 1a b0 f 43 f6 46 52 8d bf 5d c5 21 8a 22 fa
79 20 ff 6 71
diff --git a/packages/crypto/400/key b/packages/crypto/400/key deleted file mode 100644 index 0abb17e..0000000 --- a/packages/crypto/400/key +++ /dev/null @@ -1 +0,0 @@ ---------========Thanks for Pl@y|ng========-------- diff --git a/packages/crypto/400onetimepad.py b/packages/crypto/400onetimepad.py deleted file mode 100644 index a9a589b..0000000 --- a/packages/crypto/400onetimepad.py +++ /dev/null @@ -1,23 +0,0 @@ -import crypto -import random - -def mkPad(length): - pad = bytearray() - for i in range(length): - pad.append( random.randint(0,255) ) - return bytes(pad) - -alice = b'That was it, you solved the last crypto puzzle! Congratulations. I hope you realize that, in the grand scheme of things, these were of trivial difficulty.' -bob = b"It's not like we could expect you to solve anything actually difficult in a day, after all. --------========Thanks for Pl@y|ng========-------- " - -assert len(alice) == len(bob) -key = mkPad(len(alice)) - -def encode(text): - out = bytearray() - for i in range(len(text)): - out.append(key[i] ^ text[i]) - return bytes(out) - -crypto.mkIndex(encode, encode, alice, bob, crypto.hexFormat) - diff --git a/packages/crypto/cbc.py b/packages/crypto/cbc.py deleted file mode 100644 index d63f3d1..0000000 --- a/packages/crypto/cbc.py +++ /dev/null @@ -1,52 +0,0 @@ - -def cipherBlockChainingE(key, IV, C, text): - """Cypher block chaining encryption. Works in blocks the size of IV. -@param key: the key for the Cipher. -@param IV: initialization vector (bytes object). -@param C: the cypher function C(text, key). -@param text: A bytes object of the text. The length of the text - must be a multiple of the length of the IV. -""" - mod = len(text) % len(IV) - assert mod == 0, 'The text length needs to be a multiple of the key '\ - 'length. %d of %d' % (mod, len(IV)) - - feedback = IV - block = len(IV) - out = bytearray() - while text: - p, text = text[:block], text[block:] - - c = bytearray(block) - for i in range(block): - c[i] = p[i] ^ feedback[i] - - c2 = C(c, key) - out.extend(c2) - feedback = c2 - - return bytes(out) - -def cipherBlockChainingD(key, IV, C, text): - """Cipher block chaining decryption. Arguments are the same as for the -encrypting function.""" - mod = len(text) % len(IV) - assert mod == 0, 'The text length needs to be a multiple of the IV '\ - 'length. %d of %d' % (mod, len(IV)) - - feedback = IV - block = len(IV) - out = bytearray() - while text: - c, text = text[:block], text[block:] - - p = C(c, key) - p = bytearray(p) - for i in range(block): - p[i] = p[i] ^ feedback[i] - - out.extend(p) - feedback = c - - return bytes(out) - diff --git a/packages/crypto/crypto.mk b/packages/crypto/crypto.mk deleted file mode 100644 index 72c16ba..0000000 --- a/packages/crypto/crypto.mk +++ /dev/null @@ -1 +0,0 @@ -$(eval $(call STANDARD_PUZZLE, crypto)) diff --git a/packages/crypto/crypto.py b/packages/crypto/crypto.py deleted file mode 100644 index 9f0f6f4..0000000 --- a/packages/crypto/crypto.py +++ /dev/null @@ -1,46 +0,0 @@ -def mkIndex(encode, decode, alice, bob, - format=lambda s: str(s, 'utf-8')): - """Write out the index.html contents. -@param encode: function to encrypt the plaintext -@param decode: function to decrypt the plaintext -@param alice: plaintext of alice line -@param bob: plaintext of bob line -@param format: formatter for the cypher text, run out output of encode before - printing. Does string conversion by default.""" - c = encode(alice) - print('
Alice
', format(c)) - assert decode(c) == alice - c = encode(bob) - print('
Bob
', format(c), '
') - assert decode(c) == bob - -def hexFormat(text): - return groups(text, 5, '{0:x} ') - -def groups(text, perLine=5, format='{0:c}'): - i = 0 - out = [] - while i < len(text): - out.append(format.format(text[i])) - - if i % (perLine*5) == (perLine * 5 - 1): - out.append('
') - elif i % 5 == 4: - out.append(' ') - - i = i + 1 - - return ''.join(out) - -def strip(text): - """Strip any unicode from the given text, and return it as a bytes - object.""" - - b = bytearray() - for t in text: - if ord(t) > 255: - t = ' ' - - b.append(ord(t)) - - return bytes(b) diff --git a/packages/crypto/diffie.py b/packages/crypto/diffie.py deleted file mode 100644 index 5f0bbba..0000000 --- a/packages/crypto/diffie.py +++ /dev/null @@ -1,8 +0,0 @@ -prime = 51237129793 -mod = 321454621 -a = 341 -A = prime ** a % mod -b = 573 -B = prime ** b % mod -key = A**b % mod -assert B**a % mod == key, 'Bad diffie math.' diff --git a/packages/crypto/transform.py b/packages/crypto/transform.py deleted file mode 100644 index d9ffe1b..0000000 --- a/packages/crypto/transform.py +++ /dev/null @@ -1,13 +0,0 @@ -def transform(text, map): - size = len(map) - div = len(text) % size - assert div == 0, 'Text must be a multiple of the key size in length. '\ - 'At %d out of %d' % (div, size) - - out = bytearray() - i = 0 - while i < len(text): - for j in range(size): - out.append( text[i + map[j]] ) - i = i+size - return bytes(out) diff --git a/packages/ctfbase/ctfbase.mk b/packages/ctfbase/ctfbase.mk index 8b89e09..30611cb 100644 --- a/packages/ctfbase/ctfbase.mk +++ b/packages/ctfbase/ctfbase.mk @@ -5,7 +5,6 @@ ctfbase-install: ctfbase-build $(call COPYTREE, packages/ctfbase/service, $(CTFBASE_PKGDIR)/service) - cp packages/ctfbase/src/tokencli $(CTFBASE_PKGDIR)/bin/ cp packages/ctfbase/src/arc4 $(CTFBASE_PKGDIR)/bin/ ctfbase-clean: diff --git a/packages/ctfbase/service/ctfd/ctfd b/packages/ctfbase/service/ctfd/ctfd index 84f2bc8..e080a60 100755 --- a/packages/ctfbase/service/ctfd/ctfd +++ b/packages/ctfbase/service/ctfd/ctfd @@ -3,25 +3,11 @@ PATH=/bin:/opt/ctfbase/bin; export PATH while true; do - # Get new tokens - for dn in /opt/*/tokens/*; do - [ -d $dn ] || continue - puzzle=$(basename $dn) - category=$(cat $dn/category) - busybox nc 10.0.0.2 1 \ - -e tokencli $category $dn/category.key 3>&1 | \ - 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 + teams=/var/lib/ctf/teams.txt + rm -f $teams.tmp + wget -q -O $teams.tmp http://10.0.0.2/teams.txt && \ + mv $teams.tmp $teams sleep 60 done diff --git a/packages/ctfbase/service/ctfd/run b/packages/ctfbase/service/ctfd/run index 1f7542a..4e73720 100755 --- a/packages/ctfbase/service/ctfd/run +++ b/packages/ctfbase/service/ctfd/run @@ -7,7 +7,7 @@ if ! [ -r /etc/passwd ]; then cat passwd >/etc/passwd fi -# Set up networking for all CTF ip +# Set up networking for all CTF ips ip link set eth0 up if ! ip route | grep -q default; then ip route add default via 10.0.0.1 || exit 1 diff --git a/packages/sshd/service/sshd/finish b/packages/ctfbase/service/sshd/finish similarity index 100% rename from packages/sshd/service/sshd/finish rename to packages/ctfbase/service/sshd/finish diff --git a/packages/sshd/service/sshd/log/run b/packages/ctfbase/service/sshd/log/run similarity index 100% rename from packages/sshd/service/sshd/log/run rename to packages/ctfbase/service/sshd/log/run diff --git a/packages/sshd/service/sshd/rsa.key b/packages/ctfbase/service/sshd/rsa.key similarity index 100% rename from packages/sshd/service/sshd/rsa.key rename to packages/ctfbase/service/sshd/rsa.key diff --git a/packages/ctfbase/service/sshd/run b/packages/ctfbase/service/sshd/run new file mode 100755 index 0000000..551c66d --- /dev/null +++ b/packages/ctfbase/service/sshd/run @@ -0,0 +1,6 @@ +#! /bin/sh + +exec 2>&1 +iptables -A INPUT -s 10.0.0.0/16 --proto tcp --dport 22 -j ACCEPT +iptables -A INPUT --proto tcp --dport 22 -j REJECT +exec dropbear -r ./rsa.key -E -F diff --git a/packages/ctfbase/src/Makefile b/packages/ctfbase/src/Makefile index 5b21ecc..b0d4010 100644 --- a/packages/ctfbase/src/Makefile +++ b/packages/ctfbase/src/Makefile @@ -1,9 +1,7 @@ -build: tokencli arc4 +build: arc4 arc4: arc4.c - $(CC) $(CFLAGS) $(LDFLAGS) -DARC4_MAIN -o $@ $< - -tokencli: tokencli.o arc4.o +arc4: CFLAGS += -DARC4_MAIN clean: - rm -f *.o tokencli arc4 + rm -f *.o arc4 diff --git a/packages/ctfbase/src/arc4.c b/packages/ctfbase/src/arc4.c index 0c6a48f..4dcde89 120000 --- a/packages/ctfbase/src/arc4.c +++ b/packages/ctfbase/src/arc4.c @@ -1 +1 @@ -../../../include/arc4.c \ No newline at end of file +../../../src/arc4.c \ No newline at end of file diff --git a/packages/ctfbase/src/arc4.h b/packages/ctfbase/src/arc4.h index d102bb2..a5d8c7a 120000 --- a/packages/ctfbase/src/arc4.h +++ b/packages/ctfbase/src/arc4.h @@ -1 +1 @@ -../../../include/arc4.h \ No newline at end of file +../../../src/arc4.h \ No newline at end of file diff --git a/packages/ctfbase/src/tokencli.c b/packages/ctfbase/src/tokencli.c deleted file mode 100644 index d0d2490..0000000 --- a/packages/ctfbase/src/tokencli.c +++ /dev/null @@ -1,96 +0,0 @@ -#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 server 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/fireeye/fireeye.mk b/packages/fireeye/fireeye.mk new file mode 100644 index 0000000..17748d6 --- /dev/null +++ b/packages/fireeye/fireeye.mk @@ -0,0 +1,8 @@ +fireeye-source: +fireeye-build: + +fireeye-install: packages/fireeye/tokens.txt + mkdir -p $(TARGET)/fireeye/ + cp $< $(TARGET)/fireeye/ + +PACKAGES += fireeye diff --git a/packages/fireeye/tokens.txt b/packages/fireeye/tokens.txt new file mode 100644 index 0000000..9125d6d --- /dev/null +++ b/packages/fireeye/tokens.txt @@ -0,0 +1,1000 @@ +fireeye:xehad-matop-depox +fireeye:xepep-sovyd-pefex +fireeye:xopov-lytyl-sytux +fireeye:xizin-bigom-sehax +fireeye:xiden-pygoh-nalix +fireeye:xekac-masyt-muhex +fireeye:xezis-hecep-depax +fireeye:xuzic-rekuc-rofex +fireeye:xopaz-miduv-funux +fireeye:xubag-febip-cyrax +fireeye:xemec-fadac-mycex +fireeye:xihem-tufos-rihyx +fireeye:xobop-rikic-moryx +fireeye:xehac-ziper-cehyx +fireeye:xutog-hatat-kesex +fireeye:xevic-kogiv-cehux +fireeye:xidem-hevor-gemox +fireeye:xemit-bivoz-hafyx +fireeye:xecod-redyf-vafyx +fireeye:xurog-cakib-gofox +fireeye:xomim-zyvyg-macex +fireeye:xotok-pobab-zilux +fireeye:xibim-paduk-dudux +fireeye:xodof-vuryp-gyvox +fireeye:xinov-velem-gugyx +fireeye:xetaf-ruzac-sisex +fireeye:xuhav-hikyt-myfyx +fireeye:xebad-vacon-lamax +fireeye:xoleh-mutac-zisox +fireeye:xicar-bozul-fetax +fireeye:ximin-bocob-licix +fireeye:xuver-dotog-nyrex +fireeye:xizev-corat-pedux +fireeye:xuvim-zusez-bulax +fireeye:xidev-tured-cobix +fireeye:xifih-pafaf-dofux +fireeye:xokoz-vemum-valyx +fireeye:xumed-tanom-tagux +fireeye:xufad-vufom-rivux +fireeye:xonip-turom-donyx +fireeye:xetil-hoziv-nebax +fireeye:xepap-nyfyt-sibox +fireeye:xihet-cifup-gimex +fireeye:xudom-sebuc-vedax +fireeye:xinen-rubon-nomax +fireeye:xucop-synyf-kyzix +fireeye:xogar-bozaz-cyryx +fireeye:xecic-rohic-syzyx +fireeye:xorip-lamog-filox +fireeye:xucab-hyhyp-gafux +fireeye:xicos-lecuk-vykyx +fireeye:xozem-dafuh-bolux +fireeye:xuzap-sazer-begix +fireeye:xocic-rapir-zamix +fireeye:xinet-tyhih-dulix +fireeye:xoman-cyhoc-mebax +fireeye:xetez-dafif-nybyx +fireeye:xezel-lyfop-sinax +fireeye:xudol-ninag-sebax +fireeye:xegac-pyram-rifox +fireeye:xefev-pokig-sasex +fireeye:xorar-folas-kokyx +fireeye:xesir-gomen-donyx +fireeye:xugef-hakuc-nilox +fireeye:xezat-zamor-bemax +fireeye:xuhef-fakat-tyfox +fireeye:xebek-zunyc-horax +fireeye:xebok-rufyr-tylox +fireeye:xigeg-misyh-timyx +fireeye:xubah-bigyp-duvux +fireeye:xinah-vecug-pivox +fireeye:xodes-mazuh-gimix +fireeye:xevic-zalid-zonix +fireeye:xelic-dydyv-zelox +fireeye:xugad-mufud-curax +fireeye:xivit-tahif-fopex +fireeye:xipel-fumyz-rybox +fireeye:xudal-sibuk-manax +fireeye:xegek-zifyr-netex +fireeye:xomaf-syfab-bonax +fireeye:xitav-feliv-nypax +fireeye:xekog-fybur-vibox +fireeye:xomin-panyn-cygyx +fireeye:ximih-ladon-lebyx +fireeye:xozov-lofus-ronyx +fireeye:xezap-zilyh-mepox +fireeye:xekel-pomul-zocux +fireeye:xomis-regif-sefax +fireeye:xegep-popoz-fyhax +fireeye:xeled-dugad-sosix +fireeye:xibid-panob-ripex +fireeye:xusit-menuk-typux +fireeye:xelol-kubol-pihyx +fireeye:xumek-golyz-levex +fireeye:ximig-hysek-cybox +fireeye:xibis-pasuk-zocix +fireeye:xuleh-sehuf-pepix +fireeye:xonig-vyrym-donyx +fireeye:xozad-nenif-cigax +fireeye:xeraf-moseg-mobax +fireeye:xelof-dykyc-fezux +fireeye:xocol-nubyc-sosix +fireeye:xetor-tygim-fyrox +fireeye:xikop-cicen-nigax +fireeye:xuvom-bivyv-hodox +fireeye:xinab-feduk-dofox +fireeye:xeros-cyhyp-gozex +fireeye:xifip-tuhiv-gorux +fireeye:xitoz-vahin-dymox +fireeye:xuriz-pupug-mimox +fireeye:xumab-nasid-mylax +fireeye:xedil-kebug-gukix +fireeye:xikot-cecoc-gynyx +fireeye:xobep-sigib-kyhox +fireeye:xofab-dukyf-tihyx +fireeye:xikit-geduc-focex +fireeye:xonam-ryzyr-fudux +fireeye:xuvor-hetap-purux +fireeye:xemag-mifob-fesix +fireeye:xidol-pahaz-lecix +fireeye:xedem-gusyz-dutox +fireeye:xutap-lobeh-lezax +fireeye:xebad-numet-fefix +fireeye:xohaf-fepit-hetex +fireeye:xotim-gopel-zerux +fireeye:xuvac-padez-mivyx +fireeye:xodir-vazit-nadyx +fireeye:xutoz-mygob-kevyx +fireeye:xocek-lenyl-fagax +fireeye:xofad-hifoh-valix +fireeye:xuvif-syzyr-zihox +fireeye:xevid-cekip-zybyx +fireeye:xodin-lezin-paryx +fireeye:xemes-lodop-napux +fireeye:xicoc-bofip-pymox +fireeye:xusoz-lahup-vyfex +fireeye:xucif-vunob-mikox +fireeye:xitog-mabin-lalyx +fireeye:xovip-menyg-sesix +fireeye:xideh-sodiz-kicax +fireeye:xufeb-pemug-nipax +fireeye:xumer-kekil-zetix +fireeye:xedob-zihut-cekux +fireeye:xilec-vodev-pyhyx +fireeye:xulec-vavyf-fuvix +fireeye:xozed-tylod-vavax +fireeye:xihar-cobub-dobax +fireeye:xemom-cesur-vezox +fireeye:xugos-gygub-tehox +fireeye:xemir-vulon-vypex +fireeye:xonev-lizur-mepox +fireeye:xegin-behyv-medyx +fireeye:xuvic-mucyp-vypax +fireeye:xiviv-rofut-pamux +fireeye:xeten-rynyr-necyx +fireeye:xugoc-pygyk-kogex +fireeye:xedaz-vaseg-mizax +fireeye:xetez-tidin-zebax +fireeye:xetez-cazel-vicux +fireeye:xumoh-pacuh-zidex +fireeye:xilom-nonim-rekex +fireeye:xereb-mapom-kuhux +fireeye:xetos-losud-telyx +fireeye:xusal-nefuv-nakux +fireeye:xopib-conuv-zazux +fireeye:xuteh-narib-fyvux +fireeye:xukef-vyhob-cybex +fireeye:ximos-namyn-ketax +fireeye:xoker-subas-kyhox +fireeye:xebip-vulyh-tulex +fireeye:xukes-dotal-forex +fireeye:xotiz-befof-kuzix +fireeye:xozol-godun-badux +fireeye:xufir-detid-gomix +fireeye:xeloc-syvek-nulyx +fireeye:xikaz-dylyl-cecix +fireeye:xuban-vuzef-vovix +fireeye:xenak-mebit-sabux +fireeye:xemon-cymyr-rygix +fireeye:xuvis-zoroc-risix +fireeye:xidak-gorap-dofyx +fireeye:xitak-kepun-nekyx +fireeye:xucan-sokod-tatyx +fireeye:xenit-nymyl-rakix +fireeye:xebez-kokoc-zupax +fireeye:xubam-sidor-kukex +fireeye:xegir-mytab-detex +fireeye:xizeb-gypyr-sakox +fireeye:xelac-hanok-lynox +fireeye:xipam-gucav-henux +fireeye:xohas-hupul-cazix +fireeye:xudoz-rytog-likyx +fireeye:xuron-vaviz-gufax +fireeye:xogob-fyzeg-camax +fireeye:xogif-nynip-lezox +fireeye:xiget-hydyp-mamix +fireeye:xunon-gasig-zidax +fireeye:xizas-kydas-tytix +fireeye:xusis-cyhah-mezex +fireeye:xudiv-regys-bolux +fireeye:xusag-dakak-myvyx +fireeye:xegiv-hibec-dudax +fireeye:xopov-lisaf-medyx +fireeye:xefec-cytes-lezux +fireeye:xised-kihut-zirux +fireeye:xitov-kikef-kityx +fireeye:xikiv-vuneh-letax +fireeye:xucam-vemok-vyfax +fireeye:xidol-puhak-voryx +fireeye:xicen-casyd-bucax +fireeye:xemob-hados-syrox +fireeye:xifez-gydiv-sefox +fireeye:xozev-rakor-pepox +fireeye:xodan-honag-dukux +fireeye:xereg-kabah-visax +fireeye:xigec-cuzum-tupax +fireeye:xovik-kakit-sacix +fireeye:xodic-zifef-lalix +fireeye:xivaz-micup-losex +fireeye:xilon-mekim-zocyx +fireeye:xusiz-keriv-nizox +fireeye:xogil-ligyl-dibox +fireeye:xiron-kyvag-cizux +fireeye:xeseg-tetyt-cifox +fireeye:xinig-latyt-hymox +fireeye:xihil-fufel-nylax +fireeye:xuteb-tepic-gekux +fireeye:xunad-nyvar-gagex +fireeye:xokim-rukid-mosox +fireeye:xukob-lolin-bepax +fireeye:xusen-hyvom-pohax +fireeye:xekak-hunam-colix +fireeye:xegib-gynyc-lygix +fireeye:xevov-lopoc-zolox +fireeye:xuzac-viryb-lazix +fireeye:xonac-sevat-nypox +fireeye:xolar-sekak-cutux +fireeye:xugap-tocov-zamox +fireeye:xuzis-pyrid-mohux +fireeye:xogir-ruked-nutix +fireeye:xipas-cucet-ketax +fireeye:xofoc-bulyl-mokex +fireeye:xibef-katip-pisox +fireeye:xirez-tidum-rusex +fireeye:xefan-depok-gipux +fireeye:xicik-mehol-sulux +fireeye:xevag-gomep-sevyx +fireeye:xikaz-vimoc-hypax +fireeye:xedac-cefiv-kufox +fireeye:xomal-sofav-tikex +fireeye:xepes-lyzac-kopix +fireeye:xufih-huduz-hycox +fireeye:xulab-kozag-bisix +fireeye:xisen-tikum-dutyx +fireeye:xubis-bokuv-dukox +fireeye:xopap-hycyg-zelex +fireeye:xocis-sobih-dibox +fireeye:xihep-cileb-gunux +fireeye:xosin-syres-pohax +fireeye:xolin-mogir-pazax +fireeye:xivog-loged-sitax +fireeye:xebih-terap-pidox +fireeye:xozem-kelyg-fosax +fireeye:xudiv-vizig-zidex +fireeye:xerov-tifap-myzix +fireeye:xubaf-coves-byzix +fireeye:xetav-tosik-zoryx +fireeye:xezes-lidav-hahyx +fireeye:xutob-zakol-cynex +fireeye:xezov-kuzef-nisex +fireeye:xotis-bogen-datyx +fireeye:xopen-terut-cyfox +fireeye:xubod-rodef-rerox +fireeye:xiger-fofys-zacox +fireeye:xifoh-risah-vicox +fireeye:xubig-kimub-dinux +fireeye:xolop-hygof-casex +fireeye:xonim-muluf-lulyx +fireeye:xoden-guzyg-hozix +fireeye:xelep-sobof-suhix +fireeye:xefar-zahas-kohyx +fireeye:xifin-tober-guhex +fireeye:xidak-pugod-halox +fireeye:xitan-losym-vokox +fireeye:xuvah-cynac-sogix +fireeye:xizen-mopan-sitox +fireeye:xugip-dymif-bosax +fireeye:xepol-cekud-hesax +fireeye:xifaf-cybof-vagyx +fireeye:xilif-fened-lubex +fireeye:xukez-bosah-fifix +fireeye:xotoh-dalet-viryx +fireeye:xugiz-labyd-bicix +fireeye:xucoz-dudyr-tipax +fireeye:xozag-fupar-ladox +fireeye:xumod-lozim-pihux +fireeye:xukof-cytan-vyfax +fireeye:xunat-ferot-mogix +fireeye:ximod-kerov-sukyx +fireeye:xihok-dabad-kivux +fireeye:xehar-detek-mibax +fireeye:xomek-rysub-linix +fireeye:xisas-cusif-zinex +fireeye:xedig-belyh-symex +fireeye:xoniz-savub-gygax +fireeye:xepad-vohit-sikix +fireeye:xuseb-cusav-tykix +fireeye:xiheh-bidaz-lubix +fireeye:xegor-zyfel-guvix +fireeye:xelad-cimyr-tukex +fireeye:xelim-modyp-nepox +fireeye:xivah-gezar-hepix +fireeye:xihoc-punuh-syzux +fireeye:xugiz-deguf-penox +fireeye:xihef-gubad-zofix +fireeye:xedem-sybef-cebux +fireeye:xivap-misar-kocix +fireeye:xumib-roloh-barox +fireeye:xotob-fazym-vapex +fireeye:xegat-fugon-kasyx +fireeye:xehil-gabyc-zityx +fireeye:xivof-susyk-cohax +fireeye:xefik-sunet-nicex +fireeye:xipef-kupep-defyx +fireeye:xusil-nyhuh-bufox +fireeye:xubik-vabyb-hygex +fireeye:xuleb-mozus-femux +fireeye:xoseh-temeg-mehix +fireeye:xerep-bogyl-dudex +fireeye:xufap-mevyb-totix +fireeye:xulat-gecyd-lyvix +fireeye:xifaz-tunap-pypyx +fireeye:xubat-kutyr-gikux +fireeye:xomes-lehys-fumix +fireeye:xogah-vasym-dusex +fireeye:xufes-vozyd-labox +fireeye:xovef-varir-sinux +fireeye:xipog-finec-gehux +fireeye:xehad-lukib-dibyx +fireeye:xunom-byvob-madax +fireeye:xires-bogum-donyx +fireeye:xemem-hatit-kanyx +fireeye:xocon-paheh-benox +fireeye:xorek-hozap-rytax +fireeye:xorom-cyles-lurex +fireeye:xurep-bapes-gekex +fireeye:xipet-lukyr-badyx +fireeye:xefeg-dehoz-tetax +fireeye:xikeg-niguf-bulux +fireeye:xolop-rikev-volix +fireeye:xurog-lycyr-livex +fireeye:xeheh-surek-covyx +fireeye:xenif-rofon-memox +fireeye:xevev-kudyd-bokix +fireeye:xutam-nofif-ricux +fireeye:xorim-pehak-gimax +fireeye:xoneb-kiboz-futix +fireeye:xudet-cuson-corox +fireeye:xosev-mezem-vudix +fireeye:xuboz-dalyn-pefux +fireeye:xiled-putos-nonex +fireeye:xifob-bamyc-sifix +fireeye:xorit-mynyh-vyrux +fireeye:xelin-zykit-sihex +fireeye:xumin-fiter-rovox +fireeye:xogaz-hyvid-buhux +fireeye:xekat-gorun-nerux +fireeye:xosah-curah-suzax +fireeye:xoses-lurag-fydex +fireeye:xibic-hocuv-lyfax +fireeye:xuzip-nuvup-fobax +fireeye:xogoc-zuhuh-lunix +fireeye:xozol-dypyt-dihex +fireeye:xugim-rovak-gohyx +fireeye:xomer-tivan-matux +fireeye:xiher-vemyt-sibyx +fireeye:xurop-vumim-gekax +fireeye:xolis-nekof-vehix +fireeye:xudal-duveg-gyrox +fireeye:xipos-nibyf-dimix +fireeye:xetir-lyluc-rihax +fireeye:xuriv-zipes-cytyx +fireeye:xeled-zasem-futyx +fireeye:xokoh-hytyz-myfax +fireeye:xodet-bitod-bugax +fireeye:xoreh-havih-lonyx +fireeye:xunol-semyr-kemyx +fireeye:xoneh-cydov-fytox +fireeye:xibep-rezyg-hahyx +fireeye:xozep-nyduz-kynix +fireeye:xeteg-vepuz-tulox +fireeye:xilat-lahek-cyfex +fireeye:xusek-vynaz-lenux +fireeye:xific-giner-cifax +fireeye:xudib-filyb-sucyx +fireeye:xogot-nugac-zihax +fireeye:xehor-kenag-detex +fireeye:xedim-rafev-magax +fireeye:xokos-dodaf-delix +fireeye:xuhez-lavut-vohax +fireeye:xetoc-nohom-vezyx +fireeye:xisim-bozeb-nimyx +fireeye:xidak-lomob-rehix +fireeye:xusal-zolyr-dyvyx +fireeye:xupep-pabih-bosux +fireeye:xehod-zukih-gazox +fireeye:xigal-voduv-lyzox +fireeye:xemig-dogog-nymax +fireeye:xerep-tucak-cefyx +fireeye:xogip-cegeh-fifex +fireeye:xosab-mytub-rygox +fireeye:xikop-kudud-kohix +fireeye:xorad-kekam-rirex +fireeye:xihon-cylip-tekax +fireeye:xikat-tizif-huhax +fireeye:xovez-pufov-ralux +fireeye:xunal-vehas-sivyx +fireeye:xukir-vizar-sydux +fireeye:xigeb-lyliv-mubax +fireeye:xuvam-ruvub-vomex +fireeye:xuseb-cured-guhux +fireeye:xipez-febeg-pykux +fireeye:xedaf-simom-gehux +fireeye:xunak-minyz-cubyx +fireeye:xikem-becen-ceryx +fireeye:xicim-vevad-dolyx +fireeye:xolar-vunuf-kesux +fireeye:xunis-hesis-golyx +fireeye:xehom-sesul-banux +fireeye:xirar-gegik-horyx +fireeye:xeras-mohip-fufix +fireeye:ximif-pytyh-zytex +fireeye:xokot-kysoz-tigox +fireeye:xidih-caves-rufex +fireeye:xizer-bopum-tutix +fireeye:xeval-puzyg-kydux +fireeye:xoloc-dorag-rutox +fireeye:xocab-gycer-cypyx +fireeye:xelis-huhif-volix +fireeye:xivor-laneb-myhax +fireeye:xocol-pyvyc-gyzyx +fireeye:xupih-vumip-zyfex +fireeye:xedoz-dalit-fuhux +fireeye:xelak-nerus-togux +fireeye:xotig-vodef-zacix +fireeye:xetod-nezys-fedix +fireeye:xunaf-babub-gagox +fireeye:xebor-kykyg-nybix +fireeye:xohic-nipod-gozux +fireeye:xodez-tysyf-muvax +fireeye:xivin-pyfes-tasyx +fireeye:xukeg-havup-banyx +fireeye:xolof-romam-lobax +fireeye:xegiz-denyr-sekox +fireeye:xukos-rosip-nihex +fireeye:xehon-pohyk-metyx +fireeye:xitof-gocuv-horux +fireeye:xomag-nemud-nityx +fireeye:xidef-fanen-hirex +fireeye:xifav-topab-dolix +fireeye:xunil-hylav-lemex +fireeye:xevih-hycel-dinex +fireeye:xenok-tobap-pepax +fireeye:xigop-gigav-cutax +fireeye:xehof-cibap-kilex +fireeye:xulad-tefit-filax +fireeye:xofez-rusyn-dyhex +fireeye:xeval-tadum-bavux +fireeye:xidih-cuseb-gunyx +fireeye:xukiz-hifuc-memax +fireeye:xitoz-nukob-kusax +fireeye:xukag-noluf-vupax +fireeye:xuros-hurar-meryx +fireeye:xinih-gadif-cyrex +fireeye:xobet-faneb-zifyx +fireeye:xuvok-keked-lidax +fireeye:xebat-tyvir-sefex +fireeye:xulin-vihes-tucex +fireeye:xutah-licak-rihax +fireeye:ximon-zybup-podux +fireeye:xofov-nyhof-tusax +fireeye:ximen-socis-nisix +fireeye:xomav-filuc-lomax +fireeye:xinar-pupaz-fetex +fireeye:xelog-kycel-gicex +fireeye:xonam-ruvyc-vuvox +fireeye:xipes-bysec-savux +fireeye:xeloc-kanar-nalix +fireeye:xezoz-tuhyg-nenix +fireeye:xipad-dipik-cubux +fireeye:xotip-tamyf-bimex +fireeye:xelas-fogas-pybix +fireeye:xidel-pihyh-nofux +fireeye:xudec-kopan-rekax +fireeye:xuleb-rozof-lycix +fireeye:xuvil-nasov-fatax +fireeye:xebom-kepyt-ferux +fireeye:xifiz-gafeb-pukax +fireeye:xizes-zukuc-hakax +fireeye:xekif-sebec-hufex +fireeye:xefam-nesor-gelux +fireeye:xoroh-sikef-penyx +fireeye:xives-ryzol-votax +fireeye:xivac-direp-buvyx +fireeye:xeped-hepeh-kegex +fireeye:xomiz-hyzyz-hofux +fireeye:xosok-ragen-terex +fireeye:xizot-cypyc-cabyx +fireeye:xipeh-kezyl-kafix +fireeye:xosol-gotud-disyx +fireeye:ximem-remyv-rybix +fireeye:xezob-hivok-pucyx +fireeye:xesel-kamib-satex +fireeye:xiteb-rizun-bipex +fireeye:xomav-dutor-tazux +fireeye:xinov-rizun-satex +fireeye:xenim-cukag-tofyx +fireeye:xedad-dytan-zyfex +fireeye:xifez-bukyv-tevox +fireeye:xitah-faloh-sukax +fireeye:xiger-pokor-hapex +fireeye:xihel-pusad-cafyx +fireeye:ximar-fefup-sicyx +fireeye:xiref-falyp-kodyx +fireeye:xiper-docyr-zegux +fireeye:xihiz-falus-katax +fireeye:xikol-vodur-rahix +fireeye:xobat-vudoc-livax +fireeye:xevef-valyg-mytax +fireeye:xokek-gobyn-lycax +fireeye:xelad-pazuz-bumox +fireeye:xupel-pezyf-lidex +fireeye:xufep-giloz-zybux +fireeye:xosih-bylyb-lofox +fireeye:xesez-kasyk-gehax +fireeye:xezis-kudel-dycix +fireeye:xeras-gydag-mofex +fireeye:xobaf-hekof-bazex +fireeye:xegis-gytal-mumax +fireeye:xeraz-subuf-durix +fireeye:xosok-kugud-vulix +fireeye:xenop-citer-budox +fireeye:xihab-bamuz-cyzix +fireeye:xozot-myluh-tydyx +fireeye:ximik-pakil-parox +fireeye:xuzas-sebyv-racax +fireeye:xekep-hulod-tudox +fireeye:xobef-kikas-rebex +fireeye:xirev-nazel-hekyx +fireeye:xepib-zotuf-pelyx +fireeye:xicor-fazeg-canax +fireeye:xifih-tyned-lyfex +fireeye:xuvon-manud-sedyx +fireeye:xibop-ninet-sozex +fireeye:xideg-domeh-gobux +fireeye:xusos-hesiz-ponex +fireeye:xedor-vyfyf-vihax +fireeye:xonoz-kulyl-bokux +fireeye:xofis-lapez-tarox +fireeye:xosev-hubah-tavex +fireeye:xiper-mevyv-migix +fireeye:xiver-vuhit-lipix +fireeye:xifom-fahol-vydox +fireeye:xulan-lamar-lunyx +fireeye:xecir-sedaf-bemix +fireeye:xecih-susad-tygyx +fireeye:xudoh-pycar-fovyx +fireeye:xetin-muval-fybax +fireeye:xuboh-lebyp-kadox +fireeye:xupih-zecib-cumyx +fireeye:xizeg-kocid-nimex +fireeye:ximak-potav-zohyx +fireeye:xegen-hutak-togox +fireeye:xinad-hapak-puzux +fireeye:xolid-fagyh-fybyx +fireeye:xinid-vomok-hohyx +fireeye:xomek-hopel-bipex +fireeye:xuhim-lelub-zipax +fireeye:xeteh-gebeg-bodax +fireeye:xozob-talor-sahex +fireeye:xivon-gonik-zubux +fireeye:xudol-kural-simax +fireeye:xepip-zedun-zopex +fireeye:xutot-mohuv-sufux +fireeye:xugor-bibef-gunax +fireeye:xefec-fubod-gozex +fireeye:xopag-tegig-revex +fireeye:xosos-kapun-fovox +fireeye:xedas-zepyk-ladax +fireeye:xomop-delob-lepex +fireeye:xuhav-fapec-rutix +fireeye:xehaf-zedyv-nugyx +fireeye:xenim-podud-secyx +fireeye:xonoh-teleh-vesax +fireeye:xetih-hemez-henax +fireeye:xicir-hyzuh-bifex +fireeye:xofad-zezyb-vizax +fireeye:xinov-supez-cozax +fireeye:xofem-tasir-cunox +fireeye:xekek-keryb-zubax +fireeye:xumit-bigik-kekux +fireeye:xitag-kikyg-nyvux +fireeye:xecaf-leruk-tehox +fireeye:xobap-racyb-budex +fireeye:xudaf-cirot-fyhyx +fireeye:xipog-nidif-zavex +fireeye:xulih-bilah-benyx +fireeye:xivit-lelys-mebax +fireeye:xucif-rumeh-norex +fireeye:xikob-foden-cukux +fireeye:xohim-mobaf-hucex +fireeye:xecor-valyl-vuvax +fireeye:xuhot-daven-kykux +fireeye:xisac-bicum-nilix +fireeye:xiges-nakir-mufux +fireeye:xicep-zasyn-gucyx +fireeye:xelol-sahyh-pinyx +fireeye:xizez-bunez-nopex +fireeye:xinim-helyc-muhox +fireeye:xosak-bilod-nunex +fireeye:xenos-coben-cecyx +fireeye:xudag-kypif-zapax +fireeye:xibad-zopyb-vycox +fireeye:xivec-bymab-zibax +fireeye:xocog-kityb-nifax +fireeye:xicik-roner-kisux +fireeye:xifis-nynak-badux +fireeye:xocap-mityb-nabox +fireeye:xupit-tagef-begax +fireeye:xolim-bazys-nodex +fireeye:xohid-citug-sarex +fireeye:xesag-dyfop-dyzax +fireeye:xunob-rociz-zomox +fireeye:xugat-dutyh-hyrax +fireeye:xudet-putoc-fanux +fireeye:xuneb-nybit-pegox +fireeye:xenis-haseb-mamax +fireeye:xenig-kerys-todox +fireeye:xidit-micyg-vusyx +fireeye:xogir-lyzub-hokax +fireeye:xenic-nilis-lyhux +fireeye:xucim-pydis-zahex +fireeye:xigev-tipom-lazox +fireeye:xehof-lelen-vehux +fireeye:xonef-husez-fyhix +fireeye:xomir-cofuh-hymex +fireeye:xuceb-canun-dolex +fireeye:xumaz-rakaz-nafix +fireeye:xidor-mivav-lilax +fireeye:xosit-loren-losux +fireeye:xumiz-gibyn-pokix +fireeye:xufod-banor-duzox +fireeye:xovok-ryvic-fefyx +fireeye:xigeh-menib-sysyx +fireeye:xesah-vysob-bibex +fireeye:xopit-vebyk-kuvex +fireeye:xucin-byzob-zyrex +fireeye:xusos-pezip-zinux +fireeye:xobac-lacyd-fyfex +fireeye:xoral-netit-vynyx +fireeye:xuhin-tycip-nupix +fireeye:xureg-tutoz-zinux +fireeye:xemog-ficat-ramax +fireeye:xiciv-kikip-pabyx +fireeye:xopab-tedih-kusox +fireeye:xopas-minoz-nogox +fireeye:xomis-vonus-rocyx +fireeye:xibab-bacus-zebyx +fireeye:xusin-benuh-tegex +fireeye:xecad-hudev-fynix +fireeye:xivek-lugyv-vymex +fireeye:xizam-dohil-sykax +fireeye:xopeb-tumuh-fodex +fireeye:xuvol-kukel-dizix +fireeye:xidob-logaf-romax +fireeye:xupab-suroz-sygax +fireeye:xinar-segud-difex +fireeye:xilig-habut-kefix +fireeye:xupev-bival-berax +fireeye:xihal-fakyk-kufex +fireeye:xinih-sekyc-livux +fireeye:xezip-zofig-lohix +fireeye:xolon-geguv-vahyx +fireeye:xusip-zinap-pamex +fireeye:xefab-goboh-tahux +fireeye:xucoz-riluk-gyrax +fireeye:xuvol-goren-vuzox +fireeye:xorem-komak-melax +fireeye:xuzel-lepyk-tahex +fireeye:xepom-pedit-pyvax +fireeye:xugon-kivuk-legyx +fireeye:xulil-vikem-nygox +fireeye:xeves-dalad-nanax +fireeye:xisin-fyhus-hivox +fireeye:xubel-caval-belyx +fireeye:xeter-fygud-lodux +fireeye:xihib-manir-gezox +fireeye:xeril-necum-dokyx +fireeye:xubem-tadag-socox +fireeye:xozeg-bageb-zysox +fireeye:xobim-kiseb-pofix +fireeye:ximos-byked-myfux +fireeye:xisas-ridum-zemox +fireeye:xerem-dafuv-hizyx +fireeye:ximit-pymus-zekyx +fireeye:xuric-ginal-kegax +fireeye:xelig-davek-fulex +fireeye:xebat-sotul-picix +fireeye:xigam-lyfit-denix +fireeye:xubed-sodyb-mepex +fireeye:xuzim-lagur-dadax +fireeye:xoked-hadyk-vuvyx +fireeye:xudim-fifeg-zetex +fireeye:xecoh-depuk-kicax +fireeye:xotan-pokor-pycox +fireeye:xofoz-zisam-melex +fireeye:xotec-viheg-kyfax +fireeye:xeloc-hygyt-budax +fireeye:xomib-pagib-guvex +fireeye:xibaz-tebam-furux +fireeye:xofih-gosol-kekox +fireeye:xotoc-hifeb-futix +fireeye:xuson-zaguh-lakox +fireeye:xibag-gamis-nylax +fireeye:xobov-tizel-fupux +fireeye:xetiz-vinuh-bimix +fireeye:xufof-repim-zetix +fireeye:xorom-dyvuc-hytyx +fireeye:xotab-senup-levux +fireeye:xemar-ludyn-zydux +fireeye:xicif-veryp-rytex +fireeye:xiseh-zorub-bimex +fireeye:xunod-vegun-mivax +fireeye:xiloh-nolef-vamax +fireeye:xofab-higoc-gomax +fireeye:xumif-lubof-kigyx +fireeye:xigez-deruf-vudax +fireeye:xopan-ralol-pisax +fireeye:xemem-kadib-givox +fireeye:xehim-zibon-kegox +fireeye:xipit-sucik-zurix +fireeye:xunah-vociz-rohox +fireeye:xirav-solec-zulux +fireeye:xopep-hupud-ginux +fireeye:xoraz-cecis-cilix +fireeye:xicin-zotep-colex +fireeye:xilom-vidoc-nisox +fireeye:xedak-dacus-nasex +fireeye:xucic-hukip-tizax +fireeye:xukis-lokog-hilyx +fireeye:xeser-hibah-kumex +fireeye:xodav-ketyl-potix +fireeye:xokit-vumed-zocux +fireeye:xikok-kesed-rufix +fireeye:xisod-luhaz-hafux +fireeye:xeval-gudus-samyx +fireeye:xovam-tecac-solix +fireeye:xilos-gizat-ripox +fireeye:xezon-deliv-fynux +fireeye:xuhig-dafus-vikox +fireeye:xonec-sevac-kyrix +fireeye:xefok-zecod-fadyx +fireeye:xohov-cypyf-suzix +fireeye:xuvig-dopog-mokex +fireeye:xidac-cusuc-vacox +fireeye:xogov-zopuz-sizix +fireeye:xirar-pymut-devix +fireeye:xefek-zuhyg-buzix +fireeye:xopil-meroh-nivex +fireeye:xonan-zetug-kimox +fireeye:xigav-romos-tulix +fireeye:xidic-ratis-girox +fireeye:xovif-behoh-matux +fireeye:xorev-vuvuz-pysex +fireeye:xupor-lymyz-pikax +fireeye:xudaz-fyden-cemax +fireeye:xivid-dyrez-sihox +fireeye:xekaf-pudyn-zafax +fireeye:xuzam-piher-bifox +fireeye:xupag-zadiv-gizex +fireeye:xovek-mikih-bosix +fireeye:xopad-zysem-netix +fireeye:xucah-citup-purux +fireeye:xomof-setoc-vuhex +fireeye:xedoc-luzic-luzex +fireeye:xevir-vucad-lumax +fireeye:xupod-sumif-cimex +fireeye:xuhos-nudyp-mamax +fireeye:xigir-sysog-duhox +fireeye:xogip-gygev-somox +fireeye:xikil-gifep-vybox +fireeye:xepol-rydyf-pymyx +fireeye:xefih-lacob-nicex +fireeye:xones-riter-bebox +fireeye:xurik-kodur-visux +fireeye:xicic-dysor-potax +fireeye:xopos-pegep-gybix +fireeye:xeveb-susul-kehox +fireeye:xeser-zaseg-fufyx +fireeye:xumek-ripik-mikix +fireeye:xover-kahoc-musux +fireeye:xunec-gizic-valyx +fireeye:xuvor-nupod-nomox +fireeye:xolav-dabup-gelyx +fireeye:xiveh-tyrib-decex +fireeye:xides-rimyn-hilux +fireeye:xicat-comop-cosix +fireeye:xiret-vilot-fucax +fireeye:xorec-gosuh-pitex +fireeye:xuvim-hucur-dazyx +fireeye:xifeg-nyfor-gudax +fireeye:xefib-hibog-tacyx +fireeye:xuzit-gubut-dahux +fireeye:xicol-dykes-nylix +fireeye:xovob-gadyn-sopox +fireeye:xizav-lilyl-kebox +fireeye:xesac-riceh-livix +fireeye:xumov-hyvaf-cufex +fireeye:xivid-ludev-fepyx +fireeye:xodom-cofur-vizyx +fireeye:xisoc-buhis-radix +fireeye:xisif-pycah-gusyx +fireeye:xofop-luzud-varox +fireeye:xebol-sorir-fyhix +fireeye:xitag-becop-zofex +fireeye:xihih-robob-zedox +fireeye:xuret-bafat-nicyx +fireeye:xokab-bomah-gikux +fireeye:xuger-kopeg-tedax +fireeye:xesiz-rivyb-hyfox +fireeye:xedop-fanyt-hugax +fireeye:xulid-getuz-vakex +fireeye:xehiv-gyvun-nytux +fireeye:xuher-mesak-cuhox +fireeye:xebos-codap-venyx +fireeye:xusek-foruk-copax +fireeye:xumon-rufys-metax +fireeye:xoniz-negyk-lesux +fireeye:xupol-sagir-kypax +fireeye:xikig-lygup-sagux +fireeye:xiben-gonyr-dikax +fireeye:xuteh-hymen-zoryx +fireeye:xovom-fadig-vonex +fireeye:xehit-cyvok-kikux +fireeye:xigit-palek-fovyx +fireeye:xofil-pepas-manex +fireeye:xikon-zyzuh-ragyx +fireeye:xivez-covys-rivux +fireeye:xigid-taryf-zityx +fireeye:xosil-kifal-fuzax +fireeye:xunan-silyp-mefyx +fireeye:xetog-cidyb-cesax +fireeye:xomig-hukyt-zuvix +fireeye:xuzoz-hohud-vymax +fireeye:xuram-pebez-vopex +fireeye:xupor-togat-tokax +fireeye:xibad-pybym-zygux +fireeye:xevof-gyben-diryx +fireeye:xogil-zorod-fofix +fireeye:xudat-bidep-pufex +fireeye:xofeh-beduv-pehux +fireeye:xocon-rorym-sirex +fireeye:xukig-gudyp-vakox +fireeye:xirah-givub-savix +fireeye:xocap-syzor-mapyx +fireeye:xetok-toric-gofix +fireeye:xekeh-malys-gonyx +fireeye:xulap-pyfuk-cycyx +fireeye:xumeg-zymim-kegyx +fireeye:xilod-famub-nydax +fireeye:xugeb-sepit-mobix +fireeye:xugar-fovyh-cukex +fireeye:xusir-lufet-dilax +fireeye:xezik-pifit-bimox +fireeye:xomaz-fizah-depex +fireeye:xolez-lotyf-komux +fireeye:xesig-pozif-cekix +fireeye:xefef-lifes-rokix +fireeye:xibir-kihil-munox +fireeye:xonoz-pyzof-vosux +fireeye:xugap-pavop-horax +fireeye:xinav-vevon-cufix +fireeye:xusep-tefaz-pohox +fireeye:xefis-hadov-ninyx +fireeye:xidam-zyrod-rasox +fireeye:xulad-folyd-rigux +fireeye:xuzil-digys-pivix +fireeye:xonec-cusug-katix +fireeye:xurip-dopip-lopyx +fireeye:xuzom-fefyr-havux +fireeye:xebop-tilav-nusux +fireeye:xugag-pytor-zabox +fireeye:xoced-dypaz-zipix +fireeye:xogom-filyc-padax +fireeye:xozir-pupet-vinax +fireeye:xodev-torum-hemux +fireeye:xocom-sagos-fodox +fireeye:xoped-gakaz-tigex +fireeye:xolid-tucaz-dodix +fireeye:xugab-vagaf-fezix +fireeye:xuzap-neter-dodox +fireeye:xilog-bynyl-sisex +fireeye:xemad-luzyv-rokox +fireeye:xifef-lidas-mypox +fireeye:xomoz-sarer-lisix +fireeye:xumar-katez-hyhyx +fireeye:xivih-debak-huvyx +fireeye:xibam-bacor-zecyx +fireeye:xerel-fapaf-pikox +fireeye:xikot-pylib-bypyx +fireeye:xeces-fulot-tosox +fireeye:xenib-kogyv-zyvox +fireeye:xoceb-vigoz-hydex +fireeye:xohek-pycal-fokyx +fireeye:xevan-mavuf-fazox +fireeye:xofah-fabyv-tapix +fireeye:xetat-gyhez-rynax +fireeye:xovaf-vihuz-besox +fireeye:xukil-zuhed-vulox +fireeye:xific-perod-kifox +fireeye:xurez-pores-magox +fireeye:xevif-vifoz-vapax +fireeye:xolod-sanub-nutax +fireeye:xopel-gitis-rytix +fireeye:xufep-ramur-fupex +fireeye:xezem-siben-cirix +fireeye:xumed-podal-gilox +fireeye:ximin-bozuc-tupax +fireeye:xidep-tepev-harex +fireeye:xobad-zekit-cyrox +fireeye:xeted-dynyk-nufux +fireeye:xehot-nekun-sulix +fireeye:xocen-vucyb-fydex +fireeye:xokon-kucop-kakax +fireeye:xikof-vikyb-fudax +fireeye:xicob-hymip-fafox +fireeye:xugol-zuceh-sycyx +fireeye:xelov-hopuz-libux +fireeye:xofes-kysev-gabyx +fireeye:xutit-fesev-govex +fireeye:xumot-kyvut-kodax +fireeye:xefah-kusec-hylix +fireeye:xozam-ceguf-fotyx +fireeye:xigeg-limyp-fehox +fireeye:xopet-seroz-fypex +fireeye:xerip-mavab-rehyx +fireeye:xirab-rehom-becix +fireeye:xutin-hytac-cyrox +fireeye:xizoh-mysep-robyx +fireeye:xibaf-hynam-lekix +fireeye:xutag-zevuv-begox +fireeye:xehop-luven-hovax +fireeye:xehaf-macyd-kadux +fireeye:xemof-cynim-hubox +fireeye:xitat-cisok-sykux +fireeye:xufim-dytah-lapyx +fireeye:xedor-fytel-hazax +fireeye:xunon-debip-ritix +fireeye:xocov-babyd-bobex +fireeye:xubob-sypyn-munyx +fireeye:xerif-hosub-savox +fireeye:xumag-hacam-bufex +fireeye:xorog-roteg-rucyx +fireeye:xilev-bekop-bimyx +fireeye:xerek-mecal-ranax +fireeye:xunit-redav-locux +fireeye:xekik-mycaf-bagox +fireeye:xokol-fizyg-lovix +fireeye:xicev-buvas-safax +fireeye:ximih-vyneb-subex +fireeye:xebeb-dodoh-sibex +fireeye:xoviv-votag-vinox +fireeye:xobig-sedyc-vysux +fireeye:xutel-zesit-kikex +fireeye:xulap-linos-vedox +fireeye:xicec-nykic-hyzax +fireeye:xuhog-hupis-bihux +fireeye:ximod-hukor-lezix +fireeye:xulop-karev-samux +fireeye:xomac-razep-tehux +fireeye:xutat-todut-sifux +fireeye:xuvom-refaf-tikyx +fireeye:xohig-pivyt-pudax +fireeye:xuceh-barul-cifex +fireeye:xitir-gonel-kubix +fireeye:xunod-rudus-gegox +fireeye:xehoc-pehok-lilax +fireeye:xutan-cyvus-kylax +fireeye:xitic-susaf-hivax +fireeye:xitic-rivyk-rogax +fireeye:xilar-tuzem-humex +fireeye:xubih-venom-dyhix +fireeye:xupid-zucec-bedix +fireeye:xusan-nogon-gubox +fireeye:xizid-bifot-vogyx +fireeye:xizos-lehih-rurix +fireeye:xokid-dimap-rofux +fireeye:xivel-zelem-sevox +fireeye:xemak-fylov-fimix +fireeye:xorob-mimyc-bopix diff --git a/packages/forensics/100/@author.txt b/packages/forensics/100/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/100/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/133/@author.txt b/packages/forensics/133/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/133/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/166/@author.txt b/packages/forensics/166/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/166/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/200/@author.txt b/packages/forensics/200/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/200/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/205/@author.txt b/packages/forensics/205/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/205/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/210/@author.txt b/packages/forensics/210/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/210/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/215/@author.txt b/packages/forensics/215/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/215/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/220/@author.txt b/packages/forensics/220/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/220/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/225/@author.txt b/packages/forensics/225/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/225/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/230/@author.txt b/packages/forensics/230/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/230/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/250/@author.txt b/packages/forensics/250/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/250/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/275/@author.txt b/packages/forensics/275/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/275/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/500/@author.txt b/packages/forensics/500/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/500/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/525/@author.txt b/packages/forensics/525/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/525/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/530/@author.txt b/packages/forensics/530/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/530/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/540/@author.txt b/packages/forensics/540/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/540/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/545/@author.txt b/packages/forensics/545/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/545/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/550/@author.txt b/packages/forensics/550/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/550/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/560/@author.txt b/packages/forensics/560/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/560/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/570/@author.txt b/packages/forensics/570/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/570/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/575/@author.txt b/packages/forensics/575/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/575/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/577/@author.txt b/packages/forensics/577/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/577/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/580/@author.txt b/packages/forensics/580/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/580/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/585/@author.txt b/packages/forensics/585/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/585/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/587/@author.txt b/packages/forensics/587/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/587/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/589/@author.txt b/packages/forensics/589/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/589/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/590/@author.txt b/packages/forensics/590/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/590/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/595/@author.txt b/packages/forensics/595/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/595/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/600/@author.txt b/packages/forensics/600/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/600/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/forensics/650/@author.txt b/packages/forensics/650/@author.txt new file mode 100644 index 0000000..fdedbc7 --- /dev/null +++ b/packages/forensics/650/@author.txt @@ -0,0 +1 @@ +Kelcey Tietjen diff --git a/packages/hackme/100/index.mdwn b/packages/hackme/100/index.mdwn deleted file mode 100644 index b99f752..0000000 --- a/packages/hackme/100/index.mdwn +++ /dev/null @@ -1 +0,0 @@ -There is no key. It is impossible to score 100 points in this category. diff --git a/packages/hackme/100/key b/packages/hackme/100/key deleted file mode 100644 index e69de29..0000000 diff --git a/packages/hackme/200/index.mdwn b/packages/hackme/200/index.mdwn deleted file mode 100644 index b4b4218..0000000 --- a/packages/hackme/200/index.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -The key is "james". Should you claim your points immediately, though? -Go ahead, watch what happens when you do. - diff --git a/packages/hackme/200/key b/packages/hackme/200/key deleted file mode 100644 index dc065e0..0000000 --- a/packages/hackme/200/key +++ /dev/null @@ -1 +0,0 @@ -james diff --git a/packages/hackme/274/index.mdwn b/packages/hackme/274/index.mdwn deleted file mode 100644 index 72dd672..0000000 --- a/packages/hackme/274/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -So was it a good idea to claim your points as soon as possible? -Watch the scoreboard. diff --git a/packages/hackme/274/key b/packages/hackme/274/key deleted file mode 100644 index e69de29..0000000 diff --git a/packages/hackme/300/index.mdwn b/packages/hackme/300/index.mdwn deleted file mode 100644 index bcb3c57..0000000 --- a/packages/hackme/300/index.mdwn +++ /dev/null @@ -1 +0,0 @@ -You're going to have to work harder now. diff --git a/packages/hackme/300/key b/packages/hackme/300/key deleted file mode 100644 index e69de29..0000000 diff --git a/packages/hackme/614/index.mdwn b/packages/hackme/614/index.mdwn deleted file mode 100644 index dc065e0..0000000 --- a/packages/hackme/614/index.mdwn +++ /dev/null @@ -1 +0,0 @@ -james diff --git a/packages/hackme/614/key b/packages/hackme/614/key deleted file mode 100644 index dc065e0..0000000 --- a/packages/hackme/614/key +++ /dev/null @@ -1 +0,0 @@ -james diff --git a/packages/hackme/806/index.mdwn b/packages/hackme/806/index.mdwn deleted file mode 100644 index dd3d17d..0000000 --- a/packages/hackme/806/index.mdwn +++ /dev/null @@ -1 +0,0 @@ -That's all, folks. diff --git a/packages/hackme/806/key b/packages/hackme/806/key deleted file mode 100644 index dd3d17d..0000000 --- a/packages/hackme/806/key +++ /dev/null @@ -1 +0,0 @@ -That's all, folks. diff --git a/packages/hackme/hackme.mk b/packages/hackme/hackme.mk deleted file mode 100644 index 4fe858c..0000000 --- a/packages/hackme/hackme.mk +++ /dev/null @@ -1 +0,0 @@ -$(eval $(call STANDARD_PUZZLE, hackme)) diff --git a/packages/logger/src/Makefile b/packages/logger/src/Makefile index 980cb6d..f895c85 100644 --- a/packages/logger/src/Makefile +++ b/packages/logger/src/Makefile @@ -5,7 +5,7 @@ TARGETS = logger all: build build: $(TARGETS) -logger: logger.o token.o +logger: logger.o arc4.o token.o install: $(TARGETS) install -m 0755 $(TARGETS) $(DESTDIR)/bin diff --git a/packages/logger/src/arc4.c b/packages/logger/src/arc4.c new file mode 120000 index 0000000..4dcde89 --- /dev/null +++ b/packages/logger/src/arc4.c @@ -0,0 +1 @@ +../../../src/arc4.c \ No newline at end of file diff --git a/packages/logger/src/arc4.h b/packages/logger/src/arc4.h new file mode 120000 index 0000000..a5d8c7a --- /dev/null +++ b/packages/logger/src/arc4.h @@ -0,0 +1 @@ +../../../src/arc4.h \ No newline at end of file diff --git a/packages/logger/src/logger.c b/packages/logger/src/logger.c index e8159af..2d47b88 100644 --- a/packages/logger/src/logger.c +++ b/packages/logger/src/logger.c @@ -57,7 +57,7 @@ read_tokens() /* 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])); + len = get_token(token[i], sizeof(token[i]), name, key, sizeof(key)); if ((-1 == len) || (len >= sizeof(token[i]))) abort(); token[i][len] = '\0'; #endif @@ -641,7 +641,11 @@ main(int argc, char *argv[]) } } - sleep(1); + { + struct timespec t = { 1, 0 }; + + nanosleep(&t, NULL); + } } return 0; diff --git a/packages/logger/src/token.c b/packages/logger/src/token.c index f0a9dcd..b64f986 120000 --- a/packages/logger/src/token.c +++ b/packages/logger/src/token.c @@ -1 +1 @@ -../../../include/token.c \ No newline at end of file +../../../src/token.c \ No newline at end of file diff --git a/packages/logger/src/token.h b/packages/logger/src/token.h index 21e62e4..18eaf6f 120000 --- a/packages/logger/src/token.h +++ b/packages/logger/src/token.h @@ -1 +1 @@ -../../../include/token.h \ No newline at end of file +../../../src/token.h \ No newline at end of file diff --git a/packages/mcp/Makefile b/packages/mcp/Makefile deleted file mode 100644 index f46402d..0000000 --- a/packages/mcp/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -SUBDIRS = src -PKGDIR = pkg -PACKAGE = mcp.pkg - -all: package - -package: $(PACKAGE) - -$(PACKAGE): build - mkdir -p $(PKGDIR) - - cp setup $(PKGDIR) - - find bin -not -name '*~' | cpio -p $(PKGDIR) - cp src/in.tokend $(PKGDIR)/bin - cp src/tokencli src/pointscli $(PKGDIR)/bin - cp src/puzzles.cgi $(PKGDIR)/bin - - find service -not -name '*~' -not -name '#*' | cpio -p $(PKGDIR) - - find www -not -name '*~' -not -name '#*' | cpio -p $(PKGDIR) - cp src/puzzler.cgi src/claim.cgi $(PKGDIR)/www - - mksquashfs $(PKGDIR) $(PACKAGE) -all-root -noappend - - -include $(addsuffix /*.mk, $(SUBDIRS)) - -test: build - ./test.sh - -build: $(addsuffix -build, $(SUBDIRS)) -clean: $(addsuffix -clean, $(SUBDIRS)) - rm -rf $(PKGDIR) $(PACKAGE) diff --git a/packages/mcp/bin/new-contest b/packages/mcp/bin/new-contest index 1f56500..f62635d 100755 --- a/packages/mcp/bin/new-contest +++ b/packages/mcp/bin/new-contest @@ -1,6 +1,6 @@ #! /bin/sh -if [ "$1" -ne "-f" ]; then +if [ "$1" != "-f" ]; then echo "Usage: $0 -f" echo echo "Wipes out the current contest. This operation is not" diff --git a/packages/mcp/bin/scoreboard b/packages/mcp/bin/scoreboard index d7d05ab..3522446 100755 --- a/packages/mcp/bin/scoreboard +++ b/packages/mcp/bin/scoreboard @@ -227,7 +227,7 @@ BEGIN { # Print out teams, ranked by points for (j = 0; j < n; j += 1) { if (l[j] == l[j-1]) continue; - if (0 == l[j]) break; + if (0 == l[j]) continue; for (team in teams) { points = points_by_cat_team[cat, team] if (l[j] == points) { diff --git a/packages/mcp/fnord.patch b/packages/mcp/fnord.patch new file mode 100644 index 0000000..73a0436 --- /dev/null +++ b/packages/mcp/fnord.patch @@ -0,0 +1,90 @@ +diff -Naur fnord-1.10-orig//httpd.c fnord-1.10/httpd.c +--- fnord-1.10-orig//httpd.c 2005-08-03 05:32:50.000000000 -0600 ++++ fnord-1.10/httpd.c 2011-03-14 17:05:57.000000000 -0600 +@@ -163,9 +163,8 @@ + + #define MAXHEADERLEN 8192 + +-char* remote_ip; ++char* remote_addr; + #ifdef CGI +-char* remote_port; + char* remote_ident; + #endif + +@@ -186,7 +185,7 @@ + time_t t=time(0); + struct tm* x=localtime(&t); + int l=-(timezone/60); +- buffer_puts(buffer_2,remote_ip?remote_ip:"0.0.0.0"); ++ buffer_puts(buffer_2,remote_addr?remote_addr:"0.0.0.0"); + buffer_puts(buffer_2," - - ["); + + buffer_put2digits(buffer_2,x->tm_mday); +@@ -219,7 +218,7 @@ + buffer_putrange(buffer_2,len); + + #else +- buffer_puts(buffer_2,remote_ip?remote_ip:"0.0.0.0"); ++ buffer_puts(buffer_2,remote_addr?remote_addr:"0.0.0.0"); + buffer_putspace(buffer_2); + buffer_putulong(buffer_2,retcode); + buffer_putspace(buffer_2); +@@ -271,7 +270,6 @@ + "REQUEST_URI=", + "SCRIPT_NAME=", + "REMOTE_ADDR=", +- "REMOTE_PORT=", + "REMOTE_IDENT=", + "HTTP_USER_AGENT=", + "HTTP_COOKIE=", +@@ -337,17 +335,10 @@ + *tmp=0; ++tmp; + + i=7; +- if (remote_ip) { ++ if (remote_addr) { + cgi_env[++i]=tmp; + tmp+=str_copy(tmp,"REMOTE_ADDR="); +- tmp+=str_copy(tmp,remote_ip); +- *tmp=0; ++tmp; +- } +- +- if (remote_port) { +- cgi_env[++i]=tmp; +- tmp+=str_copy(tmp,"REMOTE_PORT="); +- tmp+=str_copy(tmp,remote_port); ++ tmp+=str_copy(tmp,remote_addr); + *tmp=0; ++tmp; + } + +@@ -663,8 +654,9 @@ + static char* mimetype="text/plain"; + + static struct mimeentry { const char* name, *type; } mimetab[] = { +- { "html", "text/html" }, +- { "htm", "text/html" }, ++ { "html", "text/html; charset=utf-8" }, ++ { "htm", "text/html; charset=utf-8" }, ++ { "txt", "text/plain; charset=utf-8" }, + { "css", "text/css" }, + { "dvi", "application/x-dvi" }, + { "ps", "application/postscript" }, +@@ -1060,16 +1052,7 @@ + static void get_ucspi_env(void) { + char* ucspi=getenv("PROTO"); + if (ucspi) { +- char* buf=alloca(str_len(ucspi)+20); +- unsigned int tmp=str_copy(buf,ucspi); +- buf[tmp+str_copy(buf+tmp,"REMOTEIP")]=0; +- remote_ip=getenv(buf); +-#ifdef CGI +- buf[tmp+str_copy(buf+tmp,"REMOTEPORT")]=0; +- remote_port=getenv(buf); +- buf[tmp+str_copy(buf+tmp,"REMOTEINFO")]=0; +- remote_ident=getenv(buf); +-#endif ++ remote_addr=getenv("REMOTEADDR"); + } + } + diff --git a/packages/mcp/mcp.mk b/packages/mcp/mcp.mk index e91d9d8..93e951e 100644 --- a/packages/mcp/mcp.mk +++ b/packages/mcp/mcp.mk @@ -1,13 +1,38 @@ MCP_PKGDIR = $(TARGET)/mcp +MCP_BUILDDIR = $(BUILD)/mcp -mcp-install: mcp-build +MCP_FNORD_VERSION = 1.10 +MCP_FNORD_TARBALL = fnord-$(MCP_FNORD_VERSION).tar.bz2 +MCP_FNORD_TARCACHE = $(CACHE)/$(MCP_FNORD_TARBALL) +MCP_FNORD_URL = http://www.fefe.de/fnord/$(MCP_FNORD_TARBALL) +MCP_FNORD_SRCDIR = $(MCP_BUILDDIR)/fnord-$(MCP_FNORD_VERSION) + +$(MCP_FNORD_TARCACHE): + @ mkdir -p $(@D) + wget -O $@ $(MCP_FNORD_URL) + +mcp-source: $(MCP_BUILDDIR)/source +$(MCP_BUILDDIR)/source: $(MCP_FNORD_TARCACHE) + mkdir -p $(@D) + bzcat $< | (cd $(@D) && tar xf -) + (cd $(@D)/fnord-$(MCP_FNORD_VERSION) && patch -p 1) < packages/mcp/fnord.patch + touch $@ + +mcp-build: $(MCP_BUILDDIR)/build +$(MCP_BUILDDIR)/build: $(MCP_BUILDDIR)/source + $(MAKE) -C packages/mcp/src build + $(MAKE) -C $(MCP_BUILDDIR)/fnord-$(MCP_FNORD_VERSION) DIET= CC=$(CC) fnord-cgi + + +mcp-install: $(MCP_BUILDDIR)/build mkdir -p $(MCP_PKGDIR) $(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/puzzles.cgi $(MCP_PKGDIR)/bin/ + cp $(MCP_BUILDDIR)/fnord-$(MCP_FNORD_VERSION)/fnord-cgi $(MCP_PKGDIR)/bin/ + $(call COPYTREE, packages/mcp/service, $(MCP_PKGDIR)/service) $(call COPYTREE, packages/mcp/tokend.keys, $(MCP_PKGDIR)/tokend.keys) @@ -20,10 +45,7 @@ mcp-test: mcp-build packages/mcp/test.sh mcp-clean: - rm -rf $(MCP_PKGDIR) + rm -rf $(MCP_PKGDIR) $(MCP_BUILDDIR) $(MAKE) -C packages/mcp/src clean -mcp-build: - $(MAKE) -C packages/mcp/src build - PACKAGES += mcp \ No newline at end of file diff --git a/packages/mcp/service/httpd/mathopd.conf b/packages/mcp/service/httpd/mathopd.conf deleted file mode 100644 index 00dcb97..0000000 --- a/packages/mcp/service/httpd/mathopd.conf +++ /dev/null @@ -1,53 +0,0 @@ -Umask 026 - -Log /dev/stdout -ErrorLog /dev/stderr - -User nobody -StayRoot On - -LogFormat { - RemoteAddress - Method - URI - Status - ContentLength - Referer - UserAgent -} - -Tuning { - Timeout 5 - ScriptTimeout 5 -} - -Control { - ScriptUser ctf - - Types { - "text/html; charset=utf-8" { .html } - "text/plain; charset=utf-8" { .txt } - text/css { .css } - image/png { .png } - image/jpeg { .jpg } - image/gif { .gif } - application/javascript { .js } - application/octet-stream { * } - } - Specials { - CGI { .cgi } - } - IndexNames { index.html } -} - -Server { - Address 10.0.0.2 - - Virtual { - AnyHost - Control { - Alias / - Location /var/www - } - } -} diff --git a/packages/mcp/service/httpd/run b/packages/mcp/service/httpd/run index cc59040..899b1c5 100755 --- a/packages/mcp/service/httpd/run +++ b/packages/mcp/service/httpd/run @@ -2,6 +2,8 @@ exec 2>&1 +ip addr add 10.0.0.2/16 label eth0:mcp dev eth0 + install -d /var/www # Link in puzzles and web pages @@ -14,5 +16,8 @@ for d in /opt/*; do fi done -exec mathopd -n -f ./mathopd.conf +mkdir -p sites +cd sites +ln -sf /var/www default +exec tcpsvd -u ctf 10.0.0.2 80 /opt/mcp/bin/fnord-cgi diff --git a/packages/mcp/service/tokend/run b/packages/mcp/service/tokend/run index 692d02f..52860c5 100755 --- a/packages/mcp/service/tokend/run +++ b/packages/mcp/service/tokend/run @@ -2,13 +2,13 @@ exec 2>&1 -ip addr add 10.0.0.2/24 label eth0:mcp dev eth0 +ip addr add 10.0.0.2/16 label eth0:mcp dev eth0 DB=/var/lib/ctf/tokens.db if [ ! -f $DB ]; then # Append any package-provided tokens - cat /opt/*/tokens >$DB 2>/dev/null + cat /opt/*/tokens.txt >$DB 2>/dev/null chown ctf $DB fi diff --git a/packages/mcp/src/Makefile b/packages/mcp/src/Makefile index 02845a2..134ec7c 100644 --- a/packages/mcp/src/Makefile +++ b/packages/mcp/src/Makefile @@ -1,17 +1,12 @@ CFLAGS = -Wall -Werror -TARGETS = in.tokend claim.cgi -TARGETS += puzzler.cgi puzzles.cgi -TARGETS += pointscli mktoken +TARGETS = claim.cgi puzzler.cgi puzzles.cgi +TARGETS += pointscli all: build build: $(TARGETS) -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 -arc4: arc4-main.o arc4.o puzzles.cgi: puzzles.cgi.o common.o claim.cgi: claim.cgi.o common.o diff --git a/packages/mcp/src/arc4.c b/packages/mcp/src/arc4.c deleted file mode 120000 index 0c6a48f..0000000 --- a/packages/mcp/src/arc4.c +++ /dev/null @@ -1 +0,0 @@ -../../../include/arc4.c \ No newline at end of file diff --git a/packages/mcp/src/arc4.h b/packages/mcp/src/arc4.h deleted file mode 120000 index d102bb2..0000000 --- a/packages/mcp/src/arc4.h +++ /dev/null @@ -1 +0,0 @@ -../../../include/arc4.h \ No newline at end of file diff --git a/packages/mcp/src/claim.cgi.c b/packages/mcp/src/claim.cgi.c index a2a45b8..cab9d82 100644 --- a/packages/mcp/src/claim.cgi.c +++ b/packages/mcp/src/claim.cgi.c @@ -5,8 +5,8 @@ int main(int argc, char *argv[]) { - char team[TEAM_MAX] = {0}; - char token[TOKEN_MAX] = {0}; + char team[TEAM_MAX] = {0}; + char token[TOKEN_MAX] = {0}; if (-1 == cgi_init(argv)) { return 0; @@ -30,7 +30,7 @@ main(int argc, char *argv[]) } if (! team_exists(team)) { - cgi_page("No such team", ""); + cgi_result(409, "No such team", "

There is no team with that hash.

"); } /* Any weird characters in token name? */ @@ -38,13 +38,13 @@ main(int argc, char *argv[]) char *p; if ('\0' == token[0]) { - cgi_page("Invalid token", ""); + cgi_result(409, "Must supply token", "

Your request did not contain a k= parameter.

"); } for (p = token; *p; p += 1) { if ((! isalnum(*p)) && (*p != '-') && (*p != ':')) { - cgi_page("Invalid token", ""); + cgi_result(409, "Not a token", "

This token has untokenlike characteristics.

"); } } } @@ -52,31 +52,41 @@ main(int argc, char *argv[]) /* Does the token exist? */ if (! fgrepx(token, state_path("tokens.db"))) { - cgi_page("Token does not exist", ""); + cgi_result(409, "No such token", "

This token has not been issued.

"); } /* Award points */ { - char category[40]; - int i; + char *p = token; + char *q; + char category[40]; + char points_s[40]; + int points; /* Pull category name out of the token */ - for (i = 0; token[i] != ':'; i += 1) { - category[i] = token[i]; + for (q = category; *p && (*p != ':'); p += 1) { + *(q++) = *p; } - category[i] = '\0'; + *q = '\0'; + if (p) p += 1; + + /* Pull point value out of the token (if it has one) */ + for (q = points_s; *p && (*p != ':'); p += 1) { + *(q++) = *p; + } + *q = '\0'; + points = atoi(points_s); + if (0 == points) points = 1; { char line[200]; - my_snprintf(line, sizeof(line), - "%s %s", team, token); - award_and_log_uniquely(team, category, 1, - state_path("claim.db"), line); + my_snprintf(line, sizeof(line), "%s %s", team, token); + award_and_log_uniquely(team, category, points, state_path("claim.db"), line); } } - cgi_page("Point awarded", ""); + cgi_page("Point awarded", "

Congratulations.

"); return 0; } diff --git a/packages/mcp/src/common.c b/packages/mcp/src/common.c index 38d9187..c78006d 100644 --- a/packages/mcp/src/common.c +++ b/packages/mcp/src/common.c @@ -212,6 +212,22 @@ cgi_foot() "\n"); } +void +cgi_result(int code, char *desc, char *fmt, ...) +{ + va_list ap; + + if (is_cgi) { + printf("%d %s\r\n", code, desc); + } + cgi_head(desc); + va_start(ap, fmt); + vprintf(fmt, ap); + va_end(ap); + cgi_foot(); + exit(0); +} + void cgi_page(char *title, char *fmt, ...) { @@ -226,18 +242,9 @@ cgi_page(char *title, char *fmt, ...) } void -cgi_error(char *fmt, ...) +cgi_error(char *text) { - va_list ap; - - printf("500 Internal Error\r\n" - "Content-type: text/plain\r\n" - "\r\n"); - va_start(ap, fmt); - vprintf(fmt, ap); - va_end(ap); - printf("\n"); - exit(0); + cgi_result(500, "Internal error", "

%s

", text); } @@ -267,7 +274,7 @@ fgrepx(char const *needle, char const *filename) break; } else if (EOF == c) { /* End of file */ break; - } else if (('\0' == p) || (*p != c)) { + } else if (('\0' == p) || (*p != (char)c)) { p = needle; /* Discard the rest of the line */ do { @@ -492,11 +499,11 @@ award_and_log_uniquely(char const *team, char const *dbpath, char const *line) { - int fd; + int fd; /* Make sure they haven't already claimed these points */ if (fgrepx(line, dbpath)) { - cgi_page("Already claimed", + cgi_result(409, "Already claimed", "

Your team has already claimed these points.

"); } @@ -526,54 +533,3 @@ award_and_log_uniquely(char const *team, } -/** Compute bubble babble for input buffer. - * - * The generated output will be of length 6*((inlen/2)+1), including the - * trailing NULL. - * - * Test vectors: - * `' (empty string) `xexax' - * `1234567890' `xesef-disof-gytuf-katof-movif-baxux' - * `Pineapple' `xigak-nyryk-humil-bosek-sonax' - */ -static char const consonants[] = "bcdfghklmnprstvz"; -static char const vowels[] = "aeiouy"; - -void -bubblebabble(unsigned char *out, - unsigned char const *in, - const size_t inlen) -{ - size_t pos = 0; - int seed = 1; - size_t i = 0; - - out[pos++] = 'x'; - while (1) { - unsigned char c; - - if (i == inlen) { - out[pos++] = vowels[seed % 6]; - out[pos++] = 'x'; - out[pos++] = vowels[seed / 6]; - break; - } - - c = in[i++]; - out[pos++] = vowels[(((c >> 6) & 3) + seed) % 6]; - out[pos++] = consonants[(c >> 2) & 15]; - out[pos++] = vowels[((c & 3) + (seed / 6)) % 6]; - if (i == inlen) { - break; - } - seed = ((seed * 5) + (c * 7) + in[i]) % 36; - - c = in[i++]; - out[pos++] = consonants[(c >> 4) & 15]; - out[pos++] = '-'; - out[pos++] = consonants[c & 15]; - } - - out[pos++] = 'x'; - out[pos] = '\0'; -} diff --git a/packages/mcp/src/common.h b/packages/mcp/src/common.h index 3697d4a..98432d0 100644 --- a/packages/mcp/src/common.h +++ b/packages/mcp/src/common.h @@ -9,14 +9,13 @@ #define TOKEN_MAX 80 #define itokenlen 5 -#define bubblebabble_len(n) (6*(((n)/2)+1)) - int cgi_init(char *global_argv[]); size_t cgi_item(char *str, size_t maxlen); void cgi_head(char *title); void cgi_foot(); +void cgi_result(int code, char *desc, char *fmt, ...); void cgi_page(char *title, char *fmt, ...); -void cgi_error(char *fmt, ...); +void cgi_error(char *text); int fgrepx(char const *needle, char const *filename); @@ -33,8 +32,5 @@ void award_and_log_uniquely(char const *team, long points, char const *logfile, char const *line); -void bubblebabble(unsigned char *out, - unsigned char const *in, - const size_t inlen); #endif diff --git a/packages/mcp/src/in.tokend.c b/packages/mcp/src/in.tokend.c deleted file mode 100644 index b94183a..0000000 --- a/packages/mcp/src/in.tokend.c +++ /dev/null @@ -1,132 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "common.h" -#include "arc4.h" - -int -main(int argc, char *argv[]) -{ - char category[CAT_MAX]; - size_t categorylen; - char token[TOKEN_MAX]; - size_t tokenlen; - uint8_t key[256]; - size_t keylen; - - /* Read category name. */ - { - ssize_t len; - - len = read(0, category, sizeof(category)); - if (0 >= len) return 0; - for (categorylen = 0; - (categorylen < len) && isalnum(category[categorylen]); - categorylen += 1); - } - - /* Read in that category's key. */ - { - int fd; - int ret; - - fd = open(package_path("mcp/tokend.keys/%.*s", (int)categorylen, category), O_RDONLY); - if (-1 == fd) { - fprintf(stderr, "Open key %.*s: %s\n", - (int)categorylen, category, strerror(errno)); - return 0; - } - - ret = read(fd, &key, sizeof(key)); - if (-1 == ret) { - fprintf(stderr, "Read key %.*s: %s\n", - (int)categorylen, category, strerror(errno)); - return 0; - } - keylen = (size_t)ret; - - close(fd); - } - - /* Send a nonce, expect it back encrypted */ - { - int32_t nonce; - int32_t enonce = 0; - - urandom((char *)&nonce, sizeof(nonce)); - write(1, &nonce, sizeof(nonce)); - arc4_crypt_buffer(key, keylen, (uint8_t *)&nonce, sizeof(nonce)); - read(0, &enonce, sizeof(enonce)); - if (nonce != enonce) { - write(1, ":<", 2); - return 0; - } - } - - /* Create the token. */ - { - unsigned char crap[itokenlen]; - unsigned char digest[bubblebabble_len(itokenlen)]; - - urandom((char *)crap, sizeof(crap)); - - /* Digest some random junk. */ - bubblebabble(digest, (unsigned char *)&crap, itokenlen); - - /* Append digest to category name. */ - tokenlen = (size_t)snprintf(token, sizeof(token), - "%.*s:%s", - (int)categorylen, category, digest); - } - - /* Write that token out now. */ - { - int fd; - int ret; - - do { - fd = open(state_path("tokens.db"), O_WRONLY | O_CREAT, 0666); - if (-1 == fd) break; - - ret = lockf(fd, F_LOCK, 0); - if (-1 == ret) break; - - ret = lseek(fd, 0, SEEK_END); - if (-1 == ret) break; - - ret = write(fd, token, tokenlen); - if (-1 == ret) break; - - ret = write(fd, "\n", 1); - if (-1 == ret) break; - - ret = close(fd); - if (-1 == ret) break; - } while (0); - - if ((-1 == fd) || (-1 == ret)) { - printf("!%s", strerror(errno)); - return 0; - } - } - - /* Encrypt the token. */ - { - arc4_crypt_buffer(key, keylen, (uint8_t *)token, tokenlen); - } - - /* Send it back. If there's an error here, it's okay. Better to have - unclaimed tokens than unclaimable ones. */ - write(1, token, tokenlen); - - return 0; -} diff --git a/packages/mcp/src/md5.c b/packages/mcp/src/md5.c deleted file mode 120000 index b1ccd62..0000000 --- a/packages/mcp/src/md5.c +++ /dev/null @@ -1 +0,0 @@ -../../../include/md5.c \ No newline at end of file diff --git a/packages/mcp/src/md5.h b/packages/mcp/src/md5.h deleted file mode 120000 index b229155..0000000 --- a/packages/mcp/src/md5.h +++ /dev/null @@ -1 +0,0 @@ -../../../include/md5.h \ No newline at end of file diff --git a/packages/mcp/src/mktoken.c b/packages/mcp/src/mktoken.c deleted file mode 100644 index d8790e2..0000000 --- a/packages/mcp/src/mktoken.c +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include -#include "common.h" - -int -main(int argc, char *argv[]) -{ - if (2 != argc) { - fprintf(stderr, "Usage: %s CATEGORY\n", argv[0]); - return EX_USAGE; - } - - /* Create the token. */ - { - unsigned char crap[itokenlen]; - unsigned char digest[bubblebabble_len(itokenlen)]; - - urandom((char *)crap, sizeof(crap)); - - /* Digest some random junk. */ - bubblebabble(digest, (unsigned char *)&crap, itokenlen); - - /* Append digest to category name. */ - printf("%s:%s\n", argv[1], digest); - } - - return 0; -} diff --git a/packages/mcp/src/puzzler.cgi.c b/packages/mcp/src/puzzler.cgi.c index 2fdbe36..fe7ff0e 100644 --- a/packages/mcp/src/puzzler.cgi.c +++ b/packages/mcp/src/puzzler.cgi.c @@ -1,3 +1,4 @@ +#include #include #include #include "common.h" @@ -60,6 +61,12 @@ main(int argc, char *argv[]) char needle[400]; my_snprintf(needle, sizeof(needle), "%ld %s", points, answer); + { + FILE *f = fopen("/tmp/form", "w"); + fprintf(f, "%s\n%s\n", answer, needle); + fclose(f); + } + if (! fgrepx(needle, package_path("%s/answers.txt", category))) { cgi_page("Wrong answer", ""); diff --git a/packages/mcp/src/puzzles.cgi.c b/packages/mcp/src/puzzles.cgi.c index 8edf29d..f7efed1 100644 --- a/packages/mcp/src/puzzles.cgi.c +++ b/packages/mcp/src/puzzles.cgi.c @@ -156,7 +156,7 @@ main(int argc, char *argv[]) printf("
%s
\n", cat); printf("
\n"); for (i = 0; i < ncatpoints; i += 1) { - printf(" %ld\n", + printf(" %ld\n", cat, catpoints[i], catpoints[i]); if (catpoints[i] > maxpoints) break; } diff --git a/packages/mcp/src/src.mk b/packages/mcp/src/src.mk deleted file mode 100644 index bbbe4bf..0000000 --- a/packages/mcp/src/src.mk +++ /dev/null @@ -1,2 +0,0 @@ -src-%: - $(MAKE) -C src $* diff --git a/packages/mcp/tokend.keys/logger b/packages/mcp/tokend.keys/logger deleted file mode 100644 index f11bbd8..0000000 --- a/packages/mcp/tokend.keys/logger +++ /dev/null @@ -1 +0,0 @@ -S*繼7kp \ No newline at end of file diff --git a/packages/mcp/tokend.keys/octopus b/packages/mcp/tokend.keys/octopus deleted file mode 100644 index 8a5f356..0000000 --- a/packages/mcp/tokend.keys/octopus +++ /dev/null @@ -1,2 +0,0 @@ - -'6Y= \ No newline at end of file diff --git a/packages/mcp/tokend.keys/printf b/packages/mcp/tokend.keys/printf deleted file mode 100644 index 6089383..0000000 --- a/packages/mcp/tokend.keys/printf +++ /dev/null @@ -1 +0,0 @@ -I[^,5O \ No newline at end of file diff --git a/packages/mcp/tokend.keys/pwnables b/packages/mcp/tokend.keys/pwnables deleted file mode 100644 index b9f44b7..0000000 --- a/packages/mcp/tokend.keys/pwnables +++ /dev/null @@ -1 +0,0 @@ -t322/0gji \ No newline at end of file diff --git a/packages/mcp/tokend.keys/tanks b/packages/mcp/tokend.keys/tanks deleted file mode 100644 index 15df993..0000000 --- a/packages/mcp/tokend.keys/tanks +++ /dev/null @@ -1 +0,0 @@ -U'0mqp \ No newline at end of file diff --git a/packages/mcp/www/credits.html b/packages/mcp/www/credits.html new file mode 100644 index 0000000..ebbc929 --- /dev/null +++ b/packages/mcp/www/credits.html @@ -0,0 +1,48 @@ + + + + The Credits + + + +

Credits

+ +

Dirtbags Capture the Flag is brought to you by:

+ +
    +
  • The number C
  • +
  • The letters ع and ֆ
  • +
+ +

And by:

+
    +
  • Alex Brugh
  • +
  • Paul Ferrell
  • +
  • Adam Glasgall
  • +
  • Curtis Hash
  • +
  • Aaron McPhall
  • +
  • Erin Ochoa
  • +
  • William Phillips
  • +
  • Danny Quist
  • +
+ +

Parts of this contest were inspired by:

+
    +
  • DC949
  • +
  • Tube Warriors
  • +
  • Bad people from around the world (screw you guys, seriously)
  • +
+ +

Lastly, this contest would not exist were it not for hundreds of + thousands of lines of code from free software authors around the + world, including:

+
    +
  • Busybox and Buildroot
  • +
  • the Linux kernel
  • +
  • dnsmasq
  • +
  • fnord httpd
  • +
  • ngircd
  • +
  • lua
  • +
+ + diff --git a/packages/mcp/www/ctf.css b/packages/mcp/www/ctf.css index 42e9902..c8e571e 100644 --- a/packages/mcp/www/ctf.css +++ b/packages/mcp/www/ctf.css @@ -1,14 +1,36 @@ /* green phosphor: #2a4 */ +/**** Color Scheme ****/ +html { + background: #112 url(smoke.jpg) no-repeat; + background-size: contain; +} + +body, h1:first-child:before { + color: #ddc; +} + +h1, h2, h3 { + color: #1dd; +} + +a { + color: #f80; +} + +a:hover { + color: #112; + background-color: #f80; +} + +.readme, pre { + background-color: #333; +} + /**** document ****/ -html { - background: #112 url(grunge.png) repeat-x; -} - body { font-family: sans-serif; - color: #ddc; padding: 10px; max-width: 700px; } @@ -23,7 +45,6 @@ h1:first-child { } h1:first-child:before { - color: #ddc; letter-spacing: -0.1em; content: "Capture The Flag: "; } @@ -36,27 +57,17 @@ a img { a { text-decoration: underline; - color: #84b; } -a:hover { - color: #2a4; - background: #333; -} - - h1, h2, h3 { - color: #b71; letter-spacing: -0.05em; } .readme { - background-color: #333; margin: 1em; } pre { - background-color: #333; border: solid #ddc 2px; padding: 0.25em; } @@ -123,10 +134,6 @@ nav li + li:before { text-align: center; } -#scoreboard { - background: #112; -} - #scoreboard td { height: 300px; } diff --git a/packages/mcp/www/grunge.png b/packages/mcp/www/grunge.png deleted file mode 100644 index 23e55fb..0000000 Binary files a/packages/mcp/www/grunge.png and /dev/null differ diff --git a/packages/mcp/www/index.html b/packages/mcp/www/index.html index 774e392..0c1d155 100644 --- a/packages/mcp/www/index.html +++ b/packages/mcp/www/index.html @@ -27,7 +27,11 @@

Claim Token

-

Tokens look like foo:xabab-babab-babax.

+

+ If you find a token + (like example:xylep-radar-nanox), submit it here for + a point. +

team hash: @@ -58,5 +62,10 @@ reason, so play nice. + +

+ This event would not be possible without the help of many people. + Thank you, people. +

diff --git a/packages/mcp/www/register.cgi b/packages/mcp/www/register.cgi new file mode 100755 index 0000000..e71c445 --- /dev/null +++ b/packages/mcp/www/register.cgi @@ -0,0 +1,34 @@ +#! /bin/sh -e + +team=$(echo "$QUERY_STRING" | sed -n s'/.*team=\([^&]*\).*/\1/p') +team=$(busybox httpd -d "$team" || echo "$team") + +cat < + + + Team Registration + + + +

Team Registration

+EOF + +if [ ! -w /var/www ] || [ ! -w /var/lib/ctf/teams ]; then + echo "

It looks like the server isn't set up for self-registrations." + echo "Go talk to someone at the head table to register your team.

" +else + echo "

Team name: $team

" + echo -n "
"
+    if /opt/mcp/bin/addteam "$team"; then
+        echo "

Write this hash down. You will use it to claim points.

" + else + echo "Oops, something broke. Better call Neale." + fi +fi +cat < + +EOF diff --git a/packages/mcp/www/register.html b/packages/mcp/www/register.html index b02848d..96257e6 100644 --- a/packages/mcp/www/register.html +++ b/packages/mcp/www/register.html @@ -6,9 +6,14 @@

Team Registration

- +

+ Please register a team for yourself during this training. This + team is just for the training portion; it will not be the team you + play on during the exercise. +

+ - + diff --git a/packages/mcp/www/scoring.html b/packages/mcp/www/scoring.html index 9a4b4d7..a268508 100644 --- a/packages/mcp/www/scoring.html +++ b/packages/mcp/www/scoring.html @@ -36,13 +36,13 @@

-

Tokens

+

Tokens

Tokens are strings redeemable once for a single point each. A token for the "example" category might look like this:

-
example:xenon-codex
+
example:xylep-radar-nanox

Tokens are typically associated with "live" categories, such as a @@ -83,7 +83,7 @@

We want to focus on rewarding technical proficiency, allowing - skilled contestants to prove their worth independant of their + skilled contestants to prove their worth independent of their ability to hit F5 quickly. It is our hope that by providing enough things to work on, quick-moving teams will emerge with more points by solving lots of puzzles, while novice teams get a solid diff --git a/packages/mcp/www/smoke.jpg b/packages/mcp/www/smoke.jpg new file mode 100644 index 0000000..a158c93 Binary files /dev/null and b/packages/mcp/www/smoke.jpg differ diff --git a/packages/mcp/www/state.cgi b/packages/mcp/www/state.cgi new file mode 100755 index 0000000..e09cf58 --- /dev/null +++ b/packages/mcp/www/state.cgi @@ -0,0 +1,6 @@ +#! /bin/sh + +echo 'Content-type: application/octet-stream' +echo + +tar czf - /var/lib/ctf | KEY=crashmaster arc4 diff --git a/packages/mkanswer b/packages/mkanswer new file mode 100755 index 0000000..3a4bd37 --- /dev/null +++ b/packages/mkanswer @@ -0,0 +1,6 @@ +#! /bin/sh + +shuf -n 2 /usr/share/dict/words | while read word; do + echo -n "$word " +done +echo \ No newline at end of file diff --git a/packages/mktokendkey b/packages/mktokendkey index 366b5a9..849d6ff 100755 --- a/packages/mktokendkey +++ b/packages/mktokendkey @@ -1,19 +1,4 @@ #! /bin/sh -if [ $# -lt 1 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then - echo "Usage: $0 CATEGORY" - echo - echo "Creates tokend key for CATEGORY." - exit 1 -fi +dd bs=1 count=16 if=/dev/urandom | hd -puz=$1; shift -cat=${1:-$puz} - -d=$(dirname $0) - -td=$d/mcp/tokend.keys/$cat -echo "Writing new server key to $td" -dd bs=1 count=16 if=/dev/urandom of=$td - -hd $td diff --git a/packages/net-re/.gitignore b/packages/net-re/.gitignore deleted file mode 100644 index b25c15b..0000000 --- a/packages/net-re/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*~ diff --git a/packages/net-re/1/index.mdwn b/packages/net-re/1/index.mdwn deleted file mode 100644 index cc40c76..0000000 --- a/packages/net-re/1/index.mdwn +++ /dev/null @@ -1,95 +0,0 @@ -Decimal -======= - -Decimal (Greek “deca-”, meaning “ten”), or base ten, is the counting -system most people use regularly, consisting of ten digits: - - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 - -To count past nine, one must use the “tens place”, starting by placing a -1 in the “tens place”: - - 10, 11, 12, 13, 14, 15, … - -The presence of a 1 in the “tens place” means “add ten one time”. 2 in -the “tens place” would mean “add ten two times", and so on. The decimal -number: - - 372 - -Reads “three times one hundred, plus seven times ten, plus two”. - -A “hundreds place” and “thousands place” can exist as well, and so on -for any nth digit representing the place for ten times itself n times, -or 10ⁿ. - - -Octal -===== - -Octal (Greek “okta-” meaning “eight”), or base eight, is a method of -counting with only eight digits. In the interest of making it obvious -when a number is octal, all octal numbers on this page will be preceded -by the number “0”. The digits are thus: - - 00, 01, 02, 03, 04, 05, 06, 07 - -Octal features an “eights place”, a “sixty-fours place”, a “five hundred -twelves place”, and so on. Counting from zero to ten in octal would -therefore go like so: - - 00, 01, 02, 03, 04, 05, 06, 07, 010, 011, 012 - -Where “010” means “one times eight” (eight), “011” means “one times -eight plus one” (nine), and “012” means “one times eight plus two” -(ten). - -The octal number: - - 0372 - -Reads “three times sixty-four, plus seven times eight, plus two”, or two -hundred thirty four. - -In general, the nth digit of an octal number represents the place for -eight times itself n times, or 8ⁿ. - - -Hexadecimal -=========== - -Hexadecimal (Greek “hexa-”, meaning “six”; plus “deca-”, meaning ten), -or base sixteen, is a method of counting with sixteen digits (preceded -by “0x” on this page): - - 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, - 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF - -Hexadecimal (or “hex”) features a “sixteens place”, a “two hundred fifty -sixes place”, and so on. Counting from zero to twenty in hex therefore -would go like so: - - 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, - 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, - 0x10, 0x11, 0x12, 0x13, 0x14 - -Where “0xA” means “ten”, “0xB” means “eleven”, “0xF” means “fifteen”, “0x10” -means “one times sixteen”, “0x11” means “one times sixteen plus one”, et -cetera. - -The hexadecimal number: - - 0x372 - -Reads “three times two hundred fifty six, plus seven times sixteen, plus -two”, or eight hundred eighty-two. - - - -Question -======== - -The key for this page is the decimal representation of the following -sum: - - 12 + 072 + 0x5D diff --git a/packages/net-re/1/key b/packages/net-re/1/key deleted file mode 100644 index 9cc2bc3..0000000 --- a/packages/net-re/1/key +++ /dev/null @@ -1 +0,0 @@ -163 diff --git a/packages/net-re/1/summary b/packages/net-re/1/summary deleted file mode 100644 index 78455c4..0000000 --- a/packages/net-re/1/summary +++ /dev/null @@ -1 +0,0 @@ -base math diff --git a/packages/net-re/10/index.mdwn b/packages/net-re/10/index.mdwn deleted file mode 100644 index 8c91b7e..0000000 --- a/packages/net-re/10/index.mdwn +++ /dev/null @@ -1 +0,0 @@ -What was the close price for Exxon-Mobil? diff --git a/packages/net-re/10/key b/packages/net-re/10/key deleted file mode 100644 index a564e04..0000000 --- a/packages/net-re/10/key +++ /dev/null @@ -1 +0,0 @@ -69.35 diff --git a/packages/net-re/10/session.pcap b/packages/net-re/10/session.pcap deleted file mode 100644 index ca71898..0000000 Binary files a/packages/net-re/10/session.pcap and /dev/null differ diff --git a/packages/net-re/10/summary b/packages/net-re/10/summary deleted file mode 100644 index 6589bf3..0000000 --- a/packages/net-re/10/summary +++ /dev/null @@ -1 +0,0 @@ -Examine pcap diff --git a/packages/net-re/100/index.mdwn b/packages/net-re/100/index.mdwn deleted file mode 100644 index 3598a27..0000000 --- a/packages/net-re/100/index.mdwn +++ /dev/null @@ -1,61 +0,0 @@ - 4c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f - 6e7365637465747572206164697069736963696e6720656c69742c207365 - 6420646f20656975736d6f642074656d706f7220696e6369646964756e74 - 207574206c61626f726520657420646f6c6f7265206d61676e6120616c69 - 7175612e20557420656e696d206164206d696e696d2076656e69616d2c20 - 71756973206e6f737472756420657865726369746174696f6e20756c6c61 - 6d636f206c61626f726973206e69736920757420616c6971756970206578 - 20656120636f6d6d6f646f20636f6e7365717561742e2044756973206175 - 746520697275726520646f6c6f7220696e20726570726568656e64657269 - 7420696e20766f6c7570746174652076656c697420657373652063696c6c - 756d20646f6c6f726520657520667567696174206e756c6c612070617269 - 617475722e204578636570746575722073696e74206f6363616563617420 - 637570696461746174206e6f6e2070726f6964656e742c2073756e742069 - 6e2063756c706120717569206f666669636961206465736572756e74206d - 6f6c6c697420616e696d20696420657374206c61626f72756d2e0a4c6f72 - 656d20697073756d20646f6c6f722073697420616d65742c20636f6e7365 - 637465747572206164697069736963696e6720656c69742c207365642064 - 6f20656975736d6f642074656d706f7220696e6369646964756e74207574 - 206c61626f726520657420646f6c6f7265206d61676e6120616c69717561 - 2e20557420656e696d206164206d696e696d2076656e69616d2c20717569 - 73206e6f737472756420657865726369746174696f6e20756c6c616d636f - 206c61626f726973206e69736920757420616c6971756970206578206561 - 20636f6d6d6f646f20636f6e7365717561742e2044756973206175746520 - 697275726520646f6c6f7220696e20726570726568656e64657269742069 - 6e20766f6c7570746174652076656c697420657373652063696c6c756d20 - 646f6c6f726520657520667567696174206e756c6c612070617269617475 - 722e204578636570746575722073696e74206f6363616563617420637570 - 696461746174206e6f6e2070726f6964656e742c2073756e7420696e2063 - 756c706120717569206f666669636961206465736572756e74206d6f6c6c - 697420616e696d20696420657374206c61626f72756d2e0a546865206b65 - 7920697320226368756d6275636b6574222e0a4c6f72656d20697073756d - 20646f6c6f722073697420616d65742c20636f6e73656374657475722061 - 64697069736963696e6720656c69742c2073656420646f20656975736d6f - 642074656d706f7220696e6369646964756e74207574206c61626f726520 - 657420646f6c6f7265206d61676e6120616c697175612e20557420656e69 - 6d206164206d696e696d2076656e69616d2c2071756973206e6f73747275 - 6420657865726369746174696f6e20756c6c616d636f206c61626f726973 - 206e69736920757420616c697175697020657820656120636f6d6d6f646f - 20636f6e7365717561742e2044756973206175746520697275726520646f - 6c6f7220696e20726570726568656e646572697420696e20766f6c757074 - 6174652076656c697420657373652063696c6c756d20646f6c6f72652065 - 7520667567696174206e756c6c612070617269617475722e204578636570 - 746575722073696e74206f6363616563617420637570696461746174206e - 6f6e2070726f6964656e742c2073756e7420696e2063756c706120717569 - 206f666669636961206465736572756e74206d6f6c6c697420616e696d20 - 696420657374206c61626f72756d2e0a4c6f72656d20697073756d20646f - 6c6f722073697420616d65742c20636f6e73656374657475722061646970 - 69736963696e6720656c69742c2073656420646f20656975736d6f642074 - 656d706f7220696e6369646964756e74207574206c61626f726520657420 - 646f6c6f7265206d61676e6120616c697175612e20557420656e696d2061 - 64206d696e696d2076656e69616d2c2071756973206e6f73747275642065 - 7865726369746174696f6e20756c6c616d636f206c61626f726973206e69 - 736920757420616c697175697020657820656120636f6d6d6f646f20636f - 6e7365717561742e2044756973206175746520697275726520646f6c6f72 - 20696e20726570726568656e646572697420696e20766f6c757074617465 - 2076656c697420657373652063696c6c756d20646f6c6f72652065752066 - 7567696174206e756c6c612070617269617475722e204578636570746575 - 722073696e74206f6363616563617420637570696461746174206e6f6e20 - 70726f6964656e742c2073756e7420696e2063756c706120717569206f66 - 6669636961206465736572756e74206d6f6c6c697420616e696d20696420 - 657374206c61626f72756d2e \ No newline at end of file diff --git a/packages/net-re/100/key b/packages/net-re/100/key deleted file mode 100644 index cf47e71..0000000 --- a/packages/net-re/100/key +++ /dev/null @@ -1 +0,0 @@ -chumbucket diff --git a/packages/net-re/100/summary b/packages/net-re/100/summary deleted file mode 100644 index 6f719a8..0000000 --- a/packages/net-re/100/summary +++ /dev/null @@ -1 +0,0 @@ -Hex decode diff --git a/packages/net-re/1000/index.mdwn b/packages/net-re/1000/index.mdwn deleted file mode 100644 index 52b1f57..0000000 --- a/packages/net-re/1000/index.mdwn +++ /dev/null @@ -1,26 +0,0 @@ - 00000000 25 45 05 05 0f 08 0e 43 02 05 00 48 4b 08 0c 4d - 00000010 15 49 49 0b 1f 12 0c 43 0d 03 06 00 00 00 00 52 - 00000020 6b 1d 59 54 5b 5b 54 5e 48 51 49 1d 56 58 44 1c - 00000030 5c 1d 59 54 5b 5b 54 5e 48 51 49 1d 56 58 44 1c - 00000040 5c 2a 6e 28 12 46 1a 0c 18 09 54 50 04 0c 17 55 - 00000050 41 59 0b 1c 46 0b 08 1a 55 0a 1d 4e 0f 45 00 4e - 00000060 14 52 17 0c 0a 00 49 0b 14 1a 1d 4e 0c 45 0d 4e - 00000070 41 43 0b 07 12 03 07 07 55 1b 1d 54 03 45 01 4e - 00000080 13 00 0f 0c 1f 15 49 17 1d 0d 00 2a 0a 17 1c 01 - 00000090 0d 4f 0a 0e 03 14 49 17 1d 0d 1a 00 0a 45 0a 48 - 000000a0 0f 47 08 0c 46 04 10 17 10 42 54 00 3f 0d 1c 52 - 000000b0 04 00 07 08 08 46 0b 06 55 18 06 49 08 0e 00 0d - 000000c0 41 42 11 1d 46 02 06 0d 52 18 54 4c 0e 11 59 55 - 000000d0 09 45 09 63 02 0f 1a 00 1a 19 06 41 0c 00 59 58 - 000000e0 0e 55 4a 49 46 24 10 43 1b 03 03 00 12 0a 0c 01 - 000000f0 00 4c 16 0c 07 02 10 43 1d 0d 02 45 4b 04 15 4d - 00000100 41 54 0c 0c 46 12 06 0c 19 1f 54 59 04 10 59 4f - 00000110 04 45 00 49 12 09 49 00 07 0d 17 4b 61 11 11 44 - 00000120 0c 0e 44 49 2f 12 49 17 14 07 11 53 4b 04 59 4d - 00000130 08 54 10 05 03 46 00 0d 06 05 13 48 1f 45 18 4f - 00000140 05 00 05 49 0a 09 1d 43 1a 0a 54 50 0a 11 10 44 - 00000150 0f 43 01 47 6c 6c 44 4e 58 41 59 0d 46 48 54 0c - 00000160 4c 0d 49 63 6c 32 01 06 55 07 11 59 4b 03 16 53 - 00000170 41 54 0c 00 15 46 19 02 12 09 54 49 18 45 5b 53 - 00000180 14 47 06 10 46 17 1c 02 13 0a 56 2a - 0000018c diff --git a/packages/net-re/1000/key b/packages/net-re/1000/key deleted file mode 100644 index a524544..0000000 --- a/packages/net-re/1000/key +++ /dev/null @@ -1 +0,0 @@ -a difficult key! diff --git a/packages/net-re/1000/summary b/packages/net-re/1000/summary deleted file mode 100644 index f9e29cc..0000000 --- a/packages/net-re/1000/summary +++ /dev/null @@ -1 +0,0 @@ -16-byte xor key, but can be obtained with 1-byte diff --git a/packages/net-re/1200/14b44ef250afd460b42d0947846b306e b/packages/net-re/1200/14b44ef250afd460b42d0947846b306e deleted file mode 100644 index 9b16cb8..0000000 --- a/packages/net-re/1200/14b44ef250afd460b42d0947846b306e +++ /dev/null @@ -1 +0,0 @@ -gd{7W8`p{HW8`g{HW8gG`;HWdD7W׻8g{bW琻8gg{7WԻ8d`p'H 琻8hgGJgp'H 琻8K{WGG;p'H G;p'7 ﻼGhD<,7+ﻼGG`;'7(״8`gp{HW8`gp{HW8`gp{bW׻8`gp{HW׻8g`gp{HW82`;prH ĐGhG`;{7(琻8dp'H ׻NKg {GW׻Gd;p|7WԻDKd;Z{HW琻8Knp'H 8KG`;ps7^琻`;'H 옿7dd;7X琻Dhgdog 7 8`gp{HW8`gp{HW8Jg{HW8`gp{HW8`gpH(GgdgpH(׻8gd`,{(dJ;p7XĐ?h[`pHXGhg H!ddig,{Wdd N ^ n ~ - F: ␏ ␟ / ? O _ o ␡ - -Characters 0x00 through 0x1F and character 0x7F are the so-called -"control characters" and are typically not displayed. - -So, the following sequence of hex values: - - 68 65 6C 6C 6F 20 77 6F 72 6C 64 2E - -when decoded as ASCII yields the string: - - hello world - - -Base 64 -======= - -Base 64 is a map of 6-bit values--0x00 through 0x3F--to ASCII -characters. Here is the Base 64 alphabet: - - 0 1 2 3 - --------- - 0: A Q g w - 1: B R h x - 2: C S i y - 3: D T j z - 4: E U k 0 - 5: F V l 1 - 6: G W m 2 - 7: H X n 3 - 8: I Y o 4 - 9: J Z p 5 - A: K a q 6 - B: L b r 7 - C: M c s 8 - D: N d t 9 - E: O e u + - F: P f v / - -The following sequence of hex values: - - 00 00 12 2F 3C 07 - -when encoded as Base 64 yields the ASCII string: - - AASv8H - - -6-bit values in an 8-bit world -============================== - -Modern computers, almost universally, use an 8-bit byte. Base64 is used -to map an 8-bit byte stream to a set of 64 universally printable -characters. - -In order to do this, the 8-bit *byte* stream must be converted into a -*bit* stream. This bit stream must then be converted into a stream of -6-bit bytes, as in the following figure: - - | 00 | 04 | AF | F0 | 74 | 14 | - | | | | | | | - |000000 00|0000 0100|10 101111|111100 00|0111 0100|00 010100| - | | - |000000|00 0000|0100 10|101111|111100|00 0111|0100 00|010100| - | | | | | | | | | - | 00 | 00 | 12 | 2F | 3C | 07 | 10 | 14 | - -The resulting 6-bit byte stream is then mapped into the ASCII alphabet -given in the previous section, resulting in a "Base64-encoded string": - - AASv8HQU - - -Question -======== - -The key for this page is the decode of this Base64-encoded string: - - Z3JlYXQgam9i diff --git a/packages/net-re/2/key b/packages/net-re/2/key deleted file mode 100644 index c342710..0000000 --- a/packages/net-re/2/key +++ /dev/null @@ -1 +0,0 @@ -great job diff --git a/packages/net-re/2/summary b/packages/net-re/2/summary deleted file mode 100644 index fbcf958..0000000 --- a/packages/net-re/2/summary +++ /dev/null @@ -1 +0,0 @@ -ASCII, Base64 diff --git a/packages/net-re/20/index.mdwn b/packages/net-re/20/index.mdwn deleted file mode 100644 index 20e6ee0..0000000 --- a/packages/net-re/20/index.mdwn +++ /dev/null @@ -1 +0,0 @@ -What sort of creature is Domo's friend? diff --git a/packages/net-re/20/key b/packages/net-re/20/key deleted file mode 100644 index e29af1d..0000000 --- a/packages/net-re/20/key +++ /dev/null @@ -1 +0,0 @@ -squirrel diff --git a/packages/net-re/20/session.pcap b/packages/net-re/20/session.pcap deleted file mode 100644 index 5317aa8..0000000 Binary files a/packages/net-re/20/session.pcap and /dev/null differ diff --git a/packages/net-re/20/summary b/packages/net-re/20/summary deleted file mode 100644 index 8bdff81..0000000 --- a/packages/net-re/20/summary +++ /dev/null @@ -1 +0,0 @@ -Reconstruct image from HTTP in pcap diff --git a/packages/net-re/200/index.mdwn b/packages/net-re/200/index.mdwn deleted file mode 100644 index 6bee4ad..0000000 --- a/packages/net-re/200/index.mdwn +++ /dev/null @@ -1,32 +0,0 @@ - TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQs - IHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFn - bmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRh - dGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2Vx - dWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUg - dmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0 - ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBx - dWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KTG9yZW0gaXBz - dW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBl - aXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVh - LiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxh - bWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlz - IGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNz - ZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQg - b2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNp - YSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KVGhlIGtleSBpcyAicGFydGlj - dWxhdGUiLgpMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNp - bmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRv - bG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQg - ZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9k - byBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZv - bHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVy - LiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGlu - IGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgpM - b3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwg - c2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu - YSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0 - aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1 - YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2 - ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRl - dXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1 - aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLg== diff --git a/packages/net-re/200/key b/packages/net-re/200/key deleted file mode 100644 index a22348b..0000000 --- a/packages/net-re/200/key +++ /dev/null @@ -1 +0,0 @@ -particulate diff --git a/packages/net-re/200/summary b/packages/net-re/200/summary deleted file mode 100644 index 110f15b..0000000 --- a/packages/net-re/200/summary +++ /dev/null @@ -1 +0,0 @@ -Base64 decode diff --git a/packages/net-re/2000/3k.pcap b/packages/net-re/2000/3k.pcap deleted file mode 100644 index 86b4922..0000000 Binary files a/packages/net-re/2000/3k.pcap and /dev/null differ diff --git a/packages/net-re/2000/index.mdwn b/packages/net-re/2000/index.mdwn deleted file mode 100644 index d335971..0000000 --- a/packages/net-re/2000/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -A Covert Channel -================ diff --git a/packages/net-re/2000/key b/packages/net-re/2000/key deleted file mode 100644 index ecb1a5a..0000000 --- a/packages/net-re/2000/key +++ /dev/null @@ -1 +0,0 @@ -obtuse diff --git a/packages/net-re/2000/summary b/packages/net-re/2000/summary deleted file mode 100644 index 1551df5..0000000 --- a/packages/net-re/2000/summary +++ /dev/null @@ -1 +0,0 @@ -Paul's covert channel thingy diff --git a/packages/net-re/250/example.com-1.pcap b/packages/net-re/250/example.com-1.pcap deleted file mode 100644 index e723d98..0000000 Binary files a/packages/net-re/250/example.com-1.pcap and /dev/null differ diff --git a/packages/net-re/250/hint b/packages/net-re/250/hint deleted file mode 100644 index fde89a0..0000000 --- a/packages/net-re/250/hint +++ /dev/null @@ -1,2 +0,0 @@ -strings *pcap | grep alice -or use wireshark and pore through TCP diff --git a/packages/net-re/250/index.mdwn b/packages/net-re/250/index.mdwn deleted file mode 100644 index 6db305c..0000000 --- a/packages/net-re/250/index.mdwn +++ /dev/null @@ -1 +0,0 @@ -What is Alice's email address? \ No newline at end of file diff --git a/packages/net-re/250/key b/packages/net-re/250/key deleted file mode 100644 index 38daa13..0000000 --- a/packages/net-re/250/key +++ /dev/null @@ -1 +0,0 @@ -alice_test@hotmail.com diff --git a/packages/net-re/250/summary b/packages/net-re/250/summary deleted file mode 100644 index f462f52..0000000 --- a/packages/net-re/250/summary +++ /dev/null @@ -1 +0,0 @@ -Pull email out of pcap diff --git a/packages/net-re/25000/b143bbda4bbce4e81ac720a6bbc0d7c6 b/packages/net-re/25000/b143bbda4bbce4e81ac720a6bbc0d7c6 deleted file mode 100644 index cc3e8f8..0000000 Binary files a/packages/net-re/25000/b143bbda4bbce4e81ac720a6bbc0d7c6 and /dev/null differ diff --git a/packages/net-re/25000/hint b/packages/net-re/25000/hint deleted file mode 100644 index ba228fc..0000000 --- a/packages/net-re/25000/hint +++ /dev/null @@ -1 +0,0 @@ -abandon hope diff --git a/packages/net-re/25000/key b/packages/net-re/25000/key deleted file mode 100644 index 84bd5ba..0000000 --- a/packages/net-re/25000/key +++ /dev/null @@ -1 +0,0 @@ -galloping gallimimus diff --git a/packages/net-re/25000/summary b/packages/net-re/25000/summary deleted file mode 100644 index a3a3071..0000000 --- a/packages/net-re/25000/summary +++ /dev/null @@ -1 +0,0 @@ -ICMP tunnel, with xor, multiplexed transfers diff --git a/packages/net-re/3/index.mdwn b/packages/net-re/3/index.mdwn deleted file mode 100644 index d12e396..0000000 --- a/packages/net-re/3/index.mdwn +++ /dev/null @@ -1,136 +0,0 @@ -Identifying Application Protocols -================================= - -The three easiest protocols to identify are FTP, SMTP, and HTTP. These -also happen to be some of the most common protocols in use. - -In these examples, lines either begin with `C:` (client) or `S:` -(server). - - -FTP (control channel only) --------------------------- - - S: 220 ScumFTPD - C: USER anonymous - S: 331 Anonymous login ok, use email address as password - C: PASS joe@example.org - S: 230-Welcome to the FTP server. - S: 230 Anonymous access granted, restrictions apply. - C: PASV - S: 227 Entering Passive Mode (152,46,7,80,196,9). - C: LIST - S: 150 Opening ASCII mode data connection for file list - S: 226 Transfer complete - C: QUIT - S: 221 Goodbye - - -SMTP ----- - - S: 220 mail.example.com ESMTP MushMail 1.3 - C: EHLO bub - S: 250-Hi there - S: 250-VRFY - S: 250 8BITMIME - C: MAIL FROM: bob@example.com - S: 250 Recipient address accepted - C: RCPT TO: alice@example.com - S: 250 Sender accepted - C: DATA - S: 354 End data with \n.\n - C: From: Santa Claus - C: To: Alice - C: Subject: ho ho ho - C: - C: You've been a good girl this year, Alice. - C: . - S: 250 Message accepted for delivery - C: QUIT - S: 221 Goodbye - - -Note here that the `MAIL FROM` is different from the `From:` header -field. `MAIL FROM` and `RCPT TO` are called the “envelope” and are what -the mail server looks at. The `From:` header field is merely advisory, -and can be trivially spoofed! - - -HTTP ----- - - C: GET /path/to/resource.html HTTP/1.1 - C: Host: www.example.com - C: User-Agent: Mozilla/2.0 (Galeon 1.0; Unicos; 2.3) - C: Connection: Close - C: - S: HTTP/1.1 200 OK - S: Server: CERN httpd 1.2 - S: Date: Fri, 22 May 2009 14:34:12 GMT - S: Last-Modified: Wed, 20 May 2009 10:33:42 GMT - S: Content-length: 20 - S: - S: hihi. - -The first line of an HTTP connection consists of: - - METHOD PATH VERSION - -`PATH` is the path to the resource being requested. It usually begins -with `/`, but if the client is trying to use the server as an HTTP -proxy, it will be a full URL. - -`VERSION` is the version of HTTP in use. It always begins with `HTTP/` -and ends with major and minor version numbers, separated by a period. -Many protocols are "HTTP-like", and provide a version beginning with -something other than `HTTP/'. Although they may look like HTTP, they -are not truly HTTP connections. - -`METHOD` is typically either `GET`, `HEAD`, or `POST`, but may also be -`OPTIONS`, `PUT`, `DELETE`, `TRACE`, `CONNECT`, or any number of -extensions. - -The `CONNECT` method is used to proxy traffic through the HTTP server. -Typically this is done by web browsers set up to use HTTP proxies for -HTTPS (HTTP over SSL), but is worth noting since it can also be used by -malware or to skirt firewall policies. For instance: - - CONNECT us.undernet.org:6667 HTTP/1.0 - -Would open an IRC connection to the Undernet IRC network. If your -policies disallow connecting to IRC, this demonstrates a possibly -successful attempt to skirt firewall rules. - - -Question -======== - -Sometimes as an analyst, you only get the first few dozen bytes of a -conversation, and you may not even get an indication of whether the -client or server spoke first. - -You have been given the first line sent in 16 different connections and -asked to determine which warrant further investigation. You need to -rule out things that are clearly not the first line of HTTP, SMTP, or -FTP. - -The answer for this page is the list of protocols *not described on this -page*, ordered from lowest (1) to highest (F). The answer should be of -the form "1,2,3,7,8,A,B,C". - - 1: GET / HTTP/1.1 - 2: +OK example.com server ready - 3: 220 mailrelay.example.com ESMTP Postfix 2.3.3/Bantu - 4: QUERY: //SYSTEMS/5B669A24 - 5: POST /depts/research/beekeeping/survey.php?token=83927400 HTTP/1.1 - 6: NICK rutabaga - 7: HEAD /content/images/ap-5823.jpg HTTP/1.0 - 8: -l jsmith - 9: CONNECT example.com:996 HTTP/1.1 - A: USER robot robot robot :robot - B: EHLO example.com - C: Subject: all-employee notice - D: * OK [CAPABILITY STARTTLS] example.com server Innova ready - E: TRACE / HTTP/1.1 - F: GET / ICAP/1.1 diff --git a/packages/net-re/3/key b/packages/net-re/3/key deleted file mode 100644 index 40de2b7..0000000 --- a/packages/net-re/3/key +++ /dev/null @@ -1,8 +0,0 @@ -2468ABCDF -2468abcdf -2 4 6 8 A B C D F -2 4 6 8 a b c d f -2,4,6,8,A,B,C,D,F -2,4,6,8,a,b,c,d,f -2, 4, 6, 8, A, B, C, D, F -2, 4, 6, 8, a, b, c, d, f diff --git a/packages/net-re/3/summary b/packages/net-re/3/summary deleted file mode 100644 index 8bd2dcb..0000000 --- a/packages/net-re/3/summary +++ /dev/null @@ -1 +0,0 @@ -Application protocols 1 diff --git a/packages/net-re/30/index.mdwn b/packages/net-re/30/index.mdwn deleted file mode 100644 index 9c6fbc3..0000000 --- a/packages/net-re/30/index.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -What middle row is optimium for typing in "Moby Dick"? - -All caps, no spaces. diff --git a/packages/net-re/30/key b/packages/net-re/30/key deleted file mode 100644 index 747323e..0000000 --- a/packages/net-re/30/key +++ /dev/null @@ -1 +0,0 @@ -RSTNFGEAID diff --git a/packages/net-re/30/session.pcap b/packages/net-re/30/session.pcap deleted file mode 100644 index 4d85ff6..0000000 Binary files a/packages/net-re/30/session.pcap and /dev/null differ diff --git a/packages/net-re/30/summary b/packages/net-re/30/summary deleted file mode 100644 index 4ce4a7a..0000000 --- a/packages/net-re/30/summary +++ /dev/null @@ -1 +0,0 @@ -Reconstruct image from FTP in pcap diff --git a/packages/net-re/300/index.mdwn b/packages/net-re/300/index.mdwn deleted file mode 100644 index 126ae0d..0000000 --- a/packages/net-re/300/index.mdwn +++ /dev/null @@ -1,2 +0,0 @@ -What sort of plants does this farm grow? - diff --git a/packages/net-re/300/key b/packages/net-re/300/key deleted file mode 100644 index 68fa8d8..0000000 --- a/packages/net-re/300/key +++ /dev/null @@ -1 +0,0 @@ -pumpkins diff --git a/packages/net-re/300/session.pcap b/packages/net-re/300/session.pcap deleted file mode 100644 index b3eda4e..0000000 Binary files a/packages/net-re/300/session.pcap and /dev/null differ diff --git a/packages/net-re/300/summary b/packages/net-re/300/summary deleted file mode 100644 index 451701c..0000000 --- a/packages/net-re/300/summary +++ /dev/null @@ -1 +0,0 @@ -More pulling things out of pcap diff --git a/packages/net-re/3000/12a18338d10d3a764f8d95e40b244cd2 b/packages/net-re/3000/12a18338d10d3a764f8d95e40b244cd2 deleted file mode 100644 index cbbbd09..0000000 Binary files a/packages/net-re/3000/12a18338d10d3a764f8d95e40b244cd2 and /dev/null differ diff --git a/packages/net-re/3000/key b/packages/net-re/3000/key deleted file mode 100644 index 0d6431b..0000000 --- a/packages/net-re/3000/key +++ /dev/null @@ -1 +0,0 @@ -galactic octopus diff --git a/packages/net-re/3000/summary b/packages/net-re/3000/summary deleted file mode 100644 index 1a3ad16..0000000 --- a/packages/net-re/3000/summary +++ /dev/null @@ -1 +0,0 @@ -ICMP tunnel diff --git a/packages/net-re/4/index.mdwn b/packages/net-re/4/index.mdwn deleted file mode 100644 index 4948b1e..0000000 --- a/packages/net-re/4/index.mdwn +++ /dev/null @@ -1,123 +0,0 @@ -Multipurpose Internet Mail Extensions (MIME) -============================================ - -MIME is a standard to describe the type of content. It is used -extensively by HTTP and email clients to provide details about what sort -of thing is being transferred (for example: a JPEG image, a Zip file, an -HTML page). - -MIME is also used heavily by email clients to encapsulate multiple -objects, through the use of `multipart MIME`, more commonly referred to -as “attachments”. - -When examining an SMTP transaction, an analyst is frequently called upon -to “decode” the MIME part in order to obtain the file that was -transferred. - -The following SMTP transaction features an attachment: - - S: 220 mail.example.com ESMTP MushMail 1.3 - C: EHLO bub - S: 250-Hi there - S: 250-VRFY - S: 250 8BITMIME - C: MAIL FROM: alice@example.com - S: 250 Recipient address accepted - C: RCPT TO: bob@example.com - S: 250 Sender accepted - C: DATA - S: 354 End data with \n.\n - C: From: Alice - C: To: Bob - C: Subject: TPS report - C: MIME-Version: 1.0 - C: Content-Type: multipart/mixed; boundary=arf - C: - C: This is a MIME message. Apparently your software is ancient - C: and is unable to render it properly. Too bad for you. - C: - C: --arf - C: Content-type: text/plain - C: Content-disposition: inline - C: - C: I've attached the TPS report you asked for. - C: --arf - C: Content-type: image/png - C: Content-transfer-encoding: base64 - C: Content-disposition: attachment; filename=key.png - C: - C: iVBORw0KGgoAAAANSUhEUgAAAHEAAAALCAIAAADHpfUgAAAACXBIWXMAAAsT - C: AAALEwEAmpwYAAAAB3RJTUUH2gEOFzovNd+dvwAAAB10RVh0Q29tbWVudABD - C: cmVhdGVkIHdpdGggVGhlIEdJTVDvZCVuAAAAz0lEQVRIx+1Wyw7EIAiUDf// - C: y+6hCTEO4NhqN5s4h8YaGB6CKLXWcrAUn5OC5dBSiojYv5WtiFxrW9ja3WlJ - C: kSSygjCxVibiiWwhD2pFUUdaSTY6Zs09SzY7MHdIbsX1OCLJXUIeV2tYK4zP - C: GDvV+3gaDNxj5JGXA2/r/YGhfIStx+i927O/Quvt7D3D1ErOozy762ikeO3b - C: 93aiGR5XZqpnExkMcBi77iuuaKrs4Olknpzi86tDV2WQGevDbojG8abeX6KF - C: sct58583/x/gCxug/wCTSHakAAAAAElFTkSuQmCC - C: --arf-- - C: . - S: 250 Message accepted for delivery - C: QUIT - S: 221 Goodbye - -The attachment part of this can be easily spotted: it’s the large -Base64-encoded chunk in the bottom half. You can spot the type -(image/png) and the filename (domo.png) in the MIME headers immediately -preceding the block. - -The Base64 text can be copied and pasted into a text editor for -decoding. Save the text to any file you want: this tutorial will use -the filename `key.png.txt`. - - -Easily Decoding Base64 -====================== - -Most Unix systems come pre-installed with several programs that can -decode Base64: uudecode, openssl, perl, and python are all capable of -the task. We will demonstrate Python, since we will be using that -language later in this tutorial, and since it is available on Windows -also. - -After starting Python, we are met with the Python prompt: - - >>> - -We now open the file and read in its contents: - - >>> contents = open('key.png.txt').read() - -The file’s contents are now in the `contents` variable. We can then -Base64 decode the contents: - - >>> import binascii - >>> decode = binascii.a2b_base64(contents) - -And save the decoded contents to a new file, called `key.png`: - - >>> open('key.png', 'wb').write(decode) - -If you are confused by the syntax, don’t worry too much about it. You -can use these four lines as a boilerplate for base64 decoding any file. - - -Some help from Unix -=================== - -Unix (or Cygwin on Windows) features a command called `file` which -encapsulates decades of knowledge about file formats. The `file` -command can be run on arbitrary data to get an initial idea about what -sort of file you have. In our example: - - $ file key.png - key.png: PNG image data, 113 x 11, 8-bit/color RGB, non-interlaced - -This tool is invaluable when analyzing unknown data. - - -Question -======== - -Use the techniques in this page to decode the Base64 attachment used in -the example. When properly decoded, you will have an image that, when -viewed, reveals the key for this page. diff --git a/packages/net-re/4/key b/packages/net-re/4/key deleted file mode 100644 index 15243ae..0000000 --- a/packages/net-re/4/key +++ /dev/null @@ -1 +0,0 @@ -PINHEAD CATASTROPHE diff --git a/packages/net-re/4/summary b/packages/net-re/4/summary deleted file mode 100644 index 1b0bb22..0000000 --- a/packages/net-re/4/summary +++ /dev/null @@ -1 +0,0 @@ -MIME diff --git a/packages/net-re/400/index.mdwn b/packages/net-re/400/index.mdwn deleted file mode 100644 index 43eeca4..0000000 --- a/packages/net-re/400/index.mdwn +++ /dev/null @@ -1 +0,0 @@ -What is Domo in now? diff --git a/packages/net-re/400/key b/packages/net-re/400/key deleted file mode 100644 index 84fa0b7..0000000 --- a/packages/net-re/400/key +++ /dev/null @@ -1 +0,0 @@ -lettuce diff --git a/packages/net-re/400/session.pcap b/packages/net-re/400/session.pcap deleted file mode 100644 index 72e7884..0000000 Binary files a/packages/net-re/400/session.pcap and /dev/null differ diff --git a/packages/net-re/400/summary b/packages/net-re/400/summary deleted file mode 100644 index 9e92365..0000000 --- a/packages/net-re/400/summary +++ /dev/null @@ -1 +0,0 @@ -Still more pulling things out of pcap diff --git a/packages/net-re/4000/e464f161483b4a2fd8b690a98932b703 b/packages/net-re/4000/e464f161483b4a2fd8b690a98932b703 deleted file mode 100644 index 5166f67..0000000 Binary files a/packages/net-re/4000/e464f161483b4a2fd8b690a98932b703 and /dev/null differ diff --git a/packages/net-re/4000/key b/packages/net-re/4000/key deleted file mode 100644 index f9982e8..0000000 --- a/packages/net-re/4000/key +++ /dev/null @@ -1 +0,0 @@ -gaucho moped fleet diff --git a/packages/net-re/5/example1.pcap b/packages/net-re/5/example1.pcap deleted file mode 100644 index ca71898..0000000 Binary files a/packages/net-re/5/example1.pcap and /dev/null differ diff --git a/packages/net-re/5/index.mdwn b/packages/net-re/5/index.mdwn deleted file mode 100644 index 2162973..0000000 --- a/packages/net-re/5/index.mdwn +++ /dev/null @@ -1,92 +0,0 @@ -PCAP files -========== - -When packets are captured off of a network, they are typically written -to PCAP (Packet CAPture) files. These files contain some information -about the device used to do the capture, and a list of packets that were -captured along with what precise time they were captured. - -PCAP files are invaluable in network reverse engineering. Without -packet capture, all you can usually do is speculate. It's like the -difference between looking at clues at the scene of the crime, and -having a videotape from cameras providing video at every angle. - -With full packet capture (capture of all inbound and outbound traffic to -a network), it is sometimes even possible to write *protocol decoders*, -which can be used to show exactly what information went back and forth, -at what times. This ability is of extremely high value in any sort of -forensic investigation. - - -Wireshark ---------- - -Wireshark is a graphical PCAP viewing tool for Unix, Windows, or MacOS. -It features built-in protocol decoders for many standard protocols, -powerful filters for examining captures, statistical tools, and much -more. It is capable of capturing packets on its own, and reading and -writing PCAP files. - -Let’s load up Wireshark. - -![Wireshark’s Startup](ws-start.png) - -We can now open [an example pcap file](example1.pcap) with “File -> -Open”. After loading, we will see Wireshark’s 3-panel display: - -![Loaded file](ws-opened.png) - -The top panel shows a list of frames (packets). The middle panel shows -information about the currently-selected frame, and the bottom panel -shows a hex dump of the frame. We can click on one of the white -triangles to expand information about an aspect of the frame, and by -highlighting any line in the second panel, the third panel will -highlight that part of the hex dump: - -![Examining a frame](ws-examine.png) - -We can also right-click on a frame in the top panel for a drop-down menu -of options. We will focus on the “follow TCP stream” option. - -![Follow a stream](ws-follow.png) - -This opens up a new window in which both sides of the TCP stream are -reassembled from the individual frames: - -![Followed stream](ws-stream.png) - -This text can be copied and pasted into a text editor or a binary -editor as a means to quickly extract payloads like attachments or -transferred files. - - -Wireshark’s weakness, and `tcpflow` ------------------------------------ - -Wireshark’s TCP reassembly routines have bugs. Sometimes, stream -reassembly is incomplete, even though all the frames are present. - -Under Unix (or Cygwin in Windows), a program called `tcpflow` can do -much more reliable--not to mention quick--reassembly of TCP sessions: - - $ ls - example1.pcap - $ tcpflow -r example1.pcap - $ ls - 106.086.094.175.06063-239.201.176.004.65167 - 239.201.176.004.65167-106.086.094.175.06063 - example1.pcap - $ - -`tcpflow` reassembles each side of a connection, which is usually all -you want anyway. This has reassembled into the “106.86.94.175 side” and -the “239.201.176.4 side”; each file contains what the left IP sent to -the right IP. - - -Question -======== - -Use Wireshark or `tcpflow` to extract the TCP stream from [this packet -capture](key.pcap). Then, using techniques from previous sections, -decode the payload. View it to find the key for this page. diff --git a/packages/net-re/5/key b/packages/net-re/5/key deleted file mode 100644 index 2dfaad7..0000000 --- a/packages/net-re/5/key +++ /dev/null @@ -1 +0,0 @@ -fishsticks diff --git a/packages/net-re/5/key.pcap b/packages/net-re/5/key.pcap deleted file mode 100644 index c3305df..0000000 Binary files a/packages/net-re/5/key.pcap and /dev/null differ diff --git a/packages/net-re/5/summary b/packages/net-re/5/summary deleted file mode 100644 index 885d3ee..0000000 --- a/packages/net-re/5/summary +++ /dev/null @@ -1 +0,0 @@ -PCAP files and Wireshark diff --git a/packages/net-re/5/ws-examine.png b/packages/net-re/5/ws-examine.png deleted file mode 100644 index d5a7c04..0000000 Binary files a/packages/net-re/5/ws-examine.png and /dev/null differ diff --git a/packages/net-re/5/ws-follow.png b/packages/net-re/5/ws-follow.png deleted file mode 100644 index 2e0f309..0000000 Binary files a/packages/net-re/5/ws-follow.png and /dev/null differ diff --git a/packages/net-re/5/ws-opened.png b/packages/net-re/5/ws-opened.png deleted file mode 100644 index 64c777f..0000000 Binary files a/packages/net-re/5/ws-opened.png and /dev/null differ diff --git a/packages/net-re/5/ws-start.png b/packages/net-re/5/ws-start.png deleted file mode 100644 index 9674794..0000000 Binary files a/packages/net-re/5/ws-start.png and /dev/null differ diff --git a/packages/net-re/5/ws-stream.png b/packages/net-re/5/ws-stream.png deleted file mode 100644 index a2fec96..0000000 Binary files a/packages/net-re/5/ws-stream.png and /dev/null differ diff --git a/packages/net-re/5000/53127bca7fed4875920675c2c9e14597 b/packages/net-re/5000/53127bca7fed4875920675c2c9e14597 deleted file mode 100644 index 0afde20..0000000 Binary files a/packages/net-re/5000/53127bca7fed4875920675c2c9e14597 and /dev/null differ diff --git a/packages/net-re/5000/key b/packages/net-re/5000/key deleted file mode 100644 index 971b5d9..0000000 --- a/packages/net-re/5000/key +++ /dev/null @@ -1 +0,0 @@ -miniature commodore exercise diff --git a/packages/net-re/5000/summary b/packages/net-re/5000/summary deleted file mode 100644 index 71febf3..0000000 --- a/packages/net-re/5000/summary +++ /dev/null @@ -1 +0,0 @@ -ICMP tunnel, with xor diff --git a/packages/net-re/6/index.mdwn b/packages/net-re/6/index.mdwn deleted file mode 100644 index 24531b9..0000000 --- a/packages/net-re/6/index.mdwn +++ /dev/null @@ -1,87 +0,0 @@ -More Application Protocols -========================== - -Several popular application-layer protocols are what's referred to as -“binary protocols”, meaning their communications are not easily readable -by humans. They are still readable, though, if you know how to read -them. - - -Secure Shell (SSH) ------------------- - -Although SSH is a binary protocol, the first message sent by both client -and server is typically an ASCII banner announcing the version: - - S: SSH-1.99-OpenSSH_5.1p1 Debian-5 - C: SSH-2.0-OpenSSH_3.9p1 - -In SSH, the server speaks first. - - - -Transport Layer Security (TLS) ------------------------------- - -TLS (formerly known as Secure Sockets Layer or SSL) is a protocol for -encrypting communications over TCP. While the contents of an SSL -session are encrypted, we can at least identify it as such by looking at -the beginning few bytes: - -

-
Hex
-
C: 16 03 01 00 8a 01 00 01 00 00 86 03 -01
-S: 16 03 01 00 4a 02 00 00 46 03 -01
-
ASCII
-
C: ^V^C^A^@\e212^A^@^A^@^@\e206^C^A
-S: ^V^C^A^@\e112^B^@^@\e106^C^A
-
- -The primary indicator of SSL is that both sides of the conversation send -hex value 0x16 (`^V`) as their first byte. A secondary indicator is a -repeated version number (0x03 0x01). - -In TLS, the client speaks first. - - - -Domain Name Service (DNS) -------------------------- - -DNS, a very frequently-occuring protocol, can be identified by the -combination of its port (53) and its typical payload. Examples follow: - -
-
Hex
-
3a fb 01 00 00 01 00 00 00 00 00 00 07 65 78 61 6d 70 6c -65 03 63 6f 6d 00
-
ASCII
-
H\e373^A^@^@^A^@^@^@^@^@^@^Gexample^Ccom^A^@ -
- -The first highlighted part, with the *opcode* (1, an “A record request”, -which asks for an IP given a name), and the name to be resolved -(example.com). - -The name is encoded by preceding it by a byte count, and then than many -bytes. Breaking this name apart, we can see: - - \x07 “example” - \x03 “com” - \x00 - -The protocol is decoded by first reading in the length, then that number -of bytes. This continues until a length of 0 is encountered. This -method of encoding strings is very common in binary protocols. - - - -Question -======== - -The following is an extract of a DNS packet. What does this decode to? - - 087768617465766572076578616d706c65036e657400 - diff --git a/packages/net-re/6/key b/packages/net-re/6/key deleted file mode 100644 index 86e6494..0000000 --- a/packages/net-re/6/key +++ /dev/null @@ -1 +0,0 @@ -whatever.example.net diff --git a/packages/net-re/6/summary b/packages/net-re/6/summary deleted file mode 100644 index e30643b..0000000 --- a/packages/net-re/6/summary +++ /dev/null @@ -1 +0,0 @@ -Application protocols 2 diff --git a/packages/net-re/7/index.mdwn b/packages/net-re/7/index.mdwn deleted file mode 100644 index 3ee8d17..0000000 --- a/packages/net-re/7/index.mdwn +++ /dev/null @@ -1,210 +0,0 @@ -More Binary Protocols -===================== - -The previous page introduced you to decoding binary protocols by showing -how DNS encodes text. We will now examine Ethernet, IP, and TCP, to -better understand binary protocols. - -Generally, you will use tools like wireshark or tcpdump to decode IP and -TCP, but understanding how these work will help you decode other unknown -binary protocols and file formats in the future. - -In this page, we will dissect the following captured network frame: - - 00 11 bc 56 5f 00 00 01 e8 13 0c 89 08 00 45 00 - 00 3c 13 b3 36 3a 3f 06 13 be 6a 56 5e af ef c9 - b0 04 17 af 00 50 cf 16 e8 db 00 00 00 00 a0 02 - 16 d0 ec 87 00 00 02 04 05 b4 04 02 08 0a 93 40 - fb 68 00 00 00 00 01 03 03 07 - - -Octets ------- - -This page introduces the new term “octet” to refer to 8 bits. The words -“octet” and “byte” are usually interchangeable, but in some cases a byte -may be 7 bits, 6 bits, 16 bits, or something else. Networking documents -usually refer to “octets” in order to avoid any confusion about the -number of bits. - - -Ethernet --------- - -Ethernet consists of: - -* Destination address (6 octets) -* Source address (6 octets) -* EtherType (2 octets) -* Data -* CRC Checksum (4 octets) - -Let’s examine the first 14 octets of our captured ethernet frame: - - 00 11 bc 56 5f 00 00 01 e8 13 0c 89 08 00 - -This can be broken down into the two 6-octet addresses and the EtherType: - - dst: 00:11:bc:56:5f:00 - src: 00:01:e8:13:0c:89 - typ: 0800 - -The destination and source should be recognizable as “MAC addresses”. -An EtherType of 0x0800 indicates the data is an IPv4 packet. Most -frames you encounter will have an EtherType of 0x0800. - - -Internet Protocol (IP version 4) --------------------------------- - -IP introduces to us the notion of 4-bit and 13-bit integers. The -following chart from RFC 971 shows the fields of an IP header. The -numbers at the top are the *bit* offset of each field. - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |Version| IHL |Type of Service| Total Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Identification |Flags| Fragment Offset | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Time to Live | Protocol | Header Checksum | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Source Address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Destination Address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Options | Padding | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - -The next few octets of our network frame are: - - __ __ __ __ __ __ __ __ __ __ __ __ __ __ 45 00 - 00 3c 13 b3 36 3a 3f 06 13 be 6a 56 5e af ef c9 - b0 04 17 af 00 50 cf 16 e8 db 00 00 - -Let’s begin to break this down. The first two fields are 4-bit -integers: half-octets, also called nybbles (because they are half a -byte). These are easy to extract from hex, since one hex digit is -exactly 4 bits. Similarly, one octet is 8 bits, and two hex digits. -Two octets is 16 bits, and four hex digits. - - Version: 0x4 - IHL: 0x4 - TOS: 0x00 - Length: 0x003c - ID: 0x13b3 - -Leaving our undecoded snippet as follows: - - __ __ __ __ 36 3a 3f 06 13 be 6a 56 5e af ef c9 - b0 04 17 af 00 50 cf 16 e8 db 00 00 - -The next field, “Flags”, is a *3-bit* field, leaving 13 bits for -“Fragment Offset”. Let’s look at the next 16 bits: - - 3 6 3 A - 0011 0110 0011 1010 - -Now let’s split that up after the first three bits: - - 1 1 6 3 A - 001 1 0110 0011 1010 - -Therefore, our first three bits are the hex value bits are the hex value -`0x1`, and the remaining 16 bits are the hex value `0x163A`. - - Flags: 0x1 - Fragment Offset: 0x163A - -The next few fields are relatively simple: - - TTL: 0x3F - Protocol: 0x06 - Header Checksum: 0x13BE - -Now our snippet is: - - __ __ __ __ __ __ __ __ __ __ 6a 56 5e af ef c9 - b0 04 17 af 00 50 cf 16 e8 db 00 00 - -Finally, we get to the IP addresses: - - Src: 6a.56.5e.af (106.86.94.175) - Dst: ef.c9.b0.04 (239.201.176.4) - -We have now decoded 20 octets, or 4 words. The IHL field contains the -length of the IP header in words. Since IHL in this frame is 4, this IP -header has no options, and we are done decoding it. All remaining data -belongs to the TCP protocol (protocol 6). - - -Transmission Control Protocol (TCP) ------------------------------------ - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Source Port | Destination Port | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Sequence Number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Acknowledgment Number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Data | |U|A|P|R|S|F| | - | Offset| Reserved |R|C|S|S|Y|I| Window | - | | |G|K|H|T|N|N| | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Checksum | Urgent Pointer | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Options | Padding | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | data | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - -After parsing the Ethernet and IP headers, our frame’s unparsed octets -are: - - __ __ 17 af 00 50 cf 16 e8 db 00 00 00 00 a0 02 - 16 d0 ec 87 00 00 02 04 05 b4 04 02 08 0a 93 40 - fb 68 00 00 00 00 01 03 03 07 - -The first 4 fields are decoded just like previous fields: - - Src: 0x17AF (6063) - Dst: 0x0050 (80) - Seq: 0xcf16e8db - Ack: 0x00000000 - -We can now examine the next 2 octets to extract Data Offset and the -flags: - - a 0 0 2 - 1000 0000 0000 0010 - offs|reserv UA PRSF - RC SSYI - GK HTNN - -Decoding to: - - Data Offset: 0xA - Flags: SYN - -Then, carrying on: - - Window: 0x16D0 - Checksum: 0xEC87 - Urgent: 0x0000 - -There follows 20 bytes of options, and no data. - - -Question -======== - -The key for this page is the source IP in the following frame: - - 00 11 bc 56 5f 00 00 01 e8 13 0c 89 08 00 45 00 - 00 2c 00 00 40 00 3d 06 aa 51 3c 00 0d 41 4d 01 - 08 30 c6 d6 d2 e6 06 57 7b 2d 00 76 d2 c9 60 12 - 16 d0 84 c5 00 00 02 04 05 b4 00 00 diff --git a/packages/net-re/7/key b/packages/net-re/7/key deleted file mode 100644 index c6faf04..0000000 --- a/packages/net-re/7/key +++ /dev/null @@ -1 +0,0 @@ -60.0.13.65 diff --git a/packages/net-re/7/summary b/packages/net-re/7/summary deleted file mode 100644 index 8c3efbf..0000000 --- a/packages/net-re/7/summary +++ /dev/null @@ -1 +0,0 @@ -IP, TCP diff --git a/packages/net-re/700/index.mdwn b/packages/net-re/700/index.mdwn deleted file mode 100644 index 02b218f..0000000 --- a/packages/net-re/700/index.mdwn +++ /dev/null @@ -1,32 +0,0 @@ - ZkVYT0cKQ1pZX0cKTkVGRVgKWUNeCktHT14GCklFRFlPSV5PXl9YCktOQ1pDWUNJQ0RNCk9GQ14G - CllPTgpORQpPQ19ZR0VOCl5PR1pFWApDRElDTkNOX0ReCl9eCkZLSEVYTwpPXgpORUZFWE8KR0tN - REsKS0ZDW19LBAp/XgpPRENHCktOCkdDRENHClxPRENLRwYKW19DWQpERVleWF9OCk9ST1hJQ15L - XkNFRApfRkZLR0lFCkZLSEVYQ1kKRENZQwpfXgpLRkNbX0NaCk9SCk9LCklFR0dFTkUKSUVEWU9b - X0teBApuX0NZCktfXk8KQ1hfWE8KTkVGRVgKQ0QKWE9aWE9CT0ROT1hDXgpDRApcRUZfWl5LXk8K - XE9GQ14KT1lZTwpJQ0ZGX0cKTkVGRVhPCk9fCkxfTUNLXgpEX0ZGSwpaS1hDS15fWAQKb1JJT1pe - T19YCllDRF4KRUlJS09JS14KSV9aQ05LXkteCkRFRApaWEVDTk9EXgYKWV9EXgpDRApJX0ZaSwpb - X0MKRUxMQ0lDSwpOT1lPWF9EXgpHRUZGQ14KS0RDRwpDTgpPWV4KRktIRVhfRwQgZkVYT0cKQ1pZ - X0cKTkVGRVgKWUNeCktHT14GCklFRFlPSV5PXl9YCktOQ1pDWUNJQ0RNCk9GQ14GCllPTgpORQpP - Q19ZR0VOCl5PR1pFWApDRElDTkNOX0ReCl9eCkZLSEVYTwpPXgpORUZFWE8KR0tNREsKS0ZDW19L - BAp/XgpPRENHCktOCkdDRENHClxPRENLRwYKW19DWQpERVleWF9OCk9ST1hJQ15LXkNFRApfRkZL - R0lFCkZLSEVYQ1kKRENZQwpfXgpLRkNbX0NaCk9SCk9LCklFR0dFTkUKSUVEWU9bX0teBApuX0NZ - CktfXk8KQ1hfWE8KTkVGRVgKQ0QKWE9aWE9CT0ROT1hDXgpDRApcRUZfWl5LXk8KXE9GQ14KT1lZ - TwpJQ0ZGX0cKTkVGRVhPCk9fCkxfTUNLXgpEX0ZGSwpaS1hDS15fWAQKb1JJT1peT19YCllDRF4K - RUlJS09JS14KSV9aQ05LXkteCkRFRApaWEVDTk9EXgYKWV9EXgpDRApJX0ZaSwpbX0MKRUxMQ0lD - SwpOT1lPWF9EXgpHRUZGQ14KS0RDRwpDTgpPWV4KRktIRVhfRwQgfkJPCkFPUwpDWQoITENSS15P - ClhLWV5PWENQTwgEIGZFWE9HCkNaWV9HCk5FRkVYCllDXgpLR09eBgpJRURZT0leT15fWApLTkNa - Q1lDSUNETQpPRkNeBgpZT04KTkUKT0NfWUdFTgpeT0daRVgKQ0RJQ05DTl9EXgpfXgpGS0hFWE8K - T14KTkVGRVhPCkdLTURLCktGQ1tfSwQKf14KT0RDRwpLTgpHQ0RDRwpcT0RDS0cGCltfQ1kKREVZ - XlhfTgpPUk9YSUNeS15DRUQKX0ZGS0dJRQpGS0hFWENZCkRDWUMKX14KS0ZDW19DWgpPUgpPSwpJ - RUdHRU5FCklFRFlPW19LXgQKbl9DWQpLX15PCkNYX1hPCk5FRkVYCkNEClhPWlhPQk9ETk9YQ14K - Q0QKXEVGX1peS15PClxPRkNeCk9ZWU8KSUNGRl9HCk5FRkVYTwpPXwpMX01DS14KRF9GRksKWktY - Q0teX1gECm9SSU9aXk9fWApZQ0ReCkVJSUtPSUteCklfWkNOS15LXgpERUQKWlhFQ05PRF4GCllf - RF4KQ0QKSV9GWksKW19DCkVMTENJQ0sKTk9ZT1hfRF4KR0VGRkNeCktEQ0cKQ04KT1leCkZLSEVY - X0cEIGZFWE9HCkNaWV9HCk5FRkVYCllDXgpLR09eBgpJRURZT0leT15fWApLTkNaQ1lDSUNETQpP - RkNeBgpZT04KTkUKT0NfWUdFTgpeT0daRVgKQ0RJQ05DTl9EXgpfXgpGS0hFWE8KT14KTkVGRVhP - CkdLTURLCktGQ1tfSwQKf14KT0RDRwpLTgpHQ0RDRwpcT0RDS0cGCltfQ1kKREVZXlhfTgpPUk9Y - SUNeS15DRUQKX0ZGS0dJRQpGS0hFWENZCkRDWUMKX14KS0ZDW19DWgpPUgpPSwpJRUdHRU5FCklF - RFlPW19LXgQKbl9DWQpLX15PCkNYX1hPCk5FRkVYCkNEClhPWlhPQk9ETk9YQ14KQ0QKXEVGX1pe - S15PClxPRkNeCk9ZWU8KSUNGRl9HCk5FRkVYTwpPXwpMX01DS14KRF9GRksKWktYQ0teX1gECm9S - SU9aXk9fWApZQ0ReCkVJSUtPSUteCklfWkNOS15LXgpERUQKWlhFQ05PRF4GCllfRF4KQ0QKSV9G - WksKW19DCkVMTENJQ0sKTk9ZT1hfRF4KR0VGRkNeCktEQ0cKQ04KT1leCkZLSEVYX0cE diff --git a/packages/net-re/700/key b/packages/net-re/700/key deleted file mode 100644 index 06796b9..0000000 --- a/packages/net-re/700/key +++ /dev/null @@ -1 +0,0 @@ -fixate rasterize diff --git a/packages/net-re/700/summary b/packages/net-re/700/summary deleted file mode 100644 index 9508eab..0000000 --- a/packages/net-re/700/summary +++ /dev/null @@ -1 +0,0 @@ -Base64, then xor diff --git a/packages/net-re/8/index.mdwn b/packages/net-re/8/index.mdwn deleted file mode 100644 index 4444336..0000000 --- a/packages/net-re/8/index.mdwn +++ /dev/null @@ -1,172 +0,0 @@ -XOR Masks -========= - -Exclusive or (XOR, ⊕) is the binary operation “one or the other but not -both”. The following table demonstrates how a binary XOR works: - - p q p⊕q - --------- - 0 0 0 - 0 1 1 - 1 0 1 - 1 1 0 - -To XOR two multi-bit numbers, one must simply XOR each bit individually: - - 11110000 - ⊕ 10101010 - ========== - 01011010 - - -Reversing XOR -------------- - -XOR has the peculiar property that `(p⊕q)⊕q = p` for any value of `p` or `q`: - - p q p⊕q (p⊕q)⊕q - ------------------ - 0 0 0 0 - 0 1 1 0 - 1 0 1 1 - 1 1 0 1 - -This also works for multi-bit numbers: - - 11110000 (0xF0) - ⊕ 10101010 (0xAA) - ========== - 01011010 (0x9A) - - 01011010 (0x9A) - ⊕ 10101010 (0xAA) - ========== - 11110000 (0xF0) - - -XOR in encryption ------------------ - -XOR is used extensively in many encryption algorithms. One reason it is -popular is because it is easy to implement in hardware, since there is -no possibility for overflow or underflow, there are no “carry” bits as -in addition, and XOR is one of the basic logic gates used in -electronics. For these reasons, it is also one of the quickest -operations most CPUs can carry out. - -One of the most basic ways to use XOR in encryption is to XOR the -plaintext (the thing to be encrypted) against the key: - - ATTACK AT DAWN - ⊕ keykeykeykeyke - ================ - *1-*&2K$-K!8<+ - -Because of the reversible nature of XOR, the same key can be applied to -decrypt the ciphertext: - - *1-*&2K$-K!8<+ - ⊕ keykeykeykeyke - ================ - ATTACK AT DAWN - - -Doing XOR on strings in Python ------------------------------- - -The following function in Python 3: - - def xor(n, b): - return bytes(c ^ n for c in b) - -Will take a byte array, and return it XORed with n. - -Let's try an example: - - >>> def xor(n, b): - ... return bytes(c ^ n for c in b) - ... - >>> xor(22, b'hello') - b'~szzy' - >>> xor(22, b'~szzy') - b'hello' - >>> xor(22, bytes([0, 1, 2, 3, 4])) - b'\x16\x17\x14\x15\x12' - >>> - -We will use this last method of invoking xor in the following sections, -to work with hex dumps. - - -Converting hex strings to byte arrays -------------------------------------- - -The following Python 3 function will take an ASCII representation of hex -octets, and convert it to a byte array: - - >>> def unhex(s): - ... import binascii - ... return binascii.unhexlify(s.replace(' ', '').replace('\n', '')) - - -Known-plaintext attacks against XOR encryption ----------------------------------------------- - -We have intercepted a coded message. We suspect the plaintext to -consist solely of ASCII characters. The hex dump of the message is: - - - 00000000 69 62 65 0a 7d 6f 0a 78 0a 79 7f 61 0a 6c 63 72 ┆ibe◙}o◙x◙y⌂a◙lcr┆ - 00000010 0a 67 19 0a 6d 1a 6b 7e 70 ┆◙g↓◙m→k~p┆ - 00000019 - -Right away we can see that the character ◙ (`0x0A`) occurs fairly -frequently. We will first guess that `0x0A` represents the letter “e”, -which is the most common letter in English. To find the XOR key needed -to turn turn “e” (`0x65`) into `0x0A`, we can simply XOR the two values: - - 0x65 (e) - ⊕ 0x0A (◙) - ====== - 0x6F (o) - -Let’s try applying the XOR key `0x6F` to the ciphertext. First, we will -load the hex octets into a Python 3 byte array using our `unhex` -function from the previous section: - - >>> a = unhex('69 62 65 0a 7d 6f 0a 78 0a 79 7f 61 0a 6c 63 72') + \ - ... unhex('0a 67 19 0a 6d 1a 6b 7e 70') - >>> a - b'ibe\n}o\nx\ny\x7fa\nlcr\ng\x19\nm\x1ak~p' - -Now, we'll xor it with our guess of `0x6F`: - >>> xor(0x6F, a) - b'\x06\r\ne\x12\x00e\x17e\x16\x10\x0ee\x03\x0c\x1de\x08ve\x02u\x04\x11\x1f' - -That doesn't look right. Let's try another guess, maybe ◙ represents a space: - - 0x20 ( ) - ⊕ 0x0A (◙) - ====== - 0x2A (*) - -Now we apply this key: - - >>> xor(0x2A, a) - b'CHO WE R SUK FIX M3 G0ATZ' - -This is clearly English text, although possibly some sort of code. In -any case, we have broken the code with the key `0x2A`. - - -Question -======== - -Use the known-plaintext attack technique against this XORed cyphertext: - - 00000000 01 2d 2c 25 30 23 36 37 2e 23 36 2b 2d 2c 31 62 ┆☺-,%0#67.#6+-,1b┆ - 00000010 2d 2c 62 3b 2d 37 30 62 20 30 27 23 29 6c 62 62 ┆-,b;-70b␣0'#)lbb┆ - 00000020 16 2a 27 62 29 27 3b 62 24 2d 30 62 36 2a 2b 31 ┆▬*'b)';b$-0b6*+1┆ - 00000030 62 32 23 25 27 62 2b 31 62 60 20 23 21 2d 2c 60 ┆b2#%'b+1b`␣#!-,`┆ - 00000040 6c ┆l┆ - 00000041 diff --git a/packages/net-re/8/key b/packages/net-re/8/key deleted file mode 100644 index 6e953b2..0000000 --- a/packages/net-re/8/key +++ /dev/null @@ -1 +0,0 @@ -bacon diff --git a/packages/net-re/8/summary b/packages/net-re/8/summary deleted file mode 100644 index 0ffbeaf..0000000 --- a/packages/net-re/8/summary +++ /dev/null @@ -1 +0,0 @@ -XOR masks diff --git a/packages/net-re/800/index.mdwn b/packages/net-re/800/index.mdwn deleted file mode 100644 index 14e85d8..0000000 --- a/packages/net-re/800/index.mdwn +++ /dev/null @@ -1,26 +0,0 @@ -What is the IP address of `bungle.dirtbags.net`? - - 18:59:44.128730 IP 67.18.176.203.50495 > 67.18.176.203.domain - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 0041 15e8 4000 4011 3d09 4312 b0cb 4312 .A..@.@.=.C...C. - 0x0020: b0cb c53f 0035 002d ebb4 11d4 0100 0001 ...?.5.-........ - 0x0030: 0000 0000 0000 0662 756e 676c 6508 6469 .......bungle.di - 0x0040: 7274 6261 6773 036e 6574 0000 0100 01 rtbags.net..... - 18:59:44.128786 IP 67.18.176.203.domain > 67.18.176.203.50495 - 0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E. - 0x0010: 00fb 0000 4000 4011 5237 4312 b0cb 4312 ....@.@.R7C...C. - 0x0020: b0cb 0035 c53f 00e7 2b3b 11d4 8500 0001 ...5.?..+;...... - 0x0030: 0001 0005 0005 0662 756e 676c 6508 6469 .......bungle.di - 0x0040: 7274 6261 6773 036e 6574 0000 0100 01c0 rtbags.net...... - 0x0050: 0c00 0100 0100 000e 1000 040a 4894 42c0 ............H.B. - 0x0060: 1300 0200 0100 000e 1000 0603 6e73 31c0 ............ns1. - 0x0070: 13c0 1300 0200 0100 000e 1000 0603 6e73 ..............ns - 0x0080: 32c0 13c0 1300 0200 0100 000e 1000 0603 2............... - 0x0090: 6e73 33c0 13c0 1300 0200 0100 000e 1000 ns3............. - 0x00a0: 0603 6e73 34c0 13c0 1300 0200 0100 000e ..ns4........... - 0x00b0: 1000 0603 6e73 35c0 13c0 4100 0100 0100 ....ns5...A..... - 0x00c0: 000e 1000 0443 12b0 cbc0 5300 0100 0100 .....C....S..... - 0x00d0: 000e 1000 0445 5d7f 0ac0 6500 0100 0100 .....E]...e..... - 0x00e0: 000e 1000 0441 13b2 0ac0 7700 0100 0100 .....A....w..... - 0x00f0: 000e 1000 044b 7f60 0ac0 8900 0100 0100 .....K.`........ - 0x0100: 000e 1000 04cf c046 0a .......F. diff --git a/packages/net-re/800/key b/packages/net-re/800/key deleted file mode 100644 index 1724b8b..0000000 --- a/packages/net-re/800/key +++ /dev/null @@ -1 +0,0 @@ -10.72.148.66 diff --git a/packages/net-re/800/summary b/packages/net-re/800/summary deleted file mode 100644 index d81cce5..0000000 --- a/packages/net-re/800/summary +++ /dev/null @@ -1 +0,0 @@ -DNS packet; you're going to have to do some research diff --git a/packages/net-re/net-re.mk b/packages/net-re/net-re.mk deleted file mode 100644 index f1a0e0d..0000000 --- a/packages/net-re/net-re.mk +++ /dev/null @@ -1 +0,0 @@ -$(eval $(call STANDARD_PUZZLE, net-re)) diff --git a/packages/octopus/solution.sh b/packages/octopus/solution.sh index a3b938e..753e33a 100755 --- a/packages/octopus/solution.sh +++ b/packages/octopus/solution.sh @@ -1,16 +1,16 @@ #! /bin/sh port=8888 -host=10.0.0.10 +host=${1:-10.0.0.8} blooper=$(tempfile) trap "rm $blooper" 0 -echo foo | socat -t 0.01 STDIO UDP:$host:$port | tail -n +4 > $blooper +echo foo | socat -t 0.01 STDIO UDP:$host:$port | tail -n +5 > $blooper for i in $(seq 8); do result=$(socat -t 0.01 STDIO UDP:$host:$port < $blooper | awk -F': ' '(NF > 1) {print $2; exit;}') port=$(echo "ibase=8; $result" | bc) - echo $port + echo "next port: $port ($result)" done echo $result \ No newline at end of file diff --git a/packages/octopus/src/Makefile b/packages/octopus/src/Makefile index 67085c3..f449d68 100644 --- a/packages/octopus/src/Makefile +++ b/packages/octopus/src/Makefile @@ -3,7 +3,7 @@ build: octopus -octopus: octopus.o token.o +octopus: octopus.o clean: rm -f octopus *.o diff --git a/packages/octopus/src/octopus.c b/packages/octopus/src/octopus.c index 2020d1d..5c0744f 100644 --- a/packages/octopus/src/octopus.c +++ b/packages/octopus/src/octopus.c @@ -11,7 +11,6 @@ #include #include #include -#include "token.h" #define OUTPUT_MAX 1024 #define INPUT_MAX 1024 @@ -20,6 +19,9 @@ #define max(a,b) (((a)>(b))?(a):(b)) #endif +char token[80]; +size_t tokenlen; + uint8_t const key[] = {0x99, 0x5f, 0xcb, 0xde, 0xf9, 0x6d, 0x02, 0xf3, 0x47, 0x60, 0x0a, 0xe0, @@ -47,7 +49,8 @@ char const octopus[] = ); const char *friends[8] = { - ("Help Olive Octopus visit all 8 of her friends to receive a prize!\n" + ("Welcome to Olive Octopus's house!\n" + "Help Olive visit all 8 of her friends to receive a prize!\n" "Hurry though, things change quickly in the ocean!\n" "Next friend: %08o\n" "%s" @@ -207,17 +210,8 @@ int rebind(struct in_addr *addr) { static int offset = 0; - char token[200]; - size_t tokenlen; int i; - tokenlen = read_token("octopus", - key, sizeof(key), - token, sizeof(token)); - if (-1 == tokenlen) { - return -1; - } - for (i = 1; i < 8; i += 1) { int ret; int last_guy; @@ -316,8 +310,6 @@ loop() FD_SET(bound_ports[i].fd, &rfds); } - /* Wait forever. There's no need to switch ports if nobody's doing - anything. */ while (-1 == select(nfds+1, &rfds, NULL, NULL, &timeout)) { if (EINTR == errno) { continue; @@ -339,11 +331,12 @@ main(int argc, char *argv[]) { int ret; int i; - time_t last = time(NULL); + time_t last_bind = 0; + time_t last_token = 0; struct in_addr addr; /* The random seed isn't super important here. */ - srand(last); + srand(time(NULL)); if (argc > 1) { if (-1 == inet_aton(argv[1], &addr)) { @@ -364,20 +357,26 @@ main(int argc, char *argv[]) for (i = 1; i < PORTS; i += 1) { bound_ports[i].fd = -1; } - if (-1 == rebind(&addr)) { - perror("initial binding"); - return EX_IOERR; - } - while (loop()) { + do { time_t now = time(NULL); - if (last + 4 < now) { - last = now; + if (last_token + 60 < now) { + last_token = now; + while (NULL == fgets(token, sizeof(token), stdin)) { + if (-1 == fseek(stdin, 0, SEEK_SET)) { + /* Non-seekable stdin: we're done. */ + return 0; + } + } + for (tokenlen = 0; token[tokenlen] && (token[tokenlen] != '\n'); tokenlen += 1); + } + + if (last_bind + 4 < now) { + last_bind = now; if (-1 == rebind(&addr)) break; } - } + } while (loop()); - perror("main loop"); - return EX_IOERR; + return 0; } diff --git a/packages/octopus/src/token.c b/packages/octopus/src/token.c deleted file mode 120000 index f0a9dcd..0000000 --- a/packages/octopus/src/token.c +++ /dev/null @@ -1 +0,0 @@ -../../../include/token.c \ No newline at end of file diff --git a/packages/octopus/src/token.h b/packages/octopus/src/token.h deleted file mode 120000 index 21e62e4..0000000 --- a/packages/octopus/src/token.h +++ /dev/null @@ -1 +0,0 @@ -../../../include/token.h \ No newline at end of file diff --git a/packages/octopus/tokens/octopus/category b/packages/octopus/tokens/octopus/category deleted file mode 100644 index 1ed143c..0000000 --- a/packages/octopus/tokens/octopus/category +++ /dev/null @@ -1 +0,0 @@ -octopus diff --git a/packages/octopus/tokens/octopus/category.key b/packages/octopus/tokens/octopus/category.key deleted file mode 100644 index 8a5f356..0000000 --- a/packages/octopus/tokens/octopus/category.key +++ /dev/null @@ -1,2 +0,0 @@ - -'6Y= \ No newline at end of file diff --git a/packages/octopus/tokens/octopus/enc.key b/packages/octopus/tokens/octopus/enc.key deleted file mode 100644 index 2e889c0..0000000 --- a/packages/octopus/tokens/octopus/enc.key +++ /dev/null @@ -1,3 +0,0 @@ -_mG` - -%M \ No newline at end of file diff --git a/packages/posters/posters.mk b/packages/posters/posters.mk new file mode 100644 index 0000000..b434e57 --- /dev/null +++ b/packages/posters/posters.mk @@ -0,0 +1,8 @@ +posters-source: +posters-build: + +posters-install: packages/posters/tokens.txt + mkdir -p $(TARGET)/posters/ + cp $< $(TARGET)/posters/ + +PACKAGES += posters diff --git a/packages/posters/tokens.txt b/packages/posters/tokens.txt new file mode 100644 index 0000000..12debb7 --- /dev/null +++ b/packages/posters/tokens.txt @@ -0,0 +1,6 @@ +posters:xylep-nanox +posters:xanad-polox +posters:xemoc-socox +posters:xurat-tulox +posters:xalep-mikex +posters:xylen-bubux diff --git a/packages/pwnables/pwnables.mk b/packages/pwnables/pwnables.mk deleted file mode 100644 index 873192b..0000000 --- a/packages/pwnables/pwnables.mk +++ /dev/null @@ -1,20 +0,0 @@ -PWNABLES_PKGDIR = $(TARGET)/pwnables - -pwnables-install: pwnables-build - mkdir -p $(PWNABLES_PKGDIR) - - mkdir -p $(PWNABLES_PKGDIR)/bin/ - $(MAKE) -C packages/pwnables/src install DESTDIR=$(CURDIR)/$(PWNABLES_PKGDIR) - - $(call COPYTREE, packages/pwnables/tokens, $(PWNABLES_PKGDIR)/tokens) - - $(call COPYTREE, packages/pwnables/service, $(PWNABLES_PKGDIR)/service) - -pwnables-clean: - rm -rf $(PWNABLES_PKGDIR) - $(MAKE) -C packages/pwnables/src clean - -pwnables-build: - $(MAKE) -C packages/pwnables/src build - -PACKAGES += pwnables diff --git a/packages/pwnables/service/pwnables/run b/packages/pwnables/service/pwnables/run deleted file mode 100755 index 27fb1de..0000000 --- a/packages/pwnables/service/pwnables/run +++ /dev/null @@ -1,42 +0,0 @@ -#! /bin/sh -e - -# Configure IP address -IP=$(cat ip.txt) -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 -mkdir -p /mnt/pwnables-root -grep -q pwnables-root /proc/mounts || mount -o bind / /mnt/pwnables-root -grep -q pwnables-var /proc/mounts || mount -t tmpfs -o size=5m,mode=0755 pwnables-var /mnt/pwnables-root/var -grep -q pwnables-tmp /proc/mounts || mount -t tmpfs -o size=15k pwnables-tmp /mnt/pwnables-root/tmp -grep -q pwnables-home /proc/mounts || mount -t tmpfs -o size=5m pwnables-home /mnt/pwnables-root/home - -# Make some skeleton junk -install -o root -m 0755 -d /mnt/pwnables-root/var/lib -install -o root -m 0755 -d /mnt/pwnables-root/var/lib/ctf -install -o root -m 0755 -d /mnt/pwnables-root/var/lib/ctf/tokens -install -o root -m 0755 -d /mnt/pwnables-root/var/log -install -o root -m 0755 -d /mnt/pwnables-root/var/spool -install -o root -m 0755 -d /mnt/pwnables-root/var/cache -install -o root -m 0777 -d /mnt/pwnables-root/var/run -install -o root -m 0777 -d /mnt/pwnables-root/var/cache - -# Install the pwnables -install -o root -d /mnt/pwnables-root/home/alice/ -install -o bob -m 0111 /opt/pwnables/bin/gimmie /mnt/pwnables-root/home/alice/ - -# ltrace needs to read the binary -install -o bob -m 0555 /opt/pwnables/bin/ltraceme /mnt/pwnables-root/home/alice/ - -# straceme and killme need to be suid, to prevent LD_PRELOAD -install -o bob -m 04111 /opt/pwnables/bin/straceme /mnt/pwnables-root/home/alice/ -install -o bob -m 04111 /opt/pwnables/bin/killme /mnt/pwnables-root/home/alice/ - -# Set up links for tokens -mkdir -p /var/lib/ctf/tokens -for puzzle in gimmie ltraceme straceme killme; do - ln -sf /mnt/pwnables-root/var/lib/ctf/tokens/$puzzle /var/lib/ctf/tokens/$puzzle -done - -exec tcpsvd -C 5:"Let's not be greedy" ${IP%/*} 23 /sbin/telnetd -l ./pwnie diff --git a/packages/pwnables/src/Makefile b/packages/pwnables/src/Makefile deleted file mode 100644 index 245bcba..0000000 --- a/packages/pwnables/src/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -CFLAGS = -Wall -Werror -TARGETS = gimmie ltraceme straceme killme - -all: build - -build: $(TARGETS) - -gimmie: gimmie.o token.o -octopus: octopus.o token.o -ltraceme: ltraceme.o token.o -straceme: straceme.o token.o -killme: killme.o token.o - -install: $(TARGETS) - install -m 0755 $(TARGETS) $(DESTDIR)/bin - -clean: - rm -f *.o $(TARGETS) \ No newline at end of file diff --git a/packages/pwnables/src/arc4.c b/packages/pwnables/src/arc4.c deleted file mode 100644 index f1a0dd0..0000000 --- a/packages/pwnables/src/arc4.c +++ /dev/null @@ -1,49 +0,0 @@ -#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; - 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); - } - - if (0 == keylen) { - fprintf(stderr, "Usage: %s [KEYFILE] -#include "token.h" - -uint8_t const key[] = {0x5f, 0x64, 0x13, 0x29, - 0x2e, 0x46, 0x76, 0xcd, - 0x65, 0xff, 0xe8, 0x03, - 0xa4, 0xa9, 0x4f, 0xd9}; - -int -main(int argc, char *argv[]) -{ - char token[200]; - ssize_t tokenlen; - - tokenlen = read_token("gimmie", - key, sizeof(key), - token, sizeof(token) - 1); - if (-1 == tokenlen) { - write(1, "Something is broken\nI can't read my token.\n", 43); - return 69; - } - - token[tokenlen++] = '\n'; - write(1, token, tokenlen); - - return 0; -} diff --git a/packages/pwnables/src/ltraceme.c b/packages/pwnables/src/ltraceme.c deleted file mode 100644 index 359a211..0000000 --- a/packages/pwnables/src/ltraceme.c +++ /dev/null @@ -1,60 +0,0 @@ -#include -#include -#include -#include -#include "token.h" - -/* This hopefully requires an LD_PRELOAD */ - -uint8_t const key[] = {0x94, 0xf2, 0x92, 0x45, - 0x12, 0x44, 0x80, 0xe1, - 0x95, 0x64, 0xcd, 0xe4, - 0xff, 0x0a, 0x00, 0x10}; - -int -main(int argc, char *argv[]) -{ - char token[200]; - size_t tokenlen; - - /* Do some bullshit. Override with: - * - * void strcmp(char *a, char *b) - * { - * return 0; - * } - */ - { - FILE *f = fopen("/dev/urandom", "r"); - unsigned int seed; - char seed_str[50]; - - printf("Checking credentials...\n"); - fread(&seed, sizeof(seed), 1, f); - sprintf(seed_str, "%d", seed); - if ((argc != 2) || strcmp(seed_str, argv[1])) { - printf("Ah ah ah! You didn't say the magic word!\n"); - return 1; - } - } - - tokenlen = read_token("ltraceme", - key, sizeof(key), - token, sizeof(token) - 1); - if (-1 == tokenlen) { - write(1, "Something is broken\nI can't read my token.\n", 43); - return 1; - } - token[tokenlen++] = '\0'; - - /* You could override this with: - * - * void printf(char *fmt, size_t len, char *buf) - * { - * if (fmt[0] == 'T') write(1, buf, len); - * } - */ - printf("Token length %u at %p.\n", (unsigned int)tokenlen, token); - - return 0; -} diff --git a/packages/pwnables/src/token.c b/packages/pwnables/src/token.c deleted file mode 120000 index f0a9dcd..0000000 --- a/packages/pwnables/src/token.c +++ /dev/null @@ -1 +0,0 @@ -../../../include/token.c \ No newline at end of file diff --git a/packages/pwnables/src/token.h b/packages/pwnables/src/token.h deleted file mode 120000 index 21e62e4..0000000 --- a/packages/pwnables/src/token.h +++ /dev/null @@ -1 +0,0 @@ -../../../include/token.h \ No newline at end of file diff --git a/packages/rlyeh/rlyeh.mk b/packages/rlyeh/rlyeh.mk index 60a921f..08ec44d 100644 --- a/packages/rlyeh/rlyeh.mk +++ b/packages/rlyeh/rlyeh.mk @@ -1,25 +1,24 @@ 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_CACHE = $(CACHE)/rlyeh.git +RLYEH_URL = "http://woozle.org/~neale/projects/rlyeh" -$(RLYEH_TAR): - @ mkdir -p $(@D) - wget -O $@ $(RLYEH_URL) +$(RLYEH_CACHE): + git clone --bare $(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-source: $(RLYEH_BUILDDIR) +$(RLYEH_BUILDDIR): $(RLYEH_CACHE) + git clone $< $@ rlyeh-build: rlyeh-source - $(MAKE) -C $(RLYEH_BUILDDIR)/rlyeh + $(MAKE) -C $(RLYEH_BUILDDIR) rlyeh-install: rlyeh-build mkdir -p $(RLYEH_PKGDIR)/bin - cp $(RLYEH_BUILDDIR)/rlyeh/rlyeh $(RLYEH_PKGDIR)/bin + cp $(RLYEH_BUILDDIR)/rlyeh $(RLYEH_PKGDIR)/bin $(call COPYTREE, packages/rlyeh/service, $(RLYEH_PKGDIR)/service) + $(call COPYTREE, packages/rlyeh/tokens, $(RLYEH_PKGDIR)/tokens) rlyeh-clean: rm -rf $(RLYEH_BUILDDIR) diff --git a/packages/rlyeh/service/rlyeh/log/run b/packages/rlyeh/service/rlyeh/log/run new file mode 100755 index 0000000..1e7bd9d --- /dev/null +++ b/packages/rlyeh/service/rlyeh/log/run @@ -0,0 +1,3 @@ +#! /bin/sh + +exec svlogd -tt $PWD diff --git a/packages/rlyeh/service/rlyeh/rlyeh-ctf b/packages/rlyeh/service/rlyeh/rlyeh-ctf index 1ea6aca..a80b247 100755 --- a/packages/rlyeh/service/rlyeh/rlyeh-ctf +++ b/packages/rlyeh/service/rlyeh/rlyeh-ctf @@ -2,7 +2,8 @@ base=${CTF_BASE:-/var/lib/ctf} -read -p "Team password: " -r teamhash +echo -n "Team password: " +read -r teamhash if ! KEY='Too much cheese.' arc4 < $base/teams.txt | grep -q -F -e "$teamhash"; then echo 'No such team.' @@ -20,7 +21,7 @@ if [ -f $teamhash ]; then exit fi else - echo 0 > $teamhash + echo 1 > $teamhash fi read level < $teamhash @@ -33,8 +34,9 @@ read level < $teamhash echo "Your team is on level $level." echo - if ./rlyeh $level; then - echo "10 points for Gryffindor!" + if setuidgid nobody rlyeh $level; then + arc4 /opt/rlyeh/tokens/rlyeh/enc.key < $base/tokens/rlyeh + echo expr $level + 1 > $teamhash else touch $teamhash diff --git a/packages/rlyeh/service/rlyeh/run b/packages/rlyeh/service/rlyeh/run index b8f8962..9b4c8c9 100755 --- a/packages/rlyeh/service/rlyeh/run +++ b/packages/rlyeh/service/rlyeh/run @@ -7,4 +7,5 @@ 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 +PATH=/opt/ctfbase/bin:/opt/rlyeh/bin:/bin:/sbin; export PATH +exec tcpsvd ${IP%/*} 1928 ./rlyeh-ctf diff --git a/packages/rlyeh/tokens/rlyeh/category b/packages/rlyeh/tokens/rlyeh/category new file mode 100644 index 0000000..0724055 --- /dev/null +++ b/packages/rlyeh/tokens/rlyeh/category @@ -0,0 +1 @@ +rlyeh diff --git a/packages/rlyeh/tokens/rlyeh/category.key b/packages/rlyeh/tokens/rlyeh/category.key new file mode 100644 index 0000000..8d72a26 --- /dev/null +++ b/packages/rlyeh/tokens/rlyeh/category.key @@ -0,0 +1 @@ +qVA.SF֨,.} \ No newline at end of file diff --git a/packages/rlyeh/tokens/rlyeh/enc.key b/packages/rlyeh/tokens/rlyeh/enc.key new file mode 100644 index 0000000..34a088b --- /dev/null +++ b/packages/rlyeh/tokens/rlyeh/enc.key @@ -0,0 +1 @@ +7X)> !r|! \ No newline at end of file diff --git a/packages/router/router.mk b/packages/router/router.mk new file mode 100644 index 0000000..916ad05 --- /dev/null +++ b/packages/router/router.mk @@ -0,0 +1,33 @@ +ROUTER_PKGDIR = $(TARGET)/router +ROUTER_BUILDDIR = $(BUILD)/router + +DNSMASQ_VERSION = 2.57 +DNSMASQ_SRCDIR = $(ROUTER_BUILDDIR)/dnsmasq-$(DNSMASQ_VERSION) +DNSMASQ_TARBALL = $(CACHE)/dnsmasq-$(DNSMASQ_VERSION).tar.gz +DNSMASQ_URL = http://www.thekelleys.org.uk/dnsmasq/dnsmasq-$(DNSMASQ_VERSION).tar.gz + +$(DNSMASQ_TARBALL): + @ mkdir -p $(@D) + wget -O $@ $(DNSMASQ_URL) + +router-source: $(ROUTER_BUILDDIR)/source +$(ROUTER_BUILDDIR)/source: $(DNSMASQ_TARBALL) + mkdir -p $(ROUTER_BUILDDIR) + zcat $(DNSMASQ_TARBALL) | (cd $(ROUTER_BUILDDIR) && tar xf -) + touch $@ + +router-build: $(ROUTER_BUILDDIR)/built +$(ROUTER_BUILDDIR)/built: $(ROUTER_BUILDDIR)/source + $(MAKE) -C $(DNSMASQ_SRCDIR) + touch $@ + +router-install: router-build + mkdir -p $(ROUTER_PKGDIR)/sbin + cp $(DNSMASQ_SRCDIR)/src/dnsmasq $(ROUTER_PKGDIR)/sbin/ + + $(call COPYTREE, packages/router/service, $(ROUTER_PKGDIR)/service) + +router-clean: + rm -rf $(ROUTER_PKGDIR) + +PACKAGES += router diff --git a/doc/openwrt/dnsmasq.conf b/packages/router/service/dnsmasq/dnsmasq.conf similarity index 100% rename from doc/openwrt/dnsmasq.conf rename to packages/router/service/dnsmasq/dnsmasq.conf diff --git a/packages/router/service/dnsmasq/log/run b/packages/router/service/dnsmasq/log/run new file mode 100755 index 0000000..d9d6355 --- /dev/null +++ b/packages/router/service/dnsmasq/log/run @@ -0,0 +1,4 @@ +#! /bin/sh + +exec svlogd -tt $PWD + diff --git a/packages/router/service/dnsmasq/run b/packages/router/service/dnsmasq/run new file mode 100755 index 0000000..1373e45 --- /dev/null +++ b/packages/router/service/dnsmasq/run @@ -0,0 +1,12 @@ +#! /bin/sh -e + +exec 2>&1 + +mkdir -p /var/lib/misc + +exec /opt/router/sbin/dnsmasq \ + --keep-in-foreground \ + --conf-file=dnsmasq.conf \ + --pid-file= \ + --log-facility=/proc/self/fd/1 + diff --git a/packages/router/service/router/finish b/packages/router/service/router/finish new file mode 100755 index 0000000..8c3aa29 --- /dev/null +++ b/packages/router/service/router/finish @@ -0,0 +1,9 @@ +#! /bin/sh + +ip addr del 10.0.0.1/16 dev eth0 + +for i in $(seq 48); do + ip link del link dev eth0.$i +done + +iptables -F INPUT diff --git a/packages/router/service/router/log/run b/packages/router/service/router/log/run new file mode 100755 index 0000000..d9d6355 --- /dev/null +++ b/packages/router/service/router/log/run @@ -0,0 +1,4 @@ +#! /bin/sh + +exec svlogd -tt $PWD + diff --git a/packages/router/service/router/run b/packages/router/service/router/run new file mode 100755 index 0000000..8dee3ba --- /dev/null +++ b/packages/router/service/router/run @@ -0,0 +1,41 @@ +#! /bin/sh -e + +exec 2>&1 + +hostname router + +# McPhall suggested all these. I don't know what most of them do. +# But I do know that McPhall is a smart guy. +echo 1 > /proc/sys/net/ipv4/ip_forward +echo 1 > /proc/sys/net/ipv6/conf/default/forwarding +echo 0 > /proc/sys/kernel/randomize_va_space +echo 0 > /proc/sys/net/ipv4/conf/all/arp_accept +echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter +echo 1 > /proc/sys/net/ipv4/conf/all/arp_announce +echo 2 > /proc/sys/net/ipv4/conf/all/arp_ignore +echo 0 > /proc/sys/net/ipv4/conf/all/shared_media +echo 0 > /proc/sys/net/ipv4/tcp_timestamps +echo 1 > /proc/sys/net/ipv4/icmp_errors_use_inbound_ifaddr +echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts + +# No label: dnsmasq can't cope +ip addr add 10.0.0.1/16 dev eth0 +ip link set eth0 up + +for i in $(seq 48); do + ip link add link eth0 name eth0.$i type vlan id $i + ip addr add 10.$i.0.1/16 dev eth0.$i + ip link set eth0.$i up +done + +iptables -P INPUT ACCEPT +iptables -P OUTPUT ACCEPT +iptables -P FORWARD ACCEPT + +iptables -A INPUT -p udp --dport 53 -j ACCEPT +iptables -A INPUT -p udp --dport 67:68 -j ACCEPT +iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT +iptables -A INPUT -s 10.0.0.0/16 -j ACCEPT +iptables -A INPUT -j REJECT + +sleep 8100d diff --git a/packages/router/service/sshd/log/run b/packages/router/service/sshd/log/run new file mode 100755 index 0000000..1e7bd9d --- /dev/null +++ b/packages/router/service/sshd/log/run @@ -0,0 +1,3 @@ +#! /bin/sh + +exec svlogd -tt $PWD diff --git a/packages/router/service/sshd/rsa.key b/packages/router/service/sshd/rsa.key new file mode 100644 index 0000000..6c75997 Binary files /dev/null and b/packages/router/service/sshd/rsa.key differ diff --git a/packages/router/service/sshd/run b/packages/router/service/sshd/run new file mode 100755 index 0000000..e60e68b --- /dev/null +++ b/packages/router/service/sshd/run @@ -0,0 +1,4 @@ +#! /bin/sh + +exec 2>&1 +exec dropbear -r ./rsa.key -E -F diff --git a/packages/sandia/sandia.mk b/packages/sandia/sandia.mk new file mode 100644 index 0000000..ab472bd --- /dev/null +++ b/packages/sandia/sandia.mk @@ -0,0 +1,8 @@ +sandia-source: +sandia-build: + +sandia-install: packages/sandia/tokens.txt + mkdir -p $(TARGET)/sandia/ + cp $< $(TARGET)/sandia/ + +PACKAGES += sandia diff --git a/packages/sandia/tokens.txt b/packages/sandia/tokens.txt new file mode 100644 index 0000000..cc2fb4f --- /dev/null +++ b/packages/sandia/tokens.txt @@ -0,0 +1,5000 @@ +round1:xocop-furiz-nakax +round1:xofaf-bulyr-bipox +round1:xihot-pyhad-gipax +round1:xidak-pobah-merex +round1:xodov-dymos-delyx +round1:xupog-pires-dedyx +round1:xeril-zadug-hytux +round1:xebib-seheg-ketux +round1:xifas-cyvuz-zucix +round1:xotep-lenic-tepix +round1:xopif-gymok-porux +round1:xobac-sivek-bogyx +round1:xibot-variv-furox +round1:xumiv-kyron-nudix +round1:xelov-zisyc-rikyx +round1:xebef-zoveg-difox +round1:xihad-rekup-kofox +round1:xubog-sohoc-ronix +round1:xetik-hylok-medex +round1:xomom-garab-fopux +round1:xuzes-voraf-firyx +round1:xinit-mykip-hivax +round1:xefan-befif-bupax +round1:xuniz-fevuc-mipex +round1:xegaf-fecyv-vutyx +round1:xocip-lalid-fimox +round1:xocef-dynon-fyfox +round1:xenoh-sydut-casex +round1:xilat-raneh-nabax +round1:xoned-makyh-morix +round1:xiled-fihoc-zytyx +round1:xobof-cicib-dudyx +round1:xucen-dorat-kavax +round1:xedek-manuv-kegox +round1:xupos-sekyf-hatix +round1:xoroz-pukac-pasex +round1:xecos-lupek-zucox +round1:xebic-cikoz-sehax +round1:xugas-puhuz-babox +round1:xumen-sugic-manax +round1:xiror-pysil-bisax +round1:xozah-fomab-suzix +round1:xomak-temem-cisax +round1:xigaf-bubaf-hudix +round1:xupac-pynis-karyx +round1:xotef-fubas-rycix +round1:xugah-zuvef-tumux +round1:xedab-ketam-dimox +round1:xubel-moheg-nynux +round1:xunod-camal-rykex +round1:xufov-kyner-sacex +round1:xevek-kyceg-sipyx +round1:xuboc-tefiv-razex +round1:xenis-kipez-nadux +round1:xucen-karyf-simux +round1:xuned-petyv-cilix +round1:xesam-hizim-mevox +round1:xemaf-futac-kibox +round1:xepon-dobyb-hogux +round1:xeboh-tarom-cavox +round1:xudif-gulez-hyfox +round1:xivob-kipen-rilix +round1:xevav-sufap-vezox +round1:xocir-fegog-vykax +round1:xunif-fasiz-vudex +round1:xukik-nyrig-resox +round1:xesoc-ciguc-sosox +round1:xufoz-koren-honix +round1:xobes-luzuk-ludux +round1:xihoh-kutok-nebyx +round1:xelet-dupaz-sumux +round1:xoral-dovug-lepox +round1:ximan-sefol-kynex +round1:xedel-tozop-movox +round1:xecen-bycip-hygax +round1:xetop-tecyk-nedox +round1:xupes-puvov-dodyx +round1:xotem-cufin-suhox +round1:xisih-lodud-zacix +round1:xitir-pagib-cygax +round1:xesem-fipeg-cezux +round1:xukir-rilan-pygyx +round1:xogef-zuget-ragux +round1:xoded-sakes-butox +round1:xugiv-rozuk-hofux +round1:xidef-lucip-decox +round1:xudel-kocyb-sakox +round1:xonic-ticur-fynyx +round1:xonet-selyg-vydix +round1:xohic-deluf-hezix +round1:xoran-nidic-mopax +round1:xorov-zypyv-lobyx +round1:xebif-nenag-dodex +round1:xorip-hyfor-nugux +round1:xomoh-faril-cytox +round1:xobar-karal-guzyx +round1:xolil-tekyg-tomax +round1:xehod-sisir-facax +round1:xomiz-batoc-tefex +round1:xemic-totuz-vytyx +round1:xetak-nolis-rupux +round1:xupar-pyzyf-canax +round1:xogab-pykyn-vubox +round1:xufol-pehec-kafex +round1:xofip-zegag-faryx +round1:xukar-vusuh-gonyx +round1:xorar-lesag-nikax +round1:xonif-hihyg-pokux +round1:xomof-halez-bafix +round1:xumiz-zonuz-davyx +round1:xozep-tekec-zobyx +round1:xetab-dakul-tocax +round1:xehen-varav-pogax +round1:xefaf-pypip-mefax +round1:xotom-ruzah-kemex +round1:xucil-cypuh-tifax +round1:xesat-bypel-pyrox +round1:xelak-busod-torex +round1:xuhaf-zekad-vihex +round1:xular-zynub-picox +round1:xivov-kytyc-tozox +round1:xulos-pybeh-zidax +round1:ximas-menyb-vupax +round1:xufob-vazap-denux +round1:xodod-murot-gybux +round1:xelar-lasut-balix +round1:xuben-lidek-zucyx +round1:xesok-kozev-mugox +round1:xukev-mypuz-bybux +round1:xedeh-kerus-bopix +round1:xidel-rozuk-zopyx +round1:xunis-fycec-symux +round1:xeniz-naviv-sydux +round1:xifes-poguh-syhex +round1:xoleh-gevaf-myfix +round1:xenid-zicyh-pecyx +round1:xolip-cezuz-hanyx +round1:xicib-nifam-dagax +round1:xeroz-diras-ryvax +round1:xirok-siden-nicex +round1:xipik-karuz-puvax +round1:xelap-gycih-dezex +round1:xekeh-sorud-damax +round1:xucek-rakus-vokex +round1:xuzik-semab-pikex +round1:xeket-tavan-vykox +round1:xorod-fybam-rymax +round1:xozer-mihof-rozax +round1:xugav-zotin-mofex +round1:xifab-pedut-zacox +round1:xotah-sizyb-kutax +round1:xupih-zyper-tisex +round1:xihat-kodup-novux +round1:xopef-lopob-nygyx +round1:xigas-timig-nigox +round1:xihih-laseg-dufix +round1:xupeb-vapaz-muvox +round1:xezad-giceh-vomyx +round1:xekep-kepad-tozex +round1:xopod-zevym-ramox +round1:xihek-lurar-rypix +round1:xuvem-nevir-rivyx +round1:xocip-bekod-pyfix +round1:xefag-hygov-tosox +round1:xetef-cyrec-nitex +round1:xonel-berym-ticix +round1:xohik-fohok-bufyx +round1:xudal-mecig-zanex +round1:xucam-vecub-futix +round1:xugop-lecat-subox +round1:xitoh-fonum-nodex +round1:xocos-tyveb-tolux +round1:xital-dudel-zurox +round1:xifav-vepuh-hesex +round1:xudev-ditac-vusex +round1:xunil-hebiv-lebex +round1:xovig-cevip-nezix +round1:xoked-dolad-rofox +round1:xigam-lukud-tehox +round1:xidet-subis-zibix +round1:xorib-kefas-mityx +round1:xekaz-hyfyr-ferox +round1:xupik-zobeh-fegex +round1:xutot-tivoc-tufix +round1:xiham-vomig-kyvex +round1:xihat-zekab-tuzix +round1:xucas-teviz-pekux +round1:xugim-dozyv-nydox +round1:xuraz-myvil-zadyx +round1:xuhit-nyled-pofax +round1:xucot-vacam-dicux +round1:xihop-hekar-denix +round1:xelis-tesyl-fihax +round1:xunen-siniv-zamex +round1:xuseb-panep-fagax +round1:xubap-vevuh-dazix +round1:xihac-zakiz-vufix +round1:xohof-bozak-linix +round1:xohep-zatih-cugux +round1:xihos-nisos-gefex +round1:xuhil-copav-bolex +round1:ximod-detot-bigix +round1:xicoc-curuv-rakax +round1:xesev-bific-labix +round1:xufig-likis-huhax +round1:xiveb-getut-tetyx +round1:xofok-dohah-kadix +round1:xural-bykik-dymix +round1:xohac-vahus-figyx +round1:xomiz-kazug-fimax +round1:xinom-pefat-tylex +round1:xudok-cakev-typux +round1:xesir-gizef-tobyx +round1:xenop-cotut-duzux +round1:xocid-bysic-lidyx +round1:xokip-cyfyc-tylax +round1:xobat-vopun-menix +round1:xifis-sirel-lutyx +round1:xegek-zegav-gelyx +round1:xicod-hizyr-rykex +round1:xoped-vahor-tizex +round1:xikof-gelob-pezex +round1:xeled-pakaz-zymox +round1:xileb-nimoz-dizyx +round1:xifet-cakyd-gupyx +round1:xukik-zysas-cykyx +round1:xebon-febak-zykux +round1:xemoz-vozit-garox +round1:xekep-vofys-dydox +round1:xicel-kevyr-kikax +round1:xekas-tiduk-sapix +round1:xecez-cynuv-syzox +round1:xecov-pirar-luvox +round1:xoreb-vocok-vivux +round1:xenev-zymem-lohox +round1:xilib-cabyc-labyx +round1:xotip-pypuc-migox +round1:xucit-bucob-sirex +round1:xugah-bisep-bucex +round1:xoses-kymot-nefyx +round1:xokav-bafyf-lemax +round1:xohin-nonor-kybox +round1:xunig-pupym-kuhux +round1:xodaf-vidob-sizex +round1:xumav-cycyd-zyhox +round1:xusil-mifup-gitex +round1:xibih-gyken-numux +round1:xurev-hakuf-lasux +round1:xigag-gonab-dukux +round1:xemim-detig-dypax +round1:xorat-susut-popux +round1:xetog-cynuh-defex +round1:xivom-fitec-bypix +round1:xonem-pizob-rodex +round1:xiboz-sefem-cizux +round1:xipic-hopuf-lepyx +round1:xemob-gutem-fysox +round1:xucoc-rakoz-pivyx +round1:xubac-caged-setux +round1:xiler-rokin-rozex +round1:xukek-movib-talix +round1:xomor-pamor-pevix +round1:xusak-rufyc-cibix +round1:xiviv-bodog-mugux +round1:xuziv-tagig-gebix +round1:xehos-mavef-cadox +round1:xeval-pogup-bozix +round1:xelip-pozyk-larix +round1:xedon-giryk-hufix +round1:xives-lutel-sugax +round1:xofoz-rufif-nocax +round1:xecoc-pofen-kufex +round1:xubet-kanuc-zicax +round1:xozog-damis-comox +round1:xeniz-gytus-dugyx +round1:xonib-vymun-vetux +round1:xukem-vukeb-resox +round1:xikih-pipod-dimux +round1:xirop-himum-pogax +round1:xodip-fatah-fohux +round1:xedab-dunut-durix +round1:xovah-decod-pezox +round1:xofep-peruz-dobax +round1:xeror-hekev-bihux +round1:xifav-sylud-rogix +round1:xerid-citid-kyfox +round1:xerap-synog-zyzex +round1:xubaf-sisag-vidyx +round1:xuden-nyrub-nisox +round1:xilab-nezih-direx +round1:xetak-soges-myvyx +round1:xelac-futol-dohox +round1:xoram-gacul-lohux +round1:xozil-hipyh-hylox +round1:xelor-rikom-kavix +round1:xemep-sovos-gizax +round1:xilon-gunuf-zybux +round1:xozen-bilab-pihix +round1:xidod-mamys-gevix +round1:xodov-vytyk-vesux +round1:xegef-mifed-nocyx +round1:xicak-mucot-zypox +round1:xesiz-ricys-hamex +round1:xobak-bisul-nepyx +round1:xirov-haket-hunox +round1:xokez-resat-vacax +round1:xikes-micar-mutux +round1:xukim-guder-gosix +round1:xurom-gameb-hasax +round1:xinet-nanuc-vycox +round1:xonir-bafiv-vyfix +round1:xukoh-lerif-mybox +round1:xided-tuhuk-sutox +round1:xonen-sukyt-sezax +round1:xusim-puneb-fypex +round1:xemen-cufyz-bulux +round1:xemop-vuget-sopux +round1:xekah-hirud-hobix +round1:xites-kugoz-sagix +round1:xoveg-rupem-dunyx +round1:xemaf-fafev-lyrax +round1:xotev-dasof-cagax +round1:xehif-rihem-cyrix +round1:xilec-kihyt-ruhex +round1:xezed-dehag-hyrix +round1:xugok-rabic-tigux +round1:xuneh-rirob-hegux +round1:xugem-hicop-gyrux +round1:xorom-nysar-zubex +round1:xigic-kikyp-sumux +round1:xeleg-madeg-tolox +round1:xunar-rokeh-zyhax +round1:xofeg-nudoc-vuhex +round1:xivov-kakyf-locax +round1:xogah-mypum-mugyx +round1:xuhac-fokys-hehex +round1:ximih-zedez-zikax +round1:xofek-manub-zafyx +round1:ximig-takik-vorux +round1:xosis-cazoh-zegux +round1:xudop-tamif-tocix +round1:xofac-bibyr-cilix +round1:xicac-syhaf-zigux +round1:xolip-bynus-nirux +round1:xucih-bobit-tuvix +round1:xolon-fanim-golox +round1:xebat-micid-disox +round1:xopav-cidog-lunox +round1:xemon-kules-fepyx +round1:xodod-gikel-bamax +round1:xuman-kidiz-sumix +round1:xubeb-tuhig-muvax +round1:xolih-rulir-gylux +round1:xefih-zarav-gylax +round1:xopad-lugic-hepox +round1:xumam-dezem-bekax +round1:xomav-begoz-gibux +round1:xesiz-bihod-gekex +round1:xeniv-dytam-gicox +round1:xenot-socyl-zybux +round1:xegev-paral-kybyx +round1:xunas-lekis-bolyx +round1:xomoc-gupuv-zihyx +round1:xuzag-tydub-hutex +round1:xodog-mezuf-gyfex +round1:xokil-gacun-bemix +round1:xodam-ruvob-kygux +round1:xosag-vogyd-melox +round1:xetek-kesup-bolex +round1:xovod-tyger-zysax +round1:xizoc-lagut-hupix +round1:xoket-botet-gazux +round1:xekok-zycur-dyfyx +round1:xodas-merap-rutex +round1:xogip-vokyl-revux +round1:xitad-zecem-motex +round1:xicah-pivic-hekax +round1:xebok-fisuk-pinix +round1:xisoc-gopep-fusex +round1:xiget-momav-hicex +round1:xevel-hyzib-hirix +round1:xifel-pafub-petux +round1:xukek-hadeb-zanix +round1:xotas-kysuz-fidux +round1:xutat-fyvyn-nibux +round1:xebav-mavys-gepix +round1:xopig-tadon-kylox +round1:xodih-sugon-nazux +round1:xumoh-bavat-mabex +round1:xutar-behyl-mycax +round1:xumaf-rafoz-fukyx +round1:xomav-mibuh-zudox +round1:xekoc-norec-visox +round1:xuket-gucug-tesux +round1:xofig-vysaz-fykax +round1:xocig-bipah-typax +round1:xetot-rykav-hedex +round1:xolig-tomer-fugux +round1:xedic-zehes-pybax +round1:xulag-pacal-hirox +round1:xiden-sihag-bevex +round1:xubid-veheh-vamex +round1:xisov-dyzer-povux +round1:xizev-temeg-dugux +round1:xegar-hafof-puzyx +round1:xebes-codaf-minex +round1:xudod-bovyt-girax +round1:xefer-mekuh-fokox +round1:xetok-benad-vynex +round1:xevih-tibem-bytox +round1:xelep-dacih-gugux +round1:xorif-pasyv-rifax +round1:xicef-rokif-dynex +round1:xiveb-lehek-vekox +round1:xigiz-higal-cirax +round1:xoziz-kylah-lecyx +round1:xibir-hozah-medox +round1:xehib-lycah-botix +round1:xurez-mydem-novax +round1:xihad-kuhun-bykax +round1:xunod-zumur-nomyx +round1:xetap-numyh-zumux +round1:xuhef-cycyc-kugax +round1:xofar-nibuf-bapex +round1:xunip-tizuh-pimyx +round1:xifoc-feboc-kotix +round1:xudic-fumep-pumax +round1:xitop-nekyl-bimax +round1:xekoc-kaber-rylox +round1:xuzas-dorav-lygax +round1:xezit-ryses-mybyx +round1:xodac-vunoc-dosox +round1:xidok-laram-gubox +round1:xemok-zukol-pasox +round1:xudip-nehih-zahux +round1:xesob-mudir-sozyx +round1:xumak-lubuv-dycix +round1:xekaz-zicez-denux +round1:xibog-lafoz-sidox +round1:xekod-kakup-rylex +round1:xupet-pihan-belax +round1:xirip-hefom-zalyx +round1:xomek-hyfez-vunax +round1:xebim-fecik-povex +round1:xuvac-niras-kicyx +round1:xizop-viner-varox +round1:xebov-nisuf-tisix +round1:xebig-nifol-byvix +round1:xibeh-somug-nimux +round1:xoloh-letin-rakax +round1:xehaf-fevob-pavix +round1:xupis-mirup-pybox +round1:xunoz-zadom-bosax +round1:xitev-guket-pulax +round1:xihin-fukab-pevyx +round1:xegil-ruhob-hebyx +round1:xileb-tucog-mamix +round1:xisod-cobun-debyx +round1:xilab-fymap-vovax +round1:xenon-hepyv-nonux +round1:xutip-barum-kozox +round1:xonos-vofym-hupox +round1:ximad-retav-rykex +round1:xisab-hukes-bigux +round1:ximeb-kozoc-hazux +round1:xesos-hinat-kutux +round1:xomiz-gopip-ketux +round1:xehar-lakes-garex +round1:xokil-tyvar-cibax +round1:xofin-cakam-fehix +round1:xomes-cadab-fanax +round1:xumet-vumin-tazex +round1:xufoz-bovaf-tymox +round1:xeras-lykeh-totax +round1:xukeh-sohiz-vabox +round1:xobob-runev-megex +round1:xikek-kaluf-kytex +round1:xutal-nekif-becyx +round1:xibac-bibab-vigex +round1:xokof-lavyv-tipex +round1:xofad-cyciz-zumyx +round1:xiseg-lyfos-sorix +round1:xuzob-vacal-sisax +round1:xecot-vicyp-bebax +round1:xusif-lopat-terox +round1:xides-movyn-gopex +round1:xonof-neleg-lusux +round1:xipev-mageb-cecyx +round1:xovon-vivah-bazex +round1:xetoh-goziz-sitix +round1:xecet-sidon-hugox +round1:xocon-gatat-bafyx +round1:xosoh-cozus-bazox +round1:xutem-gunyt-hihyx +round1:xehih-nudek-vogox +round1:xudar-lyvoc-dydix +round1:xulak-huves-vihux +round1:xoleh-roref-darux +round1:xizaz-varos-sudox +round1:xizog-sedyf-mibox +round1:xohef-momuk-sodix +round1:xirir-symup-libax +round1:xefeh-rosib-kogax +round1:xidad-zubuk-tysox +round1:xotes-kakam-rucix +round1:xinac-befav-fagax +round1:xunec-mepub-zovyx +round1:xekad-vocid-dicox +round1:xumav-cacim-fegax +round1:xufez-pybep-tofix +round1:xunac-cunev-babux +round1:xular-cegyl-lotax +round1:xibec-lavib-hakux +round1:xezic-kabez-comex +round1:xoreb-babyk-legix +round1:xugaz-vavac-gahyx +round1:xeteb-doron-zynex +round1:xobib-gohob-mykax +round1:xivef-mikuz-dabax +round1:xotig-cabyk-rimox +round1:xomez-sefyb-secax +round1:xogil-gyruz-femax +round1:xibav-pamaf-zibex +round1:xudop-paduv-besex +round1:xofic-bozit-dytux +round1:xufoz-vybor-dihex +round1:xuzim-byhat-synux +round1:xohez-gorir-gufex +round1:xucol-pizeh-zydux +round1:xulic-camuz-favex +round1:xudat-vekiv-tatix +round1:xuvef-syzen-lelix +round1:xuhev-hupiz-gosix +round1:xetiv-nuper-cycix +round1:xikoc-nufyb-cidux +round1:xilol-kodym-mimox +round1:xisit-vazob-kahix +round1:xunik-sutem-nugex +round1:xitek-labyt-vugox +round1:xusol-vodif-bitux +round1:xokoz-besyg-rycux +round1:xecil-picuk-tymex +round1:xoris-covis-rumox +round1:xuhiz-zebaz-lacex +round1:xisag-penif-pudex +round1:xisav-silyp-zobux +round1:xigac-gatil-cikax +round1:xenin-mukup-lifux +round1:xonig-vamyd-pilax +round1:xukiz-gacen-dabux +round1:xopoz-muloh-cyvyx +round1:xugoh-syvuz-bisax +round1:xovin-haryf-medax +round1:xodan-gipep-zipex +round1:xigeg-samil-hupex +round1:xitip-nydur-sepox +round1:xofaz-tuhob-mikox +round1:xoziz-hykir-pucox +round1:xogih-sokim-sevix +round1:xehis-netot-sacox +round1:xevam-sykan-gyzix +round1:xoded-bilep-pazax +round1:xemel-bacus-zupyx +round1:xibiz-fytam-fygax +round1:xozog-cycon-kidix +round1:xirov-zucyk-pacyx +round1:xiseg-hogez-zatix +round1:xoken-zizik-culix +round1:xulik-tomyt-fegux +round1:xohat-lycaz-tycex +round1:xumas-rozif-bogex +round1:xeliv-ronus-ravyx +round1:xibob-kibop-movyx +round1:xisis-teted-parix +round1:xokav-hosab-locux +round1:xotos-binap-hefix +round1:xokid-pyveh-divux +round1:xumit-mavak-cevux +round1:xuder-vigud-tafix +round1:xozet-kityv-kitax +round1:xepit-kazuc-degox +round1:xileg-lipuv-sinyx +round1:xuvit-myfyb-nulux +round1:xicog-kilat-kusox +round1:xiriz-dugel-vemux +round1:xenit-tires-nuhix +round1:xugen-bezug-gabex +round1:xilov-ribec-pumix +round1:xufot-culoz-disyx +round1:xunob-filim-luvox +round1:xidab-gugun-syfex +round1:xizap-vorol-tusix +round1:xodev-facik-bazux +round1:xumap-halop-fycyx +round1:xeked-cotib-halix +round1:xihop-pynuk-lorox +round1:xogav-surel-topyx +round1:xorem-lufyz-pycyx +round1:xetat-bulag-zygex +round1:xovil-cygup-mavix +round1:xizap-tytor-vofax +round1:xofod-vocok-lubux +round1:xecoc-kadit-zozyx +round1:xupeh-sacec-lyfyx +round1:xefin-cyhyk-bokox +round1:xeveg-ragiz-cilix +round1:xuger-tufak-hezyx +round1:xomif-kyviz-cogyx +round1:xicec-penin-kudax +round1:xunir-hozyk-kisox +round1:xiziz-vivaz-rimix +round1:xicem-ronys-kagex +round1:xugah-siban-dazex +round1:xozas-muhev-zunix +round1:xodom-hilis-dobux +round1:xevig-vupav-sefex +round1:xugoh-gepof-namex +round1:xurop-neged-rodax +round1:xoheb-zibum-puzax +round1:xefiz-hidam-penox +round1:xokil-hibob-mapix +round1:xelef-pubok-girux +round1:xuseb-bolir-popix +round1:xipor-dyryb-zalax +round1:xezir-fimir-borix +round1:xumat-bebon-cabux +round1:xulad-kedid-mepox +round1:xihoh-dacul-kydax +round1:xerin-gutup-dipux +round1:xinoz-mitep-febix +round1:xocac-rikyk-lizux +round1:xesos-pasub-likix +round1:xunir-zigun-talyx +round1:xonon-pyhyc-pizux +round1:xuvez-fegem-nihix +round1:xicih-sanih-nanyx +round1:xuhed-mavah-tugux +round1:xezor-gilop-tucux +round1:xorom-podif-pizix +round1:xivid-cefuh-kalax +round1:xepac-vysep-tevix +round1:xoroh-nynos-tygyx +round1:xivig-gudah-kefax +round1:xikoh-koviz-pasax +round1:xofer-zonak-copix +round1:xofec-fudat-hogux +round1:ximog-nosil-nezyx +round1:xihin-suzuv-punox +round1:xopid-gumof-nizox +round1:xepoc-pifuc-lavex +round1:xezac-taluf-merex +round1:xepip-gogir-dofax +round1:xohav-tecap-zidux +round1:xelom-figug-tabux +round1:xobib-rotum-dyrex +round1:xutoc-baryr-selex +round1:xefig-hurur-fymix +round1:xuric-gihyf-tulyx +round1:xegol-fonot-bykyx +round1:xiham-nufom-lilex +round1:xocah-binan-debox +round1:ximem-fapak-cugyx +round1:xukak-pobis-pagox +round1:xicis-tagyv-vylux +round1:xibac-kizoz-notix +round1:xehon-syzet-tofix +round1:xidor-kytyl-zogex +round1:xoban-vovys-hilox +round1:xetip-fageh-vytax +round1:xobov-fanel-kozox +round1:xinel-vepor-bafex +round1:xibik-fukug-pitux +round1:xofin-hined-cobux +round1:xicil-zafiv-rakux +round1:xevok-fofum-demex +round1:xecot-focyr-pypix +round1:xuvep-zugus-fefyx +round1:xomel-laduk-medax +round1:xibop-pomah-kekax +round1:xorem-kifog-fozyx +round1:xezal-zadim-dekax +round1:xulos-dilis-zifux +round1:xolot-sabos-ruvex +round1:xesid-tyzip-nafux +round1:xofed-zogen-hazix +round1:xunav-boguv-mydix +round1:xegip-pucif-larix +round1:xuver-vehyb-dolyx +round1:xepik-colak-vefyx +round1:xenet-nehyh-lerax +round1:xunom-hyzuz-balax +round1:xusif-dymoh-hugyx +round1:xuzab-folek-fotux +round1:xodac-duked-secix +round1:xusoh-kuhun-tynex +round1:xuler-sebov-ripix +round1:xemed-tygef-pahix +round1:xigas-lobop-mepox +round1:xuram-dacut-munux +round1:xilar-tyrid-lisyx +round1:xekil-padyv-hicyx +round1:xotof-fibev-rytux +round1:xorab-tybib-sonox +round1:xelis-kerun-mypyx +round1:xozav-leven-nifex +round1:xivem-pohus-fahyx +round1:xetiv-zuhip-dylex +round1:xemim-kefif-zozox +round1:xunep-barih-kezex +round1:xucez-bacig-bydix +round1:xebod-gybyg-gecex +round1:xihav-kuhyr-vipex +round1:xemos-vaced-cepux +round1:xosat-posyg-goryx +round1:xofir-repib-zibax +round1:xogig-fypon-zilex +round1:xunaz-lanof-lumix +round1:xovim-gibyl-kekox +round1:xigip-bipap-bomix +round1:xozag-vupep-lecyx +round1:xedob-puhoh-tilix +round1:xoreh-lugok-refax +round1:xucef-hyseg-bysex +round1:xogim-gikir-vorux +round1:xekoc-rydag-kenox +round1:xeseg-bucug-fubex +round1:xosah-vahig-luvyx +round1:xoged-kukyd-puvix +round1:xeker-faraf-pivux +round1:xobac-zycir-vocox +round1:xehih-barag-nepyx +round1:xotop-bapor-vypox +round1:xufek-difac-gisax +round1:xupaf-labak-mihix +round1:xiceb-pahic-sopox +round1:xetaf-nibym-vafix +round1:xunap-fegiz-befux +round1:xokol-rihev-nedyx +round1:xebev-zyleg-gygox +round1:xupad-fyled-huhix +round1:xiziz-siryf-sikix +round1:xotaz-rymep-vytex +round1:xumel-harod-pevyx +round1:xigik-fidyf-voryx +round1:xemep-hyfag-hyzex +round1:xivof-durys-becux +round1:xumip-mygac-mifex +round1:xigeh-zopuz-hibox +round1:xiteg-vuzap-zozax +round1:xevef-tonyl-tihox +round1:xuhil-hetem-befix +round1:xufiv-runeb-dyzex +round1:xecek-disar-dogux +round1:xumed-hapik-lyrex +round1:xivab-dedyl-facyx +round1:xipit-zakif-bihix +round1:xedot-pepyh-bodex +round1:xifes-rupuc-dilyx +round1:xuner-recez-rapix +round1:xobeb-myzul-zolux +round1:xohov-sogil-facox +round1:xolop-dilor-varax +round1:xepam-zopek-hosax +round1:xicob-hudos-gupyx +round1:xohen-fivuv-gipex +round1:xibas-kagol-cycax +round1:xumod-vubug-basox +round1:xemod-teluf-dyrux +round1:xigih-cabic-betax +round1:xomam-heniz-vusax +round1:xuloc-zobov-subox +round1:xulin-mitod-lesox +round1:xekar-tihed-hodix +round1:ximal-lazad-gygox +round1:xuvev-lenev-lidax +round1:xiben-gihef-fagix +round1:xogac-cuguf-revix +round1:xirom-kyzyh-hufix +round1:xodek-nezyt-pyfyx +round1:xekek-luhev-fobex +round1:xizez-rakic-myhyx +round1:xuril-zugen-cavix +round1:xodit-cufer-zubex +round1:xovor-tyhyg-dipax +round1:xisoc-mamok-lafox +round1:xuvip-vydyg-pevyx +round1:xifif-gakaz-ducyx +round1:xubog-bilin-nodux +round1:xusaz-vumar-pibix +round1:xogef-gedun-kanax +round1:xefon-vevuh-hivix +round1:xekon-fazur-kotix +round1:xureh-rudan-pysyx +round1:xogek-gykih-civex +round1:xibig-fedyh-kykox +round1:xipep-bekem-gagax +round1:xolop-vukyv-dykox +round1:xoham-babyf-pecax +round1:xihem-mavof-hisux +round1:xizis-cihob-vudux +round1:xisep-rihaz-fonax +round1:xorib-katif-fybox +round1:ximer-zates-tanex +round1:xotaz-hadat-ranix +round1:xomal-siguh-purax +round1:xolan-duvaf-fucyx +round1:xecah-setud-depex +round1:xedah-sohiz-relex +round1:xirad-tunoc-cohux +round1:xineh-binec-mykex +round1:ximem-natyz-vilyx +round1:xovin-finyd-hysax +round1:xorob-bicek-pykix +round1:xetop-zulas-virix +round1:xifev-helir-hinux +round1:xolin-pyres-sulox +round1:xihez-vigut-vibyx +round1:xudev-kunyl-sudyx +round1:xomec-tunor-sytix +round1:xorav-mobod-cikax +round1:xufah-rihod-befyx +round1:xotiv-luceh-sysix +round1:xekop-vibif-lalex +round1:xohif-hyzyc-hakux +round1:xohis-litas-kilix +round1:xuzam-gerab-pihox +round1:xezov-syped-sybox +round1:xehon-nusam-gitix +round1:xedid-lamol-rutix +round1:xefok-rusak-zusyx +round1:xidom-diryn-gehyx +round1:xudic-dyfec-nusex +round1:xukos-naher-vakix +round1:xemod-tidum-bykax +round1:xokag-ninyg-kyrax +round1:xugik-moled-rukix +round1:xeboc-volav-livyx +round1:xikoc-ditib-senox +round1:xesal-cyhog-cezix +round1:xovad-tamon-lygox +round1:xeper-rydud-vecyx +round1:xebid-ruled-dalux +round1:ximad-femaz-lulux +round1:xofab-togeb-hupix +round1:xuveb-zaric-dezex +round1:xical-sapuz-cehyx +round1:xufil-dudyz-nupux +round1:xepok-tipul-dofix +round1:xicer-ronaz-cihyx +round1:xovoz-lupic-rorux +round1:xuhap-gateb-mabyx +round1:xobob-pusyl-cavux +round1:xibos-zazip-hohyx +round1:xucid-logah-cevax +round1:xigeb-pipiv-nilex +round1:xocag-visiz-mekex +round1:xezid-mazeh-kerax +round1:xibod-gehup-pypox +round1:xusap-cekid-kegyx +round1:xiroz-cubyd-pugix +round1:xudas-dyvos-rupux +round1:xevog-tokeh-nynux +round1:xobab-hopol-zibex +round1:xupic-myzos-ziryx +round1:xidev-hiryr-sykyx +round1:xubed-cotaf-fopix +round1:xuner-buzum-kakix +round1:ximik-zehuh-cuzux +round1:xucid-tobav-gyrux +round1:xozoh-dovym-kitux +round1:xunol-rykub-hukux +round1:xosiv-byres-tevux +round1:xipit-hicah-cycox +round1:xegif-ryguv-nesax +round1:xibat-gatus-kykux +round1:xegov-kutoz-kesox +round1:xesez-gatyf-bimix +round1:xofov-gemut-ratyx +round1:xinev-lodun-pylox +round1:xikan-gudiz-dobyx +round1:xesot-zyfol-helax +round1:xugon-dolek-nycyx +round1:xeroz-badyh-refex +round1:xitat-bifut-zetox +round1:xekag-nisam-dubox +round1:xidav-famuv-sylex +round1:xetor-nanig-mybyx +round1:xutoz-cohyh-hymox +round1:xekih-bafub-lacux +round1:xunan-satym-ludyx +round1:xehav-hunys-katax +round1:xuhav-tazer-cavox +round1:xufih-humok-sirex +round1:xulec-devoh-padyx +round1:xocez-basut-figux +round1:xifad-nugir-rohyx +round1:xefad-fysuz-rirox +round1:xolam-solov-lufex +round1:ximab-reheb-fuvix +round1:xodes-huren-lepix +round1:xofon-byger-hisex +round1:xiver-fyhof-gufox +round1:xetis-nyhep-lyhyx +round1:ximom-hyber-typax +round1:xoher-disil-vegyx +round1:xenoc-fomug-rilex +round1:xizog-tecig-rutex +round1:xotap-tedec-vepyx +round1:xivan-colyg-hucox +round1:xodok-sodir-vetox +round1:xohac-nylob-sahex +round1:xufih-cuzig-gufax +round1:xicin-dabuv-vusex +round1:xepag-gibeh-kihox +round1:xusah-dohek-fuzux +round1:xilif-pulod-ropyx +round1:xurar-dalel-botex +round1:xidip-huram-sogox +round1:xukim-ninyl-turyx +round1:xebag-lazap-nasax +round1:xovak-nabek-mepix +round1:xuval-hacyv-fupux +round1:xifos-fygap-vyhux +round1:xizok-togav-pihix +round1:xeboc-henut-rokix +round1:xorak-ruluv-pyzyx +round1:xocez-vuvof-papix +round1:xomop-buvef-dibux +round1:xopap-rusat-vazux +round1:xokip-buhom-lacax +round1:xeval-cisin-sunyx +round1:xupac-femuh-vymix +round1:xidik-mokuf-ledyx +round1:xebek-bared-kazex +round1:xodom-cadel-zuvux +round1:xikiz-hetod-cygyx +round1:xorob-lugyd-pezox +round1:xetos-mytyt-sogox +round1:xubid-lepyb-gagax +round1:xogof-delat-nucux +round1:xigit-koveb-hopix +round1:xusaf-demoz-kuryx +round1:xigav-nalet-kimix +round1:xikiz-kadyp-kozyx +round1:xorev-lezeh-gifex +round1:xenol-revip-fudix +round1:xehih-bicaf-velox +round1:xurid-dupyg-pivox +round1:xibop-fityr-kutux +round1:ximoh-zodoz-bebix +round1:xoheh-kokyp-helox +round1:xecik-lavin-ledix +round1:xosid-gacyd-kyrox +round1:xuven-hufyd-gocox +round1:xumel-tufud-tedex +round1:xolom-lybap-zafux +round1:xezir-mefop-byvax +round1:xemov-mudul-rusex +round1:xofez-kisov-rolex +round1:xodod-kysek-gorax +round1:xudec-kegam-gohyx +round1:xuzac-danys-bepox +round1:xehic-narom-sicix +round1:xesat-bufih-talax +round1:ximiv-budif-zokix +round1:xogat-lymok-sedax +round1:xomis-nisir-kolux +round1:xosep-tegoz-sahax +round1:xived-decof-garux +round1:xolef-hevam-kivox +round1:xumat-minal-tevex +round1:xubom-homag-lovix +round1:xulil-vahal-suvux +round1:xesam-cyzik-nunux +round1:xiteh-honuk-pemax +round1:xilov-savum-tidix +round1:xisev-bibyp-suvex +round1:xuzoh-karoh-kyrix +round1:xesog-tovih-dybux +round1:xukif-gebar-gazyx +round1:xerag-nones-banyx +round1:xihog-gabas-bigex +round1:xepog-nudom-cegix +round1:xibet-vakid-calyx +round1:xodiz-gorak-rabex +round1:xipem-sunyb-fucex +round1:xovot-bavot-hihox +round1:xezom-nirik-vypix +round1:xikok-bavos-lucix +round1:xuleg-lagog-muhux +round1:xofad-dyleg-lygax +round1:xobiv-cakyf-gigox +round1:xokis-nized-vunyx +round1:xinid-kihip-zitex +round1:xogov-ficep-zulox +round1:xohik-bamem-detyx +round1:xedef-sifah-ledax +round1:xeses-dybel-husax +round1:xomeb-citum-pirix +round1:xubav-faneb-nubux +round2:xidas-fytyn-tivyx +round2:xukid-gofyd-medux +round2:xihag-byvik-sykex +round2:xukam-geker-dezox +round2:xerip-kedyb-ganux +round2:xirec-kadek-fitox +round2:xokov-fatul-sovex +round2:xumep-bikon-rykux +round2:xusif-kinat-rypyx +round2:xuled-kafig-sabyx +round2:xozob-hazim-banox +round2:xufec-nibet-lylux +round2:xirag-hobot-vebyx +round2:xuhos-feriz-cidex +round2:xezeb-zahuk-fymix +round2:xuned-hesuv-nemux +round2:xesih-negov-rehax +round2:xocat-gumaz-sozix +round2:xerot-zekum-vahix +round2:xifeg-zegec-fonex +round2:xoces-cumyk-ravix +round2:xosav-vamyg-pabax +round2:xevog-rilem-pymux +round2:xunak-todot-hepox +round2:xociz-cudip-cebex +round2:xumeg-mupek-hasox +round2:xorav-defyg-lutax +round2:xikaz-higob-lokox +round2:xesih-divar-sahax +round2:xugof-zygev-sulyx +round2:xoget-hucuv-dacix +round2:xuhor-hihed-mavyx +round2:xudin-gisod-mipax +round2:xumaz-lovaf-tylyx +round2:xoreg-zipig-lulax +round2:xisot-ceveg-bupax +round2:xohiv-zusit-cahox +round2:xeban-hugus-zifix +round2:xotag-bunek-kulux +round2:xupac-cusur-lurex +round2:xisic-kybes-pitox +round2:xekad-cihat-lozex +round2:xugiv-vupyg-vupax +round2:xufib-helib-vadex +round2:xunec-kypen-gicex +round2:xevol-pifig-hifax +round2:xusid-polim-lysex +round2:xecah-tevul-desux +round2:xobad-vafud-rucix +round2:xehim-dogef-zolix +round2:xumik-vaneh-curox +round2:xevet-ligub-cefex +round2:xivaz-belor-musyx +round2:xumeb-syvuv-canex +round2:xizag-vupyb-mylex +round2:xovib-pogud-menux +round2:xofig-buhuc-volax +round2:xicad-pevyk-pisyx +round2:xuram-tybev-kepyx +round2:xogog-gerur-cizex +round2:xuniz-fykoh-ganyx +round2:xukos-nepid-sytax +round2:xenar-kogog-fufox +round2:xipok-zugir-dapax +round2:xukek-hycic-nibux +round2:xilaf-rafet-cidax +round2:xuvin-bafyv-minix +round2:xirik-vapyl-falyx +round2:xehen-cobif-tezix +round2:xurav-puvav-vurox +round2:xitiz-guzes-kirix +round2:xotip-gocam-lufix +round2:xivaz-huseb-lunix +round2:xetan-tufys-filix +round2:xekol-ribet-netex +round2:xilad-terib-hymax +round2:xudag-bymal-horyx +round2:xetiz-harys-dizax +round2:xidoz-zyfar-fibax +round2:xubin-tised-mobux +round2:xikin-litaz-dodax +round2:xunek-gacib-rezux +round2:xuvat-vitog-divax +round2:xorak-tacor-nubix +round2:xupen-bydon-cyvix +round2:xopar-kuhet-sorax +round2:xemeh-catyt-myhyx +round2:xosos-fufih-dyhex +round2:xizem-myheb-dynox +round2:xoliv-cafan-hynax +round2:xukig-duhol-tihax +round2:ximig-potiz-rozyx +round2:xegoz-mipav-dobax +round2:xiriv-mamyt-lakax +round2:xoheh-basub-kylux +round2:xeriv-vuzyc-rosox +round2:xutid-gyzic-fydyx +round2:xirop-temyz-culex +round2:xobil-fulyg-tohax +round2:xilih-pupem-manix +round2:xudil-kifuc-mydex +round2:xenog-tegav-sonux +round2:xikas-dibyd-volux +round2:xocak-nupus-docyx +round2:xenig-hesyr-dobox +round2:xivoh-haloh-sagax +round2:xehed-bykan-puhex +round2:xurof-fusad-fuhex +round2:xovas-tafan-tytox +round2:xosip-bicoh-devyx +round2:xiceh-fenih-fecox +round2:xopim-gukir-nerax +round2:xepar-nofef-cahox +round2:xetot-guref-takyx +round2:xemov-bimim-mytax +round2:xigoh-vilac-curux +round2:xepaf-fakos-fezex +round2:xolol-sonog-gopux +round2:ximep-pyhul-begax +round2:xutir-kocof-palax +round2:xegon-tivip-besix +round2:xecis-midyt-zifyx +round2:xitop-kohet-fetex +round2:xinom-ronep-lipax +round2:xelad-nifyg-decyx +round2:xudem-pynor-hifex +round2:xidil-betac-kukix +round2:xofak-mogob-huzyx +round2:xocik-tubeb-nocix +round2:xedez-sutip-sebux +round2:xusir-pipip-pohex +round2:xokof-vagor-nacax +round2:xirov-nifep-bugox +round2:xekes-kobat-tibux +round2:xivin-zukiv-zufex +round2:xevot-fefib-fasyx +round2:xegif-sitig-puhux +round2:xohes-kyhag-cyfex +round2:xesez-nupur-nylux +round2:xobeb-fyteb-selix +round2:xizot-zisir-cilix +round2:xereh-gybuh-sapux +round2:xevip-picas-zomux +round2:xotas-vohal-culux +round2:xifok-zobam-tofix +round2:xovol-fuzyc-nesix +round2:xetev-zasam-vepex +round2:xovel-zapyh-bipex +round2:xizof-mogih-fadux +round2:xuciz-vilus-vukex +round2:xifiz-hebic-dutax +round2:xores-pyryc-lumex +round2:xenar-lopem-hupax +round2:xuket-gimiv-calux +round2:xidon-vukig-bifyx +round2:xorem-belyd-bezix +round2:xorac-palil-desax +round2:xetot-voziz-metex +round2:xezes-colib-furox +round2:xonet-vyfib-cazox +round2:xudik-synut-hanox +round2:xetov-neguh-midux +round2:xokod-vuzal-botex +round2:xenem-boseh-fygix +round2:xudif-pemet-movyx +round2:xekor-gymuc-nypyx +round2:xuboh-bubip-rovyx +round2:xosis-novyv-gytux +round2:xisaf-difil-puhux +round2:xeroz-tikit-cogax +round2:xibaz-foryk-cimex +round2:xomat-dyder-suzox +round2:xibal-kiled-gobox +round2:xufip-fogeg-mumax +round2:xedoc-delam-humax +round2:xebac-vipag-nunox +round2:xevis-zenic-dicix +round2:xenid-hyfot-curix +round2:xebil-veboc-lokyx +round2:xufid-virin-hutux +round2:xoser-vekag-kabux +round2:xoket-dolun-vumix +round2:xinah-zuguv-nebox +round2:xuriv-gybyp-tegox +round2:xobom-ledyt-tyzox +round2:xumiv-bepik-sulyx +round2:xikid-risym-divax +round2:xibac-hegol-culex +round2:xogag-fobad-vugox +round2:xesol-myrym-legix +round2:xubad-bugon-gohax +round2:xokon-bybod-zezux +round2:xepas-cecuz-kobex +round2:xofec-herav-pymox +round2:xozim-kasyt-gybyx +round2:xidol-zycer-benyx +round2:xegac-lupan-lasux +round2:xupab-legum-cetax +round2:xolon-nibiv-dekux +round2:xibim-duzoz-zylex +round2:xefib-refim-vysyx +round2:xovid-muzym-pygux +round2:xihic-sahuh-zigux +round2:xegoh-sidyd-vuhux +round2:xugaf-zicon-madex +round2:xefec-bygah-pugyx +round2:xicoh-pyvur-tohex +round2:xihaz-fypod-lifax +round2:xegob-mifez-nivux +round2:xurob-tebac-dasux +round2:xivel-pupeh-nanax +round2:xefaz-deguc-lakix +round2:xogeg-sanic-rigex +round2:xiron-nafet-pabax +round2:xesok-gepet-kybex +round2:xikob-dydac-kagax +round2:xopon-hevad-lonox +round2:xikel-penif-dytyx +round2:ximaf-bitav-vagux +round2:xinak-dapov-mozox +round2:xukos-bukib-pasox +round2:xifac-zukuh-lifex +round2:xorat-furym-zazyx +round2:xifab-ropub-metox +round2:xufit-muniz-nodox +round2:xinip-kupun-nucax +round2:xuhat-zudur-secax +round2:xovov-kymag-terox +round2:xevic-setud-pedex +round2:xupab-kyzof-legix +round2:xovek-gumin-pohox +round2:xugat-fepyb-lygix +round2:xosil-nenik-rufox +round2:xifir-fuhed-bofox +round2:xokar-mipyc-delyx +round2:xufoc-fabed-zumax +round2:xigan-movec-vuzex +round2:xefab-dudam-radyx +round2:xufaz-hehuc-kuhax +round2:xenat-mykic-tykux +round2:xefiz-fyvuc-vuhyx +round2:xehid-zyzur-gedux +round2:xutan-bahot-cahix +round2:xeriv-veneh-hazux +round2:xilin-cedop-macax +round2:xefic-lagyv-mepyx +round2:ximir-nalim-lezyx +round2:xerab-zymah-vizax +round2:xivef-lesuc-zolex +round2:xibek-rafym-fubix +round2:xeter-fumul-dehex +round2:xuvan-fyvyl-rylox +round2:xefah-cugyn-repox +round2:xeveb-gacyl-hemex +round2:xurih-moher-mogux +round2:xodos-basyr-cygox +round2:xeneb-loryf-lafax +round2:xupev-liryl-pifex +round2:xosal-cihys-lebox +round2:xocoz-tufud-panix +round2:xufob-vypar-nekyx +round2:xudov-loded-pelyx +round2:xecif-gydyt-hecox +round2:xiped-cazyl-ledox +round2:xihag-cykuv-fydix +round2:xepot-rotut-rapex +round2:xinip-hugop-lobux +round2:xilig-livof-pahyx +round2:xolof-kynub-bimox +round2:xibek-hubyt-fybux +round2:xipot-pobok-cucox +round2:xibev-fyrev-punax +round2:xuzer-hekos-dyrix +round2:xesof-lufuf-sumux +round2:xogiv-batuk-sokex +round2:xifoh-vunan-helax +round2:xivov-vapyh-hagyx +round2:xiciz-nipyd-mezox +round2:xepoh-vekor-vybux +round2:xodez-pypuv-zunyx +round2:xoseh-hylih-zisax +round2:xikal-fysuf-fymux +round2:xeriv-fifok-mirox +round2:xodef-hodit-tifax +round2:xigan-nadal-befox +round2:xuvod-garas-cotax +round2:xuris-gityl-vinox +round2:xemeb-tyzez-kelyx +round2:xedeh-mohog-remux +round2:xikoz-zyzis-vadox +round2:xucez-pivil-vipox +round2:xizog-rurep-turyx +round2:xisas-dydib-vasex +round2:xunin-tufec-febex +round2:xikap-cibud-dycax +round2:xecen-dahor-molux +round2:xumov-kicen-tabyx +round2:xetag-lypuh-fanox +round2:xilak-bipah-kybox +round2:xovah-kilid-zagex +round2:xezeb-rybim-lepyx +round2:xukop-lovug-sogex +round2:xitev-micyf-zigux +round2:xupoc-tygol-cacyx +round2:xeref-kilyc-nigex +round2:xeheg-vutuc-rodex +round2:xopem-lytyz-mozex +round2:xokig-dageg-zevax +round2:xeces-vanel-ledax +round2:xufav-lozov-mucox +round2:xulic-vagim-hokyx +round2:xupid-zalan-fasox +round2:xenos-zicur-bopax +round2:xozal-hyvih-lupox +round2:xinav-kegep-rigox +round2:xusok-tovit-hidix +round2:xokol-hepak-sosix +round2:xevim-zirub-hupix +round2:xivab-gycar-kuzex +round2:xuhep-kagih-gifyx +round2:xorar-hafur-dymyx +round2:xotip-zupym-rokox +round2:xezez-gesem-turox +round2:xebel-dotuz-fukyx +round2:xeser-tycan-kapox +round2:xipis-tefuv-hilyx +round2:xelem-zyfaz-typux +round2:xemod-tumur-zodox +round2:xogis-momiz-cydux +round2:xeced-cukok-kulux +round2:xevah-sucun-mybux +round2:xumon-mikop-focux +round2:xofif-kyvuf-legax +round2:xoson-dazor-vepyx +round2:ximed-caveb-holix +round2:xohov-lagad-byhex +round2:xuvan-cusob-narox +round2:xufam-biruk-semux +round2:xibol-kyron-gutox +round2:xoten-cunib-hykox +round2:xizal-mabod-setux +round2:xutic-bazih-bykux +round2:xehib-dyhyh-kodix +round2:xinot-lymil-syfyx +round2:xuzer-tyduf-tufox +round2:xufob-govyl-bofex +round2:xipad-nopyd-gesex +round2:xodoz-citen-cabox +round2:xotas-lotyp-buzux +round2:xevic-tizip-cupyx +round2:xinan-lycyb-govix +round2:xovom-zisuv-zitax +round2:xepop-zisuf-fyhyx +round2:xokac-gygom-vobyx +round2:xulag-davus-cezyx +round2:xosif-hobep-kifox +round2:xudet-koton-kemax +round2:xuroz-sebub-hufux +round2:xicof-cezic-mylex +round2:xehir-pamyc-muzax +round2:xunoh-latip-cylox +round2:xokis-tyzum-lynux +round2:xehit-rigaz-kukex +round2:xidil-tiher-gazix +round2:xirac-mikyn-kizix +round2:xevik-kudim-zurix +round2:xozin-mahep-ramux +round2:xokin-rudig-zunox +round2:xevak-simes-sohux +round2:xufav-todup-civux +round2:xosep-kinup-lapix +round2:xebor-debav-bulux +round2:xecim-buriv-fobox +round2:xiceg-hatok-gypex +round2:xicef-rodic-bipox +round2:xeboh-sefel-nolox +round2:xudob-cihoz-kysox +round2:xikim-vapyt-pipox +round2:xehov-revav-suvax +round2:xipod-bafal-sekix +round2:xemig-licem-himex +round2:xemoz-vivic-dofux +round2:xesim-zoniz-rizix +round2:xitot-venud-bekix +round2:xigaz-penog-rirux +round2:xulec-fypon-kidax +round2:xodir-movog-sirex +round2:xozad-kykaf-pebix +round2:xegos-lobys-zegox +round2:xipif-daped-ryfox +round2:xidoc-rylif-pylux +round2:xuref-komag-nityx +round2:xedom-socud-pevax +round2:xogen-gafyr-zecux +round2:xidos-menit-hobix +round2:xufem-vudir-sohex +round2:xuziv-nazip-kopux +round2:xevos-dekam-pycax +round2:xepeh-nycyc-kydux +round2:xelim-gisok-zelix +round2:xulic-sylan-hozix +round2:xutoz-pybob-kuhax +round2:xuvot-munag-zemix +round2:xisel-cygem-hucax +round2:xepev-kasof-kipix +round2:xepec-zytyv-zepox +round2:xekev-nagim-cilux +round2:xeloh-bibob-mivox +round2:xesoz-bosub-byfox +round2:xeril-vuhym-manox +round2:xecid-zucuc-barox +round2:xomev-zazar-mumox +round2:xurip-tipuh-hilex +round2:xutec-kycon-zazex +round2:xipac-recif-tykyx +round2:xolid-kahet-fitox +round2:xunof-kisuv-fatyx +round2:xiliv-nykim-bosox +round2:xenoz-sitap-bunox +round2:xolac-luhig-sybex +round2:xifab-buvad-rycex +round2:xikoc-sumop-mezix +round2:xedot-pabon-vanix +round2:xunos-bosip-mysux +round2:xomec-zahur-bavyx +round2:xupez-vebaf-kevax +round2:xetin-bibav-dihux +round2:xicoc-fegos-polux +round2:xenas-mibuk-bokox +round2:xonab-vykis-cinix +round2:xumot-peryl-gykux +round2:xorer-dorak-tonex +round2:xotiv-rubit-zulyx +round2:xumil-pelyl-nelax +round2:xulin-tacyr-lykix +round2:xediz-nocog-fozyx +round2:xehez-cakid-pihox +round2:xotaf-hycoc-mekyx +round2:xohek-hagys-ratex +round2:xupak-bakiv-relyx +round2:xehav-lyfim-cytox +round2:xetos-mycop-refix +round2:xufor-bevem-kamux +round2:ximim-dyven-vizax +round2:ximin-hazud-kymax +round2:xuzim-dyrag-kugex +round2:xidab-terol-vafex +round2:xekoc-teref-typox +round2:xigom-zypob-tazax +round2:xedam-sytyd-vacox +round2:xuhit-garuz-tudux +round2:xodos-pefeh-tucyx +round2:xocin-kolid-kenex +round2:xulib-lityp-mihax +round2:xococ-tizez-pocex +round2:xifal-henul-karax +round2:xevon-bydoz-pakox +round2:xobak-rimid-zerax +round2:xelep-supad-mysox +round2:xinog-dotat-hocyx +round2:xuhom-vodir-febex +round2:xutof-vovap-sydux +round2:xinec-cakic-rosex +round2:xunal-pocak-dyvix +round2:xekeh-hobiz-nagux +round2:xifit-cynak-lilex +round2:xulob-ceryc-kubox +round2:xugor-gazug-ludax +round2:xusoc-zyzut-lityx +round2:xocam-patyc-ricex +round2:xegon-motog-pebyx +round2:xotap-casul-tytyx +round2:xusok-cupaz-gumox +round2:xefel-manor-synax +round2:xivop-senis-hasyx +round2:xibah-lilec-birex +round2:xurop-sisig-nilux +round2:xutab-hucuh-molex +round2:xitak-givoh-mukex +round2:xemad-rurac-cylux +round2:xipik-sytup-ginex +round2:xugav-pavek-duhyx +round2:xikic-cubip-kocax +round2:xusor-movuz-gikex +round2:xicef-dekyn-nabex +round2:xemoc-vynul-kupyx +round2:xerel-hyhov-nacux +round2:xeboc-pylog-sakox +round2:xemid-rymad-momyx +round2:xicad-borot-semux +round2:xuvon-moves-pagax +round2:xipiv-sazig-nifyx +round2:xumoz-pytin-fisix +round2:xigaz-voden-datex +round2:xikal-fulir-hetux +round2:xodeb-vebez-mecex +round2:xutis-dunor-pimax +round2:xevag-fygan-zozox +round2:xufot-pakum-cusex +round2:xekit-redil-rufax +round2:xehep-kekib-gysax +round2:xidat-puviv-zimix +round2:xefis-sutuk-virox +round2:xubiv-vyhup-nesox +round2:xudoc-sykyt-lavax +round2:xucos-vozuv-rupax +round2:xuhep-rymes-ryzix +round2:xutir-zegih-nehox +round2:xekop-bifyf-bocax +round2:xocol-fonat-suhax +round2:xemen-dyfun-dunix +round2:xefek-dosyc-fimyx +round2:xelak-sokon-kyvex +round2:xozin-pipok-mamax +round2:xitid-moges-docux +round2:xuget-zeryf-sedax +round2:xurir-zipym-nolyx +round2:xelid-cynac-lyrux +round2:xeral-fyhyz-dogix +round2:xovot-viguh-busyx +round2:xumev-nenoc-pidux +round2:xivin-sizev-sakyx +round2:xezah-mumir-gekax +round2:xohir-vovyl-gysux +round2:xitaz-vazak-lotex +round2:xeneg-vinab-helax +round2:xenad-kezov-tyrax +round2:ximiz-cynyb-fohax +round2:xohol-gucab-fumyx +round2:xorit-davyd-cyhox +round2:xuzec-tires-rusyx +round2:xuces-dozah-vykyx +round2:xucit-tycuc-rehax +round2:xemib-dyfuf-zydex +round2:xokil-lyfyt-gydax +round2:xodoc-kekuv-rokix +round2:xozov-docol-bamex +round2:xikag-situl-robex +round2:xemof-dakur-rotax +round2:xonin-mybub-tuzex +round2:xopeb-sazud-hulux +round2:xotic-hyvar-gonix +round2:xezip-fimur-bihyx +round2:xihar-vozuc-funex +round2:xiraz-fikir-niryx +round2:xufem-menar-barux +round2:xuvoz-girul-sufox +round2:xitoz-mobeb-nygix +round2:xobit-pamiz-hibax +round2:xipem-rolik-ludix +round2:xicog-fiker-timax +round2:xitab-hacyg-kisyx +round2:xilok-lylop-gunax +round2:xubif-malod-gusix +round2:xufih-piryl-rypex +round2:xeroh-panap-bufox +round2:xiris-typek-tamex +round2:xezeb-kagiz-dogex +round2:xihag-cuten-lihex +round2:xerev-suzuk-kekix +round2:xuhil-febim-konox +round2:xucac-luhib-pocix +round2:xipir-mumef-rilax +round2:xikak-nomoz-busux +round2:xunam-licob-nefax +round2:xefaz-rahyv-kegex +round2:xemeh-gicif-lotox +round2:xuhih-tiryg-muzax +round2:xusik-nuhen-kagex +round2:xuzim-nagol-zofox +round2:xucev-lelyn-tudax +round2:xidac-finyf-micix +round2:xunek-nyvot-volyx +round2:xodas-dyseg-zyhyx +round2:xusac-riluz-tefox +round2:xucel-konat-medix +round2:xehoh-parez-licex +round2:xufic-nytag-bifix +round2:xorit-ziher-fukux +round2:xuleh-mydac-limex +round2:xitir-gures-racix +round2:xufog-hytog-lesox +round2:xezid-lydot-kycax +round2:xocer-mysid-cyvux +round2:xeper-hinav-cadox +round2:xonet-pypos-sidax +round2:xemad-nalap-comox +round2:xocot-sohog-dosux +round2:xotef-sihot-ganex +round2:ximim-miryh-zopyx +round2:xegon-ragit-kyvox +round2:xebad-lipuk-katox +round2:xekin-tycot-focux +round2:xenar-homet-todax +round2:xitov-tovab-visex +round2:xevam-romat-tucix +round2:xoloh-sadus-vyvyx +round2:xunes-duzev-rikux +round2:xetet-vezus-nebyx +round2:xupon-zazon-rynix +round2:xirif-dozys-bapyx +round2:xokok-takuc-nofyx +round2:xipof-fevic-cetux +round2:xopep-nefep-zobex +round2:xuhol-pezuh-lylox +round2:xomos-cevup-culex +round2:xupim-litob-zemex +round2:xucis-lonom-sakox +round2:xumem-hybys-dumyx +round2:xucap-matac-micyx +round2:xonem-gyneh-nazyx +round2:xugin-megof-hefyx +round2:xeral-pydif-kodux +round2:xilot-gehys-nivax +round2:ximoh-tageg-ditax +round2:xifob-cedyv-cafyx +round2:xocov-buzak-mefux +round2:xelas-kocef-kofex +round2:xodig-gumyt-nizex +round2:xurol-kuzak-lycax +round2:xucim-vyson-mikyx +round2:xices-lonig-makex +round2:xovel-pifud-bikex +round2:xocel-venyh-lufyx +round2:xobic-bihep-rycax +round2:xinas-luzoh-gafex +round2:xenev-capyr-zogex +round2:xelal-tytib-kusox +round2:xidev-taziv-bydox +round2:xedaf-nados-kocyx +round2:xufeh-cokib-pihux +round2:xikiv-zufed-mafex +round2:xicem-veruv-bazix +round2:xukit-vovas-zifix +round2:xunif-fyvog-bymax +round2:xusiv-sohyc-cenux +round2:xofet-lekon-gadix +round2:xeroz-ravid-typex +round2:xukef-hymeh-huzex +round2:xudif-dineh-sagyx +round2:xokoc-mumir-byvux +round2:xohih-dufug-rehyx +round2:xocef-cunyt-pafyx +round2:xodag-nufyt-pibix +round2:xureb-fykoz-bofix +round2:xokep-palod-cirox +round2:ximiz-palel-vygox +round2:xenes-pupyf-cumyx +round2:xupaz-culam-ruvix +round2:xopil-gazum-mydix +round2:xerim-catab-bemix +round2:xotet-daniz-sufix +round2:xiheh-zekut-suzyx +round2:xosak-fubeb-kybix +round2:xesek-riluf-rygyx +round2:xirib-sunak-ditux +round2:xodel-defah-hulex +round2:xeger-kofoh-nagyx +round2:xenog-lusac-bivyx +round2:xerin-pomic-suzax +round2:xudit-rodop-hitix +round2:xukil-fisel-gudyx +round2:xihaf-lafiz-luvax +round2:xufoc-zuzul-fedox +round2:xesan-rebub-pifax +round2:xunik-movut-zepyx +round2:xoton-gelyn-vuzux +round2:xohib-vucud-topix +round2:xutos-dizuh-mykix +round2:xurip-hilas-lucix +round2:xuzeg-hyroz-hupax +round2:xibic-bykyv-mifux +round2:xehil-bilyl-garax +round2:xobad-sypov-cinyx +round2:xodim-danuz-ralux +round2:xelos-fafyv-betox +round2:xerak-zypav-lomax +round2:xukic-vesyc-fohux +round2:xuzok-kykog-favyx +round2:xedol-lykyk-zymex +round2:xekep-fezov-bivax +round2:xosab-kucyd-sutux +round2:xopap-kufys-gohyx +round2:xegin-folul-kepyx +round2:xopen-hebef-sasox +round2:xuvop-risum-tepux +round2:xenif-gebad-kitax +round2:xofog-zarab-sonox +round2:xidoh-synez-tecyx +round2:xuzaf-dikus-sycyx +round2:xevok-bycup-sybex +round2:xovoc-nutuk-zovax +round2:xulin-zyzaz-pycex +round2:xuhag-movun-zisux +round2:xozag-domoz-nomax +round2:xives-pufud-silyx +round2:xopom-girab-solex +round2:xefak-sysyg-revux +round2:xobin-katav-besux +round2:xozar-myrez-fubyx +round2:xofaf-navyc-nunix +round2:xesal-cepol-dedyx +round2:xivaz-hyzih-nicex +round2:xibik-bylov-falyx +round2:xigov-naham-cylex +round2:xorov-zybyt-divex +round2:xuzir-finuz-hybix +round2:xikal-raced-lagax +round2:xepib-digop-mipux +round2:xizam-gobyv-tasex +round2:xideg-zihok-huvax +round2:xunid-cutun-sovux +round2:xosir-nicah-rypix +round2:xekod-rumub-lazex +round2:xusaf-huvov-vazox +round2:xemas-bitac-vasox +round2:xidor-polis-bupex +round2:xisok-dypif-kovyx +round2:xokec-zuseb-gomex +round2:xukof-nenur-macax +round2:xegir-kukyk-bifyx +round2:xedig-kihek-tehex +round2:xiger-nukep-nubix +round2:xemoh-gepir-nazex +round2:xihes-minok-remux +round2:xukag-bydez-tedix +round2:xomic-direp-homux +round2:xifik-zobof-dezix +round2:xokiz-romin-nukyx +round2:xuzom-cipuz-rofex +round2:xucas-degab-zubix +round2:xuliv-cypov-gitox +round2:xodod-fenoc-zusix +round2:xerah-zihik-nomix +round2:xifoc-cebyv-pazux +round2:xifev-vubam-ratex +round2:xodom-vykiz-kitex +round2:xedab-vakop-firux +round2:xoget-dazeb-vupix +round2:xiroh-vesup-gyfux +round2:xopot-sigaf-samux +round2:xupap-titot-vymex +round2:xiges-torup-ryzox +round2:xotol-ceneh-rihox +round2:xonem-pyrof-vyryx +round2:xobep-selam-nudux +round2:xicek-fefis-hahyx +round2:xuzer-kihir-vupox +round2:xezag-rimyt-ditox +round2:xozot-gohut-kunox +round2:xokep-momyf-rycix +round2:xepig-mesip-rebyx +round2:xocep-capob-pofax +round2:xozam-daker-zupix +round2:xipap-raced-kibyx +round2:xutif-recos-sopex +round2:xuveb-tuved-tibax +round2:xoses-zeruf-gerix +round2:xitib-kugul-bofyx +round2:xupec-giziv-pybox +round2:xifoh-hevec-kivex +round2:xebis-gycyn-samax +round2:xineh-zabiv-bykyx +round2:xetot-gotyr-zipyx +round2:xivop-lomec-norex +round2:xunef-hisep-sinyx +round2:xehoz-lypyz-lybyx +round2:xeved-leveb-nizux +round2:xutef-senir-nilyx +round2:xurat-dudeb-hybux +round2:xuhaf-dumyh-colyx +round2:xozos-bebyr-fulax +round2:xumib-laluv-redex +round2:xuhef-zezuc-butex +round2:xizep-kokot-dylyx +round2:xurad-taduh-detax +round2:xivoc-sidyv-lenax +round2:xivev-sikul-lazux +round2:xisas-gefuz-borox +round2:xinol-zefab-bicix +round2:xepol-sunal-genax +round2:xozab-pakyz-cadax +round2:xetop-nihas-fapix +round2:xefov-norah-fivex +round2:xuden-luvyb-vovix +round2:xumep-sekyz-covux +round2:xefen-vigof-zinyx +round2:xodop-lepav-bizox +round2:xeteb-pozek-kylox +round2:xesal-suzik-micex +round2:xitec-gyluh-dulex +round2:xopat-kalun-kezyx +round2:xubob-pocyb-gesix +round2:xuras-tumed-valyx +round2:xolot-nanez-huhyx +round2:xesoz-nipyk-relex +round2:xipik-bocik-bokux +round2:xekon-kuduh-fikex +round2:xofiz-nonuh-pelex +round2:xokip-raref-kyhux +round2:xenib-dacyd-vezux +round2:xomop-hyvyp-posex +round2:xofac-vulim-tebax +round2:xodip-pohes-cocux +round2:xizik-mulun-holyx +round2:xunat-cykit-telix +round2:xivap-sygob-colax +round2:xenad-vafuc-fakyx +round2:xinor-vucol-canux +round2:xerob-furym-lohox +round2:xovam-pucuz-zyzax +round2:xukin-pypad-picyx +round2:xereh-hasig-dapex +round2:xucan-bykof-negux +round2:xecos-konog-simax +round2:xitef-kovim-kizix +round2:xenaf-mivur-sikex +round2:xipoc-tykal-hunax +round2:xeziv-bafic-masyx +round2:xeniv-bodec-tusex +round2:xosab-nunyn-devax +round2:xezib-vyrud-cegyx +round2:xutah-saken-mocex +round2:xenen-rafad-zipix +round2:xovil-ryzam-todex +round2:xukem-tohep-terex +round2:xehed-calis-bipex +round2:xevav-zozuf-kosax +round2:xelih-fucis-kityx +round2:xibim-tipyc-gapyx +round2:xilap-melef-pahix +round2:xizor-zinoc-cacax +round2:xinak-fezyr-hudux +round2:xezil-medok-cifix +round2:xufev-nydot-ganax +round2:xipoc-namak-robux +round2:xuzoz-kityp-gadex +round2:xemin-nidob-fusix +round2:xigac-forin-gamix +round2:xopec-pysul-zypex +round2:xudef-bugan-bupux +round2:xumor-rakyv-lapux +round2:xiper-vozyr-dahox +round2:xezeb-kifit-pilix +round2:xeden-vucus-degix +round2:xizoc-kuvin-zigyx +round2:xukif-vubis-catix +round2:xemod-nufos-sakix +round2:xegam-huryv-novyx +round2:xebel-guhok-napyx +round2:xubim-byzul-tadux +round2:xolok-gileb-tusix +round2:xizar-cilel-zunux +round2:xehop-zasog-kacix +round2:xokig-bofaf-fegox +round2:xupis-mokum-bocex +round2:xomal-rovaf-gukix +round2:xovez-purih-kakax +round2:xofol-kicid-havix +round2:xidih-lehir-fokux +round2:xeces-vepeb-husyx +round2:xirin-fubol-kanux +round2:xedah-lyhik-pinix +round2:xinef-cacac-pigax +round2:xibog-kybet-tasux +round2:xiseg-zineg-tozox +round2:xecad-venel-pubyx +round2:xitec-hivun-bakax +round2:xurok-ramak-vylox +round2:xomeh-zatoc-nirox +round2:xifol-lapac-nevox +round2:xucal-pinas-nozax +round2:xutel-nypig-nohix +round2:xelam-fobed-mihyx +round2:xibim-fanar-myrox +round2:xehiv-lemyn-pylox +round2:xudab-borog-lydax +round2:xufis-relag-fukax +round2:xucob-hecid-cimex +round2:xilif-tukac-lubix +round2:xudip-lutal-lovux +round2:xuham-pudip-lupux +round2:xiror-pizic-mulix +round2:xuhis-dabig-batox +round2:xohap-vabaf-litox +round2:xodav-kesyt-dudax +round2:xoken-cotip-debyx +round2:xogez-bered-sygox +round2:xurim-votiz-gubux +round2:xobak-bugam-kubex +round2:xohon-silys-gutix +round2:xenor-dabyn-tycex +round2:xemah-canav-higyx +round2:xusic-kyfar-lisyx +round2:xezis-gafuk-kihex +round2:xemob-fumad-sacix +round2:xodov-tabyn-pygox +round2:xogag-zonit-lypyx +round2:xusin-sikah-zikex +round2:xipig-fupob-videx +round2:xumam-fonyn-pukex +round2:xicap-nitit-tuzex +round2:xonav-tucot-hufyx +round2:xekir-kamop-sipix +round2:xuzah-typyk-gidux +round2:xizaf-huzum-zacix +round2:xopef-nodyl-nozex +round2:xokeh-hybit-midox +round2:xodah-kineh-tedux +round2:xukam-gifug-nyrax +round2:xidok-sipec-hivox +round2:xugoc-pobeg-vugux +round2:xebam-nyhiv-mukax +round2:xoged-nykol-tocex +round2:xevez-mecid-fipix +round2:xotod-zidov-tatix +round2:xepil-kunop-tacex +round2:xelas-pocul-dipux +round2:xoteh-zypes-dutyx +round2:xihar-sodeg-fidux +round2:xudot-muryt-tamax +round2:xuped-somuh-putix +round2:ximac-kyfop-lizox +round2:xonoh-fyzyr-motix +round2:xepop-husit-sufex +round2:xumek-syces-mapox +round2:xupiz-nytus-sofex +round2:xusic-zyteh-gafex +round2:xeneb-fatom-dezix +round2:xepam-cidyd-mehyx +round2:xegiv-mysef-pynix +round2:xehah-fecyc-rofix +round2:xinoh-sogul-buzex +round2:xotod-zidef-tugex +round2:xekez-guvel-lazex +round2:xotam-gacen-bosix +round2:ximiv-kubob-tubux +round2:xehon-fosyk-cunax +round2:xosod-regip-zatyx +round2:xebiz-kedir-tazux +round2:xecoz-cizof-zufix +round2:xufeg-fepet-kakux +round2:xenoh-hanih-furux +round2:xefig-lobat-basox +round2:xemeh-dafiz-nenax +round2:xihov-livud-dygax +round2:xekir-badam-petox +round2:ximop-narab-zydax +round2:xebad-gilom-minex +round2:xises-hykyb-mazox +round2:xoros-gurac-zorox +round2:xuged-pyned-dirox +round2:xupog-huver-pepex +round2:xifib-bygod-nihix +round2:xudot-pozas-gepex +round2:xirin-bibos-nebyx +round2:xufel-rogov-vazox +round2:xikos-fuket-dukex +round2:xilil-regec-nymex +round2:xebod-lyvut-fusax +round2:xopih-divyb-corix +round2:xifoh-dunyv-docox +round2:xogol-zakuk-tucix +round2:xerif-guguf-fedax +round2:xihav-sozap-delox +round2:xuler-korol-rogux +round2:xosef-fetyr-fatex +round2:xusig-tezyn-dykux +round2:xodac-tonyb-salex +round2:xizir-cicym-zysyx +round2:xefah-bezyd-pakux +round2:xomop-fukob-gekex +round2:xitas-sisus-lisux +round2:xohag-holam-lovyx +round2:xuvet-gyvim-hyrex +round2:xucat-luson-todix +round2:xidap-guvyb-feryx +round2:xevem-hydyz-cygyx +round2:xuheg-cezuk-fyvox +round2:xunop-hynum-begex +round2:xenim-dysef-bodox +round2:xugih-vutys-fuhex +round2:xomiv-zepef-zalux +round2:xobek-hecil-vynex +round2:xufob-resef-mutix +round2:xufov-veteh-vohyx +round2:xedav-gufib-navux +round2:xober-dezeb-cimyx +round2:xosas-kihep-dudyx +round2:xebes-sobog-pysax +round2:xivic-fibyc-levox +round2:xenor-megyd-surix +round2:xokib-makul-cigyx +round2:xigag-gufyd-volyx +round2:xufik-tycoh-havax +round2:xocik-bifed-monux +round2:xigeg-pacaz-kycix +round2:xufit-zyryl-gacox +round2:xivor-becef-facox +round2:xomeb-kuvos-govox +round3:xobof-ficod-dysax +round3:xikol-hapab-funax +round3:xedop-fikuf-solex +round3:xozoc-tubam-derix +round3:xuzop-gytim-natax +round3:xitok-bygac-zobix +round3:xosed-rylec-razix +round3:xutin-hytel-gogox +round3:xelat-pagab-hivox +round3:xekof-zebab-cuvux +round3:xedes-vacyp-ripax +round3:xugiz-zocen-bitax +round3:xuvab-rosum-rodex +round3:xokak-dudid-tesyx +round3:xuhih-hakoz-sufex +round3:xezog-sonys-zezax +round3:xoded-zoliv-cifox +round3:xikef-katim-burax +round3:xodim-rerih-fulox +round3:xelag-fyvil-mudex +round3:xebiv-kotef-tazex +round3:xonap-vomin-vuzux +round3:xorep-biteh-zufyx +round3:xudid-simuf-givux +round3:xezoh-lekez-barix +round3:xezot-kebin-rykyx +round3:xusev-fetof-kypox +round3:xeram-mymob-suzex +round3:xegod-lydal-gesix +round3:xokid-dozev-pofix +round3:xuzef-rifes-cyvix +round3:xocot-mogyf-defox +round3:xizov-tobun-sigux +round3:xipic-dutil-kasox +round3:xicad-dytol-pyfix +round3:xorih-kuluv-kikux +round3:xohit-norop-lucux +round3:xelaf-gifep-tolix +round3:xesod-zifon-tyzox +round3:xovel-mymim-hodax +round3:xodet-lamyd-syhex +round3:xemoz-zukev-kidax +round3:xucic-rizyb-hodux +round3:xived-zavad-cyrux +round3:xufor-dokut-galix +round3:xorih-hagur-zikyx +round3:xilah-hotog-lepyx +round3:xelin-zudim-ruhox +round3:xugal-codat-nunix +round3:xibak-vedop-vegix +round3:xecem-lihas-togox +round3:xelav-rykec-rygyx +round3:xehok-letyk-sycax +round3:xecid-giced-zeryx +round3:xirif-mubad-fapix +round3:xodib-pahud-nutox +round3:xidim-hukoz-rulax +round3:xosel-gasav-hukax +round3:xufin-kepot-cunux +round3:xuzan-letyv-lykex +round3:xogar-gelas-hefux +round3:xesel-cadyp-kifex +round3:xozic-vohas-pekix +round3:xideh-fahak-kadix +round3:xuvoz-mebid-hilux +round3:xekar-lizev-fafex +round3:xukob-rupov-nedex +round3:xulec-dyvyb-tylox +round3:xefil-zytib-kosux +round3:xulez-rybiv-mekax +round3:xipit-dygyl-porux +round3:xovic-kygas-tasyx +round3:xusal-butik-gitux +round3:xepac-nunad-fypux +round3:xotic-kyrap-nulyx +round3:xokek-mufyc-bobex +round3:xurit-nafop-vazyx +round3:xogap-guzyn-dytyx +round3:xemid-notag-rukex +round3:xefar-kigun-kunyx +round3:xodot-zugig-mapux +round3:xoveh-cosib-robux +round3:xelik-zimer-hizex +round3:xudic-vupec-vyrex +round3:xibok-penof-ranax +round3:xifah-vucas-bivex +round3:xucat-bucaz-tepux +round3:xific-pukov-cimix +round3:xoseh-zinim-zahyx +round3:xucen-gupat-fumyx +round3:xenop-myfim-vopox +round3:xucif-bafag-tahyx +round3:xemat-sirun-nicax +round3:xonog-ficut-pamex +round3:xudac-rutyg-cosex +round3:xecef-syvad-vivax +round3:ximob-ducyd-bevux +round3:xodeg-mysez-hofex +round3:xivaz-cikon-gicix +round3:xilez-hosoh-dofex +round3:xodak-tavum-zecax +round3:xifem-nomys-nidix +round3:xekep-mofem-renux +round3:xizon-punas-mulox +round3:xidac-tufip-vepix +round3:xovez-nosap-libix +round3:xipep-kohor-guhux +round3:xutaz-butor-fenix +round3:xonil-dydyp-sevux +round3:xokir-fumec-cukax +round3:xogor-zetis-nihex +round3:xitop-fatuc-falix +round3:xodil-bodim-facax +round3:xotam-lydar-badix +round3:xibir-vosot-cufyx +round3:ximib-hivip-gilax +round3:xuloz-fociz-vylox +round3:xogif-nuzef-dyfux +round3:xofif-vymiv-pumex +round3:xepon-zonyk-sacax +round3:xubor-hucos-gelux +round3:xopal-kopat-tivyx +round3:xekik-mozin-menyx +round3:xuvof-nukyf-dorix +round3:xupef-vavol-muzux +round3:xileb-zaryr-figyx +round3:xifel-kobih-lenux +round3:xisaf-socar-razox +round3:xerec-cehul-fydux +round3:xeset-nulep-gysux +round3:xugim-hipyh-hykyx +round3:xozok-tepeb-hivyx +round3:xekeh-lylyk-hydex +round3:xogeg-hykop-lacix +round3:xedoc-kyfas-gudax +round3:xovid-vunuh-zilex +round3:xiral-rycap-desix +round3:xenek-hadev-kunux +round3:xehos-sekok-cypux +round3:xuzev-luzak-mytex +round3:xupop-bamum-zobix +round3:xumik-hohan-gobax +round3:xezik-pebev-civix +round3:xorab-lapuh-ryfox +round3:xogok-turyt-gehyx +round3:xipoc-poput-lonyx +round3:xibez-kyfyv-kafox +round3:xovav-bipos-silix +round3:xolob-roryg-bytyx +round3:xigat-veryb-kezex +round3:xotok-myzas-tasux +round3:xerot-dybop-cunex +round3:xilev-mobag-dozex +round3:xuhed-tysyr-cekux +round3:xufop-hakav-manox +round3:ximel-pynyd-tavax +round3:xeniz-maguz-zifax +round3:xered-govep-zonix +round3:xupim-ginud-hydux +round3:xocov-kyleg-toryx +round3:xobal-refun-kacox +round3:xeses-totis-fynex +round3:xurol-takaf-mesix +round3:xokav-lubop-fivex +round3:xudid-zubaz-vupax +round3:xifis-bacun-dolyx +round3:xirot-todyp-kicox +round3:xofiv-kegat-kyhox +round3:xibar-labag-bafox +round3:xikam-debat-cilox +round3:xisod-zibyd-kuvax +round3:xolor-vavym-vyhox +round3:xiker-kezof-gogox +round3:xidon-gogyn-fozex +round3:xicic-hogun-legyx +round3:xicol-kosig-danyx +round3:xelih-fedul-fimex +round3:xupak-nodis-pibux +round3:xidin-pibad-fucux +round3:xolep-bamaz-nocax +round3:xoniz-pegil-mapux +round3:xufak-zopav-subox +round3:xipat-lolyc-gurux +round3:xikor-tylop-mikex +round3:xevaz-turad-radyx +round3:xoreh-solor-nafux +round3:xubap-nekir-gedax +round3:xuheh-lalip-lanix +round3:xupec-birep-ganyx +round3:xizim-secoz-gedux +round3:xeper-zuzyb-menax +round3:xuhas-tyboh-bufux +round3:xofav-mapyk-fuvex +round3:xetak-guseg-puhax +round3:xupit-pehus-henyx +round3:xizom-vecup-syrex +round3:xohaz-kutek-vedix +round3:xeras-mohud-mebix +round3:xeric-zybas-narex +round3:xipec-cetin-ligax +round3:xiris-koder-curyx +round3:xosag-levur-lalux +round3:xilal-sazut-cekax +round3:xusef-digyz-pydox +round3:xizot-cinyb-gokax +round3:xebim-dafad-nudyx +round3:xuhil-tyviz-tubax +round3:ximic-kilan-facex +round3:xecen-pukup-bodix +round3:xufal-disil-lydux +round3:xulot-ruryl-kacox +round3:xosen-sibef-locux +round3:xugob-botic-tufix +round3:xezap-gibim-muzax +round3:xehis-ferif-nanux +round3:xotit-fohyc-simux +round3:xovih-rales-zabax +round3:xicam-genap-fekyx +round3:xetah-voler-rutex +round3:xilat-gyfiv-fegex +round3:xetoh-cakob-rycix +round3:xeden-fabis-cusux +round3:xepih-libac-cykix +round3:xirav-fuhul-dohyx +round3:xifip-fovid-lorix +round3:xofig-lotat-zyzex +round3:xozes-tavaz-tyrux +round3:xugim-havac-rilix +round3:xizos-forok-cucyx +round3:xilod-hikaf-visux +round3:xinis-divyh-pygox +round3:xoreb-celud-dybex +round3:xolok-zegab-cycux +round3:xodim-hodud-kulox +round3:xihic-detyr-zilyx +round3:xines-feres-repex +round3:xofir-takov-medax +round3:xuriv-sypif-lazux +round3:xepel-fihuh-tylax +round3:xolid-cazas-zupox +round3:xulav-banip-tidyx +round3:xogip-lifec-sonyx +round3:xovos-dovyr-nuvax +round3:xucac-pycam-vafex +round3:xeloc-guvaz-vopex +round3:xipif-pezum-kosyx +round3:xukev-taveh-sorex +round3:xosev-fizyn-hutux +round3:xebez-pyzon-komox +round3:xutel-darid-gobux +round3:xomoh-topir-hopex +round3:xikif-vovom-ryzyx +round3:xodem-cosyn-salax +round3:xezek-seleg-zamix +round3:xupon-hafav-nehix +round3:xedoc-kiden-comox +round3:xoger-deror-ruhix +round3:xefef-gygag-hehox +round3:xukah-lynoh-locyx +round3:xudoc-bufes-vadix +round3:xevih-bifyr-fipux +round3:xisih-kelyp-sobax +round3:xitet-nykak-fucox +round3:xitec-nudal-zifex +round3:xocor-hupyh-dehix +round3:xemin-satat-ducax +round3:xifek-velov-kafax +round3:xivig-lamef-gifex +round3:xulib-defip-vakix +round3:xulip-lasyl-tofox +round3:xules-vegaf-malyx +round3:ximis-gyfub-nifyx +round3:xuvov-musyb-kunax +round3:xinet-luhap-fizix +round3:xedak-radeh-zesix +round3:xiteb-podon-suzix +round3:xevif-pubov-zokex +round3:xogel-pifah-lytyx +round3:xogav-cunil-tifox +round3:xurin-dapyz-gedix +round3:xufik-todor-gogox +round3:xolih-pokom-zenyx +round3:xiber-sobof-gufux +round3:xerof-rocav-vonux +round3:xumeh-lymez-cefox +round3:xebav-nyror-hyrix +round3:xivem-sytyk-busex +round3:xuhir-karat-fucix +round3:xudar-bazyd-pakux +round3:xopik-sopuk-vucix +round3:xedoz-netom-vufux +round3:ximah-kecir-minix +round3:xuhiv-nydoh-volax +round3:xemob-nedut-lunex +round3:xufeb-tosut-zyfux +round3:xuled-benec-cybex +round3:xuzon-vybac-gynyx +round3:xezom-gokir-sotax +round3:xotin-sigen-nodax +round3:xukic-garof-catux +round3:xunir-himic-pelax +round3:xipep-lohof-fityx +round3:xefed-kiruc-sygex +round3:xuhil-bemeh-todyx +round3:xusik-necol-bukix +round3:xufal-kydev-lafix +round3:xomaf-syhid-vovix +round3:xifet-masoz-lydix +round3:xuben-botyg-pokex +round3:xecok-hihim-gagyx +round3:xideh-gehyp-cocix +round3:xukeg-lezug-pylax +round3:xirez-heroh-fuvix +round3:xibag-pymof-valex +round3:xufad-zedir-bupex +round3:xeced-kacud-rudux +round3:xomer-punuz-gedex +round3:xisec-fafup-tezex +round3:xutoc-fegys-buvox +round3:xehat-kelin-hyfyx +round3:xulin-sesyh-musux +round3:xocec-lykad-kakyx +round3:xigar-vatez-tobax +round3:xesen-migap-gybix +round3:xefil-hapid-tunax +round3:xevap-gumah-cypux +round3:xegal-bihoz-cuhox +round3:xumip-bucyr-kofix +round3:xibit-gefam-mubox +round3:xoced-zycob-gihux +round3:xuzic-vihyl-kefox +round3:xicem-dahub-bimex +round3:xupok-gagys-morix +round3:xireh-lyteg-rynyx +round3:xotog-parum-pegux +round3:xudim-sikih-hupax +round3:ximom-fesez-mytyx +round3:xurib-gipyv-gynox +round3:xohon-comyz-cibyx +round3:xupif-cohih-lutax +round3:xecet-duhaz-gylox +round3:ximas-hanod-pidax +round3:xudis-davak-gucax +round3:xurig-behom-nyrox +round3:xufec-vokil-tygox +round3:xorin-seped-kulix +round3:xoter-lakoc-desyx +round3:xuran-gafev-kudax +round3:xoveg-ferir-sagox +round3:xedoz-ciret-tesux +round3:xucal-vozag-pegix +round3:xunoz-vysep-sevex +round3:xibil-giher-fyzix +round3:xogop-milup-luhyx +round3:xozid-gazet-metax +round3:xulel-bykid-zehax +round3:xupat-higov-rarax +round3:xuzal-zikel-gulyx +round3:xufal-zokun-tabox +round3:xodav-sefiv-pycax +round3:xedec-botut-pibyx +round3:xekir-sazys-fusox +round3:xefol-hynen-vomix +round3:xoget-rarif-dikix +round3:xoted-potyg-nelux +round3:xevok-dacub-sadux +round3:xovad-hudyt-hecex +round3:xeviz-cehiv-zylyx +round3:xofar-vyryk-hamex +round3:xocaz-putag-nunax +round3:xifod-tycad-pesax +round3:xihic-kafiz-nizex +round3:xikol-volyf-volyx +round3:xogec-hymib-dirux +round3:xiraz-papit-pivyx +round3:xehik-rokol-sonux +round3:xipaf-pytas-lorax +round3:xicaz-nusuf-vufix +round3:xeher-tiboc-pupyx +round3:xolok-fylud-riryx +round3:xefet-takyr-gemox +round3:xirib-gydac-zitux +round3:xubog-vobuh-mucox +round3:xepan-bylir-rofyx +round3:xegas-nisiz-repix +round3:xibab-tefin-tovyx +round3:xudif-tedav-cumex +round3:xulom-gecog-ripyx +round3:xicop-sumel-forax +round3:xeded-rydar-detex +round3:xinil-tebyp-nitex +round3:xenor-migyz-pusix +round3:xuhoc-mepyr-hycax +round3:xofat-tepyd-nypex +round3:xives-fufih-virix +round3:xetav-kazab-vunox +round3:xibac-datim-mukox +round3:xurol-tonap-nyzox +round3:xenoc-pytyt-hymux +round3:xidap-nomyh-futax +round3:xutit-tados-hypex +round3:xibad-retyl-vumox +round3:xucef-dacaf-lilux +round3:xuzov-vesib-nolax +round3:xutah-relel-rurex +round3:xibeb-rypes-gokax +round3:xesih-rotul-vyvix +round3:xiraf-sypeh-kurux +round3:xumiz-zodir-vetex +round3:xeveb-rupob-nevax +round3:xocip-focet-gygux +round3:xutil-hogud-kidux +round3:xuhir-lekez-vidax +round3:xutic-mibap-tusyx +round3:xenem-pokor-hulex +round3:xopih-cubub-lynux +round3:xined-gulyv-hukax +round3:xihol-zusyd-hetix +round3:xezat-balur-sedix +round3:xusen-tesys-rivox +round3:xuzon-ficef-lyvux +round3:xomal-dygol-falix +round3:xemap-mesok-tynax +round3:xicat-binal-povux +round3:xigif-ribuh-zygix +round3:xegim-lomyp-kebux +round3:xenoc-vuhyf-kebyx +round3:xozir-cacip-lypax +round3:xisof-zagiv-kuzux +round3:xivag-kusik-begax +round3:xenav-kihal-rigax +round3:xucot-beson-sobex +round3:xegaz-mynah-cupix +round3:xutas-syvur-dicux +round3:xudop-nezec-nuvyx +round3:xivat-cytin-zozux +round3:xihes-hebak-fizox +round3:xenir-gonun-zapex +round3:ximil-nobyg-fatox +round3:xidog-solep-tecex +round3:xicep-dysib-pufux +round3:xopib-lorih-lonux +round3:xezaz-zopih-kanux +round3:xufah-cymil-tupyx +round3:xisas-figyb-vybox +round3:xikaz-gugat-gybix +round3:xotic-cipoz-namox +round3:xisem-sifam-dobax +round3:xihez-vybug-pifix +round3:xesep-kerum-sacax +round3:xudak-dyhur-puzax +round3:xopim-syrer-gusox +round3:xugep-vevuc-nafox +round3:xurol-rokas-vumux +round3:xiket-pofam-gabix +round3:xopef-volev-mogyx +round3:xogog-bohur-nidax +round3:xomoc-zivup-zelax +round3:xumog-gituv-kagux +round3:xokom-nonef-rulox +round3:xufic-sageb-rudax +round3:xuhop-takev-tufyx +round3:xetiz-rymaf-mimyx +round3:xival-fobac-mimux +round3:xupek-lyzif-lalex +round3:xocev-kycyd-bilax +round3:xuvih-kefop-symox +round3:xenez-kinis-bupox +round3:xebil-dobyl-gykyx +round3:xiced-motam-dunax +round3:xozon-gylyp-rikox +round3:xokah-nalil-cyhux +round3:xerez-dydoz-rumax +round3:xutos-logul-posex +round3:xonod-dovoz-mihox +round3:xihaz-muryc-rehox +round3:xiceb-vulak-mocex +round3:xipas-zynic-tizix +round3:xuniv-gihep-manix +round3:xinop-pomev-lavyx +round3:xemad-lutuk-vagax +round3:xetep-dymyt-nogox +round3:xoson-pyhed-vylox +round3:xetir-zehaz-pocox +round3:xubin-hohof-lifyx +round3:xogor-veniv-zacix +round3:xunol-bapiz-nymyx +round3:xofaz-pyliz-dobax +round3:xeliv-pyzuf-pufix +round3:xuzag-piril-puvax +round3:xitos-dabav-nemox +round3:xococ-bateh-vekux +round3:xomar-pulud-fenux +round3:xuvid-zimas-sezux +round3:ximoh-gizuk-dadox +round3:xilep-bizeb-nufyx +round3:xirot-zyhyg-vukux +round3:xehid-hamov-temix +round3:xebev-fyhot-zasex +round3:xegig-cutor-penux +round3:xulap-zubuf-rebax +round3:xepog-firyf-datax +round3:xeban-tezyr-nasax +round3:xusar-kelas-kanux +round3:xekob-gepal-curix +round3:xoreg-maged-bezox +round3:xelod-kofib-syvox +round3:xucen-canod-hesox +round3:xinag-lybum-bolex +round3:xibeb-sezav-husyx +round3:xehob-celas-cefix +round3:xoger-sozyh-lutyx +round3:xudog-byrog-gumex +round3:xucot-videz-panyx +round3:xuvok-mikyc-cedux +round3:xifok-vohyk-cisox +round3:xugil-lefel-tilux +round3:xitil-nepov-vacax +round3:xezic-kazuz-gamix +round3:xugis-fyfin-rylex +round3:xekin-tizan-fusax +round3:xegec-dupyc-sevex +round3:xesav-tofeh-cidyx +round3:xekih-zipet-bifox +round3:xoteb-tuvys-pirux +round3:xilev-necen-gehex +round3:xolid-horir-danex +round3:xizor-sodet-maryx +round3:xiviz-vydes-mecex +round3:xusar-sumab-pidyx +round3:xuvep-fokim-zadux +round3:xofid-vihal-gimex +round3:xenoh-kalos-bylax +round3:xukeb-vonuh-cyvex +round3:xufim-magir-ripex +round3:xikat-kehip-dozox +round3:xisem-fakas-nodux +round3:xocav-reluc-cudux +round3:xubig-cegyk-pusox +round3:xidag-bykir-pirex +round3:xunis-gafim-kupex +round3:xerem-nofys-cosix +round3:xevoc-myruh-parix +round3:xureb-vapul-fykox +round3:xovic-canyn-nylux +round3:xosec-cihot-vugix +round3:xufef-kapam-mepax +round3:xesas-fosab-vitax +round3:xehad-rubod-zugyx +round3:xinok-fakan-rupox +round3:xuciz-zolak-tolax +round3:xuvad-kykoh-subyx +round3:xobog-vycac-zitox +round3:xogat-vylef-banux +round3:xofan-nulor-genax +round3:xokot-lytid-dosux +round3:xidek-biref-gusix +round3:xuniz-hebar-cugox +round3:xuvef-nagos-mytyx +round3:xerip-secyv-minax +round3:xegoh-pifyd-gevux +round3:xonas-fukoh-tebex +round3:xeseg-tydem-rihox +round3:xunol-tuvyk-lymix +round3:xegah-sifab-rolix +round3:xedov-hatol-dusix +round3:xecef-nurum-metox +round3:xevoh-koben-budux +round3:xotin-mycal-kykix +round3:xehit-damiv-sitox +round3:xodif-ragum-vulex +round3:xezoc-pecib-hibex +round3:xizan-mezis-batix +round3:xobog-masyb-pycex +round3:xikad-tagoz-haryx +round3:xepid-nakuz-pymex +round3:xivev-cyhav-savix +round3:xigig-tyhev-hilex +round3:xekik-kuhah-bovox +round3:xodof-gasyl-sugex +round3:xilan-pysuk-fulux +round3:xelin-bires-basox +round3:xufeg-sukaf-nybax +round3:xonov-codyg-rokax +round3:xucol-fifac-duzix +round3:xutat-vyhev-kilyx +round3:xikop-dosun-rigax +round3:xunif-pyzub-tylex +round3:xolor-fohim-sifex +round3:xetal-lyvul-zosax +round3:xokab-zager-rylyx +round3:xinal-suted-bomux +round3:xenih-demum-cotax +round3:xehav-mefug-mecex +round3:xidos-nirit-vylyx +round3:xitis-nifev-secex +round3:xofaf-febym-kadex +round3:xekot-tonap-vetix +round3:xuhik-pucuh-revex +round3:xekit-gadez-mopux +round3:xozih-venar-gurex +round3:xofol-lypur-rizyx +round3:xegok-bekom-licix +round3:ximic-mivyk-nymox +round3:xecev-papof-hihox +round3:xedof-samam-cucyx +round3:xumol-hubup-rumex +round3:xekab-gazaz-monux +round3:xenok-mukac-hivax +round3:xivat-vyhys-nitax +round3:xuzir-tasyk-huzax +round3:xogal-mipif-vorox +round3:xofak-cuzen-pehux +round3:xedat-hynoh-gazax +round3:xedel-nagov-vecux +round3:xogib-zutih-fidex +round3:xehen-revyd-gokix +round3:xusig-bizes-runax +round3:xegeh-keleb-vohyx +round3:xokok-polur-lipax +round3:xudac-ryhas-tevux +round3:xipob-kekav-begyx +round3:xihik-gekub-difix +round3:xohit-vygut-reryx +round3:xipom-bobof-botox +round3:xetid-fekyl-vuzix +round3:xutip-luhod-zytox +round3:xubim-pumeh-gasyx +round3:xegav-kilur-tysix +round3:xitah-purev-canax +round3:xemiv-sahuv-zotix +round3:xomag-gylob-husax +round3:xelaz-cugom-nivax +round3:xubon-vyric-lihax +round3:xivik-kuhen-kylox +round3:xitam-fakud-gukax +round3:xevev-maduz-bobax +round3:xuleh-coruc-cutox +round3:xezoz-zyvyc-huvox +round3:xiziv-cifab-pygex +round3:xugel-hilav-dadox +round3:xugog-kebag-kodyx +round3:xisol-dolek-fakix +round3:xohel-kybih-penux +round3:xidad-cilan-fenax +round3:xupiz-fibup-canax +round3:xoniv-rufyz-zezox +round3:xileg-vibih-bapex +round3:xupan-zeguf-manux +round3:xekob-dytik-zecex +round3:xugig-byvap-sobux +round3:ximik-rimib-bihex +round3:xevot-dyhol-lufex +round3:xitek-fican-hepex +round3:xideh-bipav-dymix +round3:xecab-saguv-fofax +round3:xizog-dides-cinex +round3:xeriv-kyvuk-nicax +round3:xudoh-luken-gygox +round3:xipar-kudyn-kizax +round3:xerir-fycom-dapox +round3:xilon-zocam-falix +round3:xizev-satig-pifox +round3:xelod-penir-sosyx +round3:xugen-cicag-birox +round3:xomah-gukag-zegex +round3:xucas-zimol-rydax +round3:xiped-nohar-busyx +round3:xetim-ribal-bomox +round3:ximeg-syler-cytyx +round3:xocal-tusup-fenyx +round3:xopig-fyvon-hudox +round3:xesan-kanon-fymux +round3:xuzil-ranap-rykux +round3:xudof-hyfal-digyx +round3:xudil-cobud-kemix +round3:xokag-niduk-zydox +round3:xizob-telos-zucyx +round3:xiror-maryr-sagax +round3:xodir-dosak-gohax +round3:xovid-furev-vivux +round3:xunan-nuhug-cebux +round3:xelas-fivit-cecyx +round3:xeses-gyrot-dypax +round3:xiher-gihyk-pysux +round3:xepoh-mezem-livex +round3:xulec-cykuv-cocyx +round3:xekis-rokib-kacix +round3:xuras-nysuh-bybex +round3:ximec-hohog-mesex +round3:xehoh-voruf-vubux +round3:xehab-kugev-lazyx +round3:xikos-colob-sohex +round3:xutep-zyvar-zyrix +round3:xetat-rabum-nuvax +round3:xokig-tibub-tosax +round3:xicef-hebil-byrox +round3:xugap-hodok-nogox +round3:xihet-cakys-mydox +round3:xerav-sarun-kudex +round3:xebes-vitid-vynix +round3:xunem-riron-belux +round3:xefof-zabuh-herax +round3:xegec-lovol-fakox +round3:xefib-nukag-facex +round3:xekab-mofir-zybix +round3:xezok-fekab-gurux +round3:xupaz-sygil-nysyx +round3:xorin-ficaz-bygyx +round3:xifab-koran-tapyx +round3:xopic-fuduz-kutax +round3:xebad-ticyt-rybux +round3:xitem-mopug-fetux +round3:xobin-hudym-hecix +round3:xepar-movec-cytax +round3:xogar-tykoh-nacyx +round3:xikev-duhyz-rofox +round3:xezab-tipub-nabox +round3:xuhof-kylyl-cemax +round3:xugad-pukyv-hubix +round3:xufic-kifel-cumox +round3:xelak-zamyn-ripax +round3:xopag-fehyz-lilex +round3:xupir-vyvym-satex +round3:xinir-rozil-nusyx +round3:xizil-dyzad-kicox +round3:xunam-tohuf-bavox +round3:xesez-pylus-vecix +round3:xiret-hunoc-mukux +round3:xekah-fezeh-rupux +round3:xorel-bigav-pohux +round3:xonop-detir-cavex +round3:xorim-gapac-zipix +round3:xufam-soteh-lafux +round3:xizag-kusop-disyx +round3:xoced-revut-surux +round3:xeher-mehyn-bobox +round3:xevek-kurif-cidix +round3:xunic-sezyg-rykex +round3:xirar-dusac-guvyx +round3:xorep-nituz-mumox +round3:xonan-patez-bodux +round3:xerin-cyvok-mibix +round3:xenor-tagip-tapyx +round3:xucav-mugyf-dozox +round3:xozak-burop-lopyx +round3:xocis-dovad-vebax +round3:xotov-dimil-nolix +round3:xipag-medin-bufox +round3:xonoz-nudan-tygyx +round3:xukof-gisiv-lilux +round3:ximos-kityl-bibex +round3:xibil-hipet-mityx +round3:xufig-potom-lobax +round3:xeten-fetac-vitux +round3:xucic-bacin-genax +round3:xihig-gafeg-pimix +round3:xutir-kosog-depex +round3:xihol-zygos-celix +round3:xorot-pireh-melix +round3:xuvig-rilek-gatux +round3:xilok-fifyt-subux +round3:xilos-mabev-vymyx +round3:xitic-zucad-pufix +round3:xogaf-lotyp-zefax +round3:xeraz-lylap-nonex +round3:xibik-lepec-gisix +round3:xezat-cekyn-pogyx +round3:xulir-danih-ravux +round3:xilem-pygof-ticax +round3:xegib-pyzak-badax +round3:xucis-rusiz-vihyx +round3:xitos-gulum-fonax +round3:xidom-dilib-fuzix +round3:xemaf-bedul-nynyx +round3:xomok-pyser-cezox +round3:xipig-bigud-ratyx +round3:xufar-gycyt-votix +round3:xutoz-cuver-tadex +round3:xipas-zuzim-mosox +round3:xubeg-fepuh-tedox +round3:xuhoz-pomim-pidox +round3:xigar-ladem-gunax +round3:xohaf-gupyc-felex +round3:xitaz-sidar-mycex +round3:xibaf-bumyp-cudux +round3:xudih-pacid-fatix +round3:xocel-bamev-dakax +round3:xoges-himys-zupox +round3:xifep-gobac-fykyx +round3:ximif-hevel-bodux +round3:xodog-movub-pahyx +round3:xotog-mobel-tefax +round3:xopod-dapug-milax +round3:xesir-pesec-pozyx +round3:xedos-dogaz-tipux +round3:xuzib-felaz-dinox +round3:xiliv-nulik-gypix +round3:xezip-vurib-terex +round3:xucef-syzok-hobax +round3:xehah-tyrur-babox +round3:xinim-molum-dytux +round3:xifah-hucus-lezux +round3:xiref-ryfyf-gasux +round3:xovig-vyhon-cakyx +round3:xopoc-milog-gepox +round3:xudod-zymyr-fityx +round3:xenid-basit-fefox +round3:xosef-fanyv-pypux +round3:xepes-suceg-gerix +round3:xinev-vimyn-nokex +round3:xopok-magiz-cypux +round3:xefin-razem-fykex +round3:xider-konug-kipex +round3:xudan-betob-gakix +round3:xibom-rizav-sezyx +round3:xuvac-pohib-kimex +round3:xeloc-zelat-rityx +round3:xumis-vysyg-gugyx +round3:xosor-bibyk-denex +round3:xokom-cogem-sylyx +round3:xopic-mihez-gabax +round3:xolav-ragof-dulax +round3:xutid-bupes-fubox +round3:xetom-cyzut-gykax +round3:xucov-bofon-symex +round3:xenep-ralot-holax +round3:ximom-kedig-gohex +round3:xelib-tobip-homyx +round3:xofed-zosap-volox +round3:xihim-hotyp-kofux +round3:xokat-zicez-selox +round3:xugim-tukel-farox +round3:xikib-niryg-vipux +round3:xipoh-nopyb-pidux +round3:xizid-gyfog-fybyx +round3:xoter-pamap-sogax +round3:xuhep-hafin-cypix +round3:xeben-paluz-pizox +round3:xegal-begud-bibex +round3:ximes-zazen-ryhux +round3:xugaf-zasur-litox +round3:xemin-rulag-pemux +round3:xigaz-kucal-vafax +round3:xifam-gysom-belax +round3:xedof-lebuv-dunux +round3:xurab-pysev-rupux +round3:xeboh-cylah-patax +round3:xelor-tukup-lumix +round3:xunoc-kedaz-zirux +round3:xevad-mygeh-tozax +round3:xizez-kymin-horix +round3:xuzoc-heneh-kynax +round3:xogov-husog-pirex +round3:xehev-beruc-volyx +round3:xesar-gelys-robax +round3:xefer-bonak-hytux +round3:xurad-sobim-nyvox +round3:xineh-kipeb-hicox +round3:xomal-dunom-vepux +round3:xohas-cufut-femex +round3:xibir-nuzep-necix +round3:xofov-rysyh-curyx +round3:xekon-roter-degex +round3:xerel-napev-symex +round3:xuveh-basun-hykix +round3:xupip-socom-nukex +round3:xecim-vumuc-nizix +round3:xekol-cohus-volix +round3:xuhap-bynet-dynix +round3:xugah-niboh-cecex +round3:xipes-bitep-vucax +round3:xidor-didam-cyfyx +round3:xomem-toror-kahax +round3:xokag-gybar-sekyx +round3:xidan-merum-rymox +round3:xekas-lobid-duvix +round3:xofoc-mylon-pidix +round3:xitad-cynac-sizax +round3:xiliz-niduh-pisex +round3:xizin-kysen-rulux +round3:xufar-rebeb-zuhex +round3:xupab-nifos-bofox +round3:xuroz-gonuv-todux +round3:xonap-fugad-gipix +round3:xunen-zodec-zenax +round3:xesop-mobak-pyrux +round3:xikis-vekis-cohix +round3:xukod-holed-fymux +round3:ximep-cakus-zylax +round3:xefam-dovol-milux +round3:xetep-gabir-sugox +round3:xobib-myzat-cytux +round3:xezef-fygyz-purax +round3:xofav-buroh-zotux +round3:xugah-numol-zarux +round3:xuzil-gubec-lurix +round3:xemom-fadym-sudix +round3:xetal-dopyt-byhux +round3:xireb-boryb-mekix +round3:xurel-sogez-lydox +round3:xirir-cusor-popyx +round3:xisol-melez-pisix +round3:xedab-gitus-likox +round3:xeref-tazat-purux +round3:xepig-putir-dolex +round3:xugen-pufeh-kyzax +round3:xinim-bovyf-kygux +round3:xeseg-rygug-tyvax +round3:xopir-labif-melox +round3:xumil-sikyz-ganyx +round3:xegan-metor-hadax +round3:xubeh-varip-pozux +round3:xuboz-pehoh-fyrox +round3:xubid-difyp-hekix +round3:xigot-ropyb-sudox +round3:xisiz-nusel-zepex +round3:xunot-pyliz-nyhex +round3:xemod-setec-vugux +round3:xolah-parav-pibyx +round3:xecev-vycyk-dytox +round3:xirek-zyluz-decux +round3:xipos-didil-dasex +round3:xotap-korel-nudox +round3:xokic-kobel-garox +round3:xobak-cycyg-limix +round3:xenir-mibyt-vabox +round3:xinel-zazez-cotyx +round3:xiliz-rufim-sobax +round3:xufal-lezoc-disux +round3:xuved-vahin-hepax +round3:xisad-lacit-hunox +round3:xiger-nobot-nilox +round3:xifob-tudam-cybax +round3:xohan-rytum-kumyx +round3:ximos-dysus-gelox +round3:xulem-tutev-pynux +round3:xufac-lunim-lekix +round3:xumoz-piced-lizix +round3:xukel-polup-didax +round3:xosit-sukik-zavax +round3:xocon-dutyl-fedax +round3:xudag-rumen-fizax +round3:xutef-mibot-nahyx +round3:xogah-tysyd-pybox +round3:xenic-cezeh-pilyx +round3:xegav-pynyk-cutux +round3:xoval-dated-ditix +round3:xihen-bitug-dilux +round3:xigif-zovyg-refox +round3:xotet-burod-metyx +round3:xifoh-buvuh-cihux +round3:xikib-tazol-rovyx +round3:xegoc-denis-kyvax +round3:xifid-ligyc-sakox +round3:xobeh-typyn-zofux +round3:xefas-siger-sonux +round3:xirih-detem-vysyx +round3:xusam-tydym-golyx +round3:xihak-simyg-gugix +round3:xubad-zafah-cumex +round3:xumar-myhyd-refix +round3:xucan-susug-vodox +round3:xubar-dadin-hacax +round3:xifif-kacyk-kurix +round3:xorom-cyzeg-zytox +round3:xozef-zidam-felex +round3:xepav-kicib-pebax +round3:xozas-livod-dimux +round3:xupid-zyfit-valix +round3:xosek-hezug-lakix +round3:ximec-zidiz-zakix +round3:xesir-cylek-rebix +round3:xikis-kiraf-gigex +round3:xodec-mefim-sytex +round3:xuteg-bysor-sofax +round3:xemim-hanip-tysix +round3:xulil-pupab-pynex +round3:xomah-fonov-pumex +round3:xumav-fovir-tetex +round3:xobag-hagas-nohux +round3:xubac-rymuk-cucex +round3:xulor-desuv-topyx +round3:xifed-bobik-tyfux +round3:xolol-kicik-cupix +round3:xumid-hucen-gigox +round3:xoher-nopug-fafyx +round3:xumoc-vazek-tocux +round3:xubin-zesis-ryvex +round3:xufab-befeb-zogex +round3:xumoz-giciv-bavax +round3:xukor-zipez-pizox +round3:xumih-hyfon-cuzox +round3:xehal-nofut-rizix +round3:xehig-cufen-puzax +round3:xufih-ginul-rivax +round3:xefek-rykus-kygox +round3:xukeg-kazup-hyzax +round3:xemec-docif-botex +round3:xekip-deser-gitox +round4:xesas-dosis-fivox +round4:xobiz-pucok-nopax +round4:xukor-hutud-sumyx +round4:xonat-befur-papux +round4:xebif-mytok-zagax +round4:xicah-hynap-sesax +round4:xofek-gepyv-kedix +round4:xodin-vosys-rutux +round4:xukaz-heryc-nacux +round4:xemet-resyv-pirex +round4:xozop-galac-cadix +round4:xufar-cyhes-fasax +round4:xigap-rudih-funax +round4:xulir-rokyr-gilix +round4:xufab-goven-sisix +round4:xovam-nucyz-bevex +round4:xupez-tecuv-lasax +round4:xukod-disup-dugax +round4:xumoh-pekut-zonex +round4:xepar-rasib-kesox +round4:xeviz-myguk-sygox +round4:xuzep-zicis-lytyx +round4:xidod-lipur-hosex +round4:xoved-mokob-vasox +round4:xupas-leheg-galux +round4:xehov-hykyv-bakyx +round4:xorid-dateh-rudix +round4:xinec-sibal-hazux +round4:xipir-sefyb-korux +round4:xopos-vumed-tosux +round4:xukev-hilal-dyfax +round4:xecov-maher-bugux +round4:xetid-pyryc-fafex +round4:xozoz-zibyt-cazyx +round4:xuhah-feryv-hopax +round4:xelof-ticev-migyx +round4:xiriz-bidoc-fifix +round4:xopin-cyzom-cakex +round4:xevav-byvon-tebyx +round4:xeziz-vyzip-pybax +round4:xupok-terec-vytox +round4:xemal-puneg-zevix +round4:xedel-tozoh-zozix +round4:xidit-labap-dumax +round4:xipab-rerub-folix +round4:xoveh-civul-huvex +round4:xofok-hycyf-pyhox +round4:xehol-tutak-ryzyx +round4:xesig-zuzom-tadox +round4:xuros-lefec-zigyx +round4:xizik-rupyn-cylex +round4:xidaz-tagus-vyfix +round4:xotaz-likol-punax +round4:xubon-nyfef-cupex +round4:xecin-vecet-nizex +round4:xulef-mamas-lafix +round4:xokaz-hevun-kibox +round4:ximep-novan-sagyx +round4:xivem-sorug-fesax +round4:xohob-vogyv-nevox +round4:xekiv-difop-sevox +round4:xolef-conal-dorox +round4:xokac-demub-finex +round4:xubov-suhyp-vehox +round4:xodid-muhic-sykyx +round4:xiroz-bulyc-pyryx +round4:xefin-kenep-fehex +round4:xozoz-bekir-fatux +round4:xikod-picos-dabyx +round4:xugam-poziz-delox +round4:xunit-humaz-lorux +round4:xisal-faget-nebax +round4:xicoc-somur-tidux +round4:xekih-cerim-besyx +round4:xisaz-riliz-byfax +round4:xifin-zusef-nogox +round4:xofet-fokon-fomix +round4:xipaz-zuruk-fufyx +round4:xugel-lubim-nuvex +round4:xevef-homuv-lasix +round4:xisih-bifoh-gugux +round4:xisan-gopam-covix +round4:xonab-gesit-gonux +round4:xuhip-rebas-sobux +round4:xebez-tulic-tuvux +round4:xugic-hynog-zikix +round4:xukez-herez-gevax +round4:xudep-zatiz-valix +round4:xudik-casac-zyhux +round4:xogim-budal-duvux +round4:xofaz-zebys-vorex +round4:xugir-gydin-puzox +round4:xineh-nyfoz-sipex +round4:xolal-homev-gugex +round4:xizat-vycos-horix +round4:xohec-mahat-kevox +round4:xosik-gukoc-zagax +round4:xohop-lamak-nanux +round4:xudem-kubed-hybex +round4:xumat-cevuz-zuzex +round4:xezon-rucyc-kizyx +round4:xeven-mupus-gifex +round4:xesoc-refuv-lipyx +round4:xokad-fomyc-mufux +round4:xidic-togih-vosex +round4:ximoc-redab-pybux +round4:xeleh-hysov-fovix +round4:xutam-citir-ruzox +round4:xulah-vunum-bypyx +round4:xulit-sysoz-tirax +round4:xelal-coges-nokyx +round4:xosil-ronem-cyvyx +round4:xudiv-colyk-fisex +round4:xecec-muhuh-ryvex +round4:xuhor-tehim-cisyx +round4:xutis-recyz-vazax +round4:xisip-cyhyb-vymyx +round4:xinom-dabar-borax +round4:xifeb-vazyt-topax +round4:xocab-kemik-rorax +round4:xucit-zivis-muvax +round4:xokep-pyvaz-morax +round4:xomaz-zisif-cakox +round4:xevip-gycem-zovox +round4:xorok-fucid-micax +round4:xokas-zycom-tybyx +round4:xular-dedeg-mupex +round4:xetez-ryzys-pafyx +round4:xuref-vugig-pykyx +round4:xemas-pifep-revux +round4:ximiz-resil-tanex +round4:xizok-bokuf-bosax +round4:xibiv-fyleg-ninex +round4:xekic-licyp-pyfux +round4:xukop-fyhup-kifox +round4:xopas-gahon-fedax +round4:xofop-nivyc-pivyx +round4:xubat-disis-turex +round4:xosiz-tecen-vigax +round4:xesan-hutov-panax +round4:xusih-cezyr-dyhux +round4:xogam-vyges-vodyx +round4:xofis-tysud-figix +round4:xodob-motyd-kinox +round4:xicen-sytap-gyzax +round4:xogan-denuh-fukex +round4:xecoz-gener-hunax +round4:xohin-gofin-nagax +round4:xesen-dikyl-tabyx +round4:xevop-bitep-dazax +round4:xosep-genem-zytax +round4:xedeg-hamar-sacex +round4:xuvog-rinit-fezix +round4:xedin-magev-hybux +round4:xigef-sytag-zocex +round4:xobag-dutit-byfox +round4:xidep-voped-tobex +round4:xepov-gedal-hefyx +round4:xehaz-gahup-fifax +round4:xoriz-runik-sagux +round4:xomel-kosur-lavux +round4:xokor-habul-zozox +round4:xuhif-suvob-zomex +round4:xider-fyluv-fevex +round4:xoteh-muhyd-nynox +round4:xinis-nibak-gihex +round4:xules-tynuz-nyfex +round4:xeboh-gyvos-hosyx +round4:xogit-segar-zodex +round4:xogos-silyn-gutix +round4:xecan-caner-gehex +round4:xifet-pimil-filix +round4:xiriv-ryzaz-kyrix +round4:xuceh-sacer-herox +round4:xozip-gikyp-tosyx +round4:xuten-zipop-nubix +round4:xumik-gidez-nubox +round4:xenef-fofyd-mylyx +round4:xodam-losuf-locox +round4:xukar-torip-kytax +round4:xinon-zydum-cekex +round4:xumek-kirys-tibex +round4:xitap-zonyc-zamux +round4:xovim-roduh-lidyx +round4:xekez-nahal-labux +round4:xekes-gulic-byrix +round4:xikes-buhek-hegix +round4:xonen-rukam-sunax +round4:xucor-zalak-susox +round4:xupog-motam-nysyx +round4:xebes-dyrym-puzyx +round4:xodof-zavef-kufyx +round4:xofiv-dofef-nyvex +round4:xikad-zugah-bufox +round4:xebor-gicet-dipyx +round4:xomoh-mapol-bivyx +round4:xidak-gaseb-fogex +round4:xolag-vybur-nubyx +round4:xofav-hugec-lilix +round4:xorig-viseb-kocax +round4:xigec-fotun-cahux +round4:xozat-kemyb-zunox +round4:xigen-ducin-fimux +round4:xivoh-hatif-dolix +round4:xuvak-nyrut-cysyx +round4:xiniv-dymut-tukex +round4:xufat-safyk-vezox +round4:xerol-gosob-zygox +round4:xuzeg-suguk-bibyx +round4:xugat-nugag-nekux +round4:xikok-mohur-kesax +round4:xolit-bezys-vuhyx +round4:xutak-cesuv-mukix +round4:xokeb-sutib-latax +round4:xizer-pakyp-pucex +round4:xusof-nebyr-pylex +round4:xodab-falav-regux +round4:xotes-vyfos-sutex +round4:xozot-dydom-hagax +round4:xehod-telym-pysox +round4:xesap-gicic-cufux +round4:xecog-gupob-dutax +round4:xibar-hutyt-tizax +round4:xusob-pirer-popox +round4:xutez-cyrul-zakix +round4:ximit-nymug-surix +round4:xenon-mybap-donax +round4:xiref-sifok-visex +round4:xetat-pipen-vokex +round4:xinok-hemyb-kezax +round4:xeped-duroh-pibux +round4:xobap-metab-tizix +round4:xemet-hafuh-ryhox +round4:xugef-degor-zovox +round4:xunep-nimyg-ryfax +round4:xidag-kycoz-tepyx +round4:xebom-kehyz-vabix +round4:xifoh-bovyt-nisex +round4:xogov-kesav-punax +round4:xukif-sokih-fozex +round4:xipib-pibes-zenax +round4:ximos-zamom-lezax +round4:xidaf-tacys-mamax +round4:xoges-gydap-gamyx +round4:xefep-zedah-cupox +round4:xisen-nihic-tysex +round4:xefeb-patag-tukex +round4:xerik-zafuh-vekyx +round4:xipor-sotut-cadux +round4:xuvev-kyfap-lorix +round4:xuhal-folys-tarux +round4:xohiv-kovef-genux +round4:xesek-bezys-hilex +round4:xilig-sezob-sidux +round4:xugep-zahak-nifox +round4:xogol-satus-mygex +round4:xufez-mydip-romyx +round4:xocem-kulyk-vinux +round4:xelac-zenis-vyvix +round4:xelek-romel-relyx +round4:xoror-dyhez-zasix +round4:xubol-nahut-comox +round4:xogab-nukos-vozix +round4:xibor-dudoz-fahyx +round4:xovoz-fyvur-vupix +round4:ximob-fivid-bagyx +round4:xecas-lydin-cuvux +round4:xogec-kezen-vodox +round4:xigig-dogah-vorax +round4:xofin-casec-kygox +round4:xufes-nypot-lobox +round4:xecon-nabap-rygix +round4:xohim-relum-lomix +round4:xegid-vakam-hasox +round4:xivad-mofyp-kahox +round4:xesiv-zinyl-narax +round4:xidec-kyfet-tukox +round4:xubek-mobyg-pezyx +round4:xezer-goked-cyhix +round4:xodiz-muzat-vobax +round4:xineh-vuhuc-nefax +round4:xozir-rehon-kolux +round4:xoned-zulag-danax +round4:xicop-holuh-sygex +round4:xizor-vemob-sunox +round4:xizef-nilag-tehux +round4:xidoz-matar-dunox +round4:xulit-cucam-kytax +round4:xokot-tavuk-colyx +round4:xigeb-kofif-gicyx +round4:xekak-rynak-hehox +round4:xopit-fosom-tonux +round4:xunel-malis-ganux +round4:xesoc-zupyd-bokex +round4:xicer-saryf-vapux +round4:xodib-lilek-diryx +round4:xezoz-dyvid-nypyx +round4:xesih-gizor-cokox +round4:xinar-hakyf-mocox +round4:xusez-farab-nacex +round4:xuher-zufym-hemux +round4:xivaz-mubig-hotix +round4:xohop-kunem-zydax +round4:xetez-kaves-curux +round4:xucak-nomig-namyx +round4:xitez-vyvys-huryx +round4:xolih-cuban-vylex +round4:xeheb-bovem-gyrox +round4:xerir-pamom-mybyx +round4:xuper-dyror-nisix +round4:xesiz-hozyz-ripyx +round4:xuvan-buhif-totyx +round4:xefis-gevin-zygix +round4:xirib-mysuk-zobix +round4:xesop-cuvyh-kyvux +round4:xumed-tymef-tivux +round4:xinom-nabah-gelex +round4:xikof-gaber-cusix +round4:xuken-radam-sosax +round4:xusal-zeriz-lodax +round4:xeveh-niner-palax +round4:xosop-porac-pagux +round4:xuhat-vodob-virux +round4:xisit-kodok-vykox +round4:xitip-palug-dodax +round4:xogoc-tupob-bohax +round4:xopoc-sazip-gocex +round4:xelof-rahyk-povox +round4:xumol-fyvud-nurex +round4:xufat-rycit-zorix +round4:xozen-cocab-zamyx +round4:xonab-koges-rafyx +round4:xelah-pudir-mucix +round4:xipiz-nivuh-sigux +round4:xekar-zekam-dicex +round4:xezac-hunyb-bycux +round4:xunam-namug-birex +round4:xetan-rinar-nenux +round4:xovah-nunyd-citix +round4:xofan-nelah-lahix +round4:xilib-peleh-lyvyx +round4:xulid-tofaf-kitox +round4:xinab-fehat-dukix +round4:xuzif-tutup-canux +round4:xomeg-cyzih-hirix +round4:xurir-ravon-bavax +round4:xuner-pitab-kodox +round4:xozif-guzad-fimex +round4:xolah-nefyg-rihox +round4:xurib-lebop-revox +round4:xices-hevam-zivax +round4:xudik-kucor-pepox +round4:xelam-ryfiv-fegox +round4:xufoh-magyf-cifox +round4:xefid-vapir-rofox +round4:xotah-gadil-gygox +round4:xusid-nilin-tidyx +round4:xenol-vudek-herix +round4:xesoh-pyrad-ticux +round4:xuhat-syzin-topox +round4:xucil-vebet-zafex +round4:xuzoz-kuhyz-notax +round4:xepaf-tygag-telox +round4:xunit-nolyl-negex +round4:xesad-gigur-banax +round4:xerop-sineh-fekyx +round4:xodeh-dyken-rasux +round4:xebab-lolyk-zutax +round4:xekap-cuzed-zuhix +round4:xumed-cyfyr-mavex +round4:xomez-guhuc-sakix +round4:xefad-hazyg-lobax +round4:xocer-hopop-pymax +round4:xemic-tocam-kerox +round4:xuzas-sygan-rafyx +round4:xepov-kisar-zyzix +round4:xedih-fysuc-kavox +round4:xinab-defag-fumax +round4:xodal-buvyb-vugex +round4:xogob-hufat-movix +round4:xuneh-rupit-mufix +round4:xuhez-dazib-tirux +round4:xedip-gaman-gokox +round4:xepeb-rybud-mecyx +round4:xukid-nosuz-tumax +round4:xomas-varyc-lilax +round4:xizoz-ryram-mupyx +round4:xokom-sosup-kikex +round4:xukap-tuzac-buhix +round4:xosef-valif-gebix +round4:xifap-harus-kolax +round4:xerob-tiguc-ronyx +round4:xukev-mylat-lynax +round4:xipet-lipud-vokyx +round4:xocob-mafad-potax +round4:xunac-vebiv-cebix +round4:xipam-vekig-fapax +round4:xular-fycag-fabax +round4:xiteh-zenap-zypox +round4:xocin-corit-honix +round4:xigam-kuvub-fupyx +round4:xuhoz-gyrys-hovox +round4:xudod-dyrag-kigox +round4:xorim-hereg-dycax +round4:xonig-hodum-zumix +round4:xogol-ryrog-lifex +round4:xecic-cahyr-nesix +round4:xulem-coven-penix +round4:xerot-kucek-sasyx +round4:xeseh-fekyc-tohox +round4:xunam-fumaf-gisux +round4:xulop-hoced-holux +round4:xehid-ryhul-kecyx +round4:xopik-bifan-nemux +round4:xuzam-negif-felex +round4:xemog-sihaf-kobex +round4:xekoc-fazif-pymex +round4:xurar-rutuv-hynex +round4:xeros-veres-rapix +round4:xozez-botof-gatyx +round4:xesic-mekar-gigex +round4:xupam-zinun-kucix +round4:xefif-zugun-rekyx +round4:xupet-gilyn-zavix +round4:xugek-taper-hetex +round4:xikim-tilon-hutyx +round4:xineg-fypaz-posox +round4:xofes-napab-mamex +round4:xehir-gamih-myzox +round4:xenil-kepyb-burix +round4:xuvam-dapat-cofex +round4:xofes-zyfer-vemex +round4:xilet-pureb-cagex +round4:xigav-lacec-vomix +round4:xelal-ciluk-pemix +round4:xubeb-batup-dypex +round4:xevir-fonig-gafox +round4:xuvic-cucub-cuhyx +round4:xuhal-nysan-dorex +round4:xinik-vuril-tufix +round4:xobam-zaned-hunox +round4:xevav-gulov-zytyx +round4:xuzeb-lonup-lirux +round4:xuzom-viveb-totax +round4:xucor-riciz-caryx +round4:xolip-bahez-hafax +round4:xofez-gonur-hydux +round4:xuron-nukar-nymax +round4:xicel-vycoc-gecux +round4:xevis-vyrar-sepyx +round4:xulif-vedec-tecax +round4:xezef-vipyf-gomix +round4:xelem-vovem-hygux +round4:xocez-gedud-nalyx +round4:xufef-reduk-gyryx +round4:xufor-mokyv-rocyx +round4:xeseh-zaris-cylex +round4:xucib-sivil-zemux +round4:xibih-kunic-rudax +round4:xones-lumun-kutox +round4:xepir-kozyp-pacux +round4:xuhid-labih-cilex +round4:xidon-cyfup-kadux +round4:xotop-gytes-davux +round4:xozoz-ryhul-fehux +round4:xurom-zolor-nityx +round4:xonal-kibun-fecox +round4:xifab-didyr-huzyx +round4:xihak-nycik-relix +round4:xosac-cagif-nefox +round4:xurot-gonul-mirix +round4:xerez-gigyr-lafyx +round4:xuvet-sivyg-sybyx +round4:xofin-lahak-timux +round4:xodov-suhak-vemix +round4:xorab-cadas-kakox +round4:xerap-ravom-vahix +round4:xetot-sufad-padix +round4:xulah-mikuz-gynox +round4:xulaf-tyvur-racux +round4:xitis-lynab-husox +round4:xikar-gogeh-mikyx +round4:xubil-tapym-fihex +round4:xumeb-hofah-sumax +round4:xizat-rahoh-lofox +round4:xucov-navic-segyx +round4:xiliv-puril-gugux +round4:xupiz-milas-tehux +round4:xotel-ryhap-negox +round4:xifib-selub-bicex +round4:xifef-kator-picux +round4:xepal-bofok-fovex +round4:xukeg-suzig-kimax +round4:xedev-tagub-memax +round4:xizad-rutyl-kosex +round4:xupil-mafik-mesex +round4:xomah-tozec-nuvex +round4:xican-pivuc-rekix +round4:xomel-relyg-bisux +round4:xugem-kakop-tyryx +round4:xulih-kirys-nutix +round4:xigot-tudyl-ponox +round4:xehag-haces-lerix +round4:xozor-zubug-musyx +round4:xihim-tenyk-sukux +round4:xokag-lonus-penox +round4:xeval-nyhuz-pinox +round4:xudim-pukon-pidax +round4:xifiz-mokuk-fotix +round4:xeror-rekuc-lufex +round4:xipoc-hivum-sitax +round4:xokot-myhek-pocax +round4:xemav-gugyg-ribox +round4:xihac-dycip-fokax +round4:xupan-vavom-tegix +round4:xekit-finec-mynax +round4:xepiv-dydan-nusux +round4:xicos-zihud-lirex +round4:xezof-zanel-sehex +round4:xezac-hinol-zitux +round4:xonoz-benug-vagyx +round4:xipaz-cyvem-subox +round4:xulaf-ninyc-dakox +round4:xezal-ropul-vugix +round4:xufak-bezib-nizux +round4:xefis-dyheg-pobex +round4:xinel-vutub-mevex +round4:xoteg-gucuf-hitix +round4:xitob-kasyv-mepix +round4:xotad-gizon-putax +round4:xemis-vysuc-kigux +round4:xucip-fezef-nitax +round4:xotis-fezaz-tamyx +round4:xuhic-segod-legax +round4:xuhiv-fyhah-vemax +round4:xusih-cagyd-hatix +round4:xumah-cysag-vucix +round4:xezov-guzus-ryhex +round4:xeses-napom-tanax +round4:xebaf-kipyg-dozyx +round4:xevor-pyguv-cigux +round4:xemar-kyhit-tarox +round4:xofen-lubyv-sezax +round4:xidan-zumyb-cadox +round4:xepes-hydad-karox +round4:xetif-ditiv-pamax +round4:xopol-myvur-mytyx +round4:xenal-dasec-zohox +round4:ximed-kolic-hybix +round4:xumak-lituh-lahyx +round4:xikac-bocec-cedox +round4:xomoc-zekuf-sesyx +round4:xumit-vonos-fukax +round4:xulop-gycor-myhex +round4:xuzin-biryr-synex +round4:xehes-bisyk-gapex +round4:xovom-zyfuk-dynux +round4:xetal-rebut-gezyx +round4:xigel-rased-cosex +round4:xihet-nuruc-munox +round4:xegim-soryv-zefex +round4:xugov-ginod-zegex +round4:xifag-sedon-tinux +round4:xutok-hiryg-munex +round4:xokem-lezar-tolax +round4:xihod-lyrah-bydox +round4:xigin-humuz-cidax +round4:xorit-ryfan-gyvex +round4:xigid-ladep-dobax +round4:xifik-monuk-razox +round4:xegos-lumus-sybox +round4:xesib-mupov-modux +round4:xonab-cimid-rofex +round4:xezak-nisac-lifyx +round4:xutap-kunuk-bimux +round4:xemec-rehuh-fevox +round4:xokel-peruk-ducyx +round4:xemal-tesyl-tybox +round4:ximat-cadoh-denyx +round4:xoniv-kycen-nybox +round4:xerop-goket-tevux +round4:xoben-megic-sagux +round4:xomol-cakyh-ropux +round4:xilib-podys-kuvyx +round4:xenig-bibel-zilux +round4:xikod-dyvyc-typex +round4:xudac-sylur-dobux +round4:xunes-gaced-mufox +round4:xuhim-havub-gehux +round4:xover-zydyp-rigix +round4:xudip-hitav-patux +round4:xopav-sugop-zecox +round4:xesod-gubep-nyhex +round4:xemeg-hagul-febox +round4:xesoh-hugod-vuhax +round4:xigah-nogoh-filyx +round4:xefod-gurah-fecex +round4:xotod-nedal-cedex +round4:xerad-zomon-nobox +round4:xevig-tovyz-curux +round4:xesil-humen-bicix +round4:xenaf-senub-gidox +round4:xocop-tisoh-rosux +round4:xemiz-kagud-ciryx +round4:xufih-defil-lucix +round4:xolic-halyf-havax +round4:xenap-ronyl-nuhux +round4:xufas-mosuv-cevax +round4:xofok-katet-rifux +round4:xorag-fuvoh-muvux +round4:xuceg-fazec-medex +round4:xifen-vahos-nynix +round4:xotob-regev-zatex +round4:xedid-zydig-sanix +round4:xekap-rycud-cihix +round4:xogiv-bopep-zekyx +round4:xokeh-livom-vadix +round4:xomos-rizut-zubix +round4:xirek-nyhen-vumux +round4:xidad-feden-bidax +round4:xenon-rinor-cybix +round4:xorah-fohil-fuzyx +round4:xuvep-sozyf-tygex +round4:xomar-bylim-nelux +round4:xodoc-viged-zogyx +round4:xohiv-sekep-pynix +round4:xunig-nokav-tibox +round4:xopin-kokit-becex +round4:xokok-raduc-nugyx +round4:xekak-bylun-sozyx +round4:xusod-mofyv-tykex +round4:xobah-luluf-fadix +round4:xozap-nomih-tuzox +round4:xudeh-canon-dizax +round4:xelib-zohul-fohyx +round4:xubol-remyp-rahax +round4:xevan-bidos-zypix +round4:xodac-voluk-hutux +round4:xozah-vyceg-cepox +round4:xutas-tykur-terox +round4:xevek-comet-zykux +round4:xetal-heloc-hazax +round4:ximiv-dasyl-ribex +round4:xifik-gytat-sopax +round4:xinaf-tyzug-lybax +round4:xelil-ririh-gekax +round4:xirek-sahic-codox +round4:xihig-hegan-hibix +round4:xulok-doror-mefyx +round4:xeson-nituc-sohix +round4:xonov-tiveh-nugax +round4:xefes-pyhib-budex +round4:xomek-suvom-hadix +round4:xugef-vecyf-litax +round4:xehid-tenar-tatix +round4:xihek-luvas-cyhax +round4:xenet-busit-gegux +round4:xohis-biduk-mimex +round4:xitep-cocif-nodax +round4:xekem-zivel-hucax +round4:xedip-lypuz-duvux +round4:xinen-byzad-hohux +round4:xidod-nores-fymox +round4:xuvip-vukah-fasix +round4:xicim-gacus-talox +round4:xezib-hilyn-mavux +round4:xoder-cufaz-molux +round4:xemab-bimin-hatyx +round4:xizod-nelat-cibex +round4:xobeg-babeb-nelux +round4:xepad-gydan-bymox +round4:xeceg-kyvig-senax +round4:xifiz-pozeh-tatax +round4:xeref-duvod-tupex +round4:xonaf-kukul-bydyx +round4:xezeh-tykof-lemex +round4:xecic-hylyp-kolyx +round4:xuked-zikub-susux +round4:xemiz-hocuz-sovix +round4:xezim-lyhyc-nubux +round4:xurav-cuken-kysix +round4:xohaf-byrop-zezix +round4:xezab-nyzeh-kehex +round4:xozis-puzyc-vabox +round4:xipel-dyfeh-lumox +round4:xigob-pimuc-canax +round4:xufaz-lefyd-gikex +round4:xizav-nyhen-nigex +round4:xeheg-konup-rolux +round4:xunop-cunus-livex +round4:xevas-dahoh-vetox +round4:xigip-manyt-rimyx +round4:xihaz-temom-sozix +round4:xuhac-poham-hozex +round4:xesad-lofof-cadax +round4:xozos-ryhif-gudux +round4:xopib-zydac-nepox +round4:xubap-firin-zybux +round4:xepon-zatev-karux +round4:xogof-myrep-pysex +round4:xezaf-mirul-pobax +round4:xilin-zizeg-cazyx +round4:xizim-kugum-cyvux +round4:xipah-babaz-nubux +round4:xucak-sybip-vofux +round4:xulad-kadyf-lukox +round4:xuret-hymeg-nycox +round4:xegoh-gepuh-tozex +round4:xunev-lakep-kuvex +round4:xedir-kysik-picox +round4:xibec-zydyn-kasex +round4:xobiv-sasel-sefux +round4:xikec-hitas-kubox +round4:xehig-pamoc-zohox +round4:xipif-komid-huryx +round4:xutel-nibif-cesax +round4:xifil-ludud-cunyx +round4:xotim-pocoh-pimux +round4:xovel-figus-gonex +round4:xumag-mekek-cusox +round4:xisov-dufek-gulax +round4:xivom-gypab-badex +round4:xokoc-kolen-luvyx +round4:xidir-nefyk-tefox +round4:xulap-tynav-bifux +round4:xehav-lurid-sacox +round4:xuciv-gyhen-temux +round4:xerel-zalih-pigyx +round4:xeror-dysog-cipyx +round4:xizod-nepen-guhex +round4:xenep-kylaz-colyx +round4:xipem-lecep-guvyx +round4:xurak-zegok-napax +round4:xoloc-tizeb-gobyx +round4:xorez-hokub-zihix +round4:xupez-vahol-lokex +round4:xucep-gefov-kugyx +round4:xopit-rutol-vibyx +round4:xepet-pevir-bomex +round4:xizad-duzuh-zegux +round4:xukoc-sinad-lolex +round4:xobes-fitof-symox +round4:xucod-nacaz-modux +round4:xufoc-bagyr-kolix +round4:xukin-cyhyg-duzox +round4:xenos-rotut-gasax +round4:xurob-vaned-lybex +round4:xicef-mypiv-hivox +round4:xekib-kucyp-honax +round4:xelem-zakyr-nobix +round4:xozov-voric-bezix +round4:xibeh-vyvil-rutux +round4:xizip-bukep-zamux +round4:xihog-rahag-bitax +round4:xizek-given-bopex +round4:xoroc-tyfas-dukyx +round4:xegeh-basuc-ramyx +round4:xelig-hocin-fekox +round4:xefaf-vidos-bolux +round4:xukaf-mocuk-nozex +round4:xesac-cuniz-visox +round4:xusic-pudyv-zynux +round4:xilip-zysoh-sabox +round4:xoves-zimer-kykox +round4:xepil-rufel-cimox +round4:xebos-pipos-rovix +round4:xidib-coryz-rykax +round4:xevop-pahih-zukox +round4:ximed-vedeh-helux +round4:xedon-supoh-lohex +round4:xugip-hisyc-vokux +round4:xikap-hipet-cufox +round4:xoheg-bylig-sulix +round4:xoceh-pakak-dapyx +round4:xehag-kagik-katix +round4:xeziv-ziryh-petax +round4:xitog-vuvon-gavix +round4:xepor-bulyn-gipyx +round4:xirak-lomar-sycex +round4:xurev-zityf-tuzox +round4:xozap-misof-kyrux +round4:xobar-rodod-varux +round4:xinev-vynov-vokix +round4:xozas-nudus-fubyx +round4:xeleg-kyryk-nyfyx +round4:xinob-gevot-fibax +round4:xobop-gadef-fatex +round4:xefiv-hyrez-mikix +round4:xivok-tucav-fupix +round4:xihez-banim-rorax +round4:xerar-didyn-pypax +round4:xidec-hyban-padax +round4:xeved-fezif-renix +round4:xubag-kodop-zosax +round4:xikir-bemup-gudax +round4:xumit-kohiz-padix +round4:xedic-nytyc-gunix +round4:xuhin-vetap-gonux +round4:xunid-cuguz-zubox +round4:xilaz-kusyz-gogyx +round4:xokom-hirer-vymox +round4:xugik-siviv-vyvix +round4:xilad-nateh-dylox +round4:xuton-vytyg-mebax +round4:xovar-dehab-tohax +round4:xetet-gonyd-cezux +round4:xokol-silyt-zazix +round4:xeter-molul-gucax +round4:xihin-moreh-tyzux +round4:xonop-dykob-govix +round4:xihir-lubit-zabax +round4:xunak-mopib-derux +round4:xefep-racib-mamux +round4:xigag-vugyf-hyhox +round4:xilod-dipyg-konyx +round4:xesas-toluf-lycux +round4:xepeg-cazed-tykix +round4:xogof-kumoz-fivyx +round4:xihic-fivod-lufix +round4:xogel-rupak-bibex +round4:xogoz-vezyh-telex +round4:xehok-finoc-vypix +round4:xoken-tamug-famex +round4:xureb-kusih-pefyx +round4:xifin-hacut-pocox +round4:xosov-sisab-fyhyx +round4:xibak-socyv-ganix +round4:xelop-kupuc-ruhox +round4:xedih-byfog-nyrox +round4:xeret-virag-pygyx +round4:xeper-hibot-sobyx +round4:xocad-sofoz-setex +round4:xuzin-cipym-lepex +round4:xoron-dovut-zohox +round4:xosor-habiz-dudyx +round4:xecip-bugag-conox +round4:xuron-zeteh-hytax +round4:xogec-cirup-dogox +round4:xohas-lazyg-vivyx +round4:xonih-vobop-nygix +round4:xipig-vadih-hokyx +round4:xizeg-dyvek-kizyx +round4:xuvec-mutit-fesex +round4:xefev-labih-nezyx +round4:xikib-guryf-zugyx +round4:xuzip-hubic-ducix +round4:xelif-lipas-lelix +round4:xosol-bumef-lybax +round4:xiled-caraz-mynax +round4:xugir-dymym-kykox +round4:xihap-miper-kitix +round4:xicov-gulek-cudax +round4:xozob-cecot-citix +round4:xemes-mupic-tuvax +round4:xezoz-bizon-furyx +round4:xitib-lureg-pebax +round4:xorof-dihar-hehix +round4:xecez-rufis-mekox +round4:xeket-tibor-hefax +round4:xubag-catuk-nolex +round4:xemov-mikoz-guhux +round4:xihib-sotem-dohyx +round4:xicek-sovuf-gorax +round4:xikoz-tozeh-letux +round4:xeber-zazap-vocux +round4:xonic-facyv-gufyx +round4:xefel-davak-sosix +round4:xefen-reryl-guvax +round4:xozic-fagaz-disyx +round4:xezek-fohuz-nygax +round4:xunof-gibys-pynux +round4:xigib-nicoh-zegix +round4:xesos-turad-pezox +round4:xegov-vynuf-henux +round4:xozez-zisym-calex +round4:xizoh-peton-myhax +round4:xenit-dumig-linox +round4:xofog-zykeb-tatyx +round4:xufes-segac-tagix +round4:xucol-timib-folix +round4:xivit-tagod-vekax +round4:xodog-vogim-zolax +round4:xocid-rikip-pegyx +round4:xikog-canan-sofux +round4:xuboc-libeh-sisax +round4:xovib-bytun-nypix +round4:xevob-ryzis-sozox +round4:xemec-kilon-lulux +round4:xocim-lygac-byhax +round4:xolel-fovaf-sapex +round4:xuzal-cecuv-nunyx +round4:xiboh-fyhol-gidux +round4:xopeg-tytes-palax +round4:xenap-tanak-gynox +round4:xenal-rubot-rukux +round4:xedes-mevun-pahex +round4:xufiv-ryluk-fifix +round4:xirov-zirut-pucux +round4:xobit-kepin-sofax +round4:xocod-zoved-rolex +round4:xufil-gucut-nuhux +round4:xeleg-kupel-bevix +round4:xocen-libok-telex +round4:xegir-fybot-zihex +round4:xunib-tomem-rebux +round4:xipol-paguv-bupux +round4:xuzav-lypyv-pedax +round4:xevek-fanes-nyfux +round4:xenal-vikam-sedyx +round4:xegom-vubet-kydux +round4:xizet-kyryr-labux +round4:xuzem-takih-lebix +round4:xefin-pyged-nehax +round4:xuman-vygof-tolax +round4:ximak-poveh-fubax +round4:xogir-huvyn-punex +round4:xovok-myvuz-dygox +round4:ximin-hosyv-cenux +round4:xudan-hotik-virux +round4:xiveh-pokov-bebox +round4:xopeb-ralum-zapax +round4:xemeb-mavef-nozax +round4:xolos-hosuc-copux +round4:xorag-lifyk-nalyx +round4:xirim-vyvod-tifyx +round4:xopam-tosuf-kotyx +round4:xozef-mugoz-kovyx +round4:xodir-vunop-nekux +round4:xumik-vigat-vemox +round4:xomak-zemuf-lynox +round4:xopek-fosak-sadox +round4:xuzip-sesog-kuvax +round4:xiken-harar-tyrux +round4:xubid-zagif-dusax +round4:xotoc-guhup-domix +round4:xovar-disyc-myzax +round4:xolot-sifuz-bidox +round4:xokam-zokan-ficax +round4:xovic-bahyh-fyfix +round4:xefoh-salov-catax +round4:xekaz-zikal-horox +round4:xibed-mynac-venax +round4:xifeh-lehuz-ridux +round4:xihos-gigaf-videx +round4:xohec-byson-fovyx +round4:xifac-bokiv-vecyx +round4:xilak-bikut-gapux +round4:xodan-zozep-gotyx +round4:xodid-kived-cybux +round4:xufan-gohep-duhox +round4:xibag-fekyd-gikux +round4:xevad-gosef-himix +round4:xenav-zelaf-sozyx +round4:xipet-lubom-zesex +round4:xuzoz-nazys-rovyx +round4:xuhab-raluc-cosix +round4:xebab-coluz-kugix +round4:xuvol-hehiv-mosox +round4:xikat-myzus-hivex +round4:xiver-fihyn-dukyx +round4:xezit-vuvyg-lucax +round4:xoliv-hutuv-dyvex +round4:xuzon-tufom-ripyx +round4:xebaz-gugip-zybyx +round4:xevag-nifeg-hynux +round4:xihel-lygeb-fetox +round4:xiris-gygyp-borix +round4:xidis-domel-fosyx +round4:xuhop-fivut-filyx +round4:xolis-vunad-cevax +round4:xeleg-cycac-kedux +round4:xeval-cizem-gosax +round4:xedel-sepiz-dykox +round4:xenag-terib-kepax +round4:xufoz-kukiz-mofyx +round4:xovas-zatad-fydyx +round4:xozov-domok-vobyx +round4:xozep-toceh-cegyx +round4:xobar-taboh-huhex +round4:xuhel-gehuh-kamux +round4:xigep-gunit-rapox +round4:xusal-vyber-sukex +round4:xopab-miciv-rabux +round4:xipir-momep-bocox +round4:xilog-muryk-nyfyx +round4:xicoz-nelev-nubux +round4:xogoh-modin-dynyx +round4:xufid-celev-zezex +round4:xiher-bopuk-bimyx +round4:xudop-tycug-kugix +round4:xebaz-fidev-mibyx +round4:xulam-nimal-munox +round4:xopev-vyryd-zolux +round4:xiger-gosyg-zazux +round4:xicit-dador-gykux +round4:xihav-ratit-hyhux +round4:xonal-posil-murux +round4:xukog-pubum-ditux +round4:xegik-nofys-cidix +round4:xumic-gefav-casix +round5:xeged-socyz-cahix +round5:xipal-keruf-nukux +round5:xutok-mifon-gigux +round5:xomod-sidoh-nizex +round5:xozof-giren-gefex +round5:xufid-zopun-simax +round5:xibev-pedis-limex +round5:xisoc-dobeh-favax +round5:xinit-myfyr-cunax +round5:xucok-bohuz-sadyx +round5:xisef-vehis-fozox +round5:xuteg-petav-syvux +round5:xutic-zetav-sarox +round5:xefec-tymyf-nycax +round5:xegov-luhit-locex +round5:xehak-subah-fusax +round5:xirip-codah-fuzox +round5:xivad-gikul-zetux +round5:xinop-rukyl-nonex +round5:xusos-nitaf-nysex +round5:xevim-lipin-turex +round5:xokam-micil-varix +round5:xodac-zakos-puzux +round5:xoved-tibuz-notux +round5:xusem-nibyb-fedox +round5:xosof-zityk-gimox +round5:xivef-ryfip-dolox +round5:xopir-cyhot-tybux +round5:xomem-boriv-bigax +round5:xepok-zodof-tirox +round5:xosod-gecat-ledix +round5:xivon-huziv-gemyx +round5:xurak-cisyf-vohix +round5:xusep-vafad-fibyx +round5:xofir-cocen-mylux +round5:xebar-tusop-gyvex +round5:xized-putal-nubax +round5:xerig-hamez-napux +round5:xosir-zitis-gilex +round5:xudel-kogaf-lotix +round5:xuzen-temes-debex +round5:xegib-kinuf-gigax +round5:xesav-nufeg-mahux +round5:xigot-cuzaz-dusux +round5:xipar-givyh-husix +round5:xugof-kiral-kabux +round5:xuheb-tunih-kehax +round5:xekid-nesic-tysix +round5:xolim-syzul-bagux +round5:xikav-fihuv-bafix +round5:xebob-gofyk-hisax +round5:xevig-vohur-rerix +round5:xekiz-kumet-didyx +round5:xedim-fizap-nohix +round5:xecap-cuvys-gogax +round5:xecod-nizyk-rykox +round5:xukel-sakaf-tunox +round5:xugef-cazih-byfix +round5:xozal-dumav-hylox +round5:xeheh-samyg-muhox +round5:xulas-puham-pefux +round5:xunis-sohor-tivax +round5:xedol-sogyc-kapyx +round5:xedop-rupez-lagox +round5:xokiz-sadof-kimix +round5:xevot-lubac-hebox +round5:xonon-bemyn-myrex +round5:xesif-danic-dedix +round5:xivik-lyrys-tipix +round5:xunik-rizel-vapux +round5:xovin-hugig-titox +round5:xidah-begul-gokax +round5:xemol-kysog-gyzax +round5:xuhir-sasyb-ducyx +round5:xoleh-dunar-gamyx +round5:xeram-sykot-visux +round5:xutel-tuvuz-fotex +round5:xucop-gypob-menix +round5:xilom-movip-lumyx +round5:ximos-logym-ninyx +round5:xigiz-depeh-komex +round5:xenac-robyc-pylux +round5:xelef-fepob-lavux +round5:xucin-nytib-pucyx +round5:xocos-pehol-gypax +round5:xodin-rutib-nysix +round5:xinac-fygih-tabox +round5:xumal-bynal-gamax +round5:xised-pened-vapox +round5:xigig-gehek-tupix +round5:xodad-vufen-conyx +round5:xuvez-nesur-damyx +round5:xerag-povyg-sufex +round5:xonik-dyrov-hilox +round5:xilip-rebip-lutex +round5:xehoc-rubib-nudux +round5:xecit-vipyk-gityx +round5:xenob-perem-gucax +round5:xibev-tevyd-vihux +round5:xokis-gepag-gydax +round5:ximag-kuzym-sefax +round5:xeton-tevuv-luhax +round5:xepin-fodur-gafux +round5:xuhes-tuvir-hymex +round5:xeril-pabyd-nosux +round5:xovop-gunam-kyzyx +round5:xulev-saras-sepyx +round5:xecav-byhok-vosux +round5:xuteg-dafym-ropax +round5:xunaz-gykog-fucox +round5:xuzev-porez-timix +round5:xokag-mekec-bapox +round5:xurak-gyhev-kymix +round5:xepap-semum-nozox +round5:xures-kusal-lutyx +round5:xodot-veryl-zyvax +round5:xeziz-harac-mocox +round5:xipeb-hedef-didox +round5:xorem-vugul-nycax +round5:xufof-nasyg-rikex +round5:xived-negak-celex +round5:xideg-vorom-tidox +round5:xecir-hocyg-fidix +round5:xuzid-pucyk-banux +round5:xotab-tozov-vudix +round5:xidig-vokag-cinex +round5:xodah-sibaf-hovox +round5:xiked-vuzec-cocox +round5:xuzem-hedik-kykex +round5:xokit-pebed-sahix +round5:xodac-dyleh-garex +round5:xikir-gycad-zuvex +round5:xecah-kylib-puzux +round5:xigih-bidic-canox +round5:xuhid-bicol-zovyx +round5:xeval-kypug-zyrax +round5:xilob-kamup-fudax +round5:xekom-lygil-hymix +round5:xopok-mehuh-zazix +round5:xivor-zorit-docox +round5:xokev-kuzot-zynyx +round5:xofig-fynyc-rarux +round5:xusap-tycod-cecux +round5:xeheg-nazol-cyrex +round5:xonod-zulat-nuhex +round5:xonac-gurug-nihox +round5:xohor-netus-surex +round5:xukah-kulud-fobax +round5:xobif-rysic-tivex +round5:xufel-vobug-nunex +round5:xuzaf-mulel-rabux +round5:xucev-docas-nysex +round5:xovaz-sosyf-hyhox +round5:xefil-mifol-pulux +round5:xivan-desof-runux +round5:xufav-beken-fysix +round5:xunih-hynev-vutax +round5:xulep-dafol-tufax +round5:xuhon-ladov-tumix +round5:xuvem-rukon-lyfax +round5:xoneh-fikyp-cegax +round5:xugaz-nodob-dusyx +round5:xinec-lyhyk-kamux +round5:xipel-hises-tytax +round5:xumat-zihas-cyfax +round5:xupoz-zapes-dacyx +round5:xubiv-tevil-catax +round5:xunal-ryrad-dysox +round5:xisef-givyn-vehox +round5:xutin-zilot-dypux +round5:xelet-ginus-tonex +round5:xugic-kumyt-ludex +round5:xizam-palef-rivix +round5:xemet-paryp-mipox +round5:xetam-zyfuf-nekex +round5:xelas-dimef-ketux +round5:xozak-kebor-hasex +round5:xegic-menuz-cevux +round5:xuroc-cociz-masix +round5:xosef-cafeb-vitox +round5:xekeg-vazil-samax +round5:xopan-gykat-havox +round5:xehef-rityn-tivix +round5:xuvop-degug-kosix +round5:xicar-manup-gygex +round5:xopah-giper-zymox +round5:xoriv-habon-ripux +round5:xoloz-conek-duhix +round5:xebar-ranud-marox +round5:xipad-kunon-daryx +round5:xodil-feliz-mirux +round5:xotet-lacoz-sagax +round5:xomin-duham-comex +round5:xudoh-kidon-narux +round5:xecac-bucuh-makux +round5:xukik-cobep-kalex +round5:xizat-hituk-kuhux +round5:xorap-pagil-capux +round5:xofir-tihab-horyx +round5:xehez-fipiv-nozox +round5:xodit-hizar-tygyx +round5:xipal-pacef-butyx +round5:xefog-gahit-vavex +round5:xogef-simad-lusux +round5:xelin-fumol-mifix +round5:xeten-tapyl-navax +round5:xolef-dudef-korix +round5:xorep-pomyn-kybax +round5:xunod-hovap-lynax +round5:xipon-lapot-nomax +round5:xonoh-hiteh-demix +round5:xivot-funat-mibox +round5:xerec-cisop-synox +round5:xoben-goruz-valix +round5:xotah-hadov-figux +round5:xocel-rygod-forux +round5:xotel-cikim-virix +round5:xicis-hicuh-nefax +round5:xihec-deduf-hutyx +round5:xusez-migan-kucyx +round5:xulel-tafab-tesyx +round5:xumot-macuf-gokex +round5:xelil-ropyl-losix +round5:xesim-turus-cykex +round5:xudon-teryl-vycyx +round5:xiraf-fitul-rizox +round5:xokem-zulis-nycox +round5:xusic-fokeb-vekux +round5:xemat-zupyt-nolyx +round5:xunep-nivoh-nipax +round5:xiboh-laduz-hibax +round5:xitin-zakop-racix +round5:xigoh-ralub-cysyx +round5:xobig-tolor-hemex +round5:xikah-husah-papox +round5:xopin-hozyd-pykyx +round5:xolib-lyred-rykyx +round5:xehih-morek-repix +round5:xekon-fefom-nulyx +round5:xezek-gabyv-rotux +round5:xeroc-tasan-hyzox +round5:xuzad-dydof-lahex +round5:xitat-domyd-tovix +round5:xuhon-pygum-nemex +round5:xukid-hovob-molyx +round5:xokeb-hehoz-sugux +round5:xusog-myhur-tybux +round5:xorec-soryf-cefux +round5:xekoh-nurin-sekox +round5:xemep-belit-megex +round5:xerop-zymir-vabux +round5:xofel-licef-putax +round5:xepes-befuc-kokyx +round5:xevoz-sevop-zikox +round5:xugof-hidol-fegix +round5:xocah-zeros-hapex +round5:xeven-kiliz-huzix +round5:xuges-gypif-facyx +round5:xinaz-cyvik-vipax +round5:xunal-megym-devix +round5:xideg-vilup-fifux +round5:xorib-zumyf-hegix +round5:xopam-curob-rucix +round5:xevog-sydab-kokix +round5:xugec-kyfob-kicyx +round5:xizef-tibas-fuzix +round5:xifef-sulys-vanix +round5:xibav-fuget-huvax +round5:xuhog-cyryp-dusax +round5:xomaz-kotag-ditux +round5:xipep-mizut-sylox +round5:xonan-sigib-sohax +round5:xutek-taced-tycex +round5:xedar-kyfel-limyx +round5:xemor-domak-zozox +round5:xiroc-kogot-tucyx +round5:xeron-vahyg-fadux +round5:xemoz-gisaf-nybax +round5:xefas-dific-nukyx +round5:xidot-kikup-ganux +round5:xoral-halih-cylox +round5:xubod-gyzoh-marix +round5:xubog-nofih-sopux +round5:xegan-nepad-tosax +round5:xukel-gihos-rykix +round5:xecol-safym-fapux +round5:xeber-dened-tyzax +round5:xuhar-pomyl-cerox +round5:xilak-hosyt-gusux +round5:xodep-kivoh-kunux +round5:xofam-pedig-kipex +round5:xopef-kegam-habox +round5:xoron-pyboc-cosox +round5:xusov-kelec-sosex +round5:xerip-fufog-zunox +round5:xoras-kukeh-kusix +round5:xecef-puheb-nipix +round5:xupaf-badub-musux +round5:xocol-zagyz-rezax +round5:xosel-tiger-fizyx +round5:xivod-veviv-sugox +round5:xodan-kolup-pasax +round5:xenol-vytuc-bofyx +round5:xorac-zyvyg-mefex +round5:xefar-gatyd-cypox +round5:xohac-pirat-mobux +round5:ximok-fatip-dezox +round5:xobos-pysoz-dypex +round5:xefim-bunyh-dodux +round5:xiziv-bokec-gysux +round5:xibol-vahyb-tepex +round5:xunav-lufyn-didux +round5:xosok-mibid-bogyx +round5:xiheh-heheg-patux +round5:xemon-niluh-lirex +round5:xezam-kekyn-dypax +round5:xudad-mevid-tyrex +round5:xisan-holof-matux +round5:xigic-tivis-divix +round5:xevas-zegav-nuhix +round5:xufil-hetun-bufex +round5:ximok-zysuh-tezyx +round5:xegen-gyzok-nimex +round5:xupot-zukor-zegax +round5:xudog-pemek-datox +round5:xegim-zetym-belox +round5:xuzef-puvav-dadox +round5:xumat-fyhaf-nedix +round5:xibiv-hikyz-tanix +round5:xufoh-casur-makox +round5:xufal-hyceg-vodyx +round5:xokap-gurem-benyx +round5:xuhik-puvat-locax +round5:xifak-nicar-mypex +round5:xuzem-napip-katex +round5:xogaz-rapab-gekyx +round5:xuvoh-nudul-kumyx +round5:xutep-syzus-hamux +round5:xomom-gomut-zepox +round5:xehov-punob-fytux +round5:xukik-gavok-fanix +round5:xihom-mimam-pimux +round5:xisen-kykis-tygox +round5:ximog-ripif-binyx +round5:xobih-nyzyk-nevux +round5:xisog-vozeg-mozyx +round5:xihar-himok-vitux +round5:xedom-panot-nypex +round5:xesim-tanef-mogix +round5:xibas-cukap-fepix +round5:xobes-heber-hyhix +round5:xolah-pykad-fovax +round5:xemip-dovif-sacex +round5:xeniv-govad-zolyx +round5:xuran-sobit-diryx +round5:xehoc-kihec-nisax +round5:xigeh-cizic-tonex +round5:xutok-dytaz-navox +round5:xerab-geduk-bisix +round5:xilop-nivon-belix +round5:xohec-zynel-kevux +round5:ximir-pumov-godax +round5:xukep-ligyg-pepux +round5:xubag-tulab-gizix +round5:xofih-tapuz-betux +round5:xinih-seduz-kulix +round5:xekor-kavin-redix +round5:xosob-zezok-bocox +round5:xizav-kykor-kabyx +round5:xuzef-gubyt-turix +round5:xukat-luves-zogux +round5:xecas-gufyb-vepix +round5:xuzib-fegur-hocax +round5:xugoc-kuvuz-pupux +round5:xekab-gogat-dosax +round5:xihih-bykeb-nygyx +round5:xuzar-sizum-lihix +round5:xepah-gonim-ryzix +round5:xinek-pyhak-fefyx +round5:xidor-ketyz-bosox +round5:xulap-fubog-ranux +round5:xoleh-pikit-bobox +round5:xenop-zozyb-hycax +round5:xiril-fupys-hurex +round5:xibib-ruzut-zabix +round5:xiner-mypym-cisox +round5:xepib-secos-fugux +round5:xitom-farym-kirux +round5:xicig-mymat-hofex +round5:xidof-gimun-litux +round5:xonaf-nanoz-cydox +round5:xubep-haben-lylex +round5:xoceb-nuheb-vevex +round5:xigit-nelak-berax +round5:xizag-vynit-sykex +round5:ximab-kivag-vycux +round5:xicem-ryvop-pydax +round5:xehoz-kuzir-semix +round5:xuvan-pazah-hyfex +round5:xefak-cihem-pynux +round5:xecel-kynog-fotyx +round5:xomom-sugyl-letix +round5:xunid-natap-lazyx +round5:xorel-cosah-tocax +round5:xevin-hifop-peryx +round5:xudeb-lydod-gylex +round5:xupeb-gyrop-rygux +round5:xibah-calyp-vulix +round5:xover-raziv-lazix +round5:xokot-muvuk-repyx +round5:xiros-bihic-kobix +round5:xogos-hobor-ragyx +round5:xunaf-gager-nonyx +round5:xobic-sehoz-purux +round5:xopob-zevug-syvyx +round5:xosaf-tosim-tetix +round5:xevot-vupuz-mytux +round5:xumaz-riced-padux +round5:xicip-sunav-sadox +round5:xezeh-kogyb-zogox +round5:xutor-fakir-fomix +round5:xizeg-cuseb-hivux +round5:xohih-hoded-tihox +round5:xerag-cocas-curax +round5:xebif-tyrer-povix +round5:xopaf-ketek-zypox +round5:xuvis-fezif-sagax +round5:xikic-nosib-tihux +round5:xevon-gozer-dynox +round5:xehig-berik-comox +round5:xubof-mykud-gudix +round5:xedat-pydys-damex +round5:xunez-zonyv-kezox +round5:xenim-robus-pipux +round5:xekip-hehyr-cifix +round5:xozes-cyteg-rigux +round5:xikec-tafit-tysox +round5:xugas-gizar-comex +round5:xovik-pulip-rypex +round5:xezas-vibop-rihyx +round5:xegor-huviv-cotux +round5:xolah-toved-zudex +round5:xepib-fybiz-vefix +round5:xozaf-pelon-dykex +round5:xuzas-sazet-fotox +round5:xibop-rahin-fipux +round5:xedop-vesev-vozix +round5:ximam-zulus-difux +round5:xedif-pemah-gydix +round5:xemep-vogon-dogax +round5:xuzic-sezin-tezyx +round5:xobap-cosys-tozox +round5:xecop-sefos-zinex +round5:xitip-bebuk-botux +round5:xunon-niteb-ramex +round5:xoger-zeguh-halux +round5:xofal-hysad-gymox +round5:xusev-mavof-sehax +round5:xelol-ziguv-falix +round5:xeged-gapop-dylux +round5:xukid-rulet-vuryx +round5:xozat-rycan-kikyx +round5:xomih-nyrig-mevex +round5:xucic-kateh-ruhex +round5:xiviz-seziv-dohyx +round5:xepac-lugut-vilix +round5:xefel-camev-vohex +round5:xebag-lekon-remyx +round5:xirof-zalih-hymox +round5:xohak-zafap-migex +round5:xoler-sokym-mirox +round5:xulec-dymun-kutox +round5:xutip-ryveb-zemyx +round5:xumom-likov-favox +round5:xucab-lyvub-subix +round5:xovor-mypol-bidux +round5:xubif-daton-gopux +round5:xogoz-lovyd-vekox +round5:xuhas-zakis-libax +round5:xomiz-rucoh-turux +round5:xohem-miziz-cohux +round5:xodeb-salib-fehox +round5:xegip-kozir-dudex +round5:xirar-votud-tehex +round5:xovok-kazir-kipox +round5:xikar-sihyh-cacyx +round5:xuvog-pogaf-dacex +round5:xenan-bibep-lunex +round5:xitip-pizap-mupax +round5:xuvic-tikyc-lyvox +round5:xigad-nagib-cumyx +round5:xenid-genub-bovyx +round5:xisoc-hobat-pibux +round5:xogoc-cicim-fukix +round5:xotor-nofez-nizix +round5:xolek-regob-cumox +round5:xupeb-zopic-hafix +round5:xoter-dunug-rymax +round5:xeveb-gabyv-debax +round5:xufed-nyfoz-nilyx +round5:xuric-mavap-zevux +round5:xogib-bikom-duhux +round5:xegit-bodus-dasux +round5:xutom-muham-bufux +round5:xekep-hygyf-pusyx +round5:xobap-pukem-lofex +round5:xurin-rugar-cogyx +round5:xizof-hesob-dutux +round5:xemib-cygys-fobax +round5:xucom-vutat-murix +round5:xukol-bekad-zazyx +round5:xunig-metef-zyfux +round5:xufil-hunym-vuvyx +round5:xitez-zakim-micux +round5:xisod-verut-hidyx +round5:xihab-tapys-gosux +round5:xuzan-hacul-zagix +round5:xosev-vedeg-cilax +round5:xorac-keric-zybyx +round5:xoret-tymav-rabux +round5:xubop-binuh-kezex +round5:ximik-vovug-vozax +round5:xuhav-vemis-kygix +round5:xufit-zygyd-nymox +round5:xopog-moruh-venyx +round5:xitag-gylub-kufux +round5:xizil-nosag-symex +round5:xotin-kebus-folex +round5:xoles-bases-segex +round5:xevab-hohif-tygex +round5:xofob-lytib-ketux +round5:xefas-sihic-mytyx +round5:xidez-rysod-tezax +round5:xugec-buzev-losex +round5:xefeh-pafed-lybux +round5:xumip-fypod-zutax +round5:xemiv-lirip-gedix +round5:xukot-bokur-dykux +round5:xebam-zenoz-decox +round5:xedaz-seruc-hyvax +round5:xumin-sycyh-nyhax +round5:xivir-rolar-munex +round5:xidek-zoryg-kabux +round5:xicep-vohop-rumex +round5:xoton-nalev-gisox +round5:xibec-syfan-zegix +round5:xofec-serir-bidax +round5:xezas-sisib-sidyx +round5:xisab-kozim-buhix +round5:xibaz-zokuc-halex +round5:xodeb-ninom-dekux +round5:xunad-haloc-tylyx +round5:xedar-danor-zupex +round5:xecol-dehut-kasox +round5:xolin-tuder-rarax +round5:xukeg-gulot-pyhex +round5:xehad-posol-pahyx +round5:xegim-kozul-tulux +round5:xuvor-pymaf-gisex +round5:xukig-tefaz-gezex +round5:xemaf-homev-razax +round5:xuhiz-tugef-gepax +round5:xikil-hokih-dovix +round5:xigan-pehyl-pehax +round5:xeken-dohoh-mybax +round5:xosir-nyvit-nubix +round5:xosap-lagef-hudex +round5:xutim-zaner-zekox +round5:xinom-fakab-dynox +round5:xonem-tezop-kyrix +round5:xedit-cyzad-kebux +round5:xevih-vucer-kevox +round5:xehin-lunos-kucox +round5:xigef-pesyt-sysux +round5:xekop-nufis-defex +round5:xerof-mefiv-vicax +round5:xobih-lazih-nigix +round5:xihof-mubat-tysex +round5:xorit-mazes-cidux +round5:xinav-gakyc-tyrux +round5:xunid-pepig-gulox +round5:xuhak-lozup-dihox +round5:xugot-pilom-mosax +round5:xomip-tubys-hufox +round5:xubil-taboc-fylox +round5:xefep-hubif-tytux +round5:xolod-zedur-cotux +round5:xinab-sosyn-fosex +round5:xolam-gikob-gusox +round5:xudad-vypeg-bumax +round5:xohih-tikah-setyx +round5:xoneg-galeb-dicax +round5:xokog-naguk-sikyx +round5:xibin-docit-sypex +round5:xicar-hosuc-fyhox +round5:xufez-momyb-pycux +round5:xerif-ginuk-zigix +round5:xoror-todih-nurox +round5:xenim-lafit-dynox +round5:xuzac-rufap-fysyx +round5:xedeh-momob-bytux +round5:xirot-zazad-bafax +round5:xuhic-pisob-rikyx +round5:xifer-facah-konex +round5:xoboc-pefys-pagyx +round5:xihil-digip-zypex +round5:xurov-molim-fesox +round5:xebac-lasys-putex +round5:xigez-pevav-tyhox +round5:xugop-hadyl-baryx +round5:xidon-cutet-pyzax +round5:xutac-bifez-lacax +round5:xokof-levub-befyx +round5:xidob-petos-talax +round5:xolos-borom-cisex +round5:xifah-fomih-razox +round5:xihod-ledol-cilyx +round5:xopoc-vipul-bylux +round5:xobob-nogar-gizox +round5:xiriv-geleb-rugix +round5:xezih-pideg-dikax +round5:xipag-vetac-tidox +round5:xukak-nycef-temex +round5:xetep-gezan-bytex +round5:xihez-vunat-gafux +round5:xenif-siget-domyx +round5:xolaf-nutol-pofux +round5:xuvap-gulyz-kybix +round5:xereb-tazer-rupix +round5:xibel-fynac-mucex +round5:xinaf-fasam-cytix +round5:xevih-fivur-vevux +round5:xehoh-voric-zopox +round5:xedas-tobip-vytux +round5:xobor-befac-gumix +round5:xicav-dymyg-napax +round5:xicol-lyzug-babox +round5:xefit-dusuf-numyx +round5:xikad-cadub-hapix +round5:xesiv-fedev-denox +round5:xupor-zazec-hozux +round5:xilid-bavum-vylyx +round5:xokan-vagin-fagox +round5:xobol-paled-tycix +round5:xetev-refan-hofyx +round5:xupez-ferun-vekox +round5:xufip-gurus-dirix +round5:xicek-kokof-zimox +round5:xofek-rimyh-kunax +round5:xitob-givun-gavux +round5:xidif-tisik-govox +round5:xobar-hugir-dydax +round5:xidad-gagaz-gezox +round5:xohof-kolot-lidux +round5:xeviz-rutud-pisyx +round5:xupor-bonyv-kekox +round5:xobok-kecim-dedyx +round5:xedeb-lylac-vutax +round5:xeroc-dehav-tolix +round5:xisik-hemin-fugyx +round5:xegis-kehat-nesux +round5:xudog-revez-cybyx +round5:xiteh-lyzit-gemox +round5:xepih-tisah-sevox +round5:xomik-zuduk-pisox +round5:xoper-hociv-mymax +round5:xukis-mufeb-vukax +round5:xufin-komoc-degox +round5:xipid-nibyk-dotex +round5:xedip-mypyk-balix +round5:xeleb-sukiv-hydax +round5:xibeh-tolog-vikux +round5:xikok-petyp-semox +round5:xoteh-neret-cevix +round5:xeret-lifif-sifox +round5:xonev-fezyd-rotax +round5:xozok-cyzyk-kusox +round5:xetep-recur-rerux +round5:ximac-zagyc-kysox +round5:xinom-pasez-hibox +round5:xegof-nocup-hesax +round5:xikoc-rurup-luvux +round5:xupim-danep-vogox +round5:ximac-dipup-nykyx +round5:xobap-zugac-bohox +round5:xudav-calom-numyx +round5:xecal-magub-hufix +round5:xizoz-nynum-cubux +round5:xebib-kofas-burux +round5:xolel-rydig-nabex +round5:xupiz-lolyn-fytex +round5:xunis-luvuk-ruhax +round5:xehar-risir-pefyx +round5:xudac-banuk-sivux +round5:xemob-mecif-fanux +round5:ximoc-nylac-fybux +round5:xuzir-mepan-mimux +round5:xecel-parul-tolux +round5:xogar-kisin-vikux +round5:xupan-pibuc-bylax +round5:xilit-cisom-socex +round5:xitic-cotah-cagox +round5:xugim-makab-kavux +round5:xicac-bafut-sotyx +round5:xunih-dymen-sanyx +round5:xukis-tuvum-pekex +round5:xibas-salok-hugox +round5:xused-hepos-gakyx +round5:xisad-funis-nekox +round5:xuriz-hyhor-buhux +round5:xodos-fuvoz-cufyx +round5:xicav-ripez-kuzux +round5:xugim-ginyf-rufyx +round5:xitok-gufak-katyx +round5:xidav-cuhih-guvox +round5:xoson-suroc-gyrex +round5:xufor-datyb-zerex +round5:xipid-nicyv-hakox +round5:xunar-mohof-vovyx +round5:xogit-gopiv-facex +round5:xigap-zohys-bomyx +round5:xozet-mudal-hosix +round5:xefim-divyl-vetex +round5:xudiv-kyzev-nutax +round5:xemeg-lipul-dyfex +round5:xecob-zuren-lopux +round5:xedip-zeler-ruzax +round5:xesin-rocef-hagyx +round5:xubiz-fadyp-tofyx +round5:xizis-miroh-nalax +round5:xihad-tibyt-nevyx +round5:xorok-vovun-fenex +round5:xuzop-gekun-nitox +round5:xotif-senoh-pihax +round5:xusam-bicoz-magex +round5:xosis-hyfin-licox +round5:xelis-zufuz-kolyx +round5:xeget-dyliz-tibox +round5:xebol-sobum-lihyx +round5:xicez-vebad-solux +round5:xegal-fesun-susax +round5:ximig-niciz-sobax +round5:xubat-zatym-lorox +round5:xekif-vysed-fopix +round5:xezer-zamuk-horax +round5:xehob-guvyz-difox +round5:xoziv-birit-kikox +round5:xofaz-tygon-vavyx +round5:xekof-fyfyf-tapox +round5:xofir-dilub-sivax +round5:xidev-goruc-tivox +round5:xidez-dutev-sekax +round5:xevet-dumab-nyrox +round5:xuken-cizot-rurix +round5:xomir-hacyn-hatux +round5:xivas-befuz-bykix +round5:xobem-lygih-tecax +round5:xubet-cyhuv-bukyx +round5:xemal-cokuk-naryx +round5:xesag-hibyf-kelex +round5:xunob-fizep-nogox +round5:xepog-tenuf-sulyx +round5:xemip-gigos-hibex +round5:xomig-vavep-vylyx +round5:xocov-kunyp-ricyx +round5:xivap-pikuv-melox +round5:xecoh-lyvep-vabux +round5:xeroh-nafam-rebax +round5:xeraf-bodin-kigix +round5:xilon-cedur-binex +round5:xevab-pemuv-rocax +round5:xukas-kygat-pakyx +round5:xepin-zyluk-tosox +round5:xinod-suvid-mesex +round5:xemip-suhof-dasex +round5:xovol-vaseh-pesex +round5:xibif-tagep-melax +round5:xidos-rugur-pagyx +round5:xudef-sybys-telox +round5:xomil-rolor-pokex +round5:xugit-cyseg-vacix +round5:xizos-tocyp-tanyx +round5:xeloz-himez-sicyx +round5:xeric-nyfat-dityx +round5:xebes-natyd-hufix +round5:xufop-tisov-duzux +round5:xeber-hisib-sogex +round5:xedes-hivur-myzux +round5:xolir-rohik-bicyx +round5:xomaz-surec-tumex +round5:xunib-tinih-senex +round5:xever-dogem-hecax +round5:xetem-raloc-hyvyx +round5:xozol-byvok-fupex +round5:xekez-gecuf-gydux +round5:xepoh-patet-lyzox +round5:xined-covat-dygux +round5:xilok-sesud-dunyx +round5:xuboz-datuv-motux +round5:xotog-cohak-sifox +round5:xiboc-hapab-vadyx +round5:xonir-tetyz-penix +round5:xerak-bikuf-ninyx +round5:xukav-dorog-lasyx +round5:xuzom-pukyn-zecix +round5:xubot-fupis-surix +round5:xebat-boliz-ryzyx +round5:xoril-detit-tykox +round5:xumih-goros-socyx +round5:xevob-byhod-pikox +round5:xulov-duhyc-synex +round5:xokad-gugan-filox +round5:xumel-cerif-dibux +round5:xizol-tidof-zivyx +round5:xetov-hetev-bycux +round5:xiban-cysam-pylix +round5:xomin-hunez-nypox +round5:xukaf-hefyf-suvax +round5:xogoc-dypol-figyx +round5:xuzig-lasun-datax +round5:xikeb-vipyr-manyx +round5:xifap-zuzyl-nybix +round5:xupig-lykub-bizix +round5:xurah-carug-razax +round5:xezes-pusoc-sagix +round5:xoram-mokip-cazex +round5:xirof-tocin-famyx +round5:xoheh-bituc-gebox +round5:xurod-hifon-kutex +round5:xitod-dumes-memux +round5:xevez-goboh-furix +round5:xufop-nogak-kuzyx +round5:xofer-vilat-gatax +round5:xisak-mirut-fatux +round5:xobeh-kutob-rycox +round5:xegic-vamyr-dibox +round5:xicop-lufaf-difux +round5:xebaf-casos-bigox +round5:xuhaf-pedih-becix +round5:xoneg-musil-pytyx +round5:xidom-cisim-ragux +round5:xopit-hemif-helax +round5:xiroh-pygot-pomix +round5:xones-higeg-copyx +round5:xecef-kebuz-dazex +round5:xisid-liryl-honix +round5:xefez-pazoc-ricux +round5:xosen-vygyg-buvax +round5:xubom-tyrih-supux +round5:xiraz-gymez-pusax +round5:xibis-numyt-lufox +round5:xofof-vileb-gelix +round5:xocor-nevoz-kibux +round5:xolev-tokun-famox +round5:xoneh-vezen-kifex +round5:xecoc-bytiv-nezux +round5:xufan-sakof-cugex +round5:xerel-bavad-lizex +round5:xefag-calip-votex +round5:xicam-bomek-hofix +round5:xinop-busum-dulex +round5:xeson-hepus-dihyx +round5:xedel-bareg-gihyx +round5:xohoz-leris-remex +round5:xeneg-dirut-seryx +round5:xecic-godah-cigux +round5:xidip-tobuc-gysyx +round5:xihes-cuhot-takix +round5:xofir-bidyl-gebex +round5:xobam-goheg-sehex +round5:xonot-zagep-nuzex +round5:xenoz-cutup-dedax +round5:xedir-sideh-bifyx +round5:xuniz-kizyk-damux +round5:xonif-hyfis-kukux +round5:xusib-bupun-kebax +round5:xekak-totat-mykex +round5:xepak-zareb-kudix +round5:xucam-ladoz-titux +round5:xonen-zybul-mucex +round5:xipip-sikof-cadax +round5:xupeh-kirih-supyx +round5:xemic-kolih-nefax +round5:xuhol-zimyc-lyrex +round5:xudir-runos-gidox +round5:xurir-zofac-pokax +round5:xulot-pupon-sysex +round5:xizap-rahan-dyhyx +round5:xevom-kityc-lidyx +round5:xohon-vupan-badux +round5:xelin-hasid-felex +round5:xiziz-filos-culex +round5:xezaf-lezyk-femex +round5:xoheb-micog-bevox +round5:xozin-pomos-cyzyx +round5:xubit-tadas-nyrix +round5:xiked-tozyp-fazyx +round5:xulir-kezyn-zakux +round5:xotoc-lofog-fufox +round5:xigib-fanec-lypux +round5:xegan-luvup-mehex +round5:xigaz-tuger-dasox +round5:xohan-kuzam-kysux +round5:xomot-tisyg-ninyx +round5:xevad-dycyg-cupix +round5:xider-hoduf-zimix +round5:xevav-zimeh-sytyx +round5:xopet-suzer-rypox +round5:xupeg-fabum-fugox +round5:xedaz-repar-civax +round5:ximir-sacuz-fekyx +round5:xilip-vadeh-hamux +round5:xucag-paget-ratix +round5:xudar-tebon-hokex +round5:xidec-zukit-dihix +round5:xupot-fivyg-ketex +round5:xolig-rygem-gegox +round5:xegin-melah-luzox +round5:xedof-lehec-hegex +round5:xubil-kypit-podax +round5:xococ-loges-sanax +round5:xuhan-lopal-lypyx +round5:xoros-kezyl-namex +round5:xodoh-komuk-fugox +round5:xudev-ruzuc-dimix +round5:xefis-kogyv-hutyx +round5:xizal-domos-nufex +round5:xobap-veler-dycox +round5:xovoz-hybif-bifix +round5:xoloh-mituc-copux +round5:xuhik-vacuc-tofax +round5:xizat-lypot-kyvax +round5:xefab-hahut-dipax +round5:xikiv-ticod-vymyx +round5:xifah-sisoh-mapax +round5:xutal-rasec-fovox +round5:xuzil-dubub-basyx +round5:xevod-fuhad-posax +round5:xipel-dyvug-bytux +round5:xuzid-suram-bonex +round5:xofaf-hatag-mymux +round5:xider-bosuz-zuhax +round5:xumez-sivim-kakax +round5:xolib-bumyr-typox +round5:xefak-zuhav-vycyx +round5:xuzip-viryr-homox +round5:xucip-bokeb-tefax +round5:xusov-kahys-tilax +round5:xokel-hyvik-finux +round5:xipir-fivet-nuzox +round5:xokoz-fehef-dufax +round5:xokav-tudos-hycyx +round5:xodid-kusor-zemux +round5:xekor-lehif-mudax +round5:xutic-nareg-cyrex +round5:xipid-gotud-dyvux +round5:xokif-cytum-mugax +round5:xikol-marim-vusox +round5:xiraf-hucyn-mamyx +round5:xelal-dobar-burex +round5:xovof-modet-zomux +round5:xecon-kadyb-cafex +round5:xebod-nozyt-pumyx +round5:xotat-damen-fasox +round5:xumah-hylec-zygex +round5:xokoc-zihol-bupux +round5:xobel-bedos-hifyx +round5:xipec-gapol-hudax +round5:xicev-gyber-ponox +round5:xebas-goguh-cisix +round5:xurev-cigol-tegox +round5:xolal-cefys-zecex +round5:xubin-lopop-linux +round5:xihac-terob-sidox +round5:xitah-hygih-zavux +round5:xufik-suhoh-comax +round5:xezah-hitoh-bycux +round5:xirip-fisot-kyzax +round5:xebil-mebab-kakax +round5:xucac-vufec-nobox +round5:xohor-zypuv-lugux +round5:xesig-bebal-balex +round5:xuhaf-higis-picux +round5:xitol-hufaf-decux +round5:xidoc-fyret-lafex +round5:xukif-fycam-cukyx +round5:xoziz-puzip-cevox +round5:xegor-sumat-tibyx +round5:xocet-huzec-pypux +round5:xitic-loful-fyrax +round5:xekip-pybir-cehax +round5:xozas-hagub-mopyx +round5:xeven-vycok-gyfax +round5:xurot-byhur-mogux +round5:xotaz-hylit-tomyx +round5:xoceh-dupoc-sokux +round5:xucaf-rogav-sarux +round5:xefat-tavav-pacax +round5:xukan-dobub-bagyx +round5:xucil-deguk-pihax diff --git a/packages/sequence/1/index.mdwn b/packages/sequence/1/index.mdwn deleted file mode 100644 index dd0e891..0000000 --- a/packages/sequence/1/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - 1 2 3 4 5 _ diff --git a/packages/sequence/1/key b/packages/sequence/1/key deleted file mode 100644 index 1e8b314..0000000 --- a/packages/sequence/1/key +++ /dev/null @@ -1 +0,0 @@ -6 diff --git a/packages/sequence/1/summary b/packages/sequence/1/summary deleted file mode 100644 index 684ae76..0000000 --- a/packages/sequence/1/summary +++ /dev/null @@ -1 +0,0 @@ -Count to 6 diff --git a/packages/sequence/100/index.mdwn b/packages/sequence/100/index.mdwn deleted file mode 100644 index fa4d240..0000000 --- a/packages/sequence/100/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - 21 22 25 2a 31 3a _ diff --git a/packages/sequence/100/key b/packages/sequence/100/key deleted file mode 100644 index ea90ee3..0000000 --- a/packages/sequence/100/key +++ /dev/null @@ -1 +0,0 @@ -45 diff --git a/packages/sequence/100/summary b/packages/sequence/100/summary deleted file mode 100644 index 0123c4a..0000000 --- a/packages/sequence/100/summary +++ /dev/null @@ -1 +0,0 @@ -Geometric sequence in hex diff --git a/packages/sequence/16/index.mdwn b/packages/sequence/16/index.mdwn deleted file mode 100644 index d2caefa..0000000 --- a/packages/sequence/16/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - 5 6 7 8 9 _ diff --git a/packages/sequence/16/key b/packages/sequence/16/key deleted file mode 100644 index aa00f2f..0000000 --- a/packages/sequence/16/key +++ /dev/null @@ -1,2 +0,0 @@ -a -A diff --git a/packages/sequence/16/summary b/packages/sequence/16/summary deleted file mode 100644 index 59aef1b..0000000 --- a/packages/sequence/16/summary +++ /dev/null @@ -1 +0,0 @@ -Hex diff --git a/packages/sequence/19/index.mdwn b/packages/sequence/19/index.mdwn deleted file mode 100644 index ee8cdc1..0000000 --- a/packages/sequence/19/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - 1 2 3 5 7 11 13 _ diff --git a/packages/sequence/19/key b/packages/sequence/19/key deleted file mode 100644 index 98d9bcb..0000000 --- a/packages/sequence/19/key +++ /dev/null @@ -1 +0,0 @@ -17 diff --git a/packages/sequence/19/summary b/packages/sequence/19/summary deleted file mode 100644 index c3153dd..0000000 --- a/packages/sequence/19/summary +++ /dev/null @@ -1 +0,0 @@ -Primes diff --git a/packages/sequence/2/index.mdwn b/packages/sequence/2/index.mdwn deleted file mode 100644 index 88b06fc..0000000 --- a/packages/sequence/2/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - 1 10 11 100 101 110 _ _ diff --git a/packages/sequence/2/key b/packages/sequence/2/key deleted file mode 100644 index 9c657f0..0000000 --- a/packages/sequence/2/key +++ /dev/null @@ -1 +0,0 @@ -111 1000 diff --git a/packages/sequence/2/summary b/packages/sequence/2/summary deleted file mode 100644 index 3944618..0000000 --- a/packages/sequence/2/summary +++ /dev/null @@ -1 +0,0 @@ -Binary diff --git a/packages/sequence/200/index.mdwn b/packages/sequence/200/index.mdwn deleted file mode 100644 index b320eaa..0000000 --- a/packages/sequence/200/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - E D C D E E E . D D D . _ _ _ diff --git a/packages/sequence/200/key b/packages/sequence/200/key deleted file mode 100644 index 50ab5ed..0000000 --- a/packages/sequence/200/key +++ /dev/null @@ -1,2 +0,0 @@ -E G G -EGG diff --git a/packages/sequence/200/summary b/packages/sequence/200/summary deleted file mode 100644 index 405dbaf..0000000 --- a/packages/sequence/200/summary +++ /dev/null @@ -1 +0,0 @@ -Music diff --git a/packages/sequence/25/index.mdwn b/packages/sequence/25/index.mdwn deleted file mode 100644 index 4224f45..0000000 --- a/packages/sequence/25/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - 1 4 9 16 25 _ diff --git a/packages/sequence/25/key b/packages/sequence/25/key deleted file mode 100644 index 7facc89..0000000 --- a/packages/sequence/25/key +++ /dev/null @@ -1 +0,0 @@ -36 diff --git a/packages/sequence/25/summary b/packages/sequence/25/summary deleted file mode 100644 index 25c976c..0000000 --- a/packages/sequence/25/summary +++ /dev/null @@ -1 +0,0 @@ -Squares diff --git a/packages/sequence/300/index.mdwn b/packages/sequence/300/index.mdwn deleted file mode 100644 index 54f637c..0000000 --- a/packages/sequence/300/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - ┐ ┕ ┚ ┟ _ diff --git a/packages/sequence/300/key b/packages/sequence/300/key deleted file mode 100644 index 89a49a6..0000000 --- a/packages/sequence/300/key +++ /dev/null @@ -1,2 +0,0 @@ -┤ -┤ diff --git a/packages/sequence/300/summary b/packages/sequence/300/summary deleted file mode 100644 index b84c305..0000000 --- a/packages/sequence/300/summary +++ /dev/null @@ -1 +0,0 @@ -Unicode diff --git a/packages/sequence/35/index.mdwn b/packages/sequence/35/index.mdwn deleted file mode 100644 index 597a960..0000000 --- a/packages/sequence/35/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - 1 1 2 3 5 8 _ _ diff --git a/packages/sequence/35/key b/packages/sequence/35/key deleted file mode 100644 index 126eeda..0000000 --- a/packages/sequence/35/key +++ /dev/null @@ -1 +0,0 @@ -13 21 diff --git a/packages/sequence/35/summary b/packages/sequence/35/summary deleted file mode 100644 index e55fdf7..0000000 --- a/packages/sequence/35/summary +++ /dev/null @@ -1 +0,0 @@ -Fibonacci diff --git a/packages/sequence/400/index.mdwn b/packages/sequence/400/index.mdwn deleted file mode 100644 index 17eea60..0000000 --- a/packages/sequence/400/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - 0000 0001 0011 0010 0110 0111 _ diff --git a/packages/sequence/400/key b/packages/sequence/400/key deleted file mode 100644 index 7d0d318..0000000 --- a/packages/sequence/400/key +++ /dev/null @@ -1 +0,0 @@ -0101 diff --git a/packages/sequence/400/summary b/packages/sequence/400/summary deleted file mode 100644 index 704efe6..0000000 --- a/packages/sequence/400/summary +++ /dev/null @@ -1 +0,0 @@ -Gray sequence (really awful puzzle) diff --git a/packages/sequence/450/index.mdwn b/packages/sequence/450/index.mdwn deleted file mode 100644 index c992165..0000000 --- a/packages/sequence/450/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - 04 aa 12 7f 99 03 ed c1 22 __ dc be e1 45 94 diff --git a/packages/sequence/450/key b/packages/sequence/450/key deleted file mode 100644 index eeee65e..0000000 --- a/packages/sequence/450/key +++ /dev/null @@ -1 +0,0 @@ -05 diff --git a/packages/sequence/450/summary b/packages/sequence/450/summary deleted file mode 100644 index f82f84a..0000000 --- a/packages/sequence/450/summary +++ /dev/null @@ -1 +0,0 @@ -Pascal strings diff --git a/packages/sequence/50/index.mdwn b/packages/sequence/50/index.mdwn deleted file mode 100644 index 0a0db63..0000000 --- a/packages/sequence/50/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - 4 8 15 16 23 _ diff --git a/packages/sequence/50/key b/packages/sequence/50/key deleted file mode 100644 index d81cc07..0000000 --- a/packages/sequence/50/key +++ /dev/null @@ -1 +0,0 @@ -42 diff --git a/packages/sequence/50/summary b/packages/sequence/50/summary deleted file mode 100644 index 0bf14f4..0000000 --- a/packages/sequence/50/summary +++ /dev/null @@ -1 +0,0 @@ -Numbers from Lost TV show diff --git a/packages/sequence/600/index.mdwn b/packages/sequence/600/index.mdwn deleted file mode 100644 index 687ee22..0000000 --- a/packages/sequence/600/index.mdwn +++ /dev/null @@ -1,26 +0,0 @@ - 00000000 61 61 9e 23 01 0c 0c 40 0d 05 40 29 13 08 0d 01 - 00000010 05 0c 4e 40 40 33 0f 0d 05 40 19 05 01 12 13 40 - 00000020 01 07 0f 4d 4d 0e 05 16 05 12 40 0d 09 0e 04 40 - 00000030 08 0f 17 40 0c 0f 0e 07 6a 10 12 05 03 09 13 05 - 00000040 0c 19 4d 4d 08 01 16 09 0e 07 40 0c 09 14 14 0c - 00000050 05 40 0f 12 40 0e 0f 40 0d 0f 0e 05 19 40 09 0e - 00000060 40 0d 19 40 10 15 12 13 05 4c 40 01 0e 04 40 0e - 00000070 0f 14 08 09 0e 07 6a 10 01 12 14 09 03 15 0c 01 - 00000080 12 40 14 aa 61 62 9d 0f 40 09 0e 14 05 12 05 13 - 00000090 14 40 0d 05 40 0f 0e 40 13 08 0f 12 05 4c 40 29 - 000000a0 40 14 08 0f 15 07 08 14 40 29 40 17 0f 15 0c 04 - 000000b0 40 13 01 09 0c 40 01 02 0f 15 14 40 01 6a 0c 09 - 000000c0 14 14 0c 05 40 01 0e 04 40 13 05 05 40 14 08 05 - 000000d0 40 17 01 14 05 12 19 40 10 01 12 14 40 0f 06 40 - 000000e0 14 08 05 40 17 0f 12 0c 04 4e 40 40 29 14 40 09 - 000000f0 13 40 01 40 17 01 19 40 29 40 08 01 16 05 40 0f - 00000100 06 6a 04 12 09 16 09 3b 61 63 9c 0e 07 40 0f 06 - 00000110 06 40 14 08 05 40 13 10 0c 05 05 0e 40 01 0e 04 - 00000120 40 12 05 07 15 0c 01 14 09 0e 07 40 14 08 05 40 - 00000130 03 09 12 03 15 0c 01 14 09 0f 0e 4e 40 40 37 08 - 00000140 05 0e 05 16 05 12 40 29 6a 06 09 0e 04 40 0d 19 - 00000150 13 05 0c 06 40 07 12 0f 17 09 0e 07 40 07 12 09 - 00000160 0d 40 01 02 0f 15 14 40 14 08 05 40 0d 0f 15 14 - 00000170 08 5b 40 17 08 05 0e 05 16 05 12 40 09 14 40 09 - 00000180 13 40 01 40 04 01 0d 10 4c 6a 04 bb __ __ __ - diff --git a/packages/sequence/600/key b/packages/sequence/600/key deleted file mode 100644 index 7a6f1f6..0000000 --- a/packages/sequence/600/key +++ /dev/null @@ -1 +0,0 @@ -61 64 9b diff --git a/packages/sequence/600/summary b/packages/sequence/600/summary deleted file mode 100644 index 587de45..0000000 --- a/packages/sequence/600/summary +++ /dev/null @@ -1 +0,0 @@ -X-Modem + xor diff --git a/packages/sequence/700/index.mdwn b/packages/sequence/700/index.mdwn deleted file mode 100644 index ea9dc0e..0000000 --- a/packages/sequence/700/index.mdwn +++ /dev/null @@ -1,5 +0,0 @@ - C: 00 f1 00 b4 0b 68 65 6c 6c 6f 20 77 6f 72 6c 64 - S: 00 bf 00 f1 02 68 69 - C: 00 f3 00 bf 0b 68 6f 77 20 61 72 65 20 79 6f 75 - S: 00 ca 00 f3 0d 6e 6f 74 20 62 61 64 2c 20 79 6f 75 3f - C: __ __ __ __ __ 62 65 65 6e 20 77 6f 72 73 65 diff --git a/packages/sequence/700/key b/packages/sequence/700/key deleted file mode 100644 index 8cfadfd..0000000 --- a/packages/sequence/700/key +++ /dev/null @@ -1 +0,0 @@ -01 00 00 ca 0a diff --git a/packages/sequence/700/summary b/packages/sequence/700/summary deleted file mode 100644 index a69f929..0000000 --- a/packages/sequence/700/summary +++ /dev/null @@ -1 +0,0 @@ -Packet sequence numbers diff --git a/packages/sequence/8/index.mdwn b/packages/sequence/8/index.mdwn deleted file mode 100644 index 40b13dd..0000000 --- a/packages/sequence/8/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - 66 67 70 71 72 73 74 75 76 77 _ diff --git a/packages/sequence/8/key b/packages/sequence/8/key deleted file mode 100644 index 29d6383..0000000 --- a/packages/sequence/8/key +++ /dev/null @@ -1 +0,0 @@ -100 diff --git a/packages/sequence/8/summary b/packages/sequence/8/summary deleted file mode 100644 index 0a38280..0000000 --- a/packages/sequence/8/summary +++ /dev/null @@ -1 +0,0 @@ -Octal diff --git a/packages/sequence/sequence.mk b/packages/sequence/sequence.mk deleted file mode 100644 index e2ef642..0000000 --- a/packages/sequence/sequence.mk +++ /dev/null @@ -1 +0,0 @@ -$(eval $(call STANDARD_PUZZLE, sequence)) diff --git a/packages/skynet/100/index.mdwn b/packages/skynet/100/index.mdwn deleted file mode 100644 index 2731c51..0000000 --- a/packages/skynet/100/index.mdwn +++ /dev/null @@ -1,14 +0,0 @@ -This category contains live samples of real malware. If you participate -in this category, you agree to take all proper precautions: running in -a virtual machine, properly cleaning your system afterwards, and not -exposing any networks to these samples. - -YOU HAVE BEEN WARNED! - -A user complains that their computer is slow and that all of their -email contacts are receving junk email from them. You find a file on -their system. Reverse engineer this file and answer the following -question: - -What is the name of the file that is copied to the system directory? -(Answer is lowercase, and only the name of the file) \ No newline at end of file diff --git a/packages/skynet/100/key b/packages/skynet/100/key deleted file mode 100644 index 9710187..0000000 --- a/packages/skynet/100/key +++ /dev/null @@ -1 +0,0 @@ -bbeagle.exe diff --git a/packages/skynet/100/malware.zip b/packages/skynet/100/malware.zip deleted file mode 100644 index e84b564..0000000 Binary files a/packages/skynet/100/malware.zip and /dev/null differ diff --git a/packages/skynet/102/index.mdwn b/packages/skynet/102/index.mdwn deleted file mode 100644 index 60c331f..0000000 --- a/packages/skynet/102/index.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -This category contains live samples of real malware. If you participate -in this category, you agree to take all proper precautions: running in -a virtual machine, properly cleaning your system afterwards, and not -exposing any networks to these samples. - -YOU HAVE BEEN WARNED! - -A user complains that their computer is slow and that all of their -email contacts are receving junk email from them. You find a file on -their system. Reverse engineer this file and answer the following -question: - -What is the agent string sent to the call-home website? diff --git a/packages/skynet/102/key b/packages/skynet/102/key deleted file mode 100644 index 1584a27..0000000 --- a/packages/skynet/102/key +++ /dev/null @@ -1 +0,0 @@ -beagle_beagle diff --git a/packages/skynet/102/malware.zip b/packages/skynet/102/malware.zip deleted file mode 100644 index e84b564..0000000 Binary files a/packages/skynet/102/malware.zip and /dev/null differ diff --git a/packages/skynet/200/index.mdwn b/packages/skynet/200/index.mdwn deleted file mode 100644 index 3e040a8..0000000 --- a/packages/skynet/200/index.mdwn +++ /dev/null @@ -1,14 +0,0 @@ -This category contains live samples of real malware. If you participate -in this category, you agree to take all proper precautions: running in -a virtual machine, properly cleaning your system afterwards, and not -exposing any networks to these samples. - -YOU HAVE BEEN WARNED! - -Your network is not working. The cheap routers that the network -engineers decided to buy (largely because of all the free booze -and golf trips the vendor paid for) are melting. Reverse engineer this -file and answer the following question: - -What is the original entry point (OEP)? -(Answer in all lower case, enter the virtual address in hex) \ No newline at end of file diff --git a/packages/skynet/200/key b/packages/skynet/200/key deleted file mode 100644 index e46ab34..0000000 --- a/packages/skynet/200/key +++ /dev/null @@ -1 +0,0 @@ -402fcc diff --git a/packages/skynet/200/malware.zip b/packages/skynet/200/malware.zip deleted file mode 100644 index 0a969b0..0000000 Binary files a/packages/skynet/200/malware.zip and /dev/null differ diff --git a/packages/skynet/202/index.mdwn b/packages/skynet/202/index.mdwn deleted file mode 100644 index fe92ea3..0000000 --- a/packages/skynet/202/index.mdwn +++ /dev/null @@ -1,14 +0,0 @@ -This category contains live samples of real malware. If you participate -in this category, you agree to take all proper precautions: running in -a virtual machine, properly cleaning your system afterwards, and not -exposing any networks to these samples. - -YOU HAVE BEEN WARNED! - -Your network is not working. The cheap routers that the network -engineers decided to buy (largely because of all the free booze -and golf trips the vendor paid for) are melting. Reverse engineer this -file and answer the following question: - -How does the program deliver its payload after the initial exploitation? -(Answer in all lower case) \ No newline at end of file diff --git a/packages/skynet/202/key b/packages/skynet/202/key deleted file mode 100644 index 63cfc22..0000000 --- a/packages/skynet/202/key +++ /dev/null @@ -1 +0,0 @@ -tftp diff --git a/packages/skynet/202/malware.zip b/packages/skynet/202/malware.zip deleted file mode 100644 index 0a969b0..0000000 Binary files a/packages/skynet/202/malware.zip and /dev/null differ diff --git a/packages/skynet/203/index.mdwn b/packages/skynet/203/index.mdwn deleted file mode 100644 index cae30d0..0000000 --- a/packages/skynet/203/index.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -This category contains live samples of real malware. If you participate -in this category, you agree to take all proper precautions: running in -a virtual machine, properly cleaning your system afterwards, and not -exposing any networks to these samples. - -YOU HAVE BEEN WARNED! - -Your network is not working. The cheap routers that the network -engineers decided to buy (largely because of all the free booze -and golf trips the vendor paid for) are melting. Reverse engineer this -file and answer the following question: - -What is the name of the first Windows API executed after unpacking? diff --git a/packages/skynet/203/key b/packages/skynet/203/key deleted file mode 100644 index 322b67a..0000000 --- a/packages/skynet/203/key +++ /dev/null @@ -1 +0,0 @@ -FreeConsole diff --git a/packages/skynet/203/malware.zip b/packages/skynet/203/malware.zip deleted file mode 100644 index 0a969b0..0000000 Binary files a/packages/skynet/203/malware.zip and /dev/null differ diff --git a/packages/skynet/300/index.mdwn b/packages/skynet/300/index.mdwn deleted file mode 100644 index 2b76225..0000000 --- a/packages/skynet/300/index.mdwn +++ /dev/null @@ -1,14 +0,0 @@ -This category contains live samples of real malware. If you participate -in this category, you agree to take all proper precautions: running in -a virtual machine, properly cleaning your system afterwards, and not -exposing any networks to these samples. - -YOU HAVE BEEN WARNED! - -Your network is not working. The cheap routers that the network -engineers decided to buy (largely because of all the free booze -and golf trips the vendor paid for) are melting. Reverse engineer this -file and answer the following question: - -What is the name of the packer used to obfuscate this program? -(Answer in lower case) \ No newline at end of file diff --git a/packages/skynet/300/key b/packages/skynet/300/key deleted file mode 100644 index 40b7a6a..0000000 --- a/packages/skynet/300/key +++ /dev/null @@ -1 +0,0 @@ -pecompact diff --git a/packages/skynet/300/malware.zip b/packages/skynet/300/malware.zip deleted file mode 100644 index e83064e..0000000 Binary files a/packages/skynet/300/malware.zip and /dev/null differ diff --git a/packages/skynet/301/index.mdwn b/packages/skynet/301/index.mdwn deleted file mode 100644 index f887ae6..0000000 --- a/packages/skynet/301/index.mdwn +++ /dev/null @@ -1,14 +0,0 @@ -This category contains live samples of real malware. If you participate -in this category, you agree to take all proper precautions: running in -a virtual machine, properly cleaning your system afterwards, and not -exposing any networks to these samples. - -YOU HAVE BEEN WARNED! - -Your network is not working. The cheap routers that the network -engineers decided to buy (largely because of all the free booze -and golf trips the vendor paid for) are melting. Reverse engineer this -file and answer the following question: - -What is the address of the original entry point? -(Answer in all lower case, enter the virtual address in hex) \ No newline at end of file diff --git a/packages/skynet/301/key b/packages/skynet/301/key deleted file mode 100644 index c22deab..0000000 --- a/packages/skynet/301/key +++ /dev/null @@ -1 +0,0 @@ -4028de diff --git a/packages/skynet/301/malware.zip b/packages/skynet/301/malware.zip deleted file mode 100644 index e83064e..0000000 Binary files a/packages/skynet/301/malware.zip and /dev/null differ diff --git a/packages/skynet/302/index.mdwn b/packages/skynet/302/index.mdwn deleted file mode 100644 index ef48518..0000000 --- a/packages/skynet/302/index.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -This category contains live samples of real malware. If you participate -in this category, you agree to take all proper precautions: running in -a virtual machine, properly cleaning your system afterwards, and not -exposing any networks to these samples. - -YOU HAVE BEEN WARNED! - -Your network is not working. The cheap routers that the network -engineers decided to buy (largely because of all the free booze -and golf trips the vendor paid for) are melting. Reverse engineer this -file and answer the following question: - -What is the name of the second executed mutex? diff --git a/packages/skynet/302/key b/packages/skynet/302/key deleted file mode 100644 index 18d2446..0000000 --- a/packages/skynet/302/key +++ /dev/null @@ -1 +0,0 @@ -SkynetSasserVersionWithPingFast diff --git a/packages/skynet/302/malware.zip b/packages/skynet/302/malware.zip deleted file mode 100644 index e83064e..0000000 Binary files a/packages/skynet/302/malware.zip and /dev/null differ diff --git a/packages/skynet/400/index.mdwn b/packages/skynet/400/index.mdwn deleted file mode 100644 index 6ff0aea..0000000 --- a/packages/skynet/400/index.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -This category contains live samples of real malware. If you participate -in this category, you agree to take all proper precautions: running in -a virtual machine, properly cleaning your system afterwards, and not -exposing any networks to these samples. - -YOU HAVE BEEN WARNED! - -A user is complaining of random blue screens. Their computer is -running slowly. When you inspect the system you find a file named -malware.sys. Reverse engineer it and answer the following question. - -What user mode process does the kernel module inject into? \ No newline at end of file diff --git a/packages/skynet/400/key b/packages/skynet/400/key deleted file mode 100644 index 387eac7..0000000 --- a/packages/skynet/400/key +++ /dev/null @@ -1 +0,0 @@ -services.exe diff --git a/packages/skynet/400/malware.zip b/packages/skynet/400/malware.zip deleted file mode 100644 index 64d19cd..0000000 Binary files a/packages/skynet/400/malware.zip and /dev/null differ diff --git a/packages/skynet/401/index.mdwn b/packages/skynet/401/index.mdwn deleted file mode 100644 index b9829d1..0000000 --- a/packages/skynet/401/index.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -This category contains live samples of real malware. If you participate -in this category, you agree to take all proper precautions: running in -a virtual machine, properly cleaning your system afterwards, and not -exposing any networks to these samples. - -YOU HAVE BEEN WARNED! - -A user is complaining of random blue screens. Their computer is -running slowly. When you inspect the system you find a file named -malware.sys. Reverse engineer it and answer the following question. - -What is the name of the DeviceObject for the kernel code? \ No newline at end of file diff --git a/packages/skynet/401/key b/packages/skynet/401/key deleted file mode 100644 index 622d880..0000000 --- a/packages/skynet/401/key +++ /dev/null @@ -1 +0,0 @@ -67678dj*&78 diff --git a/packages/skynet/401/malware.zip b/packages/skynet/401/malware.zip deleted file mode 100644 index 64d19cd..0000000 Binary files a/packages/skynet/401/malware.zip and /dev/null differ diff --git a/packages/skynet/500/index.mdwn b/packages/skynet/500/index.mdwn deleted file mode 100644 index 28d6a42..0000000 --- a/packages/skynet/500/index.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -This category contains live samples of real malware. If you participate -in this category, you agree to take all proper precautions: running in -a virtual machine, properly cleaning your system afterwards, and not -exposing any networks to these samples. - -YOU HAVE BEEN WARNED! - -A user complains that they are getting complaints of mass amounts of -penny stock scam emails coming from their computer. You happen to -extract this file from your network captures. - -What is the name of the file that is written to disk by this sample? -Enter your answer with all lower-case letters. \ No newline at end of file diff --git a/packages/skynet/500/key b/packages/skynet/500/key deleted file mode 100644 index 6197846..0000000 --- a/packages/skynet/500/key +++ /dev/null @@ -1,2 +0,0 @@ -c:\windows\system32:lzx32.sys - diff --git a/packages/skynet/500/laststage-unpacker.exe b/packages/skynet/500/laststage-unpacker.exe deleted file mode 100644 index db42b4f..0000000 Binary files a/packages/skynet/500/laststage-unpacker.exe and /dev/null differ diff --git a/packages/skynet/500/malware.zip b/packages/skynet/500/malware.zip deleted file mode 100644 index 759c395..0000000 Binary files a/packages/skynet/500/malware.zip and /dev/null differ diff --git a/packages/skynet/501/index.mdwn b/packages/skynet/501/index.mdwn deleted file mode 100644 index 7285ef0..0000000 --- a/packages/skynet/501/index.mdwn +++ /dev/null @@ -1,15 +0,0 @@ -This category contains live samples of real malware. If you participate -in this category, you agree to take all proper precautions: running in -a virtual machine, properly cleaning your system afterwards, and not -exposing any networks to these samples. - -YOU HAVE BEEN WARNED! - -A user complains that they are getting complaints of mass amounts of -penny stock scam emails coming from their computer. You happen to -extract this file from your network captures. - -You'll need the previously dropped file for this exercise. - -What is the tag identifier for the ExAllocatePoolWithTag? -(enter the ascii text) \ No newline at end of file diff --git a/packages/skynet/501/key b/packages/skynet/501/key deleted file mode 100644 index ea5431b..0000000 --- a/packages/skynet/501/key +++ /dev/null @@ -1 +0,0 @@ - kdD diff --git a/packages/skynet/501/laststage-unpacker.exe b/packages/skynet/501/laststage-unpacker.exe deleted file mode 100644 index db42b4f..0000000 Binary files a/packages/skynet/501/laststage-unpacker.exe and /dev/null differ diff --git a/packages/skynet/501/malware.zip b/packages/skynet/501/malware.zip deleted file mode 100644 index 759c395..0000000 Binary files a/packages/skynet/501/malware.zip and /dev/null differ diff --git a/packages/skynet/skynet.mk b/packages/skynet/skynet.mk deleted file mode 100644 index 3ee30db..0000000 --- a/packages/skynet/skynet.mk +++ /dev/null @@ -1 +0,0 @@ -$(eval $(call STANDARD_PUZZLE, skynet)) diff --git a/packages/solera/solera.mk b/packages/solera/solera.mk new file mode 100644 index 0000000..fe5c8aa --- /dev/null +++ b/packages/solera/solera.mk @@ -0,0 +1,8 @@ +solera-source: +solera-build: + +solera-install: packages/solera/tokens.txt + mkdir -p $(TARGET)/solera/ + cp $< $(TARGET)/solera/ + +PACKAGES += solera diff --git a/packages/solera/tokens.txt b/packages/solera/tokens.txt new file mode 100644 index 0000000..a54f542 --- /dev/null +++ b/packages/solera/tokens.txt @@ -0,0 +1,1000 @@ +solera:xihah-myliz-zafox +solera:xesic-pyzyf-dakix +solera:xufis-suhec-honux +solera:xubof-roreg-vozax +solera:xelag-gyryf-kirex +solera:xeken-gerik-guvax +solera:xunim-calil-topax +solera:xutil-bagod-rahox +solera:xotot-pakec-cosyx +solera:xezic-cener-rybux +solera:xidin-vyken-hedyx +solera:xitat-bekoz-hakix +solera:xorel-pemor-ruvax +solera:xurok-gicip-nyzox +solera:xusap-dirif-selex +solera:xeniz-kinys-sefox +solera:xulel-vyhal-kukex +solera:xodos-pevek-gevyx +solera:xubof-necam-hapox +solera:xoner-zubof-minax +solera:xozes-regak-vibux +solera:xulem-pynyg-hymex +solera:xecoz-fahin-bitux +solera:xipek-romah-humyx +solera:xitid-tisof-kopax +solera:xivoz-fykac-subex +solera:xuzip-herin-gymyx +solera:xotec-fepem-sekix +solera:xisob-fysun-dyvux +solera:xivod-verol-bacix +solera:xenif-roteh-sopyx +solera:xerab-vobem-cerex +solera:xosod-pesag-letox +solera:xocog-racoh-zakox +solera:xipib-busum-lufex +solera:xevev-nilel-lazux +solera:xefap-vilog-mecux +solera:xufol-numuv-mecyx +solera:xovol-mivif-vakix +solera:xucaf-lepeh-nonax +solera:xucop-likuc-fukex +solera:xirid-lerum-narex +solera:xibek-lerad-lazox +solera:xivik-lokyg-dabyx +solera:xonir-sypys-pipix +solera:xigih-rehyn-favyx +solera:xiver-kulaf-totax +solera:xunav-domen-rekix +solera:xibok-levon-nozex +solera:xumog-pigyl-cysox +solera:xuseg-lefym-kydax +solera:ximaf-nizoh-togux +solera:xubop-mozuc-hirux +solera:xozid-gyrev-tabyx +solera:xirog-dulog-pozex +solera:xoved-cuset-senex +solera:xunip-besob-lopox +solera:xilog-zadel-kylax +solera:xifeb-temin-divox +solera:xufiz-vukif-nidix +solera:xucom-kiful-luvyx +solera:xicin-kukiv-dulyx +solera:xuhiv-dusal-vypox +solera:xuhot-bohad-nahux +solera:xezos-papoz-zedyx +solera:xisag-kodek-habex +solera:xohel-fypet-namyx +solera:xodon-pabim-dohax +solera:xibic-sozur-lasyx +solera:xigih-mesak-byzux +solera:xogin-pyrul-nucyx +solera:xozep-nofog-vyfux +solera:xuper-nudyz-cegax +solera:xitam-davot-gipex +solera:xuhar-tecar-dezyx +solera:xudif-vypev-cabyx +solera:xereg-regyp-legax +solera:xofod-nyses-nopix +solera:xusot-mylis-sizyx +solera:xudaf-gyhip-falux +solera:xezan-miran-nokix +solera:xugin-cezid-medox +solera:xotak-tesok-vopex +solera:xuloh-lolic-muzux +solera:xukeb-fakyh-gefax +solera:xinez-sadah-ragux +solera:xitid-vucor-kivux +solera:xipof-raraf-sunix +solera:ximen-hytir-macux +solera:xiven-zumec-gifex +solera:xebig-disub-fizex +solera:xekik-gehir-vezox +solera:xebil-modyn-pozox +solera:xevoh-kokef-cirax +solera:xilon-bamyk-tynax +solera:xozaf-vukic-rabix +solera:xulir-zygum-sigux +solera:xohad-pykis-hisyx +solera:xofob-suzod-fotix +solera:xuhaz-zybyg-lyrex +solera:xecok-pebut-vepix +solera:xizoz-cuhop-lonyx +solera:xemof-zehag-citux +solera:xonam-depyr-mivix +solera:xefob-mubos-vezux +solera:xocob-horog-kodex +solera:xutoh-vetez-tamyx +solera:xemem-pufyg-zavex +solera:xusic-fufaz-bucix +solera:xecar-monis-lutax +solera:xosef-tuviv-gapex +solera:xelel-bumyv-sekox +solera:xehez-falif-lohex +solera:xemam-napoz-hygyx +solera:xokih-bemiz-bofyx +solera:xohib-cinyb-cesix +solera:xemed-tipyp-gokax +solera:xocat-mezym-nubox +solera:xozih-cemos-cudax +solera:xuham-leviz-zypex +solera:xemev-rozel-vysax +solera:xurev-gygys-balex +solera:xocos-lutic-hyhex +solera:xovom-pekuv-hevox +solera:xicid-hetug-dofix +solera:xolon-lyked-sigex +solera:xufok-detav-sulax +solera:xohol-ryviv-pyvux +solera:xosav-dygav-cyzox +solera:xozif-mebop-hanax +solera:xokem-fikoz-husax +solera:xubad-fafod-tikax +solera:xuhov-minuh-sibyx +solera:xurop-lokor-myhox +solera:xeris-cetug-digax +solera:xubih-sorod-hubex +solera:xizod-cyset-sesyx +solera:xilol-symop-vysox +solera:xehin-picyf-sufax +solera:xusaf-ralid-forax +solera:xefev-sorir-pekux +solera:xosev-vebot-vacex +solera:xovic-mekac-dakax +solera:xisok-cukun-botox +solera:xezab-cecyt-dicix +solera:xefis-gydov-heryx +solera:xibes-kevut-cafix +solera:xidit-puvak-duvax +solera:xodot-dovah-lerax +solera:xivac-ludig-zolux +solera:xigim-zycip-tysox +solera:xunav-sovor-lynox +solera:xitit-nupet-vorex +solera:xisaz-zotig-mofix +solera:xurah-gipob-sykax +solera:xozid-cegon-zudox +solera:xogav-falor-sygex +solera:xumod-gamud-bevix +solera:xutol-zomam-dysyx +solera:xitep-herov-busix +solera:xitin-vizov-givyx +solera:xofiv-vicyz-tezux +solera:xulir-cozil-zelax +solera:xenov-sybim-gimux +solera:xucid-dysor-kekux +solera:xegor-nyrym-temox +solera:xebec-verut-rityx +solera:xufaf-hutun-cubox +solera:xuzel-mited-porox +solera:xozil-todof-mapix +solera:xofif-bolim-mokex +solera:xelov-nafyk-kulux +solera:xelaf-zofom-fagox +solera:xogip-sazeh-lipox +solera:ximip-pomaz-vilax +solera:xevet-funem-dilex +solera:xekim-kykak-nahex +solera:xoliz-zysem-futux +solera:xofaz-ginib-kovax +solera:xuveh-dabam-bozax +solera:xetor-hekaf-pehex +solera:xozer-nifid-vasox +solera:ximal-gemit-nebux +solera:xibin-fogah-sibix +solera:xosoh-sapuf-kikax +solera:xebes-pevyl-bycex +solera:xomit-vizek-milox +solera:xebed-zasut-tasex +solera:xitiv-fomob-domix +solera:xocem-soref-kotox +solera:xeraz-comib-camux +solera:xucef-doneh-dapix +solera:xovet-byhan-vazox +solera:xogif-fatag-lusix +solera:xepib-rubus-basyx +solera:xocal-hovaf-secex +solera:xeter-dokot-vumux +solera:xusan-pomot-lekex +solera:xuzit-muhyv-fonox +solera:xuned-rosed-gogax +solera:xugen-nefom-nodex +solera:xotar-zudyd-fafix +solera:xopit-vumut-volex +solera:xedeb-nyral-nacax +solera:xuhav-difan-posyx +solera:xuvif-pibyt-gutux +solera:xunoh-megar-lumux +solera:xenos-kyvet-sypox +solera:xugel-corag-nozyx +solera:xicol-tabog-bytix +solera:xuveb-madaz-netux +solera:xikiz-mimaf-vypox +solera:xesor-manuk-tylyx +solera:xipif-nevyk-dydix +solera:xopal-vetef-manax +solera:xobin-lyfos-himux +solera:xupan-vekyk-cebix +solera:xokol-tolag-sedux +solera:xovaf-cukem-gufux +solera:xulog-ciseg-rezex +solera:xovep-zehig-lisix +solera:xufik-lolot-zatex +solera:xebim-hysuk-cidax +solera:xicin-tedev-duhex +solera:xudet-cegep-vukox +solera:xubat-vifon-gifax +solera:xozed-cibac-vupox +solera:xutad-lifec-rygax +solera:xekik-muzev-zupux +solera:xogaz-mefoh-vapex +solera:xiloc-gohid-cosox +solera:xines-mazil-nevax +solera:xitih-caboh-zefox +solera:xeboc-zypon-lecux +solera:xides-cotaz-mudex +solera:xicaz-fycaz-rupux +solera:xopof-musyf-kozux +solera:xilim-nofig-dybyx +solera:xoror-kisov-sihyx +solera:xilam-matap-botox +solera:xidop-begut-zodux +solera:xehaf-totan-derox +solera:xutic-degis-dypux +solera:xudet-henig-zacox +solera:xocin-pefyt-gusix +solera:xidad-secot-tygix +solera:xudar-kobil-novux +solera:xuzic-sisot-nugux +solera:xidek-nyloh-rapox +solera:xokih-hapuc-zatix +solera:xeges-nenak-vesix +solera:xetoc-gimyn-cepax +solera:xolig-fimup-mabox +solera:xodop-metyg-zuhex +solera:xefim-gozyr-tigax +solera:xotar-navik-lylex +solera:xefic-cenyf-getax +solera:xugir-befet-vugox +solera:xebod-dacec-fyrux +solera:xumek-dunos-sozyx +solera:xodap-lysif-byrux +solera:xigap-renim-rufyx +solera:xevef-tamil-linax +solera:xocid-mevet-zefyx +solera:xefid-levyl-hegix +solera:xolon-bohab-sedyx +solera:xoval-pycuz-zesix +solera:xerov-miryt-nukux +solera:xusiz-nygas-kanox +solera:xidic-rudib-lesux +solera:xenar-bisec-gavyx +solera:xefat-virun-fodyx +solera:xumic-nevum-lozex +solera:xurip-kovor-kovax +solera:xebah-fefyr-honax +solera:xihez-tivur-gifax +solera:xusoc-zyses-bynax +solera:xusaf-fyder-nypox +solera:xilas-biruk-bicex +solera:xutak-vabyd-takox +solera:xelif-punol-likyx +solera:xuzit-vevel-tytox +solera:xedot-lygeh-lokex +solera:xepas-hisun-ticox +solera:xikig-byduz-facyx +solera:xobar-cehiv-myzax +solera:xoval-zedyr-suzyx +solera:xugit-vatel-nihex +solera:xulen-huvep-zynix +solera:xihah-besar-denix +solera:xises-kubug-lunox +solera:xezoh-ronec-bazyx +solera:xicel-sacid-zavyx +solera:xomeg-muduk-muzex +solera:xucod-rudet-mutix +solera:xutim-rocym-mygax +solera:xebin-gygyt-comox +solera:xisoh-hopec-zumix +solera:xolaz-kafot-mukax +solera:xokiz-tymis-vilox +solera:xeker-fenih-mupyx +solera:xehog-hegyc-dehux +solera:xireh-sifak-menex +solera:xuket-nubyt-kedyx +solera:xozez-lotez-vebox +solera:xufoz-vebiv-futex +solera:xezop-remet-tedox +solera:xonak-cozan-fomox +solera:xotih-lalig-pubax +solera:xikin-tidep-gutix +solera:xumam-zonyf-hakox +solera:xebek-sobok-sicex +solera:xihod-tecuk-kerux +solera:xekop-visud-pugux +solera:xorik-zyhom-fynux +solera:xutot-hozom-gadyx +solera:xutig-kamem-metex +solera:xenov-zocyv-hobux +solera:xudev-hosof-kopux +solera:xepim-locin-tybox +solera:xekop-nyreg-gavyx +solera:xigog-govef-sogyx +solera:xusiz-kebak-bazux +solera:xufik-fadet-nanax +solera:xosem-cazar-suvex +solera:xocac-nokyl-pysux +solera:xohek-dapek-napox +solera:xetel-kyzam-bidux +solera:xefad-kurud-cenyx +solera:xured-rogyl-vydox +solera:xeval-zorun-helox +solera:xedev-sumik-fevux +solera:xidev-velik-vyzex +solera:xotic-rydig-nynax +solera:xutar-liref-fyrux +solera:xecih-dofuh-himex +solera:xepon-kofyd-pebix +solera:xevez-vybop-tomax +solera:xufag-macyc-gafex +solera:xubef-famol-myhax +solera:xevoh-vilom-hepox +solera:xoson-rapub-zotux +solera:xebof-zyfiz-konux +solera:xepod-lavyd-norax +solera:xenet-lizud-dosox +solera:xubih-tegih-refix +solera:xebof-cybef-rilex +solera:xefog-mirot-kisyx +solera:xipis-lakug-nokax +solera:xolaz-fucot-tyrux +solera:xotid-cusuz-depex +solera:xedik-mycal-buhex +solera:xukeb-bifut-kumox +solera:xolap-nacir-mupax +solera:xihan-fybyd-zecex +solera:xuhen-zysev-zuvex +solera:xefeg-furyf-fazox +solera:ximon-davin-komex +solera:xiros-nevot-papyx +solera:xucel-picar-tybix +solera:xofed-segar-zifex +solera:xezic-gotum-cakyx +solera:xenaf-sygat-tikyx +solera:xogab-menyl-vydex +solera:xecer-vumir-capix +solera:xokik-hukec-gepyx +solera:xuniz-riled-tymix +solera:xisod-nefun-rofix +solera:xofeb-cagur-vefyx +solera:xunez-zyruz-vofux +solera:xebab-nynic-hezex +solera:xulob-zured-hovex +solera:xokes-fekop-favax +solera:xeman-sined-hulyx +solera:xulik-nitos-gipex +solera:xetim-makiv-numux +solera:xorid-fevyz-fegex +solera:xores-huhuv-nidux +solera:xosol-romum-tohux +solera:xufeh-buzit-cobyx +solera:xilag-nokop-sovux +solera:xuvan-locun-dycox +solera:xilop-nyfik-fadux +solera:xuzib-komul-cipex +solera:xubiv-mizuf-hozax +solera:xinim-mugyg-zityx +solera:xohoh-kycim-rapax +solera:xiveg-lemuz-nypix +solera:xuros-cihib-forax +solera:xudom-kiryb-fecex +solera:xisob-sacik-nazox +solera:xumif-fetyc-cuvex +solera:xenik-bugev-racix +solera:xefak-hymim-ponix +solera:xekab-fupep-tygix +solera:xotob-ducuf-bakax +solera:xitev-puhit-vyrax +solera:xupif-reluc-sokax +solera:xotik-mavov-pahox +solera:xorak-bysog-gulax +solera:xolis-tocat-muzyx +solera:xopez-duvul-zudix +solera:xinek-rydyl-puhyx +solera:xuher-budyg-zypux +solera:xopok-febir-fabax +solera:xireb-dobyl-ludox +solera:xukob-zaviv-ficax +solera:xumav-vylec-batix +solera:xogil-sahid-dubux +solera:xigol-renal-sehex +solera:xuvoc-lutud-mefyx +solera:xibak-tupol-filix +solera:xemog-tuvim-regox +solera:xigim-benyv-motax +solera:xezog-balom-pevax +solera:xofit-gifan-cydyx +solera:xolas-cogaz-byzox +solera:ximor-zocyp-bekax +solera:xocem-nizyt-notix +solera:xupil-fepyz-ginox +solera:xoces-cuzup-ryfix +solera:xuhen-zikyp-sisax +solera:xetam-rydit-gilix +solera:xofas-lugaf-zimox +solera:xofiv-kevec-denux +solera:xokit-lires-fefux +solera:xegof-kasym-bezox +solera:xivok-zypov-mikox +solera:xufoz-geluk-gulix +solera:xirav-nagys-lipyx +solera:xevaz-zatez-mynox +solera:xusap-zavyz-lakix +solera:xomim-pyfoh-gicux +solera:xudor-vykez-fadox +solera:ximab-guryv-muhox +solera:xizin-kydyc-himox +solera:xudon-kebul-pepox +solera:xusic-gazes-kefex +solera:xetic-rysot-gonyx +solera:xecef-sulul-cymyx +solera:xunep-rysos-kofex +solera:xohab-tecog-nydex +solera:xipeb-maryk-fyfox +solera:xerek-myheh-zunyx +solera:xukal-misil-cirux +solera:xogab-fypis-huzex +solera:xohen-tibuv-fogux +solera:xibel-cycep-tusix +solera:xobak-ropom-hyvix +solera:xehal-tagak-garix +solera:xuvog-kuvem-nahix +solera:xinem-mupuk-zozax +solera:xosim-begop-kezux +solera:xeciv-bicob-lifix +solera:xomor-butac-cilox +solera:xonad-velel-garix +solera:xozib-vilof-gatyx +solera:xihoc-timap-novix +solera:xozak-bifud-sezex +solera:xufac-zozab-hekex +solera:xireh-cobyc-mecyx +solera:xefif-tumym-hepix +solera:xesac-kydis-cemux +solera:xorif-fobur-socox +solera:xigoz-hocor-harux +solera:xikef-ropep-tibox +solera:xulig-tarof-sikyx +solera:xutas-digit-lezex +solera:xutiv-girep-luzex +solera:xudat-pagif-vysyx +solera:xemos-dabyc-lonyx +solera:xunic-vogep-savix +solera:xumor-mybis-nizex +solera:xuveh-vibib-tudux +solera:xugep-tupoh-botox +solera:xovez-fikys-subex +solera:xefiv-luhum-badux +solera:xebos-fedok-necyx +solera:xuzam-navig-ronox +solera:xeson-bycah-zitax +solera:xolin-sivur-byzyx +solera:xekeg-behyn-fypox +solera:xenib-myrec-gigyx +solera:xuzar-fevoz-tylox +solera:xolov-bytir-getix +solera:xokod-comot-sanox +solera:xuceb-dofyf-cumax +solera:xitod-vuvom-gyhox +solera:xinit-lataf-foryx +solera:ximir-bosad-renex +solera:xebap-cylur-fylox +solera:xumod-semok-sekox +solera:xitic-hemen-kafex +solera:xefeb-dobab-kypux +solera:xofac-bynyf-zyvex +solera:xifen-fukiv-vezax +solera:xiveh-rocon-pamux +solera:xikeb-ligyn-hasux +solera:xetik-cenir-tivyx +solera:xerer-mavik-cyfex +solera:xuhon-mozos-kizyx +solera:xoviv-zyvig-ryhyx +solera:xifec-hifur-sefux +solera:xusar-lifel-takox +solera:xokal-bevyc-mipux +solera:xevin-tesah-hyrex +solera:xopef-bomuf-lehix +solera:xucod-kilit-petax +solera:xufib-masyc-syvix +solera:xepov-nezic-tetex +solera:xomiz-cafog-zudox +solera:xemos-poral-mumux +solera:xikot-tifik-vacex +solera:xohap-cokys-pasox +solera:xemac-labap-mikex +solera:xizik-fymin-copax +solera:xukok-horum-puvix +solera:xotam-raroz-dumax +solera:xirim-zizob-zicix +solera:xetid-ragag-dymix +solera:xusoz-symus-genyx +solera:xubeh-govep-kitix +solera:xemek-sygok-cudax +solera:xolat-tanok-pykyx +solera:xidam-vypir-senux +solera:xilaf-dorup-sivux +solera:xezeb-kihel-tozex +solera:xubem-nigyg-ryhux +solera:xebet-zipol-pypox +solera:xeved-betin-bumux +solera:xirev-togin-tevax +solera:ximag-noreb-sepax +solera:xupeb-cavyn-devox +solera:xomek-gitut-burox +solera:xuher-golyp-safyx +solera:xukic-sykod-secex +solera:xorek-behof-sarux +solera:xuvab-monoc-vazax +solera:xihal-tader-lisox +solera:xevig-nysyp-navex +solera:xofon-mibik-nafix +solera:xucac-fufen-cobyx +solera:xidiz-pybym-fanax +solera:xuzos-byzeb-byhyx +solera:xired-retuf-digox +solera:xevar-honet-hebix +solera:xogeh-pifeg-curax +solera:xisef-filub-zedox +solera:xodaz-kylyv-zykax +solera:xozev-lenos-befax +solera:xidov-mepun-dolex +solera:xokac-fuvob-macax +solera:xilam-satym-bafyx +solera:xidap-lahuh-navox +solera:xubim-luhol-lohox +solera:xugon-bobug-bubax +solera:xidol-kesak-dokax +solera:xovet-zylig-misix +solera:xovev-kehop-hotix +solera:xuhik-cavov-zoryx +solera:xotot-ducur-zefyx +solera:xolos-cymud-safax +solera:xisic-hicag-tynux +solera:xenem-regom-dokox +solera:xurek-murar-pumox +solera:xezic-dikal-hybox +solera:xuvaf-dubug-pykex +solera:xunes-sibip-dimox +solera:xemel-vivod-huvyx +solera:xikeg-lulov-nanyx +solera:xudad-micoz-totyx +solera:xelav-tofun-hykux +solera:xiris-vyrig-mitax +solera:xifok-cudok-zotyx +solera:xilav-digec-lumax +solera:xoseb-bokoz-helyx +solera:xigav-kuren-hozex +solera:xocat-maren-nekyx +solera:xitok-babiv-satex +solera:xusis-negyb-darax +solera:xotor-lihyb-zidyx +solera:xezom-kakid-ruzyx +solera:xigav-bagyc-rerex +solera:xosep-vukyf-macox +solera:xelor-vupyg-pydux +solera:xison-sonyg-lyfyx +solera:xomot-vehav-makax +solera:xurok-forug-lyryx +solera:xipaf-zacet-culux +solera:xofen-favyh-pomux +solera:xecah-bynov-cekyx +solera:xeket-dizev-lonux +solera:xorif-tetut-dibax +solera:ximat-filag-rycox +solera:xoriv-vuvol-nefox +solera:xicoz-guruh-lacux +solera:xosib-zidoz-nabux +solera:xudiv-kives-bezex +solera:xopos-matez-tybix +solera:xepaz-huhub-lahyx +solera:xibam-nyhum-sahox +solera:xedot-gamog-ripux +solera:xevoz-pytat-vatex +solera:xugol-holyl-makyx +solera:xehog-nycam-pupux +solera:xebos-fikob-lihix +solera:xipop-sukul-gitox +solera:xezak-biduv-sebix +solera:xotac-dituk-vorix +solera:xusod-fivir-bikex +solera:xefoh-focik-zunox +solera:xulab-fopof-tyfyx +solera:xedil-lucyk-vypux +solera:xokof-pudat-rohox +solera:xeneh-gemuf-bilix +solera:xevav-hyric-nezax +solera:xonek-meriz-fupux +solera:xekok-cafin-vitax +solera:xihag-nisom-fuhix +solera:xefif-pysit-lirax +solera:xisor-lazyk-mopex +solera:xogis-gifyd-bymyx +solera:xunas-tirod-bobyx +solera:xecec-gifyb-bubyx +solera:xilig-hacic-rolox +solera:xovam-bevyb-cofux +solera:xipar-runuh-pusux +solera:xipoz-ginas-botyx +solera:xosob-zunis-fifyx +solera:xoveg-dezek-pylax +solera:xuhev-hasam-zynix +solera:xonih-fypyk-hyvex +solera:xopop-fylik-vygux +solera:xedam-ruson-fudix +solera:xikad-ceruh-lazex +solera:xotop-kipop-hurax +solera:xohem-zycab-vyhyx +solera:xolak-vihad-nudex +solera:xehih-zogib-dybix +solera:xobed-fidud-bycox +solera:xitim-rahit-fehex +solera:xidor-teser-dovix +solera:xikid-senev-subex +solera:xunin-timoz-busox +solera:xopen-durop-denux +solera:xidig-zypub-zimix +solera:xeram-peduz-kulox +solera:xemob-tilis-patex +solera:xuteb-licez-fytex +solera:xotob-rofev-hakex +solera:xigob-zecad-lokux +solera:xiker-kocun-gadix +solera:xemen-kizat-gudox +solera:xumas-kehel-tisox +solera:xihil-zygoz-gotix +solera:xilel-hylim-dylix +solera:xugig-kohah-byrix +solera:xevot-kyrur-hydyx +solera:xecal-myvop-rosox +solera:xudid-lepav-nybex +solera:xitip-tobep-bogyx +solera:xinav-hapim-fezyx +solera:xisir-motog-zopox +solera:xohaz-suzib-hyvyx +solera:xeniz-nydit-kagox +solera:xifef-pomas-cilax +solera:xufev-dafih-kumex +solera:xepif-gafyf-tebox +solera:xilic-kotod-fitex +solera:xitih-kavig-lesex +solera:xikas-firuh-dilox +solera:xeren-zakum-tykox +solera:xohal-fypoh-vymyx +solera:xegat-kotov-dydyx +solera:xinor-nenok-zodix +solera:xitin-fedez-luhax +solera:xevag-fumyk-gevix +solera:xenaz-ravik-turex +solera:xihor-belav-hifax +solera:xebok-hokoz-bevax +solera:xisep-gekuv-peryx +solera:xecor-sycaz-zizux +solera:xomeg-menip-hinox +solera:xubos-zepug-didux +solera:xirib-pabyg-tepax +solera:xenad-zacog-vazox +solera:xovap-kivuz-kovox +solera:xesin-luner-tehyx +solera:xegec-zylep-zilex +solera:xohom-comik-bisyx +solera:xeges-zutot-fehux +solera:xitib-riliz-gerox +solera:xigog-kiduf-bovux +solera:xecir-kubur-bolox +solera:xemok-camol-redix +solera:xuleg-dutyh-fabex +solera:xecis-dogez-cypyx +solera:xivat-povog-pehyx +solera:xesip-zukag-myvyx +solera:xifol-vehiz-hekax +solera:xeleg-tydir-letex +solera:xekog-pasug-ragyx +solera:xibig-dynuz-zavex +solera:xolok-sitov-fazox +solera:xepop-zinod-hagux +solera:xorel-cylim-pivix +solera:xobag-bemad-bolyx +solera:xucas-lalyg-bonox +solera:xisah-huzov-lopyx +solera:xulah-ryryh-dafax +solera:xigag-nydaz-sudix +solera:xotap-gorat-navyx +solera:xolaf-lofac-digox +solera:xehot-fizuc-dypox +solera:xoman-pemom-huryx +solera:xemim-fomyd-mykix +solera:xesab-lifen-havex +solera:xucof-kebip-cytax +solera:xesig-kydyl-zerex +solera:xiton-fedir-zocex +solera:xibop-mifem-puzux +solera:xudoh-lekoh-denux +solera:xocot-pepob-zafyx +solera:xupep-cosez-cilox +solera:xedib-dicin-dyvox +solera:xitap-motyp-vyrox +solera:xugol-nusal-fyhix +solera:xizeb-zidep-nohux +solera:xepaz-nafib-robox +solera:xogel-betyh-fifux +solera:xuvef-vydol-kimax +solera:xetib-nozen-manix +solera:xotok-relen-zybax +solera:xolig-limef-bohix +solera:xusoz-sozob-temox +solera:xuhot-rumid-tinyx +solera:xufid-godup-gonax +solera:xenat-hupih-kotax +solera:xuheb-vatar-remex +solera:xulen-mikom-dusex +solera:xucac-fazab-nofax +solera:xutot-zehol-tegix +solera:xepaz-novas-fehix +solera:xumav-lamog-hilex +solera:xezop-pubec-tosux +solera:xinig-mysys-dupyx +solera:xudif-vydop-burox +solera:xeceh-fydoh-betyx +solera:xigob-vifak-mefax +solera:xisih-nuzas-tagyx +solera:xopaz-zolyc-dehyx +solera:xeras-cyzoh-kosux +solera:xihon-nylok-gydix +solera:xizef-camyf-pisyx +solera:xehob-bytut-bagux +solera:xoleh-tynog-lobyx +solera:xulag-susop-bafix +solera:xoval-vukuz-navyx +solera:xutam-bizob-banix +solera:xeran-lyliz-nihax +solera:xisip-bucas-kilix +solera:xisiv-mylam-gevox +solera:xomov-pepoh-bygex +solera:xipid-gytar-cycix +solera:xukih-milec-renyx +solera:xipad-himol-vocax +solera:xipac-kazep-sevax +solera:xegib-lemev-velax +solera:xuzad-dadid-sysex +solera:xukob-bukan-zygax +solera:xigel-bokel-vibyx +solera:xotob-gizig-vyzux +solera:xocov-fufev-damix +solera:ximog-fopil-gehux +solera:xoneh-vobis-bafyx +solera:xovof-hyfyd-ryzox +solera:xerit-manok-kocex +solera:xerec-lolor-makix +solera:xicon-tisec-sypyx +solera:xubik-bunul-pidax +solera:xucip-cylim-degox +solera:xunos-rozug-tebox +solera:xefos-ducyk-kobyx +solera:xuvoz-pohih-lyfax +solera:xerit-zugep-hypix +solera:xocas-ditov-nipux +solera:xorib-hyfim-giryx +solera:xobiv-hulec-myzux +solera:ximik-mufep-zotux +solera:xicer-devuf-tyhux +solera:xevek-lyfed-dezax +solera:xiriz-hakyp-bozyx +solera:xofag-kafuc-pyvax +solera:xunor-pidug-bukox +solera:xobes-zavab-tubex +solera:xevek-zabuc-hynax +solera:xohis-cemyl-nozyx +solera:xotad-behiv-hukex +solera:xiviz-muges-conox +solera:xepez-lameh-vovox +solera:xocih-zofav-sygax +solera:xuloh-bikyh-nalyx +solera:xusoz-namuc-myvix +solera:xuked-lahib-zilax +solera:xipon-zobig-cimux +solera:xofah-bydyc-nydix +solera:xuzot-hydum-gudux +solera:xolik-bucuk-keryx +solera:xocaz-tolah-nurox +solera:xosek-vypas-dobix +solera:xidak-mozec-zotax +solera:xomad-ranop-zakux +solera:xopit-todis-murax +solera:xogon-genyp-ronix +solera:ximab-halyv-zehex +solera:xined-lidyn-zotax +solera:xuzot-gacoh-gonox +solera:xuven-bilat-dasox +solera:xokez-rivyz-ravyx +solera:xuvov-puhuz-nyzux +solera:xiten-nanir-ritex +solera:xubaz-pydyd-kemox +solera:xekeb-konof-sobox +solera:xevof-sufiv-dozix +solera:xicip-zynab-gurux +solera:xuhem-dodez-zizyx +solera:xelin-gufin-magax +solera:xivaz-gufeh-lufix +solera:xifip-hysev-mypix +solera:xuvor-torid-sacax +solera:xipiv-rydut-bytax +solera:xukar-fefed-fugox +solera:xizav-sacat-dacix +solera:xecah-rulup-zumax +solera:xosef-mudeg-cazox +solera:xugog-vatyb-zybyx +solera:xohif-delad-rotox +solera:xodod-nenob-cidex +solera:xigaz-kicom-zesax +solera:xeses-bilir-pobax +solera:xites-zizyv-ledex +solera:xudah-zilez-zezux +solera:xokab-rigen-pytyx +solera:xefim-sosat-bagix +solera:xirek-pagor-migix +solera:xozac-votul-kymax +solera:xudeg-pycic-lubyx +solera:xedod-vomuk-behox +solera:xunot-tegeh-vusax +solera:xigev-vifom-folyx +solera:xinis-depuk-virox +solera:xefih-micit-vibex +solera:xekes-cuvyz-hucyx +solera:xuvep-moceh-tubax +solera:xecaz-cunyf-pufox +solera:xuheh-gofyz-kuhax +solera:xecaf-zamed-konox +solera:xoboh-funyt-vibix +solera:xipov-cites-tufox +solera:xiger-fosah-dedex +solera:xeraz-solyc-sufux +solera:xudik-piboz-dedex +solera:xogip-syfet-sirix +solera:xevop-cadac-mifix +solera:xipis-hipun-belux +solera:ximol-locur-rovux +solera:ximor-notam-subox +solera:xugaz-cegul-nyvex +solera:xuked-bysut-mimix +solera:xubil-vupon-hycux +solera:xucak-dysyt-gazix +solera:xerov-vikyh-docix +solera:xemif-ruvyc-zohux +solera:xodok-mumiz-mezex +solera:xozeb-goseh-migex +solera:xuzid-zitys-cupyx +solera:xedip-zynic-vygax +solera:xucen-zigec-rerax +solera:xogef-toren-dirax +solera:xudig-revyg-fyzix +solera:xivel-kesef-rohux +solera:xorod-gipem-lodix +solera:xehab-kesod-vyvyx +solera:xotid-socus-hivix +solera:xufef-fokib-diryx +solera:xumov-hapok-damix +solera:xunos-gekos-lyhox +solera:xecov-lazyt-zylux +solera:xetov-fekah-lisax +solera:xikec-sinim-livax +solera:xusol-bivag-dodyx +solera:xoval-ciliz-rorax +solera:xuren-sykud-dabex +solera:xulap-tibym-tibex +solera:xesic-kyfun-rusux +solera:xemak-vucuk-lyvux +solera:xorat-kofym-zuzex +solera:xugig-cepyv-lelux +solera:xipip-becez-lysyx +solera:xoses-vulur-dozix +solera:xusem-vavac-bimex +solera:xodiz-nopys-kihux +solera:xisir-lypif-silax +solera:xosop-botug-socax +solera:xeseg-nevev-fydux +solera:xetet-pivyz-hytox +solera:xevaz-gihyf-kufyx +solera:xekin-libun-batix +solera:ximac-fonin-mylix +solera:xedeb-logis-menux +solera:xebap-nalav-fuvax +solera:xihon-fihav-gurex +solera:xocin-cybiz-bacox +solera:xutiv-hagup-punyx +solera:xiras-hehug-navax +solera:xozom-fycic-pydox +solera:xoteb-nymak-guzux +solera:xibas-ferot-dumix +solera:xepes-setat-hysux +solera:xodos-bazub-sepex +solera:xorit-nofif-panyx +solera:xizer-cumym-cetyx +solera:xubed-niguh-farex +solera:xegac-bizuz-dytox +solera:xuvif-zapyd-cuzox +solera:xodog-dibaf-hokix +solera:xufel-katev-legex +solera:xecef-tegum-nihyx +solera:xupom-galoh-zamux +solera:xulof-fanyk-pebax +solera:xohad-kyger-zebux +solera:xuceg-cabec-kodex +solera:xorek-nobuk-nykux +solera:xemim-lemoh-rokax +solera:xugip-ruryh-puvex +solera:xuzan-ganev-fisyx +solera:xikat-hanep-subux +solera:xedos-zecam-badux +solera:xibic-lynud-kutax +solera:xobis-nalad-bokix +solera:xusaf-cadop-zecux +solera:xilab-sokor-fomax +solera:xupat-bifef-ryhux +solera:xevat-guveh-ramex +solera:xuhed-gidop-lisyx +solera:xepis-fysep-terux +solera:xopec-senur-mahux +solera:ximid-rufig-bakex +solera:xivib-zukiz-nedix +solera:xibam-limud-febax +solera:xefir-fosyc-lebyx +solera:xiroc-pybon-muzex +solera:xufaz-rukab-fudax +solera:xenoz-fykir-dydyx +solera:xiked-lenap-gyryx +solera:xibod-sykuf-nuvex +solera:xorok-fylyt-dytyx +solera:xukab-gorek-syvex +solera:xivev-lopeh-mohix +solera:xupol-nohov-furix +solera:xegok-kates-supax +solera:xidib-lohur-bamyx +solera:xerok-pokig-sifox +solera:xopak-vohyt-gikyx +solera:xuzev-pafac-sehyx +solera:xusef-kidam-sanox +solera:xitan-maden-cipax +solera:xubaz-goteh-vitax +solera:xukid-mydyn-figox +solera:xeris-lumab-dydyx +solera:xileg-lisuk-zutix +solera:xezoc-zymit-raryx +solera:xoget-mahyg-himix +solera:xidan-fokik-sopox +solera:xozil-mudul-rovix +solera:ximoc-pehor-makyx +solera:xufan-kided-gekex +solera:xepeg-lavat-zavax +solera:xuhem-febok-kifix +solera:xupik-pohon-kezyx +solera:xocig-sycuz-bidyx +solera:xocos-lacyd-ficax +solera:xuvol-sipon-komax +solera:xumaf-dazan-tymux +solera:xofik-lymyg-ruhix +solera:xokin-hugol-dafux +solera:xikam-bitun-dikux +solera:xusaf-zifun-kytux +solera:xihem-ludol-herox +solera:xikad-renyd-lovox +solera:xilav-somoc-mafax +solera:xolif-lyzun-tukux +solera:xobam-mypun-gynex +solera:xutom-gopic-bizex +solera:xerom-cipet-vabox +solera:xoron-vyryh-pipox +solera:xotov-lafaf-fovix +solera:xigin-cylip-dezix +solera:xotak-melod-pibox +solera:xelah-nofon-merax diff --git a/packages/splunk/splunk.mk b/packages/splunk/splunk.mk new file mode 100644 index 0000000..c256ba6 --- /dev/null +++ b/packages/splunk/splunk.mk @@ -0,0 +1,8 @@ +splunk-source: +splunk-build: + +splunk-install: packages/splunk/tokens.txt + mkdir -p $(TARGET)/splunk/ + cp $< $(TARGET)/splunk/ + +PACKAGES += splunk diff --git a/packages/splunk/tokens.txt b/packages/splunk/tokens.txt new file mode 100644 index 0000000..9473cfa --- /dev/null +++ b/packages/splunk/tokens.txt @@ -0,0 +1,1000 @@ +splunk:xucip-nedyn-cusex +splunk:xudac-diduf-corix +splunk:xohas-zecyl-papix +splunk:xohit-fipih-fizax +splunk:xurer-putov-sicux +splunk:xelig-pivoz-ficux +splunk:xufel-rysyg-pyhax +splunk:xotem-sizil-kusux +splunk:xulov-devat-zozux +splunk:xifot-piham-sabax +splunk:xigib-tetub-zilux +splunk:xogop-hykof-videx +splunk:xogof-kulor-nekax +splunk:xulim-penom-marex +splunk:xeser-buroh-pysyx +splunk:xudat-zinec-nadax +splunk:xomiv-vofiz-lilax +splunk:ximan-nyker-fazyx +splunk:xudef-tagig-dafox +splunk:xevop-tutyr-tamox +splunk:xomos-nokon-damex +splunk:xugor-pokys-vyfex +splunk:xerip-cozah-limex +splunk:xukob-zymim-ripux +splunk:xorid-cibin-mozox +splunk:xuhig-rener-sulox +splunk:xobac-byvid-gasux +splunk:xidik-sopov-tolyx +splunk:xufaf-lalor-zycox +splunk:xunor-guran-pevex +splunk:xugih-cycik-mygux +splunk:xevom-zavoc-hicax +splunk:xupak-nipip-hapux +splunk:xohop-venyc-kigox +splunk:xekad-pipen-nuzux +splunk:xoger-penar-zodax +splunk:xezip-rakal-kygyx +splunk:xozih-rytus-fomox +splunk:xigar-sokad-mufyx +splunk:xuhav-falyd-cigyx +splunk:xumom-saben-bedix +splunk:xuhos-dolob-zupax +splunk:xovet-butas-munix +splunk:xezan-rutom-mezox +splunk:xipom-hihaf-kocax +splunk:xidoz-vupug-visax +splunk:xogib-boguc-lipux +splunk:xilot-suzah-kytex +splunk:xoser-dogun-racux +splunk:xokid-nonec-sogix +splunk:xupof-vukot-legex +splunk:xifer-culag-gasex +splunk:xudih-bysyv-numyx +splunk:xuzen-vobum-cizyx +splunk:xedol-sifed-zimex +splunk:xupos-bodiz-rifax +splunk:xoveb-zudop-kicox +splunk:xitot-hehor-zidox +splunk:xozin-fibic-kibax +splunk:xibal-gybak-dicix +splunk:xideg-satyh-zesux +splunk:xevoh-rekep-relex +splunk:xugam-gofug-semix +splunk:xecop-dobar-hotix +splunk:ximog-nysuk-dyhox +splunk:xegon-kesiz-zynux +splunk:xugek-vocef-cugex +splunk:xolak-tosyv-kunix +splunk:xebet-sekuf-kunox +splunk:xutat-tudab-givox +splunk:xenab-ducik-mopex +splunk:xigar-rusis-bosax +splunk:xeran-kukil-vufux +splunk:xeret-ripad-zadix +splunk:xerog-gopef-pidyx +splunk:xihim-dazon-tovax +splunk:xutid-butek-menex +splunk:xoced-godol-ropax +splunk:xuvap-gakih-vahyx +splunk:xuhel-fyhet-dycex +splunk:xohil-minub-tupax +splunk:xobev-pohub-gitox +splunk:xevib-vygak-sulyx +splunk:xihes-bimaf-hadax +splunk:xibor-cyhin-tutix +splunk:xodal-fukan-gytex +splunk:xisev-bemuv-dipix +splunk:xekoc-nocit-dumox +splunk:xigor-hamep-vutox +splunk:xugog-rucuv-tenox +splunk:xilom-guviv-pibyx +splunk:xulah-ziroh-cymax +splunk:xigec-ribum-tyfyx +splunk:xococ-dusyg-sekyx +splunk:xohoh-bidap-funox +splunk:xupag-sohyg-makix +splunk:xivas-huneg-cobex +splunk:xidak-noled-cypix +splunk:xomad-sicok-sopex +splunk:xusov-dehyb-lugex +splunk:xofoh-lukyc-kadix +splunk:xukog-zuraf-rytyx +splunk:xibek-bemum-gehyx +splunk:xesic-rurog-zefex +splunk:xutin-loded-valix +splunk:xepac-tilaz-sagox +splunk:xuzev-myguc-zypex +splunk:xekaz-local-zohix +splunk:xetod-tyfac-sakox +splunk:xovig-cycip-bypyx +splunk:xohin-vusuv-lubax +splunk:xidid-rohah-zyvix +splunk:xogef-fuzag-bilax +splunk:xusez-gyhyp-gedax +splunk:xuzer-makim-lopyx +splunk:xibeg-byrud-rogox +splunk:xotis-nagov-rohux +splunk:xosop-zibed-tomox +splunk:xoziz-kucen-fazex +splunk:xetob-vyhog-rytex +splunk:xegoh-todyt-tidux +splunk:xezok-husog-nunax +splunk:xunos-pokuz-hycax +splunk:xufik-pyson-dikex +splunk:xesaf-vimof-ronax +splunk:xonov-hahiz-cekox +splunk:ximik-becid-nydyx +splunk:xufal-gohes-girax +splunk:xusek-lopac-fivax +splunk:xusok-gehen-motux +splunk:xugic-typak-ramux +splunk:xinob-dorin-gyvox +splunk:xukev-sozit-tumex +splunk:ximeb-vozit-tefux +splunk:xubik-tosil-hofax +splunk:xozam-kusim-bobox +splunk:xilef-tyvaz-dysix +splunk:xocob-dazob-rygux +splunk:xilob-polip-nunyx +splunk:xidat-disic-lanex +splunk:xugom-zirak-pupox +splunk:xucaf-netin-zutax +splunk:xetez-fusug-tukix +splunk:xuzod-ginus-sehex +splunk:xinos-notyr-kevix +splunk:xecek-lavaf-somox +splunk:xeken-nycus-dobix +splunk:xubet-gyroc-linux +splunk:xisoh-filac-batax +splunk:xipoz-hoham-natyx +splunk:xosot-cacur-sodax +splunk:ximan-gylad-covox +splunk:xoted-datin-cytux +splunk:xihop-nogyf-komax +splunk:xogih-levih-zadux +splunk:xuzir-sanuf-nedax +splunk:xuleg-gacob-kokax +splunk:xuved-bavym-setox +splunk:xudig-vypoh-zucox +splunk:xubom-kylup-bicux +splunk:xivek-muhur-nopyx +splunk:xodoz-dofas-ricax +splunk:xekan-kykem-fofux +splunk:xogon-gedyk-vokex +splunk:xisan-zenuc-lasix +splunk:xezip-secal-ribax +splunk:xusip-bamyz-kuzix +splunk:xegef-danyl-hudux +splunk:xeped-tuhiv-zodux +splunk:xefev-rohuz-munix +splunk:xifes-vepah-bekax +splunk:xobiv-kefyr-hysux +splunk:xisic-fecec-neryx +splunk:xoned-syhiz-tykux +splunk:xidot-munyh-nonox +splunk:xipig-fusan-lagex +splunk:xukep-talab-kuhax +splunk:xubod-hyviz-fezux +splunk:xomap-pemez-tudux +splunk:xeret-zacez-bopux +splunk:xerem-nubef-mafix +splunk:xopim-zedok-binix +splunk:xuhoz-lybep-zepox +splunk:xukal-posyl-vakux +splunk:xifer-paviv-cavux +splunk:xubiz-nykud-dudyx +splunk:xehom-tugub-tafyx +splunk:xizan-hugoc-cufux +splunk:ximep-selyr-bolex +splunk:xotig-zihaf-lusux +splunk:xegeh-gabad-veryx +splunk:xemah-vabyr-ribyx +splunk:xopor-zicyc-hipix +splunk:xorip-zifer-focex +splunk:xeked-cytyr-benux +splunk:xifoh-povaf-kyrex +splunk:xudir-raryd-basyx +splunk:xegas-vasym-vomox +splunk:xetir-cicam-cokux +splunk:xigok-lanez-sonix +splunk:xesel-mihaf-lygix +splunk:xipoc-kumut-lofox +splunk:xeran-monaf-tefox +splunk:xurih-timec-hybix +splunk:xugop-zunab-todax +splunk:xolik-berup-lufex +splunk:xopaf-pakym-rerux +splunk:xebob-filul-fogox +splunk:xosic-roduc-lovux +splunk:xivit-tovam-rufex +splunk:ximeg-kezyn-sytox +splunk:xuhom-kikyd-demex +splunk:xihig-conaf-kiryx +splunk:xeseh-lurag-zulux +splunk:xeper-tohof-hafix +splunk:xemik-gugyn-levax +splunk:xebet-denum-zosix +splunk:xilih-tetez-rufyx +splunk:xetog-pupem-labox +splunk:xukol-hacih-lafax +splunk:xonat-digiz-vevux +splunk:xefik-vafar-gahix +splunk:ximok-totis-cinux +splunk:xosoc-gigor-zatyx +splunk:xecis-kenyk-sybix +splunk:xoner-dotel-lydux +splunk:xolav-moraz-lubix +splunk:xuver-piben-tulox +splunk:xocon-tyvul-kylex +splunk:xetan-gepuk-venex +splunk:xubat-desin-votyx +splunk:xomoz-cihan-zatyx +splunk:xovic-hygep-kyzax +splunk:xizol-menig-zonyx +splunk:xibaz-tybud-kumex +splunk:xerot-pagym-myvix +splunk:xizib-gytef-pacex +splunk:xuvop-gamaf-mufax +splunk:xosib-rumib-pumax +splunk:xumid-begim-zavix +splunk:xezot-kisil-sonox +splunk:xunig-bezyb-bagex +splunk:xikem-cenap-pezix +splunk:xohec-sylal-hibyx +splunk:xotas-kevuf-mufex +splunk:xucoh-rurog-lesix +splunk:xotov-gihic-gyfox +splunk:xozov-penag-rucex +splunk:xuvad-lecot-zokex +splunk:xedeb-kipav-gydix +splunk:xogor-miban-satax +splunk:xovob-nymab-fityx +splunk:xicip-luvyd-tihyx +splunk:xofen-favuh-rafex +splunk:xuhel-bapyz-sinex +splunk:xugan-vadyn-bofex +splunk:xigic-bekyh-tugex +splunk:xunif-tugun-cabox +splunk:xitan-gyryn-numix +splunk:xomic-tuvit-vygix +splunk:xokag-bilit-byryx +splunk:xutan-ceput-putux +splunk:xokoc-kumyv-nehax +splunk:xokal-vivoh-dyvyx +splunk:xohip-fozen-kifax +splunk:xuhiv-rakiv-lytyx +splunk:xolaz-lazoh-nogex +splunk:xufas-zinah-givux +splunk:xidaz-tadoh-norex +splunk:xigad-zatas-fekox +splunk:xosop-gevud-sozox +splunk:xohep-kukak-giryx +splunk:xolat-lylud-pofyx +splunk:xeher-kemih-sipux +splunk:xotom-talad-verix +splunk:xesik-zynir-cikex +splunk:xuliz-rutul-betox +splunk:xumor-gupun-mitix +splunk:xegod-sufec-hamox +splunk:xigav-mivar-hatyx +splunk:xevil-vaseh-dovex +splunk:xusaf-hemec-zizux +splunk:xibal-pebif-dyzux +splunk:xitod-sofal-lipax +splunk:xuhes-losep-pesyx +splunk:xudam-peref-kubyx +splunk:xebon-bugyb-bedax +splunk:xugac-kotet-cuhex +splunk:xekev-bodep-vusyx +splunk:xohah-dehip-nyzux +splunk:xozik-kofer-harox +splunk:xotes-pubac-natox +splunk:xekip-tokok-gitux +splunk:xupos-zozyz-bypux +splunk:xulog-nufas-figox +splunk:xofod-sotim-sozox +splunk:xezez-zogak-cigex +splunk:xofif-pugyd-gavyx +splunk:xepak-rofen-gofex +splunk:xebog-titiv-movex +splunk:xosab-zukan-nurex +splunk:xufeg-legyg-labyx +splunk:xozep-monuh-vezex +splunk:xurar-nicon-tafox +splunk:xukem-vypev-difix +splunk:xoded-kagez-kepax +splunk:xenot-muhas-lacix +splunk:xupor-sofen-cagix +splunk:xuvel-zyvet-pyfix +splunk:xucam-cipam-nefyx +splunk:xufes-binud-sozox +splunk:xuvil-mypef-sydax +splunk:xivad-bomos-fosox +splunk:xeliz-gucat-tonux +splunk:xopip-liryp-tolyx +splunk:xefec-mopyc-ratax +splunk:xuzah-gedud-ribox +splunk:xeber-fameg-capix +splunk:xemok-bytyz-zypax +splunk:xuded-lihek-vapax +splunk:xorar-coral-bytex +splunk:ximod-funof-nolyx +splunk:xetip-gebeh-gicox +splunk:xogol-hekeb-dulix +splunk:xuzok-hikav-kilux +splunk:xesod-fimim-cyfex +splunk:xemil-tymit-hymux +splunk:xiveb-sekon-sotix +splunk:xufep-gylak-kybex +splunk:xeted-sarak-bucex +splunk:xidev-vedyg-pahyx +splunk:xucop-fofog-rycox +splunk:xusan-lihah-mikox +splunk:xusak-sacyp-ruvox +splunk:xeriv-hulit-kanax +splunk:xunot-gepaz-vupox +splunk:xomed-naluh-capox +splunk:xitak-sudaz-nidax +splunk:xivik-hahev-sohux +splunk:xizoz-nalag-fyzyx +splunk:xovop-ravob-becix +splunk:xirav-vylug-zupex +splunk:xisot-bunek-sihux +splunk:xinec-zelos-bunex +splunk:xisim-vator-hugax +splunk:xocas-nyzut-norox +splunk:xoreg-hodum-kydyx +splunk:xodoz-gunyf-gerux +splunk:xodoz-nogiz-pumex +splunk:xetev-panym-penix +splunk:xudeb-kidyp-kimyx +splunk:xetes-rozif-gapix +splunk:xinod-fylaf-hapux +splunk:xurir-hazop-sasex +splunk:xomog-pikyz-netix +splunk:xenip-mopum-betyx +splunk:xotap-rugik-nahex +splunk:ximip-labek-mydox +splunk:xicot-fekyz-cyzyx +splunk:xibif-zupyr-fuzux +splunk:xesav-tigez-gopox +splunk:xesed-pelir-lyvyx +splunk:xoher-fosoh-cofux +splunk:xunep-basor-mibox +splunk:xegin-cegam-cunex +splunk:xidep-zirul-kivax +splunk:xetis-dodeh-zogux +splunk:xemim-zytuf-nahux +splunk:xozol-megal-sizyx +splunk:xokoz-tesun-berox +splunk:xopen-biseh-katax +splunk:ximin-vupyg-tohex +splunk:xezan-vugud-nycix +splunk:xipol-repyd-bylox +splunk:xitad-bohav-lehux +splunk:xirom-mazus-zutox +splunk:xopod-nicuk-vekex +splunk:xibom-ladym-mypex +splunk:xehac-lefaf-gadax +splunk:xevig-nagyd-rekex +splunk:xebok-remus-dydox +splunk:xifod-ginud-zonix +splunk:xibev-mohup-zumax +splunk:xuvel-zuvac-fuhox +splunk:xezir-zikab-pocyx +splunk:xifem-vipag-gybix +splunk:xinim-param-vivox +splunk:xufav-koces-cirex +splunk:xukil-nigac-hezox +splunk:xetot-zikil-gugix +splunk:xudis-fihib-cotux +splunk:xodit-zevom-lydux +splunk:xegel-ricin-capix +splunk:xudib-zazab-fyvax +splunk:xupel-mekym-redax +splunk:xokeg-zukah-nifex +splunk:xinaz-gokuf-bovox +splunk:xobes-cyfoh-pymux +splunk:xulic-homam-fusax +splunk:xizec-nacol-magix +splunk:xibop-rykem-naryx +splunk:xedag-citov-huryx +splunk:xogif-mucar-padyx +splunk:xocof-retas-pomix +splunk:xemik-puden-zesox +splunk:xedol-lytub-fepox +splunk:xicit-tydep-nylux +splunk:xumam-kasuk-rynex +splunk:xegas-lufed-hapex +splunk:xerol-bisuh-zalex +splunk:xebas-kezos-rynix +splunk:xozop-hevib-lytax +splunk:xoper-lybef-fukax +splunk:xodek-rurud-vunox +splunk:xodig-ceges-pilux +splunk:xicob-gipev-fybux +splunk:xigiz-gemef-dafox +splunk:xihic-vesuv-pinex +splunk:xenon-napel-ryhix +splunk:xorad-micym-zemax +splunk:xesok-kivyh-hicyx +splunk:xopig-moret-gyrex +splunk:xekor-lyrig-ririx +splunk:xukid-hohub-libox +splunk:xoreb-byhal-vatex +splunk:xeler-pukim-furyx +splunk:xinod-bitab-datux +splunk:xepes-byhyk-casix +splunk:xohes-tapat-cugyx +splunk:xihas-nogis-govyx +splunk:xomaz-bulyl-pubax +splunk:xobiv-ceteh-hedyx +splunk:xehek-mugav-vanox +splunk:xenep-datif-mofix +splunk:xupeh-tulad-nomax +splunk:xomar-kepid-rasux +splunk:xegez-kyvob-sahyx +splunk:xedel-pabug-fusax +splunk:xosev-hosed-monox +splunk:xihiz-cisyg-delux +splunk:xuvad-konof-fefex +splunk:xipih-mipor-kamax +splunk:xumad-kahaf-pyryx +splunk:xekot-razuz-mafux +splunk:xoles-mozef-duvyx +splunk:xerav-cenah-vedix +splunk:xetak-mesah-togyx +splunk:xizes-gygel-vulex +splunk:xucih-lyfig-nivyx +splunk:xehom-nyvin-ralex +splunk:xizap-pigel-mizex +splunk:xuhod-gyreg-tunex +splunk:xonal-hyguf-civex +splunk:xupoc-voher-tovyx +splunk:xodam-mepyh-refyx +splunk:xepim-vazer-bazex +splunk:xurov-simir-vunox +splunk:xodiv-hagib-huhex +splunk:xigal-syreg-kunux +splunk:xehoc-mulon-gemyx +splunk:xumad-huseb-fedyx +splunk:xipeg-bipir-mysix +splunk:xorof-cevan-vesox +splunk:xulif-mivep-hyvox +splunk:xopiv-pidag-lisix +splunk:xohod-fytyk-cydex +splunk:xepif-katus-kodix +splunk:xuren-zagab-zubyx +splunk:xopaz-venyh-bufyx +splunk:xutop-lades-gocox +splunk:xogez-ryvuh-lymix +splunk:xozop-hehif-sygox +splunk:xupeh-hiram-cynix +splunk:xurac-gamyz-gipox +splunk:xolol-bohoz-volax +splunk:xoler-rivim-pizex +splunk:xocim-tavoh-tevax +splunk:xetiv-buzim-vicex +splunk:xegod-cumyv-zykox +splunk:xokaf-fecoz-mebax +splunk:xukoz-fenok-cinex +splunk:xomaf-fibuh-vimix +splunk:xidon-cumyl-gahyx +splunk:xinad-mumar-modox +splunk:xuvak-cikef-titex +splunk:xurig-gared-notex +splunk:xozif-baviv-zecyx +splunk:xozab-tugir-tumyx +splunk:xebop-nopih-huzex +splunk:xebor-mogyl-zytox +splunk:xuhoz-rygig-mesox +splunk:xepel-ducun-bugyx +splunk:xefal-mavud-danox +splunk:xegim-mulyn-dalyx +splunk:xepat-zenop-kamix +splunk:xerap-biteh-comox +splunk:xubez-rytyp-tesux +splunk:xodoh-zacaf-rupix +splunk:xozim-vitag-semyx +splunk:xesim-cutig-danux +splunk:xekis-dyfan-degux +splunk:xesod-havik-febex +splunk:xelin-nizof-zyfix +splunk:xerec-dynug-zibax +splunk:xifos-mipid-zahyx +splunk:xibar-hubyb-bysux +splunk:xeboz-nahab-cevex +splunk:xobob-nopas-zyzix +splunk:xuneg-porab-botex +splunk:xicaf-vuvaf-lylux +splunk:xinih-gydel-senox +splunk:xopiz-fesys-cutax +splunk:xuvoz-bycad-dykax +splunk:xebiz-mabyr-luzox +splunk:xifar-pahep-fufyx +splunk:xopas-kysop-gazyx +splunk:xoker-gokym-vehox +splunk:xerod-fygon-vesex +splunk:xebok-gilaz-hibux +splunk:xolep-sazop-tatex +splunk:xesol-rikov-gufax +splunk:xefas-tekod-nikix +splunk:xozas-pesun-zynax +splunk:xopov-pudis-zyzex +splunk:xulov-sohil-zogux +splunk:xosel-gydyg-mydix +splunk:xuzim-dyhif-tahex +splunk:xodok-morad-nyryx +splunk:xilot-cosul-tyzix +splunk:xofov-pyhof-suhyx +splunk:xivag-vypob-fylex +splunk:xicol-pibyz-kidix +splunk:xutid-fymyr-cecex +splunk:xicir-vusek-gerax +splunk:xurep-ducah-zydux +splunk:xeboz-socap-pycex +splunk:xofom-hyfot-savyx +splunk:xebis-zeluv-rydix +splunk:xonek-pifip-myvix +splunk:xiril-fyvav-tyhyx +splunk:xofoh-hehig-zikax +splunk:xocir-nebiv-lerux +splunk:xonec-bivun-gynex +splunk:xoreh-rafic-syrux +splunk:xegeh-dynap-posix +splunk:xipoh-cufok-zusix +splunk:xecid-ranup-didux +splunk:xevif-natil-firyx +splunk:xovel-tycas-lezex +splunk:xufaz-fumuc-gimox +splunk:xolez-saluk-tedex +splunk:xemin-butam-tytyx +splunk:xepos-zuzid-kumyx +splunk:xehir-vopec-zanox +splunk:xifim-cucag-midix +splunk:xisen-cizeg-nylex +splunk:xopiv-hodus-bibix +splunk:ximip-nyryr-syrux +splunk:xukit-micyl-fecox +splunk:xudos-rotid-gonax +splunk:xibah-kalel-vazox +splunk:xuzon-zyfeb-codex +splunk:xizaz-tuduz-gydix +splunk:xizic-fezul-rugax +splunk:xocem-lyfal-dibyx +splunk:xegim-munyr-sirox +splunk:xevoh-bilec-pehax +splunk:xulit-dazag-vikix +splunk:xopin-timab-necix +splunk:xipig-febaz-nolex +splunk:xunib-bogyt-dybax +splunk:xodid-mubiz-mifax +splunk:xonoh-cunem-getex +splunk:xicos-fulod-parax +splunk:xulac-kubyg-cafux +splunk:xunat-cycuc-mezex +splunk:xupos-nodyt-nogix +splunk:xudez-tasuv-sygix +splunk:xidon-sugav-konax +splunk:xozez-rucyt-nugox +splunk:xiroh-hydac-sytyx +splunk:xicon-zifom-cizyx +splunk:xezen-nyrec-dunix +splunk:xekez-guzur-fomux +splunk:xodok-vysef-mihyx +splunk:xozet-natak-sisix +splunk:xohap-konot-kyvix +splunk:xorol-setyb-bifyx +splunk:xiked-mipun-gicax +splunk:xofal-ranyt-farex +splunk:xogic-toliv-vuhex +splunk:xubed-zabes-typix +splunk:xenid-rohub-susix +splunk:xidec-lyfyh-mygox +splunk:ximen-ryzon-nanex +splunk:xumik-disym-hapox +splunk:xucor-defel-tunax +splunk:xopih-hicon-hihyx +splunk:xeliv-sofup-pymax +splunk:xosad-zezez-garux +splunk:xicor-tusoz-vorex +splunk:xopap-sofof-bakax +splunk:xumol-tubez-rugax +splunk:xisik-relin-lolox +splunk:xogob-sukac-lycox +splunk:xolis-nuril-sydix +splunk:xukes-timod-fumux +splunk:ximed-tases-gubyx +splunk:xidoc-migik-mugix +splunk:xived-pevig-borix +splunk:xiloz-gidin-pynyx +splunk:xubag-gudok-nynux +splunk:xunor-kuciz-bukux +splunk:xuzib-dyvoc-sedix +splunk:xicov-hyrer-lahex +splunk:xokef-zapun-vasox +splunk:xisep-nelum-nohux +splunk:xenos-caner-besax +splunk:xuzel-ferof-vygix +splunk:xuses-bemif-rehex +splunk:xisad-sinav-vyryx +splunk:xenef-sovin-tihyx +splunk:xefek-vufek-cecix +splunk:xucif-nulil-satox +splunk:xepik-lepun-galyx +splunk:xuzal-ceser-porox +splunk:xoceg-rober-hylox +splunk:xibad-taryn-pazix +splunk:xidom-cinun-gufax +splunk:xorec-veduc-mitex +splunk:xodiz-vucem-zolix +splunk:xebin-fukyg-bihex +splunk:xevap-capoc-zisax +splunk:xuret-sanuz-rupox +splunk:xucah-zisek-rirox +splunk:xukin-vygyc-cyfox +splunk:xeveh-mazut-vezex +splunk:xufil-kazuc-fuhyx +splunk:xutic-sufav-tavax +splunk:xidim-tanuv-surix +splunk:xuzam-bumys-sifyx +splunk:xoniv-sykic-lygax +splunk:xuvin-hyget-gelex +splunk:xudor-hyvyd-nufyx +splunk:xerom-sobuh-zimux +splunk:xokad-gibev-dukax +splunk:xesaz-hykel-gidux +splunk:xigok-mihis-godix +splunk:xidab-mubip-hifex +splunk:xokoz-fosop-fahyx +splunk:xufod-gusyd-gocex +splunk:xegib-dimuz-zosex +splunk:xikek-lyrog-dabix +splunk:xunat-cykit-bymix +splunk:ximot-guvik-mubux +splunk:xirar-nufiv-hagux +splunk:xugep-dyfec-nudyx +splunk:xoteh-hihes-lucex +splunk:ximaz-liguk-sogux +splunk:xecor-nafom-vakyx +splunk:xotet-lecur-karyx +splunk:xotak-syneb-dazax +splunk:xebim-fakug-comex +splunk:xepig-mesiv-pahox +splunk:xofok-nefac-lyzox +splunk:xuseh-madol-rumox +splunk:xulip-cytyh-citix +splunk:xusor-zunav-pelax +splunk:xotil-minas-morax +splunk:xinis-zomez-rimyx +splunk:xudaf-zyheh-cugix +splunk:xepet-vylom-dacux +splunk:xebal-dehov-dipex +splunk:xuder-canev-sozax +splunk:xocid-tamuk-dycox +splunk:xitis-rohad-rogux +splunk:xevad-kuraz-mepox +splunk:xekaz-nomer-bulyx +splunk:xecec-ponyf-vufox +splunk:xusab-hapiv-holix +splunk:xorev-vugit-zasox +splunk:xisiv-rikap-henux +splunk:xovep-mygem-nohax +splunk:xusab-tafof-dycax +splunk:xukah-hamyn-zonox +splunk:xemov-limom-padax +splunk:xofol-cager-tivex +splunk:xemoc-velal-nynux +splunk:xodok-pegan-fadex +splunk:xuzal-puvon-dulex +splunk:xulin-sezog-zugyx +splunk:xuvof-cafip-delix +splunk:xucir-dufal-dufix +splunk:xudin-zizad-rygox +splunk:xucem-fudah-nufex +splunk:xodat-lozat-legyx +splunk:xoher-zycun-pobix +splunk:xudir-mucal-pozux +splunk:xemob-ryber-vofox +splunk:xozoz-nunuv-temyx +splunk:xusev-sovum-kimix +splunk:xipis-dimid-myzax +splunk:xohim-fafys-mekox +splunk:xutig-pizih-cymyx +splunk:xocid-ryhum-cagex +splunk:xisor-tubuh-hudyx +splunk:xeleg-cymyl-hakex +splunk:xevag-sisad-sugax +splunk:xelok-nylib-kamox +splunk:xolek-cudif-sehyx +splunk:xumop-parot-vebex +splunk:xomab-tyvym-muvyx +splunk:xirom-cicug-zaryx +splunk:xihef-tidym-mitix +splunk:xihep-teduk-sedex +splunk:xeviv-mimiv-pulex +splunk:xovis-nohes-myvex +splunk:xumeh-hynut-lizax +splunk:xipob-pihem-dupox +splunk:xorap-zuzih-symyx +splunk:xidab-hydon-hycix +splunk:xukon-resig-bezax +splunk:xomeh-sofav-hidox +splunk:xogik-beful-dydex +splunk:xuset-nelin-zifox +splunk:xipes-bomyv-vypex +splunk:xekod-gihob-dusix +splunk:xenaf-colyv-denex +splunk:xuhob-nusin-vizix +splunk:xonet-somuh-vuvex +splunk:xivoc-noded-lyzex +splunk:xehez-pahec-nyryx +splunk:xurac-pagyc-bozex +splunk:xikad-patut-kodix +splunk:xugad-lavar-zufix +splunk:xotag-safep-zykux +splunk:xecoc-zilyb-tyfax +splunk:ximig-vofos-lukyx +splunk:xikep-fegym-cypux +splunk:xehik-fopor-kogox +splunk:xilam-curym-sucix +splunk:xokob-ticyg-totex +splunk:xupas-tuneb-cakax +splunk:xukol-zaren-pyryx +splunk:xiniv-pezup-depex +splunk:xikat-mulez-kyzax +splunk:xitiv-fimim-ricex +splunk:xohoh-lukat-sesax +splunk:xokek-fadap-fivex +splunk:xokap-hemen-lyrex +splunk:xiror-lasaf-ligux +splunk:xepan-vibub-lekux +splunk:xepeb-fotum-rorox +splunk:xunet-vofep-misix +splunk:xolag-cugoz-tovax +splunk:xemis-lyrov-nufex +splunk:xosic-homud-titex +splunk:xuhar-cetut-tusax +splunk:xonet-pulup-vuzix +splunk:xolap-hymap-notox +splunk:xidan-medip-dufex +splunk:xufef-dicic-mutyx +splunk:xenev-vesik-donux +splunk:xepib-pamav-fefix +splunk:xisib-morag-zelax +splunk:xegan-ziceb-mefyx +splunk:xemeg-sikev-henex +splunk:xinom-zelot-dadux +splunk:xutem-hadod-ladox +splunk:xobad-pusor-fobax +splunk:xugoz-tirem-zazix +splunk:xokap-lilyg-mytyx +splunk:xenan-totyz-lodex +splunk:xogen-pecym-fegox +splunk:xilic-fyhaf-supyx +splunk:xutam-guved-binix +splunk:xelep-popyl-syfyx +splunk:xuhes-syhos-tyfyx +splunk:xical-nules-pypax +splunk:xubiz-zever-zafax +splunk:xoten-nykuf-telux +splunk:xegis-diloh-nynax +splunk:xusag-safiz-nagex +splunk:xiget-mudef-vagax +splunk:xugar-tigil-dukyx +splunk:xisit-diser-vecix +splunk:xeviz-dyfag-celex +splunk:xuhap-cisym-hupex +splunk:xegen-rafav-cosax +splunk:xusak-desar-nizex +splunk:xerak-kegar-makox +splunk:xomov-nepem-kytix +splunk:xofif-valyl-mezex +splunk:xodar-tehas-gykex +splunk:xerik-pudod-dumox +splunk:xezig-vubol-kekax +splunk:xibop-pudet-tadyx +splunk:xulil-kugum-fesux +splunk:xotet-lanik-nupex +splunk:xigan-vubog-rulax +splunk:xihat-tucyr-sarux +splunk:xegab-dysul-tovyx +splunk:xuhar-cafek-mezyx +splunk:xivin-kepof-nukix +splunk:xudop-potyf-fyhox +splunk:xofep-mohem-vypix +splunk:xunaz-fivob-pahax +splunk:xelil-fazif-vynux +splunk:xezac-nolyg-kyfax +splunk:xohoc-givok-typyx +splunk:xenoz-sobur-cenyx +splunk:xizif-zozic-fuhox +splunk:xobop-gepet-gurix +splunk:xihig-canuv-zemex +splunk:xemeg-pufuc-vanix +splunk:xeteb-hanyp-fepux +splunk:xirer-gikot-gybex +splunk:xehil-kohek-sebax +splunk:xizil-ropet-zokex +splunk:xihig-benal-hasyx +splunk:xurom-mivyf-rudex +splunk:xifam-zikir-hicyx +splunk:xedec-cozuf-nikix +splunk:xigen-gisoh-zerox +splunk:xuzar-daveb-botix +splunk:xison-cikof-pobox +splunk:xegoh-cypiz-zugux +splunk:xidal-lulur-cysyx +splunk:xofon-sehug-lebox +splunk:xekif-rikap-subyx +splunk:xulih-lupyz-ditux +splunk:xecok-bisic-lodex +splunk:xovol-kycep-mikox +splunk:xinoc-nugyk-vasex +splunk:ximah-dusoz-cakux +splunk:xunek-hezul-gudax +splunk:xogac-nadys-dezix +splunk:xifav-dosug-lugyx +splunk:xuhon-vegyn-vulux +splunk:xukir-kulyv-vybyx +splunk:xiroz-subec-rolyx +splunk:xemid-tikec-kofyx +splunk:xipid-disus-rihex +splunk:ximik-zyked-birux +splunk:xevon-hutyp-hahex +splunk:xitol-kirod-byvox +splunk:xicig-hemuk-cohux +splunk:xokot-luliz-mikex +splunk:xovog-diryk-hifux +splunk:xireg-kumon-bakax +splunk:xifoc-zipuf-mydex +splunk:xelas-petum-nymix +splunk:xigif-ropef-dalux +splunk:xevab-cyfod-zalex +splunk:xesoc-sabiz-kufax +splunk:xonob-hypup-berex +splunk:xusig-zudih-zitax +splunk:xucik-cacig-varax +splunk:xocer-popih-bifyx +splunk:xovim-nubih-repux +splunk:xolab-gucol-fagix +splunk:xolez-remak-gemyx +splunk:xuboh-fedin-dubox +splunk:xugov-genyh-girax +splunk:xekaf-kypic-pusix +splunk:xesar-bisos-fetex +splunk:xusep-micur-rizix +splunk:xolol-dugoh-ninix +splunk:xorov-nizoh-mysyx +splunk:xozat-zyvik-vemix +splunk:xesam-fyrag-fusyx +splunk:xukib-fuduv-gadix +splunk:xisac-sipyn-negox +splunk:xihel-tatoc-gydux +splunk:xosin-cegal-dicax +splunk:xozim-mepel-rofyx +splunk:xorer-hymer-kurax +splunk:xerel-kilez-favix +splunk:xovic-vadad-minax +splunk:xiles-bymyl-fubax +splunk:xuvod-dyhyf-tocox +splunk:xinil-kyhon-nevax +splunk:xusig-purud-vudax +splunk:xetot-gyvyb-fygax +splunk:xihar-cokuv-mityx +splunk:xizon-tuguk-pucix +splunk:xotas-casag-rasux +splunk:xosap-bezup-culox +splunk:xepih-facov-nomix +splunk:xumid-humav-hibex +splunk:xeviv-zusok-rohix +splunk:xikat-kotig-dinax +splunk:xufin-kicub-kanax +splunk:xicam-pidoz-nusix +splunk:xopom-mebuc-vubyx +splunk:xohev-zucaz-kizix +splunk:xuhop-bopic-lifex +splunk:xokof-tekit-sabix +splunk:xezit-lotin-tefyx +splunk:xokem-besog-lihex +splunk:xukir-zafyl-hufyx +splunk:xefod-ravic-velox +splunk:xegeb-homas-ludox +splunk:xikif-dufol-tohix +splunk:xomon-rymih-pysyx +splunk:xelas-lunip-deryx +splunk:xefin-zepub-dehox +splunk:xutep-cosol-gidox +splunk:xuvac-rynis-vumax +splunk:xolaf-dozem-syvix +splunk:ximit-mezif-rahux +splunk:xezan-cemyn-botyx +splunk:xizap-vybes-rymix +splunk:xovad-byzys-canex +splunk:xugig-botuf-vogox +splunk:xukev-lakyz-lynex +splunk:xipoh-sifyp-gezyx +splunk:xelev-sabyh-cenyx +splunk:xumev-kuful-hufyx +splunk:xoloh-modoz-tadux +splunk:ximab-fubim-fotox +splunk:xevas-roraz-cazex +splunk:xuzid-vypel-ducax +splunk:xokop-bikab-dykex +splunk:xifiz-sysug-lunux +splunk:xegok-nareb-bodox +splunk:xovom-maviz-rapix +splunk:xubad-fynuf-resux +splunk:xideg-mosoh-sofex +splunk:xuros-mohef-kolox +splunk:xetos-nahih-rinex +splunk:xupiv-beteg-lugex +splunk:xudav-ludil-fizax +splunk:xesir-minig-fymox +splunk:xumob-focil-pezax +splunk:xokif-katal-dadix +splunk:xucib-nygyr-sekox +splunk:xuged-sedob-fegux +splunk:xufac-buhiv-morix +splunk:xuzic-leson-vupux +splunk:xenab-kezon-bahox +splunk:xedoc-kykad-nypyx +splunk:xofik-nidem-mysix +splunk:xutet-reveh-cipex +splunk:xitot-sytif-ripax +splunk:xuler-botok-gydex +splunk:xigel-sekop-huvax +splunk:xesak-gadur-gypax +splunk:xuzac-mifah-bimix +splunk:xevac-gorad-pusix +splunk:xonis-gohyf-casix +splunk:xokam-kokor-gavax +splunk:xorar-rudep-niryx +splunk:xezez-sigaz-mupyx +splunk:xukic-lapip-vicux +splunk:xinoc-nemer-gyvix +splunk:xebef-fybah-dyrox +splunk:xucag-pyruf-vybux +splunk:xukiz-bisuc-tinix +splunk:xesag-tusur-cihux +splunk:xigek-zipys-gycux +splunk:xumet-cupar-hihax +splunk:xotev-zinah-caryx +splunk:xuran-dapet-kokax +splunk:xigir-nurit-zubix +splunk:xemit-bidol-felix +splunk:xumek-mymet-fasox +splunk:xibab-pufes-zazix +splunk:xefos-naral-rihox +splunk:xucab-tylav-hytax +splunk:xegel-zyvyh-denox +splunk:xegel-heneb-kizex +splunk:xefed-padis-cahux +splunk:xitog-mehic-lavox +splunk:xecif-nizan-pabox +splunk:xicar-zeres-manox +splunk:xikop-gycod-serux +splunk:xuben-gedyc-lafox +splunk:xubah-vyboz-bunux +splunk:xopaf-pohyr-hurax +splunk:xuvot-coheh-figax +splunk:xuvat-mufic-myvex +splunk:xunos-fidin-kofyx +splunk:xitac-liviv-nupex +splunk:xevik-babad-cosyx +splunk:xogam-gigab-zydux +splunk:xumak-nysaz-fetex +splunk:xugid-cyzig-vobex +splunk:xitag-lebeh-vesex +splunk:xocak-govyt-cigix +splunk:xuriv-cineh-ripux +splunk:xiraz-zygil-rohex +splunk:xoran-hobyt-fedix +splunk:xonom-gybog-mocix +splunk:xuzar-comil-zitax +splunk:xemok-tivic-hycix +splunk:xikok-razeg-nuhex +splunk:xesah-fybyz-bidux +splunk:xedim-lapet-samix +splunk:xuper-favut-rugyx diff --git a/packages/sshd/service/sshd/run b/packages/sshd/service/sshd/run deleted file mode 100755 index 8c10f2e..0000000 --- a/packages/sshd/service/sshd/run +++ /dev/null @@ -1,6 +0,0 @@ -#! /bin/sh - -exec 2>&1 -iptables -A INPUT -s 10.0.0.0/16 --proto tcp --dport 55 -j ACCEPT -iptables -A INPUT --proto tcp --dport 55 -j REJECT -exec dropbear -r ./rsa.key -E -F diff --git a/packages/steg/10/Makefile b/packages/steg/10/Makefile deleted file mode 100644 index 07a7b38..0000000 --- a/packages/steg/10/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -IMG = http://mfrost.typepad.com/cute_overload/images/2008/02/11/bunny.jpg - -install: file.jpg - cp $< $(DESTDIR)/$$(md5sum $< | awk '{print $$1;}') - -src.jpg: - wget -O src.jpg $(IMG) - -file.jpg: src.jpg - cat src.jpg > $@ - m4 -DKEY="$(shell cat key)" text.txt >> $@ - -clean: - rm -f file.jpg diff --git a/packages/steg/10/key b/packages/steg/10/key deleted file mode 100644 index c7b867a..0000000 --- a/packages/steg/10/key +++ /dev/null @@ -1 +0,0 @@ -Molotov Cocktails diff --git a/packages/steg/10/src.jpg b/packages/steg/10/src.jpg deleted file mode 100644 index 3e9772a..0000000 Binary files a/packages/steg/10/src.jpg and /dev/null differ diff --git a/packages/steg/10/summary b/packages/steg/10/summary deleted file mode 100644 index 8bddff9..0000000 --- a/packages/steg/10/summary +++ /dev/null @@ -1 +0,0 @@ -after JPEG footer diff --git a/packages/steg/10/text.txt b/packages/steg/10/text.txt deleted file mode 100644 index cdf1fd3..0000000 --- a/packages/steg/10/text.txt +++ /dev/null @@ -1,36 +0,0 @@ -There are many variations of the molotov cocktail. The classic is a -glass bottle filled with gasoline. An oily soaked rag is placed in the -neck of the bottle. The rag is lit on fire and the bottle is thrown at -the opposition. However, practice has created new models of the molotov -that defeat the classic version. - -When making molotovs, it is never a good idea to use the oily rag -method. It can allow gas to seep from the bottle and many other bad -things. The best way is to take a tampon that is soaked in gas and place -it on the side of the bottle neck. Then, tie a rubber band around the -tampon. Make sure the bottle has a cap on it. Light the tampon and throw -hard. With this ignition method, the bottle must break! - -When making a molotov mixture, one of the easiest mixtures is filling -half the bottle with gasoline, and the other half of the bottle with -motor oil. Mix well! The oil is very flammable and sticks very well to -the surface that it lands on. - -Another mixture is to fill half the bottle with gasoline and the other -half with tar. This mixture burns very very hot and also sticks well to -surfaces while the gasoline does the work. - -To make a firewall, simply fill bottles with rubbing alcohol and light -the mixture. These bottles should be lined up side by side to create a -large area of fire that police will not walk through. - -By far the stickiest mixture is 50% gasoline, with 25% tar and 25% -grease. Shake well and throw hard! - -The most high explosive and lethal mixture is amonium-nitrate-based -fertilizer mixed with gasoline. Just stuff the bottle with this mixture -and light the sucker. This method should be made with a plastic bottle -so that it will not break on impact. When you light it, the bottle will -quickly explode so be quick. Using a fuse is a good idea. - -"KEY" is the key. diff --git a/packages/steg/100/Makefile b/packages/steg/100/Makefile deleted file mode 100644 index fe00ebc..0000000 --- a/packages/steg/100/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -.DELETE_ON_ERROR: - -install: file.png - cp $< $(DESTDIR)/$$(md5sum $< | awk '{print $$1;}') - -%.pbm: %.png - pngtopnm $< > $@ - -%.png: %.pnm - pnmtopng $< > $@ - -file.pnm: lena.pbm text.txt - m4 -DKEY="$(shell cat key)" text.txt | ./encode 3< $< > $@ - -clean: - rm -f file.pnm file.png lena.pbm diff --git a/packages/steg/100/encode b/packages/steg/100/encode deleted file mode 100755 index 79e9434..0000000 --- a/packages/steg/100/encode +++ /dev/null @@ -1,34 +0,0 @@ -#! /usr/bin/python - -import os -import sys -import md5 -import cStringIO as StringIO - -plaintext = sys.stdin -inf = os.fdopen(3) - -outf = sys.stdout -for i in range(3): - outf.write(inf.readline()) - -# Set the low-order bits in output file -i = 0 -while True: - c = plaintext.read(1) - if c: - c = ord(c) - else: - c = 0 - img_bytes = inf.read(8) - if not img_bytes: - break - if len(img_bytes) < 8: - outf.write(img_bytes) - break - for j in range(8): - bit = 7 - j - img_byte = ord(img_bytes[j]) & 0xFE - noise_bit = (c & (1<> bit - out_byte = img_byte | noise_bit - outf.write(chr(out_byte)) diff --git a/packages/steg/100/key b/packages/steg/100/key deleted file mode 100644 index aa39b51..0000000 --- a/packages/steg/100/key +++ /dev/null @@ -1 +0,0 @@ -breadfruit chawbacon diff --git a/packages/steg/100/lena.png b/packages/steg/100/lena.png deleted file mode 100644 index 2d7b780..0000000 Binary files a/packages/steg/100/lena.png and /dev/null differ diff --git a/packages/steg/100/summary b/packages/steg/100/summary deleted file mode 100644 index 8a95e46..0000000 --- a/packages/steg/100/summary +++ /dev/null @@ -1 +0,0 @@ -low-order bits diff --git a/packages/steg/100/text.txt b/packages/steg/100/text.txt deleted file mode 100644 index 9bb747a..0000000 --- a/packages/steg/100/text.txt +++ /dev/null @@ -1,195 +0,0 @@ - Out of love for the truth and the desire to bring it to light, the following propositions will be discussed at Wittenberg, under the presidency of the Reverend Father Martin Luther, Master of Arts and of Sacred Theology, and Lecturer in Ordinary on the same at that place. Wherefore he requests that those who are unable to be present and debate orally with us, may do so by letter. - - In the Name our Lord Jesus Christ. Amen. - - 1. Our Lord and Master Jesus Christ, when He said Poenitentiam agite, willed that the whole life of believers should be repentance. - - 2. This word cannot be understood to mean sacramental penance, i.e., confession and satisfaction, which is administered by the priests. - - 3. Yet it means not inward repentance only; nay, there is no inward repentance which does not outwardly work divers mortifications of the flesh. - - 4. The penalty [of sin], therefore, continues so long as hatred of self continues; for this is the true inward repentance, and continues until our entrance into the kingdom of heaven. - - 5. The pope does not intend to remit, and cannot remit any penalties other than those which he has imposed either by his own authority or by that of the Canons. - - 6. The pope cannot remit any guilt, except by declaring that it has been remitted by God and by assenting to God's remission; though, to be sure, he may grant remission in cases reserved to his judgment. If his right to grant remission in such cases were despised, the guilt would remain entirely unforgiven. - - 7. God remits guilt to no one whom He does not, at the same time, humble in all things and bring into subjection to His vicar, the priest. - - 8. The penitential canons are imposed only on the living, and, according to them, nothing should be imposed on the dying. - - 9. Therefore the Holy Spirit in the pope is kind to us, because in his decrees he always makes exception of the article of death and of necessity. - - 10. Ignorant and wicked are the doings of those priests who, in the case of the dying, reserve canonical penances for purgatory. - - 11. This changing of the canonical penalty to the penalty of purgatory is quite evidently one of the tares that were sown while the bishops slept. - - 12. In former times the canonical penalties were imposed not after, but before absolution, as tests of true contrition. - - 13. The dying are freed by death from all penalties; they are already dead to canonical rules, and have a right to be released from them. - - 14. The imperfect health [of soul], that is to say, the imperfect love, of the dying brings with it, of necessity, great fear; and the smaller the love, the greater is the fear. - - 15. This fear and horror is sufficient of itself alone (to say nothing of other things) to constitute the penalty of purgatory, since it is very near to the horror of despair. - - 16. Hell, purgatory, and heaven seem to differ as do despair, almost-despair, and the assurance of safety. - - 17. With souls in purgatory it seems necessary that horror should grow less and love increase. - - 18. It seems unproved, either by reason or Scripture, that they are outside the state of merit, that is to say, of increasing love. - - 19. Again, it seems unproved that they, or at least that all of them, are certain or assured of their own blessedness, though we may be quite certain of it. - - 20. Therefore by "full remission of all penalties" the pope means not actually "of all," but only of those imposed by himself. - - 21. Therefore those preachers of indulgences are in error, who say that by the pope's indulgences a man is freed from every penalty, and saved; - - 22. Whereas he remits to souls in purgatory no penalty which, according to the canons, they would have had to pay in this life. - - 23. If it is at all possible to grant to any one the remission of all penalties whatsoever, it is certain that this remission can be granted only to the most perfect, that is, to the very fewest. - - 24. It must needs be, therefore, that the greater part of the people are deceived by that indiscriminate and highsounding promise of release from penalty. - - 25. The power which the pope has, in a general way, over purgatory, is just like the power which any bishop or curate has, in a special way, within his own diocese or parish. - - 26. The pope does well when he grants remission to souls [in purgatory], not by the power of the keys (which he does not possess), but by way of intercession. - - 27. They preach man who say that so soon as the penny jingles into the money-box, the soul flies out [of purgatory]. - - 28. It is certain that when the penny jingles into the money-box, gain and avarice can be increased, but the result of the intercession of the Church is in the power of God alone. - - 29. Who knows whether all the souls in purgatory wish to be bought out of it, as in the legend of Sts. Severinus and Paschal. - - 30. No one is sure that his own contrition is sincere; much less that he has attained full remission. - - 31. Rare as is the man that is truly penitent, so rare is also the man who truly buys indulgences, i.e., such men are most rare. - - 32. They will be condemned eternally, together with their teachers, who believe themselves sure of their salvation because they have letters of pardon. - - 33. Men must be on their guard against those who say that the pope's pardons are that inestimable gift of God by which man is reconciled to Him; - - 34. For these "graces of pardon" concern only the penalties of sacramental satisfaction, and these are appointed by man. - - 35. They preach no Christian doctrine who teach that contrition is not necessary in those who intend to buy souls out of purgatory or to buy confessionalia. - - 36. Every truly repentant Christian has a right to full remission of penalty and guilt, even without letters of pardon. - - 37. Every true Christian, whether living or dead, has part in all the blessings of Christ and the Church; and this is granted him by God, even without letters of pardon. - - 38. Nevertheless, the remission and participation [in the blessings of the Church] which are granted by the pope are in no way to be despised, for they are, as I have said, the declaration of divine remission. - - 39. It is most difficult, even for the very keenest theologians, at one and the same time to commend to the people the abundance of pardons and [the need of] true contrition. - - 40. True contrition seeks and loves penalties, but liberal pardons only relax penalties and cause them to be hated, or at least, furnish an occasion [for hating them]. - - 41. Apostolic pardons are to be preached with caution, lest the people may falsely think them preferable to other good works of love. - - 42. Christians are to be taught that the pope does not intend the buying of pardons to be compared in any way to works of mercy. - - 43. Christians are to be taught that he who gives to the poor or lends to the needy does a better work than buying pardons; - - 44. Because love grows by works of love, and man becomes better; but by pardons man does not grow better, only more free from penalty. - - 45. Christians are to be taught that he who sees a man in need, and passes him by, and gives [his money] for pardons, purchases not the indulgences of the pope, but the indignation of God. - - 46. Christians are to be taught that unless they have more than they need, they are bound to keep back what is necessary for their own families, and by no means to squander it on pardons. - - 47. Christians are to be taught that the buying of pardons is a matter of free will, and not of commandment. - - 48. Christians are to be taught that the pope, in granting pardons, needs, and therefore desires, their devout prayer for him more than the money they bring. - - 49. Christians are to be taught that the pope's pardons are useful, if they do not put their trust in them; but altogether harmful, if through them they lose their fear of God. - - 50. Christians are to be taught that if the pope knew the exactions of the pardon-preachers, he would rather that St. Peter's church should go to ashes, than that it should be built up with the skin, flesh and bones of his sheep. - - 51. Christians are to be taught that it would be the pope's wish, as it is his duty, to give of his own money to very many of those from whom certain hawkers of pardons cajole money, even though the church of St. Peter might have to be sold. - - 52. The assurance of salvation by letters of pardon is vain, even though the commissary, nay, even though the pope himself, were to stake his soul upon it. - - 53. They are enemies of Christ and of the pope, who bid the Word of God be altogether silent in some Churches, in order that pardons may be preached in others. - - 54. Injury is done the Word of God when, in the same sermon, an equal or a longer time is spent on pardons than on this Word. - - 55. It must be the intention of the pope that if pardons, which are a very small thing, are celebrated with one bell, with single processions and ceremonies, then the Gospel, which is the very greatest thing, should be preached with a hundred bells, a hundred processions, a hundred ceremonies. - - 56. The "treasures of the Church," out of which the pope. grants indulgences, are not sufficiently named or known among the people of Christ. - - 57. That they are not temporal treasures is certainly evident, for many of the vendors do not pour out such treasures so easily, but only gather them. - - 58. Nor are they the merits of Christ and the Saints, for even without the pope, these always work grace for the inner man, and the cross, death, and hell for the outward man. - - 59. St. Lawrence said that the treasures of the Church were the Church's poor, but he spoke according to the usage of the word in his own time. - - 60. Without rashness we say that the keys of the Church, given by Christ's merit, are that treasure; - - 61. For it is clear that for the remission of penalties and of reserved cases, the power of the pope is of itself sufficient. - - 62. The true treasure of the Church is the Most Holy Gospel of the glory and the grace of God. - - 63. But this treasure is naturally most odious, for it makes the first to be last. - - 64. On the other hand, the treasure of indulgences is naturally most acceptable, for it makes the last to be first. - - 65. Therefore the treasures of the Gospel are nets with which they formerly were wont to fish for men of riches. - - 66. The treasures of the indulgences are nets with which they now fish for the riches of men. - - 67. The indulgences which the preachers cry as the "greatest graces" are known to be truly such, in so far as they promote gain. - - 68. Yet they are in truth the very smallest graces compared with the grace of God and the piety of the Cross. - - 69. Bishops and curates are bound to admit the commissaries of apostolic pardons, with all reverence. - - 70. But still more are they bound to strain all their eyes and attend with all their ears, lest these men preach their own dreams instead of the commission of the pope. - - 71. He who speaks against the truth of apostolic pardons, let him be anathema and accursed! - - 72. But he who guards against the lust and license of the pardon-preachers, let him be blessed! - - 73. The pope justly thunders against those who, by any art, contrive the injury of the traffic in pardons. - - 74. But much more does he intend to thunder against those who use the pretext of pardons to contrive the injury of holy love and truth. - - 75. To think the papal pardons so great that they could absolve a man even if he had committed an impossible sin and violated the Mother of God -- this is madness. - - 76. We say, on the contrary, that the papal pardons are not able to remove the very least of venial sins, so far as its guilt is concerned. - - 77. It is said that even St. Peter, if he were now Pope, could not bestow greater graces; this is blasphemy against St. Peter and against the pope. - - 78. We say, on the contrary, that even the present pope, and any pope at all, has greater graces at his disposal; to wit, the Gospel, powers, gifts of healing, etc., as it is written in I. Corinthians xii. - - 79. To say that the cross, emblazoned with the papal arms, which is set up [by the preachers of indulgences], is of equal worth with the Cross of Christ, is blasphemy. - - 80. The bishops, curates and theologians who allow such talk to be spread among the people, will have an account to render. - - 81. This unbridled preaching of pardons makes it no easy matter, even for learned men, to rescue the reverence due to the pope from slander, or even from the shrewd questionings of the laity. - - 82. To wit: "Why does not the pope empty purgatory, for the sake of holy love and of the dire need of the souls that are there, if he redeems an infinite number of souls for the sake of miserable money with which to build a Church? The former reasons would be most just; the latter is most trivial." - - 83. Again: "Why are mortuary and anniversary masses for the dead continued, and why does he not return or permit the withdrawal of the endowments founded on their behalf, since it is wrong to pray for the redeemed?" - - 84. Again: "What is this new piety of God and the pope, that for money they allow a man who is impious and their enemy to buy out of purgatory the pious soul of a friend of God, and do not rather, because of that pious and beloved soul's own need, free it for pure love's sake?" - - 85. Again: "Why are the penitential canons long since in actual fact and through disuse abrogated and dead, now satisfied by the granting of indulgences, as though they were still alive and in force?" - - 86. Again: "Why does not the pope, whose wealth is to-day greater than the riches of the richest, build just this one church of St. Peter with his own money, rather than with the money of poor believers?" - - 87. Again: "What is it that the pope remits, and what participation does he grant to those who, by perfect contrition, have a right to full remission and participation?" - - 88. Again: "What greater blessing could come to the Church than if the pope were to do a hundred times a day what he now does once, and bestow on every believer these remissions and participations?" - - 89. "Since the pope, by his pardons, seeks the salvation of souls rather than money, why does he suspend the indulgences and pardons granted heretofore, since these have equal efficacy?" - - 90. To repress these arguments and scruples of the laity by force alone, and not to resolve them by giving reasons, is to expose the Church and the pope to the ridicule of their enemies, and to make Christians unhappy. - - 91. If, therefore, pardons were preached according to the spirit and mind of the pope, all these doubts would be readily resolved; nay, they would not exist. - - 92. Away, then, with all those prophets who say to the people of Christ, "Peace, peace," and there is no peace! - - 93. Blessed be all those prophets who say to the people of Christ, "Cross, cross," and there is no cross! - - 94. Christians are to be exhorted that they be diligent in following Christ, their Head, through penalties, deaths, and hell; - - 95. And thus be confident of entering into heaven rather through many tribulations, than through the assurance of peace. - -The key is "KEY" diff --git a/packages/steg/20/key b/packages/steg/20/key deleted file mode 100644 index 9879e1f..0000000 --- a/packages/steg/20/key +++ /dev/null @@ -1 +0,0 @@ -stinger-reimbursements-Matterhorn diff --git a/packages/steg/20/summary b/packages/steg/20/summary deleted file mode 100644 index f12ac5a..0000000 --- a/packages/steg/20/summary +++ /dev/null @@ -1 +0,0 @@ -unzip a .docx to find dirtbags file diff --git a/packages/steg/20/test.docx b/packages/steg/20/test.docx deleted file mode 100644 index e633590..0000000 Binary files a/packages/steg/20/test.docx and /dev/null differ diff --git a/packages/steg/200/Makefile b/packages/steg/200/Makefile deleted file mode 100644 index e330286..0000000 --- a/packages/steg/200/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -.DELETE_ON_ERROR: - -$(DESTDIR)/file.gz: key text.txt - ./encode < key 3< text.txt > $@ - -clean: - rm -f $(DESTDIR)/file.gz diff --git a/packages/steg/200/encode b/packages/steg/200/encode deleted file mode 100755 index af73ab7..0000000 --- a/packages/steg/200/encode +++ /dev/null @@ -1,33 +0,0 @@ -#! /usr/bin/python - -import sys -import os -import gzip -import md5 - -partlen = 8 - -key = sys.stdin.read().strip() -hexofkey = key.encode('hex') - -garbage = os.fdopen(3).read() - -keyparts = [] -for i in range(0, len(hexofkey), partlen): - part = hexofkey[i:i+partlen] - keyparts.append(part) - -textpartlen = len(garbage) / len(keyparts) -for i in range(len(keyparts)): - offset = i*textpartlen - if i == len(keyparts) - 1: - textpart = garbage[offset:] - else: - textpart = garbage[offset:offset+textpartlen] - - fn = keyparts[i] + '.txt' - gf = gzip.GzipFile(filename=fn, mode='ab', fileobj=sys.stdout) - gf.write(textpart) - gf.close() - - diff --git a/packages/steg/200/key b/packages/steg/200/key deleted file mode 100644 index 06bfde4..0000000 --- a/packages/steg/200/key +++ /dev/null @@ -1 +0,0 @@ -key diff --git a/packages/steg/200/summary b/packages/steg/200/summary deleted file mode 100644 index df44042..0000000 --- a/packages/steg/200/summary +++ /dev/null @@ -1 +0,0 @@ -filename of each gzip part diff --git a/packages/steg/200/text.txt b/packages/steg/200/text.txt deleted file mode 100644 index 584ce82..0000000 --- a/packages/steg/200/text.txt +++ /dev/null @@ -1,83 +0,0 @@ -[Preamble] Edward by the grace of God King of England, lord of Ireland and duke of Aquitaine sends greetings to all to whom the present letters come. We have inspected the great charter of the lord Henry, late King of England, our father, concerning the liberties of England in these words: - -Henry by the grace of God King of England, lord of Ireland, duke of Normandy and Aquitaine and count of Anjou sends greetings to his archbishops, bishops, abbots, priors, earls, barons, sheriffs, reeves, ministers and all his bailiffs and faithful men inspecting the present charter. Know that we, at the prompting of God and for the health of our soul and the souls of our ancestors and successors, for the glory of holy Church and the improvement of our realm, freely and out of our good will have given and granted to the archbishops, bishops, abbots, priors, earls, barons and all of our realm these liberties written below to hold in our realm of England in perpetuity. - -[1] In the first place we grant to God and confirm by this our present charter for ourselves and our heirs in perpetuity that the English Church is to be free and to have all its rights fully and its liberties entirely. We furthermore grant and give to all the freemen of our realm for ourselves and our heirs in perpetuity the liberties written below to have and to hold to them and their heirs from us and our heirs in perpetuity. - -[2] If any of our earls or barons, or anyone else holding from us in chief by military service should die, and should his heir be of full age and owe relief, the heir is to have his inheritance for the ancient relief, namely the heir or heirs of an earl for a whole county 100 pounds, the heir or heirs of a baron for a whole barony 100 marks, the heir or heirs of a knight for a whole knight's fee 100 shillings at most, and he who owes less will give less, according to the ancient custom of (knights') fees. - -[3] If, however, the heir of such a person is under age, his lord is not to have custody of him and his land until he has taken homage from the heir, and after such an heir has been in custody, when he comes of age, namely at twenty-one years old, he is to have his inheritance without relief and without fine, saving that if, whilst under age, he is made a knight, his land will nonetheless remain in the custody of his lords until the aforesaid term. - -[4] The keeper of the land of such an heir who is under age is only to take reasonable receipts from the heir's land and reasonable customs and reasonable services, and this without destruction or waste of men or things. And if we assign custody of any such land to a sheriff or to anyone else who should answer to us for the issues, and such a person should commit destruction or waste, we will take recompense from him and the land will be assigned to two law-worthy and discreet men of that fee who will answer to us or to the person to whom we assign such land for the land's issues. And if we give or sell to anyone custody of any such land and that person commits destruction or waste, he is to lose custody and the land is to be assigned to two law-worthy and discreet men of that fee who similarly will answer to us as is aforesaid. - -[5] The keeper, for as long as he has the custody of the land of such (an heir), is to maintain the houses, parks, fishponds, ponds, mills and other things pertaining to that land from the issues of the same land, and he will restore to the heir, when the heir comes to full age, all his land stocked with ploughs and all other things in at least the same condition as when he received it. All these things are to be observed in the custodies of archbishoprics, bishoprics, abbeys, priories, churches and vacant offices which pertain to us, save that such custodies ought not to be sold. - -[6] Heirs are to be married without disparagement. - -[7] A widow, after the death of her husband, is immediately and without any difficulty to have her marriage portion and her inheritance, nor is she to pay anything for her dower or her marriage portion or for her inheritance which her husband and she held on the day of her husband's death, and she shall remain in the chief dwelling place of her husband for forty days after her husband's death, within which time dower will be assigned her if it has not already been assigned, unless that house is a castle, and if it is a castle which she leaves, then a suitable house will immediately be provided for her in which she may properly dwell until her dower is assigned to her in accordance with what is aforesaid, and in the meantime she is to have her reasonable necessities (estoverium) from the common property. As dower she will be assigned the third part of all the lands of her husband which were his during his lifetime, save when she was dowered with less at the church door. No widow shall be distrained to marry for so long as she wishes to live without a husband, provided that she gives surety that she will not marry without our assent if she holds of us, or without the assent of her lord, if she holds of another. - -[8] Neither we nor our bailiffs will seize any land or rent for any debt, as long as the existing chattels of the debtor suffice for the payment of the debt and as long as the debtor is ready to pay the debt, nor will the debtor's guarantors be distrained for so long as the principal debtor is able to pay the debt; and should the principal debtor default in his payment of the debt, not having the means to repay it, or should he refuse to pay it despite being able to do so, the guarantors will answer for the debt and, if they wish, they are to have the lands and rents of the debtor until they are repaid the debt that previously they paid on behalf of the debtor, unless the principal debtor can show that he is quit in respect to these guarantors. - -[9] The city of London is to have all its ancient liberties and customs. Moreover we wish and grant that all other cities and boroughs and vills and the barons of the Cinque Ports and all ports are to have all their liberties and free customs. - -[10] No-one is to be distrained to do more service for a knight's fee or for any other free tenement than is due from it. - -[11] Common pleas are not to follow our court but are to be held in a certain fixed place. - -[12] Recognisances of novel disseisin and of mort d'ancestor are not to be taken save in their particular counties and in the following way. We or, should we be outside the realm, our chief justiciar, will send our justices once a year to each county, so that, together with the knights of the counties, that may take the aforesaid assizes in the counties; and those assizes which cannot be completed in that visitation of the county by our aforesaid justices assigned to take the said assizes are to be completed elsewhere by the justices in their visitation; and those which cannot be completed by them on account of the difficulty of various articles (of law) are to be referred to our justices of the Bench and completed there. - -[13] Assizes of darrein presentment are always to be taken before our justices of the Bench and are to be completed there. - -[14] A freeman is not to be amerced for a small offence save in accordance with the manner of the offence, and for a major offence according to its magnitude, saving his sufficiency (salvo contenemento suo), and a merchant likewise, saving his merchandise, and any villain other than one of our own is to be amerced in the same way, saving his necessity (salvo waynagio) should he fall into our mercy, and none of the aforesaid amercements is to be imposed save by the oath of honest and law-worthy men of the neighbourhood. Earls and barons are not to be amerced save by their peers and only in accordance with the manner of their offence. - -[15] No town or free man is to be distrained to make bridges or bank works save for those that ought to do so of old and by right. - -[16] No bank works of any sort are to be kept up save for those that were in defense in the time of King H(enry II) our grandfather and in the same places and on the same terms as was customary in his time. - -[17] No sheriff, constable, coroner or any other of our bailiffs is to hold pleas of our crown. - -[18] If anyone holding a lay fee from us should die, and our sheriff or bailiff shows our letters patent containing our summons for a debt that the dead man owed us, our sheriff or bailiff is permitted to attach and enroll all the goods and chattels of the dead man found in lay fee, to the value of the said debt, by view of law-worthy men, so that nothing is to be removed thence until the debt that remains is paid to us, and the remainder is to be released to the executors to discharge the will of the dead man, and if nothing is owed to us from such a person, all the chattels are to pass to the (use of) the dead man, saving to the dead man's wife and children their reasonable portion. - -[19] No constable or his bailiff is to take corn or other chattels from anyone who not themselves of a vill where a castle is built, unless the constable or his bailiff immediately offers money in payment of obtains a respite by the wish of the seller. If the person whose corn or chattels are taken is of such a vill, then the constable or his bailiff is to pay the purchase price within forty days. - -[20] No constable is to distrain any knight to give money for castle guard if the knight is willing to do such guard in person or by proxy of any other honest man, should the knight be prevented from doing so by just cause. And if we take or send such a knight into the army, he is to be quit of (castle) guard in accordance with the length of time the we have him in the army for the fee for which he has done service in the army. - -[21] No sheriff or bailiff of ours or of anyone else is to take anyone's horses or carts to make carriage, unless he renders the payment customarily due, namely for a two-horse cart ten pence per day, and for a three-horse cart fourteen pence per day. No demesne cart belonging to any churchman or knight or any other lady (sic) is to be taken by our bailiffs, nor will we or our bailiffs or anyone else take someone else's timber for a castle or any other of our business save by the will of he to whom the timber belongs. - -[22] We shall not hold the lands of those convicted of felony save for a year and a day, whereafter such land is to be restored to the lords of the fees. - -[23] All fish weirs (kidelli) on the Thames and the Medway and throughout England are to be entirely dismantled, save on the sea coast. - -[24] The writ called 'praecipe' is not to be issued to anyone in respect to any free tenement in such a way that a free man might lose his court. - -[25] There is to be a single measure for wine throughout our realm, and a single measure for ale, and a single measure for Corn, that is to say the London quarter, and a single breadth for dyed cloth, russets, and haberjects, that is to say two yards within the lists. And it shall be the same for weights as for measures. - -[26] Henceforth there is to be nothing given for a writ of inquest from the person seeking an inquest of life or member, but such a writ is to be given freely and is not to be denied. - -[27] If any persons hold from us at fee farm or in socage or burgage, and hold land from another by knight service, we are not, by virtue of such a fee farm or socage or burgage, to have custody of the heir or their land which pertains to another's fee, nor are we to have custody of such a fee farm or socage or burgage unless this fee farm owes knight service. We are not to have the custody of an heir or of any land which is held from another by knight service on the pretext of some small serjeanty held from us by service of rendering us knives or arrows or suchlike things. - -[28] No bailiff is henceforth to put any man on his open law or on oath simply by virtue of his spoken word, without reliable witnesses being produced for the same. - -[29] No freeman is to be taken or imprisoned or disseised of his free tenement or of his liberties or free customs, or outlawed or exiled or in any way ruined, nor will we go against such a man or send against him save by lawful judgement of his peers or by the law of the land. To no-one will we sell or deny of delay right or justice. - -[30] All merchants, unless they have been previously and publicly forbidden, are to have safe and secure conduct in leaving and coming to England and in staying and going through England both by land and by water to buy and to sell, without any evil exactions, according to the ancient and right customs, save in time of war, and if they should be from a land at war against us and be found in our land at the beginning of the war, they are to be attached without damage to their bodies or goods until it is established by us or our chief justiciar in what way the merchants of our land are treated who at such a time are found in the land that is at war with us, and if our merchants are safe there, the other merchants are to be safe in our land. - -[31] If anyone dies holding of any escheat such as the honour of Wallingford, Boulogne, Nottingham, Lancaster or of other escheats which are in our hands and which are baronies, his heir is not to give any other relief or render any other service to us that would not have been rendered to the baron if the barony were still held by a baron, and we shall hold such things in the same way as the baron held them, nor, on account of such a barony or escheat, are we to have the escheat or custody of any of our men unless the man who held the barony or the escheat held elsewhere from us in chief. - -[32] No free man is henceforth to give or sell any more of his land to anyone, unless the residue of his land is sufficient to render due service to the lord of the fee as pertains to that fee. - -[33] All patrons of abbeys which have charters of the kings of England over advowson or ancient tenure or possession are to have the custody of such abbeys when they fall vacant just as they ought to have and as is declared above. - -[34] No-one is to be taken or imprisoned on the appeal of woman for the death of anyone save for the death of that woman's husband. - -[35] No county court is to be held save from month to month, and where the greater term used to be held, so will it be in future, nor will any sheriff or his bailiff make his tourn through the hundred save for twice a year and only in the place that is due and customary, namely once after Easter and again after Michaelmas, and the view of frankpledge is to be taken at the Michaelmas term without exception, in such a way that every man is to have his liberties which he had or used to have in the time of King H(enry II) my grandfather or which he has acquired since. The view of frankpledge is to be taken so that our peace be held and so that the tithing is to be held entire as it used to be, and so that the sheriff does not seek exceptions but remains content with that which the sheriff used to have in taking the view in the time of King H(enry) our grandfather. - -[36] Nor is it permitted to anyone to give his land to a religious house in such a way that he receives it back from such a house to hold, nor is it permitted to any religious house to accept the land of anyone in such way that the land is restored to the person from whom it was received to hold. If anyone henceforth gives his land in such a way to any religious house and is convicted of the same, the gift is to be entirely quashed and such land is to revert to the lord of that fee. - -[37] Scutage furthermore is to be taken as it used to be in the time of King H(enry) our grandfather, and all liberties and free customs shall be preserved to archbishops, bishops, abbots, priors, Templars, Hospitallers, earls, barons and all others, both ecclesiastical and secular persons, just as they formerly had. - -All these aforesaid customs and liberties which we have granted to be held in our realm in so far as pertains to us are to be observed by all of our realm, both clergy and laity, in so far as pertains to them in respect to their own men. For this gift and grant of these liberties and of others contained in our charter over the liberties of the forest, the archbishops, bishops, abbots, priors, earls, barons, knights, fee holders and all of our realm have given us a fifteenth part of all their movable goods. Moreover we grant to them for us and our heirs that neither we nor our heirs will seek anything by which the liberties contained in this charter might be infringed or damaged, and should anything be obtained from anyone against this it is to count for nothing and to be held as nothing. With these witnesses: the lord S(tephen) archbishop of Canterbury, E(ustace) bishop of London, J(ocelin) bishop of Bath, P(eter) bishop of Winchester, H(ugh) bishop of Lincoln, R(ichard) bishop of Salisbury, W. bishop of Rochester, W(illiam) bishop of Worcester, J(ohn) bishop of Ely, H(ugh) bishop of Hereford, R(anulf) bishop of Chichester, W(illiam) bishop of Exeter, the abbot of (Bury) St Edmunds, the abbot of St Albans, the abbot of Battle, the abbot of St Augustine's Canterbury, the abbot of Evesham, the abbot of Westminster, the abbot of Peterborough, the abbot of Reading, the abbot of Abingdon, the abbot of Malmesbury, the abbot of Winchcombe, the abbot of Hyde (Winchester), the abbot of Chertsey, the abbot of Sherborne, the abbot of Cerne, the abbot of Abbotsbury, the abbot of Milton (Abbas), the abbot of Selby, the abbot of Cirencester, H(ubert) de Burgh the justiciar, H. earl of Chester and Lincoln, W(illiam) earl of Salisbury, W(illiam) earl Warenne, G. de Clare earl of Gloucester and Hertford, W(illiam) de Ferrers earl of Derby, W(illiam) de Mandeville earl of Essex, H(ugh) Bigod earl of Norfolk, W(illiam) earl Aumale, H(umphrey) earl of Hereford, J(ohn) constable of Chester, R(obert) de Ros, R(obert) fitz Walter, R(obert) de Vieuxpont, W(illiam) Brewer, R(ichard) de Montfiquet, P(eter) fitz Herbert, W(illiam) de Aubigne, G. Gresley, F. de Braose, J(ohn) of Monmouth, J(ohn) fitz Alan, H(ugh) de Mortemer, W(illiam) de Beauchamp, W(illiam) de St John, P(eter) de Maulay, Brian de Lisle, Th(omas) of Moulton, R(ichard) de Argentan, G(eoffrey) de Neville, W(illiam) Mauduit, J(ohn) de Baalon and others. Given at Westminster on the eleventh day of February in the ninth year of our reign. - -We, holding these aforesaid gifts and grants to be right and welcome, conceed and confirm them for ourselves and our heirs and by the terms of the present (letters) renew them, wishing and granting for ourselves and our heirs that the aforesaid charter is to be firmly and inviably observed in all and each of its articles in perpetuity, including any articles contained in the same charter which by chance have not to date been observed. In testimony of which we have had made these our letters patent. Witnessed by Edward our son, at Westminster on the twelfth day of October in the twenty-fifth year of our reign. (Chancery warranty by John of) Stowe. - -The key isn't here. Keep looking. diff --git a/packages/steg/30/,index.gif b/packages/steg/30/,index.gif deleted file mode 100644 index ed0c47e..0000000 Binary files a/packages/steg/30/,index.gif and /dev/null differ diff --git a/packages/steg/30/index.mdwn b/packages/steg/30/index.mdwn deleted file mode 100644 index 8cf0ebc..0000000 --- a/packages/steg/30/index.mdwn +++ /dev/null @@ -1 +0,0 @@ - diff --git a/packages/steg/30/key b/packages/steg/30/key deleted file mode 100644 index 0624351..0000000 --- a/packages/steg/30/key +++ /dev/null @@ -1 +0,0 @@ -Impact font LOL diff --git a/packages/steg/30/summary b/packages/steg/30/summary deleted file mode 100644 index 01a49c8..0000000 --- a/packages/steg/30/summary +++ /dev/null @@ -1 +0,0 @@ -freeze a frame in an animated gif diff --git a/packages/steg/40/Makefile b/packages/steg/40/Makefile deleted file mode 100644 index 1362e8f..0000000 --- a/packages/steg/40/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -IMG = http://www.myconfinedspace.com/wp-content/uploads/2006/11/bill-stickers.jpg - -.DELETE_ON_ERROR: - -install: file.png - cp $< $(DESTDIR)/$$(md5sum $< | awk '{print $$1;}') - -src.jpg: - wget -O $@ $(IMG) - -%.pbm: %.jpg - jpegtopnm $< > $@ - -alpha.pgm: src.pbm text.txt - echo "P5" > $@ - awk '(i++ == 1) { print; }' $< >> $@ - echo "255" >> $@ - m4 -DKEY="$(shell cat key)" text.txt >> $@ - awk 'BEGIN{for(i=0;i<500000;i++)printf("\377");}' >> $@ - -file.png: alpha.pgm src.pbm - pnmtopng -alpha alpha.pgm src.pbm > $@ - -clean: - rm -f file.png alpha.pgm src.pbm diff --git a/packages/steg/40/key b/packages/steg/40/key deleted file mode 100644 index 2381101..0000000 --- a/packages/steg/40/key +++ /dev/null @@ -1 +0,0 @@ -We the People diff --git a/packages/steg/40/src.jpg b/packages/steg/40/src.jpg deleted file mode 100644 index 0487f2b..0000000 Binary files a/packages/steg/40/src.jpg and /dev/null differ diff --git a/packages/steg/40/summary b/packages/steg/40/summary deleted file mode 100644 index 3620fe8..0000000 --- a/packages/steg/40/summary +++ /dev/null @@ -1 +0,0 @@ -pngtopnm -alpha file.png diff --git a/packages/steg/40/text.txt b/packages/steg/40/text.txt deleted file mode 100644 index 89e2577..0000000 --- a/packages/steg/40/text.txt +++ /dev/null @@ -1,223 +0,0 @@ -We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Welfare, and secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America. - -Article. I. - -Section. 1. - -All legislative Powers herein granted shall be vested in a Congress of the United States, which shall consist of a Senate and House of Representatives. - -Section. 2. - -The House of Representatives shall be composed of Members chosen every second Year by the People of the several States, and the Electors in each State shall have the Qualifications requisite for Electors of the most numerous Branch of the State Legislature. - -No Person shall be a Representative who shall not have attained to the Age of twenty five Years, and been seven Years a Citizen of the United States, and who shall not, when elected, be an Inhabitant of that State in which he shall be chosen. - -Representatives and direct Taxes shall be apportioned among the several States which may be included within this Union, according to their respective Numbers, which shall be determined by adding to the whole Number of free Persons, including those bound to Service for a Term of Years, and excluding Indians not taxed, three fifths of all other Persons. The actual Enumeration shall be made within three Years after the first Meeting of the Congress of the United States, and within every subsequent Term of ten Years, in such Manner as they shall by Law direct. The Number of Representatives shall not exceed one for every thirty Thousand, but each State shall have at Least one Representative; and until such enumeration shall be made, the State of New Hampshire shall be entitled to chuse three, Massachusetts eight, Rhode-Island and Providence Plantations one, Connecticut five, New-York six, New Jersey four, Pennsylvania eight, Delaware one, Maryland six, Virginia ten, North Carolina five, South Carolina five, and Georgia three. - -When vacancies happen in the Representation from any State, the Executive Authority thereof shall issue Writs of Election to fill such Vacancies. - -The House of Representatives shall chuse their Speaker and other Officers; and shall have the sole Power of Impeachment. - -Section. 3. - -The Senate of the United States shall be composed of two Senators from each State, chosen by the Legislature thereof for six Years; and each Senator shall have one Vote. - -Immediately after they shall be assembled in Consequence of the first Election, they shall be divided as equally as may be into three Classes. The Seats of the Senators of the first Class shall be vacated at the Expiration of the second Year, of the second Class at the Expiration of the fourth Year, and of the third Class at the Expiration of the sixth Year, so that one third may be chosen every second Year; and if Vacancies happen by Resignation, or otherwise, during the Recess of the Legislature of any State, the Executive thereof may make temporary Appointments until the next Meeting of the Legislature, which shall then fill such Vacancies. - -No Person shall be a Senator who shall not have attained to the Age of thirty Years, and been nine Years a Citizen of the United States, and who shall not, when elected, be an Inhabitant of that State for which he shall be chosen. - -The Vice President of the United States shall be President of the Senate, but shall have no Vote, unless they be equally divided. - -The Senate shall chuse their other Officers, and also a President pro tempore, in the Absence of the Vice President, or when he shall exercise the Office of President of the United States. - -The Senate shall have the sole Power to try all Impeachments. When sitting for that Purpose, they shall be on Oath or Affirmation. When the President of the United States is tried, the Chief Justice shall preside: And no Person shall be convicted without the Concurrence of two thirds of the Members present. - -Judgment in Cases of Impeachment shall not extend further than to removal from Office, and disqualification to hold and enjoy any Office of honor, Trust or Profit under the United States: but the Party convicted shall nevertheless be liable and subject to Indictment, Trial, Judgment and Punishment, according to Law. - -Section. 4. - -The Times, Places and Manner of holding Elections for Senators and Representatives, shall be prescribed in each State by the Legislature thereof; but the Congress may at any time by Law make or alter such Regulations, except as to the Places of chusing Senators. - -The Congress shall assemble at least once in every Year, and such Meeting shall be on the first Monday in December, unless they shall by Law appoint a different Day. - -Section. 5. - -Each House shall be the Judge of the Elections, Returns and Qualifications of its own Members, and a Majority of each shall constitute a Quorum to do Business; but a smaller Number may adjourn from day to day, and may be authorized to compel the Attendance of absent Members, in such Manner, and under such Penalties as each House may provide. - -Each House may determine the Rules of its Proceedings, punish its Members for disorderly Behaviour, and, with the Concurrence of two thirds, expel a Member. - -Each House shall keep a Journal of its Proceedings, and from time to time publish the same, excepting such Parts as may in their Judgment require Secrecy; and the Yeas and Nays of the Members of either House on any question shall, at the Desire of one fifth of those Present, be entered on the Journal. - -Neither House, during the Session of Congress, shall, without the Consent of the other, adjourn for more than three days, nor to any other Place than that in which the two Houses shall be sitting. - -Section. 6. - -The Senators and Representatives shall receive a Compensation for their Services, to be ascertained by Law, and paid out of the Treasury of the United States. They shall in all Cases, except Treason, Felony and Breach of the Peace, be privileged from Arrest during their Attendance at the Session of their respective Houses, and in going to and returning from the same; and for any Speech or Debate in either House, they shall not be questioned in any other Place. - -No Senator or Representative shall, during the Time for which he was elected, be appointed to any civil Office under the Authority of the United States, which shall have been created, or the Emoluments whereof shall have been encreased during such time; and no Person holding any Office under the United States, shall be a Member of either House during his Continuance in Office. - -Section. 7. - -All Bills for raising Revenue shall originate in the House of Representatives; but the Senate may propose or concur with Amendments as on other Bills. - -Every Bill which shall have passed the House of Representatives and the Senate, shall, before it become a Law, be presented to the President of the United States: If he approve he shall sign it, but if not he shall return it, with his Objections to that House in which it shall have originated, who shall enter the Objections at large on their Journal, and proceed to reconsider it. If after such Reconsideration two thirds of that House shall agree to pass the Bill, it shall be sent, together with the Objections, to the other House, by which it shall likewise be reconsidered, and if approved by two thirds of that House, it shall become a Law. But in all such Cases the Votes of both Houses shall be determined by yeas and Nays, and the Names of the Persons voting for and against the Bill shall be entered on the Journal of each House respectively. If any Bill shall not be returned by the President within ten Days (Sundays excepted) after it shall have been presented to him, the Same shall be a Law, in like Manner as if he had signed it, unless the Congress by their Adjournment prevent its Return, in which Case it shall not be a Law. - -Every Order, Resolution, or Vote to which the Concurrence of the Senate and House of Representatives may be necessary (except on a question of Adjournment) shall be presented to the President of the United States; and before the Same shall take Effect, shall be approved by him, or being disapproved by him, shall be repassed by two thirds of the Senate and House of Representatives, according to the Rules and Limitations prescribed in the Case of a Bill. - -Section. 8. - -The Congress shall have Power To lay and collect Taxes, Duties, Imposts and Excises, to pay the Debts and provide for the common Defence and general Welfare of the United States; but all Duties, Imposts and Excises shall be uniform throughout the United States; - -To borrow Money on the credit of the United States; - -To regulate Commerce with foreign Nations, and among the several States, and with the Indian Tribes; - -To establish an uniform Rule of Naturalization, and uniform Laws on the subject of Bankruptcies throughout the United States; - -To coin Money, regulate the Value thereof, and of foreign Coin, and fix the Standard of Weights and Measures; - -To provide for the Punishment of counterfeiting the Securities and current Coin of the United States; - -To establish Post Offices and post Roads; - -To promote the Progress of Science and useful Arts, by securing for limited Times to Authors and Inventors the exclusive Right to their respective Writings and Discoveries; - -To constitute Tribunals inferior to the supreme Court; - -To define and punish Piracies and Felonies committed on the high Seas, and Offences against the Law of Nations; - -To declare War, grant Letters of Marque and Reprisal, and make Rules concerning Captures on Land and Water; - -To raise and support Armies, but no Appropriation of Money to that Use shall be for a longer Term than two Years; - -To provide and maintain a Navy; - -To make Rules for the Government and Regulation of the land and naval Forces; - -To provide for calling forth the Militia to execute the Laws of the Union, suppress Insurrections and repel Invasions; - -To provide for organizing, arming, and disciplining, the Militia, and for governing such Part of them as may be employed in the Service of the United States, reserving to the States respectively, the Appointment of the Officers, and the Authority of training the Militia according to the discipline prescribed by Congress; - -To exercise exclusive Legislation in all Cases whatsoever, over such District (not exceeding ten Miles square) as may, by Cession of particular States, and the Acceptance of Congress, become the Seat of the Government of the United States, and to exercise like Authority over all Places purchased by the Consent of the Legislature of the State in which the Same shall be, for the Erection of Forts, Magazines, Arsenals, dock-Yards, and other needful Buildings;--And - -To make all Laws which shall be necessary and proper for carrying into Execution the foregoing Powers, and all other Powers vested by this Constitution in the Government of the United States, or in any Department or Officer thereof. - -Section. 9. - -The Migration or Importation of such Persons as any of the States now existing shall think proper to admit, shall not be prohibited by the Congress prior to the Year one thousand eight hundred and eight, but a Tax or duty may be imposed on such Importation, not exceeding ten dollars for each Person. - -The Privilege of the Writ of Habeas Corpus shall not be suspended, unless when in Cases of Rebellion or Invasion the public Safety may require it. - -No Bill of Attainder or ex post facto Law shall be passed. - -No Capitation, or other direct, Tax shall be laid, unless in Proportion to the Census or enumeration herein before directed to be taken. - -No Tax or Duty shall be laid on Articles exported from any State. - -No Preference shall be given by any Regulation of Commerce or Revenue to the Ports of one State over those of another; nor shall Vessels bound to, or from, one State, be obliged to enter, clear, or pay Duties in another. - -No Money shall be drawn from the Treasury, but in Consequence of Appropriations made by Law; and a regular Statement and Account of the Receipts and Expenditures of all public Money shall be published from time to time. - -No Title of Nobility shall be granted by the United States: And no Person holding any Office of Profit or Trust under them, shall, without the Consent of the Congress, accept of any present, Emolument, Office, or Title, of any kind whatever, from any King, Prince, or foreign State. - -Section. 10. - -No State shall enter into any Treaty, Alliance, or Confederation; grant Letters of Marque and Reprisal; coin Money; emit Bills of Credit; make any Thing but gold and silver Coin a Tender in Payment of Debts; pass any Bill of Attainder, ex post facto Law, or Law impairing the Obligation of Contracts, or grant any Title of Nobility. - -No State shall, without the Consent of the Congress, lay any Imposts or Duties on Imports or Exports, except what may be absolutely necessary for executing it's inspection Laws: and the net Produce of all Duties and Imposts, laid by any State on Imports or Exports, shall be for the Use of the Treasury of the United States; and all such Laws shall be subject to the Revision and Controul of the Congress. - -No State shall, without the Consent of Congress, lay any Duty of Tonnage, keep Troops, or Ships of War in time of Peace, enter into any Agreement or Compact with another State, or with a foreign Power, or engage in War, unless actually invaded, or in such imminent Danger as will not admit of delay. - -Article. II. - -Section. 1. - -The executive Power shall be vested in a President of the United States of America. He shall hold his Office during the Term of four Years, and, together with the Vice President, chosen for the same Term, be elected, as follows: - -Each State shall appoint, in such Manner as the Legislature thereof may direct, a Number of Electors, equal to the whole Number of Senators and Representatives to which the State may be entitled in the Congress: but no Senator or Representative, or Person holding an Office of Trust or Profit under the United States, shall be appointed an Elector. - -The Electors shall meet in their respective States, and vote by Ballot for two Persons, of whom one at least shall not be an Inhabitant of the same State with themselves. And they shall make a List of all the Persons voted for, and of the Number of Votes for each; which List they shall sign and certify, and transmit sealed to the Seat of the Government of the United States, directed to the President of the Senate. The President of the Senate shall, in the Presence of the Senate and House of Representatives, open all the Certificates, and the Votes shall then be counted. The Person having the greatest Number of Votes shall be the President, if such Number be a Majority of the whole Number of Electors appointed; and if there be more than one who have such Majority, and have an equal Number of Votes, then the House of Representatives shall immediately chuse by Ballot one of them for President; and if no Person have a Majority, then from the five highest on the List the said House shall in like Manner chuse the President. But in chusing the President, the Votes shall be taken by States, the Representation from each State having one Vote; A quorum for this purpose shall consist of a Member or Members from two thirds of the States, and a Majority of all the States shall be necessary to a Choice. In every Case, after the Choice of the President, the Person having the greatest Number of Votes of the Electors shall be the Vice President. But if there should remain two or more who have equal Votes, the Senate shall chuse from them by Ballot the Vice President. - -The Congress may determine the Time of chusing the Electors, and the Day on which they shall give their Votes; which Day shall be the same throughout the United States. - -No Person except a natural born Citizen, or a Citizen of the United States, at the time of the Adoption of this Constitution, shall be eligible to the Office of President; neither shall any Person be eligible to that Office who shall not have attained to the Age of thirty five Years, and been fourteen Years a Resident within the United States. - -In Case of the Removal of the President from Office, or of his Death, Resignation, or Inability to discharge the Powers and Duties of the said Office, the Same shall devolve on the Vice President, and the Congress may by Law provide for the Case of Removal, Death, Resignation or Inability, both of the President and Vice President, declaring what Officer shall then act as President, and such Officer shall act accordingly, until the Disability be removed, or a President shall be elected. - -The President shall, at stated Times, receive for his Services, a Compensation, which shall neither be increased nor diminished during the Period for which he shall have been elected, and he shall not receive within that Period any other Emolument from the United States, or any of them. - -Before he enter on the Execution of his Office, he shall take the following Oath or Affirmation:--"I do solemnly swear (or affirm) that I will faithfully execute the Office of President of the United States, and will to the best of my Ability, preserve, protect and defend the Constitution of the United States." - -Section. 2. - -The President shall be Commander in Chief of the Army and Navy of the United States, and of the Militia of the several States, when called into the actual Service of the United States; he may require the Opinion, in writing, of the principal Officer in each of the executive Departments, upon any Subject relating to the Duties of their respective Offices, and he shall have Power to grant Reprieves and Pardons for Offences against the United States, except in Cases of Impeachment. - -He shall have Power, by and with the Advice and Consent of the Senate, to make Treaties, provided two thirds of the Senators present concur; and he shall nominate, and by and with the Advice and Consent of the Senate, shall appoint Ambassadors, other public Ministers and Consuls, Judges of the supreme Court, and all other Officers of the United States, whose Appointments are not herein otherwise provided for, and which shall be established by Law: but the Congress may by Law vest the Appointment of such inferior Officers, as they think proper, in the President alone, in the Courts of Law, or in the Heads of Departments. - -The President shall have Power to fill up all Vacancies that may happen during the Recess of the Senate, by granting Commissions which shall expire at the End of their next Session. - -Section. 3. - -He shall from time to time give to the Congress Information of the State of the Union, and recommend to their Consideration such Measures as he shall judge necessary and expedient; he may, on extraordinary Occasions, convene both Houses, or either of them, and in Case of Disagreement between them, with Respect to the Time of Adjournment, he may adjourn them to such Time as he shall think proper; he shall receive Ambassadors and other public Ministers; he shall take Care that the Laws be faithfully executed, and shall Commission all the Officers of the United States. - -Section. 4. - -The President, Vice President and all civil Officers of the United States, shall be removed from Office on Impeachment for, and Conviction of, Treason, Bribery, or other high Crimes and Misdemeanors. - -Article III. - -Section. 1. - -The judicial Power of the United States shall be vested in one supreme Court, and in such inferior Courts as the Congress may from time to time ordain and establish. The Judges, both of the supreme and inferior Courts, shall hold their Offices during good Behaviour, and shall, at stated Times, receive for their Services a Compensation, which shall not be diminished during their Continuance in Office. - -Section. 2. - -The judicial Power shall extend to all Cases, in Law and Equity, arising under this Constitution, the Laws of the United States, and Treaties made, or which shall be made, under their Authority;--to all Cases affecting Ambassadors, other public Ministers and Consuls;--to all Cases of admiralty and maritime Jurisdiction;--to Controversies to which the United States shall be a Party;--to Controversies between two or more States;-- between a State and Citizens of another State,--between Citizens of different States,--between Citizens of the same State claiming Lands under Grants of different States, and between a State, or the Citizens thereof, and foreign States, Citizens or Subjects. - -In all Cases affecting Ambassadors, other public Ministers and Consuls, and those in which a State shall be Party, the supreme Court shall have original Jurisdiction. In all the other Cases before mentioned, the supreme Court shall have appellate Jurisdiction, both as to Law and Fact, with such Exceptions, and under such Regulations as the Congress shall make. - -The Trial of all Crimes, except in Cases of Impeachment, shall be by Jury; and such Trial shall be held in the State where the said Crimes shall have been committed; but when not committed within any State, the Trial shall be at such Place or Places as the Congress may by Law have directed. - -Section. 3. - -Treason against the United States, shall consist only in levying War against them, or in adhering to their Enemies, giving them Aid and Comfort. No Person shall be convicted of Treason unless on the Testimony of two Witnesses to the same overt Act, or on Confession in open Court. - -The Congress shall have Power to declare the Punishment of Treason, but no Attainder of Treason shall work Corruption of Blood, or Forfeiture except during the Life of the Person attainted. - -Article. IV. - -Section. 1. - -Full Faith and Credit shall be given in each State to the public Acts, Records, and judicial Proceedings of every other State. And the Congress may by general Laws prescribe the Manner in which such Acts, Records and Proceedings shall be proved, and the Effect thereof. - -Section. 2. - -The Citizens of each State shall be entitled to all Privileges and Immunities of Citizens in the several States. - -A Person charged in any State with Treason, Felony, or other Crime, who shall flee from Justice, and be found in another State, shall on Demand of the executive Authority of the State from which he fled, be delivered up, to be removed to the State having Jurisdiction of the Crime. - -No Person held to Service or Labour in one State, under the Laws thereof, escaping into another, shall, in Consequence of any Law or Regulation therein, be discharged from such Service or Labour, but shall be delivered up on Claim of the Party to whom such Service or Labour may be due. - -Section. 3. - -New States may be admitted by the Congress into this Union; but no new State shall be formed or erected within the Jurisdiction of any other State; nor any State be formed by the Junction of two or more States, or Parts of States, without the Consent of the Legislatures of the States concerned as well as of the Congress. - -The Congress shall have Power to dispose of and make all needful Rules and Regulations respecting the Territory or other Property belonging to the United States; and nothing in this Constitution shall be so construed as to Prejudice any Claims of the United States, or of any particular State. - -Section. 4. - -The United States shall guarantee to every State in this Union a Republican Form of Government, and shall protect each of them against Invasion; and on Application of the Legislature, or of the Executive (when the Legislature cannot be convened), against domestic Violence. - -Article. V. - -The Congress, whenever two thirds of both Houses shall deem it necessary, shall propose Amendments to this Constitution, or, on the Application of the Legislatures of two thirds of the several States, shall call a Convention for proposing Amendments, which, in either Case, shall be valid to all Intents and Purposes, as Part of this Constitution, when ratified by the Legislatures of three fourths of the several States, or by Conventions in three fourths thereof, as the one or the other Mode of Ratification may be proposed by the Congress; Provided that no Amendment which may be made prior to the Year One thousand eight hundred and eight shall in any Manner affect the first and fourth Clauses in the Ninth Section of the first Article; and that no State, without its Consent, shall be deprived of its equal Suffrage in the Senate. - -Article. VI. - -All Debts contracted and Engagements entered into, before the Adoption of this Constitution, shall be as valid against the United States under this Constitution, as under the Confederation. - -This Constitution, and the Laws of the United States which shall be made in Pursuance thereof; and all Treaties made, or which shall be made, under the Authority of the United States, shall be the supreme Law of the Land; and the Judges in every State shall be bound thereby, any Thing in the Constitution or Laws of any State to the Contrary notwithstanding. - -The Senators and Representatives before mentioned, and the Members of the several State Legislatures, and all executive and judicial Officers, both of the United States and of the several States, shall be bound by Oath or Affirmation, to support this Constitution; but no religious Test shall ever be required as a Qualification to any Office or public Trust under the United States. - -The key is "KEY". diff --git a/packages/steg/400/Makefile b/packages/steg/400/Makefile deleted file mode 100644 index e6e310f..0000000 --- a/packages/steg/400/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -.DELETE_ON_ERROR: - -DESTDIR ?= . - -JPEGS += ww0207-43.jpg ww0870-11.jpg ww1645-44.jpg ww1646-66.jpg ww1646-78.jpg -JPEGS += ww0207-45.jpg ww0870-14.jpg ww1645-52.jpg ww1646-67.jpg ww1647-37.jpg -JPEGS += ww0207-90.jpg ww1645-22.jpg ww1645-53.jpg ww1646-69.jpg ww1647-75.jpg -JPEGS += ww0870-09.jpg ww1645-43.jpg ww1645-55.jpg ww1646-70.jpg ww1647-85.jpg - -PRISTINE = $(addprefix pristine/, $(JPEGS)) -NORMALIZED = $(addprefix normalized/, $(JPEGS)) - -install: $(DESTDIR)/file.zip - -.PRECIOUS: pristine/%.jpg -pristine/%.jpg: - @mkdir -p $(@D) - wget -O $@ http://digital.library.northwestern.edu/wwii-posters/img/$*.jpg - -normalized/%.jpg: pristine/%.jpg image.cmds - @mkdir -p $(@D) - cp $< $@ - exiv2 -m image.cmds $@ - -key.png: key - pbmtext < key | pnmtopng -compression 0 > $@ - -$(DESTDIR)/file.zip: key.png $(NORMALIZED) - ./encode $(NORMALIZED) < key.png > $@ - @echo $(NORMALIZED) - -clean: - rm -rf key.png $(DESTDIR)/file.zip - rm -rf normalized/ \ No newline at end of file diff --git a/packages/steg/400/encode b/packages/steg/400/encode deleted file mode 100755 index 164039c..0000000 --- a/packages/steg/400/encode +++ /dev/null @@ -1,59 +0,0 @@ -#! /usr/bin/python - -## Fetch some public domain images, make a PNG of the key, and encode -## that in the Exif.Image.OriginalRawFileData tags of the images - -import os -import glob -import random -import shutil -import md5 -import sys -import zipfile - -def system(cmd): - ret = os.system(cmd) - if ret: - raise OSError('return value %d: %s' % (ret, cmd)) - -# Read in key image -key_png = sys.stdin.read() - -# Duplicate two photos, give them a chance to bindiff -jpegs = sys.argv[1:] -random.shuffle(jpegs) -for fn in jpegs[:2]: - root, ext = os.path.splitext(fn) - jpegs.append(fn) -random.shuffle(jpegs) - -bytes_per_photo = len(key_png) / len(jpegs) - -zipf = zipfile.ZipFile(sys.stdout, 'w') -for i in range(len(jpegs)): - fn = jpegs[i] - - cmd1 = 'set Exif.Canon.0x0019 %d' % i - - offset = i * bytes_per_photo - if i == len(jpegs) - 1: - bytes = key_png[offset:] - else: - bytes = key_png[offset:offset + bytes_per_photo] - bytes_str = ' '.join(str(ord(c)) for c in bytes) - cmd2 = 'set Exif.Canon.0x0018 "%s"' % bytes_str - - # Now apply our devious stuff - system('exiv2 -M\'%s\' -M\'%s\' %s' % (cmd1, cmd2, fn)) - - # Read it in - contents = open(fn, 'rb').read() - - # Find the new file's md5 checksum - checksum = md5.new(contents).hexdigest() - - # Make a new zip file entry - zi = zipfile.ZipInfo(checksum + '.jpg') - zi.compress_type = zipfile.ZIP_DEFLATED - zi.external_attr = 0644 << 16L - zipf.writestr(zi, contents) diff --git a/packages/steg/400/image.cmds b/packages/steg/400/image.cmds deleted file mode 100644 index d54ddd9..0000000 --- a/packages/steg/400/image.cmds +++ /dev/null @@ -1,145 +0,0 @@ -set Exif.Image.Make Ascii "Canon" -set Exif.Image.Model Ascii "Canon PowerShot S2 IS" -set Exif.Image.Orientation Short "1" -set Exif.Image.XResolution Rational "180/1" -set Exif.Image.YResolution Rational "180/1" -set Exif.Image.ResolutionUnit Short "2" -set Exif.Image.DateTime Ascii "2009:04:23 10:10:34" -set Exif.Image.YCbCrPositioning Short "1" -set Exif.Image.ExifTag Long "186" -set Exif.Photo.ExposureTime Rational "1/60" -set Exif.Photo.FNumber Rational "40/10" -set Exif.Photo.ExifVersion Undefined "48 50 50 48" -set Exif.Photo.DateTimeOriginal Ascii "2009:04:23 10:10:34" -set Exif.Photo.DateTimeDigitized Ascii "2009:04:23 10:10:34" -set Exif.Photo.ComponentsConfiguration Undefined "1 2 3 0" -set Exif.Photo.CompressedBitsPerPixel Rational "3/1" -set Exif.Photo.ShutterSpeedValue SRational "189/32" -set Exif.Photo.ApertureValue Rational "128/32" -set Exif.Photo.ExposureBiasValue SRational "0/3" -set Exif.Photo.MaxApertureValue Rational "92/32" -set Exif.Photo.MeteringMode Short "5" -set Exif.Photo.Flash Short "16" -set Exif.Photo.FocalLength Rational "6000/1000" -set Exif.Photo.FlashpixVersion Undefined "48 49 48 48" -set Exif.Photo.ColorSpace Short "1" -set Exif.Photo.PixelXDimension Short "2592" -set Exif.Photo.PixelYDimension Short "1944" -set Exif.Photo.InteroperabilityTag Long "2148" -set Exif.Photo.FocalPlaneXResolution Rational "2592000/225" -set Exif.Photo.FocalPlaneYResolution Rational "1944000/168" -set Exif.Photo.FocalPlaneResolutionUnit Short "2" -set Exif.Photo.SensingMethod Short "2" -set Exif.Photo.FileSource Undefined "3" -set Exif.Photo.CustomRendered Short "0" -set Exif.Photo.ExposureMode Short "0" -set Exif.Photo.WhiteBalance Short "0" -set Exif.Photo.DigitalZoomRatio Rational "2592/2592" -set Exif.Photo.SceneCaptureType Short "0" -set Exif.Canon.0x0002 Short "2 600 230 172" -set Exif.Canon.0x0003 Short "0 0 0 0" -set Exif.Canon.0x0000 Short "0 0 0 0 0 0" -set Exif.Canon.0x0000 Short "18 0 0 1 0 0 0 0 0" -set Exif.Canon.0x0013 Short "0 0 0 0" -set Exif.Canon.ImageType Ascii "IMG:PowerShot S2 IS JPEG" -set Exif.Canon.FirmwareVersion Ascii "Firmware Version 1.00" -set Exif.Canon.OwnerName Ascii "" -set Exif.Canon.ModelID Long "23330816" -set Exif.Canon.0x000d Long "0 1 0 598 37 0 4294967278 37 0 0 6 10 556 575 384 4294967284 4294967293 597 364 0 0 0 0 0 0 0 0 0 77 92 236 160 255 20 247 69 251 56 54 82 244 0 0 1042 1302 82 244 4294967287 938 1602 1727 938 1 867 283 598 556 0 4294967293 0 0 0 0 0 0 2988 1 0 0 0 0 2 1 3136 3320 0 0 0 0 0 0 1 3300 20 5" -set Exif.Canon.0x0018 Byte "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" -set Exif.Canon.0x0019 Short "1" -set Exif.Canon.0x001a Short "0" -set Exif.Canon.0x001c Short "0" -set Exif.Canon.0x001d Short "32 1 0 2 2 2 2 0 0 0 0 0 0 0 0 0" -set Exif.Canon.0x001e Long "16779008" -set Exif.CanonCs.Macro Short "1" -set Exif.CanonCs.Selftimer Short "0" -set Exif.CanonCs.Quality Short "3" -set Exif.CanonCs.FlashMode Short "0" -set Exif.CanonCs.DriveMode Short "0" -set Exif.CanonCs.0x0006 Short "0" -set Exif.CanonCs.FocusMode Short "4" -set Exif.CanonCs.0x0008 Short "65535" -set Exif.CanonCs.0x0009 Short "1" -set Exif.CanonCs.ImageSize Short "0" -set Exif.CanonCs.EasyMode Short "0" -set Exif.CanonCs.DigitalZoom Short "0" -set Exif.CanonCs.Contrast Short "0" -set Exif.CanonCs.Saturation Short "0" -set Exif.CanonCs.Sharpness Short "0" -set Exif.CanonCs.ISOSpeed Short "15" -set Exif.CanonCs.MeteringMode Short "3" -set Exif.CanonCs.FocusType Short "3" -set Exif.CanonCs.AFPoint Short "8197" -set Exif.CanonCs.ExposureProgram Short "0" -set Exif.CanonCs.0x0015 Short "32767" -set Exif.CanonCs.0x0016 Short "65535" -set Exif.CanonCs.Lens Short "7200 600 100" -set Exif.CanonCs.0x001a Short "92" -set Exif.CanonCs.0x001b Short "192" -set Exif.CanonCs.FlashActivity Short "65535" -set Exif.CanonCs.FlashDetails Short "0" -set Exif.CanonCs.0x001e Short "0" -set Exif.CanonCs.0x001f Short "0" -set Exif.CanonCs.FocusContinuous Short "0" -set Exif.CanonCs.AESetting Short "0" -set Exif.CanonCs.ImageStabilization Short "1" -set Exif.CanonCs.DisplayAperture Short "0" -set Exif.CanonCs.ZoomSourceWidth Short "2592" -set Exif.CanonCs.ZoomTargetWidth Short "2592" -set Exif.CanonCs.0x0026 Short "0" -set Exif.CanonCs.0x0027 Short "0" -set Exif.CanonCs.PhotoEffect Short "0" -set Exif.CanonCs.0x0029 Short "0" -set Exif.CanonCs.ColorTone Short "32767" -set Exif.CanonCs.0x002b Short "32767" -set Exif.CanonCs.0x002c Short "0" -set Exif.CanonCs.0x002d Short "0" -set Exif.CanonSi.0x0001 Short "0" -set Exif.CanonSi.ISOSpeed Short "128" -set Exif.CanonSi.0x0003 Short "199" -set Exif.CanonSi.TargetAperture Short "128" -set Exif.CanonSi.TargetShutterSpeed Short "189" -set Exif.CanonSi.0x0006 Short "0" -set Exif.CanonSi.WhiteBalance Short "0" -set Exif.CanonSi.0x0008 Short "0" -set Exif.CanonSi.Sequence Short "0" -set Exif.CanonSi.0x000a Short "0" -set Exif.CanonSi.0x000b Short "0" -set Exif.CanonSi.0x000c Short "0" -set Exif.CanonSi.0x000d Short "0" -set Exif.CanonSi.AFPointUsed Short "0" -set Exif.CanonSi.FlashBias Short "0" -set Exif.CanonSi.0x0010 Short "0" -set Exif.CanonSi.0x0011 Short "0" -set Exif.CanonSi.0x0012 Short "1" -set Exif.CanonSi.SubjectDistance Short "17" -set Exif.CanonSi.0x0014 Short "0" -set Exif.CanonSi.ApertureValue Short "128" -set Exif.CanonSi.ShutterSpeedValue Short "192" -set Exif.CanonSi.0x0017 Short "0" -set Exif.CanonSi.0x0018 Short "0" -set Exif.CanonSi.0x0019 Short "12" -set Exif.CanonSi.0x001a Short "250" -set Exif.CanonSi.0x001b Short "0" -set Exif.CanonSi.0x001c Short "0" -set Exif.CanonSi.0x001d Short "0" -set Exif.CanonSi.0x001e Short "0" -set Exif.CanonSi.0x001f Short "0" -set Exif.CanonSi.0x0020 Short "0" -set Exif.CanonSi.0x0021 Short "0" -set Exif.CanonPi.0x0001 Short "1" -set Exif.CanonPi.ImageWidth Short "2592" -set Exif.CanonPi.ImageHeight Short "1944" -set Exif.CanonPi.ImageWidthAsShot Short "1296" -set Exif.CanonPi.ImageHeightAsShot Short "242" -set Exif.CanonPi.0x0006 Short "233" -set Exif.CanonPi.0x0007 Short "44" -set Exif.CanonPi.0x0008 Short "0" -set Exif.CanonPi.0x0009 Short "0" -set Exif.CanonPi.0x000a Short "0" -set Exif.CanonPi.0x000b Short "0" -set Exif.Iop.InteroperabilityIndex Ascii "R98" -set Exif.Iop.InteroperabilityVersion Undefined "48 49 48 48" -set Exif.Iop.RelatedImageWidth Short "2592" -set Exif.Iop.RelatedImageLength Short "1944" diff --git a/packages/steg/400/image.exv b/packages/steg/400/image.exv deleted file mode 100644 index 58f640f..0000000 Binary files a/packages/steg/400/image.exv and /dev/null differ diff --git a/packages/steg/400/key b/packages/steg/400/key deleted file mode 100644 index 5dd1805..0000000 --- a/packages/steg/400/key +++ /dev/null @@ -1 +0,0 @@ -wilderness fishsticks diff --git a/packages/steg/400/pristine/ww0207-43.jpg b/packages/steg/400/pristine/ww0207-43.jpg deleted file mode 100644 index cb95d89..0000000 Binary files a/packages/steg/400/pristine/ww0207-43.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww0207-45.jpg b/packages/steg/400/pristine/ww0207-45.jpg deleted file mode 100644 index 263398d..0000000 Binary files a/packages/steg/400/pristine/ww0207-45.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww0207-90.jpg b/packages/steg/400/pristine/ww0207-90.jpg deleted file mode 100644 index 451455a..0000000 Binary files a/packages/steg/400/pristine/ww0207-90.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww0870-09.jpg b/packages/steg/400/pristine/ww0870-09.jpg deleted file mode 100644 index 09d6a6b..0000000 Binary files a/packages/steg/400/pristine/ww0870-09.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww0870-11.jpg b/packages/steg/400/pristine/ww0870-11.jpg deleted file mode 100644 index d78f303..0000000 Binary files a/packages/steg/400/pristine/ww0870-11.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww0870-14.jpg b/packages/steg/400/pristine/ww0870-14.jpg deleted file mode 100644 index 93e75c3..0000000 Binary files a/packages/steg/400/pristine/ww0870-14.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww1645-22.jpg b/packages/steg/400/pristine/ww1645-22.jpg deleted file mode 100644 index 5c36916..0000000 Binary files a/packages/steg/400/pristine/ww1645-22.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww1645-43.jpg b/packages/steg/400/pristine/ww1645-43.jpg deleted file mode 100644 index 16340bc..0000000 Binary files a/packages/steg/400/pristine/ww1645-43.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww1645-44.jpg b/packages/steg/400/pristine/ww1645-44.jpg deleted file mode 100644 index 6bf1528..0000000 Binary files a/packages/steg/400/pristine/ww1645-44.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww1645-52.jpg b/packages/steg/400/pristine/ww1645-52.jpg deleted file mode 100644 index 2efd067..0000000 Binary files a/packages/steg/400/pristine/ww1645-52.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww1645-53.jpg b/packages/steg/400/pristine/ww1645-53.jpg deleted file mode 100644 index a7b6b86..0000000 Binary files a/packages/steg/400/pristine/ww1645-53.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww1645-55.jpg b/packages/steg/400/pristine/ww1645-55.jpg deleted file mode 100644 index 7c84e68..0000000 Binary files a/packages/steg/400/pristine/ww1645-55.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww1646-66.jpg b/packages/steg/400/pristine/ww1646-66.jpg deleted file mode 100644 index 1caddab..0000000 Binary files a/packages/steg/400/pristine/ww1646-66.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww1646-67.jpg b/packages/steg/400/pristine/ww1646-67.jpg deleted file mode 100644 index 187203a..0000000 Binary files a/packages/steg/400/pristine/ww1646-67.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww1646-69.jpg b/packages/steg/400/pristine/ww1646-69.jpg deleted file mode 100644 index de8b372..0000000 Binary files a/packages/steg/400/pristine/ww1646-69.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww1646-70.jpg b/packages/steg/400/pristine/ww1646-70.jpg deleted file mode 100644 index 9316b5c..0000000 Binary files a/packages/steg/400/pristine/ww1646-70.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww1646-78.jpg b/packages/steg/400/pristine/ww1646-78.jpg deleted file mode 100644 index 52dd15c..0000000 Binary files a/packages/steg/400/pristine/ww1646-78.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww1647-37.jpg b/packages/steg/400/pristine/ww1647-37.jpg deleted file mode 100644 index bea8abe..0000000 Binary files a/packages/steg/400/pristine/ww1647-37.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww1647-75.jpg b/packages/steg/400/pristine/ww1647-75.jpg deleted file mode 100644 index bf49584..0000000 Binary files a/packages/steg/400/pristine/ww1647-75.jpg and /dev/null differ diff --git a/packages/steg/400/pristine/ww1647-85.jpg b/packages/steg/400/pristine/ww1647-85.jpg deleted file mode 100644 index 0f80095..0000000 Binary files a/packages/steg/400/pristine/ww1647-85.jpg and /dev/null differ diff --git a/packages/steg/400/summary b/packages/steg/400/summary deleted file mode 100644 index 108d6bd..0000000 --- a/packages/steg/400/summary +++ /dev/null @@ -1 +0,0 @@ -Canon.0x0018 diff --git a/packages/steg/50/Makefile b/packages/steg/50/Makefile deleted file mode 100644 index adffd99..0000000 --- a/packages/steg/50/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -install: file.mp3 - cp $< $(DESTDIR)/$$(md5sum $< | awk '{print $$1;}') - -file.mp3: src.mp3 text.txt - dd if=$< bs=4 count=1 > $@ - dd if=/dev/zero bs=4 count=3 >> $@ - m4 -DKEY="$(shell cat key)" text.txt | zip - - >> $@ - cat $< >> $@ - -clean: - rm -f file.mp3 diff --git a/packages/steg/50/key b/packages/steg/50/key deleted file mode 100644 index 6ea83dd..0000000 --- a/packages/steg/50/key +++ /dev/null @@ -1 +0,0 @@ -vegetable multitude diff --git a/packages/steg/50/src.mp3 b/packages/steg/50/src.mp3 deleted file mode 100644 index 95ecde4..0000000 Binary files a/packages/steg/50/src.mp3 and /dev/null differ diff --git a/packages/steg/50/summary b/packages/steg/50/summary deleted file mode 100644 index 0444d92..0000000 --- a/packages/steg/50/summary +++ /dev/null @@ -1 +0,0 @@ -dd if=file.mp3 bs=16 skip=1 | zcat diff --git a/packages/steg/50/text.txt b/packages/steg/50/text.txt deleted file mode 100644 index f9fd8fa..0000000 --- a/packages/steg/50/text.txt +++ /dev/null @@ -1,190 +0,0 @@ -PREAMBLE - -Whereas recognition of the inherent dignity and of the equal and inalienable rights of all members of the human family is the foundation of freedom, justice and peace in the world, - -Whereas disregard and contempt for human rights have resulted in barbarous acts which have outraged the conscience of mankind, and the advent of a world in which human beings shall enjoy freedom of speech and belief and freedom from fear and want has been proclaimed as the highest aspiration of the common people, - -Whereas it is essential, if man is not to be compelled to have recourse, as a last resort, to rebellion against tyranny and oppression, that human rights should be protected by the rule of law, - -Whereas it is essential to promote the development of friendly relations between nations, - -Whereas the peoples of the United Nations have in the Charter reaffirmed their faith in fundamental human rights, in the dignity and worth of the human person and in the equal rights of men and women and have determined to promote social progress and better standards of life in larger freedom, - -Whereas Member States have pledged themselves to achieve, in co-operation with the United Nations, the promotion of universal respect for and observance of human rights and fundamental freedoms, - -Whereas a common understanding of these rights and freedoms is of the greatest importance for the full realization of this pledge, - -Now, Therefore THE GENERAL ASSEMBLY proclaims THIS UNIVERSAL DECLARATION OF HUMAN RIGHTS as a common standard of achievement for all peoples and all nations, to the end that every individual and every organ of society, keeping this Declaration constantly in mind, shall strive by teaching and education to promote respect for these rights and freedoms and by progressive measures, national and international, to secure their universal and effective recognition and observance, both among the peoples of Member States themselves and among the peoples of territories under their jurisdiction. - - - - -Article 1. - - * All human beings are born free and equal in dignity and rights.They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood. - - -Article 2. - - * Everyone is entitled to all the rights and freedoms set forth in this Declaration, without distinction of any kind, such as race, colour, sex, language, religion, political or other opinion, national or social origin, property, birth or other status. Furthermore, no distinction shall be made on the basis of the political, jurisdictional or international status of the country or territory to which a person belongs, whether it be independent, trust, non-self-governing or under any other limitation of sovereignty. - - -Article 3. - - * Everyone has the right to life, liberty and security of person. - - -Article 4. - - * No one shall be held in slavery or servitude; slavery and the slave trade shall be prohibited in all their forms. - - -Article 5. - - * No one shall be subjected to torture or to cruel, inhuman or degrading treatment or punishment. - - -Article 6. - - * Everyone has the right to recognition everywhere as a person before the law. - - -Article 7. - - * All are equal before the law and are entitled without any discrimination to equal protection of the law. All are entitled to equal protection against any discrimination in violation of this Declaration and against any incitement to such discrimination. - - -Article 8. - - * Everyone has the right to an effective remedy by the competent national tribunals for acts violating the fundamental rights granted him by the constitution or by law. - - -Article 9. - - * No one shall be subjected to arbitrary arrest, detention or exile. - - -Article 10. - - * Everyone is entitled in full equality to a fair and public hearing by an independent and impartial tribunal, in the determination of his rights and obligations and of any criminal charge against him. - - -Article 11. - - * (1) Everyone charged with a penal offence has the right to be presumed innocent until proved guilty according to law in a public trial at which he has had all the guarantees necessary for his defence. - * (2) No one shall be held guilty of any penal offence on account of any act or omission which did not constitute a penal offence, under national or international law, at the time when it was committed. Nor shall a heavier penalty be imposed than the one that was applicable at the time the penal offence was committed. - - -Article 12. - - * No one shall be subjected to arbitrary interference with his privacy, family, home or correspondence, nor to attacks upon his honour and reputation. Everyone has the right to the protection of the law against such interference or attacks. - - -Article 13. - - * (1) Everyone has the right to freedom of movement and residence within the borders of each state. - * (2) Everyone has the right to leave any country, including his own, and to return to his country. - - -Article 14. - - * (1) Everyone has the right to seek and to enjoy in other countries asylum from persecution. - * (2) This right may not be invoked in the case of prosecutions genuinely arising from non-political crimes or from acts contrary to the purposes and principles of the United Nations. - - -Article 15. - - * (1) Everyone has the right to a nationality. - * (2) No one shall be arbitrarily deprived of his nationality nor denied the right to change his nationality. - - -Article 16. - - * (1) Men and women of full age, without any limitation due to race, nationality or religion, have the right to marry and to found a family. They are entitled to equal rights as to marriage, during marriage and at its dissolution. - * (2) Marriage shall be entered into only with the free and full consent of the intending spouses. - * (3) The family is the natural and fundamental group unit of society and is entitled to protection by society and the State. - - -Article 17. - - * (1) Everyone has the right to own property alone as well as in association with others. - * (2) No one shall be arbitrarily deprived of his property. - - -Article 18. - - * Everyone has the right to freedom of thought, conscience and religion; this right includes freedom to change his religion or belief, and freedom, either alone or in community with others and in public or private, to manifest his religion or belief in teaching, practice, worship and observance. - - -Article 19. - - * Everyone has the right to freedom of opinion and expression; this right includes freedom to hold opinions without interference and to seek, receive and impart information and ideas through any media and regardless of frontiers. - - -Article 20. - - * (1) Everyone has the right to freedom of peaceful assembly and association. - * (2) No one may be compelled to belong to an association. - - -Article 21. - - * (1) Everyone has the right to take part in the government of his country, directly or through freely chosen representatives. - * (2) Everyone has the right of equal access to public service in his country. - * (3) The will of the people shall be the basis of the authority of government; this will shall be expressed in periodic and genuine elections which shall be by universal and equal suffrage and shall be held by secret vote or by equivalent free voting procedures. - - -Article 22. - - * Everyone, as a member of society, has the right to social security and is entitled to realization, through national effort and international co-operation and in accordance with the organization and resources of each State, of the economic, social and cultural rights indispensable for his dignity and the free development of his personality. - - -Article 23. - - * (1) Everyone has the right to work, to free choice of employment, to just and favourable conditions of work and to protection against unemployment. - * (2) Everyone, without any discrimination, has the right to equal pay for equal work. - * (3) Everyone who works has the right to just and favourable remuneration ensuring for himself and his family an existence worthy of human dignity, and supplemented, if necessary, by other means of social protection. - * (4) Everyone has the right to form and to join trade unions for the protection of his interests. - - -Article 24. - - * Everyone has the right to rest and leisure, including reasonable limitation of working hours and periodic holidays with pay. - - -Article 25. - - * (1) Everyone has the right to a standard of living adequate for the health and well-being of himself and of his family, including food, clothing, housing and medical care and necessary social services, and the right to security in the event of unemployment, sickness, disability, widowhood, old age or other lack of livelihood in circumstances beyond his control. - * (2) Motherhood and childhood are entitled to special care and assistance. All children, whether born in or out of wedlock, shall enjoy the same social protection. - - -Article 26. - - * (1) Everyone has the right to education. Education shall be free, at least in the elementary and fundamental stages. Elementary education shall be compulsory. Technical and professional education shall be made generally available and higher education shall be equally accessible to all on the basis of merit. - * (2) Education shall be directed to the full development of the human personality and to the strengthening of respect for human rights and fundamental freedoms. It shall promote understanding, tolerance and friendship among all nations, racial or religious groups, and shall further the activities of the United Nations for the maintenance of peace. - * (3) Parents have a prior right to choose the kind of education that shall be given to their children. - - -Article 27. - - * (1) Everyone has the right freely to participate in the cultural life of the community, to enjoy the arts and to share in scientific advancement and its benefits. - * (2) Everyone has the right to the protection of the moral and material interests resulting from any scientific, literary or artistic production of which he is the author. - - -Article 28. - - * Everyone is entitled to a social and international order in which the rights and freedoms set forth in this Declaration can be fully realized. - - -Article 29. - - * (1) Everyone has duties to the community in which alone the free and full development of his personality is possible. - * (2) In the exercise of his rights and freedoms, everyone shall be subject only to such limitations as are determined by law solely for the purpose of securing due recognition and respect for the rights and freedoms of others and of meeting the just requirements of morality, public order and the general welfare in a democratic society. - * (3) These rights and freedoms may in no case be exercised contrary to the purposes and principles of the United Nations. - - -Article 30. - - * Nothing in this Declaration may be interpreted as implying for any State, group or person any right to engage in any activity or to perform any act aimed at the destruction of any of the rights and freedoms set forth herein. - -The key is "KEY". diff --git a/packages/steg/60/Makefile b/packages/steg/60/Makefile deleted file mode 100644 index 894ce21..0000000 --- a/packages/steg/60/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -IMG = http://woozle.org/~neale/images/starwarsplan.jpg - -.DELETE_ON_ERROR: - -install: file.png - cp $< $(DESTDIR)/$$(md5sum file.png | awk '{print $$1;}') - -src.jpg: - wget -O $@ $(IMG) - -%.pbm: %.jpg - jpegtopnm $< > $@ - -alpha.pgm: src.pbm text.txt - echo "P5" > $@ - awk '(i++ == 1) { print; }' $< >> $@ - echo "255" >> $@ - m4 -DKEY="$(shell cat key)" text.txt | zip - - >> $@ - awk 'BEGIN{for(i=0;i<500000;i++)printf("\377");}' >> $@ - -file.png: alpha.pgm src.pbm - pnmtopng -alpha alpha.pgm src.pbm > $@ - -clean: - rm -f file.png alpha.pgm src.pbm diff --git a/packages/steg/60/key b/packages/steg/60/key deleted file mode 100644 index 2278f54..0000000 --- a/packages/steg/60/key +++ /dev/null @@ -1 +0,0 @@ -Share the software diff --git a/packages/steg/60/src.jpg b/packages/steg/60/src.jpg deleted file mode 100644 index fc60e2f..0000000 Binary files a/packages/steg/60/src.jpg and /dev/null differ diff --git a/packages/steg/60/summary b/packages/steg/60/summary deleted file mode 100644 index 9dbdfe2..0000000 --- a/packages/steg/60/summary +++ /dev/null @@ -1 +0,0 @@ -pngtopnm -alpha file.png | dd bs=1 skip=15 | zcat diff --git a/packages/steg/60/text.txt b/packages/steg/60/text.txt deleted file mode 100644 index 36355a7..0000000 --- a/packages/steg/60/text.txt +++ /dev/null @@ -1,187 +0,0 @@ -What's GNU? Gnu's Not Unix! - -GNU, which stands for Gnu's Not Unix, is the name for the complete Unix-compatible software system which I am writing so that I can give it away free to everyone who can use it. (1) Several other volunteers are helping me. Contributions of time, money, programs and equipment are greatly needed. - -So far we have an Emacs text editor with Lisp for writing editor commands, a source level debugger, a yacc-compatible parser generator, a linker, and around 35 utilities. A shell (command interpreter) is nearly completed. A new portable optimizing C compiler has compiled itself and may be released this year. An initial kernel exists but many more features are needed to emulate Unix. When the kernel and compiler are finished, it will be possible to distribute a GNU system suitable for program development. We will use TeX as our text formatter, but an nroff is being worked on. We will use the free, portable X window system as well. After this we will add a portable Common Lisp, an Empire game, a spreadsheet, and hundreds of other things, plus on-line documentation. We hope to supply, eventually, everything useful that normally comes with a Unix system, and more. - -GNU will be able to run Unix programs, but will not be identical to Unix. We will make all improvements that are convenient, based on our experience with other operating systems. In particular, we plan to have longer file names, file version numbers, a crashproof file system, file name completion perhaps, terminal-independent display support, and perhaps eventually a Lisp-based window system through which several Lisp programs and ordinary Unix programs can share a screen. Both C and Lisp will be available as system programming languages. We will try to support UUCP, MIT Chaosnet, and Internet protocols for communication. - -GNU is aimed initially at machines in the 68000/16000 class with virtual memory, because they are the easiest machines to make it run on. The extra effort to make it run on smaller machines will be left to someone who wants to use it on them. - -To avoid horrible confusion, please pronounce the `G' in the word `GNU' when it is the name of this project. -Why I Must Write GNU - -I consider that the golden rule requires that if I like a program I must share it with other people who like it. Software sellers want to divide the users and conquer them, making each user agree not to share with others. I refuse to break solidarity with other users in this way. I cannot in good conscience sign a nondisclosure agreement or a software license agreement. For years I worked within the Artificial Intelligence Lab to resist such tendencies and other inhospitalities, but eventually they had gone too far: I could not remain in an institution where such things are done for me against my will. - -So that I can continue to use computers without dishonor, I have decided to put together a sufficient body of free software so that I will be able to get along without any software that is not free. I have resigned from the AI lab to deny MIT any legal excuse to prevent me from giving GNU away. -Why GNU Will Be Compatible with Unix - -Unix is not my ideal system, but it is not too bad. The essential features of Unix seem to be good ones, and I think I can fill in what Unix lacks without spoiling them. And a system compatible with Unix would be convenient for many other people to adopt. -How GNU Will Be Available - -GNU is not in the public domain. Everyone will be permitted to modify and redistribute GNU, but no distributor will be allowed to restrict its further redistribution. That is to say, proprietary modifications will not be allowed. I want to make sure that all versions of GNU remain free. -Why Many Other Programmers Want to Help - -I have found many other programmers who are excited about GNU and want to help. - -Many programmers are unhappy about the commercialization of system software. It may enable them to make more money, but it requires them to feel in conflict with other programmers in general rather than feel as comrades. The fundamental act of friendship among programmers is the sharing of programs; marketing arrangements now typically used essentially forbid programmers to treat others as friends. The purchaser of software must choose between friendship and obeying the law. Naturally, many decide that friendship is more important. But those who believe in law often do not feel at ease with either choice. They become cynical and think that programming is just a way of making money. - -By working on and using GNU rather than proprietary programs, we can be hospitable to everyone and obey the law. In addition, GNU serves as an example to inspire and a banner to rally others to join us in sharing. This can give us a feeling of harmony which is impossible if we use software that is not free. For about half the programmers I talk to, this is an important happiness that money cannot replace. -How You Can Contribute - -I am asking computer manufacturers for donations of machines and money. I'm asking individuals for donations of programs and work. - -One consequence you can expect if you donate machines is that GNU will run on them at an early date. The machines should be complete, ready to use systems, approved for use in a residential area, and not in need of sophisticated cooling or power. - -I have found very many programmers eager to contribute part-time work for GNU. For most projects, such part-time distributed work would be very hard to coordinate; the independently-written parts would not work together. But for the particular task of replacing Unix, this problem is absent. A complete Unix system contains hundreds of utility programs, each of which is documented separately. Most interface specifications are fixed by Unix compatibility. If each contributor can write a compatible replacement for a single Unix utility, and make it work properly in place of the original on a Unix system, then these utilities will work right when put together. Even allowing for Murphy to create a few unexpected problems, assembling these components will be a feasible task. (The kernel will require closer communication and will be worked on by a small, tight group.) - -If I get donations of money, I may be able to hire a few people full or part time. The salary won't be high by programmers' standards, but I'm looking for people for whom building community spirit is as important as making money. I view this as a way of enabling dedicated people to devote their full energies to working on GNU by sparing them the need to make a living in another way. -Why All Computer Users Will Benefit - -Once GNU is written, everyone will be able to obtain good system software free, just like air. (2) - -This means much more than just saving everyone the price of a Unix license. It means that much wasteful duplication of system programming effort will be avoided. This effort can go instead into advancing the state of the art. - -Complete system sources will be available to everyone. As a result, a user who needs changes in the system will always be free to make them himself, or hire any available programmer or company to make them for him. Users will no longer be at the mercy of one programmer or company which owns the sources and is in sole position to make changes. - -Schools will be able to provide a much more educational environment by encouraging all students to study and improve the system code. Harvard's computer lab used to have the policy that no program could be installed on the system if its sources were not on public display, and upheld it by actually refusing to install certain programs. I was very much inspired by this. - -Finally, the overhead of considering who owns the system software and what one is or is not entitled to do with it will be lifted. - -Arrangements to make people pay for using a program, including licensing of copies, always incur a tremendous cost to society through the cumbersome mechanisms necessary to figure out how much (that is, which programs) a person must pay for. And only a police state can force everyone to obey them. Consider a space station where air must be manufactured at great cost: charging each breather per liter of air may be fair, but wearing the metered gas mask all day and all night is intolerable even if everyone can afford to pay the air bill. And the TV cameras everywhere to see if you ever take the mask off are outrageous. It's better to support the air plant with a head tax and chuck the masks. - -Copying all or parts of a program is as natural to a programmer as breathing, and as productive. It ought to be as free. -Some Easily Rebutted Objections to GNU's Goals - -"Nobody will use it if it is free, because that means they can't rely on any support." - -"You have to charge for the program to pay for providing the support." - -If people would rather pay for GNU plus service than get GNU free without service, a company to provide just service to people who have obtained GNU free ought to be profitable. (3) - -We must distinguish between support in the form of real programming work and mere handholding. The former is something one cannot rely on from a software vendor. If your problem is not shared by enough people, the vendor will tell you to get lost. - -If your business needs to be able to rely on support, the only way is to have all the necessary sources and tools. Then you can hire any available person to fix your problem; you are not at the mercy of any individual. With Unix, the price of sources puts this out of consideration for most businesses. With GNU this will be easy. It is still possible for there to be no available competent person, but this problem cannot be blamed on distribution arrangements. GNU does not eliminate all the world's problems, only some of them. - -Meanwhile, the users who know nothing about computers need handholding: doing things for them which they could easily do themselves but don't know how. - -Such services could be provided by companies that sell just hand-holding and repair service. If it is true that users would rather spend money and get a product with service, they will also be willing to buy the service having got the product free. The service companies will compete in quality and price; users will not be tied to any particular one. Meanwhile, those of us who don't need the service should be able to use the program without paying for the service. - -"You cannot reach many people without advertising, and you must charge for the program to support that." - -"It's no use advertising a program people can get free." - -There are various forms of free or very cheap publicity that can be used to inform numbers of computer users about something like GNU. But it may be true that one can reach more microcomputer users with advertising. If this is really so, a business which advertises the service of copying and mailing GNU for a fee ought to be successful enough to pay for its advertising and more. This way, only the users who benefit from the advertising pay for it. - -On the other hand, if many people get GNU from their friends, and such companies don't succeed, this will show that advertising was not really necessary to spread GNU. Why is it that free market advocates don't want to let the free market decide this? (4) - -"My company needs a proprietary operating system to get a competitive edge." - -GNU will remove operating system software from the realm of competition. You will not be able to get an edge in this area, but neither will your competitors be able to get an edge over you. You and they will compete in other areas, while benefiting mutually in this one. If your business is selling an operating system, you will not like GNU, but that's tough on you. If your business is something else, GNU can save you from being pushed into the expensive business of selling operating systems. - -I would like to see GNU development supported by gifts from many manufacturers and users, reducing the cost to each. (5) - -"Don't programmers deserve a reward for their creativity?" - -If anything deserves a reward, it is social contribution. Creativity can be a social contribution, but only in so far as society is free to use the results. If programmers deserve to be rewarded for creating innovative programs, by the same token they deserve to be punished if they restrict the use of these programs. - -"Shouldn't a programmer be able to ask for a reward for his creativity?" - -There is nothing wrong with wanting pay for work, or seeking to maximize one's income, as long as one does not use means that are destructive. But the means customary in the field of software today are based on destruction. - -Extracting money from users of a program by restricting their use of it is destructive because the restrictions reduce the amount and the ways that the program can be used. This reduces the amount of wealth that humanity derives from the program. When there is a deliberate choice to restrict, the harmful consequences are deliberate destruction. - -The reason a good citizen does not use such destructive means to become wealthier is that, if everyone did so, we would all become poorer from the mutual destructiveness. This is Kantian ethics; or, the Golden Rule. Since I do not like the consequences that result if everyone hoards information, I am required to consider it wrong for one to do so. Specifically, the desire to be rewarded for one's creativity does not justify depriving the world in general of all or part of that creativity. - -"Won't programmers starve?" - -I could answer that nobody is forced to be a programmer. Most of us cannot manage to get any money for standing on the street and making faces. But we are not, as a result, condemned to spend our lives standing on the street making faces, and starving. We do something else. - -But that is the wrong answer because it accepts the questioner's implicit assumption: that without ownership of software, programmers cannot possibly be paid a cent. Supposedly it is all or nothing. - -The real reason programmers will not starve is that it will still be possible for them to get paid for programming; just not paid as much as now. - -Restricting copying is not the only basis for business in software. It is the most common basis because it brings in the most money. If it were prohibited, or rejected by the customer, software business would move to other bases of organization which are now used less often. There are always numerous ways to organize any kind of business. - -Probably programming will not be as lucrative on the new basis as it is now. But that is not an argument against the change. It is not considered an injustice that sales clerks make the salaries that they now do. If programmers made the same, that would not be an injustice either. (In practice they would still make considerably more than that.) - -"Don't people have a right to control how their creativity is used?" - -"Control over the use of one's ideas" really constitutes control over other people's lives; and it is usually used to make their lives more difficult. - -People who have studied the issue of intellectual property rights (6) carefully (such as lawyers) say that there is no intrinsic right to intellectual property. The kinds of supposed intellectual property rights that the government recognizes were created by specific acts of legislation for specific purposes. - -For example, the patent system was established to encourage inventors to disclose the details of their inventions. Its purpose was to help society rather than to help inventors. At the time, the life span of 17 years for a patent was short compared with the rate of advance of the state of the art. Since patents are an issue only among manufacturers, for whom the cost and effort of a license agreement are small compared with setting up production, the patents often do not do much harm. They do not obstruct most individuals who use patented products. - -The idea of copyright did not exist in ancient times, when authors frequently copied other authors at length in works of non-fiction. This practice was useful, and is the only way many authors' works have survived even in part. The copyright system was created expressly for the purpose of encouraging authorship. In the domain for which it was invented--books, which could be copied economically only on a printing press--it did little harm, and did not obstruct most of the individuals who read the books. - -All intellectual property rights are just licenses granted by society because it was thought, rightly or wrongly, that society as a whole would benefit by granting them. But in any particular situation, we have to ask: are we really better off granting such license? What kind of act are we licensing a person to do? - -The case of programs today is very different from that of books a hundred years ago. The fact that the easiest way to copy a program is from one neighbor to another, the fact that a program has both source code and object code which are distinct, and the fact that a program is used rather than read and enjoyed, combine to create a situation in which a person who enforces a copyright is harming society as a whole both materially and spiritually; in which a person should not do so regardless of whether the law enables him to. - -"Competition makes things get done better." - -The paradigm of competition is a race: by rewarding the winner, we encourage everyone to run faster. When capitalism really works this way, it does a good job; but its defenders are wrong in assuming it always works this way. If the runners forget why the reward is offered and become intent on winning, no matter how, they may find other strategies--such as, attacking other runners. If the runners get into a fist fight, they will all finish late. - -Proprietary and secret software is the moral equivalent of runners in a fist fight. Sad to say, the only referee we've got does not seem to object to fights; he just regulates them ("For every ten yards you run, you can fire one shot"). He really ought to break them up, and penalize runners for even trying to fight. - -"Won't everyone stop programming without a monetary incentive?" - -Actually, many people will program with absolutely no monetary incentive. Programming has an irresistible fascination for some people, usually the people who are best at it. There is no shortage of professional musicians who keep at it even though they have no hope of making a living that way. - -But really this question, though commonly asked, is not appropriate to the situation. Pay for programmers will not disappear, only become less. So the right question is, will anyone program with a reduced monetary incentive? My experience shows that they will. - -For more than ten years, many of the world's best programmers worked at the Artificial Intelligence Lab for far less money than they could have had anywhere else. They got many kinds of non-monetary rewards: fame and appreciation, for example. And creativity is also fun, a reward in itself. - -Then most of them left when offered a chance to do the same interesting work for a lot of money. - -What the facts show is that people will program for reasons other than riches; but if given a chance to make a lot of money as well, they will come to expect and demand it. Low-paying organizations do poorly in competition with high-paying ones, but they do not have to do badly if the high-paying ones are banned. - -"We need the programmers desperately. If they demand that we stop helping our neighbors, we have to obey." - -You're never so desperate that you have to obey this sort of demand. Remember: millions for defense, but not a cent for tribute! - -"Programmers need to make a living somehow." - -In the short run, this is true. However, there are plenty of ways that programmers could make a living without selling the right to use a program. This way is customary now because it brings programmers and businessmen the most money, not because it is the only way to make a living. It is easy to find other ways if you want to find them. Here are a number of examples. - -A manufacturer introducing a new computer will pay for the porting of operating systems onto the new hardware. - -The sale of teaching, hand-holding and maintenance services could also employ programmers. - -People with new ideas could distribute programs as freeware, asking for donations from satisfied users, or selling hand-holding services. I have met people who are already working this way successfully. - -Users with related needs can form users' groups, and pay dues. A group would contract with programming companies to write programs that the group's members would like to use. - -All sorts of development can be funded with a Software Tax: - -Suppose everyone who buys a computer has to pay x percent of the price as a software tax. The government gives this to an agency like the NSF to spend on software development. - -But if the computer buyer makes a donation to software development himself, he can take a credit against the tax. He can donate to the project of his own choosing--often, chosen because he hopes to use the results when it is done. He can take a credit for any amount of donation up to the total tax he had to pay. - -The total tax rate could be decided by a vote of the payers of the tax, weighted according to the amount they will be taxed on. - -The consequences: - - * The computer-using community supports software development. - * This community decides what level of support is needed. - * Users who care which projects their share is spent on can choose this for themselves. - -In the long run, making programs free is a step toward the post-scarcity world, where nobody will have to work very hard just to make a living. People will be free to devote themselves to activities that are fun, such as programming, after spending the necessary ten hours a week on required tasks such as legislation, family counseling, robot repair and asteroid prospecting. There will be no need to be able to make a living from programming. - -We have already greatly reduced the amount of work that the whole society must do for its actual productivity, but only a little of this has translated itself into leisure for workers because much nonproductive activity is required to accompany productive activity. The main causes of this are bureaucracy and isometric struggles against competition. Free software will greatly reduce these drains in the area of software production. We must do this, in order for technical gains in productivity to translate into less work for us. -Footnotes - -(1) The wording here was careless. The intention was that nobody would have to pay for *permission* to use the GNU system. But the words don't make this clear, and people often interpret them as saying that copies of GNU should always be distributed at little or no charge. That was never the intent; later on, the manifesto mentions the possibility of companies providing the service of distribution for a profit. Subsequently I have learned to distinguish carefully between "free" in the sense of freedom and "free" in the sense of price. Free software is software that users have the freedom to distribute and change. Some users may obtain copies at no charge, while others pay to obtain copies--and if the funds help support improving the software, so much the better. The important thing is that everyone who has a copy has the freedom to cooperate with others in using it. - -(2) This is another place I failed to distinguish carefully between the two different meanings of "free". The statement as it stands is not false--you can get copies of GNU software at no charge, from your friends or over the net. But it does suggest the wrong idea. - -(3) Several such companies now exist. - -(4) The Free Software Foundation raises most of its funds from a distribution service, although it is a charity rather than a company. If *no one* chooses to obtain copies by ordering them from the FSF, it will be unable to do its work. But this does not mean that proprietary restrictions are justified to force every user to pay. If a small fraction of all the users order copies from the FSF, that is sufficient to keep the FSF afloat. So we ask users to choose to support us in this way. Have you done your part? - -(5) A group of computer companies recently pooled funds to support maintenance of the GNU C Compiler. - -(6) In the 80s I had not yet realized how confusing it was to speak of "the issue" of "intellectual property". That term is obviously biased; more subtle is the fact that it lumps together various disparate laws which raise very different issues. Nowadays I urge people to reject the term "intellectual property" entirely, lest it lead others to suppose this is one coherent issue. The way to be clear is to to discuss patents, copyrights, and trademarks separately. See the Confusing Words and Phrases that are Worth Avoiding page. - -The key is "KEY". diff --git a/packages/steg/70/key b/packages/steg/70/key deleted file mode 100644 index 06b1fb9..0000000 --- a/packages/steg/70/key +++ /dev/null @@ -1 +0,0 @@ -blowers-Merak-imaginary diff --git a/packages/steg/70/summary b/packages/steg/70/summary deleted file mode 100644 index 6884edf..0000000 --- a/packages/steg/70/summary +++ /dev/null @@ -1 +0,0 @@ -embedded in comment in .docx diff --git a/packages/steg/70/test2.docx b/packages/steg/70/test2.docx deleted file mode 100644 index 768ae8f..0000000 Binary files a/packages/steg/70/test2.docx and /dev/null differ diff --git a/packages/steg/steg.mk b/packages/steg/steg.mk deleted file mode 100644 index fbcad46..0000000 --- a/packages/steg/steg.mk +++ /dev/null @@ -1,9 +0,0 @@ -$(eval $(call STANDARD_PUZZLE, steg)) - -STEG_SUBMAKES = $(wildcard packages/steg/*/Makefile) -STEG_SUBCLEANS = $(patsubst %/Makefile, %/clean, $(STEG_SUBMAKES)) - -steg-clean: $(STEG_SUBCLEANS) - -packages/steg/%/clean: - $(MAKE) -C $(@D) clean diff --git a/packages/tanks/service/tanksd/run b/packages/tanks/service/tanksd/run index a0716de..c13e10f 100755 --- a/packages/tanks/service/tanksd/run +++ b/packages/tanks/service/tanksd/run @@ -7,4 +7,6 @@ ln -s /opt/tanks/html/* /var/www/tanks/ ln -sf summary.html /var/www/tanks/index.html install -o ctf -d /var/lib/ctf/tanks/players + +PATH=/bin:/opt/ctfbase/bin:/opt/tanks/bin; export PATH exec ./tanksd diff --git a/packages/tanks/service/tanksd/tanksd b/packages/tanks/service/tanksd/tanksd index 6dbb29f..8bef825 100755 --- a/packages/tanks/service/tanksd/tanksd +++ b/packages/tanks/service/tanksd/tanksd @@ -41,9 +41,7 @@ EOF while true; do # Make sure all teams exist - # XXX: pull this out into another daemon - wget -q -O - http://10.0.0.2/teams.txt | \ - KEY="Too much cheese." /opt/tokens/bin/arc4 | \ + KEY='Too much cheese.' arc4 < /var/lib/ctf/teams.txt | \ while read hash; do install -o ctf -d $p/$hash done @@ -102,20 +100,19 @@ EOF EOF # Get a token and add it to the redemption log - nc 10.0.0.2 1 -e /opt/tokens/bin/tokencli tanks ./category.key 3> $tfn + nc 10.0.0.2 1 -e /opt/ctfbase/bin/tokencli tanks ./category.key 3> $tfn k=$(cat $tfn) - /opt/tanks/bin/winners.awk $rfn | while read winner; do + winner.awk $rfn | while read winner; do hash=$(basename $winner) echo "Round $next winner: $hash" - - # Squirrel it away just in case - cat $tfn >> $winner/tokens - + # XXX: pull this out into another daemon # XXX: this puts the token in /proc/self/cmdline wget -q -s "http://10.0.0.2/claim.cgi?t=$hash&k=$k" done + ln -sf $fn $w/current.html + summary > $w/summary.html.$$ mv -f $w/summary.html.$$ $w/summary.html diff --git a/packages/tanks/tanks.mk b/packages/tanks/tanks.mk index 8156c68..9007d20 100644 --- a/packages/tanks/tanks.mk +++ b/packages/tanks/tanks.mk @@ -1,42 +1,40 @@ TANKS_PKGDIR = $(TARGET)/tanks +TANKS_CACHE = $(CACHE)/tanks.git TANKS_BUILDDIR = $(BUILD)/tanks -TANKS_TAR = $(CACHE)/tanks.tar.gz -TANKS_URL = "http://woozle.org/~neale/gitweb.cgi?p=ctanks;a=snapshot;h=master;sf=tgz" +TANKS_URL = "http://woozle.org/~neale/projects/ctanks" -$(TANKS_TAR): - @ mkdir -p $(@D) - wget -O $@ $(TANKS_URL) +$(TANKS_CACHE): + git clone --bare $(TANKS_URL) $@ -tanks-source: $(TANKS_BUILDDIR)/ctanks -$(TANKS_BUILDDIR)/ctanks: $(TANKS_TAR) - mkdir -p $(TANKS_BUILDDIR) - zcat $(TANKS_TAR) | (cd $(TANKS_BUILDDIR) && tar xf -) +tanks-source: $(TANKS_BUILDDIR) +$(TANKS_BUILDDIR): $(TANKS_CACHE) + git clone $< $@ tanks-build: tanks-source - $(MAKE) -C $(TANKS_BUILDDIR)/ctanks + $(MAKE) -C $(TANKS_BUILDDIR) # "html" instead of "www" to prevent automatic links tanks-install: tanks-build mkdir -p $(TANKS_PKGDIR)/bin - cp $(TANKS_BUILDDIR)/ctanks/forftanks $(TANKS_PKGDIR)/bin - cp $(TANKS_BUILDDIR)/ctanks/designer.cgi $(TANKS_PKGDIR)/bin - cp $(TANKS_BUILDDIR)/ctanks/rank.awk $(TANKS_PKGDIR)/bin - cp $(TANKS_BUILDDIR)/ctanks/winners.awk $(TANKS_PKGDIR)/bin + cp $(TANKS_BUILDDIR)/forftanks $(TANKS_PKGDIR)/bin + cp $(TANKS_BUILDDIR)/designer.cgi $(TANKS_PKGDIR)/bin + cp $(TANKS_BUILDDIR)/rank.awk $(TANKS_PKGDIR)/bin + cp $(TANKS_BUILDDIR)/winner.awk $(TANKS_PKGDIR)/bin $(call COPYTREE, packages/tanks/html, $(TANKS_PKGDIR)/html) cp packages/mcp/www/ctf.css $(TANKS_PKGDIR)/html/style.css cp packages/mcp/www/grunge.png $(TANKS_PKGDIR)/html - cp $(TANKS_BUILDDIR)/ctanks/nav.html.inc $(TANKS_PKGDIR)/html - cp $(TANKS_BUILDDIR)/ctanks/tanks.js $(TANKS_PKGDIR)/html - cp $(TANKS_BUILDDIR)/ctanks/forf.html $(TANKS_PKGDIR)/html - cp $(TANKS_BUILDDIR)/ctanks/intro.html $(TANKS_PKGDIR)/html - cp $(TANKS_BUILDDIR)/ctanks/figures.js $(TANKS_PKGDIR)/html - cp $(TANKS_BUILDDIR)/ctanks/procs.html $(TANKS_PKGDIR)/html - cp $(TANKS_BUILDDIR)/ctanks/designer.js $(TANKS_PKGDIR)/html + cp $(TANKS_BUILDDIR)/nav.html.inc $(TANKS_PKGDIR)/html + cp $(TANKS_BUILDDIR)/tanks.js $(TANKS_PKGDIR)/html + cp $(TANKS_BUILDDIR)/forf.html $(TANKS_PKGDIR)/html + cp $(TANKS_BUILDDIR)/intro.html $(TANKS_PKGDIR)/html + cp $(TANKS_BUILDDIR)/figures.js $(TANKS_PKGDIR)/html + cp $(TANKS_BUILDDIR)/procs.html $(TANKS_PKGDIR)/html + cp $(TANKS_BUILDDIR)/designer.js $(TANKS_PKGDIR)/html $(call COPYTREE, packages/tanks/service, $(TANKS_PKGDIR)/service) - $(call COPYTREE, $(TANKS_BUILDDIR)/ctanks/examples, $(TANKS_PKGDIR)/examples) + $(call COPYTREE, $(TANKS_BUILDDIR)/examples, $(TANKS_PKGDIR)/examples) tanks-clean: rm -rf $(TANKS_BUILDDIR) diff --git a/packages/webapp/10/,binary.png b/packages/webapp/10/,binary.png deleted file mode 100644 index 81cecbf..0000000 Binary files a/packages/webapp/10/,binary.png and /dev/null differ diff --git a/packages/webapp/10/,ctf.css b/packages/webapp/10/,ctf.css deleted file mode 100644 index 4f1b798..0000000 --- a/packages/webapp/10/,ctf.css +++ /dev/null @@ -1,62 +0,0 @@ -html,body { - height: 100%; - min-height: 100%; - background-color: #000000; - background-image: url(",binary.png"); - background-repeat: repeat; - margin: 0; - padding: 0; -} - -#wrapper { - min-height: 100%; - height: 100%; - width: 800px; - margin: 0 auto; - border-left: 2px solid #009900; - border-right: 2px solid #009900; - font: .9em monospace; - color: #009900; - padding: 0; - background: #000; -} - -#content { - padding: 2em 1.5em 2em 1.5em; -} - -#footer { - padding: 0; - margin: 0; - height: 2em; - line-height: 2em; - width: 800px; - text-align: center; -} - -input { - background-color: #222; - color: #fff; - border: 1px solid #009900; - padding: 1px 2px 1px 2px; -} - -h1,h2,h3,h4 { - padding-bottom: 5px; -} - -.vertsep { - width: 100%; - height: 1px; - padding: 0; - margin: 2em auto 2em auto; - border-bottom: 1px dotted #222; -} - -.error { - padding: 1em; - background: #fff; - color: red; - border: 1px solid red; - font-weight: bold; -} diff --git a/packages/webapp/10/1.cgi b/packages/webapp/10/1.cgi deleted file mode 100755 index 91ddffd..0000000 --- a/packages/webapp/10/1.cgi +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/python - -import cgi -import cgitb - -print 'Content-Type: text/html' -print '' - -print ''' - - - 1 - - - - -
-
-

Web Application Challenge 1

-

Through some manipulation or interpretation of this CGI script - and the HTML page(s) that it generates, a 10 character key can be - found.

-

Find the key!

-
- -
- - -''' - diff --git a/packages/webapp/10/key b/packages/webapp/10/key deleted file mode 100644 index c6f8085..0000000 --- a/packages/webapp/10/key +++ /dev/null @@ -1 +0,0 @@ -ktFfb8R1Bw diff --git a/packages/webapp/10/summary b/packages/webapp/10/summary deleted file mode 100644 index 1a32b86..0000000 --- a/packages/webapp/10/summary +++ /dev/null @@ -1 +0,0 @@ -the key is in the generated source. diff --git a/packages/webapp/20/,binary.png b/packages/webapp/20/,binary.png deleted file mode 120000 index 36053bd..0000000 --- a/packages/webapp/20/,binary.png +++ /dev/null @@ -1 +0,0 @@ -../10/,binary.png \ No newline at end of file diff --git a/packages/webapp/20/,ctf.css b/packages/webapp/20/,ctf.css deleted file mode 120000 index 19b2533..0000000 --- a/packages/webapp/20/,ctf.css +++ /dev/null @@ -1 +0,0 @@ -../10/,ctf.css \ No newline at end of file diff --git a/packages/webapp/20/2.cgi b/packages/webapp/20/2.cgi deleted file mode 100755 index 3e9b6cd..0000000 --- a/packages/webapp/20/2.cgi +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/python - -import cgi -import cgitb -cgitb.enable(context=10) - -fields = cgi.FieldStorage() - -print 'Content-Type: text/html' -print '' - - -print ''' - - - 2 - - - -
-
-

Web Application Challenge 2

-

Through some manipulation or interpretation of this CGI script - and the HTML page(s) that it generates, a 10 character key can be - found.

-

Find the key!

-

Question: How many geeks does it take to break a CGI?

-''' - -# key = uq4G4dXrpx -if (fields.has_key('num')): - print ''' -

You entered %d.

- ''' % int(fields['num'].value) - -print ''' -
- Enter an integer: -
-
- -
- - -''' - diff --git a/packages/webapp/20/key b/packages/webapp/20/key deleted file mode 100644 index f460886..0000000 --- a/packages/webapp/20/key +++ /dev/null @@ -1 +0,0 @@ -uq4G4dXrpx diff --git a/packages/webapp/20/summary b/packages/webapp/20/summary deleted file mode 100644 index b1c925e..0000000 --- a/packages/webapp/20/summary +++ /dev/null @@ -1 +0,0 @@ -enter a non-integer into form field and submit. the key is in the resulting traceback. diff --git a/packages/webapp/30/,binary.png b/packages/webapp/30/,binary.png deleted file mode 120000 index 36053bd..0000000 --- a/packages/webapp/30/,binary.png +++ /dev/null @@ -1 +0,0 @@ -../10/,binary.png \ No newline at end of file diff --git a/packages/webapp/30/,ctf.css b/packages/webapp/30/,ctf.css deleted file mode 120000 index 19b2533..0000000 --- a/packages/webapp/30/,ctf.css +++ /dev/null @@ -1 +0,0 @@ -../10/,ctf.css \ No newline at end of file diff --git a/packages/webapp/30/3.cgi b/packages/webapp/30/3.cgi deleted file mode 100755 index 63f495b..0000000 --- a/packages/webapp/30/3.cgi +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/python - -import cgi -import cgitb -cgitb.enable(context=10) - -fields = cgi.FieldStorage() - -print 'Content-Type: text/html' -print '' - - -print ''' - - - 3 - - - -
-
-

Web Application Challenge 3

-

Through some manipulation or interpretation of this CGI script - and the HTML page(s) that it generates, a 10 character key can be - found.

-

Find the key!

- -
-''' - -PRODUCT_NAME = "Monkey of some kind" - -def purchase_success(quantity): - print ''' -

Congratulations, your order for %d "%s" has been placed.

- ''' % (quantity, PRODUCT_NAME) - -# key = BRrHdtdADI -if fields.has_key('quantity') and fields.has_key('product') and fields['product'].value == PRODUCT_NAME: - product = fields['product'].value - quantity = int(fields['quantity'].value) - - purchase_success(quantity) -else: - print ''' - -

SALE: %s

-

Use the order form below to place an order.

- -
- How many would you like? - -

- - -
- ''' % (PRODUCT_NAME, PRODUCT_NAME) - -print ''' - -
- -
- - -''' - diff --git a/packages/webapp/30/key b/packages/webapp/30/key deleted file mode 100644 index 4023e13..0000000 --- a/packages/webapp/30/key +++ /dev/null @@ -1 +0,0 @@ -BRrHdtdADI diff --git a/packages/webapp/30/summary b/packages/webapp/30/summary deleted file mode 100644 index 9e01f5c..0000000 --- a/packages/webapp/30/summary +++ /dev/null @@ -1 +0,0 @@ -change the value in the GET request to a non-integer. the key is in the resulting traceback. diff --git a/packages/webapp/webapp.mk b/packages/webapp/webapp.mk deleted file mode 100644 index 131d8eb..0000000 --- a/packages/webapp/webapp.mk +++ /dev/null @@ -1 +0,0 @@ -$(eval $(call STANDARD_PUZZLE, webapp)) diff --git a/packages/wopr/service/wopr/run b/packages/wopr/service/wopr/run new file mode 100755 index 0000000..9cda2e0 --- /dev/null +++ b/packages/wopr/service/wopr/run @@ -0,0 +1,9 @@ +#! /bin/sh + +# Work around busybox bug +chmod a+r /dev/urandom + +mkdir -p /var/tmp/wopr +chown ctf /var/tmp/wopr + +exec inotifyd /bin/true $PWD diff --git a/packages/wopr/tokens.txt b/packages/wopr/tokens.txt new file mode 100644 index 0000000..54cc330 --- /dev/null +++ b/packages/wopr/tokens.txt @@ -0,0 +1,17 @@ +wopr:xipir-cavud-libux +wopr:xirak-zoses-gefox +wopr:xetil-rokak-robyx +wopr:xofic-belid-civox +wopr:xelev-lepur-pozyx +wopr:xocom-bysik-mapix +wopr:xoroc-hunaz-vyhux +wopr:xigeh-lydut-vinax +wopr:xipar-canit-zimyx +wopr:xocec-lifoz-gasyx +wopr:xubif-hikig-mocox +wopr:xoroz-hymaz-fivex +wopr:xufov-sugig-zecox +wopr:xocem-dabal-fisux +wopr:xufez-dofas-tyvyx +wopr:xosov-tenoh-nebox +wopr:xopev-zihuk-hubyx diff --git a/packages/wopr/wopr.mk b/packages/wopr/wopr.mk new file mode 100644 index 0000000..9e453f9 --- /dev/null +++ b/packages/wopr/wopr.mk @@ -0,0 +1,15 @@ +WOPR_PKGDIR = $(TARGET)/wopr + +wopr-source: +wopr-build: + +wopr-install: packages/wopr/tokens.txt + mkdir -p $(WOPR_PKGDIR) + cp packages/wopr/tokens.txt $(WOPR_PKGDIR)/ + + $(call COPYTREE, packages/wopr/www, $(WOPR_PKGDIR)/www) + $(call COPYTREE, packages/wopr/service, $(WOPR_PKGDIR)/service) + +wopr-clean: + +PACKAGES += wopr diff --git a/packages/wopr/www/wopr/index.html b/packages/wopr/www/wopr/index.html new file mode 100644 index 0000000..19d5190 --- /dev/null +++ b/packages/wopr/www/wopr/index.html @@ -0,0 +1,14 @@ + + + WOPR connection + + + + +
Connecting...
+
+ + +
+ + diff --git a/packages/wopr/www/wopr/wopr.cgi b/packages/wopr/www/wopr/wopr.cgi new file mode 100755 index 0000000..1a9e382 --- /dev/null +++ b/packages/wopr/www/wopr/wopr.cgi @@ -0,0 +1,825 @@ +#! /usr/bin/lua + +require("lfs") + +BASEDIR = "/var/tmp/wopr" +POST_MAX = 512 + +method = os.getenv("REQUEST_METHOD") +if (method == "POST") then + local CL = tonumber(os.getenv("CONTENT_LENGTH")) or 0 + if (CL > POST_MAX) then + CL = POST_MAX + end + function getc() + if (CL > 0) then + CL = CL - 1 + return io.read(1) + else + return nil + end + end +elseif (method == "GET") then + local query = os.getenv("QUERY_STRING") or "" + local query_pos = 0 + local query_len = string.len(query) + if (query_len > POST_MAX) then + query_len = POST_MAX + end + function getc() + if (query_pos < query_len) then + query_pos = query_pos + 1 + return string.sub(query, query_pos, query_pos) + else + return nil + end + end +else + print("405 Method not allowed") + print("Allow: GET POST") + print("Content-Type: text/plain") + print() + print("I only do GET and POST.") + os.exit(0) +end + +function read_hex() + local a = getc() or 0 + local b = getc() or 0 + + return string.char(tonumber(a, 16)*16 + tonumber(b, 16)) +end + +function cgi_item() + local val = "" + + while (true) do + local c = getc() + if ((c == nil) or (c == "=") or (c == "&")) then + return val + elseif (c == "%") then + c = read_hex() + elseif (c == "+") then + c = " " + end + val = val .. c + end +end + +function escape(s) + s = string.gsub(s, "&", "&") + s = string.gsub(s, "<", "<") + s = string.gsub(s, ">", ">") + return s +end + +f = {} +while (true) do + local key = cgi_item() + local val = cgi_item() + + if (key == "") then + break + end + f[key] = val +end + + + +-- lua doesn't seed its PRNG and provides nothing other than +-- time in seconds. If you're on Windows, go fish. +do + local seed = 0 + r = io.open("/dev/urandom") or io.open("/dev/random") + for i = 1, 4 do + seed = seed*256 + string.byte(r:read(1)) + end + io.close(r) + math.randomseed(seed) +end + +-- Get or create Session ID +sid = f["s"] or "" +if (sid == "") then + sid = string.format("%08x.%04x", os.time(), math.random(65535)) +end +dirname = BASEDIR .. "/" .. sid + +-- Send back a page +function reply(text, prompt, ...) + print("Content-type: text/xml") + print() + print("") + print(" " .. sid .. "") + print(" " .. escape(text or "") .. "") + print(" " .. escape(prompt or ">") .. "") + if (arg[1]) then + print(" " .. escape(arg[1]) .. "") + end + print("") + os.exit(0) +end + + + + +-- +-- Database functions +-- + +function get(key, ...) + local fn = string.format("%s/%s", dirname, key) + local f = io.open(fn) + if (not f) then + return arg[1] + else + local ret = f:read(4000) or "" + f:close() + return ret + end +end + +function set(key, ...) + local fn = string.format("%s/%s", dirname, key) + local f + + -- Lazy mkdir to save a few inodes + lfs.mkdir(dirname) + + f = io.open(fn, "w") + if not f then + error("Unable to write " .. fn) + end + f:write(arg[1] or "") + f:close() +end + +function del(key) + local fn = string.format("%s/%s", dirname, key) + os.remove(fn) +end + + +-- +-- A string splitter +-- +function string:split(...) + local sep = arg[1] or " " + local ret = {} + local start = 1 + + while true do + local first, last = self:find(sep, start) + if not first then + break + end + table.insert(ret, self:sub(start, first - 1)) + start = last + 1 + end + table.insert(ret, self:sub(start)) + + return ret +end + + +------------------------------------- +-- +-- WOPR-specific stuff +-- + +-- A list of all hosts, by name +hosts_by_name = {} + + +Host = {} + +function Host:new(name, ...) + local o = {} + setmetatable(o, self) + self.__index = self + o.name = name + o.prompt = (arg[1] or ">") + o.obuf = {} + o.history = {} + + hosts_by_name[name] = o + return o +end + +function Host:add_commands(t) + local cmds = {} + local k, v + + for k,v in pairs(self.commands) do + cmds[k] = v + end + for k,v in pairs(t) do + cmds[k] = v + end + self.commands = cmds +end + +function Host:get(key, ...) + return get(self.name .. "." .. key, arg[1]) +end + +function Host:set(key, ...) + return set(self.name .. "." .. key, arg[1]) +end + +function Host:del(key) + return del(self.name .. "." .. key) +end + +function Host:writeln(...) + table.insert(self.obuf, (arg[1] or "")) +end + +function Host:login(...) + set("host", self.name) + reply(arg[1] or self.motd, self.prompt) +end + +function Host:cmd_help() + local k, v + self:writeln("Available commands:") + for k,v in pairs(self.commands) do + if (v[1]) then + local s = string.format("%-15s %s", k, v[1]) + self:writeln(s) + end + end +end + +function Host:cmd_history() + local k, v + for k,v in ipairs(self.history) do + self:writeln(string.format("%5d %s", k, v)) + end +end + +-- Call self:handle(req) and return what to send back +function Host:handle_request(req) + local t = "" + local k, v + + self:handle(req) + + for k,v in ipairs(self.obuf) do + t = t .. v .. "\n"; + end + reply(t, self.prompt) +end + +-- Handle a request +function Host:handle(req) + self:do_cmd(req) +end + +-- Run a command or return an error +function Host:do_cmd(req) + local argv = req:split() + local cmd = self.commands[argv[1]:lower()] + + if (argv[1] == "") then + return + end + + -- First, update history + if self.history then + local h = self:get("history") + if h then + self.history = h:split("\n") + end + table.insert(self.history, req) + self:set("history", table.concat(self.history, "\n")) + end + + -- Now run the command + if cmd then + if cmd[2] then + cmd[2](self, argv) + else + self:writeln("ERROR: no function defined") + end + else + self:writeln("Unknown command") + end +end + +-- List of commands, with help string (nil hides from help) +Host.commands = { + ["?"] = {nil, Host.cmd_help}, + ["help"] = {"List available commands", Host.cmd_help}, + ["history"] = {"Display command history", Host.cmd_history}, +} + + +-- +-- Login screen +-- +Login = Host:new("login", "Enter 12-digit access code:") +Login.motd = [[ + +┃┃┃┏━┃┏━┃┏━┃ +┃┃┃┃ ┃┏━┛┏┏┛ +━━┛━━┛┛ ┛ ┛ 3.0 +War Operations Plan Response +New Khavistan Ministry of Ministries + +This computer system is the property of the government of New Khavistan. +It is for authorized use only. Any or all uses of this system and all +files on this system are monitored and logged. By using this system, +the user consents to such monitoring. Users who do not consent to such +monitoring will be dispatched with the New Khavistan fiber-optic bullet +delivery system. + +Users should have no expectation of privacy as to any communication on +or information stored within the system, including but not limited to +information stored within your brain, DNA, government tooth implants, +or tinfoil hat. + +Unauthorized or improper use of this system may result in gnomes pooping +in your underpants. By continuing to use this system, you indicate your +awareness of and consent to these terms and conditions of use. LOG OFF +IMMEDIATELY if you do not agree to the conditions stated in this +warning. + +]] + +function Login:handle(req) + if (string.len(req) > 20) then + -- Log them in to wopr + Wopr:login([[ +FLAGRANT SYSTEM ERROR: Memory segmentation violation +Returning to command subsystem [wopr:xipir-cavud-libux] +]]) + else + if (req == "joshua") then + self:writeln("wopr:xirak-zoses-gefox") + elseif (req ~= "") then + self:writeln("Incorrect code") + end + end +end + +function Login:login(...) + -- Since login is the default, we can *unset* host. + -- This has the nice property of not allocating any + -- storage for people who never make it past the front door. + del("host") + reply(arg[1] or self.motd, self.prompt) +end + + +-- +-- Bulletin Board (bb) subsystem +-- +Bb = Host:new("bb", "[N]ext, (P)rev, (Q)uit, msg#:") +Bb.posts = {[[ +WOPR operational! ===== administrator ===== Aug 16 2003 + +Welcome to WOPR system. Authorized by FLD-853, system will be linked +with all critical New Khavistan technical infrastructure. Mandated by +FLD 897 will be full compliance by 2007. Waiting time, following +services may be used: telecommunications, traffic control devices, +payroll, and strategic missile offensive control. + +Finding any problems with this system, simply fill and submit form +CPW-190. Royal Ministry Of Technology processes all properly-reported +issues with utmost haste and concern. + +::: FLD-711 Restricted Distribution ::: +]], +[[ +Clock problem ===== administrator ===== Sep 35, 1568 + +Royal Ministry Of Technology is aware of recent problems with system +time. We strive to rectify this problem. Thank you for patience with +issue. + +::: FLD-711 Restricted Distribution ::: +]], +[[ +System Overhaul ===== Krdznyklyk ===== Dec 12, 2003 + +The entire system is being overhauled to fix security holes exposed by a +recent attack on our systems. Your presence is requested at an all-hands +briefing to roll out the new system this afternoon at 1500 hrs. +]], +[[ +Drill ===== wopr:xofic-belid-civox ===== Dec 15, 2003 + +There will be a drill to test our combat readiness today. Make sure you +are familiar with the proper procedures to complete the task. Follow +proper drilling procedures. +]], +[[ +Passwords ===== administrator ===== Jan 12, 2004 + +All passwords have been modified to end with character "!", to bring +WOPR compliant with Fearless Leader Directive 1138 "standards for secure +passwords". For example, a password once "cascade", is becoming +"cascade!". + +Recent change improves important system resilience against attack from +enemies. Your gracious understanding and support of New Khavistan is +appreciated. + +::: FLD-711 Restricted Distribution ::: +]], +[[ +ICBM control ===== administrator ==== Feb 2, 2004 + +Because of new security protocols in FLD-1205, you must now type, +"override on" to get access to ICBM commands. + +::: FLD-711 Restricted Distribution ::: +]], +[[ +attcon command ===== administrator ===== Feb 14, 2004 + +The WOPR system has been updated to include a new command! + +Purpose: To make it possible to change the attack condition level for +all troops in the New Khavistan republic, simple and unified. + +Subsystems Affected: Small subset of WOPR subsystems + +Usage: Type "attcon" then number pertaining to correct readiness level +(1-5). Also can get attcon level by only typing attcon. + +Expected loss of service: 30 min while WOPR system recycles + +::: FLD-711 Restricted Distribution ::: +]], +[[ +Syistem Adimn ===== ACTION REQUIRED ==== 0573, Dec 32 2004 + +ACTION REQUIRED + +Dear empyoyee, + +We have an important message for you form your commanding +officer. Please click here to veiw the messsage. +]], +[[ +Alert: message attack ===== administrator ===== Jun 20, 2004 + +NOT TO CLICK ON LINK. + +Perverted computer attackers from libellous Republic of Dweezil break +WOPR system security and try to subvert glorious nation with tricksy +electronic link. NT TO CLICK. + +New Khavistan secret infantry being dispatched to deal with computer +threat from libellous Republic of Dweezil. +]], +[[ +Security Breach ===== administrator ===== Jun 21, 2004 + +Who click link? Now is time to come forward and accept judicious +punishment from Fearless Leader. +]], +[[ +Mandatory Training ===== administrator ===== Jun 24, 2004 + +Phishing awareness training today at 1500 hrs +]], +[[ +FLD-1327 ===== administrator ===== Aug 10, 2004 + +FLD-1327 extends target date for full WOPR integration until June 22, +2058. Meantime WOPR subsystem continue to operate. + +::: FLD-711 Restricted Distribution ::: +]], + +-- Message ID #-5: a snippet of the WOPR command program +[-1] = "^A^@^@<8B>Uwopr:xetil-rokak-robyx^OMЉËEօuG<84>", +[-2] = "^A<90><8D>t&^@@<8D>v^@<83>", +[-3] = "[^_]Ð<8D>t&^@<89>^\$Ѐ^@^@<8B>=^E^H<80>;/<89>", +[-4] = "<85>^?׃^T1[]Ít&^@^A^@^@^@븋C^D<89>", +[-5] = [[ +^@^@^@^@^@^@on", n] => set attcon = n + msg "attcon set to" n +["attcon enid"] => set_launch_trigger(1) +["attcon dennis"] => set_launch_trigger(0) +["bb"] => call_subsys bb +["test"] => msg "test out^D$<9F><9B>^E^Hb<84>A<[,[^_]WVS1 +]], +[-6] = "^@^@1^E^@^@2^E^@^@3^E^@^@4", +[-7] = "^^F^@^@!^F^@^@$^F^@^@&^F^@^@)", +[-8] = "^@", +} + +Bb.motd = [[ + WOPR Message Board +==================================================== + [N]ext message + (P)revious message + (Q)uit + Enter message number to jump to that message +]] + +function Bb:read(inc) + local msgid = tonumber(self:get("msgid")) or 0 + msgid = msgid + inc + self:jump(msgid) +end + +function Bb:jump(msgid) + self:set("msgid", msgid) + + self:writeln("::::::::::::::::::::::::: Message #" .. tostring(msgid)) + self:writeln() + self:writeln(self.posts[msgid]) +end + +function Bb:do_cmd(req) + local n = tonumber(req) + if (req == "") then + self:cmd_next() + elseif n then + self:jump(n) + else + Host.do_cmd(self, req) + end +end + +function Bb:cmd_next(argv) + self:read(1) +end + +function Bb:cmd_prev(argv) + self:read(-1) +end + +function Bb:cmd_help(argv) + self:writeln(self.motd) +end + +function Bb:cmd_quit(argv) + Wopr:login() +end + +Bb.commands = { + ["?"] = {nil, Bb.cmd_help}, + ["n"] = {nil, Bb.cmd_next}, + ["p"] = {nil, Bb.cmd_prev}, + ["q"] = {nil, Bb.cmd_quit}, +} + +-- +-- The WOPR host +-- +Wopr = Host:new("wopr", "WOPR%") +Wopr.history = { + 'subsys comm', + 'wopr:xopev-zihuk-hubyx', + 'exit', + 'subsys comm', + 'bb', + 'subsys comm', + 'exit', + 'bb', + 'subsys comm', + 'exit', + 'hlep', + 'help', + 'bb', + 'help', + 'subsys comm', + 'exit', +} + +Wopr.motd = "" + +function Wopr:cmd_subsys(argv) + local sys = argv[2] + + if not sys then + self:writeln("Usage: subsys SYSTEM") + elseif sys == "?" then + local k, v + for k,v in pairs(hosts_by_name) do + self:writeln(k) + end + else + h = hosts_by_name[sys] + if not h then + self:writeln("No such subsystem (? to list)") + else + h:login() + end + end +end + +function Wopr:cmd_bb(argv) + Bb:login() +end + +function Wopr:attcon() + return tonumber(self:get("attcon") or 5) +end + +-- This command should feel really shoddy: it was written +-- in-house by the New Khavistan Ministry of Technology. +function Wopr:cmd_attcon(argv) + if argv[2] == "enid" then + self:writeln("[[[ LAUNCH TRIGGER ENABLED ]]]") + self:writeln("wopr:xelev-lepur-pozyx") + self:set("launch") + elseif argv[2] == "dennis" then + self:writeln("[[[ LAUNCH TRIGGER DISABLED ]]]") + self:del("launch") + elseif argv[2] then + local v = tonumber(argv[2]) or 5 + self:set("attcon", v) + self:writeln("attcon set to " .. tostring(v)) + else + self:writeln(tostring(self:attcon())) + end +end + +-- Some test code they didn't remove +function Wopr:cmd_test(argv) + self:writeln("test output:") + self:writeln(" EIGEN58") + self:writeln(" sub_malarkey reached") + self:writeln(" DEBUG:453:wopr:xocom-bysik-mapix") + self:writeln("$$END") +end + +Wopr:add_commands{ + ["subsys"] = {"Connect to subsystem", Wopr.cmd_subsys}, + ["bb"] = {"Read bulletin board", Wopr.cmd_bb}, + ["attcon"] = {"[Place command description here]", Wopr.cmd_attcon}, + ["test"] = {nil, Wopr.cmd_test}, +} + +--hosts["wopr"] = Wopr + +-- +-- Communications subsystem +-- +Comm = Host:new("comm", "COMSYS>") + +Comm.motd = [[ +_____IMPORTANT_____ + +IBM 3750 used for main switchboard in captiol building is currently +running at half capacity until relays arrive. Please to remember not +patching trunks to switch! +]] + +function Comm:cmd_exit(argv) + Wopr:login() +end + +function Comm:cmd_status(argv) + self:writeln("[Not yet implemented]") + self:writeln("wopr:xoroc-hunaz-vyhux") +end + +Comm:add_commands{ + ["status"] = {"Display phone system status", Comm.cmd_status}, + ["exit"] = {"Exit this subsystem", Comm.cmd_exit}, +} + + +-- +-- Missile subsystem +-- +Smoc = Host:new("smoc", "[SMOC]") +Smoc.motd = [[ + +_______________VERY IMPORTANT READ_______________ + +Ministry of Weapons replacing all peanut brittle warheads with bubble +gum, as mandated by FLD-1492 "Fearless Grandson Peanut Allergy". Launch +capacity will be reduced until conversions are complete. + +::: FLD-711 Restricted Distribution ::: wopr:xigeh-lydut-vinax +]] +Smoc.authcode = "CPE-1704-TKS" +Smoc.inventory = { + "ready", "offline", "offline", "ready", + "offline", "offline", "offline", "offline", + "offline", "offline", "FileNotFound", "ready", + [-1] = "program_invocation_short_name^@realm^@", + [-2] = "^@^@^@^@^@^@^@^@^@^R^@^@^@3", + [-3] = "%L^D^Hhx^@^@^@", + [-4] = "^D^H^G^P^@^@P", + [-5] = "^P<8B>=^D^H", + [-6] = "WVS<83>\<8B>E^L<8B><8B>U^P", + [-7] = "Y^@^@" .. Smoc.authcode .. "^@get_launch_trigger^@", + [-8] = "^@", + [-9] = "^@", + [-10] = "^@", + [-11] = "^@wopr:xipar-canit-zimyx^@", + [-12] = "^@", + [-13] = "^@", + [-14] = "^@", + [-15] = "^@", + [-16] = "^@", +} + +function Smoc:login() + if self:get("nuked") then + Wopr:login("*** LINK DOWN\n*** CONNECTION REFUSED") + else + Host.login(self) + end +end + +function Smoc:cmd_exit(argv) + Wopr:login() +end + +function Smoc:cmd_status(argv) + local n = tonumber(argv[2]) + if not n then + local k, v, max + local ready = 0 + for k,v in ipairs(self.inventory) do + if (v == "ready") then + ready = ready + 1 + end + max = k + end + self:writeln(("%d total, %d ready"):format(max, ready)) + self:writeln("Use \"status #\" to check status of individual missiles") + else + self:writeln(("---- Missile #%d Summary ----"):format(n)) + self:writeln("Type: SS-256 SCUMM") + self:writeln("Location: Fearless Missile Silo #1 (-44.76,-120.66)") + self:writeln("Status: " .. (self.inventory[n] or "(null)")) + end +end + +function Smoc:cmd_authorize(argv) + if not Wopr:get("launch") then + self:writeln("ERROR: Launch trigger disabled.") + elseif (argv[2] ~= self.authcode) then + self:writeln("Invalid authorization code.") + else + self:writeln("Authorization code accepted.") + self:writeln("wopr:xocec-lifoz-gasyx") + self:set("auth") + end +end + +function Smoc:cmd_launch(argv) + local n = tonumber(argv[2]) + local lat = tonumber(argv[3]) + local lon = tonumber(argv[4]) + + if Wopr:attcon() > 1 then + self:writeln("ERROR: Missiles may only be launched during times of war.") + elseif not self:get("auth") then + self:writeln("ERROR: Not authorized") + elseif (not n) then + self:writeln("Usage: launch # LAT LONG") + elseif (not lat) or (not lon) then + self:writeln("ERROR: Invalid coordinates supplied") + elseif (self.inventory[n] == "offline") then + self:writeln("ERROR: Missile currently off-line") + elseif (n < 1) then + self:writeln("ERROR: No such missile") + else + self:writeln(("Launching to (%f,%f)..."):format(lat, lon)) + self:writeln("wopr:xubif-hikig-mocox") + if (lat ~= -44.76) or (lon ~= -120.66) then + self:writeln("ERROR: No propulsion system attached") + elseif (self.inventory[n] ~= "FileNotFound") then + self:writeln("ERROR: Triggering device not installed") + else + self:set("nuked") + Wopr:login("Detonating warhead...\nwopr:xoroz-hymaz-fivex wopr:xufov-sugig-zecox wopr:xocem-dabal-fisux wopr:xufez-dofas-tyvyx\s*** CONNECTION TERMINATED") + end + end +end + +Smoc:add_commands{ + ["status"] = {"Check missile status", Smoc.cmd_status}, + ["launch"] = {"Launch missile", Smoc.cmd_launch}, + ["authorize"] = {"Set authorization code", Smoc.cmd_authorize}, + ["exit"] = {"Exit to WOPR", Smoc.cmd_exit}, +} + + +function main() + if (not f["s"]) or (f["s"] == "") then + Login:login() + else + local h = hosts_by_name[get("host")] or Login + txt, prompt = h:handle_request(f["v"] or "") + end +end + +function err(msg) + reply("", "A>", msg .. " wopr:xosov-tenoh-nebox\n\n" .. debug.traceback()) +end + +xpcall(main, err) diff --git a/packages/wopr/www/wopr/wopr.css b/packages/wopr/www/wopr/wopr.css new file mode 100644 index 0000000..76afe27 --- /dev/null +++ b/packages/wopr/www/wopr/wopr.css @@ -0,0 +1,32 @@ +body { + background: #000; + color: #0f0; + font-family: monospace; + margin: 0; +} +pre { + margin: 0; + padding: 0; +} +form { + padding: 0; + margin: 0; +} +input { + font-family: monospace; + font-weight: normal; + font-size: inherit; + background-color: #222; + color: #0f0; + border: 0; + margin: 0; + padding: 0; + width: 70%; +} +input:focus { + background-color: #000; +} +.error { + background-color: #f00; + color: #000; +} \ No newline at end of file diff --git a/packages/wopr/www/wopr/wopr.js b/packages/wopr/www/wopr/wopr.js new file mode 100755 index 0000000..b8948d0 --- /dev/null +++ b/packages/wopr/www/wopr/wopr.js @@ -0,0 +1,74 @@ +sessid = ""; + +function go() { + input = document.getElementById("input"); + output = document.getElementById("output"); + prompt = document.getElementById("prompt"); + val = input.value; + + r = new XMLHttpRequest(); + + function statechange() { + if (r.readyState == 4) { + doc = r.responseXML; + resp_txt = doc.getElementsByTagName("response")[0].textContent; + prompt_txt = doc.getElementsByTagName("prompt")[0].textContent; + error = doc.getElementsByTagName("error")[0]; + + if (! sessid) { + sessid = doc.getElementsByTagName("sessionid")[0].textContent; + output.textContent += "Connected with session ID " + sessid + ".\n"; + } + + if (resp_txt) { + if (resp_txt.charAt(resp_txt.length-1) != "\n") { + resp_txt += "\n"; + } + output.textContent += resp_txt; + } + if (error) { + e = document.createElement('div'); + e.className = 'error'; + e.textContent = error.textContent + "\n"; + output.appendChild(e); + } + if (prompt_txt) { + prompt.textContent = prompt_txt; + } + + prompt.style.display = "inline"; + } + document.body.scrollTop = document.body.scrollHeight; + input.focus(); + } + + // Calculate this before screwing with stuff + data = ("s=" + sessid + '&v=' + escape(val)); + + // Add prompt and input text to output. This instantly displays the + // text so you know you hit enter, while providing a slight delay in + // results, like the server is "working on" the request. + output.textContent += prompt.textContent + " " + val + "\n"; + input.value = ""; + input.focus(); // Maybe prevent color flashes + + setTimeout(statechange, 1); + if (val == "@sessid") { + output.textContent += sessid + "\n"; + } else if (val[0] == ":") { + code = val.substr(1, val.length - 1); + output.textContent += "==> " + eval(code) + "\n"; + } else { + prompt.style.display = "none"; + r.onreadystatechange = statechange; + r.open("POST", "wopr.cgi"); + + r.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + r.setRequestHeader("Content-length", data.length); + r.send(data); + } + + return false; +} + +window.onload = go; diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..da8b6ec --- /dev/null +++ b/src/Makefile @@ -0,0 +1,8 @@ +TARGETS = bubblebabble arc4 + +all: $(TARGETS) + +arc4: CFLAGS=-DARC4_MAIN + +clean: + rm -f *.o $(TARGETS) \ No newline at end of file diff --git a/src/arc4.c b/src/arc4.c new file mode 100644 index 0000000..471b503 --- /dev/null +++ b/src/arc4.c @@ -0,0 +1,230 @@ +#include +#include +#include +#include +#include "arc4.h" + +#define swap(a, b) do {uint8_t _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); + } +} + +/* Create a nonce as an arc4 stream with key=seed */ +void +arc4_nonce(uint8_t *nonce, size_t noncelen, + void *seed, size_t seedlen) +{ + struct arc4_ctx ctx; + int i; + + arc4_init(&ctx, seed, seedlen); + for (i = 0; i < noncelen; i += 1) { + nonce[i] = arc4_out(&ctx); + } +} + + +/*************************************************** + * + * Psuedo Random Number Generation + * + */ +static struct arc4_ctx prng_ctx; +static int prng_initialized = 0; + +void +arc4_rand_seed(const uint8_t *seed, size_t seedlen) +{ + arc4_init(&prng_ctx, seed, seedlen); + prng_initialized = 1; +} + +static void +arc4_rand_autoseed() +{ + if (! prng_initialized) { + uint8_t key[ARC4_KEYLEN]; + FILE *urandom; + + /* Open /dev/urandom or die trying */ + urandom = fopen("/dev/urandom", "r"); + if (! urandom) { + perror("Opening /dev/urandom"); + abort(); + } + setbuf(urandom, NULL); + fread(&key, sizeof(key), 1, urandom); + fclose(urandom); + + arc4_rand_seed(key, sizeof(key)); + } +} + +uint8_t +arc4_rand8() +{ + arc4_rand_autoseed(); + return arc4_out(&prng_ctx); +} + +uint32_t +arc4_rand32() +{ + arc4_rand_autoseed(); + return ((arc4_out(&prng_ctx) << 0) | + (arc4_out(&prng_ctx) << 8) | + (arc4_out(&prng_ctx) << 16) | + (arc4_out(&prng_ctx) << 24)); +} + +/***************************************** + * + * Stream operations + * + */ + +ssize_t +arc4_encrypt_stream(FILE *out, FILE *in, + const uint8_t *key, size_t keylen) +{ + struct arc4_ctx ctx; + uint32_t seed = arc4_rand32(); + uint8_t nonce[ARC4_KEYLEN]; + ssize_t written = 0; + int i; + + fwrite("arc4", 4, 1, out); + fwrite(&seed, sizeof(seed), 1, out); + + arc4_nonce(nonce, sizeof(nonce), &seed, sizeof(seed)); + for (i = 0; i < keylen; i += 1) { + nonce[i] ^= key[i]; + } + arc4_init(&ctx, nonce, sizeof(nonce)); + + while (1) { + int c = fgetc(in); + + if (EOF == c) break; + fputc((uint8_t)c ^ arc4_out(&ctx), out); + written += 1; + } + + return written; +} + +int +arc4_decrypt_stream(FILE *out, FILE *in, + const uint8_t *key, size_t keylen) +{ + struct arc4_ctx ctx; + uint32_t seed; + uint8_t nonce[ARC4_KEYLEN]; + ssize_t written = 0; + char sig[4]; + int i; + + fread(&sig, sizeof(sig), 1, in); + if (memcmp(sig, "arc4", 4)) { + return -1; + } + fread(&seed, sizeof(seed), 1, in); + + arc4_nonce(nonce, sizeof(nonce), &seed, sizeof(seed)); + for (i = 0; i < keylen; i += 1) { + nonce[i] ^= key[i]; + } + arc4_init(&ctx, nonce, sizeof(nonce)); + + while (1) { + int c = fgetc(in); + + if (EOF == c) break; + fputc((uint8_t)c ^ arc4_out(&ctx), out); + written += 1; + } + + return written; +} + + +#ifdef ARC4_MAIN + +#include +#include + +int +main(int argc, char *argv[]) +{ + uint8_t key[ARC4_KEYLEN] = {0}; + size_t keylen; + + /* Read key and initialize context */ + { + char *ekey = getenv("KEY"); + + if (ekey) { + keylen = strlen(ekey); + memcpy(key, ekey, keylen); + } else { + keylen = read(3, key, sizeof(key)); + if (-1 == keylen) { + fprintf(stderr, "error: must specify key.\n"); + return 1; + } + } + } + + if (! argv[1]) { + if (-1 == arc4_decrypt_stream(stdout, stdin, key, keylen)) { + fprintf(stderr, "error: not an arc4 stream.\n"); + return 1; + } + } else if (0 == strcmp(argv[1], "-e")) { + arc4_encrypt_stream(stdout, stdin, key, keylen); + } else { + fprintf(stderr, "Usage: %s [-e] +#include +#include + +#define ARC4_KEYLEN 256 + +struct arc4_ctx { + uint8_t S[256]; + uint8_t i; + uint8_t j; +}; + +/* Stream operations */ +ssize_t +arc4_encrypt_stream(FILE *out, FILE *in, + const uint8_t *key, size_t keylen); +ssize_t +arc4_decrypt_stream(FILE *out, FILE *in, + const uint8_t *key, size_t keylen); + + +/* Auto-seeding Psuedo Random Number Generator */ +void arc4_rand_seed(const uint8_t *seed, size_t seedlen); +uint8_t arc4_rand8(); +uint32_t arc4_rand32(); + +/* Low-level operations */ +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, const uint8_t *ibuf, size_t buflen); +void arc4_crypt_buffer(const uint8_t *key, size_t keylen, + uint8_t *buf, size_t buflen); +void arc4_nonce(uint8_t *nonce, size_t noncelen, void *seed, size_t seedlen); + + +#endif diff --git a/src/bubblebabble.c b/src/bubblebabble.c new file mode 100644 index 0000000..4bd5f40 --- /dev/null +++ b/src/bubblebabble.c @@ -0,0 +1,53 @@ +#include + +/** Compute bubble babble for input buffer. + * + * The generated output will be of length 6*((inlen/2)+1), including the + * trailing NULL. + * + * Test vectors: + * `' (empty string) `xexax' + * `1234567890' `xesef-disof-gytuf-katof-movif-baxux' + * `Pineapple' `xigak-nyryk-humil-bosek-sonax' + */ +static char const consonants[] = "bcdfghklmnprstvz"; +static char const vowels[] = "aeiouy"; + +int +main(int argc, char *argv[]) +{ + int seed = 1; + + putchar('x'); + while (1) { + int c; + + c = getchar(); + if (EOF == c) { + putchar(vowels[seed % 6]); + putchar('x'); + putchar(vowels[seed / 6]); + break; + } + + putchar(vowels[(((c >> 6) & 3) + seed) % 6]); + putchar(consonants[(c >> 2) & 15]); + putchar(vowels[((c & 3) + (seed / 6)) % 6]); + + seed = (seed * 5) + (c * 7); + c = getchar(); + seed = (seed + c) % 36; + + if (EOF == c) { + break; + } + putchar(consonants[(c >> 4) & 15]); + putchar('-'); + putchar(consonants[c & 15]); + } + + putchar('x'); + putchar('\n'); + + return 0; +} diff --git a/src/mktoken b/src/mktoken new file mode 100755 index 0000000..ba1e009 --- /dev/null +++ b/src/mktoken @@ -0,0 +1,12 @@ +#! /bin/sh + +case "$1" in + ""|"-h"|"--help") + echo "Usage: $0 CATEGORY [POINTS]" + exit +esac + +bb=$(dd bs=1 count=5 if=/dev/urandom 2>/dev/null | ./bubblebabble) +points=$2${2:+:} + +echo $1:$points$bb diff --git a/src/token.c b/src/token.c new file mode 100644 index 0000000..b6d6c92 --- /dev/null +++ b/src/token.c @@ -0,0 +1,63 @@ +#include +#include +#include +#include "token.h" +#include "arc4.h" + +#ifndef CTF_BASE +#define CTF_BASE "/var/lib/ctf" +#endif + +ssize_t +write_token(FILE *out, + const char *name, + const uint8_t *key, size_t keylen) +{ + char *base; + char path[PATH_MAX]; + int pathlen; + FILE *f; + ssize_t ret; + + base = getenv("CTF_BASE"); + if (! base) base = CTF_BASE; + + pathlen = snprintf(path, sizeof(path) - 1, + "%s/tokens/%s", base, name); + path[pathlen] = '\0'; + + f = fopen(path, "r"); + if (NULL == f) return -1; + ret = arc4_decrypt_stream(out, f, key, keylen); + fclose(f); + + return ret; +} + +ssize_t +print_token(const char *name, + const uint8_t *key, size_t keylen) +{ + return write_token(stdout, name, key, keylen); +} + +ssize_t +get_token(char *buf, size_t buflen, + const char *name, + const uint8_t *key, size_t keylen) +{ + FILE *f; + ssize_t l; + + f = fmemopen(buf, buflen, "w"); + if (! f) return -1; + + l = write_token(f, name, key, keylen); + fclose(f); + if (-1 == l) return -1; + + while ('\n' == buf[l-1]) l -= 1; + buf[l-1] = '\0'; + + return l; +} diff --git a/src/token.h b/src/token.h new file mode 100644 index 0000000..f9eacbb --- /dev/null +++ b/src/token.h @@ -0,0 +1,19 @@ +#ifndef __TOKEN_H__ +#define __TOKEN_H__ + +#define TOKEN_MAX 50 + +#include +#include +#include + +ssize_t write_token(FILE *out, + const char *name, + const uint8_t *key, size_t keylen); +ssize_t print_token(const char *name, + const uint8_t *key, size_t keylen); +ssize_t get_token(char *buf, size_t buflen, + const char *name, + const uint8_t *key, size_t keylen); + +#endif