The sections have been modified a fair amount. The Entries menu has been extended to have: Fixing entries, Updating author info, Thanks for the help. The first two were moved from FAQ and the last one from About. The rationale for these, in order: entries and authors have to do with entries and most of the help involves entries. It also has to do with website but in 'about' it does not seem the right place, unless maybe it is renamed to 'Credits' or something (I am not suggesting this one way or the other). This one is debatable but that was the rationale. The Status menu has been extended to have: Markdown guidelines and Security policy. The rationale is that the markdown guidelines are part of contest guidelines and the security policy is about the status of the entries and how if there are any security problems they will not be addressed (instead of about the IOCCC). The FAQ was extended to have: Compiling entries, Running entries, How to help. The reason to not have compiling and running entries under Entries is because this is 'how to' and also the menu was too long. How to help seems like a good idea under FAQ too (was in About). About was extended to have the new 'about.html' page (from about.md). This is a rare case where a new file is useful as it fits under 'About'. The menu now is: Home page, About the IOCCC, The Judges, Contact us. I was pondering the 'About [the IOCCC]' at the top and also naming it 'About us' but it seemed like a link to index.html was necessary and as for 'about us' it seemed less clear as to whether it was about the judges or the contest itself. The FAQ has been updated slightly for this. After further inspection the bin/index.html and the inc/index.html links were removed from the about section. With these changes, renaming an item or slight reordering notwithstanding, I believe that #2006 is probably in good shape.
733 lines
29 KiB
HTML
733 lines
29 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||
<!-- START: two lines up starts content from: inc/top.default.html -->
|
||
|
||
<!-- END: this line ends content from: inc/top.default.html -->
|
||
<!-- START: this line starts content from: inc/head.default.html -->
|
||
|
||
<head>
|
||
<link rel="stylesheet" href="../../ioccc.css">
|
||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap" rel="stylesheet">
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||
<title>2014/birken - Best use of port 1701</title>
|
||
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
|
||
<meta name="description" content="2014 IOCCC entry birken - Best use of port 1701">
|
||
<meta name="keywords" content="IOCCC, 2014, IOCCC 2014, IOCCC entry, birken, Best use of port 1701">
|
||
</head>
|
||
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
|
||
<!-- END: this line ends content from: inc/head.default.html -->
|
||
|
||
<!-- -->
|
||
<!-- This web page was formed via the tool: bin/readme2index.sh -->
|
||
<!-- The content of main section of this web page came from: 2014/birken/README.md -->
|
||
<!-- -->
|
||
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2014/birken/README.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2014/birken/README.md !!! -->
|
||
<!-- !!! Do not modify this web page, instead modify the file: 2014/birken/README.md !!! -->
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
|
||
<!-- Markdown content was converted into HTML via the tool: bin/md2html.sh -->
|
||
|
||
<!-- START: this line starts content from: inc/body.default.html -->
|
||
|
||
<body>
|
||
|
||
<!-- END: this line ends content from: inc/body.default.html -->
|
||
<!-- START: this line starts content from: inc/topbar.default.html -->
|
||
|
||
<div class="theader">
|
||
<nav class="topbar">
|
||
<div class="container">
|
||
<div class="logo">
|
||
<a href="../../index.html" class="logo-link">
|
||
IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="topbar-items">
|
||
<div class="item">
|
||
<span class="item-header">
|
||
Entries
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../../years.html" class="sub-item-link">
|
||
Winning entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../authors.html" class="sub-item-link">
|
||
Winning authors
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../location.html" class="sub-item-link">
|
||
Location of authors
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../bugs.html" class="sub-item-link">
|
||
Bugs and (mis)features
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#fix_an_entry" class="sub-item-link">
|
||
Fixing entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#fix_author" class="sub-item-link">
|
||
Updating author info
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../thanks-for-help.html" class="sub-item-link">
|
||
Thanks for the help
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
Status
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../../news.html" class="sub-item-link">
|
||
News
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../status.html" class="sub-item-link">
|
||
Contest status
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../next/index.html" class="sub-item-link">
|
||
Rules and guidelines
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../markdown.html" class="sub-item-link">
|
||
Markdown guidelines
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../SECURITY.html" class="sub-item-link">
|
||
Security policy
|
||
</a>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
FAQ
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html" class="sub-item-link">
|
||
Frequently Asked Questions
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#submit" class="sub-item-link">
|
||
How to enter
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#compiling" class="sub-item-link">
|
||
Compiling entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#running_entries" class="sub-item-link">
|
||
Running entries
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../faq.html#help" class="sub-item-link">
|
||
How to help
|
||
</a>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="item">
|
||
<span class="item-header">
|
||
About
|
||
</span>
|
||
|
||
<div class="sub-item">
|
||
<div class="outfit-font">
|
||
<a href="../../index.html" class="sub-item-link">
|
||
Home page
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../about.html" class="sub-item-link">
|
||
About the IOCCC
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../judges.html" class="sub-item-link">
|
||
The Judges
|
||
</a>
|
||
</div>
|
||
|
||
<div class="outfit-font">
|
||
<a href="../../contact.html" class="sub-item-link">
|
||
Contact us
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<div class="header-mobile-menu">
|
||
<noscript>
|
||
<a href="../../nojs-menu.html" class="topbar-js-label">
|
||
Please Enable JavaScript
|
||
</a>
|
||
</noscript>
|
||
|
||
<button id="header-open-menu-button" class="topbar-mobile-menu">
|
||
<img
|
||
src="../../png/hamburger-icon-open.png"
|
||
alt="hamburger style menu icon - open state"
|
||
width=48
|
||
height=48>
|
||
</button>
|
||
|
||
<button id="header-close-menu-button" class="hide-content">
|
||
<img
|
||
src="../../png/hamburger-icon-closed.png"
|
||
alt="hamburger style menu icon - closed state"
|
||
width=48
|
||
height=48>
|
||
</button>
|
||
|
||
<div id="mobile-menu-panel" class="hide-content">
|
||
<div class="mobile-menu-container">
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
<div class="mobile-menu-item">
|
||
Entries
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../years.html">
|
||
Winning entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../authors.html">
|
||
Winning authors
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../location.html">
|
||
Location of authors
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../bugs.html">
|
||
Bugs and (mis)features
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#fix_an_entry">
|
||
Fixing entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#fix_author">
|
||
Updating author info
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../thanks-for-help.html">
|
||
Thanks for the help
|
||
</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
|
||
<div class="mobile-menu-item">
|
||
Status
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../news.html">
|
||
News
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../status.html">
|
||
Contest status
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../next/index.html">
|
||
Rules and guidelines
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../markdown.html">
|
||
Markdown guidelines
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../SECURITY.html">
|
||
Security policy
|
||
</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
<div class="mobile-menu-item">
|
||
FAQ
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html">
|
||
Frequently Asked Questions
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#submit">
|
||
How to enter
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#compiling">
|
||
Compiling entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#running_entries">
|
||
Running entries
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../faq.html#help">
|
||
How to help
|
||
</a>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mobile-menu-wrapper">
|
||
<div class="mobile-menu-item">
|
||
About
|
||
</div>
|
||
<div class="mobile-submenu-wrapper">
|
||
|
||
<a class="mobile-submenu-item" href="../../index.html">
|
||
Home page
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../about.html">
|
||
About the IOCCC
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../judges.html">
|
||
The Judges
|
||
</a>
|
||
|
||
<a class="mobile-submenu-item" href="../../contact.html">
|
||
Contact us
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<script>
|
||
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
|
||
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
|
||
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
|
||
|
||
headerOpenMenuButton.addEventListener("click", () => {
|
||
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
|
||
headerOpenMenuButton.classList.add("hide-content");
|
||
|
||
headerCloseMenuButton.classList.remove("hide-content");
|
||
headerCloseMenuButton.classList.add("topbar-mobile-menu");
|
||
|
||
mobileMenuPanel.classList.remove("hide-content");
|
||
mobileMenuPanel.classList.add("topbar-mobile-panel");
|
||
});
|
||
|
||
headerCloseMenuButton.addEventListener("click", () => {
|
||
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
|
||
headerCloseMenuButton.classList.add("hide-content");
|
||
|
||
mobileMenuPanel.classList.add("hide-content");
|
||
mobileMenuPanel.classList.remove("topbar-mobile-panel");
|
||
|
||
headerOpenMenuButton.classList.add("topbar-mobile-menu");
|
||
headerOpenMenuButton.classList.remove("hide-content");
|
||
});
|
||
</script>
|
||
|
||
<!-- END: this line ends content from: inc/topbar.default.html -->
|
||
<!-- START: this line starts content from: inc/header.default.html -->
|
||
|
||
<div class="header">
|
||
<a href="../../2011/zucker/index.html">
|
||
<img src="../../png/ioccc.png"
|
||
alt="IOCCC image by Matt Zucker"
|
||
width=300
|
||
height=110>
|
||
</a>
|
||
<h1>The International Obfuscated C Code Contest</h1>
|
||
<h2>2014/birken - Best use of port 1701</h2>
|
||
<h3>Klingon web server</h3>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/header.default.html -->
|
||
<!-- START: this line starts content from: inc/navbar.mid.html -->
|
||
|
||
<div class="navbar">
|
||
<a class="Left" href="../../2013/robison/index.html">← 2013/robison</a>
|
||
<a class="Left" href="../index.html">↑ 2014 ↑</a>
|
||
<a class="Left" href="../deak/index.html">2014/deak →</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/birken/prog.c">C code</a>
|
||
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/birken/Makefile">Makefile</a>
|
||
<a class="Right" href="#inventory">Inventory</a>
|
||
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2014%2Fbirken%2Findex.html">✓</a>
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/navbar.mid.html -->
|
||
<!-- START: this line starts content from: inc/before-content.default.html -->
|
||
|
||
<div class="content" id="content">
|
||
|
||
<!-- END: this line ends content from: inc/before-content.default.html -->
|
||
<!-- START: this line starts content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
|
||
|
||
<!-- START: this line starts content generated by: bin/output-index-author.sh -->
|
||
|
||
<div id="author">
|
||
<h2 id="authors">Authors:</h2>
|
||
</div>
|
||
<ul>
|
||
<li>Name: <a href="../../authors.html#Alexander_Prishchepov">Alexander Prishchepov</a><br>
|
||
Location: <a href="../../location.html#US">US</a> - <em>United States of America</em> (<em>United States</em>)
|
||
<br><br></li>
|
||
<li>Name: <a href="../../authors.html#Michael_Birken">Michael Birken</a><br>
|
||
Location: <a href="../../location.html#US">US</a> - <em>United States of America</em> (<em>United States</em>)</li>
|
||
</ul>
|
||
|
||
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
|
||
|
||
<!-- END: this line ends content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||
|
||
<!-- BEFORE: 1st line of markdown file: 2014/birken/README.md -->
|
||
<h2 id="to-build">To build:</h2>
|
||
<pre><code> make</code></pre>
|
||
<p>There is alternate code that lets you redefine the port to bind to, in case
|
||
there is a firewall issue, and also lets you redefine the timing constant,
|
||
<code>STARDATE</code>. See <a href="#alternate-code">Alternate code</a> below.</p>
|
||
<h2 id="to-use">To use:</h2>
|
||
<pre><code> ./prog < some_secret_or_something
|
||
|
||
./prog http://host[:port]</code></pre>
|
||
<h2 id="try">Try:</h2>
|
||
<pre><code> ./prog < README.md</code></pre>
|
||
<p>or maybe:</p>
|
||
<pre><code> echo "IOCCC 2014!" | ./prog</code></pre>
|
||
<p>Next, try in another terminal, as the above one is running:</p>
|
||
<pre><code> ./prog http://127.0.0.1:1701</code></pre>
|
||
<p>What happens if you specify instead of a regular file something like
|
||
<code>/dev/null</code> ?</p>
|
||
<p>But there’s more! Try opening in a browser the same address and then see what
|
||
happens. This is explained by the authors when explaining their inspiration.</p>
|
||
<h2 id="alternate-code">Alternate code:</h2>
|
||
<p>This version allows you to redefine the port to bind to, should 1701 be a
|
||
problem for some reason, and it also allows you to change the timing as
|
||
described by the author. See <a href="#configuration">configuration</a> below.</p>
|
||
<h3 id="alternate-build">Alternate build:</h3>
|
||
<p>To specify the port to say, 31337, try:</p>
|
||
<pre><code> make clobber PORT=31337 alt</code></pre>
|
||
<p>To change the timing constant, <code>STARDATE</code>, try:</p>
|
||
<pre><code> make clobber TIME=5000000 alt</code></pre>
|
||
<p>You can combine them both of course.</p>
|
||
<h3 id="alternate-use">Alternate use:</h3>
|
||
<p>Use <code>prog.alt</code> as you would <code>prog</code> above. Remember that ports < 1024 are
|
||
privileged ports that unprivileged users cannot use.</p>
|
||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||
<p>Port 1701? Well this is not the l2f registered TCP/1701 protocol.
|
||
Sniff the traffic to/from that port. You will see HTTP client
|
||
and server traffic. The HTML content you may see is static and
|
||
immutable. Nothing funny with the HTTP status codes. Even the
|
||
timestamp cookie, once set, remains static throughout the
|
||
session. The data appears to not be transmitted within the
|
||
binary content communicated between client and server.</p>
|
||
<p>So how does this program do it? A trek though the cloak of
|
||
obfuscation awaits the reader of the source!</p>
|
||
<h2 id="authors-remarks">Authors’ remarks:</h2>
|
||
<h3 id="abstract">Abstract</h3>
|
||
<p>When launched in web server mode, this application appears to deliver nothing
|
||
more than a static HTML page. But, in actuality, it allows covert file
|
||
transfer over the Internet. This is demonstrated by starting the application as
|
||
a client-side downloader. The hidden transmitted data cannot be reconstructed
|
||
or even detected from the binary content of the traffic between the client and
|
||
the server.</p>
|
||
<h2 id="to-use-web-server">To use web server</h2>
|
||
<pre><code> ./prog < secret_file_to_be_downloaded</code></pre>
|
||
<p>Try using the program’s source code as the secret file:</p>
|
||
<pre><code> ./prog < prog.c</code></pre>
|
||
<h2 id="to-use-client-side-downloader">To use client-side downloader</h2>
|
||
<pre><code> ./prog http://host[:port]</code></pre>
|
||
<p>The optional port defaults to 1701. If the web server instance is started on
|
||
the same box, try:</p>
|
||
<pre><code> ./prog http://127.0.0.1:1701</code></pre>
|
||
<p>It will incrementally display the contents of the hidden file at a rate of
|
||
approximately 1 baud.</p>
|
||
<p>The client-side downloader will automatically terminate if the web server is
|
||
bounced.</p>
|
||
<h3 id="html-content">HTML content</h3>
|
||
<p>Plug the URL into a browser to view a static HTML page containing ASCII artwork.</p>
|
||
<h3 id="exploration">Exploration</h3>
|
||
<p>Studying the network traffic will reveal that the HTML content is static and
|
||
immutable, the HTTP request and response fields do not contain anything
|
||
remarkable, HTTP status and error codes are not exploited, no unusual or
|
||
deprecated features of HTTP are used, and while the cookie is based on a
|
||
timestamp, its value also remains unchanged throughout the session. As
|
||
mentioned in the abstract, the data is not transmitted within the binary content
|
||
communicated between the client and the server. A full explanation of the
|
||
protocol appears below, but feel free to explore before reading further.</p>
|
||
<h3 id="inspiration">Inspiration</h3>
|
||
<p>The inspiration for this program comes from <a href="https://memory-alpha.fandom.com/wiki/Star_Trek_VI:_The_Undiscovered_Country">Star Trek VI: The Undiscovered
|
||
Country</a>,
|
||
specifically the final confrontation between the
|
||
<a href="https://memory-alpha.fandom.com/wiki/USS_Enterprise_(NCC-1701)">Enterprise</a> and
|
||
the enhanced prototype <a href="https://memory-alpha.fandom.com/wiki/Klingon_Bird-of-Prey">Klingon Bird of
|
||
Prey</a>. The definitive
|
||
feature of the prototype was its ability to fire while cloaked. But, perhaps
|
||
even more impressive was its ability to keep an open communication channel with
|
||
the Enterprise throughout the battle, enabling the antagonist
|
||
<a href="https://memory-alpha.fandom.com/wiki/Chang_(General)">Chang</a> to taunt <a href="https://memory-alpha.fandom.com/wiki/James_T._Kirk">Captain
|
||
Kirk</a> with
|
||
<a href="https://en.wikipedia.org/wiki/William_Shakespeare">Shakespearian</a> quotes while
|
||
he slowly pelted his ship with torpedoes. Normally, cloaked vessels must
|
||
maintain silent running to avoid detection.</p>
|
||
<p>The battle is commemorated in the form of ASCII artwork depicting the ships
|
||
faced head-to-head in the page delivered by the web server. Plus, the program
|
||
source code is formatted in the shape of a Klingon Bird of Prey. The code
|
||
itself includes a number of Star Trek references: the registry number of the
|
||
Enterprise (NCC-1701) is defined as a constant; variable names spell out Cpt.
|
||
James T. Kirk and <a href="https://memory-alpha.fandom.com/wiki/Odo">Odo</a> (the <a href="https://memory-alpha.fandom.com/wiki/Star_Trek:_Deep_Space_Nine">Deep
|
||
Space 9</a>
|
||
character was played by René Auberjonois who also appeared as <a href="https://memory-alpha.fandom.com/wiki/West">Colonel
|
||
West</a> in <a href="https://memory-alpha.fandom.com/wiki/Star_Trek_VI:_The_Undiscovered_Country">Star Trek
|
||
VI</a> movie);
|
||
the <code>STARDATE</code> constant makes timing configurable; and, the constant <code>k</code> stands
|
||
for <a href="https://memory-alpha.fandom.com/wiki/Khan_Noonien_Singh">Khan</a> (in the
|
||
final engagement in <a href="https://memory-alpha.fandom.com/wiki/Star_Trek_II:_The_Wrath_of_Khan">Star Trek II: The Wrath of
|
||
Khan</a>, the
|
||
damaged Enterprise managed to disable the USS
|
||
<a href="https://memory-alpha.fandom.com/wiki/USS_Reliant_(NCC-1864)%20ship">Reliant</a>’s shield
|
||
generator by accessing its prefix code: 16309).</p>
|
||
<h3 id="secondary-size-limit">Secondary size limit</h3>
|
||
<p>As obligated by a program that employs 23rd century cloaking technology, when
|
||
the source is fed as input to <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/iocccsize.c">IOCCC size tool version
|
||
2014-09-23-v19</a>, and the <code>-i</code> command line option is used, the
|
||
value printed is 0.</p>
|
||
<h3 id="transmission-protocol-revealed">Transmission protocol revealed</h3>
|
||
<p>The client-side downloader relies on the response time of the web server rather
|
||
than the binary content of the response. The server transmits 1 nibble at a
|
||
time by counting to the nibble value via a sequence of rapid responses
|
||
terminated by a long response. For instance, the value 5 would be transmitted
|
||
by making a series of requests that result in 5 near instantaneous responses
|
||
followed by a half-second delayed response. The long delay is skipped in the
|
||
case of 15, the maximal nibble value. With the aid of an ASCII table, it is
|
||
actually possible to read the nibbles by repeatedly pressing the refresh button
|
||
within a browser and observing the page refresh delay.</p>
|
||
<p>Nibble Count Coding (file transfer protocol NCC-1701) is faster than
|
||
transmitting each individual bit as a short or long delay because it sends each
|
||
byte with 2 long delays whereas communicating individual bits requires 8 long
|
||
delays in the worst case scenario. In fact, Nibble Count Coding is faster than
|
||
applying Huffman Coding since that is designed to produce compact codes under
|
||
the assumption that the bit value does not affect transmission time.</p>
|
||
<p>The server relies on the cookie to identify each client uniquely, enabling it to
|
||
transfer the sequence independently to each client.</p>
|
||
<h3 id="configuration">Configuration</h3>
|
||
<p>As with all network communication, accurate transmission of data relies on the
|
||
nature of hardware revealed through statistics and timeouts set accordingly.
|
||
The long delay is arbitrarily set to <code>0.5</code> seconds. This is microsecond tunable
|
||
via the <code>STARDATE</code> constant defined at the top of the source code. Increase the
|
||
value in the event of transmission errors. Decrease the value to download
|
||
faster and less reliably.</p>
|
||
<p>The NCC constant is the web server port number.</p>
|
||
<h3 id="obfuscations">Obfuscations</h3>
|
||
<ul>
|
||
<li>The ASCII artwork is compressed using run-length encoding.</li>
|
||
<li>One long string stores a series of strings concatenated together and
|
||
referenced via pointers.</li>
|
||
<li>The long string is shift encrypted.</li>
|
||
<li>Short and meaningless identifiers are used throughout.</li>
|
||
<li>Reversed array indexing was applied immoderately.</li>
|
||
<li>Minus is used in place of not-equals.</li>
|
||
<li><code>O</code> and <code>l</code> were selected for their resemblance to <code>0</code> and <code>1</code> respectively.</li>
|
||
<li>Standard constants and ASCII characters were replaced with their respective
|
||
numerical values.</li>
|
||
</ul>
|
||
<h3 id="compiler-warnings">Compiler warnings</h3>
|
||
<p>For space considerations, the following include statements were dropped
|
||
resulting in compiler warnings:</p>
|
||
<pre><code> #include <asm/byteorder.h>
|
||
#include <ctype.h>
|
||
#include <netinet/in.h>
|
||
#include <stdlib.h>
|
||
#include <string.h>
|
||
#include <sys/select.h>
|
||
#include <sys/socket.h>
|
||
#include <sys/types.h>
|
||
#include <sys/unistd.h></code></pre>
|
||
<p>It may be necessary to restore some of these under certain environments.</p>
|
||
<!--
|
||
|
||
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
|
||
|
||
You are free to share and adapt this file under the terms of this license:
|
||
|
||
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
|
||
|
||
For more information, see:
|
||
|
||
https://creativecommons.org/licenses/by-sa/4.0/
|
||
|
||
-->
|
||
<!-- AFTER: last line of markdown file: 2014/birken/README.md -->
|
||
|
||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||
|
||
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
|
||
|
||
<div id="inventory">
|
||
<h1 id="inventory-for-2014birken">Inventory for 2014/birken</h1>
|
||
</div>
|
||
<h2 id="primary-files">Primary files</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/birken/prog.c">prog.c</a> - entry source code</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/birken/Makefile">Makefile</a> - entry Makefile</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/birken/prog.alt.c">prog.alt.c</a> - alternate source code</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/birken/prog.orig.c">prog.orig.c</a> - original source code</li>
|
||
</ul>
|
||
<h2 id="secondary-files">Secondary files</h2>
|
||
<ul>
|
||
<li><a href="2014_birken.tar.bz2">2014_birken.tar.bz2</a> - download entry tarball</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/birken/README.md">README.md</a> - markdown source for this web page</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/birken/.entry.json">.entry.json</a> - entry summary and manifest in JSON</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/birken/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
|
||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2014/birken/.path">.path</a> - directory path from top level directory</li>
|
||
<li><a href="index.html">index.html</a> - this web page</li>
|
||
</ul>
|
||
<hr style="width:10%;text-align:left;margin-left:0">
|
||
<h4>
|
||
Jump to: <a href="#">top</a>
|
||
</h4>
|
||
|
||
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
|
||
|
||
<!-- END: this line ends content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||
<!-- START: this line starts content from: inc/after-content.default.html -->
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/after-content.default.html -->
|
||
<!-- START: this line starts content from: inc/footer.inventory.html -->
|
||
|
||
<!--
|
||
|
||
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
|
||
|
||
You are free to share and adapt this file under the terms of this license:
|
||
|
||
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
|
||
|
||
For more information, see:
|
||
|
||
https://creativecommons.org/licenses/by-sa/4.0/
|
||
|
||
-->
|
||
|
||
<div class="footer">
|
||
|
||
<div id="copyright"><h3>Copyright © 1984-2024 by Landon Curt Noll:
|
||
<a href="https://creativecommons.org/faq/#what-does-some-rights-reserved-mean"
|
||
target="_blank"
|
||
rel="license noopener noreferrer">Some Rights Reserved</a></h3>
|
||
<p>
|
||
This work is <b>licensed by Landon Curt Noll</b> under
|
||
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1"
|
||
target="_blank"
|
||
rel="license noopener noreferrer"
|
||
style="display:inline-block;">CC BY-SA 4.0</a></b>.
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../../png/cc.png"
|
||
alt="cc inside circle symbol">
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../../png/by.png"
|
||
alt="person inside circle symbol">
|
||
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||
src="../../png/sa.png"
|
||
alt="arrow looping back on itself inside circle symbol"><br>
|
||
You should <b>carefully review</b> the
|
||
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode.en"
|
||
target="_blank"
|
||
rel="license noopener noreferrer">CC BY-SA 4.0 LEGAL CODE</a></b>
|
||
before using the licensed material.<br>
|
||
You may wish to review the
|
||
<b><a href="../../license.html"
|
||
target="_blank"
|
||
rel="license noopener noreferrer">highlights of some of the key features and terms</a></b>
|
||
of <b>CC BY-SA 4.0</b>.<br>
|
||
</p>
|
||
</div>
|
||
|
||
<div id="coda"><h3>Coda</h3>
|
||
<p>
|
||
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2014%2Fbirken%2Findex.html" rel="nofollow">Nu HTML check this web page</a><br>
|
||
<a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a><br>
|
||
</p>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- END: this line ends content from: inc/footer.inventory.html -->
|
||
<!-- START: this line starts content from: inc/bottom.default.html -->
|
||
|
||
</body>
|
||
</html>
|
||
|
||
<!-- END: this line ends content from: inc/bottom.default.html -->
|