Jump to content

[Guia] : Iniciando en Ruby


Doddy
 Share

Recommended Posts

[Guia] : Iniciando en Ruby

[Autor] : Doddy Hackman

 

 

-- == Indice == --

 

0x00 : Presentacion

0x01 : Que es Ruby

0x02 : Como cargar un script

0x03 : Tipos de Variables

0x04 : El poder de print

0x05 : Variables argumentales

0x06 : Manejo de array

0x07 : Concatenacion

0x08 : Comentarios

0x09 : Entradas de teclado

0x10 : Tipos de condiciones y rescates de codigo

0x11 : Uso de split

0x12 : Uso de funciones

0x13 : Listar directorios y manejo de archivos

0x14 : Uso de sockets

0x15 : Interactuar con la web y expresiones regulares

0x16 : Descarga de archivos

0x17 : Creando un keylogger

0x18 : Compilar un script a exe

0x19 : Bibliografia

 

 

-- == Fin de Indice == --

 

 

0x00 : Presentacion

 

Hola , acabo de hacer un manual corto para ruby , puede que este un poco imcompleto pero solo

puede explicar lo que conozco a nivel basico , espero que le sirve alguien

 

Cualquier error o sugerencia sobre el manual pueden decirmelo para mejorar

 

 

0x01 : Que es Ruby

 

 

Segun wiki

 

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

En mi opinion personal ruby es un lenguaje de programacion que tiene tanto poder como perl o python.

 

En la siguiente url tenemos el link para descargar ruby para windows

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

 

0x02 : Como cargar un script

 

Si tenemos un script en ruby que hemos encontrado o algo asi , para ejecutarlo tenes que abrir nuestra

consola ms dos ir al directorio donde se encuentra dicho script con el comando cd y cargar con el codigo con el comando

ruby , el cual solo estara disponible si tenemos instalado ruby

 

Un ejemplo seria algo asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

 

0x03 : Tipos de variables

 

 

En ruby tenemos variables de tipo

 

 

== Locales ==

 

Son las variables normales se definen de la siguiente forma

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Entre comillas dobles se ponen el valor de la variable local , el nombre de la variable siempre

debe empezar en minusculas

 

 

== Globales ==

 

Son las variables que se pueden usar en cualquier parte del codigo un ejemplo de como declararlas

seria esta

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

 

== De instancia ==

 

Son las variables que solo se pueden acceder desde la misma clase , un ejemplo de como declararla

seria esta

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

== Contantes ==

 

Estas variables no pueden variar sus valores , el nombre de la variable deben empezar con una letra

mayuscula , un ejemplo de como usarlas seria este

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

 

0x04 : El poder de print

 

 

Para mostrar texto en pantalla tenemos que usar print , un ejemplo seria asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Tambien lo podemos hacer con comillas simples

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Si queremos mostrar una variable con el texto seria asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como ven usamos #{} para mostrar la variable , si no queremos mostrar esta variable de esa forma

podemos usar una coma de la siguiente forma

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Aclaracion : \n representa una salto de linea para que el texto no se muestre pegado

 

0x05 : Variables argumentales

 

Bien , ahora vamos a mi tema favorito , las variables argumentales.

Poniendo un ejemplo seria algo asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Si cargamos el codigo de la siguiente forma

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Nos devolveria en pantalla hola como ven ese es solo primer argumento porque si queremos usar dos

seria sumandole un uno al cero de la siguiente forma

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Si cargamos esto

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Nos devolveria dos hola , si queremos aumentar los argumentos solo tenemos que seguir el numero sucesivo del anterior (0,1,2,3) .....

 

0x06 : Manejo de array

 

Ok , llego la hora de hablar de los array , una forma de usar array seria asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como vimos en el ejemplo anterior podemos seguir sumandoles valores con solo poner entre comillas los valores

 

Para poder leer un array seria asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como ven abrimos el array y lo vamos mostrando con print mediante la variable test , despues de ese usamos

end para finalizar la funcion que hicimos para mostrar el array completo.

 

0x07 : Concatenacion

 

La concatenacion es util cuando queremos unir variables entre ellas un ejemplo de como hacerlo

seria asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como ven usamos + para poder unir variables o agregar texto a una variable

 

 

0x08 : Comentarios

 

 

Bien , hora de hablar de los comentarios , entonces si queremos dejar notas en el codigo , tanto

