¿Cuál es la cosa más divertida que has codificado?

Hice los botones de cierre de sesión en facebook y gmail invisibles

Viví en un albergue durante cuatro años. A veces, los amigos me prestaban mi computadora portátil y cerraban la sesión en mis cuentas de gmail y facebook para que pudieran revisar la suya. Esto solía pasar muy a menudo. Fue molesto porque si solo quiere revisar sus cuentas, puede hacerlo en una sesión privada de navegación / incógnito. De esta manera el propietario no tendría que volver a iniciar sesión. Así que un día instalé la extensión Stylebot y modifiqué los estilos para mail.google.com y facebook.com.

yo añadí

a.gbqfbb {
pantalla: ninguna;
}

para url = mail.google.com y

#logout_form {
pantalla: ninguna;
}

para url = www.facebook.com

Y el resultado: ¡No hay botón de cierre de sesión en gmail o facebook!

Durante días fue divertido enseñarles sobre el modo de incógnito.

EDIT: OK, por ahora, son 603 votos en mi respuesta y, abrumado por eso, he decidido mencionar algunas de mis bromas.

Messing con start-up en windows

Como algunos de ustedes saben, en Windows, la carpeta ubicada en
%appdata%\Microsoft\Windows\Start Menu\Programs\Startup

es la carpeta de inicio. Solo intente pegar la ruta dada en el cuadro de diálogo Ejecutar y se abrirá.
Entonces, al ser una carpeta de inicio, lo que significa es que si coloca un archivo por lotes en esta carpeta, entonces se ejecutará al inicio.

Un día, Nishchal Chandna y yo decidimos ser creativos. Hicimos un archivo por lotes que

  1. Primero se copia a la carpeta de inicio
  2. Imprime un mensaje espeluznante “SU SISTEMA HA SIDO HACKED” en 100 veces.
  3. Se inicia en una nueva shell cmd.
  4. Reinicia la computadora en 15 segundos. Gracias Nishchal Chandna por recordármelo.

Ahora, si hace doble clic en este archivo, se instala en su computadora y actúa como un super-virus indetectable por la mayoría de los programas antivirus.

No estoy proporcionando el código para esto, así que considere una advertencia para no hacer esto. La única forma de eliminar esto, una vez instalado, es arrancar en vivo en linux y eliminarlo de la carpeta de inicio. Pero si realmente quiere probarlo, considere agregar declaraciones de “pausa” entre el script. También, conviértalo a un exe antes de “envío”.

En otra ocasión , Gaurav Ashok y yo agregamos un archivo por lotes en la carpeta de inicio de un amigo que inició un video porno en vlc media player (vlc tiene una interfaz de línea de comandos). Además de eso, vlc tiene una función que le permite iniciar un video desde una hora específica. Básicamente, le proporcionamos el valor de tiempo de la parte “más ruidosa” IYKWIM;).

El keylogger

Niños, esta es una historia de cuando estaba en mi primer año de universidad. Las únicas personas que tenían computadoras portátiles en el ala eran yo, Shashank Verma y Gaurav Ashok. Otras personas solían consultar sus correos / orkut (sí, la historia es muy antigua), etc. en la sala de computadoras del albergue, el laboratorio de computación general (GCL) o el centro de servicios informáticos (CSC) o, a veces, en nuestras computadoras portátiles.

Ahora, esos días, el límite de proxy era de 100 MB / día, 500 MB / semana. No es que usara mucho, pero siempre quise obtener las contraseñas de proxy de otras personas (nuevas ambiciones encontradas de convertirse en un hacker), especialmente aquellos que se fueron a casa con mucha frecuencia: los locales. Así que instalé un keylogger en mi computadora portátil (y deshabilité el antivirus).

Entonces, un día, Tarang Gupta entra y le pide que le deje revisar su gmail. Después de que terminó, noté que el keylogger estaba encendido y ahora tenía su contraseña de gmail. Así que decido divertirme un poco con ello. Esperé unos días y luego le dije que había pirateado su cuenta de gmail. Dije que su contraseña era tan simple que cualquiera podría hackearla (: P). Él se asusta y de inmediato decide cambiar su contraseña. Y qué coincidencia, volvió a mi habitación para cambiar la contraseña (: D). Así que todavía tenía su contraseña. Después de otro par de días, le dije otra vez. Era hilarante, el pobre hombre estaba tan confundido. Después de eso la gente me temía a mí y a mi computadora portátil por algún tiempo. Sin embargo, no hice nada gracioso en su cuenta (límites, ¿verdad?).

Y tuve éxito en el propósito original de instalar el keylogger. Obtuve el proxy del usuario de Quora que no lo notó por mucho tiempo.

Hace unos 10 años, cuando no tenía absolutamente nada que hacer, he creado un lenguaje de programación de Fish (o FIPL):
FiPL – Lenguaje de programación de peces.

En esta página encontrará un IDE completo con el editor, el compilador y el depurador ejecutándose dentro de un applet de Java, el libro Fish Programming in a nutshell; fishlets : fragmentos del código FIPL que pueden copiarse y ejecutarse directamente en la página, e incluso una extensión del tema, un libro llamado Cómo convertir los peces en una computadora cuántica.

FIPL es un nuevo paradigma de programación. Toda la memoria RAM se encuentra en el dibujo de un pez donde cada escala representa una celda de memoria y varios registros en la cola. Solo puede manipular los colores en este paradigma, no existen números ni caracteres.

Las escalas se pueden organizar en varios grupos: amigos , hordas o todos los peces: todo se explica en el libro (FUPE).

La ejecución avanza en ciclos , donde todas las escalas experimentan algún cambio programado y, en base a eso, suceden varios incidentes . Cada cambio en el color de una escala se considera un incidente , por lo que todo el paradigma se llama Programación incidental . Los incidentes pueden tener consecuencias que comprenden comandos para el siguiente ciclo .

Hay muchos comandos disponibles en el idioma (de nuevo, lea el libro), pero para salir del sistema puede usar gracias por todo el comando fish .

Lo curioso es que realmente puedes hacer algo de programación a este respecto.

Aquí está la mía, experiencia con algunas líneas de shell script en el laboratorio de la universidad. Fue un día normal en el tercer año de Ciencias e Ingeniería de Computación en :: SJCIT. Como de costumbre, tuvimos dos cursos de laboratorio por semestre y los estudiantes se dividieron en 2 lotes: laboratorio de programación del sistema para la mitad de la clase y laboratorio de redes para el resto.

Estaba en el laboratorio de programación del sistema, sentado en la última fila (los monitores estaban orientados hacia nosotros para que pudiéramos ver fácilmente la mayoría de las pantallas). Cuando la clase estaba perdiendo interés, mi amigo y yo decidimos divertirnos poco con las máquinas. Miramos en las pantallas de otros y vimos a un amigo nuestro en Facebook en el laboratorio. Su máquina se convirtió en blanco para que jugáramos. Esa vez nos mantuvimos tranquilos (si no grandes) en redes y scripts de shell. Llegamos a conocer la dirección IP de esa máquina fácilmente.

Nuestros laboratorios universitarios tenían una configuración homogénea, todas las máquinas funcionaban con Fedora Linux. Todos tenían cuenta de “superusuario” (superusuario) para iniciar sesión. Que no Para facilitar el inicio de sesión, el administrador del laboratorio había establecido la misma contraseña para todas las máquinas, igual que la que usé para iniciar sesión.

Decidimos jugar con la máquina de nuestro amigo. Hizo el registro de ssh en su máquina. ps-grepped para el proceso de Firefox en esa máquina y lo mató con SIGKILL! ¡De repente el navegador en el que había abierto Facebook ya no estaba más en su pantalla! Miró a su alrededor con cara desconcertada: “¿Qué pasó?”. Ocultamos nuestra cara con nuestro monitor y nos reímos en silencio. Bueno, después de un tiempo reabrió y repetimos. De alguna manera se dio cuenta de nuestra diversión y nos atrapó. Así que nos dimos por vencidos y nos trasladamos al siguiente.

A continuación, ¡pensamos en reiniciar las máquinas de otros por diversión! No estábamos muy seguros sobre el patrón de asignación de IP a todas las máquinas en el laboratorio. Entonces, lo que hicimos fue hacer una coincidencia exhaustiva en 192.168.1.x; para x en 1 a 254,

En pocos minutos preparamos un guión para
bucle x de 1 a 254,
ping 192.168.1.x, si no está activado, omita y continúe con el siguiente
Inicie sesión en esa máquina y ejecute el comando de reinicio: ‘sudo shutdown -r now’

Probamos esto en una de las máquinas de nuestros amigos cercanas y funcionó. Y luego lo ampliamos para toda la gama de direcciones IP locales.
Pero algo salió mal en el medio, muy pocas máquinas en nuestro laboratorio se estaban reiniciando, aunque el script decía que funcionaba bien con muchas máquinas. Lo volvimos a intentar, pero no hubo mejoría.

Después de la clase, durante la hora del almuerzo, escuché a amigos de otro laboratorio decir que sus máquinas se estaban reiniciando sin ningún indicio. Cuando pregunté más sobre eso, dijeron que tenían una experiencia extraña hoy en el laboratorio, ¡incluso la máquina del proyector que se usaba para la presentación también se reinició! Algunas de las máquinas se reiniciaron varias veces y los amigos que estaban sentados frente a ellas se sintieron irritados. Todas esas cosas tenían sentido para mí: ambos laboratorios estaban en la misma red local y la parte inferior de las direcciones IP se asignó a otro laboratorio. Nuestro bucle invariante fue de bajo a alto. Lo corrimos pocas veces, ¡por eso es que sucedió todo esto!

PD
Quizás haya sentido que fue un trabajo tan torcido reiniciar otras máquinas en el laboratorio. Acepto, lo hicimos solo por diversión! Un año después, me uní a una empresa de nueva creación, allí tuve que coordinar varios nodos en el clúster de hadoop para detener, reiniciar, verificar el estado y algunas veces arrancar máquinas (se utiliza Wake On LAN). La diversión que tuve durante el laboratorio definitivamente me ayudó a escribir mejores guiones e hizo ese trabajo más interesante.

Bueno, la película Social Network llegó en ese momento y yo estaba en 3er año de mi ingeniería.

Estaba fresco en mi mente y lo mejor que me gustó fue el facemash y cómo Zuck programó todo en una sola noche y se volvió viral.
No, no programé mash facial, pero hice algo muy similar, más específico a lo que podría ser viral en mi universidad.

Brain Mash (sí, así es como lo llamé)
Moto: Encuentra al profesor más inteligente de la universidad.

Simple, obtuvo todos los detalles de todos los profesores con sus nombres y la imagen de perfil del sitio web de la universidad (simple wget magic) tomó alrededor de 1 hora. Ten toda la base de datos lista, yo!
Algoritmo de calificación ELO para comparar dos personas, una interfaz de usuario simple para elegir quién crees que es más inteligente o más inteligente. Cuántas veces se han librado batallas entre esos dos y cuántas veces ganaron + batallas totales y el total de victorias y derrotas.

Identificación de correo electrónico y proxy falsos para enviar correo a toda la universidad utilizando diferentes grupos de google y facebook. Alojado en su propia computadora y enviado por correo a todos en la universidad. Salió en vivo a las 9 pm el viernes por la noche después de programar toda la tarde y la noche, con muchos batidos de poha y mango (bueno, este ingeniero es tímido y no toma bebidas fuertes)

Apache se volvió inestable entre (alrededor de la 1 AM) y el servidor se bloqueó, la solicitud total de la página alrededor de 18K (no conozco a los visitantes únicos del sitio web, no lo registré) en esas 4 horas y nadie vino a saber quién hizo eso. Era como, el día en mi vida, siempre recordaré * risa malvada *

Todavía tengo el código conmigo y quería darle vida para siempre a cualquiera que quiera comparar cosas o seres humanos.

No estoy seguro de si fue correcto hacer esto o no, pero lo hizo por diversión y se habló en la universidad durante los próximos días. Por suerte nadie intentó rastrearme, lo que creo que fue muy fácil.

Tengo algunas bromas, no necesariamente una parte de codificación pero cambiando el código, jugando con archivos por lotes, etc.


Un día , mi amigo se jactó de cómo consiguió 6 meses de antivirus Norton genuino y libre de virus con su computadora portátil (más bien que se opone a mis versiones agrietadas, que funcionan tan bien como las de uno auténtico). Y uno solo debe usar versiones genuinas y bla bla bla. Me enojé un poco por esto y decidí enseñarle algo.

Este es algo parecido a lo que hizo Rajat Khandelwal.
Escribí un archivo por lotes y lo puse en su carpeta de inicio (% appdata% \ Microsoft \ Windows \ Start Menu \ Programs \ Startup). Como sabrá, cualquier archivo colocado en la carpeta de inicio se ejecutará durante el arranque.

Hice esto en silencio y salí de su habitación. Cuando regresó un poco más tarde y reinició el sistema, recibió el mensaje “Su NORTON ANTI-VIRUS ha dañado el sistema y debe reiniciarse” y comenzó a reiniciarse en 15 segundos. El sistema se reiniciará, ejecutará mi programa, mostrará el mensaje y se reiniciará de nuevo, como un bucle infinito. Él se sorprendió por completo y usted debería ver su rostro, y todos empezamos a reírnos de él por su anterior alarde.

Esto es lo que hice. Escribí un programa que le mostraría ese mensaje y se reinicia automáticamente en 15 segundos. Di un tiempo de 15 segundos entre el mensaje y el reinicio para poder ir a la carpeta de inicio en ese tiempo y eliminar ese archivo.

Al principio, creé un archivo de extracción automática que lo colocaría en la carpeta de inicio, pero no pude enviarlo por correo (como gmail bloquea archivos .exe) y le pedí que hiciera clic en él a través de un pendrive. sospechoso, así que decidí codificar directamente en su computadora mientras él miraba hacia otro lado y funcionaba

Puede buscar en Google el código de VBScript sobre cómo mostrar el mensaje y hacer que se apague en unos segundos.
Si pone el tiempo a cero, vaya al modo seguro y elimine los contenidos de esa carpeta.


En otro momento , estaba en la habitación de mis amigos y quería ver una canción de video. No pude encontrarlo en su computadora y le pregunté. Se negó a llamarme y me dijo que saliera de la habitación porque ahora lo estoy molestando un poco. Se fue al baño después de gritarme.
Aquí tengo una idea. Rápidamente abrí la línea de comandos e ingresé algunos comandos para ocultar las unidades lógicas y abandoné su habitación en silencio.

Cuando regresó después de un tiempo y lo vio, un disco completo de 280 GB se ha desvanecido y su mente se ha esfumado. Aparentemente, él sabía que era yo y tuvimos una pequeña pelea y, finalmente, tuve que hacer que apareciera nuevamente el disco. Él nunca me permitió tocar su sistema después de eso.

Esto es lo que hice.
Abrió el símbolo del sistema
presiona diskpart
luego liste el volumen
luego selecciona el volumen #
luego remueva la letra #
(tenga cuidado, solo estoy eliminando la letra, si elimina la partición, toda la unidad se habrá ido)

para volver a recuperarlo, simplemente seleccioné el volumen # y le reasigné la letra #.


En un momento , este no es divertido, pero fue útil. Tuve que descargar algunos archivos en Internet, son archivos de 20-30kb y son más de 500 en número. Puede descargarlos simplemente haciendo clic en el hipervínculo. No estaba de humor para hacer 500 clics de ratón. Por suerte para mí, los archivos están en orden secuencial con una numeración creciente. Escribí un programa web (jsp, php y todo) para hacer clic automáticamente en los enlaces. Ha pasado mucho tiempo y ahora no tengo ese archivo y soy un poco perezoso para escribirlo aquí nuevamente.


En otro momento , buscaría las computadoras en mi LAN que no están protegidas por contraseña y las apagaría remotamente con algunos comandos. No codifiqué, solo usé los comandos existentes, dudo que funcionara ahora, más tarde cuando lo intenté, no lo hizo. Apagado remoto o reinicio remoto de una computadora


Esta es divertida … una vez en mi laboratorio de CS, estaba esta chica de la que estaba enamorada. Estaba intentando al azar adivinar su contraseña y, después de algunos intentos, ¡voilá! Lo conseguí Decidí hacer una broma. Escribí un poema de amor divertido con el nombre de mi amiga y lo puse en la carpeta de sus programas reemplazando todos sus programas (aunque hice una copia de seguridad de sus programas en otro lugar). Entonces, cuando ella intenta ejecutar el código, ella vería mi poema como la salida.
Pero en la parte más triste, pensé que era el último laboratorio del semestre, pero me divertiría en el último laboratorio, pero el siguiente laboratorio se canceló debido a algunos bandh y todos nuestros identificadores de inicio de sesión fueron eliminados para el laboratorio final. examen. nunca llegó a ella.


Habría escrito sobre cambiar el html de las páginas y hacer que algunos elementos sean invisibles, pero como ya se ha mencionado, me estoy saltando esas partes.

Presenté 12 páginas A4 en blanco como un proyecto y recibí 100/100 en él.

De vuelta en los días universitarios. 7º semestre. Clase de construcción del compilador. Para demostrar el concepto de Bootstrapping (el acto de escribir un compilador en el lenguaje que se pretende compilar), se nos asigna un proyecto para diseñar un lenguaje de programación minimalista, escribir un compilador para el lenguaje en ese idioma y enviar la fuente Código en forma dura . El proyecto vence un mes después y tiene un gran peso.

Como un procrastinador as, estoy fuera del mes jugando videojuegos y saliendo con amigos. En poco tiempo, es la noche anterior al día de la sumisión. La lógica del sonido dice que el proyecto no pudo completarse de manera realista en el tiempo restante, por lo que voy a dormir bien por la noche. Pero antes de hacerlo tengo una idea. A la mañana siguiente, voy a la tienda de fotocopias del campus a primera hora, compro una docena de hojas A4 en blanco, escribo mi nombre en la primera y lo presento como proyecto. Un viaje a la cabaña del profesor para una explicación más tarde, obtuve un puntaje de 100/100.

¿Pero cómo?

El semestre anterior desarrollé un lenguaje de programación, inspirado en Whitespace, llamado Vague, completo con documentación, ejemplos e instaladores como un proyecto de hobby. La idea es que la sintaxis del lenguaje consta de solo tres caracteres: Tab, Space y Newline, lo que hace que un programa escrito en Vague parezca * invisible *. Eso incluye el propio compilador.

Aunque al principio pensaba que era una especie de error, el profesor quedó lo suficientemente impresionado con el trabajo que me otorgó la máxima puntuación. Gana, gana

Al aire libre
Un programa “max de X enteros” escrito en vago

Al aire libre
Una captura de pantalla de la documentación del idioma.

Cuando estaba aprendiendo a programar en la escuela secundaria, pasaba mucho tiempo en el laboratorio de computación. También era un buen lugar para esconderse durante las asambleas obligatorias, ya que el profesor de computación no parecía rastrear cuándo eran exactamente esos. Además, nunca sospecharía que el inocente hijo de mi madre se saltaba las actividades escolares requeridas. Él y yo nos llevamos bien.

De todos modos, estaba ocupado construyendo un juego parecido al Tetris, así que pasé gran parte de mi tiempo libre (y, uh, no gratis) en el laboratorio.

El profesor de informática comenzó a quejarme de alguien que seguía imprimiendo páginas de … solo cosas. Formas aleatorias y manchas de negro. Docenas de páginas a la vez.

Esto continuó durante semanas, enfureciéndolo cada vez más.

Entonces, un día, cuando la impresora está imprimiendo (otra vez) y estoy en el laboratorio programando (otra vez), el profesor saca un asiento a mi lado y deja caer una gran pila de papeles en mi teclado.

“¿Quieres conversar?” él dice. Él está enojado

Hago una pausa en mi juego y me vuelvo a mirar los papeles. Miro hacia mi pantalla. Miro los papeles.

De esta manera extraña y abstracta, tenían un parecido débil. Un círculo en el papel y un círculo en la pantalla. Pero también hay un montón de otras cosas en la pantalla. Así que no es la pantalla. Y sin embargo … lo es.

Pero ni siquiera sé cómo escribir código para acceder a una impresora.

Como demonios…?

Después de varias repeticiones y mucha depuración, rastreamos el problema. Una pequeña función recursiva que rellena una forma hasta que alcanza un color perimetral. Algo como esto:

De alguna manera, la pila se desbordó y esto causó que accediera a algún otro punto en la memoria … que siempre provocó el mismo y extraño resultado.

A día de hoy, realmente no entiendo cómo sucedió. ¿No es la parte de desbordamiento de la pila, lo obtengo, pero el mismo resultado “aleatorio”?

Moraleja de la historia: ¡cuidado con la recursión!

2 travesuras, una intencional, otra no. Ambas máquinas hechas suben en una pequeña explosión nuclear.

1) Todos (?) Recuerdan la década de 1980, la edad de la Computadora Básica Personal (Commodores, Manzanas, …) Estaban en grandes almacenes de todo el mundo, exhibidos prominentemente con CRT, teclado e intérprete básico. Puede ir directamente a ellos, escribir y ejecutar un programa básico, 10 I = I + 1; IMPRIMIR I; GOTO 10. Eso los ocupó pero no fue realmente interesante. El programa divertido fue: 10 POKE RND () * 65536,0; GOTO 10. El comando POKE, para aquellos que no lo saben, tomó su argumento como una dirección de máquina y almacenó un byte allí; era la forma universal de hacer E / S o acceso a la memoria en máquinas que tenían bromas para los sistemas operativos. RND es una función de número aleatorio. El bucle POKE RND, es un tipo de computadora de ruleta rusa; simplemente clava direcciones aleatorias hasta que llega a algo crítico para el software, y luego la máquina generalmente se descompone con una basura espectacular, a menudo dinámica y colorida en la pantalla. Las máquinas eran lo suficientemente lentas para que pudieras teclear esto, presionar RUN y alejarte; unos 30 segundos más tarde, en promedio, soplarían. Los vendedores miraban hacia arriba, pero no tenían ni idea de qué hacer. Esto fue divertido las primeras diez veces que lo hice. Eventualmente usted crece. Ninguna PC personal resultó herida por esta broma: -}

Esta primera broma fue inspirada por una broma accidental que ocurrió una década antes:

2) APL es un lenguaje famoso y oscuro con caracteres arcanos para operadores, para manipular arreglos. Puede poner a cero una matriz A escribiendo A [] <- 0, sin importar qué tan grande sea. Hay un desastre oculto aquí.

Aprendí APL en un IBM mainframe 360 ​​mod 40 (finales de la década de 1960) en un Junior College local (supongo que vivía en un condado rico). Tenía un intérprete de APL en línea que conducía una sala con 20-30 máquinas de escribir interactivas IBM Selectric que actuaban como terminales de programación de APL; El ruido de las bolas de tipo redondo que giraban como locos para imprimir programas APL hechos de extraños personajes griegos extraños era simplemente asombroso. Esta habitación tenía una vista a través de una ventana de vidrio, a través de un pasillo, a través de otra ventana a la sala de mainframe de IBM. Puede mirar hacia arriba desde su terminal Selectric APL mientras pillaba furiosamente para enumerar su programa, y ​​ver las increíbles luces parpadeantes en el mainframe mientras ejecutaba todos esos programas APL y los muchos trabajos por lotes que tenía, y el operador que a menudo se aburría a muerte. Ah, los días de antaño: -}

El intérprete de APL puso su programa y sus datos en la memoria de la máquina, duh. Nota: durante estos tiempos de las cavernas, ¡la memoria virtual aún no había llegado a los mainframes! A cada matriz se le asignó un espacio, y cuando indexó la matriz, su índice se comparó con el tamaño de la matriz para asegurarse de que no accedió al exterior y, por supuesto, recibió un error si intentó acceder fuera de los límites de la matriz. Entonces, completamente seguro, ¿verdad?

No exactamente. La verificación de los límites de la matriz se implementó como una comparación sin firma de su índice con el tamaño de la matriz de 32 bits. Pero los implementadores se burlaron, y usaron un tamaño de matriz * firmado *. ¿¿Qué?? El hacha está a punto de caer.

APL tenía un operador de matriz-remodelación “rho”, que cambiaría una matriz de dimensiones M a otra de N dimensiones, para arbitrarias M y N. Estaba jugando con esto, e intenté reformular una matriz en 64 dimensiones porque … bueno, porque, el libro decía que 63 era el máximo, y ¿quién puede resistirse a empujar los límites?

¡El intérprete de APL se equivocó y fabricó una matriz con tamaños de eje negativos! Bueno, sí, esto es bastante extraño, y cambié la forma del resultado a una matriz de un solo eje con el tamaño del eje * menos uno *. No tenía idea de lo que esto significaba (en este punto, probablemente tampoco lo tengas), pero los arreglos son para jugar, así que … Lo puse a cero: A [] <- 0, y presioné ENTER. Cámara lenta: el carro terminal se desliza de derecha a izquierda y luego ...

El intérprete decidió que mi matriz de tamaño -1 era realmente de tamaño 0xFFFFFFFF (-1 interpretada como un número positivo: 2 ^ 32-1), y rápidamente puso a cero todo el contenido de la matriz, que incluía toda la memoria del mainframe. (No tenían VM ni claves de almacenamiento para proteger los trabajos o procesos entre sí en ese entonces).

Tres GRANDES sorpresas instantáneas: a) La sala de la terminal se quedó súbitamente en silencio, cuando todos los Selectrics dejaron de funcionar; El silencio era en realidad como un anti-rayo. b) Se apagaron las luces del mainframe. c) El operador miró atónito, y luego todo el infierno se desató en la sala de computación.

No entendí lo que había hecho, así que después de que el operador y el equipo desconcertado pasaran 30 minutos reiniciando el mainframe y haciendo que todo funcionara alegremente de nuevo, volví a hacerlo y lo hice por segunda vez …

Oh mi, mismo efecto.

El operador se veía mucho más molesto esta vez. Menos mal que nadie tenía idea de lo que causó el accidente! Eso me convenció de que no debía intentarlo de nuevo. Me di cuenta de lo que sucedió mucho después del hecho y, finalmente, encontré un informe de error que confirma mi suposición.

Nunca le dije a nadie lo que hice. Oye, yo tenía 17 años, y ¿quién quiere ese tipo de problemas?

Moraleja: es increíble la cantidad de problemas que puedes crear con 10-20 pulsaciones de tecla.

Hay muchos de estos incidentes en mi caso:

Ventilador de techo loco

Durante mi curso de computación gráfica, tuve esta tarea de codificar una escena de aula usando openGL en C. Como quería sobresalir realmente quería incluir mucha profundidad en la escena de aula, aunque el profesor quería una básica. Seguí agregando características mientras los pensamientos seguían apareciendo en mi mente. Entonces, primero agregué bancos para parecerse a los reales como en esta imagen

Me emocioné con el resultado y luego continué para construir los dias, pizarra con bordes biselados. Pero todo parecía quieto, no había movimiento allí. Entonces, decidí agregar un ventilador de techo. Agregué el ventilador y también codifiqué para la rotación, pero como había muy poco tiempo para completar la tarea, no la probé muy bien.

Cuando finalmente fui al aula y ejecuté mi escena en 3D, el fanático estaba girando por todo el aula como locos

(La razón es que no codifiqué el punto de anclaje adecuado para garantizar que gire en lugar de girar).

Codificado Java en estilo de programación procesal.

Durante mi pasantía me pidieron que construyera una aplicación de escritorio con Java Swing. Pero solo conocía la programación en C y eso también solo lo básico. Entonces, comencé a aprender Java, las estructuras de datos y algunos métodos básicos de la API Swing. Finalmente, codifiqué toda la aplicación de trabajo, pero como no tenía idea de la Programación Orientada a Objetos, codifiqué toda la aplicación en un estilo de programación de procedimientos utilizando Java.

Estaba tan orgulloso en ese momento que codifiqué 3k líneas, pero ahora que lo pienso, habría ahorrado casi la mitad de las líneas si hubiera sabido OOP.

Broma:

Cuando mis amigos solían pedirle a mi computadora portátil / computadora de escritorio que iniciara sesión en su cuenta de Facebook, solía cerrar sesión en el mío y editar el campo de contraseña dentro de HTML para type="text" y anularlos ya que ahora muestra la contraseña real a medida que escriben

Ok, me alegro que tal pregunta exista !! 😀
Quería averiguar los temas más seguidos en quora. Por esta razón, hice una pregunta en la plataforma en sí, hace mucho tiempo, lamentablemente, ¡no tengo respuestas! : /
Pregunta: ¿Por qué no publica Quora las API para acceder a la información del perfil del usuario, la indización relacionada con el tema, la información demográfica del usuario? (tomando paralelos de la API de Facebook Graph / Twitter)
Quora utiliza el cifrado HTTPS para su sitio web (como cualquier sitio web con gran tráfico y uno que tenga amenazas de seguridad). (¿Qué es el cifrado HTTPS y por qué no se puede almacenar en caché: es HTTPS sin cifrado?). Al ser un geek de Python, pude codificar rápidamente una solución (que incluía selenio (Selenium with Python)). Puede consultar el código aquí (repositorio de Github): https://github.com/arpitjain099/… . Bueno, fue divertido. 😀
El código en github está un poco desordenado (mi sistema se bloqueó dos veces, por lo que el código en github está roto, última instantánea que tenía en línea). Si alguien está interesado en seguir adelante, avíseme, lo guiará para la fase de inicio.

¿De dónde obtuve la lista? ¿Quiénes son los usuarios más seguidos en Quora? Nuevamente, escribió un analizador utilizando Beautifulsoup (lo llamamos Tortuga porque nos enseñó). Los resultados, asombrosos !! La mayoría de las personas interesadas están interesadas en la filosofía (o campos similares), un resultado que se correlaciona exactamente con la Wikipedia: Cómo llegar a la filosofía y el cerebro de mat kelcey. (Si necesita una salida detallada, por favor, envíeme un mensaje instantáneo, es una lista muy grande para decir lo contrario). De hecho, el mundo es un lugar triste! ¡Todos nosotros necesitamos filosofía en la vida! 😛

Una de las posibles razones por las que este podría ser el caso es que la mayoría de las personas (al menos lo que he observado) han conectado sus cuentas de facebook con quora y como la filosofía (o páginas del género relacionado) es un tema común para ” Me gusta “, quora lo identifica como posibles listas de interés para una persona (Quora tiene otros algoritmos sofisticados también para los intereses de los usuarios, como las preguntas que sigue, las preguntas que responde y otras que no conozco). Continuaré trabajando en esto una vez que finalicen mis colocaciones en diciembre.

¡Bastante filosófico, eh! Todos nosotros buscamos respuestas directa o indirectamente.

EDITAR: Si alguien está interesado en remover sitios web y / o analizar los datos de estos, envíeme un mensaje. ¡La última vez, raspé el sitio web de Wikileaks para procesarlo! ¡Era un trozo de 59GB! 😀 (Sé que las soluciones existen como versiones SQL del sitio web que están abiertas a todos, pero a quienes les gusta trabajar de esa manera). 😛

