Mostrando las entradas con la etiqueta curso. Mostrar todas las entradas
Mostrando las entradas con la etiqueta curso. Mostrar todas las entradas

viernes, 19 de octubre de 2012

Tutorial perl desde Unix estructuras selectivas


Bueno vamos a comenzar rápido con esta parte que es la tres de estos tutoriales sobre perl,como dije en la entrada pasada existen distintos tipos de variables y la única que hemos visto son las escalares, después veremos hashes,arrays,etc pero de momento con lo que hemos aprendido basta para aprender como funcionan las estructuras selectivas osea (if,else y elsif)

En perl al igual que en otros lenguajes de programación existen una parte del programa que es una estructura selectiva,que verifica la parte del programa y decide que hacer.

 por ejemplo

En texto plano en español,seria así (+ o -) lo que pensaría el programa del código que mostrare a continuación

imprimir Como te llamas,si es el nombre demianx86 abriré lo que estoy programado para hacer

Código

#!/usr/bin/perl

my $nombre="demianx864"; # Cambia tu nombre
print "Teclea tu nombre para continuar : ";
my $user=<STDIN>;
chop($user);
if ($user == $nombre) {
print ("Bienvenido\n");
}


Lo explico con #

#!/usr/bin/perl

my $nombre="demianx864"; # Definimos el nombre(nuestro nombre)
print "Teclea tu nombre para continuar : "; # Imprimimos esto para que nos ayude de guia
my $user=<STDIN>; # Llamamos la entrada del teclado
chop($user); # Limpiamos la entrada, como vimos en la entrada anterior
if ($user == $nombre) { # Verificamos si coninciden los nombres
print ("Bienvenido\n"); # Si coincide se imprime esto o el comando que haya 
}

Como pueden ver no funciona,por ejemplo escriban lo que escriban dirá bienvenidos,¿esto a que se debe?

bueno se los dejaría de tarea,pero no podemos continuar si no lo explico

Lo que pasa es que hay dos cuestiones aquí

1.Estamos usando un comparador de caracteres numéricos (==) que compara los caracteres y los usa como un solo dato(como cadena,texto) escribamos lo que escribamos sera un solo valor (texto) pero si escribimos números ahí si diferencia(por que se comparan como números)

Los operadores numéricos son estos

Operador Descripción

<  menor que
>  mayor que
==  igual que
<=  menor o igual que
>=  mayor o igual que
!=  no igual a

Los operadores de cadenas son estos

Operador   Descripción

lt   menor que
gt   mayor que
eq   igual a
le   menor o igual que
ge         Mayor o igual que
ne   No igual a

Así que sabiendo eso, así seria el script

#!/usr/bin/perl

my $nombre="demianx864";
print "Teclea tu nombre para continuar : ";
my $user=<STDIN>;
chop($user);
if ($user eq $nombre) { # Así reconocerá sean números o letras la longitud e igualdad
print ("Bienvenido\n");
}

2.La cuestión numero dos es que el script no piensa esto(si no es el nombre que hago) así que le decimos que hacer si el nombre no es igual con el comando else

La estructura de un script con else seria así

If (condición) { # Si se cumple la condicion
comandos a ejecutar
}
else { # De lo contrario
comandos a ejecutar
}

Y implementados en nuestro ejemplo luciría así


#!/usr/local/bin/perl

my $nombre="demianx864";
print "Teclea tu nombre para continuar : ";
my $user=<STDIN>;
chop($user);

if ($user eq $nombre) {
print ("Bienvenido\n");
}
else {
print "Quien rayos eres largo de aqui |:(\n";
}

Bien hay otra cosa que se llama elsif que seria así

if (condicion) { # Si se cumple esta condicion
secuencia de procesos
}
elsif (condicion) { # Si se cumple esta condicion
secuencia de procesos
}
elsif (condicion) { # Si se cumple esta condicion
secuencia de procesos
}
elsif (condicion) { # Si se cumple esta condición y así todos los elsif que quieras
}
else (condicion) { # De lo contrario
secuencia procesos
}

