Hacking and Programming


I sat down to file some serial numbers off of a set of hacking rules for CyberGLoG and ended up with both Hacking AND Programming rules. Before I set into that though, a few things have changed, terminology wise in CyberGLoG (I really need a better name), namely those who were Hackers who used Programs are now Console Jockeys using Wares. 

Console Jockey - A Combat Programmer who uses a CyberDeck to perform illicit activities using Wares. 

CyberDeck - Homemade, military grade supercomputer compacted down into a small square meter. 

CyberSpace - The realm digital. Most often experienced in modern day through the usage of Augmented Reality, which blends Cyber and Meat space. 

Hacking - Using social exploits and knowledge of digital exploits to access data and systems uninvited. Requires the Hacker’s full attention and is not advisable during combat operations.

Jocking - The act a Console Jockey performs when executing Wares. Much like the job it’s named after, it has a very high risk of debilitating or life-threatening injuries.

Programming - Writing and compiling programs. Can only be done during down time between missions.

Programs - Mostly called Apps nowadays. These are compiled code used to perform legitimate operations on a computer

Wares - Modern day WMDs that force devices to operate in potentially unexpected ways, usually against the operator’s will. Specifically made to be used in combat.

Computer, Device, and System will probably be used interchangeably, despite the obvious differences, because I am a monster.

Hacking for Beginners

Anyone with a pair of fingerless gloves and access to a device with an interface can hack. If you want it to be useful, it should also be connected to a relevant network. Some devices, like a computer, will most likely have an interface via keyboard and monitor. Other devices, such as a card scanner, will need additional devices to act as an interface, such as a Skeleton Passkey.


You can avoid the following mess if you’ve got the correct username/password combination for the terminal. Hackers typically trade usernames/passwords as a sort of second hand currency. Find someone who claims to have what you need, then pay their price. Or do the favor they need.


The rules (which were stolen from Warren, who stole them from Ava, who stole them from Telcanter) are rather simple: Select the correct hacking actions - composed of Crack, Hack, and Smack -  in order. Each terminal requires all three actions, and no action is repeated. 


  • Crack is the brute forcing to discover passwords.

  • Hack is console commands jammed in where they shouldn’t be. 

  • Smack is exactly what it sounds like: You haul off and smack the system. 


Should the Hacker select a wrong action, they’ll be met with an error message. Should a wrong action be selected again, the terminal locks down and becomes unusable. 


Depending on the level of devices security rating (1-4; assume 1 if not stated) you may be required to repeat the process. 


If you insist on hacking while in combat, each guess takes a turn and requires your full attention. Leaving the terminal restarts the process and may trigger security. 


Before you begin Hacking, you’re allowed an Intelligence test: 


On a Success you eliminate one option for the first action as incorrect. 


Succeeding by 5 or more reveals the first correct action. 


Critical success and you immediately gain access


On a Failure you gain no insight or advantage to the situation. 


On Critical Failure, the terminal locks immediately.  


Now, mind you, just because you’ve hacked a device connected to a network doesn’t mean you’ll be able to make it do anything you want. A door access panel isn’t going to be able to control local cameras. It’s going to open, close, lock, and unlock the door. The console in the security room, however, will be able to control both. It’ll also have a higher security rating and pesky guards who will take offense to you being there. 


Making a device do what it shouldn’t is what Wares are for. 


So What Can You Do?

There are a few generic actions you can perform, though as said, not all of them will be applicable all the time. Performing them takes about a turn, besides Upload and Download, which are variable based on size of data be transferred 


  1. Download - You move queried information from the local drive to your portable that you’ve inserted. 

  2. Query - Ask a question and get an answer to the best of the system’s knowledge.

  3. Sabotage - You out right break it, causing an alarm. 

  4. Suppression - You turn a specified system off for as long as you are at the terminal.

  5. Upload - You transfer data from a connected portable drive to the local drive of the system. 

  6. Use - You use the system as it was intended. Leaving the terminal at this point causes it to continuously run the last command given. 


Security

Typically, people don’t like it when you hack their devices and start touching their stuff. Which is why Security will eventually step in. Usually violently. With guns. For murder.


Programming


Hubris
“It’s too complicated and probably won’t be used.” Wise and probably true feedback. Wise and probably true feedback I’ve chosen to ignore. 


A program, simply, is a series of commands written and stored into a file, which are then executed when the computer is instructed to RUN the file. 


Why, though? In a setting with both hacking and Wares, why have a programming system? It’s simple really: 

  1. Shut up. 

  2. It sounded fun - A primary reason I do most things. 

  3. Programs don’t require Processing Dice - They’re significantly weaker than Wares, but once executed they don’t require additional resources. 

  4. Programs don’t require attention - They’re not as adaptive as hacking, but once executed the user can walk away without continued need for input. 

  5. Gives the players an additional chance to do something unexpected - See point 2. Sorry about point 1. 


Writing a program takes anywhere from a few hours to a few days, including the testing and debugging. 


Anyone with a computer and enough time on their hands can code a program, though Console Jockeys are just better at it. 


When writing a program you, the player, will actually need to sit down and write out the program’s instructions (seen below) and hand a copy over to GM for approval or suggestions for possible altering. You then have a discussion with the GM over how long generation of the code will take - probably one command line per hour. 

Executing

A program must be on a device in order to be executed on it, meaning if you want to run a program on a device you’ve just hacked, you’re going to need to Upload it first. 


If executing a program on your own device, it functions without issue. 


If executing on a foreign device, you’ll need to roll (d20) to see if the computer understands the program. There is a 70% (14) chance the program of a non-Console Jockey will operate. For Console Jockey’s the odds improve by 5% (+1) for every template taken. 


Should a 20 be rolled, then the computer crashes trying to figure out the code. 


On a simple failure, however, the program just doesn’t run. 


ABASIC

You won’t be using just any old programming language for all this, instead you’ll be using the most modern and versatile language available to modern man: ABASIC (Advanced Beginner's All-purpose Symbolic Instruction Code). Well, a severe abstraction thereof. The following is a list of commands available to you. Defining new commands is possible, however you’ll need to write a supporting program for it, as well as fist fight the General Manager (or ask nicely). 


ACCESS <directory> - Moves the computer into the specified directory, to continue working. 


BREAK - A command for interrupting whatever the system is doing. 


CLS - A command that clears the screen of the terminal. Useless for our games of pretend, but it exists. If you want it. 


CONNECT <address> - Connects to the remote terminal at the designated address, which is most likely now waiting for an account and password. 


COPY FROM <source> TO <target> - Copies a file from source location/account to target location/account. 


DELETE FILE - Erases the specified file. 


DIM - Declares a variable.


DISCONNECT - Opposite of CONNECT. Immediately severs the connection to the remote terminal. Any logged in account remains logged in and unusable until logged off. 


ELSE - Paired with IF…THEN. If the condition for the IF…THEN is not met, then this code executes. Must be ended with ENDIF 


ELSEIF - Paired with IF…THEN. If the condition of the first IF…THEN is not met, then checks for another condition to execute other code. Must be ended with ENDIF. 


END - The last command of a program. Tells the computer to stop what it is doing and without it, the computer will sit and wait forever for more commands. 


ENDIF - Informs the computer that the IF block structure is over. 


FOR <condition> - A loop command that causes the computer to repeat a set of commands until the defined condition is met. FOR loops execute a certain number of times. Loops must end with a NEXT command, or else the computer will only run the loop once and move on. 


FUNCTION - Defines the start of a function, in case you want to get crafty with your programming. 


GOTO <line number> - Moves the computer’s attention to the designated line number. 


 IF…THEN - The command following THEN is executed if and only if the condition in IF is met. Otherwise the computer ignores the section. Can be combined with ELSEIF…THEN and ELSE to form block structures that must end with ENDIF


INPUT - Accepts data input from either a terminal or specified file. 


LIST - Lists the contents of the current account or folder. 


LOAD - Loads data from the computer for use by the program. 


LOGON <account> - Inputs the account name to a remote terminal. 


LOGOFF - Opposite of LOGON. Logs out of the current account.  


NEXT - Designates the end of a loop. It tells the system to increment its counter and return to the top of the loop in order to repeat the process. 


PASSWORD <password> - Inputs the account’s password to a remote terminal. 


PATH - Moves a specified file along the defined path. Mostly used to (attempt to) through off any monitoring entities.


PRINT <string> - Prints the defined string to the display. 


REM - Designates a remark or note in the code. Not interpreted by the computer, but it makes it easier for humans to read. In case you forget what a section of code is doing. 


RUN <program> - Runs the specified program. 


SAVE <location> - Stores the currently loaded data onto the local drive as a file with the designated filename and location. 


SEARCH <query> - Queries a file or database for data related to the defined query.  


SLEEP - Causes the program to pause, waiting until the user presses a key. 


SORT <condition> - Used to sort the contents of a file or database by the specified condition. 


TRACE - Used to determine the path back to the terminal where the program originated. 


UNTIL <condition> -  A loop command that causes the computer to repeat a set of commands until the defined condition is met. UNTIL loops execute until its conditions have been met. Loops must end with a NEXT command, or else the computer will only run the loop once and move on.


WAIT <time> - Causes the system to wait for the designated time before continuing. 


WHILE <condition> -  A loop command that causes the computer to repeat a set of commands until the defined condition is met. WHILE loops execute until its condition is no longer true. Loops must end with a NEXT command, or else the computer will only run the loop once and move on.


WRITE <destination> <message> - Writes the message to the destination location. Should no destination be specified, the command defaults to the console. 


Comparisons

Used in conditions to determine if a specified instance is true. Technically not needed for what we're doing, but it looks cooler. 


            =    equal to 
            is    equal to
            <>  not equal to 
            !=   not equal to 
            >    greater than
            <    lesser than
            >=  greater than or equal to 
            <=  less than or equal to 

Examples

Waits three hours, connects to a remote computer, enters account log on data, then loads the data to local and saves, before deleting the remote version and logging out. 


WAIT 3 HOURS

CONNECT 126.02.1475.6512

LOGON admin

PASSWORD PetiteConnard69420

LOAD ./McGugginFile.txt

SAVE TO D:/Home/StolenFiles/McGuffinFile.txt

DELETE FILE ./McGuffinFile.txt

LOGOFF

DISCONNECT


IF…THEN example to show what a block structure looks like. 


IF var = 1 THEN PRINT “Example 1”

ELSEIF var = 2 THEN PRINT “Example 2”

ELSE DELETE FILE *.*

ENDIF


Closing Thoughts

It's too complicated and probably won't be used. But! It gives the players another way of interacting with the world in a meaningful manner, beyond describing a room for a third time or combat. Which is good.

"But won't they become too powerful?" ...For what? Also, that's kind of the message. Besides, I'm not above handing characters nuclear warheads. What are they going to break? A fake city? Capitalism? Nothing the next cancer ridden character party won't get paid to run through.

And, once again I ask, if Google Drive and Blogspot are owned by the same goddamn company, WHY do the interfaces not work with each other when copy/pasting? It's insane. Madness. Obnoxious. 
spacer

The Eye of Monoc


I wrote an adventure and slapped it on Itch because Google's analytics have failed me. Give it a look and leave feedback. Or don't, I guess. It'd be really cool of you if you would though. 

 The Eye of Monoc


The people of Garrigill have a slight cultist problem… 

Namely, the group that has taken to camping around the ancient hilltop site used by the worshippers of Monoc, god of Knowledge and Insight, before the god was forgotten about.  The location still bears the statue dedicated to the one-eyed god and, should the mad ravings of the followers encountered in town be believed, the god has returned and once again bestoys gifts unto its followers. 

Sounds great, right?

Weeelllll...the cultists have kidnapped a few of the towns folk. The town, understandably, would like them back. If only there were brave adventurers around to fix the situation.

Featuring art by Evlyn Monreau and map by Watabou’s Village Generator 

Originally written for the GLoG, but conversion to your favorite system is easy enough. 







spacer