Hacker Perspective: Cintaks Airer

My pre-hacker years probably began in the 1970s when I built electronics projects from RadioShack kits.  I built a number of radios, blinking lights, amplifiers, and noisemakers using the spring-clip wiring that made building and tearing down projects simple.

It wasn't until I had discovered personal computers that I think I truly began to feel the hacker spirit.  Home computers were not nearly as common in the late-1970s as they are now.  I remember the RadioShack salesmen at the local mall patiently watching as kids came in and typed away on their display machine.  I took a formal independent study class in BASIC in junior high school.  I began buying books and magazines that specialized in computers and programming.  I also watched the television series Computer Chronicles on PBS regularly in the 1980s.

My parents bought me a used TRS-80 that came with a number of books and programs on cassette.  After getting bored with the game Temple of Apshai - Dunjonquest, I found the area in memory where the player's strength and stamina attributes were kept.  Between the two-part loading process of the game, I added some code to POKE all high values into those attributes... bigger than the game was supposed to handle.  The monsters and other enemies the player would face then posed no harm.  I used my invulnerable player to then start mapping out the various areas of the dungeons.

I soon learned Z80 assembly language.  I used this low-level coding power to do all sorts of things with my TRS-80.  I simulated some auto-start game features for one of Big Five Software's games.  I made a burglar alarm that reacted to noise using the cassette input ports and an input amplifier.  I used various tools to tinker with some games that I had, giving me more player lives in some of them and such.

In high school, I had access to Apple II computers.  I used these to teach myself 6502 assembly language.  I began by hand-assembling my code.  I entered the code into memory in hex using the CALL -151 monitor.  Later, I found out how to invoke the mini-assembler.

I was asked to see if I could "fix" a program that the school faculty had purchased.  They had bought a BASIC program that managed large-group competitions of a specific kind.  Our school was the host for a competition that year, so they bought this software to help arrange the competition schedules and to print out the room-level schedules.  Unfortunately, the program was only able to handle a small number of schools.  The faculty had needed it to handle more schools.  My job was to make that happen.

I found the IF statement in the code that limited the number of participants.  I removed that which was all that needed to happen.  I then spent the rest of my time doing data entry for the different school data.  All went well with the actual competition.  I was paid for my time at minimum wage.  I made a whopping 12 dollars for my efforts.  This was the first sum of money I'd ever made using a computer.  I suspect that there were other versions of the software from the vendor which could have handled the larger number of schools.

I bought a Commodore 64 and 1541 disk drive.  One of the first programs I typed in from a hex listing was Bill Yee's Micromon-64.  It was a machine language "monitor" program that allowed scrollable viewing of memory in hex and scrollable disassembly of memory.  One could also change memory and enter 6502/6510 instructions directly.

I soon bought a 300 baud modem.  In 1984, I called a local BBS that I had found from an ad.  This BBS had a listing of other BBSes.  I was hooked.  Most of the users of the local BBS scene used handles instead of their real names on these systems.  When presented with the new user sign-up screen on a BBS, I quickly came up with the name "Cintaks Airer" - a play on the "Syntax Error?" message that many BASIC coders ran into.

I soon ran into many in my area who were also Commodore 64 enthusiasts.  I found it pleasant that other assembly language coders could be found in the local area.  Many of the patrons of certain BBSes were interested in removing the copy protection from games.

I only removed one scheme from a Commodore 64 game that used an error check on an intentionally damaged track on the disk.  The code was easy to find and NOP out.  There were many around who were much better at that sort of thing.

I became acquainted with a local hacker who was mildly into phone hacking.  He used to conference with other hackers using a phone number that constantly issued a busy signal.  The group found that they could all speak over the busy signal, having nightly conference calls.

I had a lot more fun playing with the BBS systems themselves.  The terminal program that had been supplied with my modem only had bare functionality.  When line noise caused the terminal to spit out characters that changed the text color, I decided to figure out how terminal software worked.  I wrote my own that ANDed all input bytes with 0x7F, limiting the characters my terminal displayed to strict ASCII and not the extended color-changing characters in my computer's PETSCII encoding.

I also found out that I could change the two characters used as the baud rate divisor when I opened the channel to the modem in my code so that I could choose from a variety of non-standard baud rates.  A local CP/M-based BBS honored both 400 and 450 baud, so I tried those with my own terminal software.  While those worked for the most part, they were prone to a fair amount of "garbage" characters showing up, likely due to the limits of the software-emulated UART used by the Commodore 64.

I found myself on a new BBS using software I'd never heard of.  According to the description, it was written in BASIC with some machine code for the time-critical functions.

I went to the download section and tried to download files with wildcard characters and I/O modifiers in the names.  When I typed in T*,S,R, I got the first file with the letter T that was of type SEQ (sequential) opened in read-only mode.  By going through several letters, I found the file that was the introductory text file that each user saw just before being presented with the login prompt.

After downloading that file, I edited it to add ** Cintaks Airer was here ** after the initial greeting.  I then uploaded the file using the wildcarded filename in addition to the ,S,W modifier (SEQuential / Write).  This overwrote the BBS greeting file.  When I logged in again, there was my handle, neatly centered in the rest of the text.  I left feedback to the sysop, Matt, to let him know what I'd done and what he needed to look at in his code to prevent that from happening.

Matt was intrigued by what I had done.  He thanked me for not doing something destructive.  I helped him to find the areas of the download section that he needed to fix.  He did the heavy lifting himself.  I ended up writing a "chat with sysop" subroutine in assembly language that he incorporated into the board.  I suppose that this may have been my first contribution to open-source, although I don't think Matt's modifications were passed around to more than a few folks.

I found out that pulse-dialing was accomplished by hanging-up then re-engaging the phone line in punctuated bursts.  I added this functionality to my terminal program.  Mine pulse-dialed more quickly than the pulse-dialers in some other terminal programs.

I later got a 1200 baud "dumb" modem that had tone-dial capability.  It did not respect the Hayes AT command set.  I had to disassemble the terminal that came with it to find out how to get it to tone-dial.  This feature was soon added to my custom terminal.

In April of 1986, I was watching the movie The Falcon and the Snowman as it aired on HBO.  The transmission was taken over by an individual going by the name "Captain Midnight" who interrupted HBO's transmission for many HBO subscribers.  I asked on a BBS if this was some new hacker fad.  I was quickly schooled on the term "hacker" by a bunch of local techies including a doctor who liked to churn out Z80 code.  I believe that this was the first time I had heard the definition of the word "hacker" portrayed in a positive light as someone who likes to explore technologies.  In a short while, I had found my way to Steven Levy's book Hackers, which solidified the proper meaning of the term for me.

I bought a Commodore 128 as soon as they hit the shelves.  I used the CP/M mode frequently.  We had a strong local CP/M community complete with a couple of BBSes and a wealth of downloadable software.  Most of this software was provided with source code and binaries, although the term "open-source" had not yet been used.  This was just the way most of these folks packaged up software.  CP/M permitted me to run Turbo Pascal, which was way ahead of the competition.

A local BBS began to carry FidoNet echo conferences, which permitted me to converse with people all over the U.S. and the world.

I had gotten a job first programming on a mainframe and then on distributed MS-DOS computers.  The DOS programming was in C and assembly language.  I ended up buying my own MS-DOS machine.  I dug deeply into the OS and hardware.  I used direct video access in the EGA and VGA graphics hardware.  I wrote TSRs and device drivers, although most of my device drivers were just TSRs that a client wanted to load up in the CONFIG.SYS so that no one could unload them.

I was asked to perform a security test on a commercial security system for MS-DOS.  I was given a PC with a word processor document in a "protected" directory.  I had access to the DOS DEBUG utility, so I disassembled the code for the INT 21h vector.  I found the code that did a security check before major operations and I NOP'ed it out.  I then was able to read the file.  The company had said that they had several thousand installations and that no one had ever done this.  For a while, they were worried that I was going to publish details of the circumvention, but I hadn't (until now).

I then learned Windows API-level programming.  The Windows API still serves me well.  I wrote a program years ago that iterates through all visible windows and forcibly enables all child windows.  This enables grayed-out buttons, drop-downs, and data entry fields.  Most programs should know whether a control is disabled without knowing its state, but no one seems to follow that practice.  Enabling these controls in some applications (which includes some current Windows system applications) permits you to tinker with areas of the program that are supposed to be off limits in certain circumstances.

I sold software using the "shareware" model for a number of years.  I soon found that I had to apply copy protection to my own programs.  I developed a few techniques that thwarted some attempts to use my software without paying for it.  Some techniques worked well, some didn't.  I found that some of the tricks I was using in my code triggered warnings in anti-malware software.  I spent a fair amount of time submitting new releases of my code to the anti-malware vendors after the code was marked as "suspicious."

I used to get payments from all over the world through snail mail.  I had a collection of physical mail from a lot of places for a long while.  I was impressed that my little niche software was being used all over the globe and in large tech companies.

My local bookstore began carrying a magazine called 2600, which I had heard of.  Once I picked up an issue in 1994, I was hooked.  I've never missed an issue since.

My foray into the world of the Internet came at around this time.  I had heard of the Internet when the "Morris Worm" made the news in the late-1980s.  A co-worker tried to explain the fingerd exploit to me, but I was still clueless as to how this all worked.

I had been using CompuServe as a paid online service that permitted me to have an Internet email address.  Some time around 1994, they offered dial-up Internet access using the Point-to-Point Protocol (PPP).  You logged into CompuServe normally, then issued the command GO PPP.  Then, you fired up Trumpet Winsock to provide a TCP stack that permitted TCP access through the service.

I began viewing these new-to-me websites using SPRY Mosaic as the browser.  I picked up a book on HTML.  I got a shell account with a newly formed Internet Service Provider (ISP) and I stood up my first web page.  I learned how to write Perl and C Common Gateway Interface (CGI) code from the NCSA web server documentation.

I liked working on Internet code so much that I left my job for employment as an Internet coding consultant.  I wrote a few CGI programs for clients and I taught a few HTML classes.  I was already teaching programming classes at my alma mater tech school.  I soon began to teach HTML and web programming there.

In the mid-1990s, I had published what I believe to be one of the first web (CGI) programming articles in print in a special edition of Dr. Dobb's Journal.

My technical pastimes have continued over these last 25 years.

Over time, my personal definition of "hacker" has come to mean someone who acquires technical intimacy with a system or systems by amassing enough knowledge to exploit previously untapped potential of said systems.

Cintaks Airer remains engaged in a career in the financial computing industry.  He likes to tinker with a variety of programming languages.  While he uses Rust, Go, and other modern niceties, he's looking forward to writing his first lines of 6809 assembly code soon.

Return to $2600 Index