Interrupt
Page 15
Carelli's lips moved, fast, unreadable under the mustache, unintelligible through the white noise.
A flash of anxiety, then Andy knew what was wanted. Exact change only. He dropped the coins in the fare box and Carelli yanked the bus into gear.
Andy grabbed the handrail for balance and moved down the aisle. A man sat in the first seat, in a sports jacket, face turned to the window. Then a young woman, dressed like a hiker, head bent over a book, a neat part in her dark blond hair. He thought of Nell. Three old women, two together and one across the aisle, heads pivoting back and forth like birds, hands flying as if they were trying to sign. Unfathomable. At the back of the bus he dropped into a seat. From here, he saw only the backs of heads, he didn't have to look at the mouths. He figured Wayne would have sat back here.
Carelli's eyes watched in the rearview mirror.
Out the window, storefronts slid by, everything was for sale. Dinette sets, cheap; automotive transmission overhaul; eyeglass frames; frozen yogurt. Like a TV commercial with the mute on.
The bus stopped, released passengers, took on more. Did Wayne get off here? Andy was jarred to one side, the bus was starting. He looked out the window. A savings and loan, a drugstore, a video rental. Here?
He was in a zone of silence, he was in Wayne's reality. This is how it was. How had it looked to Wayne, what did he notice, what did he do? What might Carelli have noticed in the rear-view mirror that he didn't think to tell Andy, that Andy hadn't thought to ask?
The bus stopped, an exchange of passengers. Out the window was a Radio Shack. He sometimes bought components there. Did Interrupt too? Did Interrupt tell Wayne, get off at Radio Shack, figuring that the son of an engineer would be familiar with the place, would believe that his father asked him to meet there?
Andy stood. A pain, an elbow in his side. He turned and a woman was shaking her head, saying something, apologizing. He wasn't sure, so he said "I'm sorry," wondering if his voice sounded right. The bus started, jolting, and they swayed back down to the seats.
She hadn't noticed that he couldn't hear. Carelli hadn't noticed, because Andy had the exact change and there was no reason for them to communicate. Was that what it was like for Wayne? Nobody noticed? Did he pretend that he was just like everybody else, try to pass for hearing?
How had Carelli known that Wayne was deaf?
Andy had asked if a deaf boy got on the bus, and Carelli had said yes.
Andy pushed to the front of the bus and took the seat by the door, where he could see Carelli's profile. He pulled out the hearing aids and for a moment the real-world sounds were as featureless as the white noise. Then his hearing stabilized, was normal, and he blessed it.
He identified himself to Carelli.
Carelli's head turned, is there trouble on my bus?, then snapped back to traffic. The mustache, in profile, pulled down.
Andy leaned forward. "How did you know the boy was deaf?"
A long dead silence. Carelli ignored it, thinking about it, milking it. Finally, "He got on the bus, put his money in the fare box, and just stood there. He wanted something but he didn't say nothing." Carelli's eyes flicked to the mirror, to Andy, to the next lane, straight ahead. "I ask him what he wants and he still says nothing, just starts in with the hands. Sign language, I've seen it on TV, and that's how I know the kid's deaf."
"What then?"
"Nothing. I dunno what he's saying, the kid gives up and goes back to get a seat."
Andy watched Carelli's hands on the wheel. "Do you remember any of the signs he made?"
Carelli's hands twitched, as if struggling to recall. Then he held up his right hand, his index and middle fingers extended in a V.
Andy frowned. V for victory, or the sign for peace. That made no sense. It was as if an unskilled interpreter were at work, garbling the language of the deaf.
But Carelli was flexing the V. "That ain't all of it. Something with the left hand too.... both hands… but he does it so fast that I can't get it. I tell him I dunno what he's saying, then I remember that he can't hear me so I just shake my head. So he does it again for me, but I got other passengers, I can't sit there all day trying to figure it. So he gets upset, or mad, I guess, and gives up." Carelli glanced at Andy, shrugging, nearly an apology.
Andy extended the fingers of his right hand in a V. All right, he's signing with Wayne, he makes the V and... what? There's more to it. Which signs begin that way, maybe use the left hand too? He couldn't think, he was struck dumb, his hand cramped and he couldn't find the sign. Come on.
"A crab," Carelli said. Resting his right forearm on the wheel, he made the V again, bent it, and pinched the fingers together, apart, together, apart. "Then he pinches his left hand with the crab."
Andy stared, as if Carelli's crab were about to nip him, and the word slipped into his mind. Ticket. The sign wasn't a crab pinching a hand; it was a conductor's punch validating a ticket.
But why would he ask for a ticket?
He looked at the fare box, at the small sign listing the prices for regular service, midday service, day pass. Oh yeah. "How much did he pay?"
The silence again. Then, "Seventy-five cents, the regular fare. The kid just puts the money in the box, snap-snap-snap, and I'm telling him the youth fare is fifty cents but the money's already in the box and I don't make change." His voice rose, defensive. "So what's a quarter? It won't even buy him a Coke."
"He was asking you for a day pass." Andy pointed at the fare box. "Seventy-five cents youth fare for a day pass."
Carelli flexed his fingers, making the crab again, then gripped the wheel. "No kidding? Well, why didn't he write it down?"
"Maybe he didn't have a pencil and paper."
Wayne had never ridden a public transit bus by himself. He wouldn't have known about a day pass unless Interrupt told him to get a day pass. Faced with impatient Carelli, the jiggling knee, he would have frozen. Andy touched his ears; he thought he knew. The wits left you at the first sign of intolerance. You withdrew.
Carelli pulled the bus over to a stop and swung open the door. The three old women funneled up the aisle and down the steps, chattering, and Carelli jiggled his knee.
A day pass. Wayne wanted to transfer to another bus. Get off at stop X, transfer to bus Y. How many transfers, how many buses? The permutations increased by at least an order of magnitude. "If he was going to use a pass to catch another bus, what's the most likely stop?"
Carelli turned to look full at Andy. His mustache lifted, he was grinning. "You got to be kidding."
"I'm not. Just help me out. What's the most likely transfer point for another bus?"
"Listen," Carelli said. "My route starts up in Menlo Park and I go all the way to San Jose. Then you can take another S.C. transit bus down to Gilroy. You start in Menlo Park"— he held up one hand— "and three and a half hours of bus time later you end up in Gilroy." He held up his other hand; his arms were stretched wide. "You get what I mean? My transit system, just Santa Clara County alone, is bigger than the state of Rhode Island."
"Let's go!" from the back of the bus.
Carelli turned in his seat, closed the door, and started the bus in one fluid movement. "Can't tell you more than that," he said into the rearview mirror.
Weary, as if he'd ridden the bus for the full three and a half hours, Andy said, "Just give it your best shot. A hunch, anything. Where's a likely transfer point?"
Carelli's hands raised briefly from the wheel, the universal sign for defeat. "Okay, we got a big one coming up, Monroe and Franklin in Santa Clara. Ten, twelve, maybe fourteen buses gonna branch out from there."
Monroe and Franklin. Fathers of Our Country. Why not? He got off at Monroe and Franklin. One more intersection, they were all looking alike.
All right, he's Wayne, he's instructed to catch bus Y but he didn't get his pass. He checks his pockets; maybe he doesn't have the exact change. Andy crossed the street, asked at the 7-Eleven. Wayne didn't get change there; maybe he already had it. So
he goes to the bus stop, sits on the bench. Waits for bus Y, one often, twelve, fourteen buses. What's he thinking, is he thinking that this is a great game?
Andy pulled out the transit map and spread it on his knees. Routes from Monroe and Franklin, follow the blue lines, the blue circles, maybe transfer to the orange lines and the orange circles. His eyes blurred.
A bus heaved up to the stop, and the door gaped open. Andy shook his head. The door slammed shut. He felt dizzy, short of breath. He checked his watch: eight thirty-five. Wayne had been gone seventeen hours.
The first rule was, never panic.
What now?
Be deaf and dumb, like your son. Forget the switches. Re-. member Candace Fuentes.
Forget the switches?
Why? Andy gripped the edge of the bench. It was a little late for that. He had already told Feferman about the Stanford number and the channel into the switches. Interrupt wouldn't know that; or would he? But then he had talked about the pattern of calls to Nell, about figuring the whole thing out, and if the infinity transmitter was on... It must have been on. Why else would Interrupt worry about Andy pursuing switch failures?
What else could it be?
Andy sat bolt upright. Bait and switch.
You kidnap my son and I think it's because I got it right, because I couldn't keep my mouth shut about the channel. So now I'll keep it shut, I won't even think about channels or switches because I'm feeling scared and guilty as hell.
But he couldn't help it. He was thinking about switches.
Somewhere in the switch software there had to be instructions that opened the channel and let Interrupt into the switch. That let him set a trigger to shut down the switch.
Interrupt had threatened to take out a lot of number fives. But how....
Stronger.
Andy's head buzzed. Remember Candace Fuentes, Interrupt had warned. Candace had told Andy to remember something too. Remember the story about Strowger.
The story about Strowger was the story of manual versus automatic switching. Amin's point in telling the story had been that an operator using a manual switch could be biased, and an automatic system was unbiased.
But there was another point to the story. An operator using a manual switch could place just one call at a time. An automatic switch could place many calls at a time.
So far, Interrupt had been like a manual operator, taking down one switch at a time. But he was threatening to take out a lot of number fives. Taking out a lot of switches one at a time would be cumbersome. He'd have to keep dialing, and waiting for Andy to trip the trigger. Or he'd have to reprogram the trigger. That was clumsy, and Interrupt was anything but clumsy.
Andy had explained as much to Feferman, had convinced Feferman that the channel was limited in scope. It was.
But what if Interrupt had a sexier way to get into the switches? What if he had built an automatic system, one that would take out as many number fives as he wanted, all at the same time?
Candace, Andy wanted to ask, was that what Strowger meant?
Then how did this automatic system work?
Start again. There had to be lines of code somewhere that let Interrupt into the switches. Somewhere in the millions of lines of programming that told the machine what to do. Andy had checked part of it, looking for a bug or a virus that could spread from the code of one infected switch to another.
I'd look again, Wayne would say.
Fine. Where, Spock?
Wayne, eyes trained on his father's hands, locking onto every sign, damned if he was going to miss anything.
All right. Andy held his son's image steady. Let's walk through it one more time. The software that runs the machine is written in a programming language that reads like English. We call that source code.
Problem is, the machine can't read English. So the source code is converted into object code. Object code is written in a language of numerals, just a string of ones and zeroes, something the machine can read.
I never had a chance to get to the object code, Spock, but Candace must have had a crack at it. Maybe she found something. But she never had a chance to tell Feferman. If Interrupt's hidden instructions are in the object code, the tiger team hasn't managed to find them yet, because they haven't managed to stop Interrupt from shutting down switches.
Maybe it's not there, maybe it's ...
Hang on, Spock, I'm trying to figure it.
Okay, the way I'd do it is to go deep. Don't hide it in the source code or the object code, hide it deeper.
Andy suddenly pictured Carelli, fumbling over the sign for "ticket." The bad interpreter garbling the language.
The interpreter.
Look, Spock, Andy thought, excited, there's a special program in the machine, a software tool, that can manipulate other programs. It's called the compiler. The compiler is an interpreter; remember, the machine can't read English so it needs an interpreter to translate the source code into the object code that it can read. Like you need an interpreter when someone's speaking English to translate it into sign for you.
Think about it. If an interpreter is translating for you, he can slip in some extra comment, something the speaker never said, and you'll believe that's what the speaker said and the speaker will never know his words have been altered.
Shit. His son, to the point.
Yeah, Andy thought, shit. He took in a deep breath.
Long time ago, Spock, there was a war between the Greeks and the Trojans. The Trojans believed in a god that looked like a horse, so the Greeks built a giant wooden horse and hid their soldiers inside. When the Trojans found the horse, they thought it was from their god and brought it inside the walls of their city. And that led to the fall of Troy.
A Trojan horse attack. What if we contaminate the compiler, hide a few lines of enemy code within the useful compiler program, lying in wait to be brought into the system?
It would work.
It would work like gangbusters, because every piece of software that was developed to drive the number five switches had to be run through the compiler.
So, as the compiler is translating source code into object code, the Trojan horse within the compiler is inserting its own instructions into the object code, more Trojan horses. Then the software is shipped to the switching centers and loaded into the processors. And the Trojan horse is within the walls of the city.
And the beauty of it is, Spock, it would be damned near impossible to find.
But isn't the tiger team checking the object code?
You bet. But, remember, object code is just a string of ones and zeroes and it's a real bitch to wade through.
So what you have to do is run a test. You've checked out the source code and certified it as clean. Now you suspect the object code. So you take the clean source code and run it through the compiler again to produce a "test" object code. You assume it's clean because it was translated from clean source code. Then compare the test object code to the suspect object code that's running on the machine. If the two object codes don't match, if there are lines of instructions in the suspect object code that don't exist in the test code, then you've found the Trojan horse.
But, you see, the two object codes will match. And when they match, you will assume that the real object code is clean. And you will be wrong. Because in recompiling, you have unknowingly spawned another Trojan horse. Every time you run clean source code through the compiler, the master Trojan horse goes to work and contaminates the object code.
So when your test code matches your object code, it is not because both are clean, but because both contain Trojan horses. You're fooled, like the citizens of Troy.
So can't you find the horse in the compiler?
Not likely, Spock. You see, the compiler itself is a program, with its own source code and object code. And the master Trojan horse would be buried in the compiler's object code. That code is so arcane that there are tools, debuggers and decompilers, made expressly to examine it. But the tools themselve
s must first be compiled, and as they run through the compiler the master Trojan horse hammers a few instructions into them. Mask me.
Andy shuddered. It was an elegant piece of work.
Candace had seen it and tried to tell Andy. Candace had liked to say, to the five-E team, to any male engineer she worked with, that women engineers brought a unique perspective to a problem because they saw the big picture while male engineers got hung up on the details.
She had said it, he recalled, to him and Nell and Amin at the cutover. He couldn't argue the point. He had gotten hung up on the details of the Stanford number and totally missed the big picture.
If he was right, there was a Trojan horse in every 5ESS in the country. Good Lord, if he was right, it went far beyond that. Interrupts automatic system was every bit as powerful as the invention of Mr. Strowger.
Candace had seen it, and talked about it, and gotten herself killed for her trouble.
Now he saw it. He couldn't forget the switches. What he'd just thought up was the equivalent of grabbing hold of a live wire.
Interrupt could have made him forget the switches, the way he had made Candace forget the switches. But he hadn't. Because he needed Andy, Andy the flesh-and-blood Trojan horse sent to gull Feferman. If Andy died, Feferman would rear up in surprise and start sniffing around, and Interrupt would be left without a decoy.
So he went after Wayne instead.
Where was Wayne? What in the hell was happening to his son? He had found a Trojan horse he wasn't even looking for but he couldn't find his son. Sitting at a bus stop, without a clue as to where to go next.
I'd look again.
Where?
I'd look again.
"Shit!" Andy slammed his hand down on the bench. Give me a break, just give me a break, I'm looking, I've looked, where do you want me to look? Dammit, boy, where in the hell are you?
A bus approached, brakes screeching like tortured metal, and Andy viciously waved it on. He watched the bus as it shifted back into traffic, until it was gone.
Spock was gone too. He'd lost the image of his son.
Okay, he told himself wearily, look again. If you can't find Wayne, look for Interrupt.