"is better to burn out than to fade away"

jueves, enero 22, 2009

Analisis de codigos - paginas web-

Algunas veces navegando por entre todo tipo de paginas en busca de información, alguna noticia nueva, código que nos pueda servir, etc., encontramos pagina de aspecto interesante y queremos ver como funciona y sobre todo poder obtener alguna parte de su código jeje, como por ejemplo un simple tab con "efecto ajax", que nos llamo mucho la atención porque su manera de trabajar es muy interesante, limpia y "bonita", entonces ¿como funciona?, ¿por donde empezar? , ¿que buscar para obtener ese código tan llamativo?, sea cual sea la razón por la que quieres ese código en especial, al menos para mi, obtener un código es una solución a un problema en el futuro, como desarrollador por supuesto, UNA BUENA MANERA DE HACER USO A SECAS DE LA REUTILIZACIÓN.


Primero tendremos que tener instaladas algunas herramientas interasantes para poder hacer facil nuestra recopilacion y estudio del nuevo codigo a adquirir...

Firefox, totalmente neceario y recomendado con algunos complementos como por ejemplo:
  • Firebug (exelente debugger de codigo en tiempo real)
  • Firephp
  • ICF
  • Firecookie
  • Tamperdata (ver y modificar cabeceras HTTP/HTTPS y otras cosillas)
  • ColorZilla (para ver los codigos de colores de una pagina o seleccionar el color que quieras)
  • IEtab (posibilidad de tener e un tab de Firefox una ventana IExplorer, posiblemente para probrar como se ve o funciona una pagina determinada en ambos navegadores sin abrir el IExplorer por separado)
  • JavaScrip debugger

Notepad++, exelente editor de texto, mil veces mejor que el notepad de windows, reconoce casi todos los lenguajes de programacion, usa plugins

Para Linux o Freebsd existen mucho editores exelentes, pero para el caso esta el SciTE, igualmente poderoso que el Notepad++

Puedes tener mas herramientas de mayor poder instaladas y listas para su uso, eso depende de cada uno, para mi esto es lo basico de lo basico :)



Hora de jugar, puesto que tenemos un lindo efecto de TAB realizado con ajax, ¿como suponemos que esta en ajax?, podria estar solo realizado con JavaScript y CSS o solo CSS... bueno en este caso tenemos el tipico ... continuara

Comando varios y pequeños tips

Algunos tips y comandos basicos

MySQL:

respaldar BD [mydb+data]
mysqldump -uroot -p --opt oscm > fecha_BD_respaldo.sql

Restaurar BD desde respaldo:
mysql -uroot -p db_name <> nombre_copia.sql

Copia solo datos:
mysqldump -u root -p --no-create-info nombre_de_mi_db_a_copiar > nombre_copia.sql

Copia solo estructura:
mysqldump -u root -p --no-data nombre_de_mi_db_a_copiar > nombre_copia.sql


Crear usuario.

create user db_user;

Para dar todos los privilegios localmente al usuario db_user:

grant all privileges on po.* to db_user@localhost identified by 'password';

Para dar todos los privilegios a un host remoto al usuario db_user:

grant all privileges on po.* to root@ip_remota identified by 'password';

Consultas como root:

MYSQL -uroot -p

select * from tabla;

Deletes, borrar datos de una tabla:

use bdausar;
delete from tabla;


cambiar password

shell> mysql -u root mysql
mysql> SET PASSWORD FOR =PASSWORD('nuevo_password');

Otro metodo es usar el mysqladmin:
shell> mysqladmin -u deb_user password nuevo_password

Por consulta:
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;

PHP

Ver idiomas del SO


o en consola:
locale -a

FreeBSD

para los mimes de apache
/usr/local/etc/apache22/mime.types

Cuando tienes problemas con una sesion de vi, la cual puede estar pegada en estado de recuperacion con el siguiente mensaje: recovering vi sessions

borrar todo en /var/tmp/vi.recover

Para ver un proceso en especifico, un ejemplo para MySQL

ps -ef | grep mysql

Agregar una ruta estatica,
Por ejemplo agregar una ruta a traves de la ip 172.16.1.1 para acceder a la trama 172.16.2.0 y viceversa

route add -net 172.16.2.0 -netmask 255.255.255.0 172.16.1.1

Algunos comandos para ver estados del server

vmstat
systat
dmesg | grep -i mem

...

viernes, julio 11, 2008

