darkewolf is currently certified at Journeyer level.

Name: Peter Crystal
Member since: 1999-11-13 00:23:02
Last Login: N/A

FOAF RDF Share This

Homepage: http://users.indigo.net.au/darke/

Notes:

A Debian Developer, maintainer and programmer at chime.net.au

GnuPG Fingerprint: 8BD8 7614 AC40 05EE C6A7 5992 D5FF ADAE 6F15 59BA

GnuPG keyid: 6F1559BA

Projects

Articles Posted by darkewolf

Recent blog entries by darkewolf

Syndication: RSS 2.0

This website was discovered this morning and provided me with a distraction to keep me occupied during lunch times and other times when my brain needs a kickstart.

It contains a number of enciphered texts and basically no clue on how to solve them. Well except for the more complex ones (which I am yet to try). But below I shall discuss how I solved Challenge 1 and Challenge 2.

Challenge 1

The cipher text is as follows:

Zl sngure'f snzvyl anzr orvat Cveevc, naq zl Puevfgvna anzr Cuvyvc,
zl vasnag gbathr pbhyq znxr bs obgu anzrf abguvat ybatre be zber
rkcyvpvg guna Cvc.  Fb, V pnyyrq zlfrys Cvc, naq pnzr gb or pnyyrq
Cvc.

Looks pretty evil eh? Thankfully this one is dead easy. Its a common form of cipherment used on Usenet and other places, called Rot-13. Its a form of substitution cipher, done by rotating the characters 13 places modulo 26.

For instances, the letter A becomes the letter N (N is 13 characters ahead of A), of course, you need to wrap around if you use the letters N through to Z. This cipher is particularily convient when one has an even number of characters in their alphabet).

Thus the decipherment (using the following set of Unix commands cat challenge1.txt | tr '[A-M][N-Z][a-m][n-z]' '[N-Z][A-M][n-z][a-m]' > answer1.txt) :

My father's family name being Pirrip, and my Christian name Philip,
my infant tongue could make of both names nothing longer or more
explicit than Pip.  So, I called myself Pip, and came to be called
Pip.

Pretty cool eh? :) As I said, its often (at least in the past) is used on Usenet to protect the punchlines from jokes from being accidently read.

Challenge 2

This one was moderately more tricky, but once I got the solution it was obvious.

THESNFZOGH OA ZIT FSGETAA GY EGHCTSZOHU Q FKQOHZTBZ JTAAQUT OHZG QH QKZTSHQZT EOFITSZTBZ JTAAQUT.  
ZIT EOFITSZTBZ JTAAQUT EGHZQOHA QKK ZIT OHYGSJQZOGH GY ZIT FKQOHZTBZ JTAAQUT, WXZ OA HGZ OH Q       
YGSJQZ STQRQWKT WN Q IXJQH GS EGJFXZTS VOZIGXZ ZIT FSGFTS JTEIQHOAJ ZG RTESNFZ OZ. --- YSGJ         
VOLOFTROQ, ZIT YSTT THENEKGFTROQ.

A quick try of Rot-13 showed it obviously wasn't the same cipher. This time I decided to be a bit trickier and wrote a quick perl program to do a frequency count of the characters present (Mostly to ensure I was dealing with a simple substitution cipher rather than something more complex). The program showed that the characters appeared to be distributed within the same frequencies as the English language (See the table below to see the character distribution of the English language):

Character    Frequency
sp    0.186550
e    0.108321
t    0.079711
a    0.066101
h    0.062808
o    0.053881
s    0.049366
n    0.048965
r    0.047798
i    0.041987
l    0.036380
d    0.035168
u    0.024981
w    0.023349
m    0.020149
c    0.019151
g    0.017733
y    0.017043
f    0.014561
b    0.013218
p    0.012472
k    0.008703
v    0.008059
j    0.001296
x    0.001119
q    0.000615
z    0.000503

I did ignore the sp group though. Maybe I should add to my frequency count program to also test for pairs of letters also.

I got the following frequencies based on the file (only the first 5 though, rest on request):

 1)cipher (T)   count( 36)   freq (0.1385)
 2)cipher (Z)   count( 30)   freq (0.1154)
 3)cipher (Q)   count( 22)   freq (0.0846)
 4)cipher (O)   count( 20)   freq (0.0769)
 5)cipher (G)   count( 18)   freq (0.0692)

Now, what did this lead me to believe? I am fairly certain that T in the ciphertext would be the letter </b>e</b> in the real world. And I also made the assumption that Z would be t. Lets make that substition (using lowercase to indicate deciphered letters of course):

