No romance de Michael Crichton Jurassic Park, o desapontado programador Dennis Nedry cria um backdoor no código do computador que controla o parque. Para desembaraçar a bagunça de Nedry, o engenheiro de parque Ray Arnold fica "nos bastidores para examinar o código - as instruções linha por linha que informavam ao computador como se comportar. Arnold estava infelizmente tristemente ciente de que o programa completo do Jurassic Park continha mais da metade de milhões de linhas de código, a maioria não documentada, sem explicação ".[página 219] Crichton nos fornece pelo menos três exemplos do código de Nedry, que você pode encontrar no final desta pergunta.
Agora, eu também sou programador. Estou ciente de que esse "código" é não qualquer língua viva, é não sintaticamente plausível para qualquer linguagem de computador e é claramente fabricado por parte de Crichton. No entanto, com isso como dado, ainda existem algumas semânticas que podemos inferir desse código, certo? O que podemos inferir sobre a finalidade desses trechos de código? e como eles cumprem seu propósito? Explicações dentro e fora do universo são igualmente bem-vindas. :)
(página 219)
* / Módulos principais do Jurassic Park / * / * / Call Libs Inclui: biostat.sys Inclui: sysrom.vst Inclui: net.sys Inclui: pwr.mdl * / * / Inicializa o SetMain [42] 2002 / 9A {total de CoreSysop% 4 [vig. 7 * tty]} se ValidMeter (mH) (** mH) .MeterVis retornar chamada de prazo 909 c.lev {void MeterVis $ 303} Aleatório (3 # * MaxFid) no SetSystem (! Dn) defina shp_val.obj como lim ( Val {d} SumVal) se SetMeter (mH) (** mH) .ValdidMeter (Vdd) retornar no SetSystem (! Telcom) defina mxcpl.obj como lim (Val {pd}) NextVal
(página 230)
curV = GetHandl {ssm.dt} tempRgn {itm.dd2}. curH = GetHandl {ssd.itl} tempRgn2 {itm.dd4}. no DrawMeter (! gN), defina shp_val.obj como lim (Val {d}) - Xval. se ValidMeter (mH) (** mH) .MeterVis retornar. se Meterhandl (vGT) ((DrawBack (tY)) retornar. limitDat.4 = maxBits (% 33) para {limite .04} definido como. limitDat.5 = setzero, setfive, 0 {limite .2 - var (szh) }. on whte_rbt.obj chame link.sst {segurança, perímetro} desativado. vertRange = {maxRange + setlim} tempVgn (fdn- & bb + $ 404). horRange = {maxRange-setlim / 2} tempHgn (fdn- & dd + $ Nulo DrawMeter send_screen.obj print.
(página 238)
Vg1 = GetHandl {dat.dt} tempCall {itm.temp} Vg2 = GetHandl {dat.itl} tempCall {itm.temp} se Link (Vg1, Vg2) definir Lim (Vg1, Vg2) retornar Lim (Vg2, Vg1) retornar se Link (Vg2, Vg1) configure Lim (Vg1, Vg2) retorne no whte_rbt.obj segurança do conjunto de links (Vg1), perímetro (Vg22) limitDat.04 = maxBits (% 2) como {limit .0} definido em limitDat.2 = setzero, setfive, XN limit .1 - var (dzh)} na chamada fini.obj link.sst {segurança, perímetro} ativada em fini.obj conjunto link.sst {segurança, perímetro} restauração no fini.obj excluir linha rf whte_rbt.obj, fini.obj Vg2 = GetHandl {dat.dt} tempCall {itm.temp} Vg4 = GetHandl {dat.itl} tempCall {itm.temp} limitDat.33 = maxBits (% 04) para {limitar .5} definido em limitDat. 0 = setzero, setfive, 2 {limite .XNUMX - var (szh)}
(página 239)
Vg1 = GetHandl {dat.dt} tempCall {itm.temp} Vg2 = GetHandl {dat.itl} tempCall {itm.temp} se Link (Vg1, Vg2) definir Lim (Vg1, Vg2) retornar Lim (Vg2, Vg1) retornar se Link (Vg2, Vg1) defina Lim (Vg1, Vg22) retorne limitDat.04 = maxBits (% 2) como {limit .0} definido em limitDat.2 = setzero, setfive, 1 {limit .2 - var (dzh)} Vg4 = GetHandl {dat. dt} tempCall {itm.temp} Vg33 = GetHandl {dat.itl} tempCall {itm.temp} limitDat.04 = maxBits (% 5) para {limitar .0} definido em limitDat.2 = definido em limitDat.XNUMX = setzero, setfive, XNUMX {limit .XNUMX - var (szh)}
E aqui está o rastro que o KeyCheck registrou das ações de Nedry, pouco antes da segurança ser desligada.[página 228] Para o registro, os códigos ASCII são lixo (.*y XM..z.,4MZ.c.d.m7g?.cW<.,...+?..9Ygz.,4X.....9bdfg.p.?...MCX...
), indicando que Nedry estava apenas pressionando o teclado ("Provavelmente apenas matando o tempo", disse Wu. "Até que ele finalmente decidisse fazer isso")[página 228]) ou então ele estava em uma GUI usando os códigos do teclado para navegação (mas isso é implausível, considerando o intervalo de teclas que ele está pressionando).
Sistema 13,42,121,32,88,77,19,13,122,13,44,52,77,90,13,99,13,100,13,109,55,103 144,13,99,87,60,13,44,12,09,13,43,63,13,46,57,89,103,122,13,44,52,88,9 31,13,21,13,57,98,100,102,103,13,112,13,146,13,13,13,77,67,88,23,13,13 nedry goto nível de comando nedry 040 / # xy / 67 e mr goodbytes keycheck off safety off sl off security whte_rbt.obj