¿Cuál es el código más ilegal o poco ético que hayas escrito?

No podía considerar un código como tal, cuando tenía 14 años solía ir a la sala de computadoras de la biblioteca pública.

Y utilicé el comando net send de Windows XP que le permite enviar mensajes de alerta a las otras computadoras en su red (utilizaron Windows XP que tenía este servicio activado por defecto).

De esta manera envié mensajes a otros usuarios de la sala diciendo cosas como:

“Hay algunos problemas con su computadora. Debes reiniciarlo para resolverlo.

Las personas vieron una alerta en su pantalla con ese mensaje como este.

Y la mayoría de las personas reinicia o apaga su computadora.

Fue divertido hasta que un día fui atrapado por el bibliotecario. Quizás porque yo también me estaba riendo.

ACTUALIZAR:

Acabo de recordar que en esos momentos también instalé un Keylogger en mi computadora (que te permite guardar todas las teclas que escribes en tu teclado).

E invité a algunos amigos a iniciar sesión en mi computadora en sus redes sociales. y luego tuve la contraseña y el usuario (solo tiene que buscar en el Registro un correo electrónico y luego habrá la contraseña).

Hoy en día estoy pensando en programar alguna trampa para mi habitación con arduino y algunos sensores y motores que algunos parecen en “Solo en casa”

Esta es una historia que comienza con mi ex novia, fue hace unos 12 años … 2005. Nos conocimos en una sala de chat grupal de Yahoo y después de algunas bromas descubrí que no estaba en los Estados Unidos sino en Rumania.

Durante los días siguientes conversamos mucho, pero el hecho de que había una barrera del idioma estaba claro, ella era brillante en el sentido de que aprendió a escribir y leer inglés viendo la televisión, pero a menudo teníamos malentendidos en el momento durante nuestras conversaciones.

Entonces me di cuenta, había estado trabajando en el marco de AgilEntity durante aproximadamente 5 años para ese momento, AgilEntity: Home y estaba buscando una aplicación de prueba de concepto para construir más allá del sistema de publicación que ya había construido que podía intentar lanzar una puesta en marcha y demostrar la superioridad de los sistemas integrados en una plataforma que implementa la arquitectura AgilEntity Architecture: paradigma de flujo de trabajo orientado a la acción.

Colaborar con ella en esa sala de chat me dio una idea, estaba al tanto de las diversas herramientas que estaban en línea para proporcionar una traducción aproximada entre dos idiomas. Babelfish era más viejo, pero Google había presentado recientemente Google Translate, me preguntaba si podría “prestar” sus herramientas para crear una función de traducción para el chat.

Durante los días siguientes, comencé a investigar el proceso, elaboré una interfaz de IM funcional construida en el marco y usando capas para hacer la actualización (sí … ¡adoquinada!) Podría refactorizar a una solución más elegante y eficiente usando llamadas a objetos XmlHttpRequest a través del DOM para que sea una agradable interfaz libre de actualizaciones más tarde … Solo quería ver si podía hacer que la traducción funcionara primero, ya que ese era mi objetivo.

Luego cambié mi atención a la página de Google Translations en ese momento, introspecté la fuente y pensé que un enfoque rápido y sucio sería usar la suplantación del navegador con Java para iniciar una solicitud pasando la entrada de texto en un campo de formulario en las ventanas de chat de los participantes en el chat, esto lanzaría una solicitud enhebrada para traducir a Google … y aprovecharía las selecciones de idioma conocidas por parte de los participantes. Rápidamente se me ocurrió un algoritmo para describir este método de traducción mutua, TOAD. Traducción a petición del agente … ahora tenía que hacerlo funcionar.

Escribí el código para la suplantación del navegador e inicié la solicitud al Traductor de Google y luego tuve que encontrar una forma de recortar los resultados de la traducción después de que Google manejara la solicitud … Hice esto usando algo con lo que estaba familiarizado de haber creado mi propio sistema de publicación y trabajé en la construcción de componentes del sistema de publicación en TheStreet, expresiones regulares.

Pasé unas horas (o días) tratando de obtener una expresión regular robusta que pudiera seleccionar de manera confiable el texto de retorno del mar de texto que el servidor de Google estaba enviando de vuelta (sí, toda la página … no había API de traducción para acceder, así que allí no había forma de solicitar directamente una traducción para un fragmento y obtener solo una respuesta como fragmento … Google no lanzaría una API hasta algún momento alrededor de 2007).

Después de algunas pruebas … ¡listo, funcionó, solo tardó aproximadamente 2 semanas en construir! ¡Estaba pidiendo prestado el traductor de Google para permitir que se realizara un chat entre dos participantes para realizar una traducción casi en tiempo real!

Los aspectos poco éticos / ilegales de esta acción son menores … básicamente Google tenía una condición en sus términos de uso del Traductor de Google que no otorgaba acceso a medios automatizados … Estaba haciendo exactamente eso con mi método y técnicamente estaba fuera del alcance de su uso Por supuesto, no estaba usando mi herramienta para vender nada y nunca lo habría hecho, pero técnicamente bailé en la línea pirateando el sistema como lo hice.

Durante el próximo año y medio refactoricé el sistema básico que construí por primera vez para aprovechar el objeto XMLHttpRequest y así permitir actualizaciones suaves y gratuitas en tiempo real en las ventanas de los participantes, agregué una serie de otras características como el intercambio de archivos, y expandí La solución para habilitar a los participantes N por lenguaje M, chat grupal y mensajería instantánea. Incluso solicité una patente sobre el algoritmo distribuido que se utiliza.

Imaginé que la solución podría ser súper útil en un contexto comercial, en el momento en que los algoritmos de aprendizaje estadístico utilizados por Google y Babelfish para realizar la traducción eran difíciles para las traducciones complejas, pero para las declaraciones cortas normales para chatear eran mucho más efectivas. En este caso de uso, sentí que esos algoritmos eran lo suficientemente buenos para hacer cosas como permitir la colaboración empresarial entre países entre empleados que hablan diferentes idiomas. También sería útil para las herramientas de servicio al cliente que podrían colocarse en páginas web para permitir que un pequeño equipo de agentes de servicio al cliente brinde soporte internacional. Sobre la base de este potencial, traté de hacer de TOAD una característica central del servicio de colaboración que planeaba presentar en 2009.

Por razones que tienen que ver con la recesión económica mundial y mi incapacidad para recaudar fondos para el servicio que presenté nunca despegó … pero el algoritmo todavía es parte del marco de AgilEntity hasta el día de hoy.

Cuando estaba en la escuela, los estudiantes tomaban la mayoría de sus exámenes escritos en línea, cuyos resultados combinados representaban alrededor del 50% de la calificación final.

La forma en que funcionó fue que íbamos a un salón de clases con computadoras, abríamos el navegador, ingresábamos a nuestra cuenta en el sitio web de la escuela y tomábamos el examen. Era estándar comprobar la respuesta ABCD.

Ahora, por supuesto, durante los exámenes, todo el tráfico fuera de la intranet se bloqueó, por lo que nadie podía simplemente buscar en Google las respuestas.

Los estudiantes también pudieron iniciar sesión en sus cuentas escolares desde sus computadoras en casa, para ver su tarea y demás.

El backend web fue escrito en PHP y utilizó MYSQL como su base de datos. Como yo mismo era un desarrollador web aficionado en ese entonces, decidí mirar a través del código fuente para ver qué interesante podía encontrar. Después de analizarlo durante un tiempo, descubrí que el front-end (HTML + JS, en realidad no se puede ver el código PHP subyacente) en realidad era bastante meh y no estaba sucediendo nada realmente interesante y estaba a punto de rendirme y volver a hacer otras cosas, cuando de repente un pensamiento astuto entró en mi mente. “Hmmm, me pregunto qué tan seguro es esto … ja, ja, ja, ja, muhahahaha “. Intenté un poco de inyección SQL y otras travesuras, pero no me alegro, la aplicación web era una mierda, pero supongo que no fue TAN mierda. Y luego sucedió. Traté de cambiar aleatoriamente los parámetros en la URL (por ejemplo, Google ) a varios otros valores, en función de lo que se ve en varias URL mencionadas en el código y logré alcanzar un PREMIO MAYOR.

Una vez que mi dedo índice adolescente angustiado rompió la tecla Intro, por enésima vez ese día, estaba mirando una tabla que contenía una lista de todas las pruebas en la base de datos de la escuela. De ninguna manera. No puede ser, pensé. Probablemente sea una interfaz de prueba con algunas pruebas de práctica y otras cosas, y no el verdadero negocio. Así que revisé la lista buscando el examen que tomé hace solo 3 días … ¡y lo encontré! Después de hacer clic en él, enumeró todas las preguntas disponibles para esa prueba, junto con las respuestas correctas. (Cada estudiante recibe un montón de preguntas extraídas al azar del grupo de preguntas para esa prueba, para evitar que se copien entre sí) Esta era claramente una interfaz de administración, donde los maestros o el administrador podían ingresar y editar preguntas para las pruebas.

Entonces, ¿qué haría una persona buena y decente en esta situación? Informe este agujero al administrador del sistema de la escuela y luego salga con una estrella dorada al lado de su nombre y una sonrisa de satisfacción en su rostro sabiendo que hizo lo correcto. Probablemente.

Bueno, ya ves … el joven Mike no era una buena persona, era lo que llamarías … “un imbécil”.

Un pequeño ángel blanco apareció en mi hombro y dijo: “No lo hagas Mike, el crimen no paga”. un pequeño demonio rojo en el otro hombro le respondió , mientras lo apagaba “Solo si te atrapan”. Alejé al desagradable ángel y continué con mi plan.

Abrí un depurador rápido, que pasó por la interfaz de prueba y guardó todas las preguntas junto con las respuestas.

Entonces, todo lo que tenía que hacer ahora era esperar a que se anunciara el próximo examen escrito, luego revisar la lista de preguntas guardadas para ese examen y memorizar las respuestas correctas.

Ese era un buen plan … excepto … eh … que sonaba como demasiado esfuerzo. Quiero decir, si vas a hacer trampa, bien podrías ir hasta el final.

Así que hice un script en JavaScript, que podría inyectarse en la página web, a través del navegador, que utilizaba la computadora de la escuela. Este guión fue muy simple. Contenía todas las preguntas y respuestas, suspendidas en una matriz y una expresión regular que extraía las preguntas de la prueba de la página y mostraba una lista de respuestas correctas, en una fuente pequeña, en la parte inferior de la página. Entonces, todo lo que tenía que hacer era mirar las respuestas y marcar las casillas correspondientes. Cargué el script en la computadora como un archivo comprimido protegido por contraseña (todos los usuarios tenían su propio pequeño espacio de almacenamiento, que migró entre las computadoras cuando iniciaron sesión), durante el almuerzo, cuando las computadoras tenían acceso completo a Internet desbloqueado y luego durante una prueba Simplemente lo extraje y lo usé, eliminándolo después.

Agujas para decir, mis calificaciones mejoraron mágicamente durante ese tiempo. (Para empezar, no eran tan malos, pero esto me ahorró mucho tiempo al tener que estudiar basura aburrida que no me interesaba y que era exclusiva de esa prueba en particular u otra).

Nunca fui atrapado. Muchas veces consideré decírselo a mis amigos porque, por supuesto, me sentía como un hacker l33t y quería compartir mi éxito con otros, pero decidí no hacerlo. Si les dijera, ellos también querrían usarlo, y si las calificaciones de los exámenes escritos de todos se levantaran de forma milagrosa, llamaría la atención. O si una de las personas que sabían hablara por cualquier razón, estaría jodida. Probablemente expulsado. Así que siendo la buena persona que soy, me lo guardé todo para mí.

Nunca me arrepentí de hacerlo.

No ético, pero con intenciones éticas.

Hace unos 15 años, era miembro de un pequeño sitio social tipo Yahoo Messenger que solía chatear con amigos. Un día, me desconecté accidentalmente y luego presioné para volver a la página de inicio de sesión anterior, pero noté que mi perfil aún estaba activo y mi sesión de chat estaba activa. Cuando le envié un mensaje a mi amigo, me llegó.

Un par de fines de semana más tarde, por puro aburrimiento, decidí descompilar la aplicación swf de chat del sitio y ver cómo funcionaba la autenticación. Todo se veía bien al principio. El registro y el inicio de sesión se gestionaron mediante una simple comprobación de hash md5 con un servidor remoto. El cliente estaba escrito en actionscript 3. La aplicación verificaría si una sesión de chat era privada y, si lo fuera, solicitaría la contraseña. Una vez dada, la aplicación proporcionaría una cadena de token junto con una identificación de perfil al servidor que lo autorizaría y luego leería y escribiría en la sesión de chat. Todo bien. Entonces, ¿cómo pude ver mi sesión después de cerrar sesión? Lo más probable, ¿el método de cierre de sesión no borró el token de mi caché? ¡Okay! Descuidado, pero tal vez algo perdonable. Estaba a punto de hacer clic en un correo electrónico rápido para el propietario del sitio cuando noté algo más …

La aplicación estaba registrando una tonelada de mensajes de depuración en la consola flash, incluido el token AUTH que se usaba para acceder a sesiones de chat privadas. Curiosamente, el token siguió cambiando casi cada vez que se envió o recibió un mensaje. De hecho, cambió todo el tiempo, excepto cuando envié dos mensajes en rápida sucesión … entonces fue idéntico.

Entonces, ¿cuándo es un token no un token?

Después de una hora de crear diferentes cuentas y capturar solicitudes HTTP, llegué a la conclusión de que, no solo el token de cadena definitivamente no era generado por el servidor, los cambios eran idénticos para diferentes cuentas.

Volviendo al código descompilado, decidí encontrar el código responsable de la generación de tokens. Busqué una clase relacionada con Crypt, y encontré una clase genérica hmac SHA-1 que fue utilizada por un método de generación de tokens llamado creativamente tokenGenerator () . Dentro de tokenGenerator () , el desarrollador tuvo la amabilidad de proporcionar tanto el patrón de generación para la cadena de token sin codificar (la fecha, la hora y el nombre de dominio del sitio, concatenado), como la clave secreta hmac (FuHaCkRz2001).

Después de troquelar independientemente la cadena concatenada con la clave, codificarla en base64 y luego compararla con la salida de la aplicación, confirmó que el resultado coincidía con lo que ahora se transmitía a través de mi consola flash.

Lo único que quedaba era agregar el perfil correcto y los identificadores de sesión a una solicitud POST junto con un encabezado AUTH que contenía el hash y, voila, podía leer las transmisiones de chat y video de cualquier persona.

Hice clic en un correo electrónico al autor explicando la vulnerabilidad inherente al uso del mismo token de autenticación generado por el cliente frikkin ‘para todos sus usuarios. Nunca escuché de vuelta. Baste decir que dejé de usar el sitio para chatear.

Editar: como señaló Ibrahim Ahmed, ActionScript 3 se lanzó en 2006. Por lo tanto, no hay forma de que haya editado un swf AS3 hace 15 años. Francamente, me sorprende que incluso pueda recordar alguno de los códigos que edité hace más de 6 meses, así que perdone la discrepancia de fecha. Esto claramente debe haber ocurrido en o después de 2006.

Esto no era nada ilegal, sino la imitación de un malware. Lo llamé Biohazard .

Hubo una vez un virus (creo que se llamaba Alien) que reproducía música de The Twilight Zone y expulsaba la unidad de CD del usuario, así que desarrollé una aplicación similar que reproducía la misma música, mostraba la barra de progreso y el mensaje de diálogo “Tvoj sistem je uspešno zaražen ” ( Su sistema ha sido infectado con éxito ).

Si intentara salir del programa, escucharía la voz de Aleksandar Vučić (actualmente, presidente serbio) que dice en voz alta ‘¡Tišina tamo!’Silencio! ) [vídeo]

Sin embargo, puede cerrarlo fácilmente a través del Administrador de tareas. En la versión dos, el proceso estaba oculto desde el Administrador de tareas, por lo que tampoco fue posible cerrarlo desde allí.

Todavía tengo la versión 1 guardada en mi disco:
FatOS 1.0.ZIP

(Le dije a mi amigo que en realidad hice un sistema operativo que se ejecuta solo en el host de Windows, así que esa es la razón detrás de este nombre: envié esto a algunos de mis amigos y todos se enamoraron de él)

Esta cosa, sin embargo, era más poco ética; Instalé Chrome keylogger en una computadora en el club de juegos. También elegí ocultar el ícono de la extensión para que todo sea menos sospechoso. Mi amigo finalmente se sentó en esa computadora un día y escribió su correo electrónico y contraseña para iniciar sesión en Facebook.

Un día, tuvimos una clase de nuestro profesor favorito (a menudo nos permitía tomar un descanso de la conferencia). Esa clase no fue la excepción de la regla. Estábamos en nuestros teléfonos cuando, de repente, BOOM, todo el aula tembló. Uno de mis brillantes amigos de alguna manera volcó la mesa en nuestro salón de clases con su pierna. Nos reíamos como locos por el resto de la “clase”.

Esa noche, estaba en la misma PC en ese club de juegos y adivina quién inició sesión en Facebook. Sí, era él. Se conectó unos días antes y la extensión registró su correo electrónico y contraseña. No podía creer en el primer momento. Pasé un tiempo pensando qué debería hacer. Escribí un correo electrónico y una contraseña en mi teléfono, eliminé la extensión del navegador y regresé a casa.

En casa, inicié sesión en su cuenta. Cambié la contraseña y escribí la publicación:

Izvrćem stolove po svadbama i sa’ranama povoljno!
Kontakt:

Traducido al inglés:

¡Estoy volcando las mesas de matrimonios y funerales a un precio favorable!
Contacto:

Tomé una foto de la publicación y, junto con el enlace, la publiqué en nuestro grupo escolar.

No estuvo al tanto de lo que sucedió durante las 24 horas completas , hasta que llegó a la escuela a la mañana siguiente y mis amigos (después de que les conté todo) le preguntaron sobre su cuenta de Facebook 😛

He tenido que volver a esta publicación. Eek!

1)

Imagine un sistema informático capaz de ejecutar un pequeño sistema de transferencia de archivos en una red de área amplia. Agregue un pequeño sistema BB para que pueda enviar mensajes a cualquier persona que haya iniciado sesión.

Ahora agregue al código la capacidad de ver si el servicio iba a ser eliminado o eliminado físicamente.

Cuando detecte tal acción, replíquese y transfiera todos los datos de estado a la nueva instancia y luego elimínela / elimínela forzosamente, evitando la solicitud inicial y, por lo tanto, fallando esa solicitud.

Entonces comprenda que ya no puede alterar el código y que nadie puede eliminar el programa.

Luego, descubra que la única forma de eliminar el programa es reiniciar el sistema.

Luego descubra que nadie ha reiniciado el sistema durante aproximadamente 4 años.

¡Entonces, dígales que abandone el establecimiento académico y que nunca regrese!

2)

Las viejas computadoras de la BBC Micro (un kit sangriento y brillante) tenían un comando llamado VDU. Podrías hacer todo tipo de cosas “interesantes” con él.

Por ejemplo. Podrías decirle al monitor que el campo de visualización era MUY ancho que podría fundir un fusible al tratar de estirar el campo. Una biblioteca en particular estaba MUY molesta porque todos sus monitores ya no estaban encendidos.

3)
No tanto ilegal / poco ético, sino accidental. Una vez instalé toda una carga de cajas de taller (creo que eran alrededor de 50). Conecté el módem y el cajón de efectivo a los puertos seriales equivocados. Cuando el personal de la tienda entró por la mañana, la votación de la noche no había funcionado y todos los cajones de efectivo parecían no estar cerrados. Había quemado los solenoides en los cajones de efectivo.

Nada de lo que se me ocurra, pero su pregunta me recordó cómo llegué al tipo de trabajo que he estado haciendo durante los últimos 40 años: trabajando en y con el código de nivel del sistema operativo.

Recién salía de la universidad, trabajaba para un negocio agrícola en Lubbock, Texas. Comencé allí como operador de computadoras y pasé al desarrollo de aplicaciones después de haber completado un curso de educación COBOL de autoaprendizaje. Todo mi trabajo universitario había sido en lenguajes de tipo científico como FORTRAN. Soy una persona muy curiosa por naturaleza, y eventualmente me di cuenta e interesé en aprender lo que llamamos BAL (lenguaje básico de ensamblaje) o ALC (codificación de lenguaje ensamblador), así que, al ser un tipo motivado, encontré otro curso de autoaprendizaje sobre el tema y comenzó a investigarlo. Cuando lo terminé, decidí que tenía que ponerme a prueba a mí mismo y a mi comprensión del tema trabajando con algún código ALC del mundo real, así que me sumergí en el repositorio de código fuente de la compañía buscando algunos y llegué, completamente al azar y por accidente, El programa que contenía la gestión de contraseñas y los algoritmos de cifrado / descifrado para los sistemas en línea de la compañía. Estudié el programa para ver si podía entender cómo hizo lo que hizo. Después de haber decidido que había tenido éxito, la única forma de saberlo con certeza era (lo adivinaste) intentar hackear el sistema en línea de la compañía y alterar la configuración de mi perfil de seguridad. Pude hacerlo sin muchos problemas, así que me sentí bastante impresionado conmigo mismo. Poco después de eso, también me “atraparon” y me llevaron a la oficina del jefe para explicarme. Había estado tan absorto en mi búsqueda de comprensión que nunca se me pasó por la cabeza que mis acciones podrían haber sido interpretadas como algo más. Al ser interrogado por “el hombre”, inmediatamente me lancé, con un poco de entusiasmo, a un discurso animado y alegre de cómo, por curiosidad por ALC, había querido aprenderlo, y me estaba llevando a una feliz relación de mi triunfo. cuando finalmente me di cuenta de que, debido a lo que había hecho, “la compañía” podría no estar tan contenta como lo había estado conmigo misma. Recuerdo que la sonrisa desapareció de mi rostro mientras tartamudeaba algo como: “Oh. Probablemente piense que estaba tratando de hacer algo malo ”. Bueno, afortunadamente para mí, una vez que le expliqué la situación,“ el jefe ”, en realidad siendo un buen tipo y bastante inclinado técnicamente, me creyó. Fui transferido inmediatamente del desarrollo de aplicaciones a la “programación de sistemas” y me asignaron mi primer trabajo en la vida real que involucraba la programación de Assembler: rediseñar y reescribir ese módulo de seguridad para que nadie más pudiera hacer lo que había hecho 🙂

PD: También tuve éxito en eso y me divertí mucho haciéndolo. Creé un esquema de cifrado / descifrado que funcionó de manera diferente para cada usuario definido en la base de datos, y también cambié la forma en que funcionaba cada vez que un usuario se conectaba y desconectaba, de modo que incluso si alguien hiciera ingeniería inversa de su propio cifrado de contraseña (como yo había hecho antes) solo sería válido para su propia ID, y luego solo para su sesión actual. No podrían usar el mismo mecanismo para calcular la contraseña de la identificación de otra persona o incluso la suya propia, ya que se cifraría para el inicio de sesión posterior. He sido un “programador de sistemas” desde entonces, y todavía me encanta lo que hago.

Mi último año de universidad, mientras trabajaba como “asesor” en el laboratorio de computación (tutores provistos por el laboratorio para ayudar a los estudiantes y maestros, y también ejecutaba el lector / impresora de tarjetas para enviar “trabajos por lotes”, sí, eso estaba en los días de pulsaciones de teclas y teletipos), uno de los estudiantes presentó un trabajo que entró en un bucle infinito. Una falla en el sistema de contabilidad, permite que la parte de facturación se ejecute sin reiniciar el temporizador, de modo que después de ejecutar el bucle infinito, el proceso del sistema operativo que eliminó los trabajos pendientes, también eliminó el programa de facturación y no se le cobró al usuario. Oportunamente, informamos a las personas que manejan el centro de cómputo. Hicieron un parche tonto que atrapó exactamente el caso de prueba del juguete. Enviamos ejemplos para mostrar que no habían solucionado el problema raíz, y que había formas “infinitas” de escribir tales bucles. Después de una docena de intentos, nos dimos por vencidos y simplemente teníamos una manera de obtener todo el tiempo de computadora que quisiéramos.

Mi último día, tenía un papel para escribir, lo cual hice usando el programa de composición tipográfica “elegante” que escribiría en mayúsculas y minúsculas en la impresora láser de última generación (que llenaba una habitación). Decidí hacer esto en el laboratorio de computación principal. Me llevó varias horas escribir el documento, pero cuando terminé, envié un mensaje al operador, diciendo que todavía no habían reparado su error, y ejecuté un programa BASIC con un bucle infinito trivial, lo dejé morir y desconectado sin ser cargado.

Pensé con certeza que iban a “perseguirme” e intentarían acusarme de un delito, probablemente robo, ya que esto fue mucho antes de que hubiera leyes específicas para la piratería. Le dije a mi novia que podríamos tener que ir a México. Por supuesto, nada de eso sucedió. Esa fue la última vez que pirateé el sistema de contabilidad de una computadora, y en mi opinión el más poco ético, porque lo usé para tener más tiempo en la computadora de lo que me permitían, violando claramente las reglas.

En décimo grado, mi maestra de Java nos estaba mostrando cómo hacer GUI. Manualmente, no con un IDE, por lo que vimos todos los métodos tediosos, incluido el método “window.Show ()”.

Naturalmente, dije: “¿Qué sucede si llamo a esto dos veces?” Como era de esperar, obtienes 2 GUI.

Mi loco amigo (llamémoslo Simon) dijo “¡No! ¡Un verdadero bucle! ”Sin sorprenderse, el azul proyectó su computadora.

Pero esto fue solo el comienzo.

Simon luego escribió un simple programa de correo no deseado que escribiría números aleatorios en archivos de texto en una carpeta en lo profundo de la carpeta AppData de Internet Explorer, escribiendo cada archivo a aproximadamente 100 mb y luego comenzando uno nuevo. Podría escribir tan rápido como el disco duro podría manejar. Eso fue agradable y todo, pero tenía una cosa más que probar.

Descubrió que podía acceder fácilmente a la impresora predeterminada del sistema y darle comandos. Lo configuró para escribir la palabra “SPAM! “Una y otra vez, en diferentes colores y … en cómic sin fuente …

Lo triste es que Simon realmente consiguió que alguien lo ejecutara diciéndoles que era un juego de Pong. Realmente lo hizo abrir una ventana, pero no hizo nada, por lo que pensaron que estaba roto. Estábamos todos en una llamada de Skype y nos quedamos absolutamente en silencio ya que el tipo estaba confundido y preguntó por qué no estaba funcionando. Simon inventó una excusa y luego cambió de tema.

20 minutos después, el tipo volvió a la llamada y dijo: “¡Simon! ¿Qué demonios le hiciste a mi impresora? ¡¡Hay papel por todo el piso con cómics sin arcoíris !!

Todos nos reímos hasta las lágrimas. Fue hermoso.

Honestamente, Simon sigue siendo tan tortuoso y desordenado como siempre lo fue. Y lo amo por eso.

No exactamente ilegal o poco ético, pero en los viejos tiempos de Windows XP, solía crear bombas de horquilla como esta,

%0|%0

Y luego codifíquelo directamente en un archivo por lotes, átelos al archivo de ejecución automática de las unidades flash, siempre que preste una unidad flash de alguien. Tenía casi 13 años y tenía ganas de jugar a ser dios.

En aquel entonces, los comandos y archivos por lotes eran para mí como herramientas de élite de las que nadie de mi edad nunca había oído hablar. También solía experimentar el comando por lotes, “Shutdown -s -t 00” con algún extraño mensaje de alerta. Todo esto, hasta que un malware entró en mi sistema y cambió los íconos de todas mis unidades, lo cual fue frustrante porque tenía mi sistema personalizado a mi manera; y un ligero cambio me irritaría. Luego comencé a pensar en todas esas personas que simplemente conectan un dedo para copiar algunas películas y sus computadoras se vuelven locas. Ahí fue cuando me detuve.

PD: Mis queridos amigos y familiares, nunca te he hecho esto. Jajaja

En 1988, cuando estaba en la escuela secundaria, tenía una Apple // e y había ahorrado mis $ 3.15 / hora para comprar un módem de 1200 baudios, había visto WarGames, por supuesto, y había escrito un marcador de guerra. Espera, hay más …

Un día estaba en el trabajo de mi amigo recién graduado de la escuela secundaria y él hizo una pausa para mirar su buscapersonas digital. Luego se acercó a un teléfono (uno conectado a la pared a través de un cable. Lo sé, ¿verdad?) Y llamó al número en su buscapersonas, preguntando “Hola, ¿me llamaste?”

“¿Llamas a CUALQUIER número que aparece en tu buscapersonas?”, Pregunté.

“Claro, podría ser cualquiera llamando desde un teléfono público o lo que sea, así que siempre vuelvo a llamar”, dijo.

Bien.

En ese momento, creo que era PageNet, tenía todo o una buena parte de un prefijo para los buscapersonas digitales. Tenía un marcador de guerra. ¿Estás comenzando a ver las posibilidades aquí?

Un ligero ajuste a mi marcador de guerra (escrito en AppleSoft BASIC … Sé que si fuera genial lo habría hecho en otra cosa, no obtuve mi tarjeta Z80 y el compilador de Borland Pascal hasta más tarde) y pude poner un solo número de teléfono en 1000 buscapersonas digitales con mi módem en aproximadamente 3.5 horas más o menos. Una fracción razonable de esos 1000 eran propiedad de personas que no solo llamaban al número en su buscapersonas, sino que intentaban varias veces durante 2 o 3 días llamar a ese número, que inevitablemente estaría ocupado o descolgado.

Llamé a PageNet como un cliente que veía números desconocidos en mi dispositivo, me dijeron que no hicieron ningún esfuerzo por rastrear las llamadas entrantes de la página, así que se disculparon con un poco de encogimiento de hombros por teléfono. Este fue esencialmente un ataque DDoS impulsado por humanos en un solo número de teléfono, por lo que seguramente la ética de hacer que personas desconocidas hagan mis órdenes es cuestionable, mientras que la legalidad probablemente cae en el cubo de acoso en el mejor de los casos (hoy habría creado una botnet humana , Supongo, y eso definitivamente no es legal ni ético).

Hoy en día concentro mis esfuerzos para bien y no para esas cosas …

Cuando era un joven programador, hace muchos años, practicamos una técnica llamada bebugging , donde deliberadamente introdujimos errores en nuestro código, de modo que, durante las revisiones de código, que ocurrieron formalmente un viernes por la tarde, otros programadores del equipo encontrarían el errores que habíamos introducido deliberadamente en nuestro código.

Gosh! Imagine la sorpresa de uno cuando otro programador encontraría errores distintos a los introducidos por el programador original. Resultó ser un método sorprendentemente ineficaz de revisión por pares. Abandonamos esa metodología poco después de su introducción, y consideramos que no es ético hacerlo: agregar errores al código de producción para atrapar a nuestros compañeros programadores y evitarlos al hacerlo deliberadamente.

Éramos una pequeña tienda de códigos COBOL, donde una parada completa faltante podría causar estragos. Si usted es un programador de COBOL, sabrá a qué me refiero. Éramos bastante competitivos, por lo que nos enorgullecía producir código de calidad de producción: libre de errores, siempre que fuera posible. Una vez tuvimos un régimen, donde uno escribía el código en las hojas de codificación, el escritorio lo revisaba, lo escribía y tenía 5 compilaciones para que funcionara. Según recuerdo, eso no duró demasiado, y se aplicó una actitud más laissez faire cuando la gerencia se dio cuenta de que no era práctico aplicar tales límites arbitrarios.

Hace casi 40 años, pero lo recuerdo como si fuera ayer. Entré en un Jobcentre en Sheffield, giré a la izquierda y vi una tarjeta a la altura de los ojos que preguntaba:

“¿Quieres ser un programador de computadoras?”

No lo sabía, pero lo sabía. Y me ofrecieron uno de los dos lugares de alrededor de 400 solicitantes. Fuimos probados, psicométricos y en actitud, para determinar nuestra aptitud para convertirnos en programadores. Tuvimos dos entrevistas: una para evaluarnos, la segunda para determinar si nuestra intención era seria. Recuerdo hablar de ecuaciones diferenciales parciales en mi segunda entrevista. Aparentemente, les impresionó, porque me ofrecieron una de dos posiciones.

