banner banner banner
Unexpected Rain
Unexpected Rain
Оценить:
Рейтинг: 0

Полная версия:

Unexpected Rain

скачать книгу бесплатно


“Okay. Maybe it’s someone you know, maybe it’s someone you don’t know. Let’s just say for now that someone out there framed you, and we don’t know who it is. So the next question is, how did they do it?”

“That’s something else I’ve been thinking about non-stop for the past three days. The way I see it, there’s two parts to it.” He raised one finger and then another as he talked. “One, they would have had to figure out a way around the safeties on the doors to open both at the same time. And two, they would have had to make it look like it came from my console, because the commands were in my log file. Which means they either ran the commands directly from my console, while I was sitting at it and logged into it, or they ran the commands somewhere else in the system and managed to write the history to my console logs.”

Runstom quickly jotted down some notes, although he wasn’t entirely sure what the operator was talking about. “So, overriding the safeties …” he started to say.

“That’s the easier one, honestly,” Jax said. “Because it’s mostly theoretical. From my perspective? It’s impossible. But I can tell you what part of the system they would have to break to make something like that work.” He put his elbows on the table and brought his hands together, slowly cracking his long fingers one by one. “The safeties are just checks, right? So when every command is punched into a console, it has to pass a bunch of tests to make sure that it’s okay for the system to run that command.” Jax looked at Runstom, as if trying to read something; as if trying to make sure the officer was keeping up. Runstom put down his pencil to give the other man his full attention.

“Let me give an unrelated example,” Jax continued, his voice picking up speed. “There’s a command called ‘rain’. Now, residents don’t like climate-related surprises, so we have to turn on the rain warning at least twenty minutes before executing the ‘rain’ command.” He grabbed the notebook and pencil from Runstom, who didn’t resist. “So first you punch up a ‘rain-warning’ command. Somewhere in the system, a variable is set. Something like this,” he said as he wrote two phrases on the paper, one below the other. “Then, if you were to run the ‘rain’ command, the system would do a test and see if the current time is at least twenty minutes more than the variable we set with the ‘rain-warning’ command. If it’s not, the ‘rain’ command fails. Otherwise, it starts some subroutine that makes it rain in the dome.”

He finished scribbling and flipped the notebook back over to Runstom. The officer took a look and saw what might have been a series of math formulas. The only words that jumped out were RAIN and WARNING, both written in upper case.

“If I were to punch up RAIN at 10:10AM, it would fail the test,” Jax said, tracing his finger along the jumbled words on the page. “And I’d get this error message. If I were to do it after 10:20AM, it would succeed.”

“What is this?” Runstom asked. “Some kind of code, right?”

“It’s complex.”

“Yeah, I can see that. Goddamn complex.”

“No, I mean it’s COMP-LEX,” Jax said, exaggerating the syllables. “It stands for Computational Lexicon. It’s a common programming language for operational environments.”

“Oh.” Runstom looked at the operator’s scribbled words and symbols carefully. “Okay. So you’re saying that if someone punched in a command that opens the inner doors, then some – variable?” Jax nodded and Runstom continued. “Some variable is set that tells the system the inner doors are open. Then when someone runs a command to open the outer doors, the system would have run some check—”

“Yes, exactly. A check on the state of the inner doors. If they are already open, the command to open the outer doors fails and you get an error message. Same goes for the reverse – if you try to open the outer doors first and then the inner.”

“So someone might have reset that variable, the one that tracks the state of the doors after opening one set of doors.”

“Well, it’s not that simple. Those are actually system variables. No one has access to them from the console.”

Instead of replying, Runstom took a drink from his cup. He managed not to gag, and had another sip, waiting for Jackson to continue.

“Okay,” the operator said. “That’s where the theoretical stuff ends. I don’t know how they changed a variable only known to the system. I mean, the variable names we used here – I just made those up for the sake of a simple example. Operators like me have no idea what actual variables are used in the system, let alone have access to modify them. We can’t even be 100 percent certain of the conditional tests.” Jax paused momentarily, then finished in a soft voice, “That’s stuff only the system engineers would know.”

