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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Temas
Páginas: 1 [2] 3 4 5 6 7 8 9 10
11  Seguridad Informática / Criptografía / Presentaciones de la Crypto 2011 en: 11 Septiembre 2011, 22:05 pm
Crypto es una conferencia internacional sobre criptografía, que se celebra todos los años en la Universidad de California.

Citar
Ya nos podemos descargar las presentaciones de la conferencia Crypto 2011 celebrada en Santa Barbara, California los pasados 14 al 18 de agosto.


Leído en CyberHades
Página Oficial | Crypto
Página con el programa.
12  Media / Juegos y Consolas / Desarrollo de Videojuegos 3D con Unity (Unity 3 Game Development) [eBook] en: 10 Septiembre 2011, 12:26 pm


Completo manual sobre el desarrollo de videjuegos usando Unity 3. Está en Inglés y tiene 380 páginas. El .rar pesa poco más de 80 MB.

Incluye todos los ejemplos mostrados en el libro.

Descargar desde MultiUpload:
Código:
 http://www.multiupload.com/ACBFX3XKB1

13  Seguridad Informática / Seguridad / MOVIDO: Duda estudiante en: 7 Septiembre 2011, 10:54 am
El tema ha sido movido a Criptografía.

https://foro.elhacker.net/index.php?topic=338382.0
14  Informática / Software / Controlando la memoria RAM en Firefox en: 27 Agosto 2011, 22:37 pm
 A estas alturas creo que todos nos hemos dado cuenta de que a veces el consumo de RAM en Firefox se puede disparar hasta límites bastante altos, mientras más pestañas abiertas tengamos, más memoria RAM consumirá.

 Una de las mejores características de Firefox es la multitud de addons/plugins, con los que también aumenta el consumo de memoria. Una cosa en la que algunos usuarios no se suelen fijar es la memoria virtual, en este caso, el artículo está orientado a un sistema operativo Windows.

 Podemos calcular la memoria virtual con la ayuda de una formula: Memoria Virtual = (Memoria Física Total – Memoria Física Usada) + Tamaño Máximo del Pagefile. No es una formula muy exacta, pero es bastante orientadora, no voy a entrar en detalles sobre el fichero pagefile, dado que, no es el tema de este artículo.

 Para monitorizar mejor la memoria RAM, primero debemos mostrar más información sobre los recursos utilizados que se muestran en el Administrador de Tareas, para eso primero lo abriremos (CTRL+ALT+SUPR) y en el menú Ver-> Seleccionar Columnas -> Y marcamos las casillas que aparecen en la imagen de abajo.

 

 Esto nos dará más información sobre los recursos utilizados. En este ejemplo haremos uso de un addon para Firefox que ayuda a liberar algo de memoria, abajo citaré los tres que he probado, aunque seguramente hayan algunos más (si conocéis más y mejores os invito a que nos lo digáis):

 

Vamos a instalar Memory Fox y a observar si hay algún cambio. En mi caso al hacer la comparación he tenido el mismo número de pestañas abiertas.ç

 Después de instalarlo, veremos que en la esquina inferior derecha a aparecido el logo del addon (letra M rodeada de un círculo), al hacer clic derecho sobre el logo nos aparecerán varias opciones, el Addon se puede ejecutar de dos maneras, sólo para el Navegador o para todos los procesos, en mi caso lo aplicaré sólo al proceso del navegador, o sea, la primera opción.

 

 Una vez activado el addon, vamos a observar los cambios. Como por arte de magia, veremos que la cantidad usada ha disminuido notablemente.

 Antes:

 

 Después:

 

 Claramente, vemos que el addon está haciendo su trabajo de forma muy eficaz.

 Podemos ver como el uso de memoria física ha disminuido y se ha aplicado parte de la carga sobre la memoria virtual.

 Si queréis exprimir más este tipo de addons, os invito a que probéis los otros dos que he mencionado. Cabe destacar que estos addons funcionan solamente en Windows, para Linux aún no he probado ninguno, tampoco sé si los hay.

 

15  Programación / Desarrollo Web / SnippetBox - Guarda tus códigos Online en: 24 Agosto 2011, 15:59 pm
Se trata de una pequeña aplicación para guardar tus códigos en la nube/online para tenerlos siempre a mano, está orientada para guardar fragmentos de código(clases o funciones) y no proyectos enteros. Algunas características destacables:

  • Los códigos marcados como públicos se pueden compartir con visitantes.
  • Los códigos se pueden descargar en un fichero con extensión correspondiente al lenguaje.
  • Se permite añadir comentarios extra al código en un apartado especial (se admite HTML).
  • Filtrado por Fecha, Lenguaje y Título, como un Buscador.


Todo el código está disponible (opensource) desde el repositorio (el enlace está en la página del proyecto). Si a alguien le interesa probarlo, dispongo de una versión de demostración online (en un hosting) que me contacte por privado y le pasaré el enlace y los credenciales para probarla.

 

 Welcome to the home of SnippetBox project. SnippetBox it’s a webapplication that lets you store your code snippets online.

 Initially i made it for my own use, i needed a simple webapplication to store my snippet codes online. It seems to be a nice idea, so i decided to share it with everybody.

 If you have some experience programming in PHP and you have some basic notions in CodeIgniter, you can contact us and collaborate in the project, you will have access to the online subversion repository and permission to edit the project website.

 Developed in PHP using CodeIgniter and storing the data in a MySQL database engine.

 Actually there are two versions:

 
  • Personal – made for a single user.
  • MultiUser – multiple users (they can create accounts). This version is actually in development.


Special thanks to WHK, Novlucker and Nakp for their help and suggestions.

 All the code is opensource under the GNU/GPL v3 license. Downloading and using this application you will also must agree the CodeIgniter license.

 Página Oficial del Proyecto | SnippetBox

16  Seguridad Informática / Seguridad / Monitoriza las llamadas a las API's del sistema en: 24 Agosto 2011, 12:14 pm

Una buena forma de "destripar" algún malware para entender su funcionamiento es ver a que API se llaman desde la aplicación o cualquier servicio.

Para eso vamos a utilizar API Monitor, una herramienta desarrollada por Rohitab, hay un versión para sistemas de 32bits y 64 bits, disponiendo también de una versión portable, que sólo hay que descargar y descomprimir, es la que yo he utilizado al escribir este artículo. Procedemos a descargar la versión que corresponda a nuestro sistema o la portable y la ejecutamos.



La versión portable descomprimida pesa poco más de unos 20 MB, por lo que, podemos guardarla en una memoria USB junto con las demás utilidades que usamos en nuestro día a día.

Para probar la herramienta he usado un malware que tenía por ahí para hacer prueba, en una máquina virtual con VirtualBox.

Al arrancar la aplicación podemos seleccionar de una lista las API que queremos monitorizar.



O filtrar por librerías .dll



Los procesos a monitorizar los podemos elegir de una lista con los procesos en ejecución o crear uno nuevo (Menú File -> Monitor New Process).

Yo en mi caso monitorizaré un proceso llamado sol.exe (se trata del juego Solitaire que viene con el Windows) que se está ejecutando en el sistema (sino se está ejecutando, lo podemos ejecutar eligiendo Monitor New Process).

