Buscar en este blog

martes, 10 de marzo de 2009

Linux. Mac Address

Es bastante sencillo saber cual es nuestra Mac Address.

user@localhost:~$ ifconfig
eth1 Link encap:Ethernet direcciónHW 00:18:e4:17:46:b3
inet dirección:192.168.1.48 Difusión:192.168.1.255 Máscara:255.255.255.0
dirección inet6: fe80::218:e8ff:fe17:43b3/64 Alcance:Vínculo
ARRIBA DIFUSIÓN CORRIENDO MULTICAST MTU:1500 Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:4674 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:284122 (277.4 KB)
Interrupción:19 Dirección base: 0xcc00

lo Link encap:Bucle local
inet dirección:127.0.0.1 Máscara:255.0.0.0
dirección inet6: ::1/128 Alcance:Anfitrión
ARRIBA LOOPBACK CORRIENDO MTU:16436 Métrica:1
RX packets:42737 errors:0 dropped:0 overruns:0 frame:0
TX packets:42737 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:0
RX bytes:2639360 (2.5 MB) TX bytes:2639360 (2.5 MB)


Podemos limitar los resultados con grep

user@localhost:~$ ifconfig | grep HW
eth1 Link encap:Ethernet direcciónHW 00:18:e7:16:45:b3


Para conocer las Mac Address de los equipos conectados

user@localhost:~$ arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.10 ether 00:17:31:238:97:20 C eth1
192.168.1.3 ether 00:0E:50:42:5B:E4 C eth1
192.168.1.22 ether 00:07:E9:D6:8F:1E C eth1
192.168.1.23 ether 00:02:B3:19:8A:96 C eth1
192.168.1.21 ether 00:18:F3:6B:FB:DF C eth1


Para conocer las Mac Adress de todos los equipos de la lan.
Suponiendo que la lan sea 192.168.1.0

Es necesario tener instalado nmap.

user@localhost:~$ sudo apt-get install nmap


Ahora ya podemos ejecutar el commando.

user@localhost:~$ nmap -sN 192.168.1.0-255
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2009-03-10 12:58 CET
Interesting ports on 192.168.1.3:
MAC Address: 00:0E:50:92:5B:E4 (Thomson Telecom Belgium)

All 1680 scanned ports on 192.168.1.10 are open|filtered
MAC Address: 00:15:31:38:97:20 (Asustek Computer)

All 1680 scanned ports on 192.168.1.21 are open|filtered
MAC Address: 00:14:F3:8B:FB:DF (Unknown)

All 1680 scanned ports on 192.168.1.22 are open|filtered
MAC Address: 00:09:E9:D5:8F:1E (Intel)

All 1680 scanned ports on 192.168.1.23 are open|filtered
MAC Address: 00:04:B3:17:8A:96 (Intel)

Nmap finished: 256 IP addresses (6 hosts up) scanned in 25.797 seconds


Con grep limitamos los resultados a los que necesitamos:

user@localhost:~$ nmap -sN 192.168.1.0-255 | grep MAC
MAC Address: 00:0E:50:92:5B:E4 (Thomson Telecom Belgium)
MAC Address: 00:12:31:38:97:20 (Asustek Computer)
MAC Address: 00:14:F3:8B:FB:DF (Unknown)
MAC Address: 00:06:E9:D5:8F:1E (Intel)
MAC Address: 00:04:B3:17:8A:96 (Intel)


Seguro que se pueden afinar mucho más los comandos y existan otros comandos útiles para este tema, se admiten comentarios.

sábado, 7 de marzo de 2009

PHP. JAVA. Sobreescritura de método o función

Hace poco tiempo me di cuenta que llevaba sobreescribiendo los métodos en php sin darme cuenta, aunque lo llevo llamando desde hace años parametros opcionales, pero al final conseguimos lo mismo.

No se si con este ejemplo he logrado explicar el tema:

<?php

public function ladrar( $_ladrido ) {

//$_ladrido = "guau guau guau";

print($_ladrido);

return;
}