Por ejemplo lo podrías usar así



en nuestro script

#!/usr/local/bin/perl

system("clear");
system("sleep 1");

my $nombre="demianx864";
my $invitado="invitado";

print "Usuario : ";
my $user=<STDIN>;
chop($user);

if ($user eq $nombre) {
print ("Bienvenido $nombre\n");
}
elsif ($user eq $invitado) {

print ("Binvenido a la sesion de $invitado\n");
}
else {
print "Usuario incorrecto largo de aqui |:(\n";
}


Como vieron añadí

system("clear");
system("sleep 1");



Estos son comandos del sistema que llama perl, después los veremos, solo que use esto para hacer un trabajo mas limpio, también los usaremos de ahora en adelante,para que se vea mejor nuestros pequeños scripts,de momento eso es todo.


Leer más...

viernes, 12 de octubre de 2012

Tutorial perl desde Unix variables (escalar)


Esta es la parte 2 de estos tutoriales de perl para aprender el funcionamiento de este lenguaje de programación interpretado,bueno los tutoriales los voy a hacer sencillos como los de bash solo un tema por tutorial y al final un map de todos los tutoriales, scripts o programas que realice en el transcurso del tiempo escritos en el mismo y los ejemplos que coloque.

Bueno como dice el titulo en esta ocasión veremos variables,en el capitulo anterior vimos las variables pero fue muy sencillo y le voy a dedicar una a cada una,en esta ocasión escalares.luego,hashes,arrays,etc.



Pero que es una variable,las variables son una función o parte fundamental en cualquier lenguaje de programación en algunos los definimos como strings en otros simplemente les damos un valor a un texto y ese es el caso de perl,una variable varia y podemos cambiar su valor,ya sea desde el momento que la escribimos o en el momento que queramos interactuar con ella desde la entrada del teclado,bueno comencemos con los ejemplos:


1. Definición de variables

La sintaxis de las variables en perl son así:

$variable="cadena,entero,flotante"

De igual forma que en otros lenguajes tenemos los valores cadena,entero,flotante los cuales son

cadena # Todo lo que vaya encerrado en "aquí"

entero # números por ejemplo 775

flotante # Números flotantes por ejemplo 7.55

Volviendo a las variables existen varios tipos de variables y la que acabo de mostrar se llama escalar,escalar,las escalares son las variables en las cuales definimos un valor fácilmente,solamente hacemos esto para definiría

$cadena="Hola Mundo!!!";
$entero=775;
$flotante=7.55;

Y para llamarlos se usa el comando print

print "Esto es una cadena : $cadena\n";

print "Esto es un flotante : $flotante\n";

print "Esto es un entero : $entero\n";

De igual forma es bueno y usar my antes de definir la variable,por ejemplo

my $cadena="Hola Mundo!!!";

Ejercicio 1

Copia y ejecuta este script

#!/usr/bin/perl
#-Ejemplo 1-#
my $cadena="Hola Mundo!!!";
my $entero=775;
my $flotante=7.55;

print "Esto es una cadena : $cadena\n";

print "Esto es un flotante : $flotante\n";

print "Esto es un entero : $entero\n";

Pregunta uno 

Que pasa si ejecutamos esto en vez:

#!/usr/bin/perl
#-Ejemplo 2-#
$cadena="Hola Mundo!!!";
$entero=775;
$flotante=7.55;

print "Esto es una cadena : $cadena\n";

print "Esto es un flotante : $flotante\n";

print "Esto es un entero : $entero\n";

2.Cambiar el valor de las variables

Bien,en perl se puede pasar el valor de una variable a otra:

Por ejemplo

my $uno="Uno";
my $dos="dos";
my $tres;

$tres=$uno;

print "$tres\n";
print "$dos\n";

Cabe resaltar en este ejemplo que también se pueden definir las variables después de escribirlas,por ejemplo

