PhreakNIC v3.0 Code Tutorial
Tutorial Index

Lesson 2 - The Gibberish

Subj:  [SE2600-P] PhreakNIC Code Lab - Lesson 2 - The Gibberish
Date: 08/18/2000 1:34:04 AM Central Daylight Time

This is an ongoing series to dissect the PhreakNIC v3.0 code, which can be
seen at

Welcome back!

Okay, from talking to folks that have already taken a stab at the Code, and
who are further along with it than our lab group is, but are seriously stuck,
there seem to be two main bottlenecks.  I'll include a couple hints about
those two spots in this post, and then continue with the next session in our
"code-dissection" lab for everyone else.

For "stuck" spot #1: The clue is in the archives in the Code discussions

For "stuck" spot #2: You'll need to know JonnyX/se2600 jargon (it's *not*
standard hacker jargon, if that's any help).  Or go look at the se2600 entry
page (quick, before they change it).  Part of what you need is there.

For help with both parts: Again, check the archives.  Look in particular for
messages which have subjects about the Code, about PhreakNICs, and about the
se2600 website.

Yes, I'm being mysterious, because I don't want to wreck things for other
solvers.  But if the above doesn't help, and your blood pressure medication
just isn't doing the trick anymore and you *have* to have another hint, and
you have to have it NOW, then write to me, or contact me on AIM: Elonka.
Doesn't mean I'll give you a hint, but you can ask.  If that doesn't work,
try flattery and groveling, those are always good.  ;)

For everyone else that's still in the tour group (please keep arms, legs and
other appendages inside the railing), let's move along . . .

If you did your homework from last time, you've taken the first line of the Code:


   broken it up into two-digit segments:

41 76 70 72 20 66 67 6E 65 67 2E 20 41 62 6A 20 76 67 20 74 72 67 66 20 67 62
68 74 75 2E 20 20 20 20 20 20 20 20 0A 0D

   And translated it into ASCII:

         "Avpr fgneg. Abj vg trgf gbhtu.        <LF><CR>"

Strip off the white space, and we're left with:

         "Avpr fgneg. Abj vg trgf gbhtu."

There are multiple ways to tackle this at this point...  Several folks told
me that they went at this (and the gibberish after it) as a standard
cryptogram, or letter substitution cipher.  If you want to do that, that'll
probably work fine, at least for this part.  If you do go that route, you'll
probably notice that there's a straight one-to-one correspondence between
letters.  For example:

Each "A" translates to an "N"  (and "N" to "A")
Each "B" translates to an "O"  (and "O" to "B")
Each "C" translates to a "P"   (and "P" to "C")
and so forth.

In fact, the way this cipher works, is that each letter is exactly 13 letters
in the alphabet away from what it *should* be.

Another way of referring to this is to say that the alphabet has been
"rotated" by 13 characters.  Or, as it's more commonly known, ROT-13
encoding.  This is a standard encryption system that's used in newsgroups,
and if you have a newsgroup reader, you may notice that you can do stuff like
right-clicking on some text and getting a menu that has a ROT-13 decoding
option (sometimes it's under the Edit menu or somewhere else -- it depends on
the software you're using).

So, we can tackle these lines by either decoding them manually, plugging them
into a newsgroup reader, or, my favorite, finding something else to quickly
rotate them.  What I did was go to a search engine and type in: "ROT-13", and
then I picked one of the nice little javascript pages with a rotation form:

Once rotated, the text becomes understandable.  From:

         "Avpr fgneg. Abj vg trgf gbhtu."

  It rotates to:

         "Nice start. Now it gets tough."

Heh, so that was the EASY part.

Okay, let's go ahead and rotate the rest of the stuff in the PhreakNIC Code
too, and all sorts of interesting words start popping up.  Things like "BEGIN
PGP MESSAGE" and "un-uu-me.txt".

We won't go into all of it for this session, but let's at least look at the
gibberish which is immediately before the PGP part:

Gur rnearf[g][fr]pergf fub(a)r. (B)ar urnef fng[v]er. Nurz - e(r)nyyl ent
Fngna. (N)(G)Z bs Ury(y). Rivy abf[r]raretl. B, gur (P)VN arg yhanpl. Borl
yhfre pn[z]. C[u]bar sne-sr[g]purq[e]bbg grkg[.] N qngn-[y]va[x] t[e](h)zoyrf
ba gur pybhq(.)

After rotating it, and separating each sentence out to its own line, we get:

The earnes[t][se]crets sho(n)e.
(O)ne hears sat[i]re.
Ahem - r(e)ally rag Satan.
(A)(T)M of Hel(l).
Evil nos[e]energy.
O, the (C)IA net lunacy.
Obey luser ca[m].
P[h]one far-fe[t]ched[r]oot text[.]
A data-[l]in[k] g[r](u)mbles on the cloud(.)

Hmmm.  Satan, hell, evil, satire, lunacy...  Yup, we're getting farther into
JonnyX's head alright.   Either that or it's discussing a Microsoft product. ;)

Anyway, in terms of the ultimate solution for the Code, I can tell you right
now that this poem is one of the hardest parts of the entire thing.  Not only
that, but there are multiple puzzles within the above "hacker haiku" -- at
least a dozen.  On my first pass through the code, I solved enough from the
poem to get through to the next section, and I've gone back since then and
solved more of it, but I'm pretty sure that there's still stuff there that I
haven't figured out yet.  So, feel free to post whatever you've discovered in
there, and I'll also post some brainstorming ideas as we go along.

Okay, that's it for this section.  Homework for next time:

  (1) Fiddle with the above poem.  Lemme know what you find.
  (2) Rotate the rest of the Code.
  (3) After rotating everything, you should also, with your hex/binary/ASCII
chart, be able to decode the last line now:


If not, we'll go into it in more detail next time.

Coming up in the next installments: PGP & un-uu-ing the un-uu-able!

Elonka  :)

"Always forgive your enemies.  Nothing annoys them more."  - Oscar Wilde

Tutorial Index