sea como dejar cosas innecesarias o explicacion de una linea de codigo.

 

Un ejemplo seria asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como ven cuando pongamos # todo lo que este adelante de ese linea sera ignorado por el codigo

Si comentemos el error de poder en medio del codigo puede surgir un error inperdonable.

 

0x09 : Entradas de teclado

 

Ok , las entradas de teclado son muy necesarias cuando queremos hacer formularios o menus , un ejemplo de como realizar

una entrada de teclado seria haciendo el tipico formulario que te consulta el nombre y la edad.

Un ejemplo seria

 

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como ven con get.chomp capturamos la entrada del teclado y guardamos su contenido en la varibles indicadas

Despues mostramos el resultado por pantalla.

 

 

0x10 : Tipos de condiciones y rescates de codigo

 

 

Bien ahora llego la hora de hablar de las condiciones , las condiciones mas usadas o las unicas

que recuerdo con las siguientes

 

 

-- == if-else == --

 

El tipico if-else , sirve para verificar que si es una cosa es tal cual , si no es asi se ejecuta else.

Un ejemplo seria asi.

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

 

Como ven si la condicion es verdadera se muestra en pantalla si de lo contrario no

Finalmente se pone end para finalizar la funcion.

 

Aclaracion : al final de cada funcion siempre debemos poner end de lo contrario habra un error

Aclaracion : == Sirve para verificar que una cosa sea exactamente igual que la otra

 

-- == while == --

 

El tipico while , este se encarga de verificar que mientras algo sea tal cual la funcion siempre se ejecutara hasta que la

condicion sea falsa , un ejemplo seria asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Entonces si ejecutamos este codigo la funcion nunca terminara porque la condicion siempre sera verdadera

 

-- == for == --

 

Bien , ahora llegamos a for , entonces for nos sirve para cuando queremos listar varios numeros , tambien tiene

otra funciones , pero esta es la que mejor puedo explicar.

Un ejemplo de la confusa idea que estoy tirando seria asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Bueno analizando el codigo podria decir que declaramos num para que podamos ir mostrando el rango 1..10 (pueden cambiarlo por los numeros que les

sean necesarios ) mediante print

Finalmente cerramos el bucle con end.

 

Cuando tengamos error en el codigo en alguna funcion tenemos que rescatar el codigo de la siguiente manera

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como ven despues del begin escribi cualquier cosa , claramente el codigo dara error , entonces con

rescue rescatamos el codigo y mostramos mal , como siempre cerramos begin con end

 

0x11 : Uso de split

 

Bien ahora llegamos a la conocida funcion split , esta funcion nos puede ayudar a seperar cosas en una variable por ejemplo si tenemos un texto como este

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Si queremos cortar los valores "estoy bien" para que quede solo hola podemos hacer asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Si ejecutamos el codigo veremos que logramos hacer lo que queriamos.

 

0x12 : Uso de funciones

 

El uso de funciones nos sirve cuando muchas cosas repetidas y queremos reducir un poco el codigo

Un ejemplo seria una funcion que muestre en pantalla lo que nosotros le pidamos.

 

Para declarar una funcion seria usar def de la siguiente manera

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como siempre eh dicho usamos end para finalizar cualquier funcion

 

Entonces si queremos invocar dicha funcion seria asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como ven antes de llamar a una funcion creada por nosotros dicha funcion debio ser declarada antes de la

llamada porque sino habra un error

 

Entonces para poder varios valores a la funcion para que muestra dicho resultado seria asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como ven en nuevafuncion() mandamos tres argumentos cada uno separado por como y entre comillas dobles

En la funcion creada le agregamos tres valores a,b,c que sirve para cuando la funcion sea invocada

esta automaticamente reconozca los tres argumentos y los muestre por pantalla con el valores asignados

en la nuevafuncion()

 

0x13 : Listar directorios y manejo de archivos

 

Bien , ahora hemos llegado al manejo de archivos y directorios

 

Para empezar si queremos listar un directorio para enumerar sus archivos con un array podemos

hacer de la siguiente forma

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como ven podemos cambiar el directorio "xampp" por cualquier otro , despues vemos como

enumeramos los archivos encontrados mediante la variable file

Como siempre cerramos la funcion con end.

 

Con eso , ya esta , si lo queremos es abrir un archivo , leerlo y mostrarlo por pantalla

