by Mark Henshaw
“A favor, I hope.” Jonathan held out the CD. “This is a custom software program developed by a Chinese aerospace company, but we have no follow-up on it. I need you to take a look at it.”
“Excellent. I love tearing foreign software apart.” Weaver extracted the disk by the edges and placed it carefully in the tray sticking out of a Macintosh tower under his desk. He pressed a button on a grubby keyboard and the tray slid shut. “Anything you can tell me about the asset who handed this over?”
“No,” Jonathan said.
“Ah. One of those,” Weaver said. “Does the company have a name?”
“Xian Aircraft Design and Research Institute,” Kyra said. “It might have also been filed under China Aviation Industry Corporation.”
“Ah, the Chinese. The source of all cyberevil in the world, or so the Pentagon thinks,” Weaver said. The disk finished loading and a single icon appeared on one of the monitors. Weaver called up a window displaying the file’s statistics. “Not a very big file, a Linux binary, almost a hundred megabytes.”
“The Chinese use Linux?” Jonathan asked.
“A variant called Red Flag Linux,” Kyra said.
“You know Linux?” Weaver asked, surprised.
“Computers are a hobby,” she admitted.
“A woman with some geek cred. Jonathan, you’ve been holding out on me,” Weaver said. Then he turned serious. “About, oh, fifteen years ago, the Chinese government got worried that Microsoft might have put backdoors into Windows that would give us or NSA covert access to their systems. The source code to Linux is free, so the Chinese decided that it would be safer to own their own operating system for critical functions. So they created their own variant called Red Flag Linux. The logo is a marching penguin carrying a Chinese flag. I’m not kidding.”
He double-clicked the icon. A Linux virtualization program launched, followed by the application. The program filled Weaver’s monitor with a blank window divided into quadrants, all black, and a small toolbar of icons across the top under a menu of Mandarin characters. “It looks like a pretty standard CAD program, I think,” Weaver observed. “Did you get any of their data files that we can load up?”
“No,” Jonathan admitted. “Or if we did, the NCS wouldn’t hand them over.”
“Always a possibility with that lot,” Weaver conceded. “I can build some test objects later to scope out the program functions. What I can tell you right now is that these”—Weaver pointed to a set of characters in the upper left quadrant—“are probably simple measurements fields: height, width, scale, and so on.” He clicked his mouse several times and rendered a cube with each quadrant displaying the object from a different vantage point in two dimensions. The upper left window showed the cube in three. “Yeah,” Weaver said. “Definitely units of measurement, all metric, probably—centimeters, meters, whatever. I’m not sure what this one is,” he said, pointing at a label of unreadable characters. “This measurement field doesn’t change when I change the object size. I’ll call APLAA and see if they’ll send me a translator to read the label. But if all else fails, I’ll just reverse-engineer the algorithm behind that field.”
“‘Just,’” Jonathan mused. “How long?”
“If APLAA will help, a few hours, maybe. But that’s unlikely,” Weaver said with certainty. “We are a bit of a drive from headquarters out here. They won’t be anxious to come this far out in the snow, even if the Agency does reimburse the mileage.”
“They’ll beg off,” Jonathan agreed. “So without their help?”
“I’ll have to tear the app apart. A week if I put in some long hours,” Weaver replied.
“Any way you can speed that up?” Kyra asked.
Weaver turned slightly in his chair and considered the woman. Kyra wasn’t sure she liked the look on his face. “I’ve been known to work a minor miracle with the proper incentive.”
“And what incentive are you looking for?” Kyra asked.
“You and me. Lunch in the Agency dining room,” Weaver said. He was perfectly serious.
“You’re bold,” Kyra answered. She kept her face neutral.
“Life gives nothing to the meek,” Weaver told her.
Jonathan raised an eyebrow and looked at the young woman. Kyra didn’t flinch, whether from case officer training or just personal experience with software engineers, Jonathan couldn’t tell. “What text editor do you use? Vi or Emacs?” she asked.
“Emacs,” Weaver said.
“Sorry, I’m a Vi girl. I don’t go out with Emacs guys.” Jonathan suspected that Kyra would have picked whichever option Weaver hadn’t.
“I’ll convert.”
“I can’t respect a coder who’s willing to abandon his preferred text editor for a woman he just met. That’s just bad form. Shows desperation.” Kyra paused for just the right effect. “I’m embarrassed for you now.”
“Hey, I’m not a Linux fanboy with bad hygiene,” Weaver said. “I know how to show a girl a good time.”
Kyra cocked her head and smiled, and Jonathan sensed Farm training was coming into play. Weaver was out of his league. Dating any woman was an exercise in codebreaking for men under normal circumstances. Chasing women trained in covert operations and espionage recruitment elevated the game to a new level, southern charm notwithstanding. “I’ll make you a deal,” she finally said. “You reverse-engineer that app and figure out what that number means for us in three days. Reconstruct it in C plus plus. If your interpretation of the algorithm is sufficiently elegant, I’ll let you take me to the ADR.”
“Objective-C would be prettier.”
“And cheating if you use the Cocoa framework. You do that and you only get to take me to Starbucks. I like a man who can write his own root class from scratch,” Kyra chided. Jonathan was completely lost in the jungle of jargon that the two were tossing around.
“Three days, eh?” Weaver scratched his stubble. “You’re on. Jon, you’ll have to excuse me. I have a deadline to meet.”
“You realize that I didn’t understand a word of that?” Jonathan asked the pair.
“Suffice it to say that your partner there will be enjoying a rack of lamb with me in the ADR a week from today.”
“You’re assuming that your code will be elegant enough to meet my standards,” Kyra said. Jonathan couldn’t tell whether she was teasing. “That’s a subjective measure and totally out of your control.”
“Let’s just say that I have a high opinion of my coding skills,” Weaver told her, smiling. “And I appreciate the challenge, no matter how this turns out.”
“I doubt your team chief will appreciate us monopolizing your time,” Jonathan said.
“Did you tell anyone here that you were coming?” Weaver asked.
“No,” Jonathan said.
“The word will get out. It always does. If anyone asks, I’m working with you in the interest of damage control.”
“Whatever makes you happy,” Jonathan said. “Good to see you, Garr.”
“Always my pleasure. I’ll call when I have something.”
“Good luck,” Kyra said with a wry smile.
“Luck is for people who lack skill,” Garr replied. He turned back to the monitor, and Kyra watched the cybersecurity analyst vanish in a moment into his own little world.
CIA OPERATIONS CENTER
“In a hurry?” Drescher asked. Kyra’s manner was impatient.
“I’m on my way to the airport,” she said. “Pictures of a hundred dead bodies?”
“Much better,” Drescher said. He pressed a button and the Ops Center monitors blanked out the news channels and replaced them with single feed. “A few hundred Chinese tanks rolling for the coast. Pretty shot too. Low-orbit, great lighting, the overhead angle is almost straight down. Satellite imagery doesn’t get prettier than this.”
“Where are we looking?” Kyra asked.
“Nanjing, Guiyang Army Base,” Drescher replied. He held out a map of the Chinese coast with symbols marked on th
e page. “Eleven infantry divisions, eight special forces regiments, two armored divisions, one artillery division, and a pair of reserve units,” Drescher read off a paper prepared by his APLAA analyst. “Total manpower around three hundred thousand. No heat blooms in any navy ships along the coast, so all those tanks are just for show until they get their air bridge set up. That’s where the real action is.”
He handed over a set of photographs. “I don’t think they’re lining these up just to send us a message. Too many working bodies around the planes.” Some of the dark specks marking the ground crews in the pictures were standing by spaghetti hoses of jet fuel lines snaking up to the planes. “There’s activity at Shantou, Fuzhou, Zhongshan, Taihe, and Zeguo. But that’s not what’s interesting.” Drescher pushed another set of photos into her hands, then turned and put his finger down on a map of China taped to the wall behind his desk. “All of that other activity is along the southeastern coast, but those were taken over Chengdu.”
Kyra saw where his finger had landed on the map and her eyebrows went up. “You’re on your way to India that far west.”
“That’s why it’s interesting. Thought your partner might like to know.”
“Has Taiwan responded?” Kyra asked.
“Nothing significant. Increased air patrols, but they’re all staying inside Taiwanese airspace.” Drescher rested a hand on the photo stack. “No heat blooms in Taiwanese Navy ships in port. Tian has got Liang shell-shocked. The PLA storms Kinmen, Taiwan tries to start moving, and the PLA knocks out one of their best ships while it’s still in port. Liang’s probably too scared to make a move. He hasn’t got a skirt to hide behind until Lincoln and Washington show up.”
“Thanks,” Kyra said.
“Talk to you on the other side,” Drescher said with a slight bow.
UNITED FLIGHT 897
“At least we got business class. Economy would have killed me,” Kyra said. Agency regulations allowed travelers to upgrade on flights over eight hours, which Kyra had hoped would give her a fighting chance to sleep.
“It won’t help,” Jonathan said. The woman sounded very satisfied with herself at getting approval for the trip, and had been from the moment she saw his surprise when they received the notice. He was still wondering why Cooke had approved the trip and quietly hoped that the chief of station at the other end wouldn’t just out them to the Chinese on arrival. He imagined that Carl Mitchell would be less than enthusiastic about taking responsibility for a pair of analysts, given current events. “China is thirteen hours ahead of us. Your body clock will be jet-lagged no matter how much sleep you get. You’d do better to stay awake for a while.”
“Pessimist,” she accused him.
“Realist. There is a difference,” Jonathan said. His eyes didn’t shift from the copy of the Economist on his tray table. “Optimists make poor analysts,” he said. “They aren’t critical enough.”
“That’s just morose.”
“Reading the PDB every day will do that to you,” Jonathan said.
“The president does that, and he still smiles.”
“A politician’s job depends on smiling. Mine doesn’t. It does depend on my being awake, even after fourteen hours on a plane. Yours too. So lay off the wine,” he advised her. “You don’t want to fight jet lag and a hangover at the same time.” The plane had only been in the air for half an hour and Kyra was already working on her second glass. Dinner was still a few hours off, so she was drinking on an empty stomach, and he knew that case officers favored bars and pubs as places to meet assets for reasons that had nothing to do with security. CIA’s clandestine service was still a boys’ club that ran on a machismo that made an inability, or unwillingness, to imbibe alcohol a fatal weakness among one’s peers. Mormons and Muslims got a pass, but the rest were expected to follow the unwritten rule, and Burke had no doubts that Stryker could match the men drink for drink.
“Why? The coffee is free,” she deadpanned.
“So is the turbulence.”
“Speaking from experience?” she asked.
“I don’t drink,” Jonathan said, his voice suddenly cold.
Alcoholics in the family tree? They weren’t nearly close enough for her to ask that question, and Kyra knew when to turn a conversation. “Sounds like you’ve traveled your share for work,” Kyra said. She didn’t refer to the Agency by name. Even on a Boeing 777, business class was cramped quarters, and they had no idea who was a foreign national and who wasn’t. The case officer had already picked out several of their fellow travelers as Chinese nationals and heard at least four other languages being spoken that she couldn’t identify at the moment. One sounded vaguely Japanese, though Kyra couldn’t really distinguish some of the Asian tongues from each other. Some of the other languages closer to his side of the aisle sounded like they came from Eastern Europe. She didn’t know what anyone around her was talking about, but the conversations were animated enough that she assumed they were discussing the Kinmen invasion. Every passenger on the plane was flying into a country that was at war, and she couldn’t imagine what else they might talk about under the circumstances, even if Jonathan seemed determined to avoid the subject.
“I’ve flown domestic plenty. London a few times, Rome once. I hiked the Okinawa battlefields. And I did a tour in the sandbox.”
The sandbox, she thought. Iraq. “You see any action?”
Jonathan shrugged. “I was at Camp Doha before the war. Saddam sent some Scuds over during the buildup, but nothing close. Then I was in the Green Zone for a year. Zawahiri’s boys sent some mortar rounds our way. There were some car bombs. Nothing too close.” He shifted in the seat and stretched out his legs to work out the kinks. “So you going to tell me what happened down in Venezuela?”
Her head twisted in surprise and he saw pain flash across her eyes. “Cooke told you about that?”
“Only after I made a few deductions about why she brought you to the Red Cell.”
Kyra frowned and looked around the darkened cabin. Most of the passengers were settling in to sleep or starting to watch movies. She reached down and rolled up the long shirt sleeve on her left arm. She still had a padded gauze bandage taped across her upper arm. She pulled it back and turned so the senior analyst could see the back of her arm but her body blocked the view of wandering eyes across the aisle.
Jonathan looked down at the wound. The girl had a lateral laceration running across her triceps. No question, she had lost some meat and the scar was going to be ugly. He tilted his head and studied the wound. “Seven-point-six-two-millimeter round?”
“Lucky guess,” she said. Kyra replaced the bandage and pulled her sleeve down.
“It’s a common caliber used by South American militaries,” he said. “They were close.”
“Yeah, they were,” Kyra said. “You ever make it to Beijing?” she asked. Please let it go.
He paused, as though considering whether to grant her unspoken request. “No, unfortunately,” he said finally. “It would be very useful if one of us had spent time on the ground there. I’m told it can be a difficult city to navigate.”
“Not a problem,” Kyra said.
“Optimist.”
“If we can’t find our way around a foreign city without a map, then we’re working for the wrong agency,” she said. It surprised her to finally see Jonathan smile.
CIA INFORMATION OPERATIONS CENTER
Weaver put the soda can a safe distance from the keyboard—he’d lost more than one electronic device to carbonated drinks—and turned his attention back to the monitor. It was dead quiet inside the vault except for the hum of the server fans mounted in the rack under his desk. He had the vault to himself and he preferred it that way. It was difficult enough to translate hexadecimal code into assembly language without the distractions of other analysts talking in the hallway.
Reverse-engineering a compiled computer program was the most difficult craft a programmer could master. Writing programs in the first place, even c
omplex ones, was child’s play by comparison. The programmer could use any one of dozens of languages to create one. Any of those languages made life easy for the coders by letting them use English words—called source code—instead of forcing them to use pure numbers, which was all that computers really understood. Those English commands were converted into those numbers by a compiler, a one-way translator between the two.
Reverse engineering was the craft of turning those raw numbers back into English commands with no source code to act as a guide. It was like trying to translate demotic Egyptian without benefit of a Rosetta Stone. Humans thought in the base-ten counting system, where the numbers ran 0-1-2-3-4-5-6-7-8-9 before adding a second digit to make 10. Computers thought in eight-bit binary—base two—where the sequence was 00000000-00000001-00000011, on to infinity. But it was easy to misread the streams of 0s and 1s while suffering a boredom that no Coke or coffee could cure. So Weaver used a decompiler to convert the binary numbers into hexadecimal—base sixteen. Weaver could at least think in hexadecimal, which counted 0-1-2-3-4-5-6-7-8-9-a-b-c-d-e-f. But from there, he had to look at the numbers and try to turn them back into source code that performed the same functions.
The private sector paid good money to the few who could reverse-engineer programs. It was a useful skill to any company looking to steal a competitor’s software trade secrets, and Weaver had just the right amount of insanity for the craft. His skills should have brought more than double his government salary, and Microsoft and Google had both made generous offers, but Weaver’s patriotic streak kept him tethered to government service. He supposed that he could have made a healthy living performing corporate espionage, but he could perform the same acts here without worrying about the law. If Weaver hadn’t kept himself pumped full of caffeine—the true blood of programmers everywhere—he would have slept the sleep of the righteous.
The program that the Red Cell had brought him was straightforward. The Chinese coders who’d written it had been competent but uninspired. Programming was a craft where efficiency created a natural elegance, but the best algorithms ceased to be lines of code and became something beautiful, all pure in their efficiency and working together in a modular harmony. The lines of code that Weaver spent the night reconstructing weren’t even close to that, which was both a blessing and a curse. It made them almost predictable to reverse into assembly code. It also made them boring, which was not helpful, given that it was well past midnight.