elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Temas
Páginas: 1 2 [3] 4 5 6 7 8 9 10
21  Programación / .NET (C#, VB.NET, ASP) / MOVIDO: Cambiar titulo en: 3 Agosto 2011, 17:23 pm
El tema ha sido movido a Ingeniería Inversa.

https://foro.elhacker.net/index.php?topic=335405.0
22  Programación / PHP / Desarrollo modular en CodeIgniter en: 2 Agosto 2011, 20:57 pm
 CodeIgniter se caracteriza por su diseño MVC, parece que hace que ha empezado a usarse y ya tiene algunos defectos, el aparente problema viene al efectuar tareas de escalabilidad sobre un sistema.

 HMVC ( Hierarchical Model View Controller o Modelo Vista Controlador Jerárquicos ) es la evolución de MVC, resumiendo, lo que hace ésta nueva implementación es dejar la posibilidad de desarrollar una aplicación por módulos y después unirlos como si se tratara de unos plugins.

 

 Cada “triangulo” de MVC (Controlador + Modelo + Vista) funcionan independientemente de los demás, de ahí llamarlos plugins, permitiendo desarrollar aplicaciones robustas y “más profundidad”.

 Algunas ventajas pueden ser:

 
  • Al tener una carpeta por cada módulo, las tareas de mantenimiento serán mucho más sencillas.
  • Reduce la dependencia entre otras partes de la aplicación.
  • Hace que el sistema sea más extensible.
De momento no hay ninguna respuesta oficial por parte de los creadores de CodeIgniter, pero los usuario de este framework han desarrollado y compartido con los demás sus propias implementaciones.

 Seguramente hayan más, pero yo sólo he encontrado tres:

  Si conocéis alguna más, os invito a que la compartáis con nosotros.

 Una de las más utilizadas es Modular Extensions, por su facilidad de uso y buena documentación.

 Resumiendo, lo único que hace HMVC es dividir las capas de la aplicación en “triadas” o grupos de tres.

 En la mayoría de las librerías mencionadas anteriormente se sobrescriben partes del núcleo de CodeIgniter, como el router, que es la parte encargada de direccionar las peticiones.

 

 Enlace | HMVC an Introduction and Application

 

23  Sistemas Operativos / GNU/Linux / Introducción al comando Find en: 28 Julio 2011, 21:44 pm
Introducción al comando Find


El comando por excelencia para buscar archivos en Linux es find. En este articulo se pretende dar
una introducción a este comando.

Para los ejemplos trabajare sobre una carpeta llamada "test" con la siguiente estructura:

Código
  1. mad@mad-laptop:~/test$ ls
  2. backup.sh      paso_referencia.c  punteros.c    Stuff
  3. find_intro.sh  Pilas_Colas.cpp    punteros.cpp


El ejemplo mas básico es buscar por nombre de fichero, en mi caso buscare un fichero llamado "punteros.c":

Código
  1. find -name "punteros.c"
  2. ./punteros.c

El parametro -name tiene en cuenta si la palabra tiene letras en minúscula o mayúscula, si se quiere
ignorar eso, hay que usar el parametro -iname:

Código
  1. mad@mad-laptop:~/test$ find -iname "pilas_colas.cpp"
  2. ./Pilas_Colas.cpp


Para limitar la búsqueda a un directorio, se hace de la siguiente manera:

Código
  1. mad@mad-laptop:~/test$ pwd
  2. /home/mad/test
  3. mad@mad-laptop:~/test$ find /home/mad/test -name punteros.c
  4. /home/mad/test/punteros.c

En mi caso, he limitado la búsqueda a la carpeta /home/mad/test.

Podemos indicarle hasta el nivel de profundidad al realizar la busqueda:

Código
  1. mad@mad-laptop:~/test$ sudo find / -maxdepth 3 -name backup.sh
  2. mad@mad-laptop:~/test$ sudo find / -maxdepth 4 -name backup.sh
  3. /home/mad/test/backup.sh

En el primero ejemplo estamos partiendo desde /(root) y le indicamos que busque el fichero "backup.sh" en los
tres primeros niveles, como veréis el comando no arroja ningún resultado.

A continuación lanzamos el mismo comando pero indicándole que busque en los cuatro primeros niveles y vemos que
encuentra el fichero deseado.

Se le puede indicar un rango de niveles de profundidad:

Código
  1. mad@mad-laptop:~/test$ sudo find / -maxdepth 3 -maxdepth 5 -name backup.sh
  2. /home/mad/test/backup.sh

En este ejemplo se buscara entre los niveles tres y cinco.

Mediante el parámetro -exec podemos ejecutar otros comandos a medida que se encuentran ficheros:

Código
  1. mad@mad-laptop:~/test$ find ./Stuff -iname "SoCkeTs.c" -exec md5sum {} \;
  2. d41d8cd98f00b204e9800998ecf8427e  ./Stuff/sockets.c

En este caso, se buscan un fichero llamado "SoCkeTs.c" y se le calcula el hash MD5.

Para invertir la búsqueda, se hace la siguiente manera:

Código
  1. mad@mad-laptop:~/test$ find . -not -iname "sockets.c"
  2. .
  3. ./punteros.c
  4. ./Stuff
  5. ./Stuff/pr0n.avi
  6. ./Stuff/biografia.txt
  7. ./Stuff/links.txt
  8. ./backup.sh
  9. ./punteros.cpp
  10. ./find_intro.sh
  11. ./paso_referencia.c
  12. ./Pilas_Colas.cpp

El comando anterior encuentra todos los ficheros cuyo nombre no es "sockets" y limitando la búsqueda
al directorio actual (mediante el punto .).

Una función muy útil en cuanto a auditorias de seguridad es la búsqueda de ficheros por permisos:

Código
  1. mad@mad-laptop:~/test$ find . -perm -g=x -type f -exec ls -l {} \;
  2. -rwxrwxrwx 1 mad mad 198 2011-07-28 20:49 ./find_intro.sh
  3. -r-xr-xr-x 1 mad mad 0 2011-07-28 20:49 ./paso_referencia.c

El ejemplo de arriba busca todos los ficheros situados en el directorio actual y que tengan permisos de ejecución
para "el grupo".

Otra función bastante útil puede ser la búsqueda de ficheros vacíos:

Código
  1. mad@mad-laptop:~/test$ find ~ -empty
  2. /home/mad/.evolution/mail/local/Outbox
  3. /home/mad/.evolution/mail/local/Drafts
  4. /home/mad/.evolution/mail/local/Sent
  5. /home/mad/.evolution/mail/local/Templates.ibex.index.data
  6. /home/mad/.evolution/mail/local/Templates
  7. /home/mad/.evolution/mail/local/Sent.ibex.index.data
  8. /home/mad/.evolution/mail/local/Outbox.ibex.index.data
  9. /home/mad/.evolution/mail/local/Drafts.ibex.index.data
  10. /home/mad/.evolution/calendar/config
  11. /home/mad/.evolution/memos/config

Eso buscara todos los ficheros vacíos de la carpeta personal del usuario.

Podemos buscar los ficheros mas grandes del sistema:

Código
  1. mad@mad-laptop:~/test$ sudo find . -type f -exec ls -s {} \; | sort -n -r | head -3
  2. 4 ./find_intro.sh
  3. 0 ./Stuff/sockets.c
  4. 0 ./Stuff/pr0n.avi

Eso buscara los tres ficheros mas grandes de la carpeta "this" o en la que estamos.

Usando la búsqueda por tipo podemos por ejemplo, buscar todos los ficheros ocultos:

Código
  1. mad@mad-laptop:~/test$ find ~ -type f -name ".*"
  2. /home/mad/.hgrc
  3. /home/mad/.recently-used
  4. /home/mad/.xvidcaprc
  5. /home/mad/.scapy_history

Recuerdo que en Unix/Linux los ficheros ocultos tienen un punto delante del nombre, en este caso se buscan
todos los que empiezan por un punto, o sea, todos los ocultos.

Otra función bastante útil es la búsqueda de ficheros por tamaño:

Código
  1. mad@mad-laptop:~/test$ sudo find ~ -size +10M

Encontrara todos los ficheros mayores de diez megas en la carpeta personal del usuario.

Para las operaciones que mas usamos, podemos crear un alias:

Código
  1. mad@mad-laptop:~/test$ alias rmao="find . -iname a.out -exec rm {} \;"

Ese alias, al ejecutarlo, borrara todos los ficheros con el nombre "a.out" encontrados en el
directorio actual.


Este artículo está basado en 15 Practical Linux Find Command Examples.

En el blog del autor, podéis encontrar la segunda parte del artículo: 15 Awesome Linux Find Command Examples (Part2).


24  Comunicaciones / Redes / Introducción rápida a Ethtool en: 26 Julio 2011, 22:20 pm
 Ethtool es una herramienta para gestionar los parámetros de nuestra tarjeta de red en un sistema Unix/Linux.

 Por defecto no viene instalada en casi ningún sistema, por lo que procedemos a instalarla:

Código
  1. apt-get install ethtool

Si véis la ayuda del programa os daréis cuenta de que tiene infinidad de usos, lamentablemente en este artículo no se
 cubrirán todos.

 1.) Listar los parámetros del interfaz de red
 Le pasamos como parámetro el nombre del interfaz:

Código
  1. ethtool eth0

Y el resultado es el siguiente:

 

 Muestra información como la velocidad, el tipo de duplex:
 - Full Duplex: Envía y recibe paquetes al mismo tiempo, este modo se utiliza cuando el dispositivo ethernet está conectado a un switch.
 - Half Duplex: Solo se envía o se reciben paquetes al mismo tiempo, usado cuando se conecta a un hub.
 - Auto Negotiation: Si está activado, se decide de forma automática el modo de operación.

 Para desactivar la opción de auto negociación, se hace de la siguiente manera:

Donde eth0 es mi interfaz de red.

Código
  1. ethtool -s eth0 autoneg off

2.) Cambiar la velocidad del adaptador
 
Cambia la velocidad de transmisión del adaptador:

Código
  1. ethtool -s eth0 speed 100 autoneg off

Después hay que levantar la tarjeta de red con:
Código
  1. ifup eth0

3.) Ver los drivers de la tarjeta de red
 Muestra la versión del driver, firmware y detalles del bus:

Código
  1. ethtool -i eth0

4.) Estadísticas sobre el adaptador

Código
  1. ethtool -S eth0

Para hacer permanentes los cambios, en Ubuntu, hay que editar el fichero /etc/network/interfaces y agregar el comando de configuración ethtool, de la siguiente manera:

Código
  1. post-up ethtool -s eth2 speed 1000 duplex full autoneg off

Este artículo está basado en el original 9 Linux ethtool Examples to Manipulate Ethernet Card (NIC Card).

 

25  Comunicaciones / Redes / Medir el ancho de banda entre dos nodos en una LAN en: 20 Julio 2011, 10:44 am
Medir el ancho de banda entre dos nodos en una LAN


Como administrador de una red es importante saber a que velocidad circulan los datos en nuestra red, pudiendo optimizar la red o detectar cuellos de botella.

Para ésta tarea hay varias herramientas, en éste artículo me centraré en el uso de Iperf [Wiki], una herramienta gratuita de tipo cliente-servidor para medir el ancho de banda entre dos nodos. Se trata de una herramienta de consola que mide el tráfico TCP y UDP, pero se ha desarrollado una interfaz gráfica (GUI) en java, llamada JPerf, cuyo uso veremos más adelante.

Introducción a IPerf

Al tratarse de una arquitectura cliente-servidor, esta herramienta hay que instalarla en los dos nodos en los que se realizará la prueba. Es multiplataforma y opensource, pero en este tutorial usaré dos máquina con GNU/Linux, al final encontraréis como usarlo en Windows.

Instalar IPerf:

Código
  1. apt-get install iperf


Configurar IPerf

En el equipo que hará de servidor hay que ponerlo en modo escucha y en el que se conectará habrá que indicarle la IP del nodo servidor:

Servidor:
Código
  1. iperf -s



Cliente:

Código
  1. iperf -c <ip_servidor>

Después de conectarnos al cliente se realizará la prueba y saldrá el resultado en MB/segundo.




Se disponen de muchas más opciones para realizar el testeo.

Para el cliente:

-b, --bandwidth #[KM]
for UDP, bandwidth to send at in bits/sec (default 1 Mbit/sec,
implies -u)

-c, --client
Ejecutarse en modo cliente y conectarse a un servidor

-d, --dualtest
Se realiza un test bidireccional

-n, --num
#[KM] Número de paquetes a transmitir

-r, --tradeoff
Test bidireccional individual

-t, --time
# Tiempo en segundo de transferencia (por defecto 10 segundos)

-F, --fileinput
Configurar un fichero como datos de transferencia

-I, --stdin
Configurar entrada de datos por consola como datos de transferencia

-L, --listenport #
Puerto para recibir los tests bidireccionales

-P, --parallel
# Número de procesos paralelos

-T, --ttl
# time-to-live, para multicast (por defecto 1)

Miscellaneous:
-h, --help
Muestra la ayuda del programa

-v, --version
Muestra la versión actual

[KM] Indica las opciones que soporta, una K para kilo o M mega.


A continuación vamos a ver algunos ejemplos de uso de los siguientes parámetros.


Formato de Datos:

Mediante el parámetro -f podemos indicarle a la aplicación en que formato debe  mostrarnos los datos transferidos. Se usará para: bits(b), bytes(B), kilobits(k), kilobytes(K), megabits(m), megabytes(M), gigabits(g) ó gigabytes(G).

Cliente:
Código
  1. iperf -c 192.168.1.100 -f G


Servidor:
Código
  1. iperf -s


Test Bi-Direccional:

Por defecto, solo se mide el tráfico proveniente del cliente, pero si usamos el parámetro -r en el servidor, el testeo se realizará en los dos nodos.

Cliente:
Código
  1. iperf -c 192.168.1.100 -r


Servidor:
Código
  1. iperf -s

Si se quiere medir de forma simultanea, hay que usar -d y si se quiere medir de forma secuencial, es con el parámetro -r

Cliente:
Código
  1. iperf -c 192.168.1.100 -d


Servidor:
Código
  1. iperf -s




Tamaño de los Datagramas:

Se puede especificar el tamaño que tendrán los datagramas, mediante el parámetro -w y un valor comprendido entre 2 y 65,535 bytes.

Cliente:
Código
  1. iperf -c 192.168.1.100 -w 2000


Servidor:
Código
  1. iperf -s -w 4000


Tiempo, puerto e interval:

Al igual que el comando "ping" permite indicar un tiempo mediante -t, un intervalo mediante -i y un puerto mediante -p

Cliente:
Código
  1. iperf -c 192.168.1.100 -p 1337 -t 15 -i 3


Servidor:
Código
  1. iperf -s -p 1337



Hay muchos más parámetros que nos pueden facilitar las tareas, el resto lo dejo en vuestras manos.


Introducción a JPerf