Instalar y configurar FreeTDS v0.64 y unixODBC 2.2.12 Released en FreeBSD 7.0

Instalar y configurar FreeTDS v0.64 y unixODBC 2.2.12 Released en FreeBSD 7.0

Requerimientos para lograr nuestro cometido:
  1. Una tasa de café / cerveza
  2. Cerrar la puerta de la oficina
  3. Un sándwich pollo/palta
  4. Música a gusto
  5. Subir volumen
  6. Conocimiento básico de FreeBSD
  7. ->
Instalar y configurar
# cd /usr/ports/databases/freetds
make configure --with-tdsver=8.0 --with-unixodbc=/usr/local
make clean install
# cd /usr/ports/databases/unixODBC/
make clean install

[+]->

FreeTDS http://www.freetds.org/
Ver nuestra configuración

# tsql -C
Compile-time settings (established with the "configure" script):
Version: freetds v0.64
MS db-lib source compatibility: no
Sybase binary compatibility: unknown
Thread safety: yes
iconv library: yes
TDS version: 5.0
iODBC: no
unixodbc: yes


Editar freetds.conf

# cp /usr/local/etc/freetds.conf.dist /usr/local/etc/freetds/freetds.conf
# vi /usr/local/etc/freetds/freetds.conf


Poner lo sigiente:

# A typical Microsoft SQL Server 2000 configuration
[nom_bre]
host = ip_server_bd
port = 1433
tds version = 8.0


Probar con tsql ( user y password son del servidor sql server ):

# tsql -S nom_bre -U user -P password -I /usr/local/etc/freetds/freetds.conf
locale is "en_US.ISO-8859-15"
locale charset is "ISO-8859-15"
1> use una_bd_users
2> go
1> select * from users (asegurate de que la tabla users exista en la bd)
2> go
id login
1 user1
3 user2 (asegurate de que tengas las salidas correctas)
1> quit


[+]->
unixODBC http://www.unixodbc.org/
Crear driver template o plantilla temporal de los drivers:

# vi template.driver


Poner lo sigiente

[FreeTDS]
Description = v0.63 with protocol v8.0
Driver = /usr/local/lib/libtdsodbc.so


Usaremos odbcinst :

# odbcinst -i -d -f driver.template
Esto ara que lo de driver.template se "pege" en /usr/local/etc/odbcinst.ini , si no tienes ese archivo crealo...


Ahora el template o plantilla temporal del DSN:

# vi template.dsn


Poner lo sigiente:

[MSSQLTestServer]
Driver = FreeTDS
Description = Northwind sample database
Trace = No
Server = ip_server_bd
Port = 1433
Database = nom_bd
TDS_Version=8.0


Usaremos odbcinst :
# odbcinst -i -s -f template.dsn


Probar con isql:

#isql MSSQLTestServer user password
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select * from users; (asegurate de que la tabla users exista en la bd)
+------------+-------------------------------+
| id | login |
+------------+-------------------------------+
| 1 | user1 |
| 3 | user2 |
+------------+-------------------------------+
2 rows affected
2 rows returned
SQL> quit



[!]->
Nota en algunos casos puede que tambien tengan que editar el odbc.ini

Se puede usar

# vi /usr/local/etc/odbc.ini


poner lo sigiente:

[MSSQLTestServer]
Driver = FreeTDS
Description = Alguna BD
Trace = No
Server = ip_server_bd
Port = 1433
Database = nom_bd
TDS_Version=8.0



Solo tuve que buscar en google y entender los siguientes contenidos::

http://www.unixodbc.org/doc/FreeTDS.html
http://wiki.rubyonrails.org/rails/pages/HowtoConnectToMicrosoftSQLServerFromRailsOnFreeBSD
http://v1.ivanhq.net/projects/freetds.html

Cual es el sufrimiento?...
Eso era todo!!!!
Más fácil que usar un window$ vista =)

08

lunes, noviembre 20, 2006

Assembler y lenguajes

Todos saben lo que es un lenguaje, de forma general un lenguaje es cuaquier metodo de comunicación entre entre dos o mas seres humanos y/o maquinas y bla bla...

Ahora me encuentro aprendiendo 3 nuevos lenguajes, dos de programación y uno de comunicación .

Como primer y gran avance para mi, me encuentro remando entre un mar de intrucciones maquina, el lenguaje assembler, que por lo demas es muy interesante y divertido, tiene un poder asombroso ya que es la forma mas cercana de "hablar" con el computador, asi es, es muy podoresa la forma de comunicación y así tambien son las respuestas que vas encontrando cuando mas profundizas el tema, ufff que buenos textos he estado leyendo, que claro dejare aquí para que cualquier jugoso e interesado tome este barco y navege hasta la muerte :)

! n S a N 0 s _ (despues de esta dosis, a dormir)

El segundo lenguaje que estoi aprendiendo carece de mucha relevancia, solo decir que es Centura Biulder - SQL Windows, un lenguaje levemente parecido a visual Basic, pero mucho mas estructurado y enfocado a SQL, este lenguaje no es muy conocido, pero es incrible saver que ahy buenas empresas trabajando con él y por lo demas no estaria mal explotar su usu para ganar algunos pesos por ahí jeje...

Y como tercer lenguaje, esta ves estoi tomando clases de ingles con una profesora expectacular, mi linda polola jejeje , decir que el ingles es nesesario es poco, porque los mejores "manuales" estan en ingles =O,
....y bueno ahora a jugar dota

08

lunes, marzo 20, 2006

RFID - conociendo la tecnología

Un dia x conversando con mi cumpa (y compañero de trabajo, que manera de jugosiar), salto una duda hacerca del comportamiento de la targeta multivia y el pase escolar, targeta que se "recarga con plata" para poder utilizar el servicio metro... eso era todo nuestro conocimeitno hacerca de esto en ese momento.
Luego de una busqueda encontramos la respuesta la cual nos dio un nuevo concepto en tecnologia , que por lo demas no es algo nuevo en existencia, que no teniamos en conocimiento y se trata nada menos de un "método de almacenamiento y recuperación de datos remoto que usa dispositivos denominados etiquetas o tags RFID. Una etiqueta RFID es un dispositivo pequeño, como una pegatina, que puede ser adherida o incorporada a un producto, animal o persona . Las etiquetas RFID contienen antenas para permitirles recibir y responder a peticiones por radiofrecuencia desde un emisor-receptor RFID. Las etiquetas pasivas no necesitan alimentación eléctrica interna, mientras que las activas sí lo requieren."


Entonces queda por una pre-cunclusion (ya que todo es un supuesto logico) que la plantilla de arriva seria el modelo que se esta usando en las actuales targetas, ese circuito lo podemos observar mejor en un "pase ecolar", gracias a su superficie mas transparente.
Ese pequeño "chip" que queda visible seria la memoria contenedora de los datos, ¿pero qué datos? bueno por lo que creemos, podria solo guardar un ID de la targeta + el ID del usuario, y cuando este es pasado frente a la maquina que te da "la pasada" y así poder bajar y ocupar el rapido/apretado metro, esta "maquina" activa esa memoria y medianta una honda de radio esta memoria envía los datos ID targeta + ID usuario , luego estos datos se comparan con datos extraidos de una Base de datos, la cual rgistra el monto que as cargado previamente, luego te revaja valor del pasaje, graba el nuevo monto revajado, y te despliega en ese pequeño display(que pocos toman en cuanta por que todos andamos apurados) el monto actual que te queda por usar.

En el proceso de recargar, cuando el buen cajero mete la targeta en la maquina/especie de impresora magnetica, lo que aria es rescatar esos datos y sumar el valor de la recarga a la base de datos, actualizando así los datos para una nueva pasada por la maquina.

Tambien observamos que el TAG que se usa en los autos para el cobrado de los peajes en las nuevas carreteras estan compuestos de esta tecnoligia RFID


Como dije en un principio esto seria solo un sopuesto logico que nacio de nuestra curiosidad (despues de haber pensado una manera de poder insertar datos falsos en nuestras targetas para poder lograr un lindos viajes sin costos, nuestra etíca nos permitio solo imaginar estas ideas =o pero algo me dice que esto no se quedara así)


08

Era de suponer

LOL, tengo votado mi lugar virtual, si lo compraramos con mi pieza no seria mucha la diferencia,(claro que mi pieza es mas recurrida que este lugar y por ende mas desordenada xD), me cuesta mantener una constante escritura (y ortografia xD) , pero de apoco se empieza.

Algun día ordenare mi pieza, pero es mas probable que mantenga un habito de escritura a que mantenga mi pieza ordenada LOL
08

martes, marzo 14, 2006

Terminos mas usados

Aquí dejo un resumen de alguno de los terminos que componen una buena lectura diaria
-BUG
Un error de software (computer bug en inglés), es el resultado de una falla de programación introducida en el proceso de creación de programas de ordenador o computadora (software).

-BOF
(Buffer Overflow) Desbordamiento de búfer, es un error de software que se produce cuando se copia una cantidad más grande de datos sobre un área más pequeña sin interrumpir la operación, sobreescribiendo otras zonas de memoria.

En algunas ocasiones eso puede suponer la posibilidad de alterar el flujo del programa pudiendo hacer que éste realice operaciones no previstas. Esto es posible dado que en las arquitecturas comunes de ordenadores, la memoria no tiene separación entre la dedicada a datos y a programa.

Si el programa que tiene el error en cuestión tiene privilegios especiales se convierte además en un fallo de seguridad. El código copiado especialmente preparado para obtener los privilegios del programa atacado se llama shellcode
Obtenido de wikipedia

-D.o.S.
(Denial of Service) Denegacion de servicio, es un ataque en un sistema de ordenadores o red que causa una perdida en el servicio a los usuarios, normalmente la perdida de la conectividad de la red por el consumo del ancho de banda de la red de la víctima o sobrecarga de los recursos computacionales del sistema de la víctima.

Se genera mediante la saturacion de los puertos con flujo de información, haciendo que el servidor se sobrecargue y no pueda seguir prestando servicios, por eso se le dice "denegación", pues hace que el servidor no de abasto a la cantidad de usuarios.

Esta técnica es usada por los llamados crackers para dejar fuera de servicios a servidores objetivo.

-D.D.o.S.
(Distributed Denial of Service) Denegacion de servicio Distribudio, basicamente explicado, es un ataque al igual que D.o.S pero de forma distribuida en varios PC, remota(usando tecnicas virus y/o troyanos, exploit, etc) o localmente(teniendo acceso fisico a cada maquina).

-Malware
La palabra malware proviene de una agrupación de las palabras malicious software. Este programa o archivo, que es dañino para el ordenador, está diseñado para insertar virus, gusanos, troyanos o spyware intentando conseguir algún objetivo, como podría ser el de recoger información sobre el usuario o sobre el ordenador en sí.
Obtenido de wikipedia Recomendado http://www.forospyware.com/

-Spyware
Los programas espía o spyware son aplicaciones que recopilan información sobre una persona u organización sin su conocimiento. La función más común que tienen estos programas es la de recopilar información sobre el usuario y distribuirlo a empresas publicitarias u otras organizaciones interesadas, pero también se han empleado en círculos legales para recopilar información contra sospechosos de delitos, como en el caso de la piratería de software. Además pueden servir para enviar a los usuarios a sitios de internet que tienen la imagen corporativa de otros, con el objetivo de obtener información importante.
Obtenido de wikipedia

-RootKits
Un rootkit es un conjunto de herramientas usadas frecuentemente por los intrusos o crackers que consiguen acceder ilícitamente a un sistema informático. Estas herramientas sirven para esconder los procesos y archivos que permiten al intruso mantener el acceso al sistema, a menudo con fines maliciosos. Hay rootkits para una amplia variedad de sistemas operativos, como Linux, Solaris o Microsoft Windows.
Obtenido de wikipedia

-Troyano
Se denomina troyano (o caballo de Troya, traducción más fiel del inglés Trojan horse aunque no tan utilizada) a un virus informático o programa malicioso capaz de alojarse en computadoras y permitir el acceso a usuarios externos, a través de una red local o de Internet, con el fin de recabar información.
Obtenido de wikipedia

-Virus
Existe cierta controversia sobre la definición de virus informático. Quizás la más aceptada pertenece a Fred B. Cohen, quien en 1984 escribió su tesis doctoral acerca de los virus, definiéndolos como «un programa de ordenador que puede infectar otros programas modificándolos para incluir una copia de sí mismo». Los virus informáticos tienen básicamente la función de propagarse, replicándose, pero algunos contienen además una carga dañina (payload) con distintos objetivos, desde una simple broma hasta realizar daños importantes en los sistemas, o bloquear las redes informáticas generando tráfico inútil.
Obtenido de wikipedia

-Payload
La palabra "payload" en inglés significa contador, pagador, pago de carga, etc. En términos de virus informáticos, payload son el o los efectos nocivos o hasta irreparables, que ocasionan cualquier especie viral a los sistemas de los equipos que infectan, sean éstos servidores, estaciones de red o computadoras domésticas. Tambien se aplica al uso de comandos en los exploit y algunos programas.