Ah, pero me he alejado de escribir sobre código poco ético. Cuando pienso en ello, nuestros esfuerzos por beber fueron contraproducentes. A menudo encontramos errores en el código que no fueron introducidos por nuestros colegas. Por lo tanto, fue contraproducente en el mejor de los casos, y en el peor, fue malicioso.

Bebiendo – Wikipedia

Soy un jugador, y un tramposo sucio sucio.

Neopets

¿Recuerdas la palabra póker? Mi impaciencia y mis engaños me congelaron. Entonces fue así:

Alguien me presentó una utilidad que permitía descargar y descompilar un archivo SWF. Neopets usa (¿o usó?) Un SWF incrustado que contiene su diccionario de palabras. Descargué esto, saqué los contenidos y los coloqué en una base de datos. Luego creé una consulta que buscaba todas las palabras que podían crearse usando las letras disponibles para mí. Todos y cada uno. Así que utilicé un software que modificó la velocidad del reloj para un proceso específico, congeló la ventana de póker de palabras para que no se me acabara el tiempo, escribí todas las letras en mi utilidad que buscaba en el diccionario y luego descongelé el ventana y escribí todas las palabras que quería.

Pero soy programador. Y los programadores son flojos. E impaciente. Entonces, en lugar de escribir las palabras, decidí que sería mejor hacer que la utilidad genere un script macro que escriba las palabras en sí. Brillante idea, ¿no? Así que generé el script y hice que AutoIt lo ejecutara. Auge. Todas las palabras, cada ronda. Luego tuve que elegir qué categoría de puntuación quería usar para esa ronda y obtuve el máximo de puntos.

Los juegos de Neopets son (¿eran?) Generalmente jugables tres veces al día para neopuntos. Cuando comencé a publicar puntajes altos tres veces al día, y tomé un tiempo mucho más corto de lo normal, los mods de Neopets se dieron cuenta y marcaron mi cuenta. Ups Congelado. Apelé. No funcionó. ¡Adiós mis adorables mascotas! Nunca volví a sentir la necesidad de jugar.

Arenascape

¿Alguien recuerda esta belleza de la gente en el sitio de ayuda de The Original RuneScape? Érase una vez que solo había una cosa que hacer realmente en el juego: matar ratas. Así que lo maté. En piloto automático. Uso de la función de “pestaña de recarga” de Opera. Powerleveleé de la noche a la mañana y me convertí en el mejor jugador. Seguí siendo el mejor jugador hasta que introdujeron especializaciones y no lograron equilibrar adecuadamente. Los francotiradores te matarían antes de que incluso entraras en batalla con ellos. Fue divertido mientras duró.

HoboWars

Mi primer truco de juego colaborativo. Trabajé con mi amigo para hacer un navegador mejorado que refiriera la suplantación y que tuviera una funcionalidad incorporada para aceptar archivos de script de texto para automatizar acciones específicas del juego. Bastante involucrado. Lástima que perdí interés en el juego poco después.

También hicimos un HoboTimer. Este no era poco ético. Después de que su energía se reponga porque ha pasado una cierta cantidad de tiempo, Moo te atacará y levantará un globo de la bandeja del sistema para hacerle saber que su vagabundo necesita su atención. Buenos momentos con vagabundos.

ArmyNation

Utilizando casi el mismo código fuente del navegador anterior, explotamos algunas debilidades en este juego basado en navegador. Había un mapa con eventos “aleatorios” mientras caminaba por él. Pero si anotó los parámetros de la cadena de consulta, puede hacer que crea casi cualquier cosa y hacer que le proporcione el evento que desee.

También había un banco en el juego. Si ingresó un número negativo suficientemente grande para depositar, le daría esa cantidad de dinero disponible. Práctico. 🙂

Guerrillero

Qué pequeño y encantador juego de Facebook. ¡Golpea arbustos! Es tan apasionante como parece.

Además de tu espada de madera, también tenías un hechizo que podrías lanzar que eliminaría todo de la pantalla a la vez. Y ciertas pantallas de mapas tenían pesca. Cuando salías a pescar, lanzabas la línea, y un número predeterminado de segundos después, tu línea se sacudía. Tire hacia arriba y obtendrá un artículo. ¡Qué divertido!

Así que, naturalmente, construí un bot para ello.

Esto fue justo cuando AngularJS estaba ganando popularidad. Toda la comunicación detrás de la película flash se hacía a través de AJAX. Entonces escribí un bot en Angular que iría a pescar, esperaría tantos segundos como el servidor dijera que era necesario y luego enviaría una solicitud para recuperar el artículo. ¡Trabajado como un encanto! Luego hice que fuera a otra pantalla de mapa y golpeé todos los arbustos allí. De nuevo, funcionó muy bien! Luego hice que usara todo mi maná en hechizos tan pronto como se llenara. Viviendo como un rey.

Lo bueno de esto era lo liviano que era. Toda la interfaz estaba muy vacía y se ejecutó en la ventana de mi navegador usando solo JavaScript. Le mencioné a Misko Hevery en Twitter que había implementado algo en muy pocas líneas de código en Angular y me pidió que lo compartiera con él. Rechacé

Menciones honoríficas

  • Fortaleza de Salomón
  • exploté el RNG y volví a cargar la aplicación hasta que obtuve las habilidades que quería
  • desempaquetó los recursos y cambió el costo de maná, el daño, la cantidad de proyectiles, etc. por habilidades
  • TowerMadness
    • en su mayoría igual que el anterior: cambió las clasificaciones de daño para las diferentes torres
  • Helbreath
    • velocidad de reloj modificada a speedhack
  • AdventureQuest
    • Funciones reemplazadas en el video flash para que los monstruos no puedan hacer nada para lastimarme
    • Funciones reemplazadas para hacer que mis ataques maten automáticamente. ¿Porque, porque no?

    Buenos tiempos.

    Este Código me ahorró mucho dinero cuando era niño y siempre visitaba el cibercafé para acceder a Internet.

    “REG agrega HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System / v DisableTaskMgr / t REG_DWORD / d 0 / f”

    Ahora la historia.

    La mayoría de los cibercafés en mi país utilizan el “cliente cibernético” como un software para controlar el tiempo que compra y cuando transcurre la duración, cierra la sesión y muestra una pantalla que se ve así:

    Estos cibercafés deshabilitan su administrador de tareas porque el software se puede eliminar con la ayuda del administrador de tareas.

    Ahora mira lo que hago:

    Compro aproximadamente 10 minutos

    iniciar sesión en su computadora

    Habilite el administrador de tareas usando CMD con el código anterior.

    por último, luego mantengo “Ctrl + Alt + Delete” para abrir el administrador de tareas, deshabilitar el software del cliente cibernético y continuar con mi navegación.

    Nunca fui atrapado ..

    fuente de la imagen: duckduckgo.com

    Cuando era muy joven, mi hermano me pedía que escribiera un código de programa BASIC de ejemplo en nuestro Apple II. Programas muy simples: ninguno más complicado que si (str == “hola”) luego imprima “sí”, de lo contrario imprima “no”.

    Sin embargo, mi hermano tenía una idea, y cambió la secuencia de entrada a uno de estos programas para que tuviera éxito en “bombardear” ciudades. Entonces el programa se ejecutó así:

    > BOMBA WASHINGTON DC
    … WASHINGTON DC BOMBARDEADO.
    > BOMBA KANSAS CITY
    … KANSAS CITY BOMBARDEADO.

    Young yo creía que el programa realmente estaba bombardeando ciudades, al igual que en la película War Games.

    Lloré muchas lágrimas y le rogué que se detuviera mientras él se reía a carcajadas …

    Afortunadamente, el periódico de la mañana siguiente no tenía nada de esto, así que descubrí que no era real.

    Una vez escribí un script .NET en C # …

    Cuando se inicia en un sistema que ejecuta Windows 7, reflejaría el nombre de un proceso crítico.

    Se ejecutó un bucle infinito que decía “Acabas de estar * & + y Ed”.

    Mientras tanto, este programa eliminó varios archivos críticos de arranque de Windows y destruyó el registro.

    Puede apagar su PC para deshacerse de las pantallas emergentes constantes, pero el daño se hizo después de X tics del bucle.

    Probé este programa en una máquina virtual con Windows 7. Quería ver hasta dónde podía llegar. Cuánta potencia le da .NET a un desarrollador para modificar archivos y otras cosas.

    Digamos que mi programa ya no existe, nunca escribí código para difundirlo de forma maliciosa y juré no volver a escribir nada tan destructivo.

    Windows arrancaría en la típica pantalla “¡Repararme!”, Pero no pudo hacer nada en absoluto. Fue tostada.

    Tengo una discapacidad visual (no total) y, como tal, a menudo trabajo con software para personas con baja visión o ceguera. En las PC, estos programas tienden a ser bastante invasivos y se conectan al sistema operativo de maneras muy profundas.

    En mi programa de estudios de posgrado, estaba tomando un curso sobre seguridad de la información. Una tarea que teníamos era desarrollar conceptualmente un posible hack. Se suponía que debíamos describir cómo podríamos explotar algún punto débil en un sistema (la ingeniería social era aceptable, en realidad casi obligatoria, en el plan).

    Una cosa que hay que entender sobre el software de tecnología de asistencia es que gran parte de él tiene una capacidad de secuencias de comandos. Dado que la accesibilidad es un objetivo tan dinámico y las interfaces de usuario, así como las API, cambian constantemente, los programas como los lectores de pantalla exponen entornos de secuencias de comandos para permitir a los usuarios finales, empresas y desarrolladores agregar más funciones de accesibilidad al software y adaptarse a nuevas aplicaciones e interfaces.

    Hablé regularmente con amigos sobre la situación hipotética en la que un guión diseñado para mejorar la accesibilidad introduciría características no deseadas: un típico caballo de Troya. Todos los que había bromeado al respecto simplemente sacudieron la cabeza y dijeron “Bueno, eso sería horrible”. Ahora tenía una tarea de clase para diseñar básicamente una hazaña. Para bien o para mal, las ruedas comenzaron a girar.

    Después de un buen maratón de codificación, obtuve mi “premio”. Una pieza de código que se anunciaba como un complemento de herramienta de accesibilidad de pronóstico del tiempo para un lector de pantalla. Recuperaría datos de varias API y presentaría el clima verbalmente al usuario. El script en sí estaba fuertemente basado en un script de código abierto. Sin embargo, agregué algunas funcionalidades adicionales:

    • Dado que los lectores de pantalla a menudo implican comandos de teclado personalizados (para que una persona ciega pueda usar el teclado en lugar del mouse), los lectores de pantalla enganchan el teclado e interceptan pulsaciones de teclas, buscando secuencias mágicas que ejecutan funciones especiales de salida de voz y funciones de control. Agregué mi propio código para monitorear el teclado y grabar todas las pulsaciones de teclas y registrarlas en un archivo oculto.
    • Dado que el propósito de un lector de pantalla es estar al tanto de lo que sucede en la pantalla, también escribí un código de verificación de estado que podría detectar qué sitio web estaba visitando el usuario en su navegador y en qué campos se habían centrado. Combiné esto con el registrador de teclado para producir una lista limpia de nombres de usuario / contraseñas para varios sitios web. Incluso tomé en cuenta trucos como mover el cursor, usar retroceso / eliminar, etc. Recuerde, un lector de pantalla tiene acceso completo al estado de la IU. Todos esos trucos pueden ser explicados, y lo hice.
    • Los administradores de contraseñas no sirvieron para mejorar la seguridad, porque el lector de pantalla todavía tenía acceso directo a la capa de la interfaz de usuario. Era posible extraer la contraseña mientras un administrador de contraseñas la “tecleaba”, o era posible simplemente extraer los datos del DOM directamente.
    • Solo por si acaso, utilicé una simple llamada a un binario scp para cargar periódicamente las pulsaciones de teclas y contraseñas capturadas a mi cuenta en uno de nuestros servidores de clase.
    • Crédito adicional: agregué un comando de pulsación de tecla para tomar un archivo PDF de Adobe que estaba protegido por DRM / contraseña de cualquier extracción de contenido y exploté las funciones de accesibilidad para producir un archivo no cifrado que contenía el texto. Solo para lanzar más fuego sobre la accesibilidad versus la lucha de seguridad.
    • En mi artículo describí todas las capacidades adicionales que podría haber tenido si me hubiera tomado el tiempo de codificarlas: capturar cualquier documento editado por el usuario en Word, capturar una lista de todos los sitios web visitados y todo el contenido ingresado en ellos, capturando E mensajes de correo electrónico, etc.

    De hecho, “exploté” a uno de mis amigos más cercanos usando el paquete. Ella sucumbió fácilmente a mi ingeniería social muy simple y la instaló en su lector de pantalla. Aproximadamente cinco minutos después, le envié un mensaje instantáneo que contenía su contraseña de correo electrónico y su contraseña para iniciar sesión en nuestro sitio web del curso. (No estaba molesta, porque creo que sabía que estaba tratando de explotarla para probar mi proyecto, y de todas formas podría haber adivinado sus contraseñas porque eran las mismas que había compartido conmigo)

    La parte aterradora de esto fue cuando envié por correo electrónico una lista de correo para discutir mi trabajo, y recibí muchos correos electrónicos privados fuera de la lista rogándome que no lo discutiera más, porque sinceramente las personas con discapacidad ya tienen una batalla cuesta arriba para conseguir empleo; “La tecnología de asistencia presenta agujeros de seguridad” sería solo otra excusa que los empleadores y los departamentos de TI podrían utilizar para mantener a las personas discapacitadas fuera de sus lugares de trabajo. Incluso le pregunté a un defensor legal que conozco que trabaja en estos temas y dijo que sí, de hecho, una empresa podría usar la “inseguridad informática” como una defensa razonable contra un reclamo de discriminación.

    Obtuve una A en el curso no solo por teorizar un exploit sino también por codificarlo y ejecutarlo. Pero mi profesor me advirtió que nunca más distribuiría ese código …

    Hice un virus por accidente …

    Estaba aprendiendo un nuevo idioma llamado ‘smalltalk’. En ese momento, era el primer lenguaje verdaderamente POO (o eso fue lo que me dijeron).

    De todos modos, aprendí cosas y quería probar cosas, así que hice una aplicación para hacer una estrella perfecta de 5 lados. Y lo hice en unas pocas horas. Entonces me aburrí.

    Así que agregué barras deslizantes que cambiaron el tamaño, la rotación y el color de la estrella, lo que tomó aún menos tiempo. Así que decidí meterlo todo en un generador de números aleatorios que también cambiaba las coordenadas x e y del centro de la estrella.

    Lo ejecuté y … Sí, aparecieron estrellas bonitas

    así, pero colores sólidos y estrellas de diferentes tamaños (ah, y el posicionamiento fue aleatorio)

    De todos modos, cerré la pantalla de ejecución y … las estrellas comenzaron a dibujar sobre mi pantalla de código … ¡MIERDA! Minimicé la aplicación de codificación en la que estaba trabajando y luego las estrellas comenzaron a dibujar sobre ventanas. Regresé a la pantalla de mi código y cerré la aplicación, pero una estrella se dibujó sobre el botón de cerrar, así que cambié el tamaño y cerré la ventana … pero las estrellas seguían dibujándolos sobre la pantalla que estaba activa actualmente.

    Sí, hice un virus muy bonito!

    Al final tuve que cerrar mi computadora, abrir la aplicación estrella y luego hacer un botón que constantemente se colocaría en la parte superior de la pila que me permitió cerrar la aplicación sin tener que reiniciar la computadora.

    Editar: OK, algunas personas se molestan un poco por una publicación alegre sobre un tema que podría ser increíblemente oscuro y / o deprimente. Sé que no es realmente un virus, fue más un error. Hay muchas personas a las que les gusta difundir la miseria, ya sea haciendo que el trabajo de otras personas sea más difícil o simplemente robar o algo así. No soy ese tipo de persona y estaba eligiendo “entender mal” la frase “MÁS ilegal o poco ética”

    Somos ingenieros de software; la gente depende de nosotros para poder ayudarlos a hacer su trabajo, es por eso que nos pagan las cantidades que hacemos, no deberíamos estar glorificando el daño que podemos hacer.

    Esto es poco ético, pero hace mucho tiempo trabajé en una base de datos de películas, que permanecerá sin nombre. Si alguien lo menciona, pretendo negarlo todo. Esta base de datos tenía la intención de ser autorizada; De eso se trataba.

    Desafortunadamente, algunos directores, actores, etc., que no hablan inglés, tenían acentos incómodos en sus nombres que no funcionaban bien con nuestro software. Me temo que solía eliminar los más problemáticos.

    Desde entonces, el software ha sido completamente reescrito, probablemente varias veces, afortunadamente, incluido yo. Alguien en ese momento me dijo “no puedes simplemente eliminarlos”. Pero tuve esta frustración xenófoba que me susurró al oído “si alguien está lo suficientemente loco como para tener personajes así de extraños en su nombre, realmente no pueden importarle a un estudioso del cine de habla inglesa”.

    No sé lo que estaba pensando … Tengo suerte de que un director checo de élite no descubriera que estaba ausente de su mejor trabajo en una base de datos supuestamente autorizada y planteó el Infierno.

    En el mismo trabajo, uno de mis colegas descubrió que un comando de la consola de Windows haría aparecer una alerta en mi computadora. Cada vez que alguien miraba mi computadora, aparecía cosas como “Descarga de pornografía de caballos completada” (por alguna razón había una broma corriente en nuestra oficina que decía que tenía una obsesión poco saludable con los caballos, cosa que no hago).

    Un día descubrí que en realidad podía hacer que estas alertas parecieran provenir de un usuario completamente diferente. Por lo general, el usuario que los envió reveló el hecho de que no eran genuinos. Aparecí una alerta en la computadora de este tipo aparentemente del vicepresidente de nuestra compañía, diciéndole que viniera directamente a “mi” oficina, dada la gravedad del delito, cuya naturaleza no expliqué.

    Se puso pálido y se levantó para ir a la oficina del vicepresidente. En ese momento le dije que era yo, y solo una broma. Dijo que pensaba que era divertido, pero sentí que había ido un poco lejos …

    Una vez, cuando era estudiante de posgrado, tenía un sitio web de mi propia creación y un servicio gratuito de contador de visitas. Como soy vanidoso, revisé mucho el mostrador para ver cuántas personas venían a mi página y de dónde. Me di cuenta de que una dirección IP en particular en Ann Arbor, MI (sede del campus principal de la Universidad de Michigan, que tiene un departamento de matemáticas particularmente fuerte) llegó a un orden de magnitud con más frecuencia que cualquier otra. Por supuesto, no tenía forma de averiguar quién era; incluso podría haber sido una computadora pública.

    Pero tenía curiosidad, por lo que busqué las funciones PHP apropiadas y modifiqué mi página para que, para esta dirección IP, mostrara un mensaje que decía algo como “Me di cuenta de que visitas mi sitio a menudo. ¡Quizás tengamos cosas de que hablar! Envíame un correo electrónico.”

    La próxima vez que revisé mi mostrador, descubrí que la dirección había hecho una sola visita, muy corta, y luego nunca regresó. Oh bien.

    Esto es bastante manso según los estándares de la pregunta, pero eso es lo que tengo. Si alguna vez hago algo más apropiado … probablemente no volveré aquí para presumir de ello.