From 1ac055fa85daccab8e09a86f6a7681eef69afea2 Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Thu, 4 Jul 2024 09:03:45 -0700 Subject: [PATCH] Reword the recent deobfuscation changes In most cases the word was changed to 'obfuscation' as it was about obfuscation, not deobfuscation. In some cases like 1995/leo since the file was (in 1995/leo) about a secret switch it was changed to 'secret.md' (and 'secret.html') but there were others like that as well. One entry had the words 'spoiling the size rule' but this had been changed to 'deobfuscating the size rule' which was obviously wrong. In the latter YYYY/README.md files the judges had written after some entries (brief summaries) '... ...We'll stop spouting spoilers now. Have fun exploring all the entries! but that was changed to: ...We'll stop spouting deobfuscation information now. Have fun exploring all the entries! which wasn't really about deobfuscation but just a brief summary of what the entries did. And in the most problematic case (at least for me :-), 2018/ferguson) I had put a joke in: ... but it's the only Easter egg I won't spoil but it was changed to 'won't deobfuscate' which not only is not what it is but it spoilt the joke. In some cases the word was changed back to 'SPOILER' (or similar) but in most cases not. I believe it should be better now. There are some caveats, however, as below. Although make find_missing_links is okay I do not remember if this will catch links that refer to '%%REPO_URL%%' or other pandoc tokens. This means I might have to go back to some earlier years to verify links are okay. That should not take that much time I hope. It might also be that some wording can still be improved some but it is hoped this will be discovered when checking links and looking over the manifest (which obviously changed). --- 1989/paul/README.md | 2 +- 1989/paul/index.html | 2 +- 1990/dg/README.md | 2 +- 1990/dg/index.html | 2 +- 1990/pjr/README.md | 2 +- 1990/pjr/index.html | 2 +- 1991/davidguy/README.md | 2 +- 1991/davidguy/index.html | 2 +- 1992/gson/README.md | 2 +- 1992/gson/index.html | 2 +- 1993/plummer/README.md | 2 +- 1993/plummer/index.html | 2 +- 1994/horton/README.md | 2 +- 1994/horton/index.html | 2 +- 1994/imc/README.md | 2 +- 1994/imc/index.html | 2 +- 1994/schnitzi/README.md | 2 - 1994/schnitzi/index.html | 1 - 1994/tvr/README.md | 4 +- 1994/tvr/index.html | 4 +- 1994/westley/README.md | 10 +--- 1994/westley/index.html | 6 +- 1995/leo/.entry.json | 8 +-- 1995/leo/README.md | 4 -- 1995/leo/index.html | 8 +-- 1995/leo/{deobfuscation.html => secret.html} | 22 +++---- 1995/leo/{deobfuscation.md => secret.md} | 0 1995/vanschnitz/README.md | 5 +- 1995/vanschnitz/index.html | 5 +- 1996/huffman/README.md | 4 +- 1996/huffman/index.html | 4 +- 1998/df/README.md | 14 +++-- 1998/df/index.html | 14 +++-- 1998/dorssel/README.md | 2 +- 1998/dorssel/index.html | 2 +- 1998/schnitzi/README.md | 2 +- 1998/schnitzi/index.html | 2 +- 1998/tomtorfs/README.md | 2 +- 1998/tomtorfs/index.html | 2 +- 2000/primenum/README.md | 4 +- 2000/primenum/index.html | 4 +- 2001/jason/README.md | 2 +- 2001/jason/index.html | 2 +- 2004/hibachi/.entry.json | 4 +- 2004/hibachi/README.md | 2 +- 2004/hibachi/index.html | 4 +- ...S-DEOBFUSCATED.TXT => CHANGES-SPOILER.TXT} | 0 2005/anon/README.md | 7 ++- 2005/anon/index.html | 7 ++- 2006/monge/README.md | 6 +- 2006/monge/index.html | 6 +- 2006/toledo2/README.md | 2 +- 2006/toledo2/index.html | 2 +- 2011/fredriksson/README.md | 2 +- 2011/fredriksson/index.html | 2 +- 2011/hou/README.md | 2 +- 2011/hou/index.html | 2 +- 2011/zucker/README.md | 2 +- 2011/zucker/index.html | 2 +- 2012/endoh1/README.md | 2 +- 2012/endoh1/index.html | 2 +- 2012/kang/README.md | 4 +- 2012/kang/index.html | 4 +- 2012/omoikane/.entry.json | 4 +- 2012/omoikane/README.md | 4 +- 2012/omoikane/index.html | 6 +- .../{deobfuscation.html => obfuscation.html} | 0 2012/tromp/.entry.json | 2 +- 2012/tromp/how.html | 2 +- 2012/tromp/how.md | 2 +- 2012/tromp/index.html | 2 +- 2013/endoh1/README.md | 6 +- 2013/endoh1/index.html | 6 +- 2013/endoh2/README.md | 2 +- 2013/endoh2/index.html | 2 +- 2013/endoh3/README.md | 2 +- 2013/endoh3/index.html | 2 +- 2013/hou/README.md | 2 +- 2013/hou/index.html | 2 +- 2013/misaka/.entry.json | 4 +- 2013/misaka/Makefile | 2 +- 2013/misaka/README.md | 2 +- 2013/misaka/index.html | 4 +- .../{deobfuscation.html => obfuscation.html} | 0 2014/endoh1/.entry.json | 6 +- 2014/endoh1/Makefile | 2 +- 2014/endoh1/README.md | 4 +- 2014/endoh1/index.html | 8 +-- .../{deobfuscation.html => quine-qr.html} | 22 +++---- 2014/endoh1/{deobfuscation.md => quine-qr.md} | 0 2014/sinon/.entry.json | 4 +- 2014/sinon/README.md | 2 +- 2014/sinon/index.html | 4 +- .../{deobfuscation.html => obfuscation.html} | 0 2015/README.md | 2 +- 2015/burton/.entry.json | 8 +-- 2015/burton/README.md | 4 +- 2015/burton/index.html | 8 +-- .../{deobfuscation.html => obfuscation.html} | 22 +++---- .../{deobfuscation.md => obfuscation.md} | 0 2015/dogon/README.md | 2 +- 2015/dogon/index.html | 2 +- 2015/endoh2/README.md | 2 +- 2015/endoh2/index.html | 2 +- 2015/endoh3/README.md | 2 +- 2015/endoh3/index.html | 2 +- 2015/howe/.entry.json | 12 ++-- 2015/howe/Makefile | 2 +- .../{deobfuscation => deobfuscated}/Makefile | 0 .../{deobfuscation => deobfuscated}/err.h | 0 .../{deobfuscation => deobfuscated}/prog.c | 0 2015/howe/index.html | 6 +- 2015/index.html | 2 +- 2015/schweikhardt/README.md | 2 +- 2015/schweikhardt/index.html | 2 +- 2015/yang/.entry.json | 4 +- 2015/yang/README.md | 2 +- 2015/yang/index.html | 4 +- .../{deobfuscation.html => obfuscation.html} | 0 2018/README.md | 13 ++++- 2018/algmyr/.entry.json | 4 +- 2018/algmyr/README.md | 2 +- 2018/algmyr/index.html | 4 +- .../{deobfuscation.png => spectrogram.png} | Bin 2018/burton1/README.md | 10 ++-- 2018/burton1/index.html | 10 ++-- 2018/burton2/README.md | 2 +- 2018/burton2/index.html | 2 +- 2018/ferguson/README.md | 20 +++---- 2018/ferguson/index.html | 22 +++---- 2018/index.html | 12 +++- 2018/poikola/README.md | 4 +- 2018/poikola/index.html | 4 +- 2018/yang/.entry.json | 4 +- 2018/yang/Makefile | 26 ++++----- 2018/yang/README.md | 2 +- 2018/yang/index.html | 4 +- .../{deobfuscation.html => obfuscation.html} | 0 2018/yang/try.sh | 10 ++-- 2019/README.md | 2 +- 2019/adamovsky/.entry.json | 4 +- 2019/adamovsky/README.md | 10 ++-- .../{deobfuscation.c => deobfuscated.c} | 0 2019/adamovsky/index.html | 12 ++-- 2019/burton/README.md | 4 +- 2019/burton/index.html | 4 +- 2019/dogon/README.md | 2 +- 2019/dogon/index.html | 2 +- 2019/duble/README.md | 4 +- 2019/duble/index.html | 3 +- 2019/index.html | 2 +- 2019/lynn/README.md | 2 +- 2019/lynn/index.html | 2 +- 2019/poikola/README.md | 2 +- 2019/poikola/index.html | 2 +- 2019/yang/.entry.json | 4 +- 2019/yang/Makefile | 2 +- 2019/yang/README.md | 2 +- 2019/yang/index.html | 4 +- .../{deobfuscation.html => obfuscation.html} | 0 2020/README.md | 2 +- 2020/endoh2/.entry.json | 14 ++--- 2020/endoh2/Makefile | 3 +- 2020/endoh2/README.md | 4 +- 2020/endoh2/index.html | 18 +++--- .../{deobfuscation => obfuscation}/code.c | 0 .../{deobfuscation => obfuscation}/gen.rb | 0 .../{deobfuscation => obfuscation}/glyphs.txt | 0 .../{deobfuscation => obfuscation}/index.html | 23 ++++---- .../{deobfuscation => obfuscation}/index.md | 7 ++- .../{deobfuscation => obfuscation}/prog.c | 0 .../{deobfuscation => obfuscation}/tmpl.txt | 0 2020/ferguson1/HACKING.html | 22 +++---- 2020/ferguson1/HACKING.md | 22 +++---- 2020/index.html | 2 +- 2020/yang/.entry.json | 4 +- 2020/yang/README.md | 4 +- 2020/yang/index.html | 6 +- .../{deobfuscation.html => obfuscation.html} | 0 README.html | 6 +- README.md | 6 +- bugs.html | 2 +- bugs.md | 2 +- faq.html | 6 +- faq.md | 6 +- thanks-for-help.html | 12 ++-- thanks-for-help.md | 13 ++--- tmp/manifest.csv | 54 +++++++++--------- tmp/manifest.numbers | Bin 1342989 -> 1343641 bytes tmp/path_list.built.txt | 6 +- tmp/path_list.found.txt | 52 ++++++++--------- tmp/path_list.manifest.txt | 52 ++++++++--------- tmp/path_list.required.txt | 46 +++++++-------- 193 files changed, 531 insertions(+), 524 deletions(-) rename 1995/leo/{deobfuscation.html => secret.html} (95%) rename 1995/leo/{deobfuscation.md => secret.md} (100%) rename 2004/hibachi/src/localhost/{CHANGES-DEOBFUSCATED.TXT => CHANGES-SPOILER.TXT} (100%) rename 2012/omoikane/{deobfuscation.html => obfuscation.html} (100%) rename 2013/misaka/{deobfuscation.html => obfuscation.html} (100%) rename 2014/endoh1/{deobfuscation.html => quine-qr.html} (97%) rename 2014/endoh1/{deobfuscation.md => quine-qr.md} (100%) rename 2014/sinon/{deobfuscation.html => obfuscation.html} (100%) rename 2015/burton/{deobfuscation.html => obfuscation.html} (96%) rename 2015/burton/{deobfuscation.md => obfuscation.md} (100%) rename 2015/howe/{deobfuscation => deobfuscated}/Makefile (100%) rename 2015/howe/{deobfuscation => deobfuscated}/err.h (100%) rename 2015/howe/{deobfuscation => deobfuscated}/prog.c (100%) rename 2015/yang/{deobfuscation.html => obfuscation.html} (100%) rename 2018/algmyr/{deobfuscation.png => spectrogram.png} (100%) rename 2018/yang/{deobfuscation.html => obfuscation.html} (100%) rename 2019/adamovsky/{deobfuscation.c => deobfuscated.c} (100%) rename 2019/yang/{deobfuscation.html => obfuscation.html} (100%) rename 2020/endoh2/{deobfuscation => obfuscation}/code.c (100%) rename 2020/endoh2/{deobfuscation => obfuscation}/gen.rb (100%) rename 2020/endoh2/{deobfuscation => obfuscation}/glyphs.txt (100%) rename 2020/endoh2/{deobfuscation => obfuscation}/index.html (95%) rename 2020/endoh2/{deobfuscation => obfuscation}/index.md (82%) rename 2020/endoh2/{deobfuscation => obfuscation}/prog.c (100%) rename 2020/endoh2/{deobfuscation => obfuscation}/tmpl.txt (100%) rename 2020/yang/{deobfuscation.html => obfuscation.html} (100%) diff --git a/1989/paul/README.md b/1989/paul/README.md index b490005c1..3cf7b1925 100644 --- a/1989/paul/README.md +++ b/1989/paul/README.md @@ -41,7 +41,7 @@ better debugger or trace could easily be added. ## Judges' remarks: -The author's comments contains detailed deobfuscation information. If you +The author's comments is a detailed program explanation and spoiler. If you want a real challenge, don't read any further and try to understand the program via the source. diff --git a/1989/paul/index.html b/1989/paul/index.html index 51bce11ce..a1e6b45f6 100644 --- a/1989/paul/index.html +++ b/1989/paul/index.html @@ -420,7 +420,7 @@ better debugger or trace could easily be added.

Alternate use:

    ./paul.alt

Judges’ remarks:

-

The author’s comments contains detailed deobfuscation information. If you +

The author’s comments is a detailed program explanation and spoiler. If you want a real challenge, don’t read any further and try to understand the program via the source.

Historical note:

diff --git a/1990/dg/README.md b/1990/dg/README.md index 6997f0040..3442cd15b 100644 --- a/1990/dg/README.md +++ b/1990/dg/README.md @@ -43,7 +43,7 @@ which we have done for the wider audience. If my preprocessor could hack it, I could write this as one single line rather than 4, but when I do that I get a complaint "defines nested too deeply". -### Debfuscation: +### Obfuscation spoiler: This is another rot13 job (believe it or not) - the `#define`s are a novel way of adding tokens: `#define b12(x) 12 x` means that at diff --git a/1990/dg/index.html b/1990/dg/index.html index 2b28aced6..e08a74c41 100644 --- a/1990/dg/index.html +++ b/1990/dg/index.html @@ -418,7 +418,7 @@ which we have done for the wider audience.

Author’s remarks:

If my preprocessor could hack it, I could write this as one single line rather than 4, but when I do that I get a complaint “defines nested too deeply”.

-

Debfuscation:

+

Obfuscation spoiler:

This is another rot13 job (believe it or not) - the #defines are a novel way of adding tokens: #define b12(x) 12 x means that at some point in the source a 12 is followed by the compressed nested diff --git a/1990/pjr/README.md b/1990/pjr/README.md index ecf610793..47f2cc0db 100644 --- a/1990/pjr/README.md +++ b/1990/pjr/README.md @@ -55,7 +55,7 @@ By use of pointers to functions returning a struct of pointers to functions! -### Deobfuscation: +### Spoiler: This program prints out the string: diff --git a/1990/pjr/index.html b/1990/pjr/index.html index c5b7d10e7..476f8dfd8 100644 --- a/1990/pjr/index.html +++ b/1990/pjr/index.html @@ -425,7 +425,7 @@ well.

it is done?

By use of pointers to functions returning a struct of pointers to functions!

-

Deobfuscation:

+

Spoiler:

This program prints out the string:

the quick brown fox jumped over the lazy dog

diff --git a/1991/davidguy/README.md b/1991/davidguy/README.md index 605733262..c34c8e869 100644 --- a/1991/davidguy/README.md +++ b/1991/davidguy/README.md @@ -86,7 +86,7 @@ In other words, even if we took steps to present the algorithm clearly, (we haven't) the relation of the computation performed to the specification of what the program was supposed to do would still be hard to understand. -### Quasi-deobfuscation on internals: +### Quasi-spoiler on internals: The program plays [Conway's Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) in the root window's diff --git a/1991/davidguy/index.html b/1991/davidguy/index.html index 24aa4e22d..8a8af4008 100644 --- a/1991/davidguy/index.html +++ b/1991/davidguy/index.html @@ -458,7 +458,7 @@ In other words, even if we took steps to present the algorithm clearly, (we haven’t) the relation of the computation performed to the specification of what the program was supposed to do would still be hard to understand.