my $variable;
$variable="Uno";
print "$variable\n";

Ahora explico el código pasado con #

my $uno="Uno"; # Definimos variable uno
my $dos="dos"; # Definimos variable dos
my $tres; # casi definimos variable tres

$tres=$uno; # Le pasamos el valor de variable uno a esta variable

print "$tres\n"; # Llamamos la variable tres (y se imprimira su valor)
print "$dos\n"; # Llamamos la variable dos

Ejercicio 2

Copia y ejecuta este script

#!/usr/bin/perl
my $uno="Uno";
my $dos="dos";
my $tres;

$tres=$uno;
$dos=$tres;

print "$dos\n";

Ahora otro ejercicio

Dale el valor de la variable tres a la dos y solo llama la variable dos

Pregunta ¿que se imprime?

Vamos bien,bueno ahora vamos ahora vamos a pasar a algo mas interesante,la definición de variables desde la entrada del teclado,para ello usaremos el comando <STDIN>,este comando se usa para obtener información desde un dispositivo de entrada,

3.Definir una variable desde la entrada del teclado

La definición de una variable es la siguiente,para que se pueda definir desde el teclado

my $obtencion = <STDIN>;

Ejercicio 4

Copia y ejecuta este script

#!/usr/bin/perl

print "\nTeclea algo\n\n";
my $obtencion = <STDIN>;

print "\nTu entrada por el teclado fue : $obtencion\n";

Ejercicio 5 

Comenta lo que hace el script pasado con

Ahora,veremos un poco de operaciones aritméticas en el futuro haré una entrada dedicada a esto pero de momento checken este script

#!/usr/bin/ perl
print "Teclea un numero entero: ";
my $num1 = <STDIN>;
chop $num1;
print "Teclea otro numero entero:";
my $num2 = <STDIN>;
chop $num2;
$resultado=$num1+$num2;
print "El resultado de la suma de $num1 y $num2 es: $resultado\n" ;

Como pueden ver hay mucho que explicar,lo que es algo para repasar es el comando chop,este comando quita el último carácter de la línea que se introdujimos, que regularmente es el símbolo de retorno de carro, al momento de teclear [enter].

Ya que vean que pasa si ejecutamos sin chop

Ejemplo



Las operaciones aritméticas las veremos mas adelante con sus debidas cosas pero ese era un ejemplo de lo que se puede hacer con <STDIN>

Eso es todo por ahora
Leer más...

domingo, 7 de octubre de 2012

Curso scripting bash operaciones aritmeticas

Bueno esta es la parte 7 de estos tutoriales tipo cursos de lo que es programación bash,como les dije en la entrada pasada de estos tutoriales vamos a ver operaciones aritméticas o numéricas ya que esto es de lo mas simple pero se ha ido quedando y bueno antes de hacer mas,lo vamos a hacer

Partes anteriores


Parte 1


Parte 2


Parte 3

Parte 4  

Parte 5

Parte 6
Bueno comenzemos con los ejercicios y despues los explico

Ejercicio 1

#!/bin/bash

numero1=1
numero2=2

let operacion=$numero1+$numero2

echo $operacion




Bien lo explico con #

#!/bin/bash

numero1=1 # Definimos un numero en una variable
numero2=2 # Definimos otro numero en otra variable

let operacion=$numero1+$numero2 # Definimos la operación en otra variable y las sumamos(debe llevar let las operaciones numéricas)

echo $operacion # Llamamos la variable que suma las dos primeras variables

Bueno antes de todo,pueden darle una vuelta a la entrada de comparación de valores,ya que no es lo mismo comparar cadenas a comparar números o flotantes


Enlace

Les dejo lo que necesitamos de todas formas ya que no lo incluí en la otra entrada




-                                 Menos unario
!                 Negación lógica
* / %                    Multiplicación, división y resto
+ -­                          Suma y resta
<= >= < >  Operadores relacionales
== !=                 Igualdad y desigualdad
=               Asignación a variable
&&            Y lógico
||                              O logico