En la pestaña Monitoring - Output podemos ver una lista de .dll que han sido cargadas.
Código:
sol.exe: Monitoring Module 0x01000000 -> C:\WINDOWS\system32\sol.exe.
sol.exe: Monitoring Module 0x7C910000 -> C:\WINDOWS\system32\ntdll.dll.
sol.exe: Monitoring Module 0x7C800000 -> C:\WINDOWS\system32\kernel32.dll.
sol.exe: Monitoring Module 0x77BE0000 -> C:\WINDOWS\system32\msvcrt.dll.
sol.exe: Monitoring Module 0x77DA0000 -> C:\WINDOWS\system32\ADVAPI32.dll.
sol.exe: Monitoring Module 0x77E50000 -> C:\WINDOWS\system32\RPCRT4.dll.
sol.exe: Monitoring Module 0x77FC0000 -> C:\WINDOWS\system32\Secur32.dll.
sol.exe: Monitoring Module 0x77EF0000 -> C:\WINDOWS\system32\GDI32.dll.
sol.exe: Monitoring Module 0x7E390000 -> C:\WINDOWS\system32\USER32.dll.
sol.exe: Monitoring Module 0x70140000 -> C:\WINDOWS\system32\CARDS.dll.
sol.exe: Monitoring Module 0x7E6A0000 -> C:\WINDOWS\system32\SHELL32.dll.
sol.exe: Monitoring Module 0x77F40000 -> C:\WINDOWS\system32\SHLWAPI.dll.
sol.exe: Monitoring Module 0x773A0000 -> C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5705_x-ww_36cfed49\COMCTL32.dll.
sol.exe: Monitoring Module 0x5CF60000 -> C:\WINDOWS\system32\ShimEng.dll.
sol.exe: Monitoring Module 0x6FDB0000 -> C:\WINDOWS\AppPatch\AcGenral.DLL.
sol.exe: Monitoring Module 0x774B0000 -> C:\WINDOWS\system32\ole32.dll.
sol.exe: Monitoring Module 0x76B00000 -> C:\WINDOWS\system32\WINMM.dll.
sol.exe: Monitoring Module 0x770F0000 -> C:\WINDOWS\system32\OLEAUT32.dll.
sol.exe: Monitoring Module 0x77BB0000 -> C:\WINDOWS\system32\MSACM32.dll.
sol.exe: Monitoring Module 0x77BD0000 -> C:\WINDOWS\system32\VERSION.dll.
sol.exe: Monitoring Module 0x76630000 -> C:\WINDOWS\system32\USERENV.dll.
sol.exe: Monitoring Module 0x5B150000 -> C:\WINDOWS\system32\UxTheme.dll.
sol.exe: Monitoring Module 0x76340000 -> C:\WINDOWS\system32\IMM32.DLL.
sol.exe: Monitoring Module 0x746B0000 -> C:\WINDOWS\system32\MSCTF.dll.
sol.exe: Monitoring Module 0x75160000 -> C:\WINDOWS\system32\msctfime.ime.

Y en la pestaña Summary veremos todas las llamadas que se han realizado, en este caso han sido 30000.



Vemos que HeapFree (Libera un bloque de memoria reservado por HeapAlloc) se llama desde Kernel32.dll. En el cuadro de llamadas (situado más abajo) podemos ver la posición del bloque de memoria que se quiere liberar.

A partir de aquí todo depende de la imaginación de cada uno, si trasteáis más con la aplicación veréis que se pueden poner "breakpoints" cosa que nos puede servir en algunos casos.

Como sabréis hay más herramientas y métodos para monitorizar las API, esto es sólo una alternativa.

Como podemos ver en los tutoriales realizados por el autor, API Monitor sirve para algo más que monitorizar las llamadas API, también se puede usar para eliminar algunas restricciones de los software de pago o esniffar el tráfico ssl de Firefox.

Página Oficial | Rohitab - API Monitor
17  Comunicaciones / Redes / Network Monitor - Sniffer desarrollado por Microsoft en: 24 Agosto 2011, 11:17 am



Seguro que todos conocemos Wireshark, uno de los sniffers más conocidos junto con Cain.

Sabiendo manejar bien Wireshark ya no necesitas ninguno, pero decidí darle una oportunidad a NetworkMonitor. Se trata de un sniffer desarrollado por Technet (como sabréis, forma parte de Microsoft).

Primero nos dirigimos a su página oficial y lo descargamos. Una vez instalado veremos la interfaz de inicio.



En en cuadro de abajo, seleccionamos la red que queramos monitorizar y después creamos una nueva sesión.

Al empezar el monitoreo, a la derecha veremos todos las aplicaciones que han enviado algún paquete, si seleccionamos una de ellas, los logs se verán limitados solamente a esa aplicación.






Otra cosa que me llamó la atención, es la funcionalidad de filtrado.



Permitiendo crear filtros personalizados. Desde la página oficial nos proveen varios tutoriales (videos entre otros) para aprender a desenvolvernos con esta herramienta.

Filtering

User Interface

Capturing

Troubleshooting

Experts and Tools

Network Monitor API

Network Monitor Videos

Página Oficial | Network Monitor.
18  Programación / PHP / Introducción a la base de datos MongoDB en PHP en: 14 Agosto 2011, 20:28 pm
No voy a entrar en detalles sobre el concepto NoSQL ni a explicar de forma detallada qué es y para que sirve. Si estás leyendo este artículo, doy por hecho que tienes unos conocimientos básicos de PHP y de dases de datos.

Los chicos de GenbetaDev han dedicado dos artículos para explicar el concepto NoSQL y una introducción a MongoDB:

_El concepto NoSQL, o cómo almacenar tus datos en una base de datos no relacional
_Una introducción a MongoDB


Recomiendo leer los dos artículos citados más arriba si aún se tienen dudas sobre este tipo de bases de datos o sobre MongoDB. En este artículo nos centraremos en el uso de MongoDB desde una aplicación escrita en lenguaje PHP.

Instalar MongoDB
Lo primero que hay que hacer, es descargar desde la página oficial la versión de Mongo correspondiente a nuestro sistema operativo, en mi caso lo instalaré en un sistema operativo Windows de 32 bits. Los desarrolladores nos recomiendan usar la versión de 64 bits (claramente se necesita un Sistema Operativo de 64 bits para que funcione), dado que, la versión de 32 bits solamente permite un tamaño máximo de 2 GB de la base de datos.




Una vez descargada la versión que corresponde a nuestro SO, la descomprimimos en alguna carpeta.

El siguiente paso es crear las carpetas donde MongoDB guardará las bases de datos, es recomendable crearlas en el raíz del disco local. Yo en mi caso, las he creado dentro del disco local C. Hay que crear una carpeta llamada data y dentro de esta carpeta, otra, llamada db.

Si lo hacemos usando la consola, quedaría algo así:

C:\ mkdir \data
C:\ mkdir \data\db
C:\ tree data
C:\>tree data
Listado de rutas de carpetas
El número de serie del volumen es C490-7C5B
C:\DATA
└───db

C:\>
A continuación, nos dirigimos a la carpeta donde hemos descomprimido los archivos descargados anteriormente. Dentro de esa carpeta, lo que más nos interesa es el directorio /bin, dicho directorio podemos agregarlo a la variable de entorno del sistema, si no queremos acceder siempre a esa carpeta cuando queramos arrancar el servidor.

Los ficheros más importantes son mongod.exe y mongo.exe. El primero es el "daemon" o el servidor en si, mientras que el segundo es la consola de administración.

Es posible ejecutar el servidor en modo standalone, pero en nuestro cosa, lo instalaremos como un servicio del sistema, para eso hay que ejecutar el siguiente comando:

C:\mongo\bin>mongod --install  --serviceName MongoDB --serviceUser root --servicePassword root --logpath ..\log\log.txt
Con el parámetro --serviceName le indicamos el nombre que tendrá el servicio, con los dos siguientes, el usuario y la contraseña, mientras que con el último, le indicamos un archivo de texto donde en caso de error, pueda volcar la información de depuración, dicho archivo tiene que estar previamente creado.

Ahora si miramos en los servicios del sistema, observaremos que uno nuevo se ha creado:





 
Para arrancar el servicio, podemos lanzar en la consola lo siguiente:

net start MongoDB
Pero si no queremos instalarlo como servicio, podemos ejecutar directamente el comando mongod sin ningún parámetro y tendremos el servidor corriendo de forma temporal.

C:\mongo\bin>mongod
mongod --help for help and startup options
Sun Aug 14 18:43:09 [initandlisten] MongoDB starting : pid=192 port=27017 dbpath
=/data/db/ 32-bit

** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data

**       see http://blog.mongodb.org/post/137788967/32-bit-limitations
**       with --dur, the limit is lower

Sun Aug 14 18:43:09 [initandlisten] db version v1.8.2, pdfile version 4.5
Sun Aug 14 18:43:09 [initandlisten] git version: 433bbaa14aaba6860da15bd4de8edf6
00f56501b
Sun Aug 14 18:43:09 [initandlisten] build sys info: windows (5, 1, 2600, 2, 'Ser
vice Pack 3') BOOST_LIB_VERSION=1_35
Sun Aug 14 18:43:09 [initandlisten] waiting for connections on port 27017
Sun Aug 14 18:43:09 [websvr] web admin interface listening on port 28017
Una vez arrancado el servicio, ese es el mensaje que obtendremos. Si accedemos con el navegador web a la dirección http://localhost:28017, veremos información sobre el servidor.

Para crear una base de datos, tendremos que usar el gestor, está en la misma carpeta que el "daemon" y se llama mongo.exe. Lo ejecutamos y veremos información sobre el sistema.

Procedemos a crear una base de datos llamada "php". Para eso usamos el comando use, seguido del nombre de la base de datos.
 




La base de datos no se crea al instante, sino, se crea primero en memoria y luego se escribe en el disco. Lo mismo pasa con los datos introducidos en la base de datos. Esto es bueno porque aumenta la velocidad, pero en caso de corte de energía, los datos al estar en la memoria, se perderían.

Ahora ya tenemos nuestro servidor MongoDB corriendo y una base de datos, llamada php.




Trabajar con MongoDB desde PHP
Si nuestra versión de PHP no incluye el drive para MongoDB, como es mi caso, hay que instalarlo manualmente. Nos dirigimos a la página de descarga del driver para PHP y elegimos la versión que se corresponde a la versión de nuestro PHP, en mi caso, la versión 5.3.

Página de descargas del driver MongoDB para PHP.

Una vez descargado el fichero, nos dirigimos a la carpeta donde PHP guarda las extensiones (en mi caso, al estar usando XAMPP, está en /xampp/php/ext) y copiamos el archivo llamado php_mongo.dll.

Después hay que incluirlo en el fichero de configuración de PHP, php.ini, para que al arrancar cargue también el driver de MongoDB. Abrimos el fichero php.ini y agregamos la siguiente línea: extension=php_mongo.dll.

Para que los cambios surjan efecto, hay que reiniciar el servidor Apache. Si al arrancar el Apache nos muestra algún error, hay que fijarse (lo pondrá en el error) en la versión de VC con la que está compilado nuestro Apache y elegir la dll (el driver de Mongo descargado anteriormente) que corresponda a la versión del VC de Apache.

Ahora vamos a empezar con el código, primero vamos a probar si el driver de MongoDB realmente funciona bien:
 

Código
  1. <?php
  2.  
  3. $conn = new Mongo();
  4.  
  5. if ($conn) {
  6. echo "Ok";
  7. } else {
  8. echo "Fail";
  9. }
  10.  
  11. ?>

Si recibimos el mensaje Ok, es que todo funciona perfectamente, como véis en el ejemplo, estamos instanciando la clase Mongo, al constructor de la clase podemos pasarle varios parámetros, como la dirección del servidor, el puerto, etc. En nuestro caso, al dejarlo todo por defecto, se conectará a localhost usando el puerto por defecto de Mongo.

Código
  1. <?php
  2.  
  3. $conn = new Mongo();
  4. $db = $conn->php; //seleccionamos la base de datos php
  5.  
  6. // elegimos una coleccion llamada usuarios
  7. $coll = $db->usuarios;
  8.  
  9. // agregamos usuarios
  10. $obj = array(
  11. "user" => "madpitbull_99",
  12. "email" => "madpitbull@mail.com",
  13. "password" => "pass"
  14. );
  15. $coll->insert($obj);
  16.  
  17. // agregamos otro usuario
  18. $obj = array(
  19. "user" => "Alex",
  20. "email" => "alex@mail.com",
  21. "password" => "pass_de_alex"
  22. );
  23. $collection->insert($obj);
  24.  
  25. // pedimos todos los elementos de la coleccion
  26. $res = $coll->find();
  27.  
  28. // iterate through the results
  29. foreach ($res as $obj) {
  30. echo $obj["user"] . " - " . $obj["password"] . "\n";
  31. }
  32.  
  33. ?>
  34.  
  35.  


El código no requiere muchas explicaciones, lo primero que hacemos es conectarnos al servidor (al instanciar la clase). Seleccionamos la base de datos (que hemos creado anteriormente), y la colección (es como una tabla de los motores SQL) e insertamos dos usuario que más tarde listaremos.

A partir de aquí esto depende de vosotros, más abajo os dejo la documentación necesaria para seguir practicando, al final y al cabo, al poca diferencia entre usar MySQL, PostgreSQL o cualquier otro.

_Seguridad en PHP al usar MongoDB
_Documentación oficial (php.net) del driver nativo

19  Programación / PHP / Introducción al patrón Singleton con PHP en: 12 Agosto 2011, 15:59 pm
Sin recurrir a una explicación de la Wikipedia, diré que un "singleton"; no es más que una
clase que no se puede instanciar más de una vez. En realidad es algo más complejo, pero para entender la idea, nos sirve ésta explicación.

Lo ideal es recurrir es éste patrón de diseño a partir de PHP5, aunque en PHP4 también se puede hacer, pero la clase se podrá instanciar más de una vez.

Partiremos desde el siguiente código:

Código
  1. <?php
  2.  
  3.    /*
  4.     *   Ejemplo de uso del patr&#243;n
  5.     *   Singleton
  6.     */
  7.    class singletonPattern {
  8.  
  9.        // Variable que almacenar&#225; la instancia
  10.        static private $instance = null;
  11.  
  12.        // Constructor de la clase
  13.        private function __construct() {
  14.  
  15.                // es private, por tanto
  16.                // no puede ser instanciada usando
  17.                // new.
  18.  
  19.            }
  20.    }
  21.  
  22. ?>
  23.  

Tenemos una clase llamada "singletonPattern", con una variable estática llamada "$instance", dicha variable indica si la clase ha sido instancia o no,
en caso de tener el valor "null" la clase no ha sido instanciada.

La siguiente función, no es más que el constructor de la clase, que como vemos es "private", por lo tanto, no podemos acceder a ella desde el exterior.
Al intentar crear un objeto de la clase, se producirá un error, ya que, no podrá ser instanciada mediante la palabra reservada "new".

Para resolver éste problema, crearemos otro objeto que instancie la clase por nosotros y que nos devuelva el objeto.

Código
  1. <?php
  2.  
  3.    /*
  4.     *   Ejemplo de uso del patr&#243;n
  5.     *   Singleton
  6.     */
  7.    class singletonPattern {
  8.  
  9.        // Variable que almacenar&#225; la instancia
  10.        static private $instance = null;
  11.  
  12.        // Constructor de la clase
  13.        private function __construct() {
  14.            // es private, por tanto
  15.            // no puede ser instanciada usando
  16.            // new.
  17.  
  18.        }
  19.  
  20.        static public function createInstance() {
  21.  
  22.            if (self::$instance == null) {
  23.                // Si la clase no ha sido instanciada
  24.                self::$instance = new singletonPattern();
  25.            }
  26.            return self::$instance;
  27.  
  28.        }
  29.  
  30.    }
  31.  
  32.    $obj = singletonPattern::createInstance();
  33.  
  34. ?>
  35.  

Como vemos, se ha creado un método llamado "createInstance()" que nos devuelve una instancia/objeto de la clase "singletonPattern", la variable "$instance", al ser
privada, hay que acceder a ella usando la palabra reservadaself:: seguida del nombre de la variable.

Básicamente, la última función creada comprueba si el valor de $instance es null, o sea la clase no ha sido instanciada, sino, se crea y se devuelve una instancia del objeto.

Como último creamos una instancia de la clase usando la última función creada.
20  Seguridad Informática / Hacking / Disponibles las presentaciones de la DEFCON 19 en: 11 Agosto 2011, 21:03 pm
Ya están disponibles las presentaciones (PDF) de la recién acabada Defcon19.
 Vía| CyberHades.

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