1 #include <ncurses.h>
2 #include <stdlib.h>
3 #include <sys/types.h>
4 #include <unistd.h>
5 #include <stdio.h>
6 #include <time.h>
7
myrandom()8 unsigned int myrandom()
9 {
10 return lrand48();
11 }
12
random_32bit_value()13 unsigned int random_32bit_value()
14 {
15 return myrandom() & 0xffffffff;
16 }
17
random_error()18 char * random_error()
19 {
20 static char *errors[] = {
21 "ACPI_DRIVER_INTERNAL",
22 "ASSIGN_DRIVE_LETTERS_FAILED",
23 "ATDISK_DRIVER_INTERNAL",
24 "BAD_EXHANDLE",
25 "BAD_POOL_CALLER",
26 "BAD_SYSTEM_CONFIG_INFO",
27 "BOUND_IMAGE_UNSUPPORTED",
28 "BUGCODE_USB_DRIVER",
29 "CACHE_INITIALIZATION_FAILED",
30 "CANCEL_STATE_IN_COMPLETED_IRP",
31 "CANNOT_WRITE_CONFIGURATION",
32 "CONFIG_INITIALIZATION_FAILED",
33 "CONFIG_LIST_FAILED",
34 "CRITICAL_SERVICE_FAILED",
35 "DATA_COHERENCY_EXCEPTION",
36 "DEREF_UNKNOWN_LOGON_SESSION",
37 "DFS_FILE_SYSTEM",
38 "DRIVER_CORRUPTED_MMPOOL",
39 "DRIVER_IRQL_NOT_LESS_OR_EQUAL",
40 "DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS",
41 "DRIVER_POWER_STATE_FAILURE",
42 "DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS",
43 "END_OF_NT_EVALUATION_PERIOD",
44 "FATAL_UNHANDLED_HARD_ERROR",
45 "FILE_INITIALIZATION_FAILED",
46 "FLTMGR_FILE_SYSTEM",
47 "FP_EMULATION_ERROR",
48 "FTDISK_INTERNAL_ERROR",
49 "HAL1_INITIALIZATION_FAILED",
50 "HAL_INITIALIZATION_FAILED",
51 "INSTALL_MORE_MEMORY",
52 "INSTRUCTION_COHERENCY_EXCEPTION",
53 "INSUFFICIENT_SYSTEM_MAP_REGS",
54 "INTERNAL_POWER_ERROR",
55 "INVALID_KERNEL_HANDLE",
56 "INVALID_REGION_OR_SEGMENT",
57 "INVALID_WORK_QUEUE_ITEM",
58 "IO1_INITIALIZATION_FAILED",
59 "IRQL_GT_ZERO_AT_SYSTEM_SERVICE",
60 "KERNEL_DATA_INPAGE_ERROR",
61 "KERNEL_MODE_EXCEPTION_NOT_HANDLED",
62 "KERNEL_STACK_INPAGE_ERROR",
63 "KERNEL_STACK_LOCKED_AT_EXIT",
64 "LM_SERVER_INTERNAL_ERROR",
65 "LPC_INITIALIZATION_FAILED",
66 "MACHINE_CHECK_EXCEPTION",
67 "MAILSLOT_FILE_SYSTEM",
68 "MEMORY1_INITIALIZATION_FAILED",
69 "MULTIPLE_IRP_COMPLETE_REQUESTS",
70 "MUST_SUCCEED_POOL_EMPTY",
71 "MUTEX_ALREADY_OWNED",
72 "NDIS_INTERNAL_ERROR",
73 "NO_BOOT_DEVICE",
74 "NO_PAGES_AVAILABLE",
75 "NO_SUCH_PARTITION",
76 "OBJECT1_INITIALIZATION_FAILED",
77 "OBJECT_INITIALIZATION_FAILED",
78 "OFS_FILE_SYSTEM",
79 "PAGE_FAULT_IN_NONPAGED_AREA",
80 "PAGE_FAULT_WITH_INTERRUPTS_OFF",
81 "PFN_LIST_CORRUPT",
82 "PHASE0_EXCEPTION",
83 "PINBALL_FILE_SYSTEM",
84 "PNP_INTERNAL_ERROR",
85 "PP0_INITIALIZATION_FAILED",
86 "PP1_INITIALIZATION_FAILED",
87 "PROCESS1_INITIALIZATION_FAILED",
88 "PROCESS_HAS_LOCKED_PAGES",
89 "PROCESS_INITIALIZATION_FAILED",
90 "RECOM_DRIVER",
91 "REFMON_INITIALIZATION_FAILED",
92 "REF_UNKNOWN_LOGON_SESSION",
93 "REGISTRY_ERROR",
94 "SECURITY1_INITIALIZATION_FAILED",
95 "SECURITY_INITIALIZATION_FAILED",
96 "SESSION1_INITIALIZATION_FAILED",
97 "SESSION2_INITIALIZATION_FAILED",
98 "SESSION3_INITIALIZATION_FAILED",
99 "SESSION4_INITIALIZATION_FAILED",
100 "SESSION5_INITIALIZATION_FAILED",
101 "SESSION_HAS_VALID_POOL_ON_EXIT",
102 "SESSION_HAS_VALID_SPECIAL_POOL_ON_EXIT",
103 "SESSION_HAS_VALID_VIEWS_ON_EXIT",
104 "SET_ENV_VAR_FAILED",
105 "SETUP_FAILURE",
106 "SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION",
107 "SPIN_LOCK_INIT_FAILURE",
108 "STREAMS_INTERNAL_ERROR",
109 "SYMBOLIC_INITIALIZATION_FAILED",
110 "SYSTEM_LICENSE_VIOLATION",
111 "SYSTEM_THREAD_EXCEPTION_NOT_HANDLED",
112 "TARGET_MDL_TOO_SMALL",
113 "TERMINAL_SERVER_DRIVER_MADE_INCORRECT_MEMORY_REFERENCE",
114 "UDFS_FILE_SYSTEM",
115 "UNMOUNTABLE_BOOT_VOLUME",
116 "UNSUPPORTED_PROCESSOR",
117 "UP_DRIVER_ON_MP_SYSTEM",
118 "WIN32K_INIT_OR_RIT_FAILURE",
119 "WORKER_THREAD_RETURNED_AT_BAD_IRQL",
120 "XNS_INTERNAL_ERROR"
121 };
122
123 return errors[myrandom() % (sizeof(errors) / sizeof(char *))];
124 }
125
random_sys_file(void)126 char *random_sys_file(void)
127 {
128 static char *sys_files[] = {
129 "cdr4_xp.sys",
130 "fs_rec.sys",
131 "hsx_cnxt.sys",
132 "hsx_dpv.sys",
133 "ks-959.sys",
134 "nv4_mini.sys",
135 "sffp_sd.sys",
136 "sym_hi.sys",
137 "sym_u3.sys",
138 "1394bus.sys",
139 "ac97intc.sys",
140 "acpi.sys",
141 "acpiec.sys",
142 "adihdaud.sys",
143 "adpu160m.sys",
144 "aeaudio.sys",
145 "aec.sys",
146 "aegisp.sys",
147 "afd.sys",
148 "aha154x.sys",
149 "aic78u2.sys",
150 "aic78xx.sys",
151 "aliide.sys",
152 "amdk6.sys",
153 "amdk7.sys",
154 "amsint.sys",
155 "anc.sys",
156 "ansi.sys",
157 "arp1394.sys",
158 "asc.sys",
159 "asc3350p.sys",
160 "asc3550.sys",
161 "asyncmac.sys",
162 "atapi.sys",
163 "ati2mtag.sys",
164 "atmarpc.sys",
165 "atmeltpm.sys",
166 "atmepvc.sys",
167 "atmlane.sys",
168 "atmuni.sys",
169 "audstub.sys",
170 "b57xp32.sys",
171 "battc.sys",
172 "bcbthub.sys",
173 "beep.sys",
174 "bluescreen.sys",
175 "bridge.sys",
176 "btaudio.sys",
177 "btkrnl.sys",
178 "btport.sys",
179 "btserial.sys",
180 "btslbcsp.sys",
181 "btwdndis.sys",
182 "btwusb.sys",
183 "cbidf2k.sys",
184 "ccdecode.sys",
185 "cd20xrnt.sys",
186 "cdaudio.sys",
187 "cdfs.sys",
188 "cdralw2k.sys",
189 "cdrom.sys",
190 "cinemst2.sys",
191 "classpnp.sys",
192 "cmbatt.sys",
193 "cmdide.sys",
194 "compbatt.sys",
195 "country.sys",
196 "cpqarray.sys",
197 "cpqdap01.sys",
198 "crusoe.sys",
199 "dac2w2k.sys",
200 "dac960nt.sys",
201 "disk.sys",
202 "diskdump.sys",
203 "dmboot.sys",
204 "dmio.sys",
205 "dmload.sys",
206 "dmusic.sys",
207 "dpti2o.sys",
208 "drmk.sys",
209 "drmkaud.sys",
210 "dxapi.sys",
211 "dxg.sys",
212 "dxgthk.sys",
213 "e100b325.sys",
214 "elbycdfl.sys",
215 "elbycdio.sys",
216 "enum1394.sys",
217 "fastfat.sys",
218 "fdc.sys",
219 "fips.sys",
220 "flpydisk.sys",
221 "fltmgr.sys",
222 "fsvga.sys",
223 "ftdisk.sys",
224 "hcmon.sys",
225 "hdaudbus.sys",
226 "hdaudio.sys",
227 "hidclass.sys",
228 "hidcom.sys",
229 "hidparse.sys",
230 "hidusb.sys",
231 "himem.sys",
232 "hpn.sys",
233 "hsxhwazl.sys",
234 "http.sys",
235 "i2omgmt.sys",
236 "i2omp.sys",
237 "i8042prt.sys",
238 "ikhfile.sys",
239 "ikhlayer.sys",
240 "imagedrv.sys",
241 "imagesrv.sys",
242 "imapi.sys",
243 "ini910u.sys",
244 "intelide.sys",
245 "intelppm.sys",
246 "ip6fw.sys",
247 "ipfltdrv.sys",
248 "ipinip.sys",
249 "ipnat.sys",
250 "ipsec.sys",
251 "irda.sys",
252 "irenum.sys",
253 "isapnp.sys",
254 "kbdclass.sys",
255 "kbdhid.sys",
256 "key01.sys",
257 "keyboard.sys",
258 "kmixer.sys",
259 "ks.sys",
260 "ksecdd.sys",
261 "luipsec.sys",
262 "mcd.sys",
263 "mdmxsdk.sys",
264 "mf.sys",
265 "mnmdd.sys",
266 "modem.sys",
267 "mouclass.sys",
268 "mouhid.sys",
269 "mountmgr.sys",
270 "mqac.sys",
271 "mraid35x.sys",
272 "mrxdav.sys",
273 "mrxsmb.sys",
274 "msfs.sys",
275 "msgpc.sys",
276 "mskssrv.sys",
277 "mspclock.sys",
278 "mspqm.sys",
279 "mssmbios.sys",
280 "mstee.sys",
281 "mup.sys",
282 "nabtsfec.sys",
283 "ndis.sys",
284 "ndisip.sys",
285 "ndistapi.sys",
286 "ndisuio.sys",
287 "ndiswan.sys",
288 "ndproxy.sys",
289 "netbios.sys",
290 "netbt.sys",
291 "nic1394.sys",
292 "nikedrv.sys",
293 "nmnt.sys",
294 "nmwcd.sys",
295 "nmwcdc.sys",
296 "nmwcdcj.sys",
297 "nmwcdcm.sys",
298 "npf.sys",
299 "npfs.sys",
300 "nsndis5.sys",
301 "ntdos.sys",
302 "ntdos404.sys",
303 "ntdos411.sys",
304 "ntdos412.sys",
305 "ntdos804.sys",
306 "ntfs.sys",
307 "ntio.sys",
308 "ntio404.sys",
309 "ntio411.sys",
310 "ntio412.sys",
311 "ntio804.sys",
312 "null.sys",
313 "nwlnkflt.sys",
314 "nwlnkfwd.sys",
315 "nwlnkipx.sys",
316 "nwlnknb.sys",
317 "nwlnkspx.sys",
318 "nwrdr.sys",
319 "ohci1394.sys",
320 "oprghdlr.sys",
321 "p3.sys",
322 "parport.sys",
323 "partmgr.sys",
324 "parvdm.sys",
325 "pcdrndisuio.sys",
326 "pci.sys",
327 "pciide.sys",
328 "pciidex.sys",
329 "pcmcia.sys",
330 "perc2.sys",
331 "perc2hib.sys",
332 "portcls.sys",
333 "pqntdrv.sys",
334 "processr.sys",
335 "psadd.sys",
336 "psched.sys",
337 "ptilink.sys",
338 "pxhelp20.sys",
339 "ql1080.sys",
340 "ql10wnt.sys",
341 "ql12160.sys",
342 "ql1240.sys",
343 "ql1280.sys",
344 "rasacd.sys",
345 "rasirda.sys",
346 "rasl2tp.sys",
347 "raspppoe.sys",
348 "raspptp.sys",
349 "raspti.sys",
350 "rawwan.sys",
351 "rdbss.sys",
352 "rdpcdd.sys",
353 "rdpdr.sys",
354 "rdpwd.sys",
355 "redbook.sys",
356 "rio8drv.sys",
357 "riodrv.sys",
358 "rmcast.sys",
359 "rndismp.sys",
360 "rootmdm.sys",
361 "s24trans.sys",
362 "scsiport.sys",
363 "sdbus.sys",
364 "secdrv.sys",
365 "serenum.sys",
366 "serial.sys",
367 "sffdisk.sys",
368 "sfloppy.sys",
369 "sftpdrive.sys",
370 "shockmgr.sys",
371 "shockprf.sys",
372 "slip.sys",
373 "smclib.sys",
374 "sonydcam.sys",
375 "sparrow.sys",
376 "splitter.sys",
377 "sptd.sys",
378 "sptddrv1.sys",
379 "sr.sys",
380 "srv.sys",
381 "ssi.sys",
382 "stream.sys",
383 "streamip.sys",
384 "swenum.sys",
385 "swmidi.sys",
386 "symc810.sys",
387 "symc8xx.sys",
388 "syntp.sys",
389 "sysaudio.sys",
390 "tape.sys",
391 "tcpip.sys",
392 "tcpip6.sys",
393 "tcusb.sys",
394 "tdi.sys",
395 "tdpipe.sys",
396 "tdtcp.sys",
397 "termdd.sys",
398 "tosdvd.sys",
399 "toside.sys",
400 "tphkdrv.sys",
401 "tsbvcap.sys",
402 "tunmp.sys",
403 "udfs.sys",
404 "ultra.sys",
405 "update.sys",
406 "usb8023.sys",
407 "usbcamd.sys",
408 "usbcamd2.sys",
409 "usbccgp.sys",
410 "usbd.sys",
411 "usbehci.sys",
412 "usbhub.sys",
413 "usbintel.sys",
414 "usbkey.sys",
415 "usbport.sys",
416 "usbprint.sys",
417 "usbscan.sys",
418 "usbuhci.sys",
419 "usbvm31b.sys",
420 "vdmindvd.sys",
421 "vga.sys",
422 "viaide.sys",
423 "videoprt.sys",
424 "vmnet.sys",
425 "vmnetadapter.sys",
426 "vmnetbridge.sys",
427 "vmnetuserif.sys",
428 "vmx86.sys",
429 "volsnap.sys",
430 "w29n50.sys",
431 "w29n51.sys",
432 "w39n50.sys",
433 "w39n51.sys",
434 "wanarp.sys",
435 "watchdog.sys",
436 "wbpcm.sys",
437 "wbusb.sys",
438 "wdmaud.sys",
439 "win32k.sys",
440 "wmilib.sys",
441 "wpdusb.sys",
442 "ws2ifsl.sys",
443 "wstcodec.sys",
444 "wudfpf.sys",
445 "wudfrd.sys",
446 };
447
448 return sys_files[myrandom() % (sizeof(sys_files) / sizeof(char *))];
449 }
450
bsod(WINDOW * win)451 void bsod(WINDOW *win)
452 {
453 int y, x;
454 char *sys_file = random_sys_file();
455
456 werase(win);
457
458 scrollok(win, FALSE);
459 wbkgdset(win, ' ' | COLOR_PAIR(1) | A_BOLD);
460 for(y=0; y<LINES; y++)
461 {
462 for(x=0; x<COLS; x++)
463 mvwprintw(win, y, x, " ");
464 }
465 wmove(win, 0, 0);
466
467 wattron(win, COLOR_PAIR(1));
468 wattron(win, A_BOLD);
469
470 wprintw(win, "\n");
471 wprintw(win, "A problem has been detected and Windows has been shut down to prevent damage\n");
472 wprintw(win, "to your computer.\n");
473 wprintw(win, "\n");
474 wprintw(win, "The problem seems to be caused by the following file: %s\n", sys_file);
475 wprintw(win, "\n");
476 wprintw(win, "%s\n", random_error());
477 wprintw(win, "\n");
478 wprintw(win, "If this is the first time you've seen this Stop error screen,\n");
479 wprintw(win, "restart your computer. If this screen appears again, follow\n");
480 wprintw(win, "these steps:\n");
481 wprintw(win, "\n");
482 wprintw(win, "Check to make sure any new hardware or software is properly installed.\n");
483 wprintw(win, "If this is a new installation, ask your hardware or software manufacturer\n");
484 wprintw(win, "for any Windows updates you might need.\n");
485 wprintw(win, "\n");
486 wprintw(win, "If problems continue, disable or remove any newly installed hardware\n");
487 wprintw(win, "or software. Disable BIOS memory options such as caching or shadowing.\n");
488 wprintw(win, "If you need to use Safe Mode to remove or disable components, restart\n");
489 wprintw(win, "your computer, press F8 to select Advanced Startup Options, and then\n");
490 wprintw(win, "select Safe Mode.\n");
491 wprintw(win, "\n");
492 wprintw(win, "Technical information:\n");
493 wprintw(win, "\n");
494 wprintw(win, "*** STOP: 0x%08x (0x%08x,0x%08x,0x%08x,0x%08x)\n", random_32bit_value(), random_32bit_value(), random_32bit_value(), random_32bit_value(), random_32bit_value());
495 wprintw(win, "\n");
496 wprintw(win, "\n");
497 wprintw(win, "*** %s - Address 0x%08x base at 0x%08x, DateStamp %08x\n", sys_file, random_32bit_value(), random_32bit_value(), random_32bit_value());
498
499 wattroff(win, A_BOLD);
500 wattroff(win, COLOR_PAIR(1));
501
502 wrefresh(win);
503 doupdate();
504 }
505
main(int argc,char * argv[])506 int main(int argc, char *argv[])
507 {
508 srand48((int)time(NULL) + (int)getpid());
509
510 initscr();
511 start_color();
512 init_pair(1, COLOR_WHITE, COLOR_BLUE);
513
514 bsod(stdscr);
515
516 getch();
517 endwin();
518
519 fprintf(stderr, "\n\n\n\n\nbsod, (C) 2007 by folkert@vanheusden.com\n\n");
520
521 return 0;
522 }
523