public function ladrar( $_ladrido, $_fuerte=false ) {

if ($_fuerte==true)
$_ladrido = strtoupper($_ladrido);

print($_ladrido);

return;
}
// Con esta función nos bataría para todo
public function ladrar( $_ladrido , $_fuerte=false , $_saltar=false ) {

if ($_fuerte==true)
$_ladrido = strtoupper($_ladrido);

if ($_saltar==true)
saltar();

print($_ladrido);

return;
}
?>

/*** java ***/

public void ladrar( String _ladrido ) {

//String _ladrido = "guau guau guau";

System.out.print(_ladrido);

return;
}

public void ladrar( String _ladrido, boolean _fuerte ) {

if (_fuerte)
_ladrido = _ladrido.toUpperCase()

ladrar(_ladrido);

return;
}

public void ladrar( String _ladrido, boolean _fuerte, boolean _saltar ) {

if (_saltar)
saltar();

ladrar(_ladrido, _fuerte);

return;
}

/*** fin java ***/

PHP. Prepare statement. Dao

Desde hace tiempo estoy implementando en PHP las sentencias SQL al estilo java, PreparedStatement, con mysqli. Así evitamos cualquier inyección de código y trabajamos contra la base de datos como les gusta a los Dba, mediante Bind.



Esto sería parte de un objeto Dao implementación Mysql, fundamental el bean para trabajar con objetos y dar de una vez el salto a la programación POO.


public function buscarPorTitulo( $_titulo ) {

$Noticia_ = new Noticia();
$Noticias_array = array();

$sql = "SELECT ID_NOTICIA, TITULO, FECHA, CSS_STYLE, RUTA_FICHERO_HTML ";
$sql .= "FROM NOTICIAS ";
$sql .= "WHERE TITULO LIKE ? ";

if ($stmt = $this->mysqli->prepare($sql)) {

$stmt->bind_param("s", $_titulo);
/*
Character Description
i corresponding variable has type integer
d corresponding variable has type double
s corresponding variable has type string
b corresponding variable is a blob and will be sent in packets
*/
$result = $stmt->execute();
if (!$result) {
throw new Exception( "Error al consultar BB.DD" );
}


$Noticias_array_ = array();

$_stmt->bind_result(
$idNoticia,
$titulo,
$fecha,
$css_style,
$rutaFicheroHtml
);

$i=0;
while ($_stmt->fetch()) {
$Noticia = new Noticia();
$Noticia->setIdNoticia($idNoticia);
$Noticia->setTitulo($titulo);
$Noticia->setFecha($fecha);
$Noticia->setCssStyle($css_style);
$Noticia->setRutaFicheroHtml($rutaFicheroHtml);
$Noticias_array_[$i] = $Noticia;
$i++;
}

return $Noticias_array_;

$stmt->close();

} else {
throw new Exception( "Error al consultar BB.DD" );
}

return $Noticias_array;

}




public class Noticia {

private $idNoticia=0;
private $titulo="";
private $fecha="0000-00-00";
private $cssStyle="";
private $rutaFicheroHtml="";

public function Noticia( ) {
$this->idNoticia=0;
$this->titulo="";
$this->fecha="0000-00-00";
$this->cssStyle="";
$this->rutaFicheroHtml="";
}

public function setIdNoticia( $_idNoticia ) {
$this->idNoticia=$_idNoticia;
return;
}

public function getIdNoticia( ) {
return $this->idNoticia;
}

public function setTitulo( $_titulo ) {
$this->titulo=$_titulo;
return;
}

public function getTitulo( ) {
return $this->titulo;
}

public function setFecha( $_fecha ) {
$this->fecha=$_fecha;
return;
}

public function getFecha( ) {
return $this->fecha;
}

public function setCssStyle( $_cssStyle ) {
$this->cssStyle=$_cssStyle;
return;
}

public function getCssStyle( ) {
return $this->cssStyle;
}

public function setRutaFicheroHtml( $_rutaFicheroHtml ) {
$this->rutaFicheroHtml=$_rutaFicheroHtml;
return;
}

public function getRutaFicheroHtml( ) {
return $this->rutaFicheroHtml;
}

}