(http://techpepper.org/wp-content/uploads/2014/06/lenguajesDeProgramacion.jpg)
#1 | Un poco de programación.
Índice1. Algoritmos 2.1 Componentes del diagrama de flujo1.1 Estructura del Algoritmo 2.2 Aplicación1.2 Variables 3. Lenguajes de Programación1.3 Operadores Aritméticos, Lógicos y Relacionales 3.1 Interpretados
Todo buen hacker debe tener, por lo menos, algunos conocimientos de programación. De lo contrario, no se le valorará más que como un
script kiddie, incapaz de crear sus propios escáneres y encontrar sus propios exploits. Debemos ser conscientes de que los métodos aplicados para la seguridad no cesan de evolucionar, y que se hace cada vez más difícil encontrar buenas herramientas en Internet. Nuestro propósito no es el de transformarte en un experto en programación, sino el de enseñar las técnicas y lenguajes de programación más utilizados, para que puedas adaptar tus proyectos a cualquier situación. Este tema abordará por encima cuestiones como los
algoritmos, y hará una introducción a los lenguajes de programación más utilizados.
1. AlgoritmosEl algoritmo se puede definir de diversas formas. Se puede entender como una
receta genérica, que puede utilizarse en la creación de cualquier programa, en
cualquier lenguaje. Cuenta con una serie de operaciones elementales que deben estar interrelacionadas. Estudiaremos aquí, pues, la estructura básica de los algoritmos, así como sus componentes y organización.
1.1 Estructura del AlgoritmoLos algoritmos presentan una estructura básica, con el fin de que no haya confusión en caso de que sea necesario cambiar algo:
Citar
Algoritmo – Nombre del algoritmo creado
Variable – Área para la declaración de las variables
Procedimientos – Declaración de los procedimientos utilizados
Funciones – Declaración de las funciones utilizadas
Inicio – Cuerpo del Algoritmo
Fin – Conclusión del algoritmo
1.2 VariablesSon las unidades de almacenamiento de información para un algoritmo. Existen diversos formatos, especialmente concebidos para funciones específicas:
Citar
Entero: cualquier número entero, negativo, nulo o positivo.
Real: cualquier número real, negativo, nulo o positivo.
Carácter: cualquier conjunto de caracteres alfanuméricos.
Lógico: tipo especial de variable que almacena sólo los valores V y F, donde
V representa VERDADERO, y F, FALSO.
Las variables tienen que ser declaradas en el inicio, para que los programas puedan interpretarlas. Para ese fin vamos a utilizar la siguiente notación:
nombre : formato.1.3 Operadores Aritméticos, Lógicos y Relacionales.Durante la ejecución de un programa, los valores de muchas variables se van a ir modificando, en función de los operadores:
Citar
Aritméticos
+ = Suma
- = Resta
* = Multiplicación
/ = División
Cociente = Cociente de división de enteros
Resto = Resto de división de enteros
EXP(a,b) = Potencia ab
Operadores relacionales
= - igual
1 - diferente
< - menor
> - mayor
£ - menor o igual
3 - mayor o igual
Operadores lógicos
y – y lógico, o conjunción
o – o lógico, o disyunción
no – negación
1.4 Comandos de entrada y salida y de control de flujo Entrada y Salida.Son los comandos responsables de transmitir la información entre la máquina y los medios externos, como impresoras y monitores, y presentan la siguiente estructura:
Citar
– Entrada de datos
Lee (variable1, variable2...)
– Salida de datos
Imprime (variable1, variable2...)
Control de flujo
Son los pasos que se deben seguir para solucionar los problemas planteados
por el programador. Los comandos de control de flujo se organizan de la siguiente manera: secuencia, selección y repetición.
Secuencia – Son ejecutados exactamente en el orden descrito por el programador.
Inicio
Comando 1
...
Comando n
Fin
Selección– Son utilizados en la toma de decisiones, una vez creadas las condiciones.
Si (Expresión Lógica)
Entonces hacer Instrucción 1
Repetición – Utilizados para repetir un conjunto de acciones
Mientras (Expresión Lógica) hacer Instrucción
Para valor inicial hasta valor final hacer Instrucción
Repita
Instrucción
Hasta (Expresión Lógica)
1.5 Proyección de un Algoritmo.Un algoritmo surge a partir de un problema. Debemos analizar el problema, y crear una situación en la que la solución sea posible de forma lógica. Partamos de una situación frecuente, como el cambio de un neumático pinchado.
Cambiando el neumático:Si el neumático estuviera pinchado, entonces hacer:
– Abrir el maletero
– Sacar la rueda de repuesto
– Sacar las herramientas
– Aflojar las tuercas con la llave
– Levantar el coche
– Sacar las tuercas
– Cambiar la rueda
– Apretar las tuercas
– Guardar las herramientas y la rueda sustituida
1.6 Consideraciones sobre los Algoritmos.Los algoritmos pueden estructurarse de diversas formas. Esto depende básicamente de la experiencia de cada cual. El ejemplo anterior del cambio de un neumático podría escribirse de diversas formas, pero manteniendo el
mismo enfoque inicial. Otro factor importante que influye en su creación es el
patrón impuesto por las empresas, ya que cada una tiene sus métodos para el manejo de la documentación. Al hacker siempre le resultaría interesante descubrir estos métodos, ya que pueden proporcionarle una
valiosa información. Concluimos aquí nuestra sección sobre algoritmos. Obviamente, el tema desborda estás líneas, pero hemos decidido tratar el tema superficialmente para no apartarnos del propósito central del libro, que es el universo hacker.
2. Diafragmas de Flujo.Básicamente, el
diagrama de flujo es la
representación gráfica de un algoritmo, utilizada para la comprensión del control del flujo. Tiene varios elementos que representan, desde la una de datos, hasta las acciones que serán
ejecutadas. Es una herramienta indispensable para la
visualización de procesos, como veremos a continuación.
2. Componentes del diafragmas de Flujo.El diagrama de flujo se integra por varios elementos, y cada uno de ellos representa una función dentro del algoritmo. Aquí sólo abordaremos la
simbología básica:
La utilización del diagrama de flujo nos permite comprender cuáles serán los
caminos que
seguirá el programa, dependiendo de las condiciones impuestas por quien lo ha concebido. Su visualización permite la
corrección de errores, así como mostrar los medios de
optimización del programa. A continuación veremos el diagrama de flujo del siguiente problema:
Seleccione un número y muestre la palabra
"OK" si este número es superior a 10.3. Lenguajes de Programación.La existencia de diversos lenguajes de programación no es ninguna novedad para los hackers. El
problema está en
seleccionar uno de ellos, dependiendo de lo que quieras hacer. A pesar de las semejanzas en su desarrollo, algunos poseen recursos propios, como una mejor adaptación para determinado tipo de entorno, o rutinas más apropiadas para el programador. La plataforma más utilizada para la producción de los programas utilizados por los hackers es
Unix, ya que su eficiencia, y la posibilidad de contar con más recursos la hacen perfecta para la ejecución de los programas más variopintos. Ciertos lenguajes, como
PHP y
Perl, eran exclusivos de
Unix, pero con el tiempo Windows también
ha ganado espacio y han aparecido herramientas que permiten el desarrollo de esos lenguajes, en ese ambiente. A continuación estudiaremos algunos de los más populares lenguajes de programación, clasificados en compilados o interpretados.
La principal diferencia entre ambos tipos consiste en que, con el primero, hace falta la utilización de un compilador para que el ordenador sea capaz de ejecutar las tareas deseadas, mientras que el segundo puede ser escrito en un archivo de texto común (
script), ya que su interpretación no requiere ningún tipo de traducción intermedia para que la máquina lo entienda (por eso son ideales para dar tus primeros pasos en el mundo del
código fuente).
3.1 Interpretados.Lenguajes interpretados son los que no necesitan ser compilados, pues son interpretados directamente como fueron escritos.
Manual #1 | Un poco de programación.
Este es el primer manual sobre esto, bien completo, pronto subiré Manual #2 Con más información y prácticas sobre programación.