Runstom nodded slowly, trying to absorb the information he’d just gotten. “Okay, so let’s say somehow someone wrote some code that broke the safety check. Let’s go to the next question: How did they make it look like it came from your console?”

“How did they make it look like it came from my console?” Jax repeated quietly. “This part I’m not so sure about. I was logged into the system at my console. I didn’t punch in those commands, but somehow they were run as if I did punch them in. Or at least it was logged that way.” He trailed off.

Runstom took another drink of the cold coffee. He watched Jack Jackson and began to wonder if that nagging doubt in the back of his mind was right. That this was going nowhere. That this was really just a waste of time. He swallowed and tried to clear his head of doubt. It wasn’t as if he had anything better to do with his time. But he couldn’t help thinking that if an officer couldn’t trust his gut, he couldn’t trust anything. He shot for a simple explanation. “Maybe someone punched it in while you were away from the console? Did you take any restroom breaks?”

“No, that’s not it,” Jax said, shaking his head without looking up. “There’s some kind of body-detector at the console. Any time you get up and then come back to it, you have to re-authenticate to the system. Biometrics and all. Even if you just get up to stretch.”

“Sounds like a pain in the ass.”

“Yeah, it is.”

“Look, maybe we need to move to some—”

“Wait,” Jax interrupted. “There was one thing. One weird thing I remember from that night.” His cool gray eyes suddenly lit up. “That’s it! That has to be it! There was one time when I got up for a few minutes. When I sat back down, I re-authenticated, and it didn’t take. I had to do it again!”

Jax looked at Runstom expectantly. The officer started, “I don’t understand, why would …”

“Don’t you see? An op like me has to authenticate to a console dozens of times during each shift! By voiceprint, fingerprint, and typing in a password.” He enumerated the three actions on his long, white fingers. “Voiceprint, fingerprint, password. Voiceprint, fingerprint, password.”

“So you typed it in wrong?”

“No!” Jax said. “Did you hear what I said? Voiceprint, fingerprint, password. Dozens of times during every shift. I can type that password in my sleep. You could gouge out my eyes and sit me in front of that console and I’d still be able to authenticate.” He had a desperate look on his face, but Runstom, despite trying to keep an open mind, had trouble believing there was any significance to this story. “Check the logs.” Jax looked at the B-fourean guard, then back to Runstom. “Tell them to go get the logs. The console logs!”

The guard’s smile drooped slightly at being brought into the conversation by the prisoner. He looked at Jax and then at Runstom.

“There’s a file for this prisoner,” Runstom said. “A file that has to go to the System Attorney out at the court on Outpost Alpha. Could you please bring me that file?” The guard started to move, but hesitated. Runstom flipped through his notebook, as if looking for something. “I have a copy of it, but I left it back in my quarters,” he lied awkwardly. “I know the detectives left a copy that gets transferred with the prisoner. Could you please just have someone bring me that copy?”

The guard gave him a conspicuous look, like he didn’t trust Runstom completely, but then apparently decided he didn’t much care, because he shrugged and left the room. He came back a few seconds later and said, “Someone will bring it in just a moment, Officer.”

“Thank you very much,” Runstom said. He turned to Jax. “Okay, Jax. What’s the deal? What if you did have to authenticate twice? What will we see on those logs?”

“If I mistyped my password, then you’ll see an authentication failure. Followed by a successful auth a few seconds later,” Jax said. “But I don’t think we’ll see any failed auths.”

“And what does that mean? If there are no authentication failures?”

“It means that I wasn’t authenticated the second time. I just thought I was.”

“I don’t follow you,” Runstom said, desperately trying to focus.

“It was another program. Something that gave me a fake login prompt. Even though I was already logged into the system, I saw the login prompt and thought I was not logged in yet. I give it my voiceprint, fingerprint, and password again, and the prompt goes away. And that program runs whatever it is meant to run.”

Runstom rolled around the concept in his brain, thinking out loud. “So you see a login prompt. You think you are authenticating, but really you are telling some program to run. This program runs some commands, and it’s running them from your console – because you told the program to do it.”