eHESNFtOGH OA tIe FSGEeAA GY EGHCeStOHU Q FKQOHteBt JeAAQUe OHtG QH QKteSHQte EOFIeSteBt JeAAQUe.
tIe EOFIeSteBt JeAAQUe EGHtQOHA QKK tIe OHYGSJQtOGH GY tIe FKQOHteBt JeAAQUe, WXt OA HGt OH Q
YGSJQt SeQRQWKe WN Q IXJQH GS EGJFXteS VOtIGXt tIe FSGFeS JeEIQHOAJ tG ReESNFt Ot. --- YSGJ
VOLOFeROQ, tIe YSee eHENEKGFeROQ.

Looking good so far. At this stage I made some more substitions based on frequency and with one or two hiccups I ended up with a fairly good portion of it done. I also guessed I would be h due to the tIe word most likely being the.

From the point of having about 30% of it decoded, I used other Unix tools to find out potential words. Using the YSee on the last line I looked for words in the dictionary (well word list) that had four characters, two unknown ending in double e:

grep "^..ee$" /usr/share/dict/words

Agee
alee
Cree
flee
free
glee
knee
tree

Could be any of these. It would not be 'tree' as we had used the t before. And I decided to eliminate Agee, Alee, Cree cause they were silly.

And then it continued as I spotted more and more words.

Ultimately the message deciphered to be:

encryption is the process of converting a plaintext message into an alternate ciphertext message.
the ciphertext message contains all the information of the plaintext message, but is not in a
format readable by a human or computer without the proper mechanism to decrypt it. --- from
wikipedia, the free encyclopedia.

I had deciphered it without really knowing the method it used. I used the following command to do it cat Chal2.txt | tr 'TZIYSGOJXHQRWKNEFVALBUC' 'ethfroimunadblycpwskxgv' > Decoded.chal2

So out of curiousity I went and wrote another perl script which showed the plaintext and the ciphertext versions side by side with their 'position' in the alphabet so I could see if there was any formula being used, and piped it through a sort so it would be in plaintext-alphabetical order:

First the perl display code I used:

#!/usr/bin/perl
$plain = "ethfroimunadblycpwskxgv";
$code  = "TZIYSGOJXHQRWKNEFVALBUC";
my (@a_plain) = split(//, $plain);
my (@a_code)  = split(//, $code);
$length = length($plain);
for($i = 0; $i < $length; $i++) {
        printf "%s (%3d) -- %s (%3d)\n", $a_plain[$i], ord($a_plain[$i]) - 96 , $a_code[$i], ord(lc($a_code[$i])) - 96 ;
        }

I ran the following ./Cipher.chal2.pl | sort and got the following:

a (  1) -- Q ( 17)
b (  2) -- W ( 23)
c (  3) -- E (  5)
d (  4) -- R ( 18)
e (  5) -- T ( 20)
f (  6) -- Y ( 25)
g (  7) -- U ( 21)
h (  8) -- I (  9)
i (  9) -- O ( 15)
k ( 11) -- L ( 12)
l ( 12) -- K ( 11)
m ( 13) -- J ( 10)
n ( 14) -- H (  8)
o ( 15) -- G (  7)
p ( 16) -- F (  6)
r ( 18) -- S ( 19)
s ( 19) -- A (  1)
t ( 20) -- Z ( 26)
u ( 21) -- X ( 24)
v ( 22) -- C (  3)
w ( 23) -- V ( 22)
x ( 24) -- B (  2)
y ( 25) -- N ( 14)

How bloody obvious. The cipher substitution was using the QWERTY keyboard layout.

Now, the rest of the challenges may be a bit harder. Ideally I'd have a nice PDA with Perl installed and go sit down on the river and hack away on ciphers at my lunch, but for now that will have to wait *smirks*

I think I proved the benefit of objective peer review of code today, in a round about away.

Here at work we shifted to a new mail system using maildir and it was causing some people some problems. One of the problems was converting old mbox files to maildir. We were given a set of instructions how to do it which were easy to follow.

The engineering manager was being cautious and wanted to test the conversion on a single mbox file. He did so and it wouldn't work.

I scooted over and instantly pointed out where he was going wrong. He had used a line out of a for look and missed some of the conversion:

He typed the following:

mbconv.pl ~/Maildir/$i < mboxfile.mbx

The obvious problem was the $i.

The advantage of objective peer review of code is that the original programmer sees the code for what it is meant to do. The reviewer sees the code as purely code on a syntax level.

I may not know (in a specific sense) what the code the junior programmer next to me is writing is trying to do, but I can look over his shoulder and go "Aha, that line has XYZ error, cause it it will not be accessing the index properly" or something like that.

Oh, the fun of being a programmer again for fun and profit.

Hmmmmms.

Need a new toy. Assides from more audio / noise gear and maybe a new desktop soon, I want to get a decent PDA. Don't want to spend a fortune, but I want something I can write small apps for to do cute and useful stuff.

Something programmable with wireless preferably. A Zaurus would be nice if they still exist but I don't know how programmable they are.

I wonder.

A rather interesting article as linked off of SlashDot about Great Hackers.

I think all management should be made to read it, especially management in technical fields that have been technical themselves in the past.

That said, I am learning far too much about Radius than I really ever wanted to learn. Just finished and starting to test a 'radius client simulation' (ie: its pretending to be a NAS so we can test a testing-system POP by hammering it with real world radius data [with a bit of munging {I wonder if the word mung is used any more. Was used a lot when I was a a teenager}] in order to find out if we can break it before it rolls out live).

Assides from having to use a MS Windows workstation (with a dozen ssh shells open to development servers) I am very much loving this job. Great folk, great environment, free fruit.

Of course, ideally I'd love to get a Debian GNU/Linux workstation (rather than just the servers) and be able to work on it directly using Emacs. About time I got back to finishing off some coding projects at home.. Maybe its time to clean up the Book Catalog and upload it. And back into packaging for Debian. Actually, that might not be a bad idea, given one of my junior workmates is applying to become a Developer. Wooo hooo.

Another year another entry.

Am working at a new place again. Mostly a programming job for the network services department of a fairly large ISP.

The world is all good.

24 older entries...

 

darkewolf certified others as follows:

  • darkewolf certified darkewolf as Journeyer
  • darkewolf certified rmt as Apprentice
  • darkewolf certified danpat as Apprentice
  • darkewolf certified miguel as Master
  • darkewolf certified mbp as Journeyer
  • darkewolf certified scottyo as Apprentice
  • darkewolf certified branden as Journeyer
  • darkewolf certified wichert as Master
  • darkewolf certified joey as Master
  • darkewolf certified omnic as Journeyer
  • darkewolf certified doogie as Journeyer
  • darkewolf certified espy as Journeyer
  • darkewolf certified lilo as Master
  • darkewolf certified kira as Journeyer
  • darkewolf certified Rachie as Apprentice
  • darkewolf certified seeS as Journeyer
  • darkewolf certified z as Journeyer
  • darkewolf certified ljlane as Journeyer
  • darkewolf certified k as Journeyer
  • darkewolf certified xach as Journeyer
  • darkewolf certified jennv as Journeyer
  • darkewolf certified bma as Journeyer
  • darkewolf certified ryuch as Apprentice
  • darkewolf certified rcw as Journeyer
  • darkewolf certified BrucePerens as Master
  • darkewolf certified deirdre as Journeyer
  • darkewolf certified garrett as Master
  • darkewolf certified brother as Apprentice
  • darkewolf certified doobee as Journeyer
  • darkewolf certified ajt as Journeyer
  • darkewolf certified andrewmuck as Journeyer
  • darkewolf certified bdale as Master
  • darkewolf certified princess as Apprentice
  • darkewolf certified whatever as Journeyer
  • darkewolf certified jwalther as Journeyer
  • darkewolf certified yakk as Journeyer
  • darkewolf certified bod as Journeyer
  • darkewolf certified leonbrooks as Journeyer
  • darkewolf certified evo as Journeyer
  • darkewolf certified aaronl as Apprentice
  • darkewolf certified fridge as Apprentice
  • darkewolf certified stephd as Apprentice
  • darkewolf certified Liedra as Apprentice
  • darkewolf certified mishan as Journeyer
  • darkewolf certified rw as Journeyer
  • darkewolf certified davidw as Master
  • darkewolf certified srivasta as Master

Others have certified darkewolf as follows:

  • rmt certified darkewolf as Apprentice
  • danpat certified darkewolf as Apprentice
  • Damian certified darkewolf as Apprentice
  • darkewolf certified darkewolf as Journeyer
  • strlen certified darkewolf as Journeyer
  • mbp certified darkewolf as Apprentice
  • scottyo certified darkewolf as Apprentice
  • ryuch certified darkewolf as Apprentice
  • CentralScrutinizer certified darkewolf as Apprentice
  • k certified darkewolf as Journeyer
  • bma certified darkewolf as Journeyer
  • ljlane certified darkewolf as Journeyer
  • rcw certified darkewolf as Journeyer
  • lazarus certified darkewolf as Journeyer
  • brother certified darkewolf as Journeyer
  • nixnut certified darkewolf as Journeyer
  • jwalther certified darkewolf as Journeyer
  • bod certified darkewolf as Journeyer
  • omnic certified darkewolf as Journeyer
  • evo certified darkewolf as Journeyer
  • Joy certified darkewolf as Journeyer
  • seeS certified darkewolf as Journeyer
  • Tv certified darkewolf as Journeyer
  • fridge certified darkewolf as Apprentice
  • weasel certified darkewolf as Journeyer
  • andrewmuck certified darkewolf as Journeyer
  • mishan certified darkewolf as Journeyer
  • rw certified darkewolf as Journeyer
  • Liedra certified darkewolf as Journeyer
  • fxn certified darkewolf as Apprentice
  • Xero certified darkewolf as Journeyer
  • stevetaylor certified darkewolf as Journeyer

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

X
Share this page