-

Quasi-deobfuscation on internals:

+

Quasi-spoiler on internals:

The program plays Conway’s Game of Life in the root window’s background pixmap. It starts by setting the background to random diff --git a/1992/gson/README.md b/1992/gson/README.md index 65f218482..2df7c256d 100644 --- a/1992/gson/README.md +++ b/1992/gson/README.md @@ -142,7 +142,7 @@ eliminated. As AG also refrains from abusing the preprocessor, it doesn't really have much to offer in terms of "surface obfuscation". Instead, it tries to achieve both its speed and its obscurity through a careful choice of algorithms. Some of the finer points of those -algorithms are outlined in the deobfuscation information below. +algorithms are outlined in the spoiler below. ### How it works: diff --git a/1992/gson/index.html b/1992/gson/index.html index cb909cd34..2837478c5 100644 --- a/1992/gson/index.html +++ b/1992/gson/index.html @@ -487,7 +487,7 @@ eliminated. As AG also refrains from abusing the preprocessor, it doesn’t really have much to offer in terms of “surface obfuscation”. Instead, it tries to achieve both its speed and its obscurity through a careful choice of algorithms. Some of the finer points of those -algorithms are outlined in the deobfuscation information below.

+algorithms are outlined in the spoiler below.

How it works:

Here follows a description of some of the data structures and algorithms used by AG. It is by no means complete, but it may help diff --git a/1993/plummer/README.md b/1993/plummer/README.md index d947c9846..653c4578c 100644 --- a/1993/plummer/README.md +++ b/1993/plummer/README.md @@ -125,7 +125,7 @@ compilers) complain that there is no control path leading to a return from `main()`. At 125 characters, it still fits on a single line (for those of us who don't mind ruining our eyes with 132 column screens). -### Deobfuscation: +### Obfuscation: The first statement points the base of `l` (the argument vector) to be the first argument by incrementing it. It then assigns `O` to diff --git a/1993/plummer/index.html b/1993/plummer/index.html index 8ca435d3a..696078dc2 100644 --- a/1993/plummer/index.html +++ b/1993/plummer/index.html @@ -481,7 +481,7 @@ return causes the line just written to be overwritten. lint (and mo compilers) complain that there is no control path leading to a return from main(). At 125 characters, it still fits on a single line (for those of us who don’t mind ruining our eyes with 132 column screens).

-

Deobfuscation:

+

Obfuscation:

The first statement points the base of l (the argument vector) to be the first argument by incrementing it. It then assigns O to point to the character before the first character of the second diff --git a/1994/horton/README.md b/1994/horton/README.md index 079d8b723..7f94673a0 100644 --- a/1994/horton/README.md +++ b/1994/horton/README.md @@ -68,7 +68,7 @@ numbers to get a pleasing result, or use it for your high school algebra class. -### DEOBFUSCATION: +### SPOILER: As should be obvious from 20 feet away, the program is a cubic plotter. It plots against certain artists, splattering their cubes with graphs diff --git a/1994/horton/index.html b/1994/horton/index.html index f61a3c942..000d0e281 100644 --- a/1994/horton/index.html +++ b/1994/horton/index.html @@ -429,7 +429,7 @@ newsletter and a PDF file of just the pages cited.

Run it with any 4 numeric arguments, e.g. ./horton 3 2 1 0. Play with the numbers to get a pleasing result, or use it for your high school algebra class.

-

DEOBFUSCATION:

+

SPOILER:

As should be obvious from 20 feet away, the program is a cubic plotter. It plots against certain artists, splattering their cubes with graphs of their cubic equations. Those dastardly arguments are mere coefficients, diff --git a/1994/imc/README.md b/1994/imc/README.md index ebf31abfd..fbc1cbbe6 100644 --- a/1994/imc/README.md +++ b/1994/imc/README.md @@ -44,7 +44,7 @@ parameter or an invalid parameter is given, then 5 is assumed. The maximum parameter is determined only by the amount of CPU time, virtual memory and display (or file) space available. -### DEOBFUSCATION: +### OBFUSCATION: OK, so you have probably seen magic square printers before. But what about one that deals with even sizes as well as odd ones, or one that diff --git a/1994/imc/index.html b/1994/imc/index.html index 188cc833a..72f3886a5 100644 --- a/1994/imc/index.html +++ b/1994/imc/index.html @@ -424,7 +424,7 @@ other functions (apart from main()).

parameter or an invalid parameter is given, then 5 is assumed. The maximum parameter is determined only by the amount of CPU time, virtual memory and display (or file) space available.

-

DEOBFUSCATION:

+

OBFUSCATION:

OK, so you have probably seen magic square printers before. But what about one that deals with even sizes as well as odd ones, or one that prints out a different one each time (or attempts to, at any rate)?

diff --git a/1994/schnitzi/README.md b/1994/schnitzi/README.md index c40f2d9fb..7f0372fd2 100644 --- a/1994/schnitzi/README.md +++ b/1994/schnitzi/README.md @@ -85,8 +85,6 @@ compile it and compare how it works to the original code. ## Author's remarks: -### DEOBFUSCATION: - This is a program which takes any text file as input and 'flips' the input file along a diagonal running from the top left corner down to the bottom right. In other words, the first row in the diff --git a/1994/schnitzi/index.html b/1994/schnitzi/index.html index 2c31bf358..3a88349e9 100644 --- a/1994/schnitzi/index.html +++ b/1994/schnitzi/index.html @@ -439,7 +439,6 @@ find out why?

You might also wish to redirect the output to another file, compile it and compare how it works to the original code.

Author’s remarks:

-

DEOBFUSCATION:

This is a program which takes any text file as input and ‘flips’ the input file along a diagonal running from the top left corner down to the bottom right. In other words, the first row in the diff --git a/1994/tvr/README.md b/1994/tvr/README.md index 51dbd8c30..abb2227de 100644 --- a/1994/tvr/README.md +++ b/1994/tvr/README.md @@ -5,7 +5,7 @@ ``` -The author provided a deobfuscated version as alternate code. See [Alternate +The author provided a spoiler version as alternate code. See [Alternate code](#alternate-code) below. @@ -39,7 +39,7 @@ Mode may be a value from 0 to 12. ## Alternate code: -The author provided us a deobfuscated version that might be of interest to some. +The author provided us a spoiler version that might be of interest to some. ### Alternate build: diff --git a/1994/tvr/index.html b/1994/tvr/index.html index f4df98a1f..75a70fe51 100644 --- a/1994/tvr/index.html +++ b/1994/tvr/index.html @@ -403,7 +403,7 @@ Location: FI - Republic of Finland

To build:

    make all
-

The author provided a deobfuscated version as alternate code. See Alternate +

The author provided a spoiler version as alternate code. See Alternate code below.

Bugs and (Mis)features:

The current status of this entry is:

@@ -416,7 +416,7 @@ code below.

    ./try.color.sh              # for colour displays
     ./try.bw.sh                 # for Black & White displays

Alternate code:

-

The author provided us a deobfuscated version that might be of interest to some.

+

The author provided us a spoiler version that might be of interest to some.

Alternate build:

    make alt

Alternate use:

diff --git a/1994/westley/README.md b/1994/westley/README.md index c2c09437c..457d6beee 100644 --- a/1994/westley/README.md +++ b/1994/westley/README.md @@ -111,13 +111,7 @@ To see the game from start to complete, try: Not all compiler errors are bad. -For deobfuscation information see the end of the notes from the author below. - -To use: - -``` - ./try.sh -``` +For spoilers see the end of the notes from the author below. ## Author's remarks: @@ -174,7 +168,7 @@ The goal of the game is to escape the dungeon. Here is a walk-through for the game, including a few dead-ends: -### DEOBFUSCATION +### SPOILER (HOW TO WIN): ``` cc -Describe -Door westley.c diff --git a/1994/westley/index.html b/1994/westley/index.html index 498a28987..26bb05453 100644 --- a/1994/westley/index.html +++ b/1994/westley/index.html @@ -463,9 +463,7 @@ arguments:

    ./try.sh

Judges’ remarks:

Not all compiler errors are bad.

-

For deobfuscation information see the end of the notes from the author below.

-

To use:

-
    ./try.sh
+

For spoilers see the end of the notes from the author below.

Author’s remarks:

This program, in accordance with the rules, compiles into a legal C program without human intervention. However, it simply compiles @@ -501,7 +499,7 @@ the opening message each time, as if you are playing an adventure game with “verbose” turned on).

The goal of the game is to escape the dungeon.

Here is a walk-through for the game, including a few dead-ends:

-

DEOBFUSCATION

+

SPOILER (HOW TO WIN):

    cc -Describe -Door westley.c
     cc -Describe -Drain westley.c
     cc -Describe -Dwarf westley.c
diff --git a/1995/leo/.entry.json b/1995/leo/.entry.json
index 7b0017819..4576580bd 100644
--- a/1995/leo/.entry.json
+++ b/1995/leo/.entry.json
@@ -34,12 +34,12 @@
 	    "entry_text" : "original source code"
 	},
 	{
-	    "file_path" : "deobfuscation.html",
+	    "file_path" : "secret.html",
 	    "inventory_order" : 100,
 	    "OK_to_edit" : false,
 	    "display_as" : "html",
 	    "display_via_github" : false,
-	    "entry_text" : "deobfuscation information web page"
+	    "entry_text" : "web page with the secret switch"
 	},
 	{
 	    "file_path" : "try.sh",
@@ -90,12 +90,12 @@
 	    "entry_text" : "markdown source for this web page"
 	},
 	{
-	    "file_path" : "deobfuscation.md",
+	    "file_path" : "secret.md",
 	    "inventory_order" : 4000000000,
 	    "OK_to_edit" : true,
 	    "display_as" : "markdown",
 	    "display_via_github" : true,
-	    "entry_text" : "markdown source for deobfuscation.html"
+	    "entry_text" : "markdown source for secret.html"
 	},
 	{
 	    "file_path" : "index.html",
diff --git a/1995/leo/README.md b/1995/leo/README.md
index 8f6cd0cb1..60835057e 100644
--- a/1995/leo/README.md
+++ b/1995/leo/README.md
@@ -214,10 +214,6 @@ enjoy randomly changing patterns (the delay is 3 seconds),
 but there is a secret switch to suppress looping: useful
 if you want to pipe the output to a printer.
 
-Here is a but of deobfuscation:
-
-> The colon **is** the secret switch - the space before it is not a mistake.
-
 If `Variable` is used, the actual value of `cycle` doesn't matter,
 as far as it is > 1. To figure out what difference
 `cycle` makes when `Variable` is not used, try
diff --git a/1995/leo/index.html b/1995/leo/index.html
index caffaaf61..5ddc5ea34 100644
--- a/1995/leo/index.html
+++ b/1995/leo/index.html
@@ -524,10 +524,6 @@ the opening for step 1 is not a single line but a cross:

enjoy randomly changing patterns (the delay is 3 seconds), but there is a secret switch to suppress looping: useful if you want to pipe the output to a printer.

-

Here is a but of deobfuscation:

-
-

The colon is the secret switch - the space before it is not a mistake.

-

If Variable is used, the actual value of cycle doesn’t matter, as far as it is > 1. To figure out what difference cycle makes when Variable is not used, try

@@ -582,17 +578,17 @@ even want to explain what it does. You’ve been warned!

  • leo.c - entry source code
  • Makefile - entry Makefile
  • leo.orig.c - original source code
  • -
  • deobfuscation.html - deobfuscation information web page
  • +
  • secret.html - web page with the secret switch
  • try.sh - script to try entry
  • Secondary files


    diff --git a/1995/leo/deobfuscation.html b/1995/leo/secret.html similarity index 95% rename from 1995/leo/deobfuscation.html rename to 1995/leo/secret.html index 523bcf97e..72d8f49b8 100644 --- a/1995/leo/deobfuscation.html +++ b/1995/leo/secret.html @@ -12,8 +12,8 @@ The International Obfuscated C Code Contest - - + + @@ -26,13 +26,13 @@ - + - - - + + + @@ -363,7 +363,7 @@ height=110>

    The International Obfuscated C Code Contest

    -

    deobfuscation.html for 1995/leo

    +

    secret.html for 1995/leo

    @@ -371,7 +371,7 @@ @@ -382,7 +382,7 @@ - +

    (The colon is the secret switch - the space before it is not a mistake)


    Jump to: top

    @@ -399,7 +399,7 @@ https://creativecommons.org/licenses/by-sa/4.0/ --> - + @@ -459,7 +459,7 @@ diff --git a/1995/leo/deobfuscation.md b/1995/leo/secret.md similarity index 100% rename from 1995/leo/deobfuscation.md rename to 1995/leo/secret.md diff --git a/1995/vanschnitz/README.md b/1995/vanschnitz/README.md index 3d6ec27aa..847bc4ef8 100644 --- a/1995/vanschnitz/README.md +++ b/1995/vanschnitz/README.md @@ -38,7 +38,8 @@ For more detailed information see [1995/vanschnitz in bugs.html](../../bugs.html The authors provided a deobfuscated version of the program. Originally uuencoded we have decoded it for the wider audience in [vanschnitz.alt.c](%%REPO_URL%%/1995/vanschnitz/vanschnitz.alt.c). -They encourage you to first try and figure out the program without reading the deobfuscated version, +They encourage you to first try and figure out the program without reading the +deobfuscated version. ### Alternate build: @@ -120,7 +121,7 @@ solution wherein the disks end up on peg 2; for an even number of disks, they will end on peg 3. This should provide some hint as to what sort of algorithm is used. -We have included a [deobfuscated](%%REPO_URL%%/1995/vanschnitz/vanschnitz.alt.c) version of the program, with +We have included a [deobfuscated version](%%REPO_URL%%/1995/vanschnitz/vanschnitz.alt.c) of the program, with meaningful symbol names and comments, but we encourage you to try to decipher the program without it... diff --git a/1995/vanschnitz/index.html b/1995/vanschnitz/index.html index e20827532..79242f79f 100644 --- a/1995/vanschnitz/index.html +++ b/1995/vanschnitz/index.html @@ -421,7 +421,8 @@ in 2023. See Alternate code below.

    Alternate code:

    The authors provided a deobfuscated version of the program. Originally uuencoded we have decoded it for the wider audience in vanschnitz.alt.c.

    -

    They encourage you to first try and figure out the program without reading the deobfuscated version,

    +

    They encourage you to first try and figure out the program without reading the +deobfuscated version.

    Alternate build:

        make alt

    Alternate use:

    @@ -475,7 +476,7 @@ the resulting program (on a Unix system) is to do the command

    solution wherein the disks end up on peg 2; for an even number of disks, they will end on peg 3. This should provide some hint as to what sort of algorithm is used.

    -

    We have included a deobfuscated version of the program, with +

    We have included a deobfuscated version of the program, with meaningful symbol names and comments, but we encourage you to try to decipher the program without it…

    ./huffman < huffman.c 2>/dev/null diff --git a/1996/huffman/index.html b/1996/huffman/index.html index 011b8c0ef..f055033d0 100644 --- a/1996/huffman/index.html +++ b/1996/huffman/index.html @@ -412,10 +412,10 @@ Location: US - United States of America

    Try:

        ./try.sh

    Judges’ remarks:

    -

    If you are still confused and want to run the deobfuscation command, check out +

    If you are still confused and want to read a spoiler, check out the source and it will be clear as mud!

    And for a misleading hint, consider who won! :-)

    -

    And if you really can’t see what is going on, try this deobfuscation command:

    +

    And if you really can’t see what is going on, here is an extra spoiler:

        ./huffman < huffman.c 2>/dev/null

    This entry was very well received at the IOCCC BOF.

    Author’s remarks:

    diff --git a/1998/df/README.md b/1998/df/README.md index db3b8ec5b..96dddf480 100644 --- a/1998/df/README.md +++ b/1998/df/README.md @@ -111,20 +111,22 @@ I decided it would be better this way... These restrictions have been removed for your convenience. The following lines describe how this program works; if you don't -want to know it at this time, please skip them. +want to know it at this time, please skip them. If this entry would +by some mistake win the contest, please do not rot13 this - I hate +rot13 spoilers since it is somewhat complicated on a Mac to +reverse them. Anyone out there should have enough discipline and +rot13 shouldn't be required, really. After all, we are not children +anymore :-) -You should have enough discipline to make an effort to understand -the code without reading the deobfuscation information below. -After all, we are not children anymore :-) -## Deobfuscation information +## Obfuscation information:
    This paragraph is not part of the author's remarks, but is a helpful gift from the judges; if you read too fast to stop yourself, this should give you enough time to stop, which you really need to do RIGHT NOW if -you don't want to read the deobfuscation information: we mean it. +you don't want to read the obfuscation information: we mean it.
    diff --git a/1998/df/index.html b/1998/df/index.html index b123df872..736d47882 100644 --- a/1998/df/index.html +++ b/1998/df/index.html @@ -481,16 +481,18 @@ My first private version would only run when compiled on a Friday. I decided it would be better this way… These restrictions have been removed for your convenience.

    The following lines describe how this program works; if you don’t -want to know it at this time, please skip them.

    -

    You should have enough discipline to make an effort to understand -the code without reading the deobfuscation information below. -After all, we are not children anymore :-)

    -

    Deobfuscation information

    +want to know it at this time, please skip them. If this entry would +by some mistake win the contest, please do not rot13 this - I hate +rot13 spoilers since it is somewhat complicated on a Mac to +reverse them. Anyone out there should have enough discipline and +rot13 shouldn’t be required, really. After all, we are not children +anymore :-)

    +

    Obfuscation information:


    This paragraph is not part of the author’s remarks, but is a helpful gift from the judges; if you read too fast to stop yourself, this should give you enough time to stop, which you really need to do RIGHT NOW if -you don’t want to read the deobfuscation information: we mean it.

    +you don’t want to read the obfuscation information: we mean it.


    The source file needs to be present because the words are read from it. The wordlist is encoded within the source using a 24 entry diff --git a/1998/dorssel/README.md b/1998/dorssel/README.md index a543196a1..cba30b407 100644 --- a/1998/dorssel/README.md +++ b/1998/dorssel/README.md @@ -112,7 +112,7 @@ is the same as ``` - The file [dorssel.html](dorssel.html) contains all the information needed to -understand this program. For deobfuscation information, try: +understand this program. For spoiler information, try: ``` ./dorssel < dorssel.md diff --git a/1998/dorssel/index.html b/1998/dorssel/index.html index 827b6c262..241964dcc 100644 --- a/1998/dorssel/index.html +++ b/1998/dorssel/index.html @@ -468,7 +468,7 @@ text that can be reversibly Morsified, i.e.

        ./dorssel < dorssel.c | ./dorssel
    • The file dorssel.html contains all the information needed to -understand this program. For deobfuscation information, try:
    • +understand this program. For spoiler information, try:
        ./dorssel < dorssel.md
    -

    Deobfuscation

    +

    Obfuscation

    The program implements a so called Krivine machine, enhanced with a basic input/output system and a reference diff --git a/2012/tromp/how.md b/2012/tromp/how.md index 1d812d096..9a2ab4fbe 100644 --- a/2012/tromp/how.md +++ b/2012/tromp/how.md @@ -1,4 +1,4 @@ -# Deobfuscation +# Obfuscation The program implements a so called [Krivine machine](https://en.wikipedia.org/wiki/Krivine_machine), enhanced with a [basic diff --git a/2012/tromp/index.html b/2012/tromp/index.html index ec044bdeb..004fd0d77 100644 --- a/2012/tromp/index.html +++ b/2012/tromp/index.html @@ -787,7 +787,7 @@ Higher Order Symbol. Comput. 20, 3 (September 2007), 199-207.

  • tromp.c - entry source code
  • Makefile - entry Makefile
  • tromp.orig.c - original source code
  • -
  • how.html - author supplied debofuscation information
  • +
  • how.html - author supplied obfuscation information
  • primes.pl - post process entry output to print primes
  • try.sh - script to try entry
  • hw.bf - hello world brainfuck source code
  • diff --git a/2013/endoh1/README.md b/2013/endoh1/README.md index 4569baf9a..b66317d87 100644 --- a/2013/endoh1/README.md +++ b/2013/endoh1/README.md @@ -106,7 +106,7 @@ and to satisfy IOCCC's size rule. These led to the good obfuscation. -See the [deobfuscation section](#Deobfuscation) in detail, if you need. +See the [obfuscation section](#obfuscation) in detail, if you need. ### Limitation @@ -120,7 +120,7 @@ Also, it requires a space between identifiers. In short, use `(S K)` instead of Huge memory may be required to compile the program (about 300 MB on my machine). In addition, there are some limitations (and workarounds) mentioned in -the [deobfuscation section](#Deobfuscation). +the [obfuscation section](#obfuscation). But I think it would only matter when you run the attached programs. @@ -156,7 +156,7 @@ run it as a standalone program, at least. In fact, tcc does not support the macro, but does work. -### Deobfuscation +### Obfuscation The whole program is interpreted by macro expansion. For example, `S (K I)` is translated to a normal C code, `(s)((k)(i))`, or diff --git a/2013/endoh1/index.html b/2013/endoh1/index.html index e08dbeb7e..2bf4b5203 100644 --- a/2013/endoh1/index.html +++ b/2013/endoh1/index.html @@ -450,7 +450,7 @@ and to satisfy IOCCC’s size rule.

  • Short coding.
  • These led to the good obfuscation.

    -

    See the deobfuscation section in detail, if you need.

    +

    See the obfuscation section in detail, if you need.

    Limitation

    This program supports only “Combinator-calculus style notation” of Lazy K. “Unlambda style” and “Iota and Jot” style are not supported.

    @@ -458,7 +458,7 @@ and to satisfy IOCCC’s size rule.

    (SK), “`sk”, **i*i*i*ii*i*i*ii, or 11111100011100.

    Huge memory may be required to compile the program (about 300 MB on my machine).

    In addition, there are some limitations (and workarounds) mentioned in -the deobfuscation section.

    +the obfuscation section.

    But I think it would only matter when you run the attached programs.

    Portability

    I confirmed that the program successfully worked with the following compilers:

    @@ -486,7 +486,7 @@ It is a gcc extension, and also supported by clang. If your compiler does not support it, you cannot use the program as a library. But you can compile and run it as a standalone program, at least. In fact, tcc does not support the macro, but does work.

    -

    Deobfuscation

    +

    Obfuscation

    The whole program is interpreted by macro expansion. For example, S (K I) is translated to a normal C code, (s)((k)(i)), or simply s(k(i)).

    diff --git a/2013/endoh2/README.md b/2013/endoh2/README.md index 3dc1a9e8c..1e95224a7 100644 --- a/2013/endoh2/README.md +++ b/2013/endoh2/README.md @@ -62,7 +62,7 @@ I believe that the JPEG encoder is the world's smallest ever. Nevertheless, the program was too big to meet the IOCCC's size rule. So I created a smaller bootstrap program that generates the main program. `endoh2.c` contains fragments of the main program *as a comment* which `iocccsize -i` does -*not* count. I gratefully thank the judges for deobfuscating the size rule this +*not* count. I gratefully thank the judges for spoiling the size rule this year. I think the program will work on any major platforms and compilers. diff --git a/2013/endoh2/index.html b/2013/endoh2/index.html index 2b7abdef2..88499a108 100644 --- a/2013/endoh2/index.html +++ b/2013/endoh2/index.html @@ -441,7 +441,7 @@ I believe that the JPEG encoder is the world’s smallest ever.

    Nevertheless, the program was too big to meet the IOCCC’s size rule. So I created a smaller bootstrap program that generates the main program. endoh2.c contains fragments of the main program as a comment which iocccsize -i does -not count. I gratefully thank the judges for deobfuscating the size rule this +not count. I gratefully thank the judges for spoiling the size rule this year.

    I think the program will work on any major platforms and compilers.

    diff --git a/2013/endoh3/README.md b/2013/endoh3/README.md index d9e4ac590..444bc4a48 100644 --- a/2013/endoh3/README.md +++ b/2013/endoh3/README.md @@ -181,7 +181,7 @@ For the same reason, do not post a score that contains only `z1092`. You know, it is ["the famous song"](http://en.wikipedia.org/wiki/4%E2%80%B233%E2%80%B3). -### Deobfuscation +### Spoiler Here is a magical expression which I found by brute-force: diff --git a/2013/endoh3/index.html b/2013/endoh3/index.html index e70687448..746860f01 100644 --- a/2013/endoh3/index.html +++ b/2013/endoh3/index.html @@ -516,7 +516,7 @@ such as C2E2.

    But I do not attach it to protect you from W****r.

    For the same reason, do not post a score that contains only z1092. You know, it is “the famous song”.

    -

    Deobfuscation

    +

    Spoiler

    Here is a magical expression which I found by brute-force:

        (c % 32 + 5) * 9 / 5 % 13 + n / 32 * 12 - 22

    Interestingly, it converts an ASCII number of ABC notes diff --git a/2013/hou/README.md b/2013/hou/README.md index e1d0539f0..e85399d4d 100644 --- a/2013/hou/README.md +++ b/2013/hou/README.md @@ -192,7 +192,7 @@ quite memory consuming, requires IEEE754-compliant `double`, and assumes `int` t doesn't copy saved sessions across different endianness. -### Deobfuscation +### Spoiler ``` 3225 3225 3225 9 9 3225 3225 diff --git a/2013/hou/index.html b/2013/hou/index.html index 1e2a367fe..080f82ef8 100644 --- a/2013/hou/index.html +++ b/2013/hou/index.html @@ -538,7 +538,7 @@ quite memory consuming, requires IEEE754-compliant double, and assu

  • Though technically endian-dependent, a.c remains portable providing that one doesn’t copy saved sessions across different endianness.
  • -

    Deobfuscation

    +

    Spoiler

        3225  3225  3225  9  9    3225  3225
         1     1  1  1  1  1  1    1     1  1
         4225  1226  1  1  1  1    1222  1226
    diff --git a/2013/misaka/.entry.json b/2013/misaka/.entry.json
    index 39f7a1639..f36116a64 100644
    --- a/2013/misaka/.entry.json
    +++ b/2013/misaka/.entry.json
    @@ -50,12 +50,12 @@
     	    "entry_text" : "script to try entry"
     	},
     	{
    -	    "file_path" : "deobfuscation.html",
    +	    "file_path" : "obfuscation.html",
     	    "inventory_order" : 200,
     	    "OK_to_edit" : true,
     	    "display_as" : "html",
     	    "display_via_github" : false,
    -	    "entry_text" : "Deobfuscation information web page"
    +	    "entry_text" : "JavaScript page with full recording of development"
     	},
     	{
     	    "file_path" : "2013_misaka.tar.bz2",
    diff --git a/2013/misaka/Makefile b/2013/misaka/Makefile
    index 46a27d4e7..174a3fb87 100644
    --- a/2013/misaka/Makefile
    +++ b/2013/misaka/Makefile
    @@ -115,7 +115,7 @@ PROG= ${ENTRY}
     #
     OBJ= misaka.o misaka2.o misaka3.o misaka4.o misaka5.o \
             misaka6.o misaka7.o misaka8.o misaka9.o
    -DATA= bf.pl deobfuscation.html
    +DATA= bf.pl obfuscation.html
     TARGET= ${PROG} horizontal_cat vertical_cat long_cat loong_cat \
     	loooong_cat loooooooong_cat long_fat_cat \
     	long_faat_cat same_as_long_cat
    diff --git a/2013/misaka/README.md b/2013/misaka/README.md
    index 0494c89c3..ab61a1412 100644
    --- a/2013/misaka/README.md
    +++ b/2013/misaka/README.md
    @@ -263,7 +263,7 @@ needed for the program to work.
     
     * [bf.pl](%%REPO_URL%%/2013/misaka/bf.pl) - a perl brainfuck interpreter, in case you don't have one
     handy.
    -* [deobfuscation.html](deobfuscation.html) - making of this program.
    +* [obfuscation.html](obfuscation.html) - making of this program.
     
     
     ### About `Misaka`
    diff --git a/2013/misaka/index.html b/2013/misaka/index.html
    index 5cd010ea0..07b8ffca5 100644
    --- a/2013/misaka/index.html
    +++ b/2013/misaka/index.html
    @@ -562,7 +562,7 @@ needed for the program to work.

    About Misaka

    The name, layout, and functionality of Misaka is inspired by a particular @@ -601,7 +601,7 @@ stackable figure:

  • misaka.orig.c - original source code
  • bf.pl - brainfuck interpreter in perl
  • try.sh - script to try entry
  • -
  • deobfuscation.html - Deobfuscation information web page
  • +
  • obfuscation.html - JavaScript page with full recording of development
  • Secondary files

      diff --git a/2013/misaka/deobfuscation.html b/2013/misaka/obfuscation.html similarity index 100% rename from 2013/misaka/deobfuscation.html rename to 2013/misaka/obfuscation.html diff --git a/2014/endoh1/.entry.json b/2014/endoh1/.entry.json index 711c9f4c9..140f105d2 100644 --- a/2014/endoh1/.entry.json +++ b/2014/endoh1/.entry.json @@ -42,12 +42,12 @@ "entry_text" : "Ruby Makefile" }, { - "file_path" : "deobfuscation.html", + "file_path" : "quine-qr.html", "inventory_order" : 100, "OK_to_edit" : false, "display_as" : "html", "display_via_github" : false, - "entry_text" : "Deobfuscation information about Q(uine)R code generator" + "entry_text" : "information about Q(uine)R code generator" }, { "file_path" : "rake.sh", @@ -218,7 +218,7 @@ "entry_text" : "markdown source for this web page" }, { - "file_path" : "deobfuscation.md", + "file_path" : "quine-qr.md", "inventory_order" : 4000000000, "OK_to_edit" : true, "display_as" : "markdown", diff --git a/2014/endoh1/Makefile b/2014/endoh1/Makefile index ae9e6e7ad..a93a4655e 100644 --- a/2014/endoh1/Makefile +++ b/2014/endoh1/Makefile @@ -112,7 +112,7 @@ PROG= prog # OBJ= ${PROG}.o DATA= Rakefile alpha.rb assemble.rb ast-def.rb gen-prog.rb gen-table.rb link.rb \ - machine.rb main.c parse.rb prog-tmpl.c deobfuscation.md register.rb \ + machine.rb main.c parse.rb prog-tmpl.c quine-qr.md register.rb \ serialize.rb src.rb tool.rb vm.c TARGET= ${PROG} main treacle # diff --git a/2014/endoh1/README.md b/2014/endoh1/README.md index 299c04a4b..51f99df5d 100644 --- a/2014/endoh1/README.md +++ b/2014/endoh1/README.md @@ -62,9 +62,9 @@ more than 1000 words. You may want to use a large display with a very small terminal font. -### Deobfuscation +### Q(uine)R code generator -See [deobfuscation.html](deobfuscation.html). +See [quine-qr.html](quine-qr.html). @@ -26,13 +26,13 @@ - + - - - + + + @@ -363,7 +363,7 @@ height=110>

      The International Obfuscated C Code Contest

      -

      deobfuscation.html for 2014/endoh1

      +

      quine-qr.html for 2014/endoh1

      @@ -371,7 +371,7 @@ @@ -382,7 +382,7 @@ - +

      Q(uine)R code generator

      What is difficult?

      As you may know, QR code (specification: ISO/IEC 18004) is quite complex. It @@ -533,7 +533,7 @@ but it appears to no longer exist.

      https://creativecommons.org/licenses/by-sa/4.0/ --> - + @@ -593,7 +593,7 @@ but it appears to no longer exist.

      diff --git a/2014/endoh1/deobfuscation.md b/2014/endoh1/quine-qr.md similarity index 100% rename from 2014/endoh1/deobfuscation.md rename to 2014/endoh1/quine-qr.md diff --git a/2014/sinon/.entry.json b/2014/sinon/.entry.json index b0501256b..fb9085dec 100644 --- a/2014/sinon/.entry.json +++ b/2014/sinon/.entry.json @@ -58,12 +58,12 @@ "entry_text" : "script to try entry" }, { - "file_path" : "deobfuscation.html", + "file_path" : "obfuscation.html", "inventory_order" : 200, "OK_to_edit" : true, "display_as" : "html", "display_via_github" : false, - "entry_text" : "Deobfuscation information web page" + "entry_text" : "JavaScript page with full recording of development" }, { "file_path" : "2014_sinon.tar.bz2", diff --git a/2014/sinon/README.md b/2014/sinon/README.md index bb4e0fe6b..cb8c97653 100644 --- a/2014/sinon/README.md +++ b/2014/sinon/README.md @@ -112,7 +112,7 @@ that there are no files named "run" and "run.c" in current directory File size and CRC32 of [prog.c](%%REPO_URL%%/2014/sinon/prog.c) are embedded in line 7. -Process for making `Sinon` is included in [deobfuscation.html](deobfuscation.html). +Process for making `Sinon` is included in [obfuscation.html](obfuscation.html). Layout of this code is based on Asada Shino, also known as "`Sinon`", from Sword Art Online. diff --git a/2014/sinon/index.html b/2014/sinon/index.html index b6ba41863..471a22942 100644 --- a/2014/sinon/index.html +++ b/2014/sinon/index.html @@ -474,7 +474,7 @@ that there are no files named “run” and “run.c” in current directory (they will be overwritten) and run:

          perl prog.c | bash

      File size and CRC32 of prog.c are embedded in line 7.

      -

      Process for making Sinon is included in deobfuscation.html.

      +

      Process for making Sinon is included in obfuscation.html.

      Layout of this code is based on Asada Shino, also known as “Sinon”, from Sword Art Online.

      @@ -26,13 +26,13 @@ - + - - - + + + @@ -363,7 +363,7 @@ height=110>

      The International Obfuscated C Code Contest

      -

      deobfuscation.html for 2015/burton

      +

      obfuscation.html for 2015/burton

      @@ -371,7 +371,7 @@ @@ -382,7 +382,7 @@ - +

      Deobfuscation

      calc is a recursive-descent parser. It allocates from the stack deep enough that all expressions are exhausted before the recursion stack depth reaches the @@ -428,7 +428,7 @@ obfuscation, and remarkably effective.

      https://creativecommons.org/licenses/by-sa/4.0/ --> - + @@ -488,7 +488,7 @@ obfuscation, and remarkably effective.

      diff --git a/2015/burton/deobfuscation.md b/2015/burton/obfuscation.md similarity index 100% rename from 2015/burton/deobfuscation.md rename to 2015/burton/obfuscation.md diff --git a/2015/dogon/README.md b/2015/dogon/README.md index 2785c571d..a7c0f168d 100644 --- a/2015/dogon/README.md +++ b/2015/dogon/README.md @@ -201,7 +201,7 @@ Those techniques are about the use of 64 bit integers in order to do SIMD work, in a portable way without ever using any SSE/AVX or other non-portable compiler inline functions! The irony though, is that when compiling the program on modern X86 architectures indeed SSE/AVX is used for the long longs. Following is some -deobfuscation information, So if you want to play tough, stop reading at this point. +obfuscation information, So if you want to play tough, stop reading at this point. ### Portable SIMD programming: diff --git a/2015/dogon/index.html b/2015/dogon/index.html index 5e36c333a..550e8e2ff 100644 --- a/2015/dogon/index.html +++ b/2015/dogon/index.html @@ -526,7 +526,7 @@ code more magical and efficient, at the same time.

      in a portable way without ever using any SSE/AVX or other non-portable compiler inline functions! The irony though, is that when compiling the program on modern X86 architectures indeed SSE/AVX is used for the long longs. Following is some -deobfuscation information, So if you want to play tough, stop reading at this point.

      +obfuscation information, So if you want to play tough, stop reading at this point.

      Portable SIMD programming:

      So how is this done? Quite simply by using the whole long long arithmetic’s capability. I think the C99 standard assures us that long long has at least 64 diff --git a/2015/endoh2/README.md b/2015/endoh2/README.md index 560c9f030..d2a91955e 100644 --- a/2015/endoh2/README.md +++ b/2015/endoh2/README.md @@ -62,7 +62,7 @@ terminal supports bold. Hint 2: Do `wc -c prog.c`. This is very long one-liner. -Deobfuscation hint: Open the source with an editor like `vim` or `emacs`. +Hint 3: Open the source with an editor like `vim` or `emacs`. out=cat ./check.sh ./prog ``` -Interestingly, and a bit of deobfuscation here: macOS and FreeBSD implement the common +Interestingly, and a spoiler here: macOS and FreeBSD implement the common utility "correctly". CentOS and Ubuntu both share a "flawed" utility that changes output format based upon input redirection or pipeline(!). As well, the latter two also behave slightly differently on what they count as whitespace: diff --git a/2019/burton/index.html b/2019/burton/index.html index 3a1751777..1a9769c5f 100644 --- a/2019/burton/index.html +++ b/2019/burton/index.html @@ -430,9 +430,9 @@ The output should look familiar.

      Included is a test script, useful for the corner cases. As in all good Unix programs, it is silent upon success; any output demonstrates an error. Instead of checking correctness, the check.sh script can simply output the -results: (The Makefile contains some deobfuscation information):

      +results: (The Makefile contains the spoiler):

          out=cat ./check.sh ./prog
      -

      Interestingly, and a bit of deobfuscation here: macOS and FreeBSD implement the common +

      Interestingly, and a spoiler here: macOS and FreeBSD implement the common utility “correctly”. CentOS and Ubuntu both share a “flawed” utility that changes output format based upon input redirection or pipeline(!). As well, the latter two also behave slightly differently on what they count as whitespace: diff --git a/2019/dogon/README.md b/2019/dogon/README.md index 161f4b37c..5dee9abfe 100644 --- a/2019/dogon/README.md +++ b/2019/dogon/README.md @@ -225,7 +225,7 @@ character juxtaposed against a very ancient one, not to mention the program includes some famous name dropping and documents itself as usual. -### Further deobfuscation, engineering, and obfuscation galore: +### Further spoilers, engineering, and obfuscation galore: Those wait for you, curious and intrepid reader, in the attached [apholife.c](%%REPO_URL%%/2019/dogon/apholife.c) file, which is a partially obfuscated version of the diff --git a/2019/dogon/index.html b/2019/dogon/index.html index 9cddca912..85499d213 100644 --- a/2019/dogon/index.html +++ b/2019/dogon/index.html @@ -565,7 +565,7 @@ resulting F in hexadecimal…

      And yes, the layout hint involves a mix of the most trendy typographical character juxtaposed against a very ancient one, not to mention the program includes some famous name dropping and documents itself as usual.

      -

      Further deobfuscation, engineering, and obfuscation galore:

      +

      Further spoilers, engineering, and obfuscation galore:

      Those wait for you, curious and intrepid reader, in the attached apholife.c file, which is a partially obfuscated version of the program I wrote with a lot of helpful annotations and comments for myself and diff --git a/2019/duble/README.md b/2019/duble/README.md index 32e34476e..623c1d0cd 100644 --- a/2019/duble/README.md +++ b/2019/duble/README.md @@ -184,9 +184,7 @@ You will probably have a hard time analyzing this entry, because: ### A few more things: Did you notice the `enum` declaration? Could it be just an `int` or `const int` -variable, instead? - -See also this [deobfuscation page](http://c-faq.com/ansi/constasconst.html>). +variable, instead? (spoiler: ) If your keyboard has no arrow keys, you can probably find alternate keys by reading the source code. diff --git a/2019/duble/index.html b/2019/duble/index.html index 556612e7a..32b8bc28a 100644 --- a/2019/duble/index.html +++ b/2019/duble/index.html @@ -506,8 +506,7 @@ background color?

    A few more things:

    Did you notice the enum declaration? Could it be just an int or const int -variable, instead?

    -

    See also this deobfuscation page.

    +variable, instead? (spoiler: http://c-faq.com/ansi/constasconst.html)

    If your keyboard has no arrow keys, you can probably find alternate keys by reading the source code.

    Limits, Portability:

    diff --git a/2019/index.html b/2019/index.html index 0124d9510..2f1bdaf49 100644 --- a/2019/index.html +++ b/2019/index.html @@ -415,7 +415,7 @@ are rather similar to previous entries

    because the entry 2019/dogon appropriately pays homage to past entries without blatantly reusing their code.

    -

    …We’ll stop spouting deobfuscation information now. Have fun exploring all the entries!

    +

    …We’ll stop spouting spoilers now. Have fun exploring all the entries!

    Remarks on some of submissions that did not win

    Some entries tried to get around the size limit by submitting a data file that was really C code and then blindly including code in prog.c.

    diff --git a/2019/lynn/README.md b/2019/lynn/README.md index 13dc29264..297a397fb 100644 --- a/2019/lynn/README.md +++ b/2019/lynn/README.md @@ -89,7 +89,7 @@ and shows GHC also accepts our subset of Haskell: #### Self-hosting compiler: -To avoid deobfuscating this entry by revealing the original Haskell source, we +To avoid spoiling this entry by revealing the original Haskell source, we instead provide [hint.hs](%%REPO_URL%%/2019/lynn/hint.hs), the output of a certain stage of the compiler when run on itself. This intermediate output is hopefully difficult to understand, yet is accepted by our compiler: diff --git a/2019/lynn/index.html b/2019/lynn/index.html index 4f1261405..3dedc1d56 100644 --- a/2019/lynn/index.html +++ b/2019/lynn/index.html @@ -443,7 +443,7 @@ includes Self-hosting compiler: -

    To avoid deobfuscating this entry by revealing the original Haskell source, we +

    To avoid spoiling this entry by revealing the original Haskell source, we instead provide hint.hs, the output of a certain stage of the compiler when run on itself. This intermediate output is hopefully difficult to understand, yet is accepted by our compiler:

    diff --git a/2019/poikola/README.md b/2019/poikola/README.md index f94010d10..f8fdf2ef3 100644 --- a/2019/poikola/README.md +++ b/2019/poikola/README.md @@ -228,7 +228,7 @@ compilers. Small change in code can produce really unexpected results, i.e. the compiler can skip a few expressions or statements without obvious reason. -### Major deobfuscation +### Major spoilers It is commonly believed that [Mike Keith's algorithm](http://www.cadaeic.net/calendar.htm) published in _Journal of diff --git a/2019/poikola/index.html b/2019/poikola/index.html index 9ea6a155b..db6c1f040 100644 --- a/2019/poikola/index.html +++ b/2019/poikola/index.html @@ -521,7 +521,7 @@ prime is missing from output.

    achieve exactly the same output from different optimization levels and compilers. Small change in code can produce really unexpected results, i.e. the compiler can skip a few expressions or statements without obvious reason.

    -

    Major deobfuscation

    +

    Major spoilers

    It is commonly believed that Mike Keith’s algorithm published in Journal of Recreational Mathematics, Vol. 22, No. 4, 1990, p. 280, is the shortest way to diff --git a/2019/yang/.entry.json b/2019/yang/.entry.json index 38b005cac..b47a2371b 100644 --- a/2019/yang/.entry.json +++ b/2019/yang/.entry.json @@ -66,12 +66,12 @@ "entry_text" : "source formatter as ASCII Violet Evergarden" }, { - "file_path" : "deobfuscation.html", + "file_path" : "obfuscation.html", "inventory_order" : 200, "OK_to_edit" : true, "display_as" : "html", "display_via_github" : false, - "entry_text" : "Deobfuscation information web page" + "entry_text" : "JavaScript page with full recording of development" }, { "file_path" : "2019_yang.tar.bz2", diff --git a/2019/yang/Makefile b/2019/yang/Makefile index 1b6ac74c3..f1cfefeb6 100644 --- a/2019/yang/Makefile +++ b/2019/yang/Makefile @@ -112,7 +112,7 @@ PROG= prog # OBJ= ${PROG}.o CSRC= ${PROG}.o -DATA= sample_input.txt +DATA= sample_input.txt obfuscation.html TARGET= ${PROG} # ALT_OBJ= diff --git a/2019/yang/README.md b/2019/yang/README.md index ad35b4664..46643cba7 100644 --- a/2019/yang/README.md +++ b/2019/yang/README.md @@ -46,7 +46,7 @@ Do you understand how this program works? You may have to go over and over the output again. If you run into difficultly in understanding the code, you may wish -to review the [deobfuscation.html](deobfuscation.html) web page. +to review the [obfuscation.html](obfuscation.html) web page. ## Author's remarks: diff --git a/2019/yang/index.html b/2019/yang/index.html index 7f84508bb..38524652d 100644 --- a/2019/yang/index.html +++ b/2019/yang/index.html @@ -425,7 +425,7 @@ Location: US - United States of America

    Do you understand how this program works? You may have to go over and over the output again.

    If you run into difficultly in understanding the code, you may wish -to review the deobfuscation.html web page.

    +to review the obfuscation.html web page.

    Author’s remarks:

    Summary:

    Scramble/unscramble to single file:

    @@ -559,7 +559,7 @@ the same name, the character who is highly skilled in writing letters.

  • sample_input.txt - sample input
  • try.sh - script to try entry
  • violet.c - source formatter as ASCII Violet Evergarden
  • -
  • deobfuscation.html - Deobfuscation information web page
  • +
  • obfuscation.html - JavaScript page with full recording of development
  • Secondary files

      diff --git a/2019/yang/deobfuscation.html b/2019/yang/obfuscation.html similarity index 100% rename from 2019/yang/deobfuscation.html rename to 2019/yang/obfuscation.html diff --git a/2020/README.md b/2020/README.md index db3a30775..41b12342d 100644 --- a/2020/README.md +++ b/2020/README.md @@ -27,7 +27,7 @@ and [Snake - 2020/ferguson1](ferguson1/index.html). An entry, [kurdyukov1](kurdyukov1/index.html), pays homage to the previous entry [2015/hou](../2015/hou/index.html). -...We'll stop spouting deobfuscation information now. Have fun exploring all the entries! +...We'll stop spouting spoilers now. Have fun exploring all the entries! ## Remarks on some of submissions that did not win diff --git a/2020/endoh2/.entry.json b/2020/endoh2/.entry.json index f750f12bd..ce016aab9 100644 --- a/2020/endoh2/.entry.json +++ b/2020/endoh2/.entry.json @@ -66,7 +66,7 @@ "entry_text" : "sample input" }, { - "file_path" : "deobfuscation/code.c", + "file_path" : "obfuscation/code.c", "inventory_order" : 200, "OK_to_edit" : true, "display_as" : "c", @@ -74,7 +74,7 @@ "entry_text" : "debofuscated code main logic" }, { - "file_path" : "deobfuscation/gen.rb", + "file_path" : "obfuscation/gen.rb", "inventory_order" : 200, "OK_to_edit" : true, "display_as" : "ruby", @@ -82,7 +82,7 @@ "entry_text" : "ruby code to compose items and prog.c in artistic way" }, { - "file_path" : "deobfuscation/glyphs.txt", + "file_path" : "obfuscation/glyphs.txt", "inventory_order" : 200, "OK_to_edit" : true, "display_as" : "text", @@ -90,7 +90,7 @@ "entry_text" : "glyphs data for deobfuscation/gen.rb" }, { - "file_path" : "deobfuscation/index.html", + "file_path" : "obfuscation/index.html", "inventory_order" : 200, "OK_to_edit" : true, "display_as" : "html", @@ -98,7 +98,7 @@ "entry_text" : "deobfuscation information web page" }, { - "file_path" : "deobfuscation/prog.c", + "file_path" : "obfuscation/prog.c", "inventory_order" : 200, "OK_to_edit" : true, "display_as" : "c", @@ -106,7 +106,7 @@ "entry_text" : "deobfuscated source code" }, { - "file_path" : "deobfuscation/tmpl.txt", + "file_path" : "obfuscation/tmpl.txt", "inventory_order" : 200, "OK_to_edit" : true, "display_as" : "text", @@ -154,7 +154,7 @@ "entry_text" : "markdown source for this web page" }, { - "file_path" : "deobfuscation/index.md", + "file_path" : "obfuscation/index.md", "inventory_order" : 4000000000, "OK_to_edit" : true, "display_as" : "markdown", diff --git a/2020/endoh2/Makefile b/2020/endoh2/Makefile index 22dbf947d..d65a68187 100644 --- a/2020/endoh2/Makefile +++ b/2020/endoh2/Makefile @@ -115,7 +115,8 @@ ENTRY= endoh2 PROG= prog # OBJ= ${PROG}.o -DATA= bear.txt hello.txt yoda.txt +DATA= bear.txt hello.txt yoda.txt obfuscation/code.c obfuscation/gen.rb obfuscation/glyphs.txt \ + obfuscation/index.md obfuscation/prog.c obfuscation/tmpl.txt TARGET= ${PROG} # ALT_OBJ= diff --git a/2020/endoh2/README.md b/2020/endoh2/README.md index da543526a..3bb97b7bc 100644 --- a/2020/endoh2/README.md +++ b/2020/endoh2/README.md @@ -29,11 +29,11 @@ What happens if you do ## Judges' remarks: -Clever use of the C99 complex data type. The [deobfuscation](deobfuscation/index.html) directory +Clever use of the C99 complex data type. The [obfuscation](obfuscation/index.html) directory contains clues as to how some winning authors create / edit programs into ASCII shapes. -With the source from the [deobfuscation](deobfuscation/index.html) directory could you make the code +With the source from the [obfuscation](obfuscation/index.html) directory could you make the code render for a larger terminal window? How about adding more glyphs? diff --git a/2020/endoh2/index.html b/2020/endoh2/index.html index aac4d5d1c..65169e6c4 100644 --- a/2020/endoh2/index.html +++ b/2020/endoh2/index.html @@ -411,10 +411,10 @@ Location: JP - Japan
          ./prog prog.c

      ?

      Judges’ remarks:

      -

      Clever use of the C99 complex data type. The deobfuscation directory +

      Clever use of the C99 complex data type. The obfuscation directory contains clues as to how some winning authors create / edit programs into ASCII shapes.

      -

      With the source from the deobfuscation directory could you make the code +

      With the source from the obfuscation directory could you make the code render for a larger terminal window? How about adding more glyphs?

      Author’s remarks:

      No! Try not. Do, or do not. There is no try.

      @@ -455,20 +455,20 @@ render for a larger terminal window? How about adding more glyphs?

    • hello.txt - sample input
    • try.sh - script to try entry
    • yoda.txt - sample input
    • -
    • deobfuscation/code.c - debofuscated code main logic
    • -
    • deobfuscation/gen.rb - ruby code to compose items and prog.c in artistic way
    • -
    • deobfuscation/glyphs.txt - glyphs data for deobfuscation/gen.rb
    • -
    • deobfuscation/index.html - deobfuscation information web page
    • -
    • deobfuscation/prog.c - deobfuscated source code
    • -
    • deobfuscation/tmpl.txt - template for deobfuscation/gen.rb output
    • +
    • obfuscation/code.c - debofuscated code main logic
    • +
    • obfuscation/gen.rb - ruby code to compose items and prog.c in artistic way
    • +
    • obfuscation/glyphs.txt - glyphs data for deobfuscation/gen.rb
    • +
    • obfuscation/index.html - deobfuscation information web page
    • +
    • obfuscation/prog.c - deobfuscated source code
    • +
    • obfuscation/tmpl.txt - template for deobfuscation/gen.rb output

    Secondary files

    diff --git a/2020/endoh2/deobfuscation/code.c b/2020/endoh2/obfuscation/code.c similarity index 100% rename from 2020/endoh2/deobfuscation/code.c rename to 2020/endoh2/obfuscation/code.c diff --git a/2020/endoh2/deobfuscation/gen.rb b/2020/endoh2/obfuscation/gen.rb similarity index 100% rename from 2020/endoh2/deobfuscation/gen.rb rename to 2020/endoh2/obfuscation/gen.rb diff --git a/2020/endoh2/deobfuscation/glyphs.txt b/2020/endoh2/obfuscation/glyphs.txt similarity index 100% rename from 2020/endoh2/deobfuscation/glyphs.txt rename to 2020/endoh2/obfuscation/glyphs.txt diff --git a/2020/endoh2/deobfuscation/index.html b/2020/endoh2/obfuscation/index.html similarity index 95% rename from 2020/endoh2/deobfuscation/index.html rename to 2020/endoh2/obfuscation/index.html index d6e005bb6..28b831a11 100644 --- a/2020/endoh2/deobfuscation/index.html +++ b/2020/endoh2/obfuscation/index.html @@ -26,13 +26,13 @@ - + - - - + + + @@ -371,7 +371,7 @@ @@ -382,19 +382,20 @@ - +

    Opening crawl ROT13 decoder

    The program contains dedicated font data for all uppercase alphabet letters.

    The source code of the font is glyphs.txt, which is a sequence of chunks that is a ASCII code (65-90) followed by points data: x,y,ctrl.

    -

    If ctrl is 1, the point is used as control point for quadratic bezier curve.

    -

    code.c is the main logic for the program, which has some placeholders +

    If ctrl is 1, the point is used as control point for quadratic bézier +curve.

    +

    code.c is the main logic for the program, which has some placeholders for font data and something.

    It decompresses the font data and renders a given text by projection. It exploits C99’s double complex type to represent 2D points, but carefully coded so that it does not require any math.h functions; you don’t have to pass -lm to cc.

    -

    tmpl.txt is a template for the program. gen.rb composes +

    tmpl.txt is a template for the program. gen.rb composes the all items and generates prog.c.


    Jump to: top

    @@ -411,7 +412,7 @@ the all items and generates

    Coda

    - Nu HTML check this web page
    + Nu HTML check this web page
    Jump to top Jump to Content

    diff --git a/2020/endoh2/deobfuscation/index.md b/2020/endoh2/obfuscation/index.md similarity index 82% rename from 2020/endoh2/deobfuscation/index.md rename to 2020/endoh2/obfuscation/index.md index 6124e9641..778143f0b 100644 --- a/2020/endoh2/deobfuscation/index.md +++ b/2020/endoh2/obfuscation/index.md @@ -5,9 +5,10 @@ The program contains dedicated font data for all uppercase alphabet letters. The source code of the font is [glyphs.txt](glyphs.txt), which is a sequence of chunks that is a ASCII code (65-90) followed by points data: `x,y,ctrl`. -If `ctrl` is 1, the point is used as control point for quadratic bezier curve. +If `ctrl` is 1, the point is used as control point for quadratic [bézier +curve](https://en.wikipedia.org/wiki/Bézier_curve). -[code.c](%%REPO_URL%%/2020/endoh2/deobfuscation/code.c) is the main logic for the program, which has some placeholders +[code.c](%%REPO_URL%%/2020/endoh2/obfuscation/code.c) is the main logic for the program, which has some placeholders for font data and something. It decompresses the font data and renders a given text by projection. It @@ -15,7 +16,7 @@ exploits `C99`'s `double complex` type to represent 2D points, but carefully coded so that it does not require any `math.h` functions; you don't have to pass `-lm` to `cc`. -[tmpl.txt](tmpl.txt) is a template for the program. [gen.rb](%%REPO_URL%%/2020/endoh2/deobfuscation/gen.rb) composes +[tmpl.txt](tmpl.txt) is a template for the program. [gen.rb](%%REPO_URL%%/2020/endoh2/obfuscation/gen.rb) composes the all items and generates [prog.c](%%REPO_URL%%/2020/endoh2/prog.c). diff --git a/2020/endoh2/deobfuscation/prog.c b/2020/endoh2/obfuscation/prog.c similarity index 100% rename from 2020/endoh2/deobfuscation/prog.c rename to 2020/endoh2/obfuscation/prog.c diff --git a/2020/endoh2/deobfuscation/tmpl.txt b/2020/endoh2/obfuscation/tmpl.txt similarity index 100% rename from 2020/endoh2/deobfuscation/tmpl.txt rename to 2020/endoh2/obfuscation/tmpl.txt diff --git a/2020/ferguson1/HACKING.html b/2020/ferguson1/HACKING.html index 4cd1dd451..b07245b22 100644 --- a/2020/ferguson1/HACKING.html +++ b/2020/ferguson1/HACKING.html @@ -495,7 +495,7 @@ left it might be:

    Please note that modifier keys like ctrl aren’t detectable or at least I’m unaware of how to do so.

    Modifying the status/score line (table of variables/stats below)

    -

    DEOBFUSCATION NOTICE

    +

    OBFUSCATION NOTICE

    Below I give a table of some variables/expressions along with the data types and their respective format specifiers of the data. Originally it was a lot more detailed but as I started obfuscating things variables started to disappear and @@ -507,7 +507,7 @@ different sets. Please also be aware that if you don’t want any information yo must set it to the below at the very least; defining it without a value is not enough (it amounts to the parameters to a printf call):

        #define J " " );
    -

    If you don’t care about brief displays of ‘o’ at 0,0 you can just have:

    +

    If you don’t care about brief displays of ‘o’ at 0,0 you can just have:

        #define J "");

    That’s the bare minimum. Notice also that it’s been a long while since I’ve tested this part but I think this is right.

    @@ -582,15 +582,17 @@ instead. Here are some ideas on how one might choose to implement something like this. Or maybe it’s more like what sorts of things do you have to consider and answer?

      -
    1. If the snake runs back into itself - thus dying - the snake would actually be -slithering inside itself (a rather creepy thought - though they sort of do when -they shed their skin). How then would the lives be of any value? If that would -constitute as running into itself wouldn’t it very quickly lose all lives?

      +
    2. If the snake runs back into itself - thus dying (at least without +CANNIBAL=1) - the snake would actually be slithering inside itself (a rather +creepy thought - though they sort of do when they shed their skin). How then +would the lives be of any value? If that would constitute as running into itself +wouldn’t it very quickly lose all lives?

      I can think of a number of ways to answer this question: by defining specific rules (as in what would be allowed and what wouldn’t be) and also by when to decrement the lives.

    3. -
    4. If the snake hits a wall and it’s not allowed to where would the snake be -placed? This is similar to (1) but maybe not as many things to consider.

    5. +
    6. If the snake hits a wall and it’s not allowed (WALLS=0) to where would the +snake be placed? This is similar to (1) but maybe not as many things to +consider.

    7. Should the snake lose its size? WHAT does having another life even MEAN?

    8. Do you want (you do not necessarily need) a new variable that says how many lives you want? Either way probably be good that it can be specified by the @@ -626,7 +628,7 @@ snake isn’t moving which would mean the player could decide when to resume) an the number of bugs eaten so far. Alternatively you could have the bug simply be placed somewhere where the snake isn’t after replacing (can you replace something with itself?) the snake.

      -

      Question: do you have to save the WALLS and other environmental variables? +

      Question: do you have to save the WALLS and other environmental variables? You wouldn’t have to but you could: if you didn’t it would mean that the player could change the growth size on another run for example, or they could disable or enable a feature.

      @@ -686,7 +688,7 @@ this instead (omitting the inner if statements here):

      Y=Y<2?2:*O-1;

      Again though that’s just the idea; the code is dramatically different. The above incidentally is not even complete.

      -

      You could also have it so depending on the WALLS value have it go through +

      You could also have it so depending on the WALLS value have it go through walls, end game or act as a blockade. If you really wanted you could have some walls you can go through and some you can’t (maybe different colours would be needed?).

      diff --git a/2020/ferguson1/HACKING.md b/2020/ferguson1/HACKING.md index 76848223c..1ffadfd47 100644 --- a/2020/ferguson1/HACKING.md +++ b/2020/ferguson1/HACKING.md @@ -152,7 +152,7 @@ unaware of how to do so. ## Modifying the status/score line (table of variables/stats below) -### DEOBFUSCATION NOTICE +### OBFUSCATION NOTICE Below I give a table of some variables/expressions along with the data types and their respective format specifiers of the data. Originally it was a lot more @@ -170,7 +170,7 @@ enough (it amounts to the parameters to a printf call): #define J " " ); ``` -If you don't care about brief displays of 'o' at 0,0 you can just have: +If you don't care about brief displays of '`o`' at `0,0` you can just have: ``` #define J ""); @@ -284,17 +284,19 @@ instead. Here are some ideas on how one might choose to implement something like this. Or maybe it's more like what sorts of things do you have to consider and answer? -0. If the snake runs back into itself - thus dying - the snake would actually be -slithering inside itself (a rather creepy thought - though they sort of do when -they shed their skin). How then would the lives be of any value? If that would -constitute as running into itself wouldn't it very quickly lose all lives? +0. If the snake runs back into itself - thus dying (at least without +`CANNIBAL=1`) - the snake would actually be slithering inside itself (a rather +creepy thought - though they sort of do when they shed their skin). How then +would the lives be of any value? If that would constitute as running into itself +wouldn't it very quickly lose all lives? I can think of a number of ways to answer this question: by defining specific rules (as in what would be allowed and what wouldn't be) and also by when to decrement the lives. -1. If the snake hits a wall and it's not allowed to where would the snake be -placed? This is similar to (1) but maybe not as many things to consider. +1. If the snake hits a wall and it's not allowed (`WALLS=0`) to where would the +snake be placed? This is similar to (1) but maybe not as many things to +consider. 2. Should the snake lose its size? WHAT does having another life even MEAN? @@ -341,7 +343,7 @@ the number of bugs eaten so far. Alternatively you could have the bug simply be placed somewhere where the snake isn't after replacing (can you replace something with itself?) the snake. -Question: do you have to save the WALLS and other environmental variables? +Question: do you have to save the `WALLS` and other environmental variables? You wouldn't have to but you could: if you didn't it would mean that the player could change the growth size on another run for example, or they could disable or enable a feature. @@ -423,7 +425,7 @@ this instead (omitting the inner if statements here): Again though that's just the idea; the code is dramatically different. The above incidentally is not even complete. -You could also have it so depending on the WALLS value have it go through +You could also have it so depending on the `WALLS` value have it go through walls, end game or act as a blockade. If you really wanted you could have some walls you can go through and some you can't (maybe different colours would be needed?). diff --git a/2020/index.html b/2020/index.html index 7746ce891..1cb6b00fe 100644 --- a/2020/index.html +++ b/2020/index.html @@ -405,7 +405,7 @@ IOCCC list!

      and Snake - 2020/ferguson1.

      An entry, kurdyukov1, pays homage to the previous entry 2015/hou.

      -

      …We’ll stop spouting deobfuscation information now. Have fun exploring all the entries!

      +

      …We’ll stop spouting spoilers now. Have fun exploring all the entries!

      Remarks on some of submissions that did not win

      As a rule, we try to compile the entries on a variety of platforms. Quite a few entries this year could not be built or executed on some of them due to reliance diff --git a/2020/yang/.entry.json b/2020/yang/.entry.json index cc944523b..c4eb97fb1 100644 --- a/2020/yang/.entry.json +++ b/2020/yang/.entry.json @@ -50,12 +50,12 @@ "entry_text" : "encode large file C Pre-PreProcessor source" }, { - "file_path" : "deobfuscation.html", + "file_path" : "obfuscation.html", "inventory_order" : 200, "OK_to_edit" : true, "display_as" : "html", "display_via_github" : false, - "entry_text" : "Deobfuscation information web page" + "entry_text" : "JavaScript page with full recording of development" }, { "file_path" : "2020_yang.tar.bz2", diff --git a/2020/yang/README.md b/2020/yang/README.md index 415391db3..63f1a2b40 100644 --- a/2020/yang/README.md +++ b/2020/yang/README.md @@ -36,8 +36,8 @@ If you use the wrong code, you're gonna have a bad time. What is compiling this entry about? [Having a good .. time](https://southpark.fandom.com/wiki/Asspen/Script)! -This winning entry also comes with a [JavaScript timelapse -deobfuscation](deobfuscation.html) that shows how this entry was written. +This winning entry also comes with a [JavaScript time-lapse +obfuscation](obfuscation.html) that shows how this entry was written. ## Author's remarks: diff --git a/2020/yang/index.html b/2020/yang/index.html index e50105961..a9d0e3d61 100644 --- a/2020/yang/index.html +++ b/2020/yang/index.html @@ -416,8 +416,8 @@ generated output to make them more acceptable to typical compilers. To build:

      Having a good .. time!

      -

      This winning entry also comes with a JavaScript timelapse -deobfuscation that shows how this entry was written.

      +

      This winning entry also comes with a JavaScript time-lapse +obfuscation that shows how this entry was written.

      Author’s remarks:

      Synopsis

          echo "Hello world" | ./prog 12345 > encoded.c
      @@ -522,7 +522,7 @@ then compile it with a c++ compiler of your choice.

    9. prog.orig.c - original source code
    10. try.sh - script to try entry
    11. cppp.cc - encode large file C Pre-PreProcessor source
    12. -
    13. deobfuscation.html - Deobfuscation information web page
    14. +
    15. obfuscation.html - JavaScript page with full recording of development
    16. Secondary files

        diff --git a/2020/yang/deobfuscation.html b/2020/yang/obfuscation.html similarity index 100% rename from 2020/yang/deobfuscation.html rename to 2020/yang/obfuscation.html diff --git a/README.html b/README.html index 749afc324..c369c6a54 100644 --- a/README.html +++ b/README.html @@ -484,12 +484,12 @@ the top of the index.html for each entry as well. Keep in mind that C compilers often have bugs, or features which result the program failing to compile. You may have to do some syntax changing as we did to get old programs to compile on strict ANSI C compilers.

        -

        Last, read the judges’ remarks and deobfuscation information on the program. Hints for foo.c are +

        Last, read the judges’ remarks (and sometimes spoilers) on the program. Hints for foo.c are given in index.html. Often they will contain suggested arguments or -recommended data to use. Authors also sometimes provide deobfuscation information +recommended data to use. Authors also sometimes provide obfuscation information about their entries.

        If you do gain some understanding of how a program works, go back to the source -and reexamine it using some of the techniques outlined above. See if you can +and re-examine it using some of the techniques outlined above. See if you can convince yourself of why the program does what it does.

        Regarding the source archive:

        Each subdirectory contains all the entries for a single year. Often the file diff --git a/README.md b/README.md index 2d01c365a..ac3a6bb69 100644 --- a/README.md +++ b/README.md @@ -128,13 +128,13 @@ often have bugs, or features which result the program failing to compile. You may have to do some syntax changing as we did to get old programs to compile on strict ANSI C compilers. -Last, read the judges' remarks and deobfuscation information on the program. Hints for `foo.c` are +Last, read the judges' remarks (and sometimes spoilers) on the program. Hints for `foo.c` are given in `index.html`. Often they will contain suggested arguments or -recommended data to use. Authors also sometimes provide deobfuscation information +recommended data to use. Authors also sometimes provide obfuscation information about their entries. If you do gain some understanding of how a program works, go back to the source -and reexamine it using some of the techniques outlined above. See if you can +and re-examine it using some of the techniques outlined above. See if you can convince yourself of why the program does what it does. diff --git a/bugs.html b/bugs.html index e7d43a340..14d361e76 100644 --- a/bugs.html +++ b/bugs.html @@ -2812,7 +2812,7 @@ used. (SK), “`sk”, **iiiiiiiii, or11111100011100`.

        Huge memory may be required to compile the program (about 300 MB on my machine).

        In addition, there are some limitations (and workarounds) mentioned in the -Deobfuscation section.

        +obfuscation section.

        –

        2013/endoh3

        diff --git a/bugs.md b/bugs.md index d6b252ee7..204e3205a 100644 --- a/bugs.md +++ b/bugs.md @@ -3509,7 +3509,7 @@ Also, it requires a space between identifiers. In short, use `(S K)` instead of Huge memory may be required to compile the program (about 300 MB on my machine). In addition, there are some limitations (and workarounds) mentioned in the -[Deobfuscation section](2013/endoh1/index.html#deobfuscation). +[obfuscation section](2013/endoh1/index.html#obfuscation). -- diff --git a/faq.html b/faq.html index 3c6db6234..e7341414f 100644 --- a/faq.html +++ b/faq.html @@ -767,14 +767,14 @@ over there.

        then use the How to contact the IOCCC information to ask a private question.

        IMPORTANT: When you ask your question (in public or as a private question) -PLEASE try to NOT discuss detailed about your pending submission. +PLEASE try to NOT discuss detailed information about any pending submission. Try to ask for question in a more generic way as this will help others with a similar question and this will not give away what you might be doing with your submission. If the IOCCC judges truly need more information, they will ask (either in public or suggest a private conversation).

        Again, please don’t hesitate to ask: Your question may be something that -others are wondering about as well.

        -

        See also [FAQ about making suggestions)(#faq0_5).

        +others are wondering about as well!

        +

        See also FAQ about making suggestions.

        FAQ 0.7: - What are the IOCCC best practices for using markdown?

        diff --git a/faq.md b/faq.md index e101f4b23..da5e3c501 100644 --- a/faq.md +++ b/faq.md @@ -506,16 +506,16 @@ then use the [How to contact the IOCCC](contact.html) information to ask a private question. **IMPORTANT**: When you ask your question (in public or as a private question) -**PLEASE** try to **NOT** discuss detailed about your pending submission. +**PLEASE** try to **NOT** discuss detailed information about any pending submission. Try to ask for question in a more generic way as this will help others with a similar question and this will not **give away** what you might be doing with your submission. If the [IOCCC judges](judges.html) truly need more information, they will ask (either in public or suggest a private conversation). Again, **please** don't hesitate to ask: Your question may be something that -others are wondering about as well. +others are wondering about as well! -See also [FAQ about making suggestions)(#faq0_5). +See also [FAQ about making suggestions](#faq0_5).
        diff --git a/thanks-for-help.html b/thanks-for-help.html index efcd57dec..1f300e919 100644 --- a/thanks-for-help.html +++ b/thanks-for-help.html @@ -2183,8 +2183,9 @@ added.

        Winning entry source code: leo.c

        Cody added the try.sh script.

        -

        At our change in how to deal with deobfuscation, Cody also uudecoded the deobfuscation inforation provided -by the author, putting it in deobfuscation.html.

        +

        At our change in how to deal with spoilers, Cody also uudecoded the spoiler +information about the secret switch, provided by the author, putting it in +secret.html.

        Winning entry: 1995/makarios

        Winning entry source code: makarios.c

        @@ -4010,9 +4011,6 @@ to remove some text files so as to not cause problems with an invalid manifest.<

        To silence the annoying misleading indentation warning and to prevent debug symbols from being built with rake Cody also updated the Rakefile slightly.

        -

        Barely worth noting but done nonetheless, Cody renamed the read_me.html -file to deobfuscation.html to be clearer in its purpose as -it is a file with deobfuscation information.

        Winning entry: 2014/endoh2

        Winning entry source code: prog.c

        @@ -4536,7 +4534,9 @@ a friend, whether that’s real or imagined.

        Cody copied the files from the spoiler.zip file (from his copy during the preview period) that was password protected with a password that was no -longer known (but fortunately was already extracted).

        +longer known (but fortunately was already extracted). These files, originally +put in spoiler/ were moved to +obfuscation/.

        He also added the try.sh script.

        Winning entry: 2020/endoh3

        diff --git a/thanks-for-help.md b/thanks-for-help.md index 0e3fed9ac..4fb7a681a 100644 --- a/thanks-for-help.md +++ b/thanks-for-help.md @@ -2546,8 +2546,9 @@ added. [Cody](#cody) added the [try.sh](%%REPO_URL%%/1995/leo/try.sh) script. -At our change in how to deal with deobfuscation, Cody also uudecoded the deobfuscation inforation provided -by the author, putting it in [deobfuscation.html](1995/leo/deobfuscation.html). +At our change in how to deal with spoilers, Cody also uudecoded the spoiler +information about the secret switch, provided by the author, putting it in +[secret.html](1995/leo/secret.html).
        @@ -5121,10 +5122,6 @@ To silence the annoying misleading indentation warning and to prevent debug symbols from being built with `rake` Cody also updated the [Rakefile](%%REPO_URL%%/2014/endoh1/Rakefile) slightly. -**_Barely_** worth noting but done nonetheless, Cody renamed the `read_me.html` -file to [deobfuscation.html](2014/endoh1/deobfuscation.html) to be clearer in its purpose as -it is a file with deobfuscation information. -
        ## Winning entry: [2014/endoh2](2014/endoh2/index.html) @@ -5872,7 +5869,9 @@ a friend, whether that's real or imagined. [Cody](#cody) copied the files from the `spoiler.zip` file (from his copy during the preview period) that was password protected with a password that was no -longer known (but fortunately was already extracted). +longer known (but fortunately was already extracted). These files, originally +put in `spoiler/` were moved to +[obfuscation/](2020/endoh2/obfuscation/index.html). He also added the [try.sh](%%REPO_URL%%/2020/endoh2/try.sh) script. diff --git a/tmp/manifest.csv b/tmp/manifest.csv index 6cc53f6ae..1a10e7f13 100644 --- a/tmp/manifest.csv +++ b/tmp/manifest.csv @@ -1164,14 +1164,14 @@ 1995,leo,leo.c,20,true,c,true,entry source code 1995,leo,Makefile,30,true,makefile,true,entry Makefile 1995,leo,leo.orig.c,50,false,c,true,original source code -1995,leo,deobfuscation.html,100,false,html,false,deobfuscation information web page +1995,leo,secret.html,100,false,html,false,web page with the secret switch 1995,leo,try.sh,100,true,shellscript,true,script to try entry 1995,leo,1995_leo.tar.bz2,1415926535,false,tbz2,false,download entry tarball 1995,leo,README.md,4000000000,true,markdown,true,markdown source for this web page -1995,leo,deobfuscation.md,4000000000,true,markdown,true,markdown source for deobfuscation.html 1995,leo,.entry.json,4000000000,true,json,true,entry summary and manifest in JSON 1995,leo,.gitignore,4000000000,true,gitignore,true,list of files that should not be committed under git 1995,leo,.path,4000000000,false,path,true,directory path from top level directory +1995,leo,secret.md,4000000000,true,markdown,true,markdown source for secret.html 1995,leo,index.html,4294967295,false,html,false,this web page 1995,makarios,makarios.c,20,true,c,true,entry source code 1995,makarios,Makefile,30,true,makefile,true,entry Makefile @@ -1891,7 +1891,7 @@ 2004,hibachi,src/localhost/test/perl/yahoo-ticker.pl,150,true,perl,true,stock price fetch example in Perl 2004,hibachi,src/configure.in,200,true,shellscript,true,GNU Autoconf script 2004,hibachi,src/hibachi-start.sh.in,200,true,shellscript,true,hibachi-start.sh declarations -2004,hibachi,src/localhost/CHANGES-DEOBFUSCATED.TXT,200,true,text,false,Debofuscation change log +2004,hibachi,src/localhost/CHANGES-SPOILER.TXT,200,true,text,false,spoiler change log 2004,hibachi,2004_hibachi.tar.bz2,1415926535,false,tbz2,false,download entry tarball 2004,hibachi,README.md,4000000000,true,markdown,true,markdown source for this web page 2004,hibachi,.entry.json,4000000000,true,json,true,entry summary and manifest in JSON @@ -2809,7 +2809,7 @@ 2012,omoikane,omoikane.c,100,true,c,true,entry source code 2012,omoikane,try.alt.sh,100,true,shellscript,true,script to try alternate code 2012,omoikane,try.sh,100,true,shellscript,true,script to try entry -2012,omoikane,deobfuscation.html,200,true,html,false,Deobfuscation information web page +2012,omoikane,obfuscation.html,200,true,html,false,JavaScript page with full recording of development 2012,omoikane,2012_omoikane.tar.bz2,1415926535,false,tbz2,false,download entry tarball 2012,omoikane,README.md,4000000000,true,markdown,true,markdown source for this web page 2012,omoikane,.entry.json,4000000000,true,json,true,entry summary and manifest in JSON @@ -2819,7 +2819,7 @@ 2012,tromp,tromp.c,20,true,c,true,entry source code 2012,tromp,Makefile,30,true,makefile,true,entry Makefile 2012,tromp,tromp.orig.c,50,true,c,true,original source code -2012,tromp,how.html,100,false,html,false,author supplied debofuscation information +2012,tromp,how.html,100,false,html,false,author supplied obfuscation information 2012,tromp,primes.pl,100,true,perl,true,post process entry output to print primes 2012,tromp,try.sh,100,true,shellscript,true,script to try entry 2012,tromp,hw.bf,150,true,bf,true,hello world brainfuck source code @@ -3226,7 +3226,7 @@ 2013,misaka,misaka.orig.c,50,false,c,true,original source code 2013,misaka,bf.pl,100,true,perl,true,brainfuck interpreter in perl 2013,misaka,try.sh,100,true,shellscript,true,script to try entry -2013,misaka,deobfuscation.html,200,true,html,false,Deobfuscation information web page +2013,misaka,obfuscation.html,200,true,html,false,JavaScript page with full recording of development 2013,misaka,2013_misaka.tar.bz2,1415926535,false,tbz2,false,download entry tarball 2013,misaka,README.md,4000000000,true,markdown,true,markdown source for this web page 2013,misaka,.entry.json,4000000000,true,json,true,entry summary and manifest in JSON @@ -3287,7 +3287,7 @@ 2014,endoh1,Makefile,30,true,makefile,true,entry Makefile 2014,endoh1,prog.orig.c,50,false,c,true,original source code 2014,endoh1,Rakefile,100,true,ruby,true,Ruby Makefile -2014,endoh1,deobfuscation.html,100,false,html,false,Deobfuscation information about Q(uine)R code generator +2014,endoh1,quine-qr.html,100,false,html,false,information about Q(uine)R code generator 2014,endoh1,rake.sh,100,true,shellscript,true,make rake script 2014,endoh1,try.sh,100,true,shellscript,true,script to try entry 2014,endoh1,alpha.rb,150,true,ruby,true,support program for Rakefile @@ -3306,10 +3306,10 @@ 2014,endoh1,vm.c,150,true,c,true,source code of the VM 2014,endoh1,2014_endoh1.tar.bz2,1415926535,false,tbz2,false,download entry tarball 2014,endoh1,README.md,4000000000,true,markdown,true,markdown source for this web page -2014,endoh1,deobfuscation.md,4000000000,true,markdown,true,markdown source for deobfuscation.html 2014,endoh1,.entry.json,4000000000,true,json,true,entry summary and manifest in JSON 2014,endoh1,.gitignore,4000000000,true,gitignore,true,list of files that should not be committed under git 2014,endoh1,.path,4000000000,false,path,true,directory path from top level directory +2014,endoh1,quine-qr.md,4000000000,true,markdown,true,markdown source for deobfuscation.html 2014,endoh1,index.html,4294967295,false,html,false,this web page 2014,endoh2,prog.c,20,true,c,true,entry source code 2014,endoh2,Makefile,30,true,makefile,true,entry Makefile @@ -3368,7 +3368,7 @@ 2014,sinon,glock.sh,100,true,shellscript,true,script to run entry 2014,sinon,hecate.sh,100,true,shellscript,true,script to run entry 2014,sinon,try.sh,100,true,shellscript,true,script to try entry -2014,sinon,deobfuscation.html,200,true,html,false,Deobfuscation information web page +2014,sinon,obfuscation.html,200,true,html,false,JavaScript page with full recording of development 2014,sinon,2014_sinon.tar.bz2,1415926535,false,tbz2,false,download entry tarball 2014,sinon,README.md,4000000000,true,markdown,true,markdown source for this web page 2014,sinon,.entry.json,4000000000,true,json,true,entry summary and manifest in JSON @@ -3417,13 +3417,13 @@ 2015,burton,test32.out,150,true,text,true,test suite comparison data for 32-bit systems 2015,burton,test.in,150,true,text,true,test suite input data 2015,burton,test.out,150,true,text,true,test suite comparison data -2015,burton,deobfuscation.html,200,false,html,false,Deobfuscation information web page +2015,burton,obfuscation.html,200,false,html,false,obfuscation information web page 2015,burton,src.doc.txt,200,true,text,false,hints about the source code 2015,burton,2015_burton.tar.bz2,1415926535,false,tbz2,false,download entry tarball 2015,burton,README.md,4000000000,true,markdown,true,markdown source for this web page -2015,burton,deobfuscation.md,4000000000,true,markdown,true,markdown source for deobfuscation.html 2015,burton,.entry.json,4000000000,true,json,true,entry summary and manifest in JSON 2015,burton,.gitignore,4000000000,true,gitignore,true,list of files that should not be committed under git +2015,burton,obfuscation.md,4000000000,true,markdown,true,markdown source for obfuscation.html 2015,burton,.path,4000000000,false,path,true,directory path from top level directory 2015,burton,road.to.obscurity.md,4000000000,true,markdown,true,markdown source for road.to.obscurity.html 2015,burton,index.html,4294967295,false,html,false,this web page @@ -3516,9 +3516,9 @@ 2015,howe,prog-test.sh,100,true,shellscript,true,script to run test suite 2015,howe,try.sh,100,true,shellscript,true,script to try entry 2015,howe,cc.1,159,true,man,true,cc man page -2015,howe,deobfuscation/Makefile,200,true,makefile,true,Deobfuscation Makefile -2015,howe,deobfuscation/err.h,210,true,c,true,Deobfuscation err.h header file -2015,howe,deobfuscation/prog.c,210,true,c,true,Deobfuscatied source code +2015,howe,deobfuscated/Makefile,200,true,makefile,true,deobfuscated Makefile +2015,howe,deobfuscated/err.h,210,true,c,true,deobfuscated err.h header file +2015,howe,deobfuscated/prog.c,210,true,c,true,deobfuscated source code 2015,howe,war-and-peace.txt,250,true,text,false,War and Peace translated to English 2015,howe,2015_howe.tar.bz2,1415926535,false,tbz2,false,download entry tarball 2015,howe,README.md,4000000000,true,markdown,true,markdown source for this web page @@ -3587,7 +3587,7 @@ 2015,yang,Makefile,30,true,makefile,true,entry Makefile 2015,yang,prog.orig.c,50,false,c,true,original source code 2015,yang,try.sh,100,true,shellscript,true,script to try entry -2015,yang,deobfuscation.html,200,true,html,false,Deobfuscation information web page +2015,yang,obfuscation.html,200,true,html,false,JavaScript page with full recording of development 2015,yang,2015_yang.tar.bz2,1415926535,false,tbz2,false,download entry tarball 2015,yang,README.md,4000000000,true,markdown,true,markdown source for this web page 2015,yang,.entry.json,4000000000,true,json,true,entry summary and manifest in JSON @@ -3598,7 +3598,7 @@ 2018,algmyr,Makefile,30,true,makefile,true,entry Makefile 2018,algmyr,prog.orig.c,50,false,c,true,original source code 2018,algmyr,try.sh,100,true,shellscript,true,script to try entry -2018,algmyr,deobfuscation.png,200,true,image,false,Deobfuscation image +2018,algmyr,spectrogram.png,200,true,image,false,example spectrogram image 2018,algmyr,2018_algmyr.tar.bz2,1415926535,false,tbz2,false,download entry tarball 2018,algmyr,README.md,4000000000,true,markdown,true,markdown source for this web page 2018,algmyr,.entry.json,4000000000,true,json,true,entry summary and manifest in JSON @@ -3835,7 +3835,7 @@ 2018,yang,Makefile,30,true,makefile,true,entry Makefile 2018,yang,prog.orig.c,50,false,c,true,original source code 2018,yang,try.sh,100,true,shellscript,true,script to try entry -2018,yang,deobfuscation.html,200,true,html,false,Deobfuscation information web page +2018,yang,obfuscation.html,200,true,html,false,JavaScript page with full recording of development 2018,yang,2018_yang.tar.bz2,1415926535,false,tbz2,false,download entry tarball 2018,yang,README.md,4000000000,true,markdown,true,markdown source for this web page 2018,yang,.entry.json,4000000000,true,json,true,entry summary and manifest in JSON @@ -3848,7 +3848,7 @@ 2019,adamovsky,try.sh,100,true,shellscript,true,script to try entry 2019,adamovsky,advent.unl,200,true,text,true,unlambda script 2019,adamovsky,crash.unl,200,true,text,true,unlambda script -2019,adamovsky,deobfuscation.c,200,true,c,true,Deobfuscated source code +2019,adamovsky,deobfuscated.c,200,true,c,true,deobfuscated source code 2019,adamovsky,iocccsize_2018.c,200,true,c,true,2018 iocccsize.c source 2019,adamovsky,sierpinski.unl,200,true,text,true,unlambda code 2019,adamovsky,spam.unl,200,true,text,true,unlambda code @@ -4049,7 +4049,7 @@ 2019,yang,sample_input.txt,100,true,text,false,sample input 2019,yang,try.sh,100,true,shellscript,true,script to try entry 2019,yang,violet.c,150,true,c,true,source formatter as ASCII Violet Evergarden -2019,yang,deobfuscation.html,200,true,html,false,Deobfuscation information web page +2019,yang,obfuscation.html,200,true,html,false,JavaScript page with full recording of development 2019,yang,2019_yang.tar.bz2,1415926535,false,tbz2,false,download entry tarball 2019,yang,README.md,4000000000,true,markdown,true,markdown source for this web page 2019,yang,.entry.json,4000000000,true,json,true,entry summary and manifest in JSON @@ -4103,17 +4103,17 @@ 2020,endoh2,hello.txt,100,true,text,false,sample input 2020,endoh2,try.sh,100,true,shellscript,true,script to try entry 2020,endoh2,yoda.txt,100,true,text,false,sample input -2020,endoh2,deobfuscation/code.c,200,true,c,true,debofuscated code main logic -2020,endoh2,deobfuscation/gen.rb,200,true,ruby,true,ruby code to compose items and prog.c in artistic way -2020,endoh2,deobfuscation/glyphs.txt,200,true,text,false,glyphs data for deobfuscation/gen.rb -2020,endoh2,deobfuscation/index.html,200,true,html,false,deobfuscation information web page -2020,endoh2,deobfuscation/prog.c,200,true,c,true,deobfuscated source code -2020,endoh2,deobfuscation/tmpl.txt,200,true,text,false,template for deobfuscation/gen.rb output +2020,endoh2,obfuscation/code.c,200,true,c,true,debofuscated code main logic +2020,endoh2,obfuscation/gen.rb,200,true,ruby,true,ruby code to compose items and prog.c in artistic way +2020,endoh2,obfuscation/glyphs.txt,200,true,text,false,glyphs data for deobfuscation/gen.rb +2020,endoh2,obfuscation/index.html,200,true,html,false,deobfuscation information web page +2020,endoh2,obfuscation/prog.c,200,true,c,true,deobfuscated source code +2020,endoh2,obfuscation/tmpl.txt,200,true,text,false,template for deobfuscation/gen.rb output 2020,endoh2,2020_endoh2.tar.bz2,1415926535,false,tbz2,false,download entry tarball 2020,endoh2,README.md,4000000000,true,markdown,true,markdown source for this web page -2020,endoh2,deobfuscation/index.md,4000000000,true,markdown,true,markdown source for deobfuscationr/index.html 2020,endoh2,.entry.json,4000000000,true,json,true,entry summary and manifest in JSON 2020,endoh2,.gitignore,4000000000,true,gitignore,true,list of files that should not be committed under git +2020,endoh2,obfuscation/index.md,4000000000,true,markdown,true,markdown source for deobfuscationr/index.html 2020,endoh2,.path,4000000000,false,path,true,directory path from top level directory 2020,endoh2,index.html,4294967295,false,html,false,this web page 2020,endoh3,prog.c,20,true,c,true,entry source code @@ -4287,7 +4287,7 @@ 2020,yang,prog.orig.c,50,false,c,true,original source code 2020,yang,try.sh,100,true,shellscript,true,script to try entry 2020,yang,cppp.cc,150,true,c,true,encode large file C Pre-PreProcessor source -2020,yang,deobfuscation.html,200,true,html,false,Deobfuscation information web page +2020,yang,obfuscation.html,200,true,html,false,JavaScript page with full recording of development 2020,yang,2020_yang.tar.bz2,1415926535,false,tbz2,false,download entry tarball 2020,yang,README.md,4000000000,true,markdown,true,markdown source for this web page 2020,yang,.entry.json,4000000000,true,json,true,entry summary and manifest in JSON diff --git a/tmp/manifest.numbers b/tmp/manifest.numbers index 3089d950f8782e7314253e6a736c5920d93c859c..42a4813e7e2bbbbff06cbf91809af7320904c3f1 100644 GIT binary patch delta 59127 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 delta 58694 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

        hWoAd6K${a$`hPzM`EV?E}>$V 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⪻t7S|L(~}F?(5l<*g`z=Bl(3h=RH2{3hwrd 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 z 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 diff --git a/tmp/path_list.built.txt b/tmp/path_list.built.txt index da9176958..c1bfc4711 100644 --- a/tmp/path_list.built.txt +++ b/tmp/path_list.built.txt @@ -397,9 +397,9 @@ 1995/heathbar/index.html 1995/leo/.path 1995/leo/1995_leo.tar.bz2 -1995/leo/deobfuscation.html 1995/leo/index.html 1995/leo/leo.orig.c +1995/leo/secret.html 1995/makarios/.path 1995/makarios/1995_makarios.tar.bz2 1995/makarios/index.html @@ -956,9 +956,9 @@ 2014/deak/prog.orig.c 2014/endoh1/.path 2014/endoh1/2014_endoh1.tar.bz2 -2014/endoh1/deobfuscation.html 2014/endoh1/index.html 2014/endoh1/prog.orig.c +2014/endoh1/quine-qr.html 2014/endoh2/.path 2014/endoh2/2014_endoh2.tar.bz2 2014/endoh2/index.html @@ -993,8 +993,8 @@ 2014/wiedijk/prog.orig.c 2015/burton/.path 2015/burton/2015_burton.tar.bz2 -2015/burton/deobfuscation.html 2015/burton/index.html +2015/burton/obfuscation.html 2015/burton/prog.orig.c 2015/burton/road.to.obscurity.html 2015/dogon/.path diff --git a/tmp/path_list.found.txt b/tmp/path_list.found.txt index 54c6d8faf..c04b4ac0e 100644 --- a/tmp/path_list.found.txt +++ b/tmp/path_list.found.txt @@ -1166,11 +1166,11 @@ 1995/leo/1995_leo.tar.bz2 1995/leo/Makefile 1995/leo/README.md -1995/leo/deobfuscation.html -1995/leo/deobfuscation.md 1995/leo/index.html 1995/leo/leo.c 1995/leo/leo.orig.c +1995/leo/secret.html +1995/leo/secret.md 1995/leo/try.sh 1995/makarios/.entry.json 1995/makarios/.gitignore @@ -1888,8 +1888,8 @@ 2004/hibachi/src/configure.in 2004/hibachi/src/hibachi-start.sh 2004/hibachi/src/hibachi-start.sh.in -2004/hibachi/src/localhost/CHANGES-DEOBFUSCATED.TXT 2004/hibachi/src/localhost/CHANGES-OBFUSCATED.TXT +2004/hibachi/src/localhost/CHANGES-SPOILER.TXT 2004/hibachi/src/localhost/Img/cygwin-icon.gif 2004/hibachi/src/localhost/Img/freebsd.gif 2004/hibachi/src/localhost/Img/hibachi-256-oc-nc-300x150.gif @@ -2807,8 +2807,8 @@ 2012/omoikane/2012_omoikane.tar.bz2 2012/omoikane/Makefile 2012/omoikane/README.md -2012/omoikane/deobfuscation.html 2012/omoikane/index.html +2012/omoikane/obfuscation.html 2012/omoikane/omoikane.alt.c 2012/omoikane/omoikane.alt2.c 2012/omoikane/omoikane.c @@ -3227,10 +3227,10 @@ 2013/misaka/Makefile 2013/misaka/README.md 2013/misaka/bf.pl -2013/misaka/deobfuscation.html 2013/misaka/index.html 2013/misaka/misaka.c 2013/misaka/misaka.orig.c +2013/misaka/obfuscation.html 2013/misaka/try.sh 2013/morgan1/.entry.json 2013/morgan1/.gitignore @@ -3292,8 +3292,6 @@ 2014/endoh1/alpha.rb 2014/endoh1/assemble.rb 2014/endoh1/ast-def.rb -2014/endoh1/deobfuscation.html -2014/endoh1/deobfuscation.md 2014/endoh1/gen-prog.rb 2014/endoh1/gen-table.rb 2014/endoh1/index.html @@ -3303,6 +3301,8 @@ 2014/endoh1/prog-tmpl.c 2014/endoh1/prog.c 2014/endoh1/prog.orig.c +2014/endoh1/quine-qr.html +2014/endoh1/quine-qr.md 2014/endoh1/rake.sh 2014/endoh1/register.rb 2014/endoh1/serialize.rb @@ -3367,10 +3367,10 @@ 2014/sinon/2014_sinon.tar.bz2 2014/sinon/Makefile 2014/sinon/README.md -2014/sinon/deobfuscation.html 2014/sinon/glock.sh 2014/sinon/hecate.sh 2014/sinon/index.html +2014/sinon/obfuscation.html 2014/sinon/prog.c 2014/sinon/prog.orig.c 2014/sinon/try.sh @@ -3411,9 +3411,9 @@ 2015/burton/Makefile 2015/burton/README.md 2015/burton/calc.1 -2015/burton/deobfuscation.html -2015/burton/deobfuscation.md 2015/burton/index.html +2015/burton/obfuscation.html +2015/burton/obfuscation.md 2015/burton/prog.alt.c 2015/burton/prog.c 2015/burton/prog.orig.c @@ -3514,9 +3514,9 @@ 2015/howe/README.md 2015/howe/avgtime.sh 2015/howe/cc.1 -2015/howe/deobfuscation/Makefile -2015/howe/deobfuscation/err.h -2015/howe/deobfuscation/prog.c +2015/howe/deobfuscated/Makefile +2015/howe/deobfuscated/err.h +2015/howe/deobfuscated/prog.c 2015/howe/index.html 2015/howe/makeholes.c 2015/howe/prog-test.sh @@ -3588,8 +3588,8 @@ 2015/yang/2015_yang.tar.bz2 2015/yang/Makefile 2015/yang/README.md -2015/yang/deobfuscation.html 2015/yang/index.html +2015/yang/obfuscation.html 2015/yang/prog.c 2015/yang/prog.orig.c 2015/yang/try.sh @@ -3599,10 +3599,10 @@ 2018/algmyr/2018_algmyr.tar.bz2 2018/algmyr/Makefile 2018/algmyr/README.md -2018/algmyr/deobfuscation.png 2018/algmyr/index.html 2018/algmyr/prog.c 2018/algmyr/prog.orig.c +2018/algmyr/spectrogram.png 2018/algmyr/try.sh 2018/anderson/.entry.json 2018/anderson/.gitignore @@ -3836,8 +3836,8 @@ 2018/yang/2018_yang.tar.bz2 2018/yang/Makefile 2018/yang/README.md -2018/yang/deobfuscation.html 2018/yang/index.html +2018/yang/obfuscation.html 2018/yang/prog.c 2018/yang/prog.orig.c 2018/yang/try.sh @@ -3849,7 +3849,7 @@ 2019/adamovsky/README.md 2019/adamovsky/advent.unl 2019/adamovsky/crash.unl -2019/adamovsky/deobfuscation.c +2019/adamovsky/deobfuscated.c 2019/adamovsky/index.html 2019/adamovsky/iocccsize_2018.c 2019/adamovsky/prog.c @@ -4047,9 +4047,9 @@ 2019/yang/2019_yang.tar.bz2 2019/yang/Makefile 2019/yang/README.md -2019/yang/deobfuscation.html 2019/yang/index.html 2019/yang/ioccc.txt +2019/yang/obfuscation.html 2019/yang/prog.c 2019/yang/prog.orig.c 2019/yang/sample_input.txt @@ -4102,15 +4102,15 @@ 2020/endoh2/Makefile 2020/endoh2/README.md 2020/endoh2/bear.txt -2020/endoh2/deobfuscation/code.c -2020/endoh2/deobfuscation/gen.rb -2020/endoh2/deobfuscation/glyphs.txt -2020/endoh2/deobfuscation/index.html -2020/endoh2/deobfuscation/index.md -2020/endoh2/deobfuscation/prog.c -2020/endoh2/deobfuscation/tmpl.txt 2020/endoh2/hello.txt 2020/endoh2/index.html +2020/endoh2/obfuscation/code.c +2020/endoh2/obfuscation/gen.rb +2020/endoh2/obfuscation/glyphs.txt +2020/endoh2/obfuscation/index.html +2020/endoh2/obfuscation/index.md +2020/endoh2/obfuscation/prog.c +2020/endoh2/obfuscation/tmpl.txt 2020/endoh2/prog.c 2020/endoh2/prog.orig.c 2020/endoh2/try.sh @@ -4288,8 +4288,8 @@ 2020/yang/Makefile 2020/yang/README.md 2020/yang/cppp.cc -2020/yang/deobfuscation.html 2020/yang/index.html +2020/yang/obfuscation.html 2020/yang/prog.c 2020/yang/prog.orig.c 2020/yang/try.sh diff --git a/tmp/path_list.manifest.txt b/tmp/path_list.manifest.txt index 54c6d8faf..c04b4ac0e 100644 --- a/tmp/path_list.manifest.txt +++ b/tmp/path_list.manifest.txt @@ -1166,11 +1166,11 @@ 1995/leo/1995_leo.tar.bz2 1995/leo/Makefile 1995/leo/README.md -1995/leo/deobfuscation.html -1995/leo/deobfuscation.md 1995/leo/index.html 1995/leo/leo.c 1995/leo/leo.orig.c +1995/leo/secret.html +1995/leo/secret.md 1995/leo/try.sh 1995/makarios/.entry.json 1995/makarios/.gitignore @@ -1888,8 +1888,8 @@ 2004/hibachi/src/configure.in 2004/hibachi/src/hibachi-start.sh 2004/hibachi/src/hibachi-start.sh.in -2004/hibachi/src/localhost/CHANGES-DEOBFUSCATED.TXT 2004/hibachi/src/localhost/CHANGES-OBFUSCATED.TXT +2004/hibachi/src/localhost/CHANGES-SPOILER.TXT 2004/hibachi/src/localhost/Img/cygwin-icon.gif 2004/hibachi/src/localhost/Img/freebsd.gif 2004/hibachi/src/localhost/Img/hibachi-256-oc-nc-300x150.gif @@ -2807,8 +2807,8 @@ 2012/omoikane/2012_omoikane.tar.bz2 2012/omoikane/Makefile 2012/omoikane/README.md -2012/omoikane/deobfuscation.html 2012/omoikane/index.html +2012/omoikane/obfuscation.html 2012/omoikane/omoikane.alt.c 2012/omoikane/omoikane.alt2.c 2012/omoikane/omoikane.c @@ -3227,10 +3227,10 @@ 2013/misaka/Makefile 2013/misaka/README.md 2013/misaka/bf.pl -2013/misaka/deobfuscation.html 2013/misaka/index.html 2013/misaka/misaka.c 2013/misaka/misaka.orig.c +2013/misaka/obfuscation.html 2013/misaka/try.sh 2013/morgan1/.entry.json 2013/morgan1/.gitignore @@ -3292,8 +3292,6 @@ 2014/endoh1/alpha.rb 2014/endoh1/assemble.rb 2014/endoh1/ast-def.rb -2014/endoh1/deobfuscation.html -2014/endoh1/deobfuscation.md 2014/endoh1/gen-prog.rb 2014/endoh1/gen-table.rb 2014/endoh1/index.html @@ -3303,6 +3301,8 @@ 2014/endoh1/prog-tmpl.c 2014/endoh1/prog.c 2014/endoh1/prog.orig.c +2014/endoh1/quine-qr.html +2014/endoh1/quine-qr.md 2014/endoh1/rake.sh 2014/endoh1/register.rb 2014/endoh1/serialize.rb @@ -3367,10 +3367,10 @@ 2014/sinon/2014_sinon.tar.bz2 2014/sinon/Makefile 2014/sinon/README.md -2014/sinon/deobfuscation.html 2014/sinon/glock.sh 2014/sinon/hecate.sh 2014/sinon/index.html +2014/sinon/obfuscation.html 2014/sinon/prog.c 2014/sinon/prog.orig.c 2014/sinon/try.sh @@ -3411,9 +3411,9 @@ 2015/burton/Makefile 2015/burton/README.md 2015/burton/calc.1 -2015/burton/deobfuscation.html -2015/burton/deobfuscation.md 2015/burton/index.html +2015/burton/obfuscation.html +2015/burton/obfuscation.md 2015/burton/prog.alt.c 2015/burton/prog.c 2015/burton/prog.orig.c @@ -3514,9 +3514,9 @@ 2015/howe/README.md 2015/howe/avgtime.sh 2015/howe/cc.1 -2015/howe/deobfuscation/Makefile -2015/howe/deobfuscation/err.h -2015/howe/deobfuscation/prog.c +2015/howe/deobfuscated/Makefile +2015/howe/deobfuscated/err.h +2015/howe/deobfuscated/prog.c 2015/howe/index.html 2015/howe/makeholes.c 2015/howe/prog-test.sh @@ -3588,8 +3588,8 @@ 2015/yang/2015_yang.tar.bz2 2015/yang/Makefile 2015/yang/README.md -2015/yang/deobfuscation.html 2015/yang/index.html +2015/yang/obfuscation.html 2015/yang/prog.c 2015/yang/prog.orig.c 2015/yang/try.sh @@ -3599,10 +3599,10 @@ 2018/algmyr/2018_algmyr.tar.bz2 2018/algmyr/Makefile 2018/algmyr/README.md -2018/algmyr/deobfuscation.png 2018/algmyr/index.html 2018/algmyr/prog.c 2018/algmyr/prog.orig.c +2018/algmyr/spectrogram.png 2018/algmyr/try.sh 2018/anderson/.entry.json 2018/anderson/.gitignore @@ -3836,8 +3836,8 @@ 2018/yang/2018_yang.tar.bz2 2018/yang/Makefile 2018/yang/README.md -2018/yang/deobfuscation.html 2018/yang/index.html +2018/yang/obfuscation.html 2018/yang/prog.c 2018/yang/prog.orig.c 2018/yang/try.sh @@ -3849,7 +3849,7 @@ 2019/adamovsky/README.md 2019/adamovsky/advent.unl 2019/adamovsky/crash.unl -2019/adamovsky/deobfuscation.c +2019/adamovsky/deobfuscated.c 2019/adamovsky/index.html 2019/adamovsky/iocccsize_2018.c 2019/adamovsky/prog.c @@ -4047,9 +4047,9 @@ 2019/yang/2019_yang.tar.bz2 2019/yang/Makefile 2019/yang/README.md -2019/yang/deobfuscation.html 2019/yang/index.html 2019/yang/ioccc.txt +2019/yang/obfuscation.html 2019/yang/prog.c 2019/yang/prog.orig.c 2019/yang/sample_input.txt @@ -4102,15 +4102,15 @@ 2020/endoh2/Makefile 2020/endoh2/README.md 2020/endoh2/bear.txt -2020/endoh2/deobfuscation/code.c -2020/endoh2/deobfuscation/gen.rb -2020/endoh2/deobfuscation/glyphs.txt -2020/endoh2/deobfuscation/index.html -2020/endoh2/deobfuscation/index.md -2020/endoh2/deobfuscation/prog.c -2020/endoh2/deobfuscation/tmpl.txt 2020/endoh2/hello.txt 2020/endoh2/index.html +2020/endoh2/obfuscation/code.c +2020/endoh2/obfuscation/gen.rb +2020/endoh2/obfuscation/glyphs.txt +2020/endoh2/obfuscation/index.html +2020/endoh2/obfuscation/index.md +2020/endoh2/obfuscation/prog.c +2020/endoh2/obfuscation/tmpl.txt 2020/endoh2/prog.c 2020/endoh2/prog.orig.c 2020/endoh2/try.sh @@ -4288,8 +4288,8 @@ 2020/yang/Makefile 2020/yang/README.md 2020/yang/cppp.cc -2020/yang/deobfuscation.html 2020/yang/index.html +2020/yang/obfuscation.html 2020/yang/prog.c 2020/yang/prog.orig.c 2020/yang/try.sh diff --git a/tmp/path_list.required.txt b/tmp/path_list.required.txt index 886f8db86..469caf332 100644 --- a/tmp/path_list.required.txt +++ b/tmp/path_list.required.txt @@ -767,8 +767,8 @@ 1995/leo/.gitignore 1995/leo/Makefile 1995/leo/README.md -1995/leo/deobfuscation.md 1995/leo/leo.c +1995/leo/secret.md 1995/leo/try.sh 1995/makarios/.entry.json 1995/makarios/.gitignore @@ -1246,8 +1246,8 @@ 2004/hibachi/src/configure.in 2004/hibachi/src/hibachi-start.sh 2004/hibachi/src/hibachi-start.sh.in -2004/hibachi/src/localhost/CHANGES-DEOBFUSCATED.TXT 2004/hibachi/src/localhost/CHANGES-OBFUSCATED.TXT +2004/hibachi/src/localhost/CHANGES-SPOILER.TXT 2004/hibachi/src/localhost/Img/cygwin-icon.gif 2004/hibachi/src/localhost/Img/freebsd.gif 2004/hibachi/src/localhost/Img/hibachi-256-oc-nc-300x150.gif @@ -1933,7 +1933,7 @@ 2012/omoikane/.gitignore 2012/omoikane/Makefile 2012/omoikane/README.md -2012/omoikane/deobfuscation.html +2012/omoikane/obfuscation.html 2012/omoikane/omoikane.alt.c 2012/omoikane/omoikane.alt2.c 2012/omoikane/omoikane.c @@ -2292,8 +2292,8 @@ 2013/misaka/Makefile 2013/misaka/README.md 2013/misaka/bf.pl -2013/misaka/deobfuscation.html 2013/misaka/misaka.c +2013/misaka/obfuscation.html 2013/misaka/try.sh 2013/morgan1/.entry.json 2013/morgan1/.gitignore @@ -2334,7 +2334,6 @@ 2014/endoh1/alpha.rb 2014/endoh1/assemble.rb 2014/endoh1/ast-def.rb -2014/endoh1/deobfuscation.md 2014/endoh1/gen-prog.rb 2014/endoh1/gen-table.rb 2014/endoh1/link.rb @@ -2342,6 +2341,7 @@ 2014/endoh1/parse.rb 2014/endoh1/prog-tmpl.c 2014/endoh1/prog.c +2014/endoh1/quine-qr.md 2014/endoh1/rake.sh 2014/endoh1/register.rb 2014/endoh1/serialize.rb @@ -2388,9 +2388,9 @@ 2014/sinon/.gitignore 2014/sinon/Makefile 2014/sinon/README.md -2014/sinon/deobfuscation.html 2014/sinon/glock.sh 2014/sinon/hecate.sh +2014/sinon/obfuscation.html 2014/sinon/prog.c 2014/sinon/try.sh 2014/skeggs/.entry.json @@ -2416,7 +2416,7 @@ 2015/burton/Makefile 2015/burton/README.md 2015/burton/calc.1 -2015/burton/deobfuscation.md +2015/burton/obfuscation.md 2015/burton/prog.alt.c 2015/burton/prog.c 2015/burton/road.to.obscurity.md @@ -2485,9 +2485,9 @@ 2015/howe/README.md 2015/howe/avgtime.sh 2015/howe/cc.1 -2015/howe/deobfuscation/Makefile -2015/howe/deobfuscation/err.h -2015/howe/deobfuscation/prog.c +2015/howe/deobfuscated/Makefile +2015/howe/deobfuscated/err.h +2015/howe/deobfuscated/prog.c 2015/howe/makeholes.c 2015/howe/prog-test.sh 2015/howe/prog.alt.c @@ -2539,15 +2539,15 @@ 2015/yang/.gitignore 2015/yang/Makefile 2015/yang/README.md -2015/yang/deobfuscation.html +2015/yang/obfuscation.html 2015/yang/prog.c 2015/yang/try.sh 2018/algmyr/.entry.json 2018/algmyr/.gitignore 2018/algmyr/Makefile 2018/algmyr/README.md -2018/algmyr/deobfuscation.png 2018/algmyr/prog.c +2018/algmyr/spectrogram.png 2018/algmyr/try.sh 2018/anderson/.entry.json 2018/anderson/.gitignore @@ -2724,7 +2724,7 @@ 2018/yang/.gitignore 2018/yang/Makefile 2018/yang/README.md -2018/yang/deobfuscation.html +2018/yang/obfuscation.html 2018/yang/prog.c 2018/yang/try.sh 2019/adamovsky/.entry.json @@ -2733,7 +2733,7 @@ 2019/adamovsky/README.md 2019/adamovsky/advent.unl 2019/adamovsky/crash.unl -2019/adamovsky/deobfuscation.c +2019/adamovsky/deobfuscated.c 2019/adamovsky/iocccsize_2018.c 2019/adamovsky/prog.c 2019/adamovsky/sierpinski.unl @@ -2879,8 +2879,8 @@ 2019/yang/.gitignore 2019/yang/Makefile 2019/yang/README.md -2019/yang/deobfuscation.html 2019/yang/ioccc.txt +2019/yang/obfuscation.html 2019/yang/prog.c 2019/yang/sample_input.txt 2019/yang/try.sh @@ -2918,14 +2918,14 @@ 2020/endoh2/Makefile 2020/endoh2/README.md 2020/endoh2/bear.txt -2020/endoh2/deobfuscation/code.c -2020/endoh2/deobfuscation/gen.rb -2020/endoh2/deobfuscation/glyphs.txt -2020/endoh2/deobfuscation/index.html -2020/endoh2/deobfuscation/index.md -2020/endoh2/deobfuscation/prog.c -2020/endoh2/deobfuscation/tmpl.txt 2020/endoh2/hello.txt +2020/endoh2/obfuscation/code.c +2020/endoh2/obfuscation/gen.rb +2020/endoh2/obfuscation/glyphs.txt +2020/endoh2/obfuscation/index.html +2020/endoh2/obfuscation/index.md +2020/endoh2/obfuscation/prog.c +2020/endoh2/obfuscation/tmpl.txt 2020/endoh2/prog.c 2020/endoh2/try.sh 2020/endoh2/yoda.txt @@ -3049,6 +3049,6 @@ 2020/yang/Makefile 2020/yang/README.md 2020/yang/cppp.cc -2020/yang/deobfuscation.html +2020/yang/obfuscation.html 2020/yang/prog.c 2020/yang/try.sh