Ejercicio 2

#!/bin/bash

numero1=1
numero2=2

(( operacion=$numero1*$numero2 )) # ¿!!!!?

echo $operacion

Aquí lo único que hay que resaltar es que no necesariamente se debe llevar let para las expresiones aritméticas, también las podemos definir encerrando la variable que hace la operación en (( )) como en el ejemplo anterior

Pregunta 1(no necesitan comentar)

Bien que pasaría si hacemos esto?


#!/bin/bash

numero1=1
numero2=2

operacion=$numero1+$numero2

echo $operacion

Ejercicio 3 

No necesariamente necesitamos definir muchas variables,de hecho podemos hacer operaciones con una sola

#!/bin/bash

numero1=1

(( operacion=$numero1+$numero1 ))

echo $operacion

O también definiendo un numero sin variable

#!/bin/bash

numero1=1

(( operacion=$numero1+10 ))

echo $operacion

O sin variables

#!/bin/bash

(( operacion=10+10 ))

echo $operacion

Ejercicio 4

Ahora si lo usamos con read de la entrada pasada así seria una calculadora:

#!/bin/bash

clear
echo "Calculadora de suma"

sleep 1;

echo "Escribe un numero: "

read numero1

echo "Escribe otro numero: "

read numero2

echo "sumando..."

sleep 2;

(( operacion=$numero1+$numero2 ))

echo "El resultado es $operacion"

Ejercicio 5

Ahora imagínense lo que podríamos hacer usando,los bucles usando case.esac

Por ejemplo:

Enlace

Video




Pregunta 2(no necesitan comentar)


Se puede realizar el ejemplo anterior sin usar case,esac,si es así realizalo


Bueno pues eso es todo,ya que esto funcionado con los antiguos tutoriales se pueden hacer grandes cosas,por ejemplo algo que he visto que siempre hacen es el programa que saca la media de la calificación de un montón de alumnos, también se puede hacer en bash pero ya con los tutoriales pasados deben tener idea de como se hace.Hasta luego

Leer más...

sábado, 21 de abril de 2012

Conociendo Unix [curso Unix 1]

Esta es una nueva parte del curso de Unix/Linux, en la la primera parte del curso de Unix vimos navegar por carpetas

Se llamo asi "Navegar en las carpetas por terminal Unix [curso Unix 1]"

Abra una parte en el futuro llama así "Navegar en las carpetas por terminal Unix part 2[curso Unix 1]"

Ya que faltaron ver muchas cosas de explicar al como navegar por las carpetas de sistema

Pero primero 

¿que es Unix?



Imagen vía fondosypantallas


Actualmente UNIX puede referirse a:

* Familia UNIX: grupo genérico de sistemas operativos que comparten determinados criterios en su diseño y por lo tanto son llamados de la familia (o tipo) UNIX. Son más de 100 sistemas operativos que se consideran de su familia.

* Sistema operativo UNIX: subfamilia de sistemas operativos que descienden de la primera versión creada por Bell. Esto significa que comparten códigos y propiedad intelectual.

* Marca UNIX: Unix como marca es propiedad de "The Open Group", organización de estandarización que permite el uso de dicha marca a cualquier sistema operativo que cumpla con sus estándares. Esto es independiente de si el sistema operativo en cuestión es de la familia UNIX o descendiente del original. 

Este sitio se llama completamente Tiempo de Tux, tutoriales para OS tipo Unix aquí encontraremos tutoriales para Linux, para OS X,etc que son algún tipo Unix.

Todo esto del parentesco de Unix entre estos OS lo vemos en distintas cosas,una de ellas la terminal y los comandos que ejecuta en la misma,a diferencia de Windows que ejecuta CMD(command o símbolo del sistema) para ejecutar los códigos de MS-DOS, en Linux,OS X,etc ejecutamos Terminal o algún tipo terminal como Konsole(KDE) para ejecutar el equivalente de Unix.

Comados de Unix y de MS-DOS
Estos comandos sirven para muchas cosas, aquí dos de ellas

1.Linux

En linux por ejemplo ArchLinux es un sistema de Linux sin Entorno de Escritorio,otra forma de decirlo "no tiene interfaz gráfica el sistema operativo"

Archlinux y linux en concreto es muy usado en servidores con conexiones ssh,o entornos enjaulados y si queremos administrar algún sistema tipo unix,single unix o unix-like necesitamos saber usar sus comandos,en la actualidad las shells de Unix(consolas.terminales) luce como algo obsoleto al lado de las grandes interfaces gráficas o entornos de escritorio pero si la comienzan usar(la terminal) sabrán que ayuda mucho y acelera la administración del sistema y trabajos especiales.

En archlinux usamos comandos propios "pacman,yaourt,-S,etc" pero para usar el sistema usamos Unix"ls,cp,cd,etc" y si sabemos unix no se nos hará tan difícil Arhlinux u otras distros parecidas,

En este video vemos como se instala LXDE y SLIM en Archlinux para contar con entorno gráfico

Este vídeo muestra el uso de terminal al 100% y para manejar una distro así necesitamos conocimientos en Unix o sus derivantes de GNU(core utilities) Existen dos tipos de shell,la shell llamada terminal,consola y la shell de trabajo que es la que nos comunica con el sistema operativo,sea bash,sh,tcsh,zsh,etc, también existen shells gráficas como XFCE,LXDE,Gnome,KDE,etc Estas usadas en una terminal de la shell grafica,tty o el monitor completo en un sistema sin shell grafica. 2.Uso de herramientas de pentest o programas sin interfaz  Otra razón es  el uso de herramientas de pentest o similares,si conocen o habrán oído de Backtrack,es una distribucion de linux para pentest(pruebas de penetración)o (pruebas de seguridad informática) aquí contamos con una gran cantidad de herramientas,nmap,aircrack,SET,Metasploit,etc todas estas se ejecutan con la sintaxis común de Unix:
programa -opción -mode,file,etc
Otros programas cuentan con interfaz gráfica como zenmap pero yo recomiendo que los programas de pentest se trabajen solamente bajo Terminal,si te gusta el hacking el primer paso es saber usar y entender los sistemas tipo Unix,usar la shell,las ramas del sistema y sus lenguajes de programación para administración del mismo,recomiendo Bash y Perl para la administración del sistema, si queremos desarrollar programas o aplicaciones con ventanas y funciones C y Python es lo mejor. Tan solo si usamos Linux y necesitamos instalar un programa necesitamos minimos conocimientos en Unix: Aquí un video de como llevan a cabo la instalación de Armitage en Ubuntu 11.10,en este vídeo vemos que usan mucho los comandos de Unix para llevar acabo la instalación   Armitage es una GUI para metasploit,siempre veremos GUI'S(interfaces gráficas) de programas que podemos usar desde la consola,y como dije yo recomiendo usar los tipo shell,ya que los recursos que estamos usando para correr la GUI los podriamos usar para lo que hace el programa en si. Tambien recomiendo un tilling window manager,que es como una shell grafica,pero mucho mas ligera; Aqui una:
Video

 

Otro ejemplo es el uso de Metaesploit en modo normal

Incluso para hacer un ataque de ingenieria social se usan los sistemas tipo Unix

 

Eso es todo y hay muchas razones mas por las cuales aprender Unix o hacer uso de la terminal,simplemente al usar Linux /OS X/FreeBSD/etc algún día necesitaremos hacer uso de ella. Y pronto preparare Navegar en las carpetas por terminal Unix part 2[curso Unix 1]

Aquí pueden encontrar mas información y tutoriales(ya practicando) sobre Unix  

Enlace
Leer más...

jueves, 5 de abril de 2012

Navegar en las carpetas por terminal Unix [curso Unix 1]

Empezare a colocar tutoriales de Unix que se podrían considerar cursos como los que estoy preparando de programación,el de python no he hecho otro porque no tuvo gran reacción esperemos que estos de Unix si lo tengan,veremos en si el uso de la terminal de Unix desde Linux,OS X,iOS no les digo si son avanzadas o no porque para saber eso tenemos que entrar a juegos de comparación y la comparación no responde nada,ya que pueden ser muy fáciles para algunos y muy avanzados para otros,solo los pondré lo mejor que pueda por si quieren aprender puedan aprender pero si ya saben y ven un error comenten para arreglarlo,ya que de eso se trata de aprender y enseñar.

Este es un tutorial dedicado al uso de la terminal Unix en Linux y sus distros pero también lo pueden usar en OS X,iOS,etc, es muy conocido navegar en las distintas carpetas desde terminal para poder ejecutar distintas cosas como binarios,instalar paquetes,transformar paquetes,etc.

Lo haré lo mas amigable posible y es muy fácil aprender esto de hecho es de lo mas fácil en comparación a otras cosas y muy avanzado en comparación a otras cosas así pasa con todo,pero lo que hace fácil esto es por pertenecer a universo de Unix y ser algo de lo mas básico del tema.

Lo primero es abrir terminal o shell




1.Ver archivos en modo terminal

Lo principal es abrir un directorio

El comando que se usa es

ls

en linux y iOS también se usa

dir 

y es casi lo mismo


Explicación

Esto hara visual todo lo que tengamos en una carpeta en modo terminal para poder trabajar con los archivos o carpetas

Por ejemplo es lo mismo esto




que esto pero en dir o en ls



3.Crear carpetas en modo terminal

Todo se puede hacer desde terminal en este caso crear una carpeta la cual se puede crear con mkdir y se crea

Por ejemplo ya sabiendo los archivos que tenemos con ls podemos crear una carpeta con

mkdir nombre_de_la_carpeta

Es lo mismo esto



y ponerle de nombre nueva


que esto pero en modo terminal



y se crea la carpeta



Para borrarla se usa el comando 

rmdir nombre_de_la_carpeta
y se borra pero para saber la carpeta a borra usa ls y ve el nombre de la carpeta

3.Cambiar de directorio

Este comando incluso se usa en MS-DOS para cambiar el directorio,me refiero a 

cd
Los usuarios de avanzados de Unix o Linux y los Hackers lo usan para moverse en las carpetas del sistema ya que este comando hace posible acceder a cualquier directorio en modo terminal y esto hace posible ejecutar archivos como root o ejecutar script's que se manejan sin interfaz.

Lo principal es saber donde estamos ubicados,para eso tecleamos

pwd
y sabremos en donde estamos,en linux se da locación por defecto en la carpeta home

Para navegar en los directorios se usa el comando cd para cambiar de directorio

Siempre y cuando tengamos el directorio a la mano

Ejemplo

ls (para ver las carpetas)

cd a_la_carpeta






Y si presionamos ls otra vez veremos los archivos de la carpeta en la que nos encontramos ahora.

Pero si queremos ir mas atrás ya que donde estamos solo podemos ir a las carpetas que están adentro de home lo que haremos es usar este comando

cd /

y nos mandara hasta la raiz del sistema(del sistema,no de las particiones) las particiones las monta en

/media
pero primero hay que montarlas



Aquí ya podemos entrar a cada carpeta con su respectivo cd

Ejemplo para regresar a la carpeta home seria

cd /


cd home


cd usuario

Y listo

O simplemente

cd /home/usuario

Pero si no sabemos los directorios podemos hacerlo como les dije cd / y ls en todos los directorio.

Faltan muchas cosas solo de navegar por las carpetas pero esto es todo por ahora :D



y si no te sirvió comenta para ayudarte y para que se enteren otros lectores


Comenten :D
Leer más...