Authors: Daniel Suarez
Everyone was waiting with bated breath as an offshore warez site named “Sourcebomber.ru” came on-screen. There, filling one section, was the source code to their attentiveness state class. Even Strickland, who’d not worked as much on the code as the rest of the crew, recognized it as Prakash’s work—or at least they’d always thought of it as his. Strickland was beginning to wonder whether the rich kid from Bengal really was the talented software architect everyone considered him to be—but of course, that was ridiculous. Prakash had gotten into Stanford! He’d aced undergraduate CS classes. Serious geniuses had worked closely with Prakash and come away impressed.
Strickland was barely able to concentrate as Prakash’s quivering hand scrolled down the page as function after function, class after class, of their precious source code was revealed on this public forum. It was like finding the love of their life in a gang-bang porno.
That’s when Prakash really lost it. He picked up the flat-panel monitor and tore it off the desk. The team scattered as he began smashing it into the wall. Pieces of plastic and glass flew everywhere. He was screaming like an animal.
Their faculty advisor, the elfin Doctor Lei Li, came in shouting at Prakash. That’s when Strickland realized that none of them had called her into the conference room. She had a stake in this too. But they’d thought it was just going to be a routine call.
She was screaming at him. “Vijay! Calm down! What’s going on?”
“The bloody source code is out on the Internet! Raconteur is freeware now! It’s fucking unpatentable! Someone on this team is responsible!”
The rest of the team displayed the early stages of grief. Prakash had passed them all and gone straight to rage.
Kasheyev stared unseeing at Prakash’s empty desk. “Or someone stole it from us.”
Prakash focused on the boyish Russian. “Stole it? Do you think with idiots like Strickland and Wang around anyone would have to steal our code?”
Strickland had more riding on this than anyone else here. Prakash was talking crazy. “Whoa, wait a second—”
Prakash got into Kasheyev’s face. “How could anyone steal it? Our servers aren’t even on SUNet. There are no wireless devices on them. I’ve been checking the logs on the Merakis for months, looking for rogue connections and transfers.”
Doctor Lei frowned. “How are you able to do that? You don’t have rights—”
He ignored her. “And the only code of ours that gets near a network connection is already obfuscated and compiled. Except for the code my ‘teammates’ have in their possession.” He pointed at where the monitor had been. “You saw that code. It was our uncompiled source—and recent source at that. Comments and all!”
Strickland felt a sinking feeling. He did indeed have a fairly recent copy of the source code—on the Leland network, on the cluster in the basement. But then, so, too, did the others. Didn’t they? Did they actually not trust the hardwired network? And only their team had access to that share. Strickland suddenly realized that Prakash was studying his face.
And he had apparently come to a conclusion based on what he read there. “You son of a bitch!”
Strickland felt warm pressure on his face as the world spun out of control. It was several moments before he realized he was on the floor, feeling pain on his lips and the back of his head. He came to his senses with Koepple and Wang trying to get him to his feet. Prakash was nowhere to be seen, and neither were Chatterjee and Doctor Lei.
Kasheyev leaned into Strickland’s line of view and placed an ice-filled paper towel that smelled of champagne onto his face. “You okay, Josh?”
His lips hurt like hell. One tooth felt loose. Strickland looked down to see blood had run down his white shirtfront. “What the hell, man . . .”
Wang was shaking his head. “Vijay has finally lost it.”
Koepple was still looking pale—not his normal unflappable self. Perhaps he, too, was realizing just how completely fucked they were.
Strickland felt tears rising. What was he, a pussy? But he couldn’t help it. This had been his ticket. These other guys had serious technical talent. Strickland was smart but not as technically brilliant as these other guys. He needed people like this to employ his own talents—people and management skills. If his doctoral thesis was rejected due to plagiarism, of all things . . . Jesus Christ.
Strickland looked up at the others. “Why did Vijay hit me?”
Koepple shrugged. “Why
did
he hit you, Josh? Is there a reason?”
“Oh, don’t you start.”
Kasheyev motioned for them to be quiet, and then turned to Strickland. “I don’t think it was you, Josh. I think we need to look at the evidence here. This is a vision intelligence system. I have cameras in these rooms. No one can approach the project servers without our knowing about it. Vijay is right about that. And if no outsider physically got to those machines, then—”
“The damned project servers are in the middle of a party right now! There must be forty people in the lab cluster! Why the hell is everyone focusing on me? Because little Lord Fauntleroy popped a gasket and needs to find someone to blame? And why not the least talented coder in the bunch? Why not the guy who’s had the least to do with the code? Do you realize how this fucks me? Do you realize how totally screwed my life is now?”
The whole team looked embarrassed.
Kasheyev patted Strickland’s knee. “Sorry, Josh.” With a last look he walked out, followed by Koepple.
Wang lingered a moment to point to Strickland’s face. “You might want to think about pressing charges, Josh. We were witnesses.”
Strickland shrugged. It was likely that Doctor Lei would already bring Prakash up on disciplinary charges. And besides, what was the point? Now his face looked the way he felt inside.
Wang walked out too, leaving him alone.
Strickland turned in the office chair to face what was actually a rather beautiful day out the window. From his position on the second floor, he could see a tree just outside, and a raven sitting on a branch there—staring at him. After a moment it flew away.
CHAPTER 4
Intrusion Detection
J
oshua Strickland slumped
in an office chair in the deserted lab cluster. Eyes closed, he listened intently to Rage Against the Machine. It was late. Very late. The place was littered with plastic cups, wine and beer bottles, and pizza boxes. It had cleared out pretty quickly after the intellectual property spill, but that had been hours ago. Hours and hours. Strickland glanced at his watch—then realized he wasn’t wearing one. That he was, in fact, “philosophically opposed to wearing watches.” What a poser he was. Lately he had begun to annoy even himself.
A nearly empty bottle of champagne hung in his hand. No, that wasn’t quite right. He examined the foil label.
Sparkling wine.
The French were sticklers about their intellectual property too. He upended the bottle into his mouth, finishing off the last inch or so, then tossed it against the far wall, where it ricocheted into a trash can.
Not drunk enough by half. He groped among the bottles on the nearest desk until he came away with another half-empty. More of the cheap shit. But then, that’s all he’d be drinking from now on. No first-round-funding-leading-to-an-eventual-IPO for him.
He thought about his student loans. About his other debts. It was nearly a hundred thousand by now. Did he even have a thesis to defend anymore? Did this incident violate the terms of his partial scholarship? Surely, someone could establish that his team really had written the Raconteur code before copies appeared online. Couldn’t they?
He’d started wondering whether they’d actually written the software—and by “they” he meant Prakash. Prakash and Kasheyev. And maybe Koepple.
Strickland had always been the smartest kid in his high school, but when he’d come to Stanford, he was suddenly the slow guy. It was like swimming in white water here—a constant struggle to keep from drowning in knowledge, while for others it was easy. Or at least it seemed easy.
No, scratch that. He knew a lot of people were working hard to keep their place here.
Stop feeling sorry for yourself. You’re no idiot.
The truth was that Strickland sought out supergeniuses—people who were obviously going places. That’s what he’d seen in Prakash, wasn’t it? And Kasheyev? The others just came with the package. Strickland supposed they thought the same of him.
But Strickland did have skills they lacked, didn’t he? Unlike them he was outgoing and persuasive. A motivator of people. He could focus work groups.
He paused for a moment.
He was a parasite, wasn’t he?
Fuck.
If he was honest with himself, he was the least valuable member of the Raconteur team. If they’d never met him, the software would probably have looked exactly like it did right now—Prakash’s vision. Strickland had spent hours and hours studying the team’s source code, intent on comprehending each class. Each function and subroutine. Damn, their code was elegant. Brief. Tight. Integrated. Epic poetry for machines. Strickland was still trying to understand all its subtle details and interconnections. He couldn’t imagine having actually developed it.
In truth, Strickland’s recklessness with the source code might have sunk all their hopes for youthful success. But was it really that reckless to store the code on their own department’s servers?
What would it have taken to steal the project files from the Leland cluster? Someone with inside access, obviously. The server’s log files might show who and when.
Unless they covered their tracks. But then he realized that these were probably virtual servers—part of a cloud. And even if that wasn’t the case, the computer science department was crawling with arch hackers. People who could design microchips on the back of a cocktail napkin. He wasn’t likely to find evidence they didn’t want found.
And what the hell was he thinking—someone with inside access? What if it was someone who’d stolen the code from a misplaced USB drive? From a laptop or a wireless home network? Who was to say it was Strickland who had screwed up? What if it was Prakash? Judgmental prick.
Strickland slid his tongue across his front teeth. One still felt loose. The swelling on his lips had gone down, but if he weren’t drunk, he guessed he’d probably be in serious pain right now.
Bottom line: There really wasn’t much chance of finding out how the code got out. He was no computer forensics expert. Maybe Prakash and his rich family could hire one, but their hiring a lawyer to sue Strickland seemed more likely.
A thought suddenly occurred to him. What if whoever stole the source code was still stealing it?
Strickland sat upright—suddenly alert.
What if he could insert something in the source code that “phoned-home” if they stole it again? A smile spread across his lips—and he stopped himself as the pain spiked. He slid the wine bottle across the nearest desk and marched unsteadily over to the nearest workstation. Man, he actually was pretty drunk.
Strickland logged on to SUNet, then navigated to his own share on the Leland cluster, where he’d stored several versions of the Raconteur C++ source code. He perused the various “cpp” files. How to go about this? Prakash’s code was so damned tightly integrated, and Strickland was pretty drunk.
KISS—keep-it-simple-shithead.
That was the best policy. But then, all Strickland had to do was add something that would run whenever the Raconteur service was executed. That meant during initialization, when constants and classes were instantiated.
What about stealth?
Screw that.
He was in no shape to develop a rootkit. His consciousness felt as though it were swimming hard just to stay above the alcohol line in his skull. He stared unsteadily at the screen.
Focus, you asshat.
Marshaling a few sober brain cells took all his concentration.
Software connecting to a remote host on start-up wasn’t unusual. Checking for updates is all. Nothing to be alarmed about. He could write a tiny remote procedure call to pass back whatever info he wanted from the client via HTTP—from wherever his software was executing. The IP address of whoever stole the code, for starters. Maybe some details on the offending machine’s operating system and language. Maybe a list of network shares and—
No. Keep-it-simple. Just a small XML-RPC client to send the data. He had a C++ library lying around that he could include in the Raconteur code base; that way he could fold his little messaging routine in without much trouble. Then he’d just set up a companion RPC server running on one of his own Web servers to pick up any XML messages sent from clients. The HTTP traffic would look just like standard Web surfing to the thief’s firewall.
But wouldn’t they notice Strickland’s addition to the code? Perhaps not. If someone had stolen the Raconteur software, that meant they trusted the source, right? And the phone-home code only had to run successfully once. Just the one time to find out where it had been spirited away to.
Strickland launched Emacs and pondered what C++ project file to open first. Where should he make this change? He decided to slip the code into one of Raconteur’s ancillary services—a visual trace library. There he added a new subroutine that formed the XML, gathering client IP address, local time, and local operating system, then issuing it to an RPC server he’d set up next. Lastly, he incremented the Raconteur project version—making a bullshit notation about fixing a possible memory leak. He used Prakash’s initials to avoid arousing suspicion. After all, he’d rarely posted any changes that made it into the final source code. In fact, he’d have to admit he’d never made any meaningful contributions to the code itself. Until now.