seria algo asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como ven abrimos el archivo var.txt con la variable retornada por la buena ejecucion del archiv podemos

leer el archivo con readlines despues abrimos el array retornado y las mostramos con la variable line

Como siempre cerramos la funcion usada con end

 

0x14 : Uso de sockets

 

BIen ahora llegamos a la parte interesante , para poder usar sockets primero deberemos importar el modulo

sockets de la siguiente manera

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Entonces para conectarons a un servidor al puerto 80 podemos hacer asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como ven primero ponemos el host y despues el puerto a entrar

Si todo salio bien no deberia aparecer ningun error

 

Entonces como estamos en host con http podemos mandar un simple get como para saludarlo de

la siguiente manera

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Bien como vemos enviamos una peticion GET con la funcion print del objeto creado con socket , despues

capturamos en la variable re todo la informacion enviada como respuesta por parte del servidor , para

finalmente mostrar la variable re por pantalla

 

0x15 : Interactuar con la web y expresiones regulares

 

Bien , ahora llegamos a la parte interesante de ruby ,el manejo de paginas webs.

 

Entonces empezamos por una simple pagina con el metodo GET

 

Para poder cargarla tendriamos que invocar al modulo

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Entonces para cargar la pagina y guardar el resultado en una variable seria asi

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como ven capturamos la respuesta , el problema que tiene ruby es que tenemos que parsear la pagina por

eso uso parse con la web que queremos cargar.

 

Si lo que queremos es cargar una pagina con metodo POST lo que tenemos que hacer es esto

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como ven primero ponemos la pagina y despues el contenido del formulario encerrado entre los {}

 

Ahora que pasa si queremos sacar cierta porcion del texto de la variable code , no nos queda

otra que usar expresiones regulares

 

Imaginemos que en la variable code tenemos el siguiente texto

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Y lo queremos sacar es solo "132"

 

Para poder sacar solo esa porcion de texto lo que tenemos que hacer es lo siguiente

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Entonces , con (.*) podemos sacar lo que sea que halla justo donde le indicamos , como vemos

con $1 capturo lo que hay en el (.*) si algunas vez nos chocamos con el caso de que hay dos , para recoger

los resultados seria asi $1,$2 y asi sucesivamente con todos los (.*) que tengamos.

En este caso solo hay uno entonces tenemos el resultado en $1

Despues declaramos la variable local passw con el valor de $1 y la mostramos

Para finalizar la funcion solo tenemos que poner un end.

 

0x16 : Descarga de archivos

 

Bien , que paso si queremos descargar archivos , lo que tendriamos que hacer seria esto

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como podemos ver , el modulo encargado de la descarga es open-uri

Tambien en la variable file ponemos el nombre que tendra el archivo que descargamos y en

url ponemos el link del archivo a descargar.

Despues de uso creamos el archivo con el nombre indicado con el modo "wb" , despues escribimos en el ,

el contenido del archivo descargado , despues de que se descargo el archivo , se cierro el archivo creado

 

0x17 : Creando un keylogger

 

Para poder crear un keylogger en ruby es necesario invocar el modulo Win32API , un ejemplo de un keylogger hecho seria este

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como podemos ver usamos el modulo win32api para poder capturar todas las teclas despues creamos

un while eterno para poder capturar todo el tiempo lo que esta pasando , despues vemos que

si lo que nave (variable para conectarnos con la api llamada) reconoce que los rangos (0x30..0x39) o (0x41..0x5A) son identicos

a lo que nave esta capturando con la funcion call() para poder mostrar la tecla capturada , eso si usamos chr() para decodificar la tecla obtenida

 

0x18 : Compilar un script a exe

 

 

Para compilar un script en ruby a exe tenemos que descargar el siguiente archivo

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Una vez instalado , cargamos la consola ms dos , entramos al directorio donde se descargo dicho

archivo con cd , despues de eso hacemos lo siguiente para mostrar la ayuda del script descargado

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Y nos devuelve

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Si el script queremos compilar esta en el mismo directorio podemos compilarlo de la siguiente

forma

 

Hidden Content

    Give reaction to this post to see the hidden content.

 

Como ven problema resuelto xDD

 

 

0x19 : Bibliografia

 

 

Manuales de protos (mod de code-makers)

 

 

-- == The End == --

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.