Título: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:33 pm Curso de PERL by Erik
1.Introducci?n Perl es un lenguaje de programaci?n por lotes, viene de C, se ejecuta con las consolas, y se pueden hacer exploits, programas de todo tipo, virus... Un lenguaje de scripting tipo Batch, Shell unix, Python... En este cursillo os ense?are todo lo que teneis que saber para ser unos buenos programadores de perl, desde crear un archivo perl, hasta crear un exploit. Lo primero que vamos a hacer sera descargarnos ActivePerl para windows desde aqui (http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.8.820-MSWin32-x86-274739.msi). Es un enlace directo... O en linux, nos vamos a nuestro gestor de paquetes y lo buscamos. Principalmente el curso esta dise?ado para Windows. Muy bien, procedemos la instalaci?n, y una vez acabada, saltamos al siguiente capitulo. Atenci?n: Derechos reservados por la licencia Creative Commons, prohibida la venta de este manual. (http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png) (http://creativecommons.org/licenses/by-nc-sa/3.0/) Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:33 pm 2.Como iniciar las aplicaciones
Muy bien, en PERL, para poder iniciar las aplicaciones tenemos que abrir la consola, y, alli para poder iniciar una aplicacion en perl tenemos que escribir: Código: perl nombredelaaplicacion.pl 3.Las rutas en CMD Esto, tambien nos servira para las aplicaciones en perl, si un dia, nosotros queremos cambiar de ruta en la que se esta ejecutando, solo tenemos que poner: Código: cd \La ruta que queremos Podemos elegir: Código: cd Código: cd Archivos de programa Código: cd Documents and Settings Código: cd Escritorio Código: cd Favoritos Código: cd Mis documentos Código: cd Desktop Código: cd Home/User Y muchísimos más, pero estos son los más normales. Ahora, tambien podriamos usar md, la funcion de rutas que crea esa ruta que tu deseas, por ejemplo queremos crear la ruta erik, hariamos esto: Código: md erik Ahora queremos crearla en un lugar especifico... Pues cambiamos de dirección con cd a donde queramos colocarla, y luego usamos md. Muy sencillo. Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:33 pm 4.Nuestra primera aplicacion (Hello World)
Primero, siempre que hagamos código perl, pondremos al principio del todo: Código Para informar de que es un código PERL. Ahora, usaremos la funcion print, que es la que imprime una cadena, o un texto plano en MS-DOS: Código
y ejecutamos: Código: perl Hello.pl Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:34 pm 5.Las variables simples
Ahora, aprenderemos algo sobre las variables simples, las variables, como much?simos lenguajes, se almacenan con el $, como vemos aqui: Código
Otra cosa son las comillas, existen de dos maneras, las comillas simples y las comillas dobles, al declarar una variable, da igual si usamos '', que si usamos "". Pero al declarar la variable, si que es importante... No es lo mismo que pongamos: Código
Que si pusieramos: Código
El primero, imprimiria Erik, y el segundo imprimiria $nombre. Comillas dobles son buenas, comillas simples no. A las variables tambien les podriamos agregar otras variables o funciones. Como por ejemplo ahora: Código
O este: Código
Tambien cuando queremos mostrar una variable en print, podemos hacerlo sin poner comillas de ningun tipo: Código
Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:34 pm 6.PRINTF
La funci?n PRINTF la necesitaremos para poder hacer flujos de salida con formato tipo C. Aqui veis las tablas de numeraci?n: %f = Notacion decimal, coma flotante "float" %d = Entero con signo, n? decimal %ld = n? decimal largo %u = n? decimal sin signo %x = hexadecimal %lx = n? hexadecimal largo %X = hexadecimal con mayusculas %o = n? octal %lo = n? octal largo %s = Cadena o string %c = un caracter del codigo ASCII %p = Puntero %e = Notacion cientifica %% = signo de porcentaje Aqui un ejemplo del uso del primero de esta tabla: Código
Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:34 pm 7.Arrays
Los arrays es una forma de recorrer una variable con diferentes numeros, palabras, etc... Y seleccionar el que queramos, uno al azar, o todos a la vez. Cuando definimos un array lo hacemos con la @ delante de todo. Código
Esto mostraria: Erik Para mostrar todos, ponemos: Código
O podriamos hacer selecciones por columnas, por ejemplo: Código
Esto mostraria: Speed Tambien podemos hacer busquedas en un array por caracteres que contenga, por ejemplo: Código
Esto mostraria: Madness Mentor Ahora mostrariamos las palabras del array, seg?n como acabe las palabras: Código
Esto mostraria: Speed Ahora mostraremos como borrar el primer elemento del array: Código
Esto mostraria: Madness Speed Mentor Ahora a?adiremos un elemento al array : Código
Esto mostraria: Perl Erik Madness Speed Mentor Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:35 pm 8.Flujo de entrada
Si queremos que un programa sea interactivo por parte del usuario, y que este programa pueda recoger cierta informacion, usaremos "STanDart INput". Por ejemplo, queremos preguntarle, su nombre y su edad, hariamos algo as?: Código
Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:35 pm 9.Archivos
En esta lecci?n que habran varias sublecciones, veremos como hacer la manipulaci?n de archivos. 9.1.Renombrar archivos Esta funcion es muy facil, seria algo as?: Código
9.2.Abrir archivos Sysopen se parece bastante a la funcion open salvo que es posible cambiar una serie de parametros como los permisos del archivo etc, su sintaxis es: Código Modos de apertura: O_RDONLY : Solo lectura O_WRONLY : Solo escritura O_CREAT : Crea el archivo si no existe O_TRUNC : Trunca el archivo antes de leerlo o escribirlo O_RDWR : Escritura y lectura Para usar varios modos a la vez usaremos pipes "|" Crear un archivo si no existe y escribe en el, por ejemplo: Código
Para cambiar permisos, por defecto les da 666, por ejemplo: Código
M?s sobre archivos en la siguiente leccion. Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:35 pm 9.3.Cerrar archivos
Para cerrar los archivos es una sintaxis, muy, muy sencilla: Código
9.4.Abrir procesos Se abren de una forma parecida a los archivos: Código
Un ejemplo simple: Código
9.5.Cerrar procesos Se cierra igual que los archivos: Código
Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:36 pm 10.Directorios
Ahora veremos un par de funciones que nos serviran con los directorios: 10.1.Abrir y cerrar directorios Usaremos la funcion opendir para abrir y cerrar directorios, de la misma forma que lo haciamos con ficheros. Aqui un ejemplo ofrecido por PAD ;): Código
Cuando queramos cambiar el directorio de donde andamos, solo tenemos que hacer esto: Código
10.2.Gestionar directorios Para ver en que ruta estamos: Usaremos el modulo cwd que viene con la biblioteca estanda de perl con activeperl. Código
Ahora, si queremos crear un directorio, usariamos mkdir: Código
Donde 775 podriamos los permisos del directorio, por defecto seria 775. Y para borrar directorios, lo mismo, pero usando rmdir: Código
Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:36 pm 11.Operadores
+ Suma - Resta * Multiplicacion / Division % Modulacion & AND, a nivel de bits | OR, a nivel de bits && AND, y logico || OR logico , Separador de comas .. Operadore de rango de lista ** Exponenciacion (el valor de la izq se eleva a la potencia de la derecha) =~ Coincidencia de patrones (comprueba si los elementos son verdaderos) ?~ Coincidencia de patrones (comprueba si los elementos son falsos) << >> Operadores de esplazamiento ?and: Operador condicional "juntos" ++ Autoincremento -- Autodecremento _____________________________________________ gt Mayor que lt Menor que eq Igual a le Menor o igual que ge Mayor o igual que ne Distinto a cmp Retorno de comparacion _____________________________________________ > Mayor que < Menor que == Igual a " comparando es distinto a = que es asignacion " <= Menor o igual a >= Mayor o igual a != Distinto a <=> Retorno de comparacion _____________________________________________ \a Pitido \b Retroceso \e Escape \E Acaba con \Q, \L y \U \f Salto de pagina \l El siguiente caracter estara en minuscula \L Todos los siguientes caracteres estaran en mayusculas \n Linea nueva \Q Introduce una barra inversa en trosos los caracteres siguientes no alfanumericos \r Retorno de carro \t Tabulador \u El siguiente caracter estara en mayuscula \U Todos los siguientes caracteres estaran en mayuscula \v Tabulador vertical \007 Caracter de timbre en octal \x07 Caracter de timbre en hexadecimal \cC Ctrl+C Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:36 pm 12.Sistema
En este capitulo aprenderemos a trabajar con el sistema operativo. Primero, vamos a ver como mostrar los datos de la ruta donde andamos. Código
Esto, en mi ordenador imprime Código: El volumen de la unidad C es PRESARIO En el directorio C:\ Ahora, tambien podemos hacer que en vez de salir en la pantalla DOS, salga en un archivo llamado sistema.txt en tu directorio: Código
Ahora, miraremos algunas funciones como Pause :) Código
Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:37 pm 13.Bucles While y For...
Bien, en este capitulo, aprenderemos while y for, sentencias muy usadas, y for, una sentencia que ya hemos visto en el Mail bomber en este mismo subforo. La sintaxis de while es: Código
Por ejemplo, un ejemplo simple de entendimiento rapidito: Código
Ya sabemos como va While, ahora nos vamos con Don For. Aqui vemos la sintaxis de for: Código
Y aqui el ejemplo final de for: Código
Ahora, aparte de lo basico de siempre, os voy a ense?ar un par de tecnicas para el bucle for, aver si os sirve: Como nos saltamos 1 numero: Código
Esto haria que cuando llege al numero cinco, ese numero, no lo imprima y pase directamente del 4 al 6. Y ahora, algo que sirve para joder mucho a la gente en el sentido hack. Un bucle infinito =). Código
Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:37 pm 13.1.Continuaci?n de bucles (IF & Foreach)
IF, es uno de los bucles m?s usados en todos los programas, sirve para que si una condici?n es correcta o incorrecta haga una sentencia. Sintaxis: Código
Aqui un ejemplo: Código
Tambien, existe una forma de a?adir ELSE un bucle que si la primera sentencia es erronea o correcta, exponga otro resultado: Sintaxis: Código
Aqui un ejemplo real: Código
En este ejemplo, devolveria Usuario, porque no es administrador. Y por ultimo Elseif, aqui lo veis. Sintaxis: Código
Y no hace falta un ejemplo, y si lo quereis lo pediis :). FOREACH: Esta sentencia es parecida a FOR, pero esta se utiliza para los arrays: Código
Para hacer un ordenado alfabetico hariamos la sentencia sort: Código
O usar reverse que seria el contraria de sort :). Gracias, aqui acaban los bucles, proxima lecci?n veremos las subrutinas :). Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:37 pm 14.Subrutinas
Las subrutinas es un trozo de código que se puede llamar en cualquier y momento, y que es necesario que este en uso para poder complementar un código perl por funciones. Os lo explicare con mis propias palabras, en un codigo que se puede llamar cuando lo necesites. Aqui la sintaxis: Código
Y para llamarlas usaremos el caracter &, por ejemplo Código
O tambien la podemos llamar mediante el: Código
mi_subrutina(); Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:38 pm 15.Hexadecimal a Binario
En esta lección, aprenderemos como pasar una cifra hexadecimal a binario. Código
Esto pasaria el numero 191 hexadecimal a un numero binario, esto imprimiria:0000000000110001001110010011000100001010 Aqui tenemos un programilla codeado para el cursillo, es un pasador de hexadecimales a binarios: Código
Pero no os olvideis que esto seria descendente, para hacerlo ascendente, solo hace falta poner la funcion B* en minuscula: b* y listo. Código
Aqui le hemos añadido que se pueda elegir B* o b* :). Final de esta lección. Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:38 pm 16.Variables locales y globales
Definici?n de perl.org: Por defecto todas las variables estan definidas de forma global, es decir se puede acceder a ellas desde cualquier punto de un programa, pero es po- sible que queramos que solo afecte a un trozo de codigo, para ello usare- mos la clave "local" que localiza una variable dentro de un trozo de codi- go y "my" que se suele usar mas y es mas recomendable, sirve para decla- rar variables en un trozo de codigo como puede ser una subrutina Código
Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:38 pm 17.Switch
Switch es muy utilizado para crear men?s y poder hacer elecciones: Código
Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:39 pm 18.Begin End & Goto
Podemos hacer que se ejecute algo al principio de todo teniendo prioridad ante los demas, y todo gracias a BEGIN y con END podemos tener el mismo resultado pero en este caso se ejecutara al final. Por ejemplo: Código
Esto si no tubieras el begin y el end mostraria: 2 1 4 3 Pero gracias al begin y end muestra: 1 2 3 4 :) Y luego GOTO, que es una sentencia que lo que hace es ir hacia una parte del código que ya ha sido repetida o que esta en el final, o donde queramos, sintaxis: Código
Esto imprimiria Volvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicioVolvemos al inicio Infinitas de veces hasta que el PCLI se petara (Perl Command Line Interpreter). Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:39 pm 19.Sleep, Ignore & Alarm
Estas tres funciones pertenecen a las funciones denominadas "timer" (denominado por mi ;D). Sleep, lo que hace es parar el proceso el tiempo que desees, por ejemplo: Código
Luego esta ignore, lo que hace es ignorar las alarmas o alguna función, nosotros la pondremos con alarm: Código
y ahora alarm, lo que hace es que si en ese "x" tiempo no haces la funcion te salta. Código
Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:39 pm 20.Encriptaci?n en B64
Primero de todo, tenemos que activar el modulo MIME::Base64: Código
Una vez activado este modulo, podemos ver 2 opciones diferentes, codificar, descodificar. Vamos con la codifiaci?n: Activamos el modulo B64. Código
Ya hemos cifrado la primera b64, ahora veremos como descodificar: Código
Ya esta, recibimos el resultado, ahora, vamos a ver un ejemplo de un sistema que codifique y descodifique, aqui lo vemos: Código
Fin de la lecci?n del modulo B64. Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:40 pm 21.Die
Se que una lecci?n para una sola funci?n es poco, pero ami esta funci?n me parece muy interesante por el solo hecho de avisarte formalmente de un error. Cuando una subrutina o una configuraci?n de modulos, conexi?n etc... no te sale bien, usamos la funci?n die. Die lo que hace es que si la conexi?n no salio bien, salta un mensaje y se acaba el programa. Aqui un ejemplo de die en nuestro programa el mail bomber: Código
Como veis, die declara que no se efectuo la conexion y se acaba el programa. Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:40 pm 22.Conversiones de bases numericas
De hexadecimal a decimal: Código
De octal a decimal: Código
De decimal a ASCII: Código
Y como pusimos en una lección anterior de hexadecimal a binario: Código
EDIT: Ahora me acorde de otra funcion de conversión era ord, para pasar de ASCII a octal y otros... Código
Proxima lección, funciones numericas como RAND, restas, multiplicaciones... Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:40 pm 22.Funciones numericas
Como veis en el titulo, vamos a hablar de este tipo de funciones numericas: - Rand - Rand transformado - Sumas - Restas - Divisiones - Multiplicaciones - Potencias - Raices cuadradas - Valores absolutos - Restos 1.Rand: Lo que la funci?n numerica rand hace es elegir un numero flotante del 0 al numero que quieras. Código
2.Rand transformado: Es lo mismo que antes solo que puedes elegir numeros octales, caracteres ASCII, colocando su referente delante de todo: Código
3.Sumas: Las sumas se efectuan usando el caracter +: Código
4.Restas: Las restas se efectuan usando el caracter -: Código
5.Divisiones: Las divisiones se efectuan usando el caracter /: Código
6.Multiplicaciones: Las multiplicaciones se efectuan usando el caracter *: Código
7.Potencias: Hay dos tipos de efectuar potencias, usando el sistema exp para conseguir la potencia a cualquier numero: Código
Y luego, elevar un numero a una potencia, aqui vemos como se hace: Código
Esto se llamaria 5 a la 2 o 5 al cuadrado. 8.Raices cuadradas: La raiz cuadrada al igual que C se utiliza sqrt, pero en perl no necesitamos la libreria math.h: Código
9.Valor absoluto: El valor absoluto se obtiene usando la funcion abs por ejemplo: Código
10.Como sacar el resto: El resto se obtiene usando el caracter %: Código
Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:41 pm 23.Localtime
Al principio del curso vimos que usabamos la funcion localtime, actualmente, vamos a ense?aros a representarla con las definiciones que querrais, la sintaxis seria algo as?: Código
Como veis, ya indica cada cosa que es, imaginaos que ahora queremos hacer una aplicacion que muestro, hora:minuto:segundo. Código
?t voila! Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:41 pm 24.Variables argumentativa
Las variables argumentativasson las que se consiguen escribiendo como si fuera un metodo get, por ejemplo: Código
Pero claro, para conseguir el resultado de esa variable argumentativa, necesitamos escribir al ejecutar el archivo.pl esto: nombre.pl Erik En este caso seria eso. Pueden a?adirles tantas argumentativas como quieran. Si no ha quedado claro, crean un nuevo tema y preguntais all Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:41 pm 25.Conexi?n a Sockets
A petici?n de rockox, pondre como hacer una conexi?n a sockets y una conexion a una ip, puerto y tcp remoto. Primero, usaremos el modulo Socket. Lo declaramos as?: Código
Y luego, para acceder la conexi?n tenemos que introducir los datos, primero lo haremos por variables argumentativas como vemos en la lecci?n 24 y luego por variables simples usando <STDIN>. Código
Aqui, hariamos algo as?, por ejemplo le llaremos conexion.pl, escribiriamos esto en el cmd: conexion.pl "ip" "puerto" (sin comillas) Y se conectaria a esa ip y puerto. Luego por variables simples: Código
Y listo. En la lecci?n 26, veremos complementaciones a los sockets (scanner de puertos, mail bomber...) Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:42 pm 26.Enviar mensajes a una direcci?n [CHAT]
Bueno, aqui os pondre como poder enviar mensajes a una direcci?n ip para poder contactarte con el, primero yo lo hare local, as?, podremos ver mejor y probarlo y m?s adelante lo haremos remoto. Empezamos con el que envia mensajes: Código
Esto lo que hace es mandar un mensaje a la direccion 127.0.0.1 al puerto 1100 con el protocolo tcp, veremos que hemos usado una variable argumentativa, en la leccion 24 y 25 vemos algun ejemplo, emplearlo ;). Y podremos ver desde un programa como telnet los mensajes que se reciben :). Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:42 pm 27.Anonymous mail
Código
Tiene el mismo c?digo que el mail bomber, pero lo quitamos el bucle for :). Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:42 pm 28.Bomb Mailer
Código
Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 13:42 pm 29.Escaner de puertos
Código
Título: Re: Curso de programación en Perl Publicado por: Erik# en 7 Enero 2009, 21:00 pm 30.Escaner de puertos de X a Y
Código
|