Chapter
19
< The mob has panicked. A human tide sweeps Danielle back and forth, lifting her bodily off her feet for fifteen or twenty seconds at a time. Arms jab painfully into her and are replaced by new ones. Fingers clutch desperately at her for purchase. She feels herself step on someone who has fallen, stumbles and almost joins them, but the press of the mob saves her, delays her plunge long enough that she can grab at a shoulder and pull herself upright. Then the tear gas hits, she doesn't know from where, the police must have fired canisters at them. It feels like acid has been poured into her eyes. Sobbing, she rubs at her eyes with one hand, she knows it doesn't help and may harm but she can't stop herself, and tries to use the other to hold her space in the solid, seething crowd of blinded, terrified humanity. Somebody grabs at her head, but their fingers slide out of her hair. A violent current of flesh carries her along, propels her shoulder into someone's face hard enough that she feels and hears their nose break. Then something hard, an elbow, hits her in the back of her head. Dazed, she drops to her knees, and a hand smacks her in the face hard enough to bruise, she flails about, tries to pull herself up but pulls someone else down instead. She manages to get to her feet again, back into the press of bodies, hellish but better than being trampled. All she can hear are screams. Her eyes feel aflame, and she is coughing and sobbing, she doesn't seem to be able to breathe enough, there isn't enough oxygen in the air, and there are hands and bodies all around her, crushing her, she scrabbles furiously but can't break free, all she can think about is her need to breathe, but she can't, she can't move at all, then the crowd shifts and she gets half a breath, the air here is mostly tear gas, it's like breathing white-hot poison but that's still better than breathing nothing at all, but the crowd has surged back, she is being crushed again, caught between two opposing currents.
With a violent, spasmodic effort, Danielle somehow dislodges herself, steps into a somehow uninhabited niche amid the crowd, and takes a mercifully deep breath of almost clean air. And she is swept up in the crowd again. There is no use fighting. She will go where it takes her. She holds her arms over her head to protect it, learning from the previous blows. Then she stumbles and almost falls, because the crowd is no longer propping her up, she is once again responsible for standing unaided, and the people around her are dwindling away, and the air is clear and fresh. Somehow she has broken free of the riot, it has spat her and those around her out and surged back to where it came.
Danielle stumbles away from the screams and clouds of gas, weeping so heavily she cannot see, and bumps into something hard. It takes her a moment to identify it as the same metal statue Angus and Laurent lounged against earlier, what feels like hours ago, when the protest was still a peaceful assembly. She leans back against it, lets herself slide to a seated position on the ground, and weeps until the last of the fiery tear gas has been washed from her eyes, until her nausea and dizziness subside enough that she can stand without wavering.
The mixed smells of tear gas and burning gasoline are still so pungent that her eyes water and her nose throbs, but at least she can see. If it weren't for the statue she would have no idea where she is; the gas and smoke have merged into a thick fog that limits visibility to maybe fifty feet in all directions. The ambient human noise reminds her of a football game or hockey match, the sound of a crowd at some violent and highly emotional sport when a disputed or dirty play has gone uncorrected. A few people mill about her in little clusters, protestors all, frightened and angry. Almost everyone has pulled their shirts up over their faces, and Danielle follows their example. She is surprised by how well she can see through the thick cotton.
Her senses are so heightened by adrenaline that the tugging sensation in her pocket makes Danielle start as if someone just kicked her. But it is only her cell phone. Her vision is still too blurred to read the number. She answers.
"Danielle," Keiran says. "Where are you? Are you okay?"
"I guess," she manages. Her gas-choked voice sounds like someone else's. "I'm on the Esplanade."
"Where's Estelle?"
"I have no idea."
"Listen," he says, "we have a problem."
"What?"
"This isn't a secure connection. Do you understand?"
It takes her a moment. "Yes."
"Our friends need help. They're trapped in the place they went. They can't get out. But they need to get out very soon. Understand?"
For a moment she thinks he means Estelle. Then she goes cold with understanding. Angus and Laurent are trapped in the Kishkinda offices. "Yes."
"I need you to go to the door they're stuck behind."
"Me? The – the main door? And do what?"
"I'll give you the key. To open the door."
"Oh," Danielle says, remembering that Kishkinda's door is opened by an external keypad. "OK. I can do that. What's the key?"
"I'll have to call you back. I don't know yet."
"You
don't know yet?
"
"Just go," Keiran says. "Call me back when you get there. Hurry. Our friends can't stay there much longer, you understand?"
* * *
Keiran types with furious speed. Angus and Laurent don't have much time. There is still a faint hope that the police turn the power back off again, but they haven't yet, and that means it's not likely. Instead the Paris bomb squad is doing a floor-by-floor sweep of the tower. And they have dogs. Angus and Laurent can probably smash their way out, and Keiran supposes that is better than being arrested right now, but once Kishkinda realizes their office was broken into, the game is all but up. Their security will quadruple, the police will start looking for clues, and despite all precautions there's a good chance they'll find something: a hair, a fingerprint, a Handicam shot of Angus and Laurent entering the building in uniform. In this day of DNA analysis and ubiquitous cameras, the only way to be certain the police won't find them is to ensure nobody knows a crime has been committed. Always be invisible. But if Keiran can't get the security door's override keycode in the next ten minutes, their invisibility is dead.
He still has a chance. He already hacked into the corporate network of Krull Security, the company that built Kishkinda's security door, when he determined that the door would open when the power went out. Now all he needs is the factory override key used by the manufacturer if their clients forget their codes, or if the authorities need to execute a stealth search warrant. It will be somewhere in Krull's corporate network. There is still a chance.
His beachhead on the Krull network is, as is so often the case, a machine running Shazam. This gives him the permissions of an ordinary Krull employee, but Keiran needs more, he needs root – the access level that makes him God, permits him all things, gives him the power to access anything on Krull's network. Shazam can't give him that. There is no time for social engineering. He has to break in the hard way; with an exploit.
There are many ways to hack into a computer. You can social-engineer a user into giving you their password, often by simply calling them, claiming you're the help desk, and asking. You can take advantage of users who fail to change factory default passwords. You can steal passwords by installing a hidden camera, or a key logger; by tricking users into giving it away via a phishing or man-in-the-middle attack; or simply by watching them type it. You can dupe users into downloading a program that gives them access, an email attachment that claims to be a nude picture of Britney Spears but is actually a virus, or a program like Shazam that is useful but also a Trojan horse. Or you can do it the hard way, the most effective way, without the user being involved at all; by finding and using tiny little flaws in one of the basic programs running on a machine. An exploit attack.
Keiran connects to his beachhead computer, calls for a view of its network. Far away, in San Jose, California, disk drives spin in the Krull office, network information is assembled, and this information is parcelled out in thousands of packets, each of which is sent on a journey across the Internet, directed by a chain of thirty routers scattered across North America and Europe, before they reach Keiran's laptop and are reassembled into a diagram on his screen. It all takes less than a second. Keiran looks at the resulting network map and sees that its hub, Krull's main data server, is a machine called LOCKBOX. He uploads a basic hacker toolkit to his beachhead and initiates a port scan of LOCKBOX.
A port scan is basically an interrogation: LOCKBOX is asked "Do you run this program? How about this one? Or this one? Or this one? Or –" Ten seconds and sixty-five thousand such questions later, a list of the programs that LOCKBOX admits to running appears on Keiran's laptop. He knows exploits for most of these programs – but all have been patched. Part of the ongoing war between hackers and software companies; the former find exploits, and the latter release fixes, or "patches", as soon as they are aware of the need. But keeping security patches up-to-date is a time-consuming and complex job, and companies are often very slack about it. Keiran hopes that this is true for Krull as well. He opens up his box of exploits, selects those that might penetrate Krull's software, and begins to try them. It is like finding a door with a dozen keyholes, any of which will open the door, and having keys for all of them, but not knowing if any of them will work.
The seventh lock, a buffer overflow in Microsoft NetMeeting, has not been patched by Krull since its key, the exploit, was discovered three months ago. The door opens. Keiran is root on LOCKBOX. He glances at his watch. Ten minutes have already passed since he sent Danielle into the Tour EDF. And he still has to figure out Krull's database structure and find out where the door-keycode information is held.
The good news is that this isn't hard. The database is well designed, structured in much the same way Keiran would have done it himself. It only takes him a minute to find the factory override code for the door behind which Angus and Laurent are trapped. The bad news is that the 10-digit keycode has been encrypted into 256 characters of gibberish. And he has only a few more minutes before the riot dissipates and the bomb squad reaches Kishkinda.
His headset rings. Keiran switches windows and checks the caller ID. Danielle. He answers.
"I'm there," she says. She sounds exhausted. "Sorry I'm late. The doors were locked. I had to get a black bloc guy to smash the glass. Then the elevators were all locked down, I had to take the stairs."
Keiran takes a moment to check that he is still filtering the building's security systems. Yes: as far as anyone looking at its security cameras knows, the door remains unbroken, nothing has moved in front of the cameras since the building emptied, and there is no one inside but the bomb squad. But anyone looking at these pictures – and Keiran strongly suspects this list includes the police – will soon start to wonder why the cameras in the lobby don't show the riot outside. Another deadline.
"Just a moment," he says.
Keiran can tell by the 256-character size of the encrypted gibberish that the keycode has gone through a relatively weak encoding process known as a "hash function." A single modern computer, if it was given a few years to work on nothing else, would be able to break it by the brute-force technique of running every possible 10-digit number through SQL Server's hash function. Keiran has a few minutes, not a few years. But he knows the hash function SQL Server uses – and he has several million computers at his disposal. Shazam. His botnet.
Keiran hesitates a moment. He has rarely used Shazam's full capabilites before. Every time he does, there is a chance, small but nonzero, that someone will notice the extra network traffic and begin to understand Shazam's true nature. But right now that risk is tiny compared to the alternative.
Another call. Angus. "Mate," the Scotsman says in a fierce whisper, "we can hear them on the stairs right below us, they've got fucking
dogs
, we have to get out now. We're going to break the door with a fire axe."
"No!" Keiran says, alarmed. "No. Trust me. I'll have you out in forty seconds." His fingers are flying over the keyboard even as he speaks. He has written software to use Shazam for this kind of parallel computation before, against a future need. Today's future need.
Keiran composes his command and hits ENTER. Instructions fly out from Keiran's laptop to the global Shazam network. His command ripples through the Internet like a tidal wave. Around the world, on seven million different computers, the Shazam program takes a break from its usual pursuit of uploading and downloading stolen music and video files, and devotes itself singlemindedly to cracking the keycode. In homes and businesses and universities and government offices, computers suddenly devote all of their processing power to running several thousand 10-digit codes through the hash function they just received, and reporting whether the result matches that found in Krull's database. Between them they try all ten billion possible combinations in thirty seconds.
"Danielle," Keiran says, after the single successful computer reports back to him. "Listen carefully. You get one chance to get this right."
* * *
Danielle enters the code into the keypad, her finger trembling a little. She has the presence of mind to cover her finger with a scrap of paper from her pocket, thinking of fingerprints. She enters the tenth digit. The lock releases with an audible click, the door opens, and Angus and Laurent are there, dressed in police uniforms. Angus's face is drawn with tension. Laurent seems more relaxed, but when he looks at Danielle, his eyes widen.
"Are you all right?" he asks.
She shrugs. She must look awful, covered in soot, with devil-red eyes and matted hair, her face bruised and bloody and smeared with tears, limping and exhausted in torn clothes. "I'll live."
"Chat later. We have to go," Angus says, his voice humming with near-panic. He pushes past Danielle towards the stairs. Laurent stops long enough to close the door behind him, takes Danielle's hand, and leads her after the Scotsman. He has to let go after the first couple of floors, they can't descend rapidly while holding hands, but she appreciates the gesture. Danielle almost falls, once. Laurent, ahead of her, hears her stumble, turns quick as lightning, ready to catch her. She clutches at the banister and manages to right herself. They exchange a quick grin and continue to run downstairs as fast as they can.