*****************************************************************
ABREVIACIONES PARA TRABAJAR EN CONSOLA Ctrl + a -> xa situarse al principio de la linia.
Ctrl + e -> xa situarse al final de la linia.
Ctrl + w -> recorta la palabra anterior al puntero.
Ctrl + u -> recorta toda la linia antes del puntero.
Ctrl + k -> recorta toda la linia despues del punter.
Ctrl + y -> pega lo k hay en memoria (portapapeles).
Ctrl + l -> limpia la pantalla (equivale a 'CLEAR').
VARIABLES DE ENTORNO RANDOM -> genera un numero aleatorio
SHLVL -> incrementa en uno cada vez k invocamos a un nuevo interprete.
SECONDS -> indica el numero de segundos desde k se ha creado el
interprete.
HISTCMD -> indice en el historico.
DIRSTACK -> almacena el ultimo directorio accedido.
HOSTTYPE -> arquitectura de la maquina.
OSTYPE -> indica el SO.
MACHTYPE -> info sobre la arquitectura, distro y SO.
SHELL -> indica el interprete actual.
SHELLOPTS -> indica las opciones activas en el interprete (equivalente
a SET -O).
IFS -> caracteres separadores xa la lectura con READ.
LC_ -> hacen referencia a datos locales.
TMOUT -> numero de segundos k se espera el interprete antes de k se
introduzca una entrada. Si no se introduce nada, finaliza.
HISTCONTROL -> si contiene:
-ignoredups -> no pone en el historico las linias duplicadas.
-ignorespaces -> no pone en el historico las linias k empiezan
x espacios.
-ignoreboth -> combina las dos opciones anteriores.
S_ -> contiene el ultimo parametro de un comando.
GZIP -> comprime archivos:
-c (comprime archivos y los redirecciona a un fichero)
-v (indica el % de compresion cuando se comprime)
-S (cambia la extension del archivo comprimido)
-vl (visualiza info sobre el archivo comprimido: ratio de compresion,
nombre, metodo de compresion, tamanyo antes y despues, ...)
SYSCTL -> xa consultar la info de /PROC
-a (consultar)
-w (modificar)
NOTA -> los comandos k no se encuentren en el PATH (son del superusuario),
no es
k no se puedan ejecutar, solo hay k poner toda la ruta. Hay k diferenciar de
aquellos k han sido compilados con alguna opcion k hace k no los puedan
ejecutar
los usuarios normales aunque tengan permisos de ejecucion.
DD -> xa copiar documentos, xo tb tiene otras utilidades como x ejemplo:
-copiar el sector de arranque del disco duro xa poder arrancar desde
un Windows.
dd if=/dev/hda of=boot_sector.bin bs=512 count=1 (como rOOt)
-hacer una ISO de un CD.
dd if=/dev/cdrom of=cdrom.iso
-encriptacion sencilla.
dd if=text_pla.txt of=text_encriptat.txt bs=512 conv=ebcdic
(ya k es una mierda de encriptacion, lo podemos combinar con el
cifrado simetrico de GPG)
xa desencriptar primero GPG y despues passar a ASCII:
gpg -d fichero.gpg | dd conv=ascii
eso pedira la contrasenya xa desencriptarlo y despues lo presenta en
pantalla; si se quiere poner en un fichero:
gpg -d fichero.gpg | dd of=fichero.txt conv=ascii
-pasar un texto a majusculas o minusculas:
dd if=fichero.txt of=majuscules.txt conv=ucase
dd if=fichero.txt of=minusculas.txt conv=lcase
UNSET -> comando interno k sirve xa desactivar variables. Es util xa cuando
entres en un servidor y que no se registren los comandos introducidos; hay
dos formas (seguramente alguien sabra alguna otra):
unset HISTFILE export HISTFILE=/dev/null
-En caso de k no preveamos k no queden registrados los comandos, tb se puede
solucionar a posteriori:
cp /dev/null .bash_history
cat /dev/null > .bash_history
export HISTSIZE=0
NOTA: estos 3 comandos borraran (casi) totalmente el historico y si el admin
es
un poco espabilado notara k alguien ha entrado. Tb se puede editar a mano xa
borrarlos, xo siempre quedara registrado el primer comando introducido; x
ejemplo si vamos a editar el historico con VI, registrara:
vi .bash_history
de la misma manera pasa con:
cp /dev/null .bash_history
cat /dev/null > .bash_history
La 3a manera es la unica k borrara totalmente el contenido del historico.
READONLY -> desde el punto de vista del admin no se querra k se desactive la
variable HISTFILE; bueno, hay muchos capullos k ni saben k esa variable
existe..
Este comando interno hace k no se pueda modificar ni desactivarla.
NOTA: si alguien sabe la manera de poder modificar o desactivar variables
protegidas con READONLY k me avise y lo pondre en la proxima revision del
DOC.
DECLARE -> comando interno k tiene opciones utiles:
-x (variables exportadas; equivalente a EXPORT)
-i (variables k contienen enteros: PPID, UID, EUID)
-r (variables de solo lectura; equivalente a READONLY)
-a (variables vector)
LS -> comando universal; opciones utiles:
-B (no muestra las copias de seguridad)
-L (muestra la info del archivo apuntado x un enlace)
READLINK -> indica el archivo al k apunta un enlace simbolico. Equivalente a
LS -L.
BASENAME -> indica la ruta a un archivo.
DIRNAME -> indica el archivo de la ruta.
SSH-AGENT -> x defecto se inicia en la interfaz grafica, xo no en consola.
Xa
activarlo y poder almacenar la frase de paso y no tener k volver a
introducirla
hace falta poner:
ssh-agent /bin/bash (crea un BASH padre)
ssh-add (almacena la frase de paso)
-En la interfaz grafica se puede poner un icono k haga la conexion:
campo ORDEN -> 'xterm -bg black -fg white -e ssh maquina_remota'
GREP -> busqueda de palabras en un texto:
-v (buesqueda inversa). Es util cuando buscas un proceso y no quieres k
salga el GREP entre los procesos encontrados:
ps aux | grep 'sshd' | grep -v 'grep'
^cadena (busqueda de palabras k empiezan asi)
-buscar en un guion las linias k no sean comentarios:
grep -v ^# guio.sh
STRACE -> comando k tracea las llamadas al sistemas y las senyales y las
muestra en pantalla (el resultado del comando en la salida estandar y la de
las
llamadas y senyales en la salida de error).
NOTA -> no se tiene en cuenta MORE en la ejecucion de STRACE, ya k solo
afecta a
la salida estandar:
strace /bin/ls
X tanto, xa poder controlar la salida del comando, hace falta redirigirlo
todo a
la salida estandar:
strace /bin/ls 2>&1 | more
LTRACE -> traceador de librerias dinamicas utilizadas en la ejecucion de un
comando.
UPDATEDB -> comando de rOOt k actualiza una base de datos con todos los
binarios
instalados.
LOCATE -> forma rapida de localizar un fichero o comando.
INCONVENIENTE -> todavia no se la forma de k lo tome de forma literal:
locate profile
y k solo encuentre 'PROFILE', y no palabras k lo contengan.
Si alguien sabe como corregirlo k me envie un correo.
LOCALE -> comando k imprime las variables de entorno k hacen referencia al
sistema monetario o horario de este entorno, ...
NM -> comando k lista la tabla de simbolos de un binario (comienzo de la
seccion BSS o de DATOS, ...).
OBJDUMP -> muestra info sobre un fichero objeto (cabeceras y cosas x el
estilo).
READELF -> mostra info sobre binarios ELF:
-h (info de la cabecera))
-l (info de la program header)
-S (info de la section header)
-e (equivalente a -h -l -S)
-s (tabla de simbolos)
STRIP -> elimina los simbolos de un fichero objeto:
-S (elimina todos los simbolos)
--strip-debug (elimina solo los simbolos de depuracion -> olvidate de
depurar)
*****************************************************************STRINGS -> comando k imprime las cadenas de caracteres de un binario.
(imprime tb trozos de la tabla de simbolos)
NOTA -> muy util si quieres aprovecharte de un troyano protegido con
contrasenya
k haya colocado alguien en un sistema, ya k con este comando podras ver la
contrasenya.
ROUTE -> xa manejar las rutas de encaminamiento (se pueden anyadir,
eliminar,..)
IFCONFIG -> muestra las interfaces de una maquina:
sin parametros (muestra las interfaces activas)
-a (muestra todas las interfaces)
-Hay caminos cortos xa hacer las cosas:
-xa tirar una interfaz a tierra:
ifconfig eth0 down --> ifdown eth0
-xa levantar una interfaz:
ifconfig eth0 up --> ifup eth0
-Se puede cambiar la direccion MAC (hace falta ser rOOt):
ifdown eth0
ifconfig eth0 hw ether 00:00:00:00:00:00
ifup eth0
-Xa poner la interfaz en modo promiscuo (hace falta ser rOOt):
ifconfig eth0 promisc
NETSTAT -> muestra las connexions activas, rutas de encaminamiento y
interfaces:
-n (formato numerico; no hace resolucion DNS)
-a (todas las conexions: TCP, UDP y UNIX_DOMAINS)
-t (solo conexions TCP)
-u (solo conexions UDP)
-r (equivalente a ROUTE)
-e (indica el UID)
-ei (equivalente a IFCONFIG)
-M (indica si el nucleo soporta IP_MASQUERADE; en caso de k se haya
compilado con esa opcion, muestra las conexiones masquerading)
NOTA: normalmente el UID de los servicios de red son 0 (rOOt); xo no sera
asi
si tu pones a funcionar algun servicio como usuario normal (tunneling SSH).
SERVICE -> comando k no tiene MAN y k permite manipular los servicios de red
xa iniciarlos, detenerlos, reiniciarlos, comprovar su estado, ... (es
equivalente a dar toda la ruta /ETC/INITD/servicio y pasarle la opcion
correspondiente):
service servei status
service servei start
service servei stop (equivalente a KILL -KILL servicio)
service servei restart (equivalente a KILL -HUP servicio -vuelve a leer
el archivo de configuracion del servicio)
NOTA: xa saber si un servicio esta activo, solo tienes k mirar si consta en
/VAR/RUN, donde encontraras un fichero con su nombre y extension PID k
contiene
su pid (no hace falta ser muy espabilao xa imaginarlo).
Si es un servicio k maneja XINETD no esperes encontrarlo como servicio
independiente, sino k solo encontraras el pid del XINETD k es el k lo
maneja.
Si quieres k se inicie el servicio, tienes k configurarlo en el
correspondiente
archivo dentro de /ETC/XINET.D/ y poner YES o NO en el campo DISABLE.
*****************************************************************
STTY -> indica las caracteristicas de la terminal, tales como la velocidad
en
baudios y otras cosas:
-a (todas las opciones posibles)
IGNCR (desactiva el retorno de carro -> se puede suplir apretanto ALT-15
IUCLC (traduce los caracteres majuscula a minuscula)
OLCUC (traduce los caracteres minuscula a majuscula)
-echo (desactiva el ECHO de la terminal; es muy util cuando quieres k un
programa pida una contrasenya x pantalla y no kieres k se vea x
si alguien espia lo k tecleas).
TOSTOP (detiene los procesos en segundo plano k intenten escribir en
terminal, y una vez quieras k el proceso continue y imprima en pantalla
solo tienes k poner FG si tienes un proceso o FG %ntarea si tienes unos
cuantos)
NOTA: hay algunos cambios sobre consola k no se pueden deshacer y xa
canviarlos
tienes k volver a entrar en una nueva sesion, o xa aquellos k si se puede
cambiar tienes k poner '-ARGUMENTO' xa desactivarlo o 'ARGUMENTO' (sin el
guion)
si lo quieres activar.
NOTA: sobre TOSTOP decir k x defecto la shell aunque pongas el proceso en
segundo plano enviara la salida a la terminal, x tanto aparte de TOSTOP otra
forma de evitar k se imprima en pantalla la salida es hacer redireccion:
find / -name '*.txt' > fichero.txt &
NOTA: junto al documento va un guion de BASH k contiene el comando STTY xa
demostrar k es muy util.
-Siguiendo con STTY tb puedes hacer asignaciones a caracteres especiales
como:
intr (senyal de interrupcion)
eof (final de fichero)
stop (detiene la salida)
La forma de cambiarlo puede ser en forma circunfleja (^) o hexadecimal (0x):
stty intr ^x (con CTRL-X detendras ahora un proceso)
EJECT -> expulsara la primera unidad detectada en el sistema; si quieres
expulsar alguna otra unidad tienes k indicarlo, x ejemplo si quieres
expulsar
el DVD-ROM y esta referenciado x /DEV/HDD:
eject /dev/hdd
NOTA: puedes expulsar un lector ya sea x el dispositivo k lo controla (/DEV)
como x el punto de montaje (/MNT), y automaticamente los desmontara (si no
lo
habias desmontado antes). No hace falta poner toda la ruta del punto de
montaje (cdrom) o dispositivo (hdc).
ULIMIT -> comando interno xa establecer limites a los recursos del sistema:
-c (tamanyo de archivos CORE)
-u (cantidad maxima de procesos)
-f (tamanyo maximo de un archivo)
-v (tamanyo maximo de la memoria virtual)
NOTA: x defecto las distros actuales desactivan la creacion de archivos CORE
xo si tu la quieres activar xa pasarle un CORE al GDB:
ulimit -c unlimited
-Si lo k quieres es desactivarlo, pon 0 en lugar de UNLIMITED.
RDEV -> sobre una imagen del nucleo indica el dispositivo de arranque.
RPM -> servicio xa instalar/desinstalar paquetes y hacer otras cosillas:
-qa (lista todos los paquetes instalados)
-qi paquete (da info sobre el paquete: nombre, version, descripcion,...)
-ql paquete (indica los componentes del paquete: binarios y doc)
-qR (dependencias del paquete: librerias dinamicas y demas)
*****************************************************************TAR -> utilidad xa empaquetar/desempaquetar archivos (historicamente xa
hacer
copias de seguridad en cintas):
tar czf paquet.tgz archivo1.txt archivo2.txt archivo3.txt (empaqueta
archivos)
tar xzf paquete.tgz (desmpaqueta un TAR)
tar ztf paquete.tgz (visualiza los archivos k contienen un TAR)
tar f paquete.tar --delete archivo2.txt (elimina un archivo de un TAR)
tar f paquete.tar -r archivo2.txt (anyade un archivo a un TAR)
NOTA: TAR con la opcion "t" es muy util xa saber donde se van a
desempaquetar
los archivos, ya k asi sabes si se van a poner en un directorio o los vas a
esparcir x ahi. En el 2o caso, es conveniente crearte un directorio y ahi
desempaquetarlos.
NOTA: no he podido anyadir/eliminar archivos a un TAR comprimido; si alguien
consigue solucionarlo k me envie un correo y me lo diga xa anyadirlo al
texto.
STARTX -> guion de BASH k llama a XINIT el cual inicia la interfaz grafica
con
los argumentos del cliente y el servidor X:
startx -- -bpp 32 -nolisten tcp :0&
(muy recomendable ponerse a trabajar en otra VC, ya k este
proceso envia muchos mensajes a la consola k impiden trabajar
o tocarse los huevos -- segun se mire --)
NOTA: con las opciones "-BPP 32" (profundidad 32 bits) y "-NOLISTEN TCP "
(no
abres el puerto 6000) no se pueden lanzar mas de una interfaz
NOTA: xa ver mejor los programas a los k llama STARTX, poner PSTREE. Pondra
una
linia parecida a esta:
-login--bash--startx--xinit-+-X
`-gnome-session--ssh-agent
MAN -> -k (equivalente a APROPOS)
-f (equivalente a WHATIS)
RSYNC -> comando muy util xa hacer copias de directorios entre maquinas
remotas,
con la ventaja de k solo copia lo k ha cambiado mediante un algoritmo de
busqueda CHECKSUM:
-a ("archive mode" -> preserva todos los atributos del archivo y
funciona de forma recursiva)
-z (comprimido)
-v (muestra las operaciones k se realizan)
NOTA: si se incluye "/" al final de la ruta de directorios, quiere decir k
solo
se copia el contenido del directorio y no el directorio en si. Xa copiar el
directorio, no hay k poner la barra al final de la ruta.
NOTA: x defecto RSYNC encripta la info con SSH, x tanto hace falta k en la
maquina remota haya un servidor SSH; xo tb se puede configurar xa k atienda
las peticiones en la maquina remota otro servicio con la opcion "-e".
NOTA: otro uso puede ser hacer copias en la maquina local (sustituye al CP),
lo
k va de puta madre ya k mejora el tiempo de copia; solo copia lo necesario.
ESCUCHAR MUSICA DESDE CONSOLA -con los comandos PLAY o MPG123 (creo k tb con SOXPLAY) -> a mi no me
funciona)
IMPRIMIR PAGINAS DE MANUAL man ls | col -b -x > man_ls.txt
lp man_ls.txt
DIVIDIR UN ARCHIVO GRANDE EN FICHEROS PEQUENYOS split -b 1.2m fichero
cat x* > fichero_original
TERMINAL BOBA-Despues de catear un fichero binario, a veces la terminal presenta signos
extranyos; solo tienes k poner RESET y se restaurara.
FORMATEAR UN DISKET A BAJO NIVEL FDFORMAT -> formata el disket a bajo nivel:
fdformat /dev/fd0
MKFS.EXT2 -> crea el sistema de ficheros. Es equivalente a MKE2FS:
mkfs.ext2 /dev/fd0
NOTA -> se puede crear un disket de arranque haciendo un CAT sobre una
imagen
VMLINUX del CD de la distro de DEBIAN (x ejemplo).
*****************************************************************
FORMA DE EVITAR K UN USUARIO ENTRE AL SISTEMA -Poniendo en /ETC/PASSWD como shell:
/BIN/TRUE -> devuelve TRUE
/BIN/FALSE -> devuelve FALSE
/DEV/NULL -> devuelve EOF
/DEV/ZERO -> devuelve el caracter '\0'
/DEV/URANDOM -> devuelve caracteres aleatorios
Automaticamente cuando el usuario entre, el sistema lo echara.
CAMBIAR AL DIRECTORIO HOME-Hay 2 formas muy tipicas:
cd $HOME
cd ~
-Xo tb hay otra k permite cambiar a cualquier directorio HOME (tienes k ser
rOOt):
cd ~usuari
es mas, puedes ver todos los usuarios k hay en el sistemas con:
cd ~[TAB]
TRABAJAR CON DIFERENTES ARCHIVOS A LA VEZ -Se pueden hacer operaciones en un mismo directorio a la vez sin necesidad
de
indicar la ruta absoluta xa cada uno de ellos; en lugar de poner:
cp /usr/bin/lsattr /usr/bin/at ~but/binarios
substituir x:
cp /usr/bin/{lsattr,at} ~but/binarios
NOTA: substituir CP x cualquier comando, x ejemplo "LS -L".
SOBREESCRIBIR FICHEROS-Se pueden sobreescribir aunque este activada la opcion del bash NOCLOBBER:
ls >| fitxer.txt
VACIAR UN ARCHIVO cat /dev/null > fichero.txt
cp /dev/null > fichero.txt
(lo mismo con DD)
VER Y CAMBIAR LAS FECHAS DE UN FICHERO-Ver las fechas de un fichero:
ls -l fichero.txt (muestra la fecha de modificacion)
ls -lu fichero.txt (muestra la fecha de acceso)
ls -lc fichero.txt (muestra la fecha de cambio de estado de inodo)
CREAR FICHEROS VACIOS touch fichero.txt
> fichero.txt
LLENAR UN FICHERO INFINITAMENTE dd if=/dev/urandom of=fichero.txt
cp /dev/urandom fichero.txt
Los dos comandos se pueden parar con Ctrl-C, o en el caso de DD se puede
establecer un limite con COUNT (dd if=/dev/urandom of=fichero.txt count=10).
DESACTIVAR SERVICIOS -> eliminar permisos de ejecucion en el guion BASH correspondiente.
-> eliminar el enlace con el correspondiente directorio RC.
BUSQUEDAS EXACTAS-Xa buscar un proceso con exactitud y k no salgan nombres de procesos k
empiecen
asi, pon "\>" detras del nombre:
ps aux | grep 'nombre_proceso\>'
BUENAS PRACTICAS DE PROGRAMACION BASH-Si no se devuelve un valor en el guion, devolvera el codigo de salida de la
ultima instruccion
ejecutada. X tanto es conveniente indicar un valor de retorno!!!
-Cuando haces un ECHO indicando un error como puede ser k no se ha pasado un
argumento necesario xa el funcionamiento del guion, es util enviar la salida
al
descriptor de fichero asociado a la salida de error estandar. Y tb si
quieres
indicar como utilizar el guion, poner BASENAME xa k solo imprima el nombre
del
guion y no toda la ruta. En este ejemplo he aplicado estos 2 consejos:
echo "US: `basename $0` servidor" >&2
`BASENAME $0` -> indica k solo imprimimos en pantalla el nombre del guion de
shell y no toda la ruta.
>&2 -> indica k enviamos todo lo del ECHO a la salida de error.
*****************************************************************
BASH_PROFILE y .BASHRC-Los 2 son archivos de configuracion, xo la diferencia esta en k
..BASH_PROFILE
se ejecuta solo cuando se entra al sistema (x ejemplo, desde una VC), y el
..BASHRC se ejecuta siempre k se inicie una nueva shell (dentro de una misma
sesion).
TAR CON SSH-Xa crear un TGZ de un directorio de la maquina local y luego enviarlo
mediante SSH a otra maquina y desempaquetarlo ahi:
tar zcf - . | ssh servidor "tar zxf -"
-Xa descomprimir remotamente en el directorio PAQUETES un TGZ local:
ssh servidor "cd ~david/paquetes; tar zxf -" < paquete.tgz
-Xa crear un TGZ en la maquina remota de un directorio local:
tar zcf - . | ssh servidor "cat > paquete.tgz"
-Xa escribir un TGZ remotamente en un dispositivo de cinta (o cualquier
otro):
tar zcv - . | ssh servidor "cat > /dev/tape"
-Xa descomprimir localmente un TGZ de una maquina remota:
ssh servidor "cat paquete.tgz" | tar zxf -
NOTA: en un libro k lei ponia k las operacions con TAR de forma remota no se
ejecutaban si habian instruccions en el .BASHRC k escribian en la terminal,
xo
lo he probado y a mi no me da error; xo bueno, de todas formas lo pongo x si
a
alguien no le va, k sepa k la razon es esa.
Ahora, tengo k decir k si has editado el .BASHRC y haces copias con el SCP
NO TE VA A FUNCIONAR!!!IMPORTANTE: si quieres escribir alguna cosa en la terminal (con ECHO o
instrucciones parecidas), ponlo en el .BASH_PROFILE, ya k no se lee cuando
quieres ejecutar algun comando en una maquina remota mediante SSH, solo se
lee
el .BASHRC.
APROVECHANDO AL MAXIMO LA PROGRAMACION BASH-Todos sabemos k en la programacion BASH hay estructuras como WHILE o FOR;
xo no
todos sabemos k estas estructuras pueden aprovechar como entrada la salida
de
cualquier comando como CAT o LS o el k sea.
-En el caso de WHILE es:
cat /usr/share/dict/words | where read i; do grep 'st$'; done
y en el de FOR:
ls -l | for i in read; do grep '^-'; done
NOTA: si al poner alguna de estas linias (u otras k inventes tu) no te caben
en
una unica linia de terminal y queda poco claro, puedes dividirlo en
diferentes
linias con el caracter "\":
cat /usr/share/dicts/words | \
where read i; do grep 'st$'; done
GUARDAR LAS COPIAS DE SEGURIDAD-A mi me molestan las copias de seguridad (~) k se crean cuando editas algun
fichero de texto, y normalmente las eliminaba "rm -f *~", xo el otro dia me
equivoque escribiendolo y poco mas y me cargo todo el directorio. X eso
decidi
editar el .BASH_LOGOUT y introducir comandos k hacen k cuando salga de
consola
automaticamente se muevan las copias de seguridad a un directorio, y a una
mala
k un dia pierda los archivos originales, las copias las tendre en ese
directorio.
-Introducir en el .BASH_LOGOUT: mv -f `find . -name '*~'` /tmp/copias_seguridad 2> /dev/null
SYSRQ -> opcion k xa estar activa ha de ser compilada en el nucleo, y
permite
un mayor control sobre el sistema.
-Xa comprobar si esta activa, mirar si /PROC/SYS/KERNEL/SYSRQ contiene un 1.
-Xa ejecutarlo hace falta apretar Alt + Impr_Pant + OPCION:
-k (mata todos los processos de una VC; util xa cargarse posibles
keyloggers activos)
-b (reinicia sin sincronizar ni desmontar los sistemas de ficheros)
-o (apaga el sistema YA)
-p (hace un volcado de los registros y flags)
-t (hace un volcado de las tareas y info relacionada)
Nos vemos...
Ya esta terminado el post, y tiene unos retoques para verlo mejor, a ver si quitan ese mod.. ahì donde tiene los asteriscos son las paginas donde se separaba...
Espero les sirva..
Dijo el autor.. hace como 12 años
Si despues de k te conteste lo entiendes menos k antes... LO SIENTO!!! ]:>
Texto escrito x "Sor_Zitroën"
tb conocido como "bitGuarro"
X Q TENER UN NOMBRE PUDIENDO TENER DOS??
DERECHOS DE AUTOR: prohibido utilizar el impreso de este documento xa
secarse
CENSURADO o marranadas x el estilo; es mas, prohibida la entrada de este
documento
al banyo xpara evitar ideas de este tipo.
CONSEJO: sudandotela la prohibicion anterior te dare un consejo:
"NO SEAS UN CERDETE PUDIENDO SER UN CERDOTE"
y ya k me pongo, te dare otro:
"DIGAN LO K DIGAN, LOS PELOS DEL CENSURADO ABRIGAN,
Y ABRIGUEN LO K ABRIGUEN, SIEMPRE HACEN FALTA MAS PELO EN EL CENSURADO
-Bueno, espero k las horas k he estado cara al ordenador haciendo esto le
haya
servido a alguien.
-Si no pasa nada, intentare mejorar y incluir mas cosas al texto:
AU
Nos vemos