Выбрать главу

He looked far out to sea and it was as if his vision had suddenly turned telescopic.

A huge swell moved toward the shore.

Tsunami!

Jay had gone on a holiday a few years back and had seen a sign on the shoreline: TIDAL WAVE ESCAPE ROUTE. The words had cast a shadow over his short foray on the beach — that and the fact that an old man had looked at his pale skin and asked, “Where you from, boy, Alaska?”

When he returned to the hotel, he hit the net and did a little studying on tsunamis. Shortly after that he moved to a hotel farther inland. The power of the water in a tidal wave could wipe out entire villages in seconds, and you never knew when one was just going to show up and swamp everything before the warning could do you any good.

And there was Saji and his baby right in front of one.

No way. VR or dream, or whatever. He was Jay Gridley, he was not going to let this happen!

Jay ran, using every trick he could think of to alter the scene: imagery, focus points, meditation, and VR conjurations.

Nothing worked. The wave kept coming.

He ran faster, figuring that at least his body — or what passed for it, wherever he was — was operating with a set of consistent physics.

But he wasn’t going to make it. He got closer, though, close enough to see little fingers grasping his wife’s shoulder as she started to breast-feed.

She doesn’t see the danger.

The sound of the water coming had grown, and there was a feel of imminent threat, death coming, everybody out!

“Saji!” he yelled, as loud as he could, “Get out of here! Run!

He kept yelling as he ran, getting closer and closer. He thought about what he would do if and when he reached her. Run with her toward high ground, or at least try to find some kind of shelter—

He glanced to his left and saw it. The swell had jumped up in size, the seabed forcing higher as it approached. He had seen some surfers once on TV, riding on sixty-foot waves, monsters that dwarfed them, making them look like toys.

This wave was bigger.

A lot bigger.

He screamed Saji’s name again, and this time she heard him. She looked over, her eyes widening in surprise, and a smile beamed across her face.

No, no! Run! Run!

He gestured frantically toward the sea, and finally, chillingly, she looked.

Her face went pale, her eyes wide, and her mouth opened to scream. She turned away from the oncoming wave, tried to shelter the baby, but it was useless—

They were swept away—

Jay braced himself as best he could as the wave hit. He expected to be crushed, but some freak variation of the shoreline must have saved him: The water thundered down, tossed him into the air, then carried him away, but somehow, he came to the surface, alive, uninjured.

Except for the emotional horror of it all. His wife and new baby hit by a wall of water! And him unable to do a thing about it!

It wasn’t real. He clung to that small solace. It couldn’t be real — but… what was it? It certainly wasn’t VR as he knew it.

His face felt as if it had been set in stone. This was not good. He was supposed to be in control.

He floated in the water, the taste of salt harsh in his mouth.

What was happening?

11

University Park, Maryland

Thorn didn’t want to go home. The doctors at the hospital where Jay Gridley was lying in a coma had told him there wasn’t much point in hanging around. Gridley was in no danger of dying — at least they didn’t think so — and if he awoke, they would call.

Jay was alive, but the doctors didn’t know when — or if — he would come back. The man who had shot him was still at large. Witnesses had described the man and his car, but the police had not found him.

By the time he left it was already past two A.M., and there didn’t seem to be much point in going home. He would barely have time to get to sleep before he’d have to get up and head back to Net Force HQ. Besides, he was too wired to sleep.

Hospitals did that to him, ever since his grandfather had passed away. At the end, the old man had checked himself out of the hospital and gone home to die in his own bed surrounded by his family, but he had spent a week full of tubes and needles before he’d had enough, and Thorn had spent much of that week there with him. The smells, the look, they came back every time he had to go to one of those places.

Halls of the dead and dying, his grandfather had called hospitals, and if he was going to die anyway, what point was there in spending large amounts of somebody’s money to do it?

No, Thorn didn’t want to go home to an empty house, but, outside of his Net Force office, he didn’t really have anywhere else to go. Heading to his house, he opened a beer and went on-line, hoping for a distraction.

He found one.

His mailbox was stuffed with more than three hundred e-mails.

He opened the first one. It, and most of the others, were from his troll.

Wonderful.

Rapier, the troll who haunted him, had apparently generated a repeating message that was, if unchecked, eventually going to fill Thorn’s hard drive with his driveclass="underline"

“Hahahhaa, Thorn! Touché!”

That was all it said, repeated fifty times per message, and continuing to come in one e-mail at a time every few minutes. If Rapier had tried to dump more than two megabytes at once, Thorn’s filters would have stopped it, but dribbling in as short e-mail with different return addresses — all false ones, Thorn was sure — the spam- and size-filters let them pass.

Thorn took a sip of his beer and glared at the screen. Given how the rest of his day had been, he did not need this.

He deleted the e-mails, reset his filters to stop anything from the e-mail server Rapier was using, and decided that maybe hunting this guy down and getting him tossed off his server was the least he could do.

The basic process was fairly simple to start. First, you did the obvious check — the sender’s e-mail return address. Thorn had noted several of the ones Rapier had used, all from the same IP.

Thorn blipped a quick message cc: ed to the addresses he’d noted. After a few seconds he got a bounce from the server, in this case, boohoo.com, that his messages were undeliverable.

Big surprise there.

He pulled up the troll’s most recent posting to the newsgroup and checked the header, next to the HELO sig. There was a ten-digit number, broken by dots, that identified the sending machine. Of course, that couldn’t be relied upon, since there were ways it could also be faked, but it was a place to start. Next to that was the receipt date that the ID’d server showed, followed by the routing info as the posting was shuttled into UseNet.

Thorn logged into the Internet registries, starting with the American Registry — ARIN. From his language and spelling, Thorn figured that Rapier was an American.

Once on the ARIN site, he ran a WHOIS search on the IP address and sure enough, the address was in the ARIN database.

The WHOIS came up, and at least it was a legitimate addy — the inetnum, netnam, and description showed it to be a small server located outside of Chicago, BearBull.com. What he was looking for were the contacts for the IP, and there they were, two of them.

Using his official Net Force address, Thorn fired off an e-mail to both:

Dear Sirs, I am seeking your assistance in locating a client of yours who has apparently violated federal law regarding use of the Internet. I would appreciate any assistance you might render in this matter.

He listed the particulars of the e-mail, and then he signed it, “Thomas Thorn, Commander, Net Force.”