-Elavacion de pribilegios
Es la forma de adquirir mas pribilegios sobre el PC atacado con el objetivo de obtener el control total de este, osea llegar a ser ROOT o administrador del S.O. , mediante el uso de exploits,rootkits, toryanos, etc local o remotamente.

-RFI

(Remote File Inclusion) Inclusion de archivos de forma remota, es un ataque que tiene por finalidad aprobecharse de algun tipo de vulnerabilidad en el codigo de una pagina para incluir y cambiar archivos del servidor web, teniendo la posibilidad de modificar el index, frames, tablas, etc y hasta de hacer uso de la base de datos(una de las tecnicas usadas por los defacer -lamers-).

-Exploit
(viene de "to exploit" - aprovechar) - código escrito con el fin de aprovechar un error de programación para obtener diversos privilegios software. Un buen número de exploits tienen su origen en un conjunto de fallos similares. Algunos de los grupos de vulnerabilidades más conocidos son: Vulnerabilidades de desbordamiento de pila o buffer overflow. Vulnerabilidades de condición de carrera (Race condition). Vulnerabilidades de error de formato de cadena (format string bugs). Vulnerabilidades de Cross Site Scripting (XSS). Vulnerabilidades de inyección SQL (SQL injection). Vulnerabilidades de inyección de caracteres (CRLF).
Obtenido de wikipedia

Hay exploits locales y exploits remotos. Los exploits locales explotan una vulnerabilidad en el host en el que ya tienes un entorno interactivo (un shell, por ejemplo), los remotos se ejecutan desde otra maquina(esto es una vision muy general, para que entre curiosidad :) ) Bueno depende del tipo de exploit y en que lenguaje fue hecho: La mayoria estan en C, otros en perl , en bash script, hasta en VB. Pero si tienes un exploit y quieres compilarlo desde linux seria algo asi :
#gcc exploit.c -o exploit

Y para ejecutarlo seria asi :
#./exploit etc...


Lo mejor y mas importante es leer el codigo del exploit, para saver como funciona que hace , y datos adicionales de su uso y compilacion -lo esencial es aprender no hacer practica lamer-(cat exploit.c , more exploit.c , etc etc..)"Pero antes de eso seria mejor hacer un file para comprobar que efectivamente se trata de codigo C y no de una sorpresa"
Si no tienes linux, puedes (muy pocos) compilarlos y ejecutarlos en windows. busca un compilador de C free (LCCWIN32, Dev C++,GCC, etc..) y lo lanzas desde MSDOS.

Los que estan en perl (exploit.pl) se interpretan, tanto en msdos como en linux:
perl exploit.pl


Los que estan en shellscript (exploit.sh) solo se pueden lazar desde linux:
./sh exploit.sh parametros


Lo ideal seria tener un host de prueba, para probar y entender su funcionamiento y no abusar de la confianza de otra personas. a menos que tengas prebia autorizacion para hacer las pruebas correspondientes(un poco de sentido comun).

-Shell code
Una shellcode es un conjunto de órdenes programadas generalmente en lenguaje ensamblador que se inyectan en la pila para conseguir que la máquina en la que reside se ejecute la operación que se haya programado.

Una shellcode ejemplar, escrita según la notación del C:
char shellcode[]=
"\x31\xc0" /* xorl %eax,%eax */
"\x31\xdb" /* xorl %ebx,%ebx */
"\x31\xc9" /* xorl %ecx,%ecx */
"\xb0\x46" /* movl $0x46,%al */
"\xcd\x80" /* int $0x80 */
"\x50" /* pushl %eax */
"\x68""/ash" /* pushl $0x6873612f */
"\x68""/bin" /* pushl $0x6e69622f */
"\x89\xe3" /* movl %esp,%ebx */
"\x50" /* pushl %eax */
"\x53" /* pushl %ebx */
"\x89\xe1" /* movl %esp,%ecx */
"\xb0\x0b" /* movb $0x0b,%al */
"\xcd\x80" /* int $0x80 */
;

NOTA: En el ejemplo anterior, el array de carateres se obtiene al desensamblar el código programado en lenguaje ensamblador, una vez compilado (binario). Así tenemos que una shellcode es código máquina escrito en notación hexadecimal. Posteriormente se utilizan dentro de programas escritos en C.

Las shellcodes deben ser cortas. Las más cortas conocidas hoy día son las de 22 bytes.

Las shellcodes se utilizan para ejecutar código aprovechando ciertas vulnerabilidades exploit en el código llamadas desbordamiento de búfer. Principalmente el shellcode se programa para permitir ejecutar un intérprete de comandos en el equipo afectado.
Obtenido de wikipedia

Al buen lector marinero, saludos
00

viernes, marzo 03, 2006

00 --> 08

Hace ya algun tiempo que comence a usar como fin de algun mensaje unos particulares numeros, los cuales tiene relación con el protocolo ICMP (Internet Control Message Protocol) el cual se especifica en la RFC 792, sobre este protocolo se utiliza el famoso PING.
Dentro de un datagrama ICMP en el campo type se usan 00 para Echo Reply y 08 para Echo Request, devido a mi gran fanatismo por los protocolos y mi interes, empese a ocupar un sistema similar al de esta comunicacion, osea cuanto escrivo/envio un post = 08 y cuanto contesto/envio un post = 00 . Esto lo aprendi leyendo un texto que nesesitaba la ayuda de Ethereal (sniffer) para analizar el trafico de una red, como se comunicaban, que tipo de datos enviaban, formas de comunicacion, leer los paquetes de datos,etc ... que horas de entretención =)
Eso es la gran ciencia del porque pongo esos numeros en cada post que esrcrivo,(este es valido solo para los foros, ya que en un chat se tornaria algo mas complicado, seria como estar tratando de emular un ping xD )
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unused |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet Header + 64 bits of Original Data Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

GPS

GPS (Sistema de Posicionamiento Global ) es el tema central en la empresa en donde estoi ahora desempeñando la labor de programador analista , ya que esta empresa se dedica a implementar soluciones de seguridad en transporte para cualquier tipo de empresa que requiera un sistema de monitoreo de algun tipo de objeto.
La finalidad de esto es ofrecer seguridad (información de alarmas, Ej: "Objeto fuera de la ruta") y conocimiento en un tiepo real acerca de la posición del objeto implicado, en un plano virtual generado a través de un programa determinado el cual es creado y programado segun las nesesidades del cliente y/o caso en particular.

martes, enero 10, 2006

En el marco -stack-

Posiblemente esto es lo primero que escrivo, pero quien save, quizas hubieron cosas que se olvidaron, ignoro o simplemente no quiero escrivir (se olvidaron en el tiempo).

Demas esta dicir que esto no es mas que un esbozo de todo lo que quiero expresar, siendo este un metodo muy comun, agradable, confiable para poder liverar tenciones, expresarse libremente, pero se me hace un poco dificil.

Aqui pretendo dejar parte de lo que se, complemetar lo que no, y expresar mi profundo agrado a este mundo virtual, y digo profundo porque aveces paso horas sentado frente al computador olvidandome de todo a mi alrededor. Para mi el computador es un enigma, una fuente insasiable de conocimientos y acertijos, lo cual me entretiene de sobre manera, bueno para que hablar de los juegos que tambien me roban gran parte de algunos dias, cuando puedo jugar por supuesto, lo demas es trabajo y lectura de manueles, libros, conversaciones amenas, etc.
Asi como tambien dedico gran parte de mi vida al mundo virtual, tambien lo ago en el mundo real(bueno quien podria decir que es real o ireal xD ), con mi familia, o lo que queda de ella en mi casa, mi mama y mi hermana, lo cual siempre he considerado mi familia y lo mas importante.

En realidad trato de ser lo mas racional posible, tanto asi que tambien no mostraria gran pena si algun dia tubiera que vender mi computador (noooooooooo xD) para asi solucionar un problema economico que se pudiera presentar y continuar viviendo en paz... pero en fin como dije en un principio solo es un esbozo.

Uno de mis problemas(no se si sera tan asi), es que todo pretendo memorisarlo y nunca anoto nada de lo que se me ocurre, pienso y quiero hacer, despues se me olvida y lo pierdo LOL.

Parte de lo que aprendi en mi practica, que termino el 5 de Enero 2006, gracias a mi jefe que me obligaba a anotar lo que tenia que hacer diariamente xD, es exactamente esto, anotar todo o parte de lo que pienso o quiero hacer, ahora me doi cuenta que aprendi algo muy importante ocupar las herramientas que tengo a mi alcance en este caso un simple papel o este medio.(la mente tambien falla xD)

He aquí mi bitacora.
00