Obfuscation
Air Force Captain Jones walked up five flights of steps to the Technologist Recruiting Office instead of using the elevator. Fifth floor was her cut-off. She wanted to stay in shape, but there were limits. She found the Office and walked in the open door.
"There's an SSL error on the Fort Bliss site," said the warrant officer at the desk to her right in greeting. Nametag: Falman. Generic white male template. Prematurely white hair.
"Yeah, the base sysadmin's been having trouble with the security certificate," she answered. "Kinda embarrassing on a military site. But it's not a high priority."
Jones looked at Falman's area. It was a typical in-group sysadmin setup. She was a bit impressed that besides the linux machine and the unavoidable Windows box, there was a Mac Airbook as well. He must have to provision someone with a Mac.
"So you need me to read some perl with Russian or something like that?" she asked.
"Yes. Our contact uses nginx but he doesn't speak English. We brought in another Russian speaker who's supposed to be able to read code, but he threw up his hands when he saw it was a module written in perl."
"Oh, come on," she said, with a disgusted look. "Perl's not that bad."
"It does have a reputation for obfuscation," said Falman with a slight smile.
She shrugged. "Same thing that makes it easy to read can make it hard if someone doesn't know what they're doing."
"Or wants to make it hard on purpose," said a second lieutenant, coming up to the two of them. Nametag: Breda. Average height, white male. Slightly overweight. Red hair. Didn't exactly fit a template. She might be able to remember him.
"Well, yeah," answered Jones. "Sure. If you wanted to."
"So take a look at this," said Falman, bringing up some perl in his syntax highlighter. "How would you make this harder to read?"
She took a look over his shoulder. "Who's going to be trying to read it?" she asked.
"Doesn't matter," said Breda.
"Well yeah it does. Maybe I wasn't specific enough. Speakers of what languages will be trying to read it? English? Russian? Something else?"
Someone else had joined them, but she didn't noticed him until he spoke up. "You don't have a need to know that," he said.
She jumped at the unexpected voice and glanced at him. Nametag: Havoc. Generic blond white male template. Except he did something funny with his hair in the front.
"Oh, sorry," he said. "I thought you saw me."
She shrugged again. "I startle easy. No peripheral vision. And it does make a difference - the language I mean - but I can still obfuscate without knowing it. I can just do a better job if I know. But I thought you wanted me to read some perl with Russian annotations, or some Russian with perl or something like that."
Now a lieutenant colonel joined the group. "Why does the language matter?" he asked casually, as if it were just a matter of curiosity. Nametag: Mustang. Generic Asian male template.
"The reason perl's so easy to obfuscate is because you can make the variables say almost anything. Add that to the modern object oriented stuff and you can have an object called "car" that really represents an airplane and a method called "start" that stops a process instead of starting it. So the code might read "start car" but what it actually does is "crash airplane." The thing is, it's almost impossible NOT to read that code without thinking of a car, even though you know it's just an arbitrary variable name. If it's in a language you know, that is."
"Do you have to know the language to be able to obfuscate in it?" asked Mustang.
"Well, duh," said Havoc, behind him.
She turned to the second lieutenant. "Not necessarily," she said. "I mean, I do have to know the basic grammatical structure, some vocabulary and get a few common phrases, but that doesn't take long. Someone who halfway knows the language would be able to tell I didn't really know it, but that would be enough to use the language as a distraction."
"What does 'wouldn't take long' mean?" asked Breda.
"I dunno. Romance, Germanic and Slavic languages, probably half a day maybe. I already know one of each of those. Any indo-european language, no more than a day, probably. Outside indo-european, could take awhile - anywhere from a week to a month. I have a head start on Japanese, which is a completely different grammatical structure, but it really depends."
"You learn languages that fast?" asked Mustang. He seemed more interested than impressed.
"I didn't say I'd learn the language in that amount of time. Just get the basic structure and some vocab to do what you need. But yeah, I pick up languages, natural or artificial, pretty fast. Programming languages are just artificial languages."
"You know Russian, right?" asked Breda. "What would you do with that - " he pointed toward Falman's screen - "if you wanted to make it hard for a Russian reader to understand?"
She took a look, then asked, "May I?"
Falman stood up and gave her his chair.
"Oh, I'd like to work with a copy. I assume you don't want me looking around your drive ..."
"It's okay," said Falman. "That is a copy. And you can't do anything anyway. It's sandboxed."
"All right. Assuming no cyrillic - " she muttered, half to herself and half in explanation. She still cut and pasted the code down lower, just so she could go back to the original if she wanted to.
It didn't take long - maybe a minute.
"Not much, but it was just one block," she said.
Breda whistled. Falman smiled. Mustang frowned and looked over at Falman. "Does it really still do the same thing?" he asked.
"I'm no perl expert, sir," said Falman, "but I also don't read Russian. Looks basically the same to me."
"And no harder to read either," she said. "Right? That's why the language matters."
"Thank you, captain," said Mustang. "We may be in contact."
"What about the perl and the Russian, sir?" she asked, but Mustang had already gone over to a desk by the window, where another officer, Havoc and Breda were already congregating.
"Actually, Lieutenant Breda managed to take care of that before you got here," said Falman. "He knows a little Russian and I know a little perl."
"Then what - ?"
"Hey, it's almost lunch time," said the sergeant - no, were those tech sergeant stripes? - who'd stayed over at a table strewn with hardware the whole time. "You want to go over to the cafeteria, Captain Jones?"
His short black hair was a bit longer than it should be and stuck straight up and he had big black geek glasses. Short, a little shorter than she was, and white. At least he didn't fit a template. She'd probably recognize him if she saw him again. "Sure," she said. "I saw that firefly box you were building."
He smiled at her. "Shiny," he said, as they both walked out the door.
Falman closed the door and joined the others over at Hawkeye's desk.
"What do you think?" Mustang asked.
Falman nodded.
"It's unanimous, then," the lieutenant colonel said. "Warrant Officer, check her out. If she passes, bring her over."
Author's notes:
nginx is a very high-performance open source web server written in the C programming language. It was written and is maintained by a Russian.
Fuery and Jones are referencing the Firefly sci-fi series. "Shiny" in that series means "cool."
