Thursday, October 26, 2006


Hackers from way back

There have probably been hackers for as long as there've been computers (well, and before that, other things were hacked). The code-breakers in World War II — the folks who figured out the German Enigma code (a group that included Alan Turing) — were early hackers.

Thought of that way, the group I hung with at The Nerd was just a bunch of Johnny-come-lately folks, not pioneering at all. We fancied ourselves better than that, though; we fancied ourselves as pioneers, riding out in electronic covered wagons and finding the Indian tribes and the mountain passes within the computer system. And the term "hackers" was not at all pejorative; it referred to adepts, wizards, those in the know. That what we were doing was mischievous was clear to us, yet we meant no harm. We just used a bit of computer time to which we weren't entitled, and we annoyed and confounded the computer center staff at times, that's all.

For reasons that now escape my mind that's been made more sensible with age, we considered it a challenge to see just how far into the negative numbers we could drive an account's balance. Some computer accounts, those starting with "700", were paid with Real Money, and we considered those off limits — we weren't interested in real theft or harm. But research accounts ("200...") and course accounts ("300...") were fair game, especially the latter at the end of an instructional quarter, when they'd all be cancelled anyway, and issued anew for the next quarter. We'd snatch some passwords, and start cranking.

A quirk of the accounting system made this possible: accounts were not debited until the completion of a batch job or the logoff of an interactive session. The latter bore particularly juicy fruit, if we could snatch an account that was authorized for interactive logon (a few of the course accounts were, as were all of the research accounts), and it always amused us that there was no limit — no point at which an account that was, say, $2000 in the red would be forced off the system involuntarily.

Interactive funny-money–eating was too easy, though; it was like taking the proverbial candy from a baby. We had a favourite program, written in BASIC, that we called "$CHEW" (program names could use letters, numbers, and the dollar sign, and here the dollar sign has amusing significance), which just used a nice, tight loop to use up the maximum CPU time, while the logged-in clock time ticked away. We'd log the whole room full of terminals into the same account, and start $CHEW up on all of them, and, well, you can see how -$2000 wouldn't be too long in arriving. Eventually, we decided that $CHEW was too crude, and came up with other programs, ones that actually did things that were at least marginally useful or interesting. We'd write games that used a lot of CPU time, and have a room full of students playing them.

Running accounts down with batch jobs was more challenging, and more deserving of the term "hacker", because, you see, there were strict limits on the amount of memory, CPU time, and clock time that a job could use before it was forcibly terminated. We had to be clever about it, arranging to get a lot of batch jobs submitted before the account ran down and further submissions were rejected. We played with allocating a lot of disk storage, and that sort of thing. One time, we got a different idea: we submitted a job we named "RABBIT".

RABBIT was a special kind of job that ran in a very limited job class, and that cost only one penny to run. One could do very little within that job class's restrictions, but it was intended just to do things like quickly get a print listing of one's input data. We used it to "print" a copy of the job to the job queue, resulting in the job's resubmitting itself every time it ran.

Well, but not once.

Ten times. Each time it ran, ten more copies appeared in the job queue. Perhaps "HYDRA" would have been a better name. The job queue became full of RABBIT jobs in short order, and each time one would finish there'd be more, and each time the administrative staff would try cancelling them, more would appear, far faster than they could hope to cancel them. Think of "The Sorcerer's Apprentice" scene in "Fantasia", with an ever-increasing army of magical broomsticks flooding the laboratory.

Finally, the sorcerer awoke from his nap and changed the password on the stolen account. The hundreds and hundreds and hundreds of RABBIT jobs started failing for invalid passwords, and the system eventually came back to normal.

Tame, by today's standards of viruses and worms and zombies (Oh my!), but it was what we had to work with at the time. And it honed our skills and gave us the motivation to push ahead and learn.[1]

[1] Professional stunt programmer on closed computer system. Do not attempt this at home.

No comments: