¿Cuál es el mejor lenguaje de programación para aprender a hackear? ¿Cuáles son algunos libros para principiantes?

Gracias por A2A.

No soy un hacker Soy un seguidor de hackear cosas.
Una cosa que debes entender sobre el pirateo es que el lenguaje de programación es independiente de él. Es decir, no hay nada como “aprende este idioma, serás hacker”.

  1. La piratería se trata de entender “¿cómo funcionan las cosas?”
  2. Una vez que lo sabe, sabe que un sistema / subsistema en particular está funcionando. Puedes pensar en preguntas “¿Qué pasaría si? “.
  3. Al hacerlo, puede encontrar algún agujero de bucle en ese sistema. Puedes arreglarlo o manipularlo.

Por ej. Esto sucedió hace mucho tiempo.

ping ” (escriba “ping http://www.google.com” en la línea de comandos) se basa en mensajes ICMP para verificar si el otro nodo (PC generalmente) está en la red y es accesible. [Comprensión]

Alguien pensó, ¿qué pasaría si creo muchos hilos / procesos en pocas PC más, lo que hace que un sistema en particular diga “www.yahoo.com”? Ese servidor estará ocupado respondiendo solicitudes y, por lo tanto, reduciendo su velocidad para hacer otras cosas. Este experimento fue lo suficientemente poderoso como para derribar el servidor. [Preguntando “¿Qué pasa si?”]
Nota: ahora este problema está solucionado.

Hay muchos casos como este. Recientemente hubo un error en el algoritmo de cifrado openSSL que se vio comprometido. Te sugiero que leas blogs de piratería.

Olvídate del software por un momento.
Los hackers son contratados para resolver muchos problemas del mundo real. Como luchar contra la malaria. ¿Sorprendido?
El grupo de hackers encontró una solución maravillosa que tiene como objetivo romper el “ciclo de vida” de los mosquitos, lo que ayuda a prevenir la malaria en primer lugar. Mira a continuación la interesante charla TED.

En cuanto a la elección del idioma para la piratería, los idiomas que admiten secuencias de comandos se utilizan principalmente porque uno no tiene que reinventar la rueda. Los lenguajes como Python, Perl, etc. tienen una gran oferta de bibliotecas que facilitan las cosas.
Herramientas que analizan la captura de datos o paquetes (redes) etc. para comprender cómo funcionan las cosas.

¡Gracias por leer!

La pregunta original era “¿Cuál es el mejor lenguaje de programación para principiantes?” La respuesta que di fue para esa pregunta. Cuando vi que la pregunta había cambiado a un tema no relacionado, pensé en eliminar mi respuesta. Dejé la respuesta aquí por 2 razones.

  1. Creo que la respuesta original a continuación es relevante para la pregunta original. Lo dejé aquí por esa razón.
  2. Discutir piratería.

Hackear

Hackear una computadora o recurso informático al que no tiene permiso natural o autorizado para acceder en los Estados Unidos es un delito federal bajo la Ley de Fraude y Abuso de Computadoras. No debemos alentar a las personas a ser piratas informáticos solo por este hecho. Podríamos causar indirectamente que alguien pierda sus privilegios sociales y su libertad. Ninguna cantidad de retorcimientos de manos o disculpas después del hecho lo deshará.

Se debe alentar la piratería profesional. Los programas Bug Bounty son buenos incentivos que conducen a mejores sistemas. Necesitamos personas que rompan los sistemas para sanar esos sistemas para que los problemas puedan abordarse antes de que se vuelvan más catastróficos. Los hackers en este escenario son héroes.

Al mismo tiempo, no estoy de acuerdo con el CFAA. Revocaría la mayoría si no todo. Hasta que eso suceda, debemos observarlo.

Creo que piratear es una actividad legítima, pero lo veo como una actividad de nicho. No es algo en lo que normalmente quieras enfocarte. La razón es que desea definir un software de calidad y un enfoque demasiado orientado a la piratería va en contra de eso. La piratería es a menudo mala para el software de calidad fuera del control de calidad y las pruebas, ya que no tiene en cuenta la mantenibilidad, la estructura rigurosa, el código limpio y las prácticas que permiten que el software iniciado por una persona se convierta en una solución en la que pueden trabajar equipos enteros.

Su inclinación por la piratería depende de su nivel de preferencia, tolerancia para el orden frente al caos. Enfatizo el orden y, por lo tanto, la piratería es poco atractiva en mi experiencia. A menudo, se esfuerza por definir un software que sea sostenible. La piratería generalmente conduce a reescrituras de software frecuentes, masivas y tediosas . Tiempo que quizás no tenga y tiempo que de otro modo podría haber aplicado de manera más productiva.

Luego, hackea donde intentas penetrar en un sistema frente a piratear cuando estás procesando código para encontrar una solución. El primer tipo del que hablé con respecto a la piratería profesional y los beneficios para la calidad del software. También puede incorporar esto en la etapa de control de calidad al probar un sistema.

El segundo tipo que desea evitar la mayoría de las veces a menos que esté examinando deliberadamente una API para detectar fallas. Muchas veces, sin darse cuenta, descubrirá fallas en una API cuando la documentación tiene letra pequeña. Por lo general, la letra pequeña no está en el sitio web del productor de API, sino en StackOverflow. Cuando lees esta letra pequeña, ya has probado varias variaciones.

En el mundo real, aparte de las excepciones que mencioné anteriormente, la piratería rara vez es útil en la definición e implementación de software estructurado. Es cierto que el software rara vez se realiza con requisitos, planificación, herramientas, conocimiento o ejecución perfectos en el mundo real. Sin embargo, entre el software planificado basado en procesos frente al software basado únicamente en hacks y resultados, el enfoque basado en procesos es generalmente el mejor camino a seguir. Algunas situaciones comerciales requieren que el hacker estereotípico tenga un enfoque de las cosas. Le conviene tener esa capacidad para acelerar un proyecto, resolver errores de detención de programas o cambiar la dirección de una solución con poca antelación cuando una empresa necesita que lo haga. No hacerlo a veces puede crear más daños en forma de negocios perdidos evitables. En esa situación, la capacidad de comprimir el proceso y aplicar técnicas de muchas maneras diferentes puede resultar muy útil.

____________________ respuesta original:

Cada lenguaje de programación importante tiene muchas personas que lo han aprendido por primera vez. Cualquiera que pase suficiente tiempo en los foros aprenderá sobre las personas cuyo primer idioma fue uno de los idiomas que quizás conozcas. Eso significa que ningún lenguaje es el mejor para aprender a programar porque un lenguaje no puede impartir aptitudes para la habilidad. Utilizo el término mejor para referirme a que un lenguaje te garantizará aprender programación. Hay buenas noticias

Aprendiendo a programar rápidamente

Dan Bricklin escribió un artículo, ¿Por qué Johnny no puede programar? Olvida el título del artículo. No es despectivo ni insultante, sino un humor irreal. Él presenta un buen caso para una idea clave en la programación de aprendizaje. Al menos mi conclusión es que una persona aprende a programar más fácilmente cuando tiene comentarios continuos. Eso significa escribir código e inmediatamente ver el resultado de ese código.

Apple tiene un sistema como ese en Xcode. Microsoft tiene algunas cosas que funcionan de esa manera en Microsoft Visual Studio. Algunas herramientas de Python y JavaScript también lo hacen. El ganador de todos los tiempos en esa categoría puede ser Microsoft Excel con Visual Basic para Aplicaciones. Retroalimentación continua e inmediata .

Herramienta de programación / Medio ambiente hace la diferencia real

Una determinada clase de idiomas no proporcionará y no proporcionará ese ciclo de retroalimentación. No están diseñados para darle retroalimentación inmediata. Piensa, diseña, escribe, compila, prueba y comienza de nuevo a pensar. Eso genera un buen rigor mental, pero no es para todos. Demasiado lento para algunos y puede desanimar a otros al principio.

El punto clave es que no es el lenguaje sino el entorno . Necesita el entorno adecuado para su estilo de aprendizaje para aprender a programar. Las herramientas interactivas como las de Apple y Microsoft lo acelerarán. Esas herramientas son entornos para la iteración rápida de código. Si bien no garantizan que se convierta en un ingeniero de software, es posible que rápidamente lo dominen al escribir código.

Universidad de Middlesex, Reino Unido

El Departamento de Informática de la Universidad de Middlesex, Reino Unido, hizo un trabajo fabuloso al describir quién aprende este proceso y quién no. Un documento pdf de 21 páginas titulado, El camello tiene dos jorobas, tiene todos los detalles. Jeff Atwood, uno de los cofundadores de StackOverflow, escribió un resumen de esta encuesta. Describe bien la encuesta en Separación de ovejas de programación de cabras no programadas. El título del artículo es sensacional, pero los contenidos son útiles para aprender cómo las personas aprenden a escribir código.

¿Qué dice la encuesta? Básicamente, el mayor obstáculo para aprender a programar (y agregaré perder el enfoque incluso cuando tienes experiencia) es darle personalidad a la máquina y al código. Suena extraño, pero eso es lo que sucede. Cuando no acepta la computadora como una máquina y el código como un elemento en relación con esa máquina, entonces tiene peores resultados con la programación.

Conclusión

El mejor camino para programar es aprender la máquina, aprender abstracciones y procesos empíricos. Se puede obtener una ruta de acceso directo a través de entornos de programación interactivos que le brindan comentarios en tiempo real. Es por eso que los lenguajes de scripting tienen el uso más alto, solo superados por los entornos WYSIWYG. Sin embargo, el atajo no es sostenible y eventualmente regresas a la ruta más recomendada.