Como ya he dicho anteriormente, JPerf es una GUI para IPerf. Lo primero que haremos será descargarla desde la página oficial del proyecto (http://code.google.com/p/xjperf/downloads/list).

Al estar hecho en Java, también necesitaremos el VM de Java. En Windows tendremos que ejecutar un .exe y en Linux o Mac, un .sh mediante consola y con permisos de ejecución.




Configurar JPerf

Al tratarse de una interfaz gráfica, suele ser bastante intuitivo, por lo que no se necesitarán muchas instrucciones.



Como podéis ver, los parámetros son los mismos, y lo único que hace, es mostrar mediante una GUI los resultados obtenidos.

En esta última prueba, la he realizado desde un nodo con Windows XP conectandome a un servidor Linux. Os dejo juguetear con esta aplicación.


Documentación y Enlaces externos:
_Compilar Iperf en Windows con Cygwin.
_Man Pages para IPerf | Mirror
_Documentación Extendida del IPerf
26  Comunicaciones / Android / Mapas Off-Line para Android en: 18 Julio 2011, 16:44 pm
Nos vamos de vacaciones a un país extranjero y no sabemos dónde está la pizzería de la calle Slöjdgatan 10, 111 57 Stockholm. Pero tranquilo, tienes tu Android con GPS. Ay, no, que estoy en Suecia y no puedo utilizar la tarifa de datos con Google Maps. Pues si queridos lectores, todo el mundo sin excepción se ha encontrado en esta situación y para ello existen los mapas Offline. Bueno, también sirven por si no queremos consumir 3G dentro de nuestro país xD. Os queremos presentar las mejores aplicaciones de mapas offline y las vamos a dividir según los mapas que utilicen.

Open Street Maps
MapDroyd

Está analizada con más detalle aquí, pero en resumen es una aplicación que utiliza los mapas de OpenStreet (libres). Abres la aplicación, escoges la región de la cual te quieres descargar los mapas y voilà Os recomendamos leeros el análisis completo.

OsmAnd


Un proyecto OpenSource que tiene la intención de facilitar la navegación GPS tanto Online como Offline. Tiene unas cuantas funciones más que MapDroyd y la interfaz gráfica está mucho más cuidada. Mucha más información y fotos en su web oficialy su wiki . Una buena opción que podéis probar.

Todos los servicios de mapas (Google Maps, OpenStreet, Microsoft Maps…)
Todas las aplicaciones que mencionamos a continuación vienen SIN mapas. Tendremos que previamente crear los mapas (al gusto) y añadirlos manualmente a la SD. A cambio tenemos unos mapas de mayor calidad y precisión (Google Maps) y siguen siendo offline.

Antes de nada vamos a explicar como funciona esto. Hay que utilizar el programa (gratis y para todas las plataformas) Mobile Atlas creator o también conocido como TreckBuddy. En su página web encontraréis más información y lo podréis descargar.

¿Cómo creo los mapas?

No os preocupéis que es muy pero que muy fácil. Los compañeros de OruxMaps han creado un magnífico tutorial que os recomiendo o bien pasaros por este blog. Repito, es muy fácil y podéis escoger el nivel de detalle que queráis (del 1-17) siendo 1 la visión global del mundo a 17 el máximo nivel de zoom de Google Maps. Por descontado, el tamaño de vuestro mapa variará dependiendo de la cantidad de detalle que pongáis.

Veamos ahora las diferentes aplicaciones.

OruxMaps

Una señora aplicación creada por unos españoles y completamente gratuita. Con OruxMaps tienes

  • Visor de mapas online (Google, Microsoft, Yandex, WMS,…).
  • Cuando se navega online, las imágenes se guardan para su uso offline.
  • Map Creator. Partiendo de mapas online, se pueden crear mapas offline.
  • Visor de mapas offline. Utiliza mapas calibrados para OruxMaps con OruxMapsDesktop o TB Atlas Creator (ver secciones de Descargas y Manuales).
  • Visor de mapas por capas offline. Ver manual OruxMapsDesktop.
  • Rotación del mapa, con la brújula o en la dirección seguida (mapas offline).
  • TrackLog: permite guardar la ruta trazada (formato gpx y kml).
  • Visualizar rutas/tracks (formato gpx y kml).
  • Analizar rutas anteriores (formato gpx y kml).
  • Carga automática de mapas, al salirse del mapa actual, o al encontrar un mapa más detallado.
  • Zoom sobre los mapas
  • Guardar y editar Waypoints (Puntos de Interés)
  • Subir o descargar Rutas desde Everytrail.com
  • Tracking en vivo con MapMyTracks.com
  • Muestra Coordenadas, rumbo, velocidad, altitud, distancia,…
  • ¡Y esto es sólo el comienzo!
Vamos, una pequeña maravilla. No queda ni que decir que la interfaz gráfica está muy cuidada y en su web disponen devarios manuales realizados para que lo entiendas al máximo. Desde aquí les felicitamos por su proyecto porque nos encanta, está bien hecho y demuestra el nivel de los programadores del país. Enhorabuena

Rmaps

Una aplicación mucho más sencilla pero que funciona igualmente con este tipo de mapas. Podrás buscar direcciones, obtener puntos de interés y exportar tus recorridos. Así como importar rutas previamente hechas. No hay mucho más que decir, cumple con su propósito.

Maverick

Otra aplicación de la que ya hemos hablado anteriormente. Muy completa, con una interfaz gráfica muy atractiva y que funciona tanto en modo online como offline. Revisad el artículo que hicimossi os interesa.

Y estas son las opciones que os hemos dado desde El Androide Libre. Esperamos que os hayan gustado y que disfrutéis de vuestras vacaciones.

Descargas
MapDroyd



OsmAnd



OruxMaps



Rmaps



Maverick Lite (hay una Pro)




Fuente | ElAndroideLibre
Más Información:
_True Offline maps for your Android.
_GMaps 5.0 (Permite descargar mapas).

27  Programación / PHP / Auth Logger - Librería simple para registrar intentos de logueo en CodeIgniter en: 9 Julio 2011, 20:44 pm
Se trata de una pequeña librería adaptada para CodeIgniter para registrar los intentos de log-in en nuestro sistema de autenticación. Para guardar los logs se emplea un fichero xml.

Código
  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2. //begin AuthLogger.php -- Library
  3.  
  4.  
  5. class AuthLogger {
  6.  
  7. /*-----------------------------------------------------------------------*/
  8. /**
  9. * Class Settings
  10. * @logFile = Name of the log file
  11. * @logPath = The path where the logFile will
  12. *  be saves. By default it saves it
  13. *  in the CI logs folder.
  14. */
  15. private $logPath;
  16. private $logFile = 'auth_logs.xml';
  17.    private $user, $pass, $ip, $useragent;
  18.  
  19. /*-----------------------------------------------------------------------*/
  20. /**
  21. * The constructor of the Class.
  22. * It needs and array with the parameters.
  23. */
  24. function __construct($params)
  25.    {
  26.     //The logPath it can be changed if the lib
  27.     // won't be used with CI
  28. $this->logPath = APPPATH.'logs/';
  29.        $this->user = $params['user'];
  30.        $this->pass = $params['pass'];
  31.        $this->ip = $params['ip'];
  32.        $this->useragent = $params['useragent'];
  33.  
  34.        $this->addLogs($this->user, $this->pass, $this->ip, $this->useragent);
  35.  
  36.  
  37.    }
  38.  
  39. /*-----------------------------------------------------------------------*/
  40. /**
  41. * Creates or Adds the logs to the XML File.
  42. * It's an internal private function.
  43. */
  44.    private function addLogs($user, $pass = 'Good Auth', $ip, $useragent)
  45.    {
  46.  
  47. if (!file_exists($this->logPath.$this->logFile)) {
  48. $xml = new SimpleXMLElement("<logdata></logdata>");
  49. } else {
  50. $xml = simplexml_load_file($this->logPath.$this->logFile);
  51. }
  52.  
  53.        $authLog = $xml->addChild('auth_log');
  54.        $authLog->addChild('user', $user);
  55.        $authLog->addChild('password', $pass);
  56.        $authLog->addChild('ip', $ip);
  57.        $authLog->addChild('user_agent', $useragent);
  58.        $authLog->addChild('date', date("d F Y - G:i:s"));
  59.        $xml->asXML($this->logPath.$this->logFile);
  60.  
  61.    }
  62. /*-----------------------------------------------------------------------*/
  63.  
  64. }
  65.  
  66. //end AuthLogger.php -- Library
  67. ?>
  68.  

En principio fue desarrollada para usarla con CodeIgniter, por lo tanto solamente hay que copiarla en la carpeta application/libraries.
Si se quiere usar sin este framework, hay que incluír la clase a vuestro script.

Modo de Uso

CodeIgniter:
Crear un array con asociativo con los siguientes valores, los índices asociativos del array no se pueden cambiar, al menos que se cambie en la librería:

Código
  1. $params = array (
  2.                        'user'      => $user,
  3.                        'pass'          => $pass',
  4.                        'ip'            => $this->session->userdata('ip_address'),
  5.                        'useragent' => $this->session->userdata('user_agent')
  6.                    );
  7.  

Donde user es el usuario que hemos recibido del formulario, pass es la contraseña e ip y useragent son la IP del posible
atacante y el useragent (que contendrá el navegador y el sistema operativo).


Después cargaremos la librería y en la misma sentencia le pasamos los parámetros:

Código
  1.       $this->load->library('AuthLogger', $params);
  2.  

Y los datos se guardarán en nuestro archivo de logs en un formato xml de la siguiente manera:

Código
  1. <?xml version="1.0"?>
  2. <logdata>
  3. <auth_log>
  4. <user>mad</user>
  5. <password>mad</password>
  6. <ip>127.0.0.1</ip>
  7. <user_agent>Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/</user_agent>
  8. <date>08 July 2011 - 22:38:51</date>
  9. </auth_log>
  10. <auth_log>
  11. <user>mad</user>
  12. <password>mad</password>
  13. <ip>0.0.0.0</ip>
  14. <user_agent>Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/</user_agent>
  15. <date>08 July 2011 - 22</date>
  16. </auth_log>
  17. <auth_log>
  18. <user>mad</user>
  19. <password>mad</password>
  20. <ip>127.0.0.1</ip>
  21. <user_agent>Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/</user_agent>
  22. <date>08 July 2011 - 22:38:51</date>
  23. </auth_log>
  24. </logdata>
  25.  

Por si este archivo cae en manos ajenas, lo mejor sería no guardar la verdadera password en el log.
Para eso, en nuestra aplicación deberíamos implementarla algo así:

Código
  1. $user = $this->input->post('user');
  2. $pass = $this->input->post('password');
  3.  
  4. if ($this->Users_model->checkUser($user, $pass)) {
  5.    //Good User Credentials
  6.  
  7.    /* AuthLog Parameters and Lib */
  8.    $params = array (
  9.        'user'      => $user,
  10.        'pass'      => 'Good Authentification',
  11.        'ip'        => $this->session->userdata('ip_address'),
  12.        'useragent' => $this->session->userdata('user_agent')
  13.    );
  14.    $this->load->library('AuthLogger', $params);
  15.    /* AuthLog Parameters and Lib */
  16.  
  17. } else {
  18.    //BAD User Credentials
  19.  
  20.    /* AuthLog Parameters and Lib */
  21.    $params = array (
  22.        'user'  => $user,
  23.        'pass'  => $pass,
  24.        'ip'    => $this->session->userdata('ip_address'),
  25.        'useragent' => $this->session->userdata('user_agent')
  26.    );
  27.    $this->load->library('AuthLogger', $params);
  28.    /* AuthLog Parameters and Lib */
  29.  
  30. }
  31.  

Simplemente, si los datos del usuario proporcionados son válidos, sobrescribir el parámetro 'pass' por un texto alternativo, también se puede aplicar al
campo del usuario, para más seguridad.

Uso sin framework:

Como ya lo he mencionado, esta librería ha sido creada con el fin de usarla junto con CodeIgniter, pero se puede usar con cualquier proyecto y framework
fácilmente. Se haría de la siguiente manera:

Código
  1.    require_once('authLogger.class.php');
  2.    $authLogger = new AuthLogger($params);
  3.  

Los parámetros son los mismos que en el caso de CodeIgniter. No olvidéis aplicar el mismo o un mecanismo de autenticación parecido al mencionado en el ejemplo de uso
con CodeIgniter, para no incluir los datos verdaderos de acceso en el registro.
28  Programación / PHP / Crud Generator en Codeigniter en: 6 Julio 2011, 20:28 pm

Una de las cosas que diferencia a Codeigniter con otros frameworks en PHP es que no genera controladores ni modelos de forma automática, como lo hace Zend Framework.

Al ser un proyecto abierto, algunos usuarios han creado sus propias extensiones, como ha pasado con CRUD Generator. En realidad se podría decir que se trata de una aplicación y no de un módulo del núcleo o alguna librería, ya que, lo único que hace es generar el código necesario para crear, leer, actualizar y borrar tablas.

 El generador creará los siguiente ficheros:

Views
  • {Controller_name}_list.php
  • {Controller_name}_add.php
  • {Controller_name}_edit.php

Model
  • Codegen_model.php -> a generic model, you can use you own model if you want.

Controller
  • {Controller_name}.php


 El autor de la aplicación nos da más detalles sobre la aplicación, como que no es CRUD Generator. No se trata de la opción conocida como scaffolding, genera un código sencillo, a parte de los ficheros mencionados, también crea un controlador llamado form_validation.php encargado de validar los formularios.

 Para instalarlo, solo hay que descomprimirlo en nuestra carpeta htdocs, configurar la base de datos en /config/database.php e ir a la aplicación. El autor deja una demo online, para los que quieran probarlo.

 Enlaces: Página Oficial | DescargarMirror.

 

29  Media / Juegos y Consolas / Grupo steam de elhacker.NET en: 30 Junio 2011, 20:09 pm

Grupo steam de elhacker.NET



Acabo de crear un grupo en Steam para todos los usuario del foro así que ¡cualquiera es bienvenido!

Para unirse al grupo se necesitará una cuenta Steam, darse de alta es gratis y no requiere introducir ninguna cuenta bancaria o demás.

Aunque no compréis juegos, os alegrará saber que Steam a veces regala juegos. Como es el caso de Team Fortress 2 y algunos de Valve.

El fin del grupo es organizar torneos y partidas cada cierto tiempo y pasar un buen rato con los compañeros del foro.

La dirección del grupo es: http://steamcommunity.com/groups/elhackernet


Aprovechad que TeamFortress 2 es gratis y se puede jugar en línea. Se harán torneos de Counter Strike Source, Team Fortress 2 y demás juegos que se propongan.



30  Foros Generales / Sugerencias y dudas sobre el Foro / Únete al Grupo Steam elhacker.NET en: 30 Junio 2011, 20:09 pm

Grupo Steam de elhacker.NET



Acabo de crear un grupo en Steam para todos los usuario del foro así que ¡cualquiera es bienvenido!

Para unirse al grupo se necesitará una cuenta Steam, darse de alta es gratis y no requiere introducir ninguna cuenta bancaria o demás.

Aunque no compréis juegos, os alegrará saber que Steam a veces regala juegos. Como es el caso de Team Fortress 2 y algunos de Valve.

El fin del grupo es organizar torneos y partidas cada cierto tiempo y pasar un buen rato con los compañeros del foro.

La dirección del grupo es: http://steamcommunity.com/groups/elhackernet


Aprovechad que TeamFortress 2 es gratis y se puede jugar en línea. Se harán torneos de Counter Strike Source, Team Fortress 2 y demás juegos que se propongan.



Páginas: 1 2 [3] 4 5 6 7 8 9 10
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines