Habeas Codex
by Curtis C. Chen
Illustrated by Trevor Fraley | Edited by Brian J. White
Copyedited by Chelle Parker
December 2021
4736 words — Reading time: around 23 minutes
Content Note:
This story contains references to threats of violence against women (including threats of sexual assault and murder), and depictions of cyber harassment.
The sky above the port was the color of YouTube, tuned to a singing-cats channel.
Andy watched Jake’s avatar stumble around for a few seconds before he took pity on his partner and used his own avatar to pull Jake into the starting target area of the virtual reality police trainer. The timer hovering next to Jake’s head started ticking down the half hour of department-mandated training that he had to complete once a year.
“Is there no way to turn off those ads?” Jake asked over the sounds of “O Come All Ye Faithful” remixed entirely with meowing sounds.
“They’re a paid sponsor,” Andy replied. “You can mute the volume. Just bring up your settings panel—”
“How the fuck do I do that?”
“Right arm straight out. Left hand on your right elbow. You’ll get a pop-up in front of your right hand.”
Jake’s avatar twitched as he performed the gestures for his interface gloves to detect. The cats went quiet, though their computer-generated heads kept moving. “Oh, thank God. That was giving me an even worse headache than these stupid goggles. How much longer do I have to be in here?”
“There’s a timer floating above you, to your right,” Andy said. “See it?”
“You mean the thing that looks like a— Okay, I don’t know what the fuck it looks like.”
“It’s a four-dimensional hyperstructure of interconnected sixteen-segment LEDs.”
“No idea what you just said.”
“The shapes change every second,” Andy said. “It’s less distracting than actual numbers, but if you study it for a second, you can figure out what time it is.”
“If you study it, maybe,” Jake said. “Just tell me how much longer we have in this crazy funhouse.”
“Twenty-five minutes. And remember, the trainers are recording our session, so anything you say—”
“I don’t care if they broadcast this on the evening news,” Jake said. “Hey! Note this feedback: Why the fuck isn’t ‘flat mode’ the default, if so many people turn off the 3D option anyway?” Jake’s arms flapped up and down. “Put that in your comments database and smoke it!”
He walked into the virtual intersection, right over the pulsing red target for the world ingress port, and started spinning in place again. Andy moved his own avatar over to Jake and nudged him out of the street. A pink-haired valkyrie on a glowing motorcycle burst from the port, landed on the street, and weaved around them, trailing a rainbow behind her.
Andy looked around the virtual city scene for something easy they could do. He wasn’t enjoying this any more than Jake was, though in Andy’s case, it was because he’d had a Better Worlds VR account since he was thirteen, and he’d been a licensed BW developer since he was fourteen. This was remedial for him. “Hey, let’s go check out that street vendor over there. I’ll show you how micro-businesses work in here.”
“Great. I’ll pay micro-attention.”
Andy led the way over to the small newsstand-like structure. It was similar to any number of vendors he’d seen before, using a slightly modded version of the default BW kiosk model, but this one shimmered and blinked when his avatar got close, and it wasn’t just the animated texture on the outer walls. The face in the window was a cartoon fox wearing a fedora.
“What the hell is he selling?” Jake pointed at the video clips cycling on the display counter of the kiosk. “Are those cartoon octopuses behind those girls?”
“They’re… tentacles,” Andy said, glad that Jake couldn’t see him blush. “Um, maybe we should try a different booth.”
“Good afternoon, Detective!” the fox character said. It was obviously an AI bot running scripted responses. “Andrew Dixon, we have a special deal today just for you: 25% off all hentai videos!”
“Friend of yours?” Jake asked.
“No. Wait a minute,” Andy said. “We didn’t identify ourselves. And these are stock pre-gen BW avatars.” He raised his left hand with three fingers bent, and a holographic badge appeared in front of his palm. “Let me see your business license—”
“We are now closed for routine site maintenance,” the fox said. “Sorry for the inconvenience!”
The kiosk folded into itself and disappeared into the ground, leaving only a square logo with a link back to its old-school web site. After a second, that disappeared too, but not before Andy got a screencap for himself.
“What the hell was that?” Jake asked.
“I don’t know, but we’ll have to log off so I can trace that… person,” Andy said.
“Before our time runs out?” Jake pointed at his floating timer.
“You can finish the training later.” Andy pointed at the blank pavement where the kiosk had been. “That was probable cause. We’ve got a case now.”
“Thank Christ,” Jake said. “Those cats up there just started dancing. Let’s get the fuck out of here.”
“I assure you, Detectives,” Garrett Marlowe said, “this is the first I’m hearing of this exploit. I’m surprised it’s even possible.”
Andy and Jake were meeting with the CEO of Better Worlds in his 150th-floor office. The panoramic window behind Marlowe’s curved glasstop desk overlooked most of Manhattan, with rotating pop-ups in the window’s heads-up display showing hotspots where people were plugged into BW’s network of virtual environments. Even in New York City — or maybe especially here, Andy thought — people wanted to get away from reality.
“Well, it’s possible,” Jake said, sliding a display tablet across the desk. He could barely pronounce most of the data labels shown on the tab, but he was much better at sweating people than Andy was. “My partner and I were standing right there when it happened.”
“I’m sorry, Detective. I don’t know what to tell you,” Marlowe said. He barely glanced at the tab, Andy noticed. “Our users can be very creative. It’s possible that vendor modded his storefront with some unauthorized third-party code.”
“And your servers don’t prevent people from doing this?” Jake asked.
“We’re an open service, Detective,” Marlowe said. “Federal law requires our systems to be welcoming, not prohibitive. We provide a platform with an API and let people do what they want, within certain community standards—”
“Yeah, yeah, we’ve all seen the commercials,” Jake said. “Is that your statement, then? You know nothing about this illegal use of your commercial online service?”
“‘Illegal’ is a very strong word, Detective,” Marlowe said.
“It’s a technical term,” Jake said. “It means you’re breaking the law and we can send you to prison.”
“What my partner’s trying to say is we can help out here,” Andy said, leaning forward. “We don’t want to shut down BW, obviously. So many people use it every day, it’s practically a public utility. But it is our job to keep the streets safe, real and virtual, and we can’t do that if something in your system allows criminals to circumvent law-enforcement protocols. That’s bad for both your business and ours.”
“Well, I’m glad one of you is making sense.” Marlowe flashed a reptilian smile. “But I have to ask, Detective Dixon. Does your partner know why this particular vendor targeted you for their advertising?”
Andy traded confused glances with Jake. “Are you implying that I should know something about this?”
“Well. I can only assume that it’s because you frequent some of the more… shall we say, ‘fringe’ areas of Better Worlds.”
“Mr. Marlowe, I don’t know what you’re talking about.”
“I’m sure the NYPD would be very interested in some of the gathering places you’ve visited using nonhuman avatars,” Marlowe said. “I’m not being coy here, and I don’t appreciate your insinuations,” Andy snapped. “I only have one personal avatar in BW.”
Marlowe frowned. “You’re not Andrew Xavier Dixon from Brooklyn?”
“I am,” Andy said, then groaned. “I’m Andrew X. Dixon Junior. You’re looking at my father’s account, aren’t you?”
Marlowe’s face reddened. “Oh my. I’m so sorry.”
Jake leaned toward his partner and muttered, “I’ll take ‘Things I Didn’t Ever Want To Know About My Dad’ for $500, Alex.”
“Shut up, Jake.”
Andrew Xavier Dixon Senior’s brownstone apartment building in Brooklyn had been built back in the twentieth century, before maglev technology was cheap enough to install everywhere, and the landlord had never bothered to replace its central staircase with an elevator. Jake was out of breath by the time they reached Xavier’s apartment on the top floor, and the older detective sat in the kitchen with a glass of water while Andy followed his father into the study where his computer was.
“I didn’t know you were into online dating, Dad,” Andy said, sitting down at the keyboard after his father had unlocked the screen. He couldn’t see Xavier’s goggles, gloves, or other VR interface devices. That was probably a good thing.
“You never asked,” Xavier said. “And hey, I don’t ask about your sex life.”
“Already too much information.” Andy inserted his police key into the computer’s forward data port and rebooted the machine. “When did you start watching cartoons about talking animals anyway?”
“I went through a dark time after your mother passed away,” Xavier said. “But MLP is actually a damned good show. You ever seen it?”
“Why can’t you just be into golf or bowling like other old men?”
“Sorry, son. Technology’s in our blood.”
“I suppose I should be glad you’re only doing this stuff virtually.” The computer booted up and started loading the police forensics operating system from Andy’s data key. “You are only doing it virtually, right? You’re not actually going out to orgies dressed in a horse costume?”
“Relax. Your social anxiety is hereditary. And I’m not keen on picking up weird diseases from random strangers.”
“Well, you may have gotten a virus anyway.” Andy started running some basic diagnostics. “This’ll just take a few minutes.”
“You’re not going to find anything. I run a clean machine.”
“This wouldn’t show up on a normal system scan. It’s specific to the BW interface. But the data could have been stored anywhere on your local drive.”
“All right. But I should warn you, you probably don’t want to look in the folder called ‘Pretty Ponies.’”
“Okay, going to use the bathroom now.” Andy stood up and hoped he wouldn’t puke. “Don’t touch that.”
“No touching, got it.” Xavier was clearly enjoying this too much.
On the way to the bathroom, Andy passed Jake entering the hall from the kitchen. “Everything cool? You guys bonding?”
“Doing my best to avoid it,” Andy said. “Go in there and make sure he doesn’t interrupt the scan, okay? He likes to mess with technology.”
“Guess it runs in the family,” Jake said.
Andy tried, and failed, to leave a big stink in the toilet without flushing. He settled for turning the toilet paper roll around so it unspooled from the back instead of the front. Xavier hated that.
When Andy returned to the study, Xavier and Jake were laughing uproariously about something.
“And then,” Xavier said, “he actually opened it!”
Jake whooped and banged a fist on the wall. “Stop it. I’m going to die laughing. Oh, fuck.”
“Nice to see you two are getting along,” Andy said, sitting down at the computer again.
“Your partner’s a rare breed, Andy,” Xavier said.
“What, because he likes dirty jokes?” Andy tapped at the keyboard, trying to ignore Jake’s continuing laughter.
“Give me some credit. We’re talking about politics.”
The screen lit up with hexadecimal address markers and color-coded checksums. Andy frowned at the display. “Huh.”
Jake stopped laughing and turned to look. “You going to tell us what that means, partner?”
“It means Dad’s been sharing more than he intended,” Andy said.
“Shit!” Xavier leaned over his son’s shoulder. “Oh, that’s messed up. They hid it inside a music plug-in? Bastards!”
“Okay, somebody tell me when I can make an arrest,” Jake said. “I’ll just be over here, by myself, waiting.”
“Might be waiting a while,” Andy muttered. “That’s phoning home to a botnet—”
“Like hell it is. Let me drive,” Xavier said.
Andy got out of the chair. Xavier slid into the seat and began typing faster than Andy expected. “Just so you know, this OS doesn’t have the normal Unix utilities—”
“I’ve used CSOS before,” Xavier said, pronouncing it see-saws.
“What?” Andy frowned. “When? Where? Why?”
Xavier grinned. “I was doing tech consulting when you were still in diapers, son. Before the police started hiring for computer skills, they outsourced a lot of their forensics.” A new window popped up on the display, covering the old data with a different wash of numbers and symbols. “And I learned to never put a box on the net without shadow logging.”
Jake leaned forward to frown at his partner. “Jesus, Andy, you’re not going to cry, are you?”
“Of course not.” Andy blinked away his tears. It was rare when other people handled technology competently around him, and it always made him emotional when he saw it. “Please tell me you had reverse DNS turned on.”
“And IPv6 geolocation. Feliz Navidad!” Xavier brought up a map of the five boroughs and started adding placemarks. “Matching names and addresses now.” He frowned. “Does Garrett Marlowe live on Long Island?”
“The CEO? No, that’d be slumming it for him,” Jake said. “Why do you ask?”
“Does he have family out there? ‘Cause there’s this.” Xavier zoomed in on one placemark: BRIDGET MARLOWE.
“Daughter, maybe?”
Andy recognized the name. “That’s his ex-wife. And she’s in the system.”
“As a perp?” Jake asked.
“No. Complainant. She filed harassment charges against some other BW users a few years ago, but the detectives she drew didn’t understand computer crimes. We dropped the case.”
Jake grumbled. “Can’t be a coincidence that the CEO’s ex-wife is also being targeted by these black hats.”
“Guess you two are going for a drive,” Xavier said, pulling Andy’s key out of the computer and handing it back to him.
Bridget Marlowe’s house on Long Island was somewhere between Xavier’s apartment and Marlowe’s office in terms of luxury — but considerably closer to the latter. One of her servants carried away a pair of small yappy dogs while she led Andy and Jake into the parlor. The detectives sank into a large couch under a chandelier, declined her offer of brandy, and waited while she poured herself a drink.
“So you’re here to follow up on my harassment complaint,” Bridget said. “It’s about time.”
“Well, not exactly,” Andy said after Jake shrugged. “It is related, though. Have you continued getting, uh, threatened?”
“Are you kidding?” Bridget gulped her brandy. “I’m a woman on the Internet. I say anything online and fifty different nutjobs pounce.”
“But that’s only online, right?” Jake asked. “Nobody’s actually attacked you in real life?”
Bridget shook her head. “No. But I can’t ignore the possibility. And it really affects your quality of life when you’re receiving daily threats of murder, rape, and other injury or public humiliation.”
“Why hasn’t your husband done anything about this?” Jake asked.
“Ex-husband,” Bridget said. “Gar feels like he’s doing enough with his alimony payments. They do cover my bodyguards and physical security, but like you said, all this bad stuff happens online. The police have no idea how to deal with it, and some of those officers didn’t even take me seriously.
“People don’t think it’s real when you’re in some virtual place wearing a simulated body, but it’s still me. Those threats and diatribes are attacks aimed directly at me. And I can’t ignore them. I can’t just stop going online. My job requires me to have a presence in BW.”
“I’ve read your previous reports, ma’am,” Andy said. “The officer noted that you said you kept records of all these incidents? Chat logs, video recordings of BW interactions?”
“Yes, I have,” Bridget said. “Just in case anything ever happened.”
“Those can’t be admissible,” Jake said. “And if we use them in the investigation—”
“I’m not an idiot, Detective,” Bridget said. “Single-party permission means recordings of my own sessions are admissible in state court. Everything in that archive is timestamped and signed with my private key. You can verify the crypto hashes from public records, in front of a jury if you need to.”
Jake turned to Andy. “Jesus, Andy, are you really crying again?”
“Thank you, ma’am,” Andy said, wiping his eyes. “We’d like to get copies of all that data, please.”
Andy was just about to start enjoying his afternoon coffee in the break room when he felt a tap on his shoulder. He turned and saw Jake standing there, looking even more like a grumpy feline than usual.
“Tagging you in,” Jake said, and walked toward the coffee maker.
“Already?” Andy checked the time. “It’s been barely ten minutes since I left.”
Jake poured half of his hip flask into an empty mug, then added some coffee. “Ten minutes is a long fucking time when you’re staring at that shit.”
It was their third day of combing through Bridget Marlowe’s harassment files. They had started with the plain text chat logs, then moved on to the audio recordings, and were now into the full-motion video captures from BW avatar interactions. The attacks they’d seen launched at Bridget from hundreds of people — most of whom presented male avatars — had gotten more graphic and appalling as they worked up the chain and forward in time.
It seemed like the harassers were, if not overtly organized, always aware of each other’s actions and actively trying to outdo their fellow haters. Andy was proud of himself for not having actually gotten sick yet. Jake hadn’t been so lucky; he had witnessed a recording of a cluster of grotesque, naked male avatars rushing Bridget, attempting to copulate with her, then literally exploding and covering her in a hideously realistic shower of simulated gore.
Andy couldn’t imagine having to deal with that kind of harassment day after day. He’d endured his share of terrible interventions and arrests as a uniformed officer, but the level of hatred these people seemed to have for Bridget was way beyond anything Andy had ever seen targeted at police. Possibly because these scum knew she couldn’t, or wouldn’t, fight back, for fear of damaging her business reputation. She had to be the good guy if she wanted to keep her livelihood.
Well, Andy had a badge, a computer, and a mountain of court-admissible data.
He wasn’t interested in stopping the individual perpetrators here — there would always be jerks leading idiots online, and a good number of the harassers were sure to be minors who wouldn’t get sentenced to do any real time. Andy had run into a fair number of such griefers when he was a teenager, before he graduated from modding games to actual coding. Then, after a few years suffering business tech bros and one particularly nasty lawsuit, he realized that being a white-hat hacker was his true calling.
Now Andy wanted to know how these lowlifes were able to circumvent BW’s community-standard protocols and avoid police detection in the system. Both the NYPD and the FBI ran AI programs in-world to scan for usage violations, and also sent “undercover” officers through servers periodically to look for the clever baddies who could identify unmarked police bots using behavior pattern recognition.
Andy left Jake in the break room and went back into the precinct’s computer lab. They had set up a newly imaged, air-gapped machine running CSOS to examine Bridget’s data, with an analog-only camera transcription interface to copy any important data to a separate device. It made everything take twice as long, but they’d already seen how the black-hat code could hide itself on Xavier’s computer, and they couldn’t risk that happening to the NYPD mainframe.
The next video on the checklist was from two months ago, during one of Bridget’s public Q&A sessions about educational technology for public schools. Andy watched as a large spiky ball rolled down a virtual boulevard, flattening a good third of Bridget’s audience before it hit her avatar and bounced off her antivirus shield. The spikes on the ball appeared to be erect penises.
“Lovely,” Andy muttered as the ball kept trying to roll over Bridget, and the spikes began spewing fluids everywhere. “That’s just great.”
He fast-forwarded the video until the ball gave up, rolled back down the street it had come from, and disappeared into the ground. Something about the animation at the end seemed familiar. Andy spun the video back and then advanced it frame by frame.
The ball rolled up to the side of a building and seemed to melt into the surface. No, not melt, exactly…. The round ball first degraded to a collection of polygons, two-dimensional shapes which then folded themselves up against the wall and dissolved, blending in with the texture on the side of the building.
Just like the fox’s hentai kiosk had folded into the ground.
“Holy shit,” he said, pulling up the file from his and Jake’s aborted training session. He sent Jake a text message while he started a comparative analysis.
When Jake walked into the lab, Andy exclaimed, “It’s in the render module. They’re hijacking the GPUs!”
Jake shook his head. “Just once, I wish you’d finish a sentence without using any acronyms.”
“Remember that vendor who made us as cops during your tech training?”
“Yeah. Never did figure out what he was selling.”
“You don’t want to know,” Andy said. “Anyway. Look at all these different attacks. See how the avatars appear and disappear? They de-rez into polygons, then fold up into the nearest flat surface.”
Jake nodded. “I’ll take your word for it. But what does that get us? All we know is what it looks like.”
“We know a whole lot more than that.” Andy opened a new window. “I have a full recording from our training session. Which was running on a city-owned public server. Which means I can see every goddamn bit that went through that machine.” He highlighted three lines of code and clapped his hands together. “Booyah! Got you, you son of a bitch!”
Jake squinted at the screen. “Once again, I will take your word for it.”
“Come on.” Andy stood and slapped his partner on the back. “I’ve got someone for you to arrest.”
The Better Worlds corporate offices didn’t seem quite so large when they were filled with an armored emergency response team, CSIs collecting every piece of computer hardware on the 150th floor, and uniforms interviewing each employee before they were allowed to leave the building. Jake and Andy had to maneuver Garrett Marlowe through the crowds slowly. They had waited for the crowds to gather before doing his perp walk. It had been Jake’s idea, but Andy hadn’t objected.
“I am going to sue,” Marlowe said as they reached the elevator. “I will destroy the NYPD, and both of you personally, with civil penalties.”
“No, I don’t think so,” Jake said. “We’ve got a pretty airtight case on you stalking your ex-wife using a secret backdoor built into the BW kernel, and because you left that backdoor unlocked, you’re also responsible for hundreds, if not thousands, of black hats also exploiting it to do all kinds of computer crime.”
“You have no idea what you’re talking about,” Marlowe said.
“No, not really.” The elevator doors opened, and Jake pushed Marlowe inside. “But my partner does.”
Andy stepped into the elevator with them, waited for the doors to close, then held up a tablet for Marlowe to see. “Runtime debug logs from an NYC public hotspot where someone used your exploit to hide a gray-market storefront from police observation. It’s a pretty clever hack: It off-loads the job to the graphics processing unit or a math co-processor, so it won’t spike the CPU cores and attract any police bots. But it kills the image detail when it happens. And people like me notice shitty graphics.”
Marlowe kept a poker face. “I want a lawyer.”
“That’s what I like to hear,” Andy said, pocketing the tablet. “The DA is going to make mincemeat out of your misogynistic ass.”
They rode the elevator down to the ground floor in silence. Reporters were waiting for them in the lobby, just as Andy had arranged.
The coffee shop smelled good — Andy had to admit that — but it was otherwise noisy and crowded. He didn’t like hanging out in public places like this, where he couldn’t control the volume level or block unwelcome interactions. Meeting people online was so much better.
“Why did you want to come here?” he asked Xavier, who sat on the other side of the small round table. “We could have just met in BW. Would have saved both of us a trip downtown.”
“It’s not the same,” Xavier said. “I wanted to see you. In the flesh. How are you?”
“I’m good,” Andy said. “Thanks for helping us with the case. A district attorney might contact you soon to follow up—”
Xavier waved a hand. “Come on, don’t do that.”
“Do what?”
“You’re more than your job, Andy,” Xavier said. “You’ve got a life. And I don’t mean online in BW.”
“Look who’s talking.”
Xavier shrugged. “I do that once, maybe twice, a week. For fun. I know it’s not real—”
“It’s real enough to get you off,” Andy said.
“Hey.” Xavier pointed an index finger at Andy’s face. “I’m still your father.”
“Don’t remind me.”
Xavier sighed. “I mean it’s not a genuine human interaction.” He spread his hands. “Not like this. Online, it’s all masks and costumes. You can be whoever — whatever — you want. It’s fun. But it’s not reality.”
“Some people might say that’s an old-fashioned point of view.”
“Yeah, well, I’m an old-fashioned guy. And I just want to talk to my son.” Xavier leaned forward. “How are you? Really?”
Andy stared into his paper cup of coffee. “I’m fine, Dad.”
“I wanted to… apologize,” Xavier said. “For not being there. After your mother passed.”
Andy’s stomach tightened. “You don’t have to do this, Dad.”
“No. I do.” Xavier pushed away his coffee. “I realized, when you came to my place this week, when you were surprised I knew so much about computers…. I let you drift away. I don’t think I pushed you out, but I didn’t try to hold on, either. I just didn’t want to deal with anything. And then you went off to school, and….” He shook his head.
“It’s okay, Dad,” Andy said after swallowing the lump in his throat. “It’s my fault, too. I should have talked to you about it. I could see you hurting. I just didn’t know how to reach out.”
“Hey. Come on.” Xavier patted Andy’s hand. “I’m the parent. It’s my responsibility. You were a teenager. You had more important things on your mind. Like girls, am I right?”
“Video games, actually.”
“Huh. That explains a lot.” Xavier pursed his lips. “By the way, I never told you this, but for the longest time, I was so worried you were gay.”
Andy couldn’t help smiling. “Christ, Dad, that is so offensive in so many ways.”
“I don’t mean it like that! I was just worried that I wouldn’t be able to relate to you. I could talk to you about girls, about wooing women, but I would have been useless if you wanted to know how to pick up hot guys at a nightclub.”
“Well, I guess we both lucked out,” Andy said. “We can always talk about computers. That’s a start.”
“Yeah, speaking of. You don’t use those police-issue interface gloves, do you?”
“Of course not. I’ve got a pair of Second Skin Virtuosos.”
“What?” Xavier’s shock appeared to be genuine. “You’re killing me, son.”
Andy squinted at his father. “Don’t tell me you’re one of those Gecko fanboys.”
“They are so much better! The haptic feedback—”
“Okay, Dad, I don’t want to know what you do with your hands in VR, but I don’t need my individual knuckles vibrated separately.”
“Have you even tried it?”
“Dad.”
“I could arrange a demonstration—”
“No.”
They sat and talked until their coffee ran out and the Christmas carols on repeat became too much to bear. Andy didn’t check the time once.