Esto fue cuando comencé a codificar unos 7 años atrás. En la escuela, tuvimos que hacer este proyecto práctico para el curso, Aplicaciones Informáticas. Pensamos en hacer una solicitud para ¿Quién quiere ser millonario? – Wikipedia / Kaun Banega Crorepati – Wikipedia

Así es como se veía el código:

printf (“Q1. ¿Cuál es la capital de India? \ n”);
printf (“1. Nueva Delhi 2. Kolkata \ n”);
printf (“3. Bombay 4. Bangalore \ n”);
printf (“Ingrese su elección \ n”);
elección int
scanf (“% d”, & elección);
si (opción! = 1) {
printf (“Lo siento mejor suerte la próxima vez. Ganaste Rs. 0”);
devuelve 0;
}
printf (“¡Correcto! Has ganado Rs 1000. Pasemos a la siguiente pregunta”);
printf (“Q2.…”);

Este bloque de 10 líneas se copió y pegó 20 veces para el resto de 20 preguntas y el total de líneas de código fue de alrededor de 200–300, que contenía nada más que código redundante.

Además, el código anterior fue aceptado porque estaba funcionando. 😀

Edit: Si te gusta la programación y tienes que desarrollar esta aplicación, ¿cómo lo harías? Me encantaría saber sobre diferentes enfoques del problema.

Mucha gente ha proporcionado su enfoque que es increíble. Añadiendo algunas restricciones por diversión:

  1. El banco de preguntas debe ser diferente para cada usuario / juego.
  2. La dificultad de las preguntas en el conjunto de preguntas es importante. Por ejemplo, la pregunta más difícil no se debe hacer primero.
  3. El género de las preguntas debe variar para cada usuario. Géneros que van desde entretenimiento, política, deportes, historia, etc. Sería injusto hacer preguntas relacionadas con la política a un usuario que se especializa en política.
  4. Debe haber puntaje asociado con cada pregunta.

¡Este todavía me hace reír!

Al principio de mi carrera trabajé en varias empresas de inicio. Esta historia sucedió en uno de ellos durante mi primera semana allí.

Algunos de los ingenieros de mi equipo me preguntaron si podía ayudarles a solucionar un problema con el código. A medida que comencé a profundizar en el tema, encontré algunas declaraciones anidadas si / else que tenían más de 2 docenas de niveles. ¡Oye, no lo escribí, simplemente lo heredé! 🙂 Rápidamente determiné que el error en el código estaba ocurriendo en algún lugar de ese lío.

No pudimos reproducir el problema en los entornos de desarrollo, prueba o preproducción. El único lugar donde se produjo el error fue en el entorno de producción.

Como ese era el caso, no podíamos adjuntar un depurador al código. No tuvimos tiempo de replicar los datos de producción en un entorno que pudimos depurar. No había ningún mecanismo de registro en el código al que podíamos escribir y no había tiempo para implementar uno.

En general, como probablemente ya pueda decir, el sistema era un desastre gigante y necesitábamos una solución muy rápida. ( Probablemente no sea una sorpresa para usted en este momento que la empresa cerró un mes más tarde ) .

Modifiqué el código y agregué lo que todavía llamo el método de depuración ‘Sleep and Beep’ . Dentro de cada instrucción anidada if / else, agregué código para pausar la ejecución del hilo y hacer que el altavoz de la computadora emita un pitido. En aquel entonces, los servidores todavía tenían altavoces, así que esto era posible.

Luego, bajé al centro de datos, me paré frente al servidor, implementé el código y realicé las acciones en la interfaz de usuario para desencadenar el error. Conté los pitidos, anoté el número y repetí el proceso una vez más para asegurarme de que contaba correctamente. Después de eso, implementé rápidamente la versión anterior del código y regresé a mi estación de trabajo.

Solo me tomó unos minutos resolver el problema una vez que determiné qué instrucción if / else se correlacionaba con el número de pitidos. Cinco minutos después arreglé el error.

Más tarde esa semana revisé el código en el entorno de desarrollo antes de irme a almorzar. Cuando volví del almuerzo, fue gracioso escuchar media docena de estaciones de trabajo de desarrolladores que sonaban. ¡El equipo también se rió mucho de eso!

Donde trabajé en programación científica, la interfaz del usuario fue realmente aburrida y desperdiciaba tiempo: leer un archivo de texto, hacer el análisis y escribir un archivo de texto. In a program I wrote, I wanted some special formatting of the output to clarify the results and to enable tables to be copied and pasted to eg Excel, so it writes the output as a html file. Everybody has Internet Explorer, but my program needs a font with specialized characters, so I included an “installation” program, which installs that font, but which also installs sound bites from 2001 A Space Odyssey in Windows’s Media directory, and pointers to them in appropriate registry entries. Thus, whenever a user views the output from a successful run, his/her computer says in Heywood Floyd’s voice “Congratulations on your discovery, which may well prove to be among the most significant in the history of science.”. If the run fails, viewing the output makes HAL 9000 say “I can see that you’re really upset about this. I honestly think you ought to sit down calmly, take a stress pill, and think things over.”. Of course the program itself, when terminating unsuccessfully, makes HAL say “I’m sorry; I’m afraid I can’t do that.”.

This happened about 3 or 4 years ago. I was at a friend’s hostel, where the friend was bitching about how he couldn’t sleep for 4 days because the other guy in the hostel was playing music too loud, at nights. He had asked the other guy to cut it out, but he kept saying some rude shit.

So he asked me to help him end this menace.

At first boot, I saw he was using Windows XP.

Username: Administrator
Password:

Logged in. He had 2 drives, C:\ and D:\.

Formatted his D:\ drive, where he had stored all his photos, his dreaded music and some important files.

Then since he had no compilers or interpreters installed on his machine, I had to rely on good old batch file script.

opened up a notepad and typed in:

shutdown -s -c “Microsoft Windows(R) Critical Services have stopped responding and the system will be shutdown. Die G*ndu” -a -t 3

And scheduled it to start everytime the system boots up (you can do this with Windows Task Scheduler).

So every 3 seconds after boot, the system would shutdown after displaying the message “Microsoft Windows(R) Critical Services have stopped responding and the system will be shutdown. Die G*ndu”.

The poor guy had no control over anything and had to reinstall his operating system. And the icing on the cake was when he found out all of his D drive and everything on his system was wiped off.

Last I heard about him, he has been searching for the guy who did this to him.

But after what happened to him (and mind you all this happened when my friend and I were drunk), I felt sad. So since then I have decided not to use my knowledge of how computers for destructive purposes.

When I was in high school, I loved to make toy programs and utilities on my trusty TI-83+ graphing calculator . In my junior and senior years, I even ended up writing a multiplayer (via connector cable) graphical Battleship game, as well as a slow and buggy Yahtzee. Suffice it to say I had experience with and affinity for programming the TI-83+.

My higher-level math and science classes developed small cultures centered around application sharing. Usually, the few of us who could write our own would do so and share what we made, but sometimes someone would find something neat online, upload it to his calculator, and spread it to the rest of us.

One day, I found a pretty sketchy feature of one of these apps: starting an arbitrary program whenever the calculator was turned on. After a bit of subversive probing, I learned that nobody else knew that this was possible. This was an opportunity for mischief I just couldn’t pass up.

I started with a program that resembled normal operation as much as possible . This was more difficult than it sounds: I had to create graphics resembling the cursor and popular menus, get the timing right (eg cursor blinking, menu navigation), record and track screen position of input and output, etc.
Then I made one change: a small but meaningful amount of the time, for calculations outputting at least two decimal places, I introduced a random error between 1% and 5% .
In spite of my efforts, it would only fool someone who put his calculator to the most trivial of uses. Anyone who knew what he was doing would likely notice that something was amiss within a day. Fortunately, the great majority of my peers were the former variety.

After I finished the first release-ready version, the next three fools who pestered me for copies of the latest games would also receive a copy of my malicious program and the sketchy app that would start it whenever the calculator was turned on.

¿Los resultados?
Victim #1 had her calculator’s precision set to 2 decimal places by someone else’s (non-malicious program), didn’t know how to change it back to pretty-printing mode, and had resigned to having 2 decimal places for each answer. Within a few days, she got 72 / 3 coming out to 24.96 . She experimented with it a bit, and noticed that, while most of the time the answer was 24, it was sometimes 23.52, 24.96, or some other number that was close to but not quite 24.

She was also clever enough to suspect me immediately.

A confused and uncertain teacher approached me during lunch and said something to the effect of: “I’ve been told that there’s been, like, some kind of… calculator virus ? Or something? Going around? I don’t even know where to begin with this one, but if you have something to do with it, could you, um, knock it off, I guess?”
(I was actually surprised to hear it described as a virus. Somehow, I hadn’t thought of it that way at all.)

So I removed the three copies I had distributed.
I asked for Victim #1’s calculator, and she watched me delete it. I explained how it worked to her, too. She was more amused than angry.
Victims #2 and #3, on the other hand, didn’t appear to know that anything was wrong, and I managed to remove my malicious program surreptitiously. One of them involved sleight of hand and distraction by an attractive female friend. It was pretty fun.
As far as I know, nobody lost points on any graded assignments because of my “virus”.

On Ubuntu I used to use python whenever I needed a calculator. One day, when bored, I wrote the following script that gives me a calculator that sounds like Stephen Hawking. It really just calculates the input and pipes it through espeak , but the text-to-speech sounds quite like Hawking.

If you enter an arithmetical expression, it will calculate it and announce the result. For example, the input 1+1 gives the output 2 , with an aural announcement “1+1 is 2”.

If you type a non-mathematical expression, it just says it right back at you.

I still need to add support for arrow-key navigation (in python with an arrow key you can bring up last times input)

echo “Hello. My name is Stephen Hawking. How may I help?”|espeak 2>/dev/null&
run=true
a=”0″
exith(){
echo “Have a good day.”|espeak 2>/dev/null&
echo “”
salida
}
# trap keyboard interrupt (control-c)
trap exith SIGINT

while $run; hacer
read -p “hawking> ” txt

if [[ $txt == “exit” ]]; entonces
echo “Have a good day.”|espeak 2>/dev/null&
run=false
else

a=$(python -c “ans=$a;print $txt” 2>/dev/null)
if [[ $? == 0 && $txt != $a ]]; entonces
echo “$a”
txt=${txt/”-“/” minus “}
txt=${txt/”/”/” by “}
txt=${txt/”*”/” times “}
echo “$txt is $a”|espeak 2>/dev/null&
else
echo “$txt”|espeak 2>/dev/null&
fi
fi

hecho


I have some similar code as Rajat Khandelwal’s answer to What is the funniest thing you have ever coded? : A self-duplicating Windows batch file is really easy to make and has a wide range of uses for annoying others. (This is also known as a Fork bomb)

In my CS lab, after getting annoyed with using the opcode charts to convert mnemonics into machine code for punching into the 8085 microcontroller, I wrote a tool that would take in mnemonic input and spit out the entire opcode chart. Pretty useful. Of course, my friends wanted to use it too.

The teacher knew I had this and approved of it, especially since I’d written it myself. He also didn’t mind others using it, but he did make it clear that it wouldn’t be allowed in the finals as the board wanted us to use opcode charts. Note that this wouldn’t have been a problem with me, I was already quite fast with the charts and writing the actual program had never been an issue.

Now, my classmates would pester me for the script. I gave it over to the sincere ones without much thought — these guys wouldn’t need more practice with the charts and were smart enough not to overuse it. There were also some rather insincere guys who wanted it. One in particular: he used to copy the codes from others and hadn’t studied at all.

I decided to have some fun. Note that our CS labs were quite informal, we were a small group and had to finish a small set of codes, after which we would just chat. Missing the deadline in one lab wasn’t a cause for any concern.

I had finished my work long ago. This guy asks me for the opcode generator. Instead of sharing the Web link (he didn’t know it existed), I told him that I’d put it on the local network. I quickly created a file, opcode.bat , with some self-duplicating code (spawn itself as a separate process with start and subsequently run itself), and put it on the network. I also added some code so that Task Manager would be killed whenever it was opened (using taskkill /IM if I recall correctly).

I also told the teacher what I was going to do. He was amused by the idea and didn’t mind. Again, if a student wasn’t able to finish his work in a lab it wasn’t anything to worry about.

He ran it, flooding his computer screen with terminal windows. At the time I was the go-to guy for computer problems, even during labs (where I usually would be empty-handed after finishing the assignment). So he called me over. I first restarted the computer (XP, not Windows 8, so there is a significant startup time), and told him to call me back when it was completely booted. I said that this was some virus that needed to be cleaned, otherwise it would repeat.

So he called me back. I made a show of running stuff in the terminal ( rem is incredibly useful for this!). After 10-20 seconds of this, I just cd’d to the desktop and ran the batch file. Obviously killing his computer for the second time. I told him to try and get it with Task Manager (which was really hard because Task Manager would exit in a fraction of a second and killing a bajillion-and-counting processes with Task Manager is unwieldy anyway). He gave up after a point, and I told him to restart. (In the meantime I, my friend, and the teacher were enjoying the show. The rest of the class was also catching on).

This happened thrice more. I told him that I need to be quick otherwise it would respawn. After that, he got suspicious, and didn’t let me at the terminal after the restart. Of course it worked fine; fork bombs don’t persist after a restart unless you have a malicious teenager (or, for that matter, msconfig ) respawning them. So he had caught on to my trick. Took a while, though.

There was still some entertainment to be had. The batch file was still on his desktop. And we only used the computers for browsing (if we were bored after finishing the lab) or for using my opcode generator. He was still working on paper, and nothing was open on the computer. I slipped over and quickly clicked on the desktop icon. So he restarted it again, paying close attention to the screen. He didn’t need to; it didn’t really matter when the computer would finish booting as he wouldn’t need it for a while. But he seemed to care about it (if he just calmly went back to his work it wouldn’t have mattered), so, after it finished, I did it again. After this he hid the mouse in his pocket and was more wary of me. I still managed to get one more spawn-restart cycle by running it from the keyboard. Then I stopped — by then we were all laughing (including him — he had enjoyed the break from the lab work and so had the rest of us)

Note: On rereading this it sounds like a case of bullying. It isn’t; we were quite friendly and this was meant as a prank that would (eventually, if not at first) cause amusement for all. AFAIK he saw it that way too.

I learned to program on a Commodore PET in 6th grade. By reading books and magazines and stealing whatever time I could steal away from classwork and classmates to sit in front of the one computer in the room.

I wrote three game programs (that I remember) that year. A simple “horse race” game wherein you could bet on “horses” that moved across the screen at different random speeds. A simple blackjack game. And a Pac-man clone.

The problem with the latter was that I understood how to write to the screen memory (poke), but I didn’t understand how to read from it (peek). And for whatever reason (probably because I was 11) I somehow couldn’t figure out how to keep the ghosts from “eating” the dots along with the player. So to solve that problem I simply stopped displaying the ghosts on the screen. That made sense to me–shouldn’t ghosts be invisible?

That was my first experience with “document it and call it a feature”. Or at least something close to that.

Of course, right after the school year ended and I didn’t have access to the PET, I discovered PEEK.

I made a ‘Scary’ Freshers Invitation Card for Juniors using VBScript.

We seniors wanted to create some kind of invitation for our juniors to invite then to a freshers party that we had planned. So, my classmates were discussing about ideas for the same on the class whatsapp group. And actually we guys were running out of time. I usually am pretty inactive on that group or in college activities but that night I was a bit horny (I mean geek wala, was hungry to code something nice :p). I got an idea and I knew it can actually be executed in no time. I quickly created this VBS file (it took me 5 minutes) and proposed this idea which was eventually put into execution.

So, here is how we finally did the whole thing –

We people asked the CR (Class Representative) of the junior year to send this file to every junior (via Google Group) telling them this is some new super important assignment from the department (which was CSE by the way).

So, they saw the email and downloaded the attachment named assignment.vbs
(I was sure most of them will be unfamiliar with this new .vbs file extension :p)

Which they opened to see this…

This ‘Segmentation Fault, Core Dumped’ is some popular and dreaded C programming language error in our CSE Labs that often frustrates and annoys most newbies. They clicked ‘OK’ to see what happens next and…

and here comes some help…

again no option other than to press ‘OK’…

and here comes our invitation message…

and finally another message, this time with a smiley to cool them down :p

PD:
Yes the panic messages were a bit silly and this VBS could have been made much better by better logic and messages but that required more time and planning.

However to my surprise, later I got to know that a lot of juniors actually liked and appreciated it. And this is how we proved them their seniors are nerds!

Back around 1980 I wrote the code for the chess and checkers cartridges that were available when the Radio Shack Color Computer came out. The work was done on a Motorola development platform with a large wire wrapped prototype of the eventual custom chips on the production board.

Early in the code I placed a copyright message with my name which was displayed while the program loaded. In a comment beside the line in the source code that displayed the message was the comment: Altering this message will result in the program playing incorrectly .

The code was delivered and burned into a few hundred thousand cartridges. Todo estuvo bien.

It was several years later that I got a call from the VP of Engineering at Radio Shack. They needed a few bytes to make a change of some sort and there were no bytes left in the limited memory in the cartridge. They could modify the copyright message to save a few bytes and that would work, but they were afraid of the problems it would cause if the game did not play correctly after the modification. Apparently a team of engineers had been working for a week to figure out where in the program the message was checked, and been unable to find it. They had even played some games and were unable to find any flaws created by their changes. Could I help them? Would I mind an abbreviated copyright message?

They should have called sooner. Despite the warning message, there was no code checking for changes in the message.

Just a little security theater.

I got a good chuckle out of picturing them going through all that assembly language looking for the pointers to that message.

I made a cartoon about the librarian of my school, and prevented anyone from deleting it

When I was in high school, we loved our librarian. He was a (too) nice guy that we called Moustache, for a reason I don’t have to explain. With my friends, we imagined a whole silly story around that guy: the myth that, someday, he would shave, and we would call that the Resurrection. (We actually made one of our friends believe that resurrection is a synonym of shave)

This story was so hilarious and inspiring to us that I made a 3-minute cartoon called “MousPark” (you can guess what my reference was). And I decided to install this cartoon on every of the 3 computers we had in the library, for every student — and Moustache — to see. The library started to gain a lot of popularity, as many student would come to watch this funny cartoon about the familiar High School.

But, at some point, the cartoon was systematically deleted from the computers.

The cartoon was a Flash animation, compiled as a Windows binary (.EXE file), that I would copy on the computers’ desktop. I figured that, while the .EXE file was running, the system would prevent users from deleting it. So I created another .EXE file on the desktop that would:
– start MousPark, on click (which was hidden somewhere in the hard-disk);
– run at Windows’ startup, with a specific argument so that it would just sit in memory without doing anything;
– and re-run this silent process whenever a user would try to kill it.

After I has successfully installed this small hack, the technical staff did not find another way than re-installing Windows from scratch, on all computers of the library, in order to get rid of that cartoon!