“Yes!” exclaimed Jax.

A B-fourean officer came back into the room and handed a folder to Runstom. He was an officer Runstom hadn’t seen before, an astonishingly young rookie. Runstom thanked him and the officer exchanged smiles with the guard in the room and went on his way.

Runstom dove into the folder, digging out the console logs. He came around to the other side of the table and he and Jax pored over the printouts together. “The incident occurred at 2:03AM,” Runstom said.

“Here!” Jax excitedly poked the page. “Look. Here’s when I authenticated, at 2:01AM. No auth failure. Only one auth success.”

Runstom stared at the log in silence. His heart pounded as the realization dawned on him that his hunch was right. This was no open-and-shut case, as much as his detectives wanted it to be. There was a wrinkle, and Stanford Runstom was onto it.

“So now what?” Jax said anxiously.

Runstom stood up and paced slowly around the table. He could feel the thrill of the discovery enticing him, but he had to remind himself that this double-authentication trick only meant something if Jax was telling the truth. Even if he weren’t deliberately lying, he was only going on a memory of having to log in twice. There was nothing in the printouts that corroborated the anomaly Jax was describing.

“If we could get back into your LifSup system, could we find this hidden program?”

“Yeah, but I wouldn’t get my hopes up,” Jax said. “Anyone who was smart enough to design this kind of program probably knew enough to cover their tracks.” He paused, and Runstom was forced to cock his head in bemusement to get him to extrapolate. “The invasive program’s final command was most likely to delete itself.”

“Right,” Runstom said, resignation in his voice. “Okay. So how did it get there?”

“Well,” Jax replied, lost in thought. “There are no data ports on the consoles themselves. And the controls on the console are only set up for running commands. So you couldn’t sit at a console and enter in the program code manually. They could have jacked into the LifSup system itself, but access to the hardware is locked down tighter than a drum.” He stopped and thought for another minute or two, folding his hands together and bending his fingers, occasionally finding a knuckle to crack. “Of course, there’s always the up-link access. There’s a satellite up-link built into each LifSup system so that Central Engineering can push down updates.”

“Updates?”

“Yeah, bug-fixes and stuff. Revisions to the program code that are supposed to make it run better.”

“Okay.” Runstom started thinking out loud again. “So someone could have used this up-link to put the program into your LifSup. Does that mean they would have used a satellite somehow?”

“Yeah. Well. Not necessarily a satellite. But in order to speak to the receiver down here, they’d have to do it from somewhere in orbit around the planet. I don’t know much about satellite communication. But it seems like it’d be possible for someone in some other kind of space vessel to carry the same kind of transmitter that a satellite would use, and beam the signal down to our receiver.”

Runstom took a moment to digest that. “Wouldn’t the data coming down from a satellite be secure?”

“Yes, I’m sure there’s an identification process,” Jax said. “Plus an encryption layer. So we’re talking two possibilities here. Either they somehow mimicked a known satellite, which would be tricky, because they’d have to get information used to generate the identification of the specific piece of hardware out there in space.”

“And we are already looking at the possibility of someone who has enough inside information about a LifSup system to be able to circumvent the safety checks,” Runstom said. “So we can’t rule that out.”

Jax nodded slowly. “Yeah, true. The other possibility is that they knew of some other channel, some back-door or something into a LifSup system.”

“You mean like some other up-link?”

“Well, not really. I mean the same up-link, but during the handshake – when the signals are being sent from each end to identify itself – there could be some kind of code that you could send to the LifSup side to get direct access to the system.”

“Why would there be some secret code?” Runstom asked. “I mean, if they can already send updates through the up-link, why would they need a ‘back-door’ into the system?”

Jax pulled his arms up and twisted his upper body in his chair, popping a few kinks in his back as he did. “Well, it’s just an idea. I’ve seen technicians when they’re working on a system that’s not behaving normally. When something subtle is off, they like to use a special port somewhere on the LifSup main unit. They plug directly into it with their personal computer and send it some special code that gives them full-access to the system. I figure it’s the kind of thing that’s universal across LifSup systems, or at least LifSup systems of the same model. It’s just there for troubleshooting purposes.”

“So you figure that there’s another back-door in the up-link that works the same way a technician uses a physical port to get into a system,” Runstom reasoned.

“Now, I don’t know that for a fact,” the operator said, spreading his hands out in front of him. The more he had to explain technology, the more physically mobile he seemed to get. “Let’s just say, I wouldn’t be surprised if there were such a back-door.”

“Okay, okay.” Runstom nodded and looked down at his notes. It was all speculation, and it was all hinging on this prisoner being wrongfully accused. Runstom willed himself to resist judgment one way or the other, but he felt like he had to decide if it was even possible for someone to exploit the system in such a way. Was it even possible for Jax to have been set up? “So we have so far. One, someone who knows the internals of Life Support systems writes some code that would open both sets of venting doors on a block. Two, they disguise this code and set it up to run as a replacement for a login prompt, knowing that it would cause some operator to unwittingly execute it. Three, they beam the code down from a transmitter of some kind to the satellite up-link of the LifSup system at block 23-D.”

“Yeah, I guess that’s about it,” Jax said, looking off into the distance. He seemed to be lost in thought for a moment, his eyebrows furrowing and his mouth opening slightly as if he were about to add something else. Then he simply shook his head, then nodded. “Yeah, that sounds about right.”

Runstom studied the other man and they both lapsed into silence for a few minutes. The door to the interrogation room opened and the rookie B-fourean officer came through. He held the door open and George Halsey came in after him.

“Oh, hey, George,” Runstom said, feeling his face redden with guilt.

“Officer Runstom,” Halsey said, standing over the table. “I see you decided to question the prisoner.” He eyeballed Runstom. “Just like we talked about.”

Runstom stood up. “Uh, yeah. Like we talked about.” He tried to make his voice power through the sheepishness he was feeling in getting caught by his partner.

Halsey used the next awkward pause to grab the top of the chair Runstom had been sitting on and wheel it over to himself, swooping it beneath him, sitting, and lifting his feet up and dropping them crossed onto the table in one continuous motion. His head lolled back in a kind of relaxed apathy. If there was an art to laziness, Halsey had mastered it.

Runstom frowned at Halsey, then glanced back at the one-way window that stretched across the back of the room. “So you watched some of the interview, right? Or do I need to catch you up?” He cast a sideways glance at Jax, who was looking at both of them timidly. Runstom was worried that Halsey’s sudden entrance undid all the work he’d done to open the prisoner up.

“Yeah, I caught most of it,” Halsey said, following Runstom’s eyes to Jax. “Lemme ask you fellas this. Do you think that this alleged satellite transmission happened right before the incident at the block? Or did someone allegedly beam that code you’re talking about down to the LifSup months ago and it laid there dormant?” At the end of the question, he briefly speared Runstom with a warning look, then his face relaxed again as he turned back to await Jax’s answer. Reproval was something rare to see in Halsey’s eyes and it fueled Runstom’s lingering doubt over whether he should have started the interrogation in the first place.

“Well, either is possible I suppose,” Jax said. Apparently, Halsey’s relaxed manner extinguished any previous anxiety, because the operator again spoke freely. “I guess it doesn’t seem likely that they would beam it down and let it just sit there on the system for long. In fact, it probably sat hidden in volatile memory, so it would be wiped clear during a reset and no trace of it would ever be found.”

Halsey nodded and ran his fingers through his short, blond hair. “Clever,” he said. He looked at Runstom. “I’m thinking traffic logs.”

“What traffic logs?” Jax asked.

“ModPol keeps record of all space traffic coming in and out of the system, orbiting the planets, going into the asteroid belts, and so on,” Halsey said, turning to Jax again to answer the question. He looked back at Runstom. “We could access the logs, find out who was out there at the time of the transmission – alleged transmission – and get their approximate position.”

“Right.” Runstom knew Halsey was going to give him an earful when they left the interrogation room, and yet the other officer seemed to be happy to play along. Then it clicked as to what Halsey was talking about. “Because you would need a direct line of sight from a ship to the receiver dish at block 23-D in the Gretel dome on this planet.”

“Exactly. We plot all the coordinates of ships in the system at that time, and then we can isolate just the ones that would be in position to beam a signal down to his LifSup,” Halsey said, waving a finger at Jax. “Allegedly beam a signal.”

CHAPTER 6 (#u86322e4f-2ec9-54f9-b608-3b7eb6eb6b7c)

“He goes by Three-Hairs Benson. Bluejack is his game. I know he’s been here, so you might as well make it easy on yourself.”

The proprietor of the card-house smirked. “Listen, lady. We got a strict policy here at the Grand Star Resort.” He raised a yellow finger. “We don’t ask for names, and we don’t give out names. We protect the identities of our clients.” He took the raised finger and bent it down, poking the flat palm of his other hand. “You come to a bluejack table, you lay down cash, you get a color, and that’s what we call ya.”

“I know how to fucking play fucking bluejack, pal,” Dava said. She waved her arm in an arc. “You got four tables in this tiny, little shit-hole. At most eight players to a table, and looks like you ain’t exactly packin’ a full house.” She looked around the filthy hovel. “Let’s face it. Most of your customers are pale-skinned domers. If a guy came in here with bright-red skin, you’d notice him.”

“Hey, I don’t judge,” the owner said with a used-hovercar-salesman smile. “Alleys are Alleys. Money is Money. I’d even let you play, if you wanted to.”

Dava’s eyes narrowed. “Even a brown-skin like me, huh? I’m touched. You’re a fucking saint.” She put a firm hand on the shorter man’s shoulder. “Benson had money to play with. And knowing his luck, he probably started losing. Then he thought he had to play some more to make back his losses. That’s how gamblers think.”

“Read the sign lady. This ain’t gambling. The bluejack tables are for entertainment purposes only.” The man was sticking to his routine, but Dava could hear the faint touch of fear seeping into his voice. She could almost smell the perspiration emerging from his skin.

“So he was probably in here more than once,” she continued, ignoring his fine-print line and tightening her grip. “This stout, tattoo-covered, red-skinned man with a fat wad of Alliance Credits.” She leaned in close and got quieter. “You know, I understand what you’re doing. He was a good customer, I’m sure. Lost lots of money on your tables. But you should know: that wasn’t his money to lose.”

The man swallowed and blinked slowly. Dava could see beads of sweat forming on his forehead. He turned away from her and wiggled out from under her hand. “I told you,” he said weakly. “It’s our policy.”

Dava frowned. “That’s unfortunate.” She walked over to one of the bluejack tables.

“Orange, what’s your bet?” the dealer-bot droned as she approached.

“Uh,” said one of the three skinny, white-faced players at the table. “Twelve?” He watched Dava nervously. “I mean, I’m um. I’m out.” He turned his cards over.

“Green, wha-zzzzZZZTTT—”

She drove a small blade into the top of the dealer-bot’s head and pushed a trigger, generating a series of shinking sounds. She removed the blade and a thin lick of smoke followed it out of the now lifeless hunk of metal.

“Aww, awww,” the owner of the Grand Star Resort whined. “Come on, you know how much those dealer-bots cost? Aww, right in the central processor. Come on!”

She walked over to another table and waggled the knife in her hand as she moved. “Maybe you wanna call the cops?”

“Oh come on, lady!” The man ran up and grabbed one of Dava’s arms. “Please!” She looked at him for a moment, saying nothing. “Okay, okay,” he said. “I saw the man you’re looking for.”

“And he’s a regular?”

“Yeah,” the owner said, defeated. “Comes in every night, right about seven. Before the third shift comes on, so’s he can get a good spot at a table.”

Dava nodded, inspecting the man’s face. He seemed just frightened enough to be sincere. “Thanks for your time.” She looked around. “Sorry about the dealer.”

As she walked out the door, she heard the owner say, “Goddammit, Suzu, go get an out-of-order sign for that table! And while you’re at it, get the bot-tech on the phone and see when he can get over here.”