Instalación y Configuración – MadWifi

MadWifi es un driver diseñado para tarjetas inalambricas cuyo chip base sea el Atheros. Es el driver mas avanzado que existe para linux.

Antes que todo descargar y compilar el driver de alguna de las siguientes direcciones.

  • Sitio Oficial de MadWifi [1]
  • Sitio de Descargas de Fibonacci [2] (Estable)
  • Sitio de Descargas de Fibonacci [3] (SnapShot)

Ejecutar

  • make en el directorio raíz del madwifi
  • make install en el directorio raíz del madwifi
  • Si dice que estos drivers ya existen, selecciona la opción de remover los antiguos.

Este driver posee varios modos de ejecución. Entre ellos :

  • master (ap)
  • managed (estación)
  • ad-hoc (peer)
  • monitor (sniffer)

Cargar el driver

  • De Manera Manual
    • Para cargar el driver sin ningún modo en particular simplemente ejecutamos (Por default crea el modo “Station”)
modprobe ath_pci
    • En el caso que queramos especificar los modos
modprobe ath_pci autocreate=monitor

Los modos que se pueden especificar son : sta|ap|wds|adhoc|ahdemo|monitor

Si todo sale de manera correcta podemos observar con el comando

iwconfig Algo como ;

 

ath1 IEEE 802.11g ESSID:”” Nickname:””

         Mode:Managed  Frequency:2.437 GHz  Access Point: Not-Associated   
Bit Rate:0 kb/s Tx-Power:18 dBm Sensitivity=1/1
Retry:off RTS thr:off Fragment thr:off
Power Management:off
Link Quality=0/70 Signal level=-96 dBm Noise level=-96 dBm
Rx invalid nwid:3795 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Lo anterior corresponde al modo de estación.

Si queremos crear un AP, debemos seguir las siguientes instrucciones.

  • Cargar el modulo sin modo alguno.
modprobe ath_pci autocreate=none
  • Crear el Ap

wlanconfig ath0 create wlandev wifi0 wlanmode ap

  • Ahora especificamos los datos del AP.
sudo iwconfig ath1 essid "naitoath1"
  • Lo que nos da algo como :

wifi0 no wireless extensions.

         ath1      IEEE 802.11g  ESSID:"naitoath1"  Nickname:""
Mode:Master Frequency:2.412 GHz Access Point: 00:17:9A:AF:E4:7D
Bit Rate:0 kb/s Tx-Power:18 dBm Sensitivity=1/1
Retry:off RTS thr:off Fragment thr:off
Power Management:off
Link Quality=0/70 Signal level=-95 dBm Noise level=-95 dBm
Rx invalid nwid:77 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Con lo que tenemos el AP creado, con un essid llamado naitoath1.

 


Genéricamente hablando, se puede resumir los pasos para generar una interfaz como:

Si poseemos una interfaz activa, y queremos cambiarla :

  • Primero la Destruimos.
wlanconfig ath1 destroy
  • Luego creamos una nueva con las caracteristicas necesarias.
wlanconfig ath0 create wlandev wifi0 wlanmode monitor
  • Revisamos que haya levantado la interfaz con iwconfig, lo que nos retorna algo como:
         lo        no wireless extensions.
         eth1      no wireless extensions.
         wifi0     no wireless extensions.
         pan0      no wireless extensions.
         ath0      IEEE 802.11g  ESSID:""  Nickname:""
Mode:Monitor Channel:0 Access Point: Not-Associated
Bit Rate:0 kb/s Tx-Power:18 dBm Sensitivity=1/1
Retry:off RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=0/70 Signal level=-96 dBm Noise level=-96 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
  • Ahora que la interfaz esta creada, debemos levantarla.
ifconfig ath0 up

En donde;

  • ath1 es la interfaz que queremos destruir.
  • ath0 es la interfaz que deseamos crear. (Si no se especifica un número, este es asignado automáticamente.). Si todo sale bien, retorna el nombre de la nueva interfaz.
  • wifi0 es el dispositivo físico.
  • monitor especifica el modo que deseamos que tenga, en este caso monitor. (master,static,monitor,etc)

 

 

Opciones extra:

    • Desabilitar el CRC Check. (Util para cuando queremos medir las razones del porque llegan mal los paquetes.)

echo ‘1’ > /proc/sys/net/ath0/monitor_crc_errors

 

Read More >Instalación y Configuración – MadWifi

Introducción a SQL

 

 En esta introducción veremos que es SQL, y algunas sentencias que nos sirven para manejar básicamente las bases de datos.

 

¿Que es SQL?

 SQL es un lenguaje de consulta de BdD relacionales estándar. Es un lenguaje declarativo, lo que quiere decir que le pedimos la información que queremos obtener.  A continuación mostraremos las consultas básicas de SQL.

Crear Bases de Datos

La base de datos, es el lugar donde almacenaremos todas nuestras tablas.

create database pruebasCompu;

Crear Tablas

Podemos tener muchas tablas dentro de una base de datos, y cada una con información distinta. Cada una de estas tablas posee campos en los cuales  guardaremos la información.

CREATE TABLE `compu`.`pruebaTabla` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nombre` VARCHAR( 100 ) NOT NULL ,
`desc` TEXT NOT NULL
);

Seleccionar de las Tablas

Con la selección obbtenemos la información que necesitamos. Ya veremos como hacer consultas un poco mas complejas.

SELECT * FROM `pruebaTabla` ;

Insertar en las Tablas

Para insertar en una tabla, debemos decirle lso campos a los cuales le queremos agregar información, y luego le damos los valores que queremos que tome.

INSERT INTO `compu`.`pruebaTabla` (`nombre` ,`desc`)
VALUES ('este es un nombre', 'Y esta es su descripción');

 

Borrar Información

En general no queremos borrar TODOS los datos de una tabla, asi que usamos una condición para restringir la cantidad de datos a borrar.

DELETE FROM `compu`.`pruebaTabla` WHERE `pruebaTabla`.`id` = 2 LIMIT 1

Borrar una Tabla.

drop table pruebaTabla;

 

 

Read More >Introducción a SQL

Temario Solemne N2

 

Chicos, se nos viene la solemne II y es necesario que tengan en cuenta las siguientes materias:

 

  • Desde lo mas básico …. recuerden las operaciones aritmeticas .
  • Recuerden la diferencia entre herencia e interfaz.
  • Deben ser capaces de poder crear una interfaz y luego implementarla.
  • Deben de ser capaces de crear una clase abstracta de la cual heredar.
  • Y lo mas importante …. DEBEN SER CAPACES, de heredar e implementar al mismo tiempo.
  • Entender las diferencias entre ResultSet y Statemant (JDBC).
  • Conocer lo básico de las sentencias SQL.
  • Saber obtener los datos del resultset,
  • Y recordar como leer de teclado. 

Espero poder subirles un mini manual de java con JDBC para conectar a una base de datos. Saludos!.

 

Como ayuda pueden utilizar :

 

Read More >Temario Solemne N2

Clase del Viernes y Temas presentaciones

 Les cuento, este viernes a la hora B nos juntaremos y haremos una introduccion a sql, y veremso como ocuparlo. Nos pondremos de acuerdo también para las presentaciones.

 

Por ahora lso temas inscritos son (Por orden de llegada) :

 

  • Oliver Schulz -> Figuras geométricas.
  • Paulina Arias -> Vendedor.
  • Alvaro Leon -> Animal. ( No es que sea anima, solo usara la clase animal)
  • Nicolas Vargas -> Jugador / Selección.
  • Cristobal Burgos -> Aviones.
  • Rodrigo Ravanales -> Instrumentos musicales .

Esos son los que no se repiten por mientras, Estaré actualizando este articulo para que sepan los temas  tomados . Saludos.

 

Read More >Clase del Viernes y Temas presentaciones

Call to a member function sess_destroy() – CodeIgniter

En el manejo de sesiones con CodeIgniter podemos obtener problemas, si la sesión no es cargada automáticamente.

 

Tomando en cuenta que cargamos la sesión con :

$this->load->library(‘session’);

 

Tenemos el problema, que esta instancia solo se crea para el controlador en el cual la estamos llamando, entonces para poder utilizar 

$this->session->sess_destroy();

 debemos cargar automáticamente la librería de sesión desde el archivo de configuración “autoload.php”. Para hacerlo encontramos la linea en la cual se define el autoload de las libreríaas, y revisemos que quede de la manera siguiente;

$autoload[‘libraries’] = array(‘session’);

 

Espero que eso los ayude con el problema que pudieron tener. Saludos!

 

 

 

 

 

 

Read More >Call to a member function sess_destroy() – CodeIgniter

Herencia en Java

Primero que todo, es necesario tener una idea de como se comportan la orientación a objetos, si no lo recuerdan por favor revisar eso antes de continuar.

¿Que es la herencia?

La herencia es una característica de algunos lenguajes de programación orientados a objetos, que permite crear objetos a base de otros ya existentes. Como ya hemos comentado en clases, la Orientación a objetos permite la reutilización de código.

Llamaremos superclase, a la clase de la cual heredamos, y en el caso de Java, solo podremos heredar de una sola clase.

La clase de la cual heredamos, nos aporta todas las funciones y métodos que esta posee, dejando así más fácil su implementación.

 

Cosas que hay que tener en cuenta:

  • Si no especificamos un constructor, se intentara usar un constructor de la clase padre.
  • Es posible especificar el uso del constructor de la superclase, llamándolo directamente con “super();” .
  • Yo puedo redefinir los métodos de la superclase, simplemente escribiéndolos de nuevo.
  • Modificar un método, para que me devuelva valores distintos, o tipos de variables distintos, puede generar problemas en el polimorfismo.((Tarea)
  • No se puede heredar de mas de una clase. Para eso existen las interfaces*.

 

A modo de ejemplo podemos tener las siguientes clases:

 

La Clase Persona :

 

public class Persona {

String rut;
String nombre;

boolean cabello;
String colorCabello;

Persona()
{

}

Persona(String nombre)
{
this.nombre = nombre;
}

public String getNombre()
{
return this.nombre;
}

public void setNombre(String nombre)
{
this.nombre = nombre;
}

}

 

La clase alumno

 

public class Alumno  extends Persona{

String apellido;
/** Creates a new instance of Alumno */
public Alumno() {
super();
}

public Alumno(String nombre)
{
super(nombre);
}
void setApellido(String apellido)
{
this.apellido = apellido;
}

public String getNombre()
{
return this.nombre+" "+this.apellido;
}

public static void main (String args[])
{
Alumno alumno = new Alumno();
alumno.setNombre("Naito");
alumno.setApellido("Neko");
Alumno alumnoDos = new Alumno("Pepe");
alumnoDos.setApellido("Grillo");

System.out.println("Alumno 1 ->t"+alumno.getNombre());
System.out.println("Alumno 2 ->t"+alumnoDos.getNombre());
}

 

¿Como heredo?

 

Como podemos notar en los ejemplos anteriores, para que una clase herede de otra, simplemente usaremos “extends” luego de la definición del nombre de la clase, seguida por el nombre de la clase de la cual queremos heredar.

 

En este caso lo que tenemos se puede observar en el siguiente esquema :

 

 

 

 

En este caso la herencia es bastante obvia, y lo que estamos haciendo, es crear una clase Alumno,que posee las características y métodos de la clase persona.

 

 

Para la próxima clase.

Para la próxima clase, deben de hacer una investigación sobre el polimorfismo en Java, traer un ejemplo programado y explicarlo en frente de la clase. Los ejemplos deben de ser avisados a mas tardar el día miércoles 10, y estos temas de ejemplos no se pueden repetir!!!!. La prioridad es por orden de llegada, o sea el primero que elija un tema para el ejemplo es el que se lo queda.

 

Read More >Herencia en Java