Mostrando entradas con la etiqueta Linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta Linux. Mostrar todas las entradas

domingo, 8 de noviembre de 2015

Habilitar MSE & H.264 Firefox/Iceweasel Debian

Al día de hoy cada ves más son los sitios que dejan de utilizar flash (parece que sufre una lenta agonía) para sustituirlo por HTML5 o algo que permita la reproducción de vídeo sin necesidad de flash-player.

Para habilitar MSE "Media Source Extensions" y H.264 en Firefox e Iceweasel hay que instalar algunas cosas y configurar otras, nada complicado que no podamos hacer en apenas unos minutos.

Para comenzar si ejecutan Firefox o Iceweasel y se dirigen a la página de youtube para comprobar para que tenemos soporte y para que no, con suerte verán algo como esto:


Como se ve en la imagen solo está habilitada la primera columna, la segunda está sin soporte que es donde aparece MSE, para habilitar esa columna hace falta configurar el navegador e instalar algunas cosas como ya había comentado.

Lo que se necesita instalar son los "codecs gstreamer", actualmente estoy utilizando Debian Testing y tengo instalada la versión 1.0, esta es la lista:

gstreamer1.0-alsa gstreamer1.0-libav gstreamer1.0-nice gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-tools gstreamer1.0-x

La configuración del navegador se realiza colocando "about:config" en la barra de direcciones y buscando lo que queremos cambiar, por ejemplo, buscamos "media.mediasource.enabled" y haciendo click sobre ella cambiamos la opción de "false" a "true", es decir la habilitamos, así con todas las demás, la lista:

1ro.- about:config 2do.- media.mediasource.enabled to true media.mediasource.mp4.enabled to true media.mediasource.format-reader.webm to true media.mediasource.webm.enabled to true media.fragmented-mp4.exposed to true media.fragmented-mp4.ffmpeg to true media.fragmented-mp4.gmp to true media.fragmented-mp4.use-blank-decoder to false

Dependiendo de la versión de Firefox o si es Iceweasel algunas opciones estarán y otras no, habilitar las que estén presentes debería funcionar, y si todo salió bien, deben ver algo así:


Espero les sea de utilidad.

viernes, 16 de octubre de 2015

Solucionar problema con sonido de Skype en Debian

Si utilizan la nueva versión de Skype seguro ya habrán notado que a los grandes genios y flamantes nuevos dueños de skype les dio por sustituir alsa por pulseaudio.

Por ese motivo, cuando lo necesité estuvo, pero no funcionó, no podía hablar a través de el, es decir, no podía hablar solo podía chatear.

Tampoco es posible abrir sesión en una versión anterior como muchos recomiendan (eso mismo pensé e hice, pero los grandes genios detrás de skype también pensaron en eso).

Consideré varias opciones y ninguna me convenció, instalar pulseaudio esa no es una opción, menos obligado por los genios de skype, así que buscando me encontré con una solución bastante sencilla, si hay que instalar algo, pero no es pulseaudio.

Se trata de "apulse" un pequeño programa con el que podemos usar skype sin necesidad de instalar pulseaudio, una maravilla (:

Las paginas para descargarlo:
En github.
Para descargar los .deb desde aquí.

Para usarlo es tan simple como abrir un terminal y "$ apulse skype" o añadirlo al menú de inicio "apulse skype".

En mi caso lo probé y funciona bien, puedo hablar sin problemas y no he notado comportamientos extraños ni nada, hace lo que dice.

Espero les sirva.

domingo, 17 de mayo de 2015

Alternativas en la nube Yandex.Disk y Cloud.Mail.ru

Desde hace tiempo buscaba algún sitio que me permitiera subir mis archivos y respaldos en la nube, por ejemplo, el servicio de Google es bueno pero no me convencía del todo (cuestión de gustos imagino), así busqué y probé hasta que un día recordé que dos de las cuentas de correos que utilizo también tienen servicio de almacenamiento en la nube, me refiero a los servicios de Yandex y Mail.ru.

Para comenzar, Yandex ofrece un buen servicio de almacenamiento, con el registro ofrecen 10GB de almacenamiento el cual se puede aumentar hasta los 20GB con referidos, por cada referido se reciben 512MB, para que esto suceda los referidos deben registrarse y luego instalar cualquiera de sus app para recibir 1GB adicional.

Como limitante o contra se pudiera decir que el idioma, por ahora solo está en ruso y en inglés, lo mismo con sus app, en Debian descargué e instalé su app para linux, funciona desde la línea de comandos y es muy fácil de usar, los comandos son pocos y nada del otro mundo, además tiene un archivo de configuración que puede ser editado para más comodidad, como funciona?

# Para mostrar los comandos $ yandex-disk help # Cuando se utiliza por primera ves usar este comando, esto crea la config en; "~./usuario/.config/yandex-disk/" $ yandex-disk setup # Iniciar el daemon $ yandex-disk start # Sincronizar los archivos, por defecto la carpeta está en; "~./usuario/Yandex.Disk" $ yandex-disk sync # Ver el estatus $ yandex-disk status # Detener el daemon $ yandex-disk stop

Al correr el "setup" se nos pregunta nuestros datos, usuario y contraseña, donde estará la carpeta que contendrá los archivos, y si queremos iniciar el daemon al iniciar el computador, lo importante es que por ejemplo, yo elegí iniciar el daemon manualmente, y al iniciarlo, automáticamente sincroniza la carpeta, es decir, no tengo que hacer nada más, si copio un archivo o carpeta dentro de la carpeta de yandex.disk enseguida se sincroniza, no es necesario que haga algo más.

Como punto a favor están los hasta 20GB de espacio, y que además subir y compartir archivos es muy fácil.


Si se animan a probar les dejo el link de invitación para recibir 1GB adicional (recordar que luego deben instalar la app para recibir el GB).

Siguiendo con Mail.ru, como punto en contra está el hecho de que su página "cloud.mail.ru"no está traducida ni en español ni en inglés, solo en ruso, su app si está en inglés aparentemente (no la he probado todavía).

Como punto a favor están los 25GB de almacenamiento sin costo, y que si se utiliza a través de sus app no debería haber ningún problema dado que estas están en inglés, también decir que su página de correo si está en español, además que para mi gusto tiene una interfaz sencilla y agradable.

NO he tenido problema al utilizarla, con la ayuda del traductor todo es posible (:


Si quieren probar el servicio les dejo el link de registro que por cierto está en español (lo que no está en español es cloud.mail.ru).

lunes, 11 de mayo de 2015

Cambio de Cursor en Linux (Debian)

Hace mucho tiempo que no hacía un cambio de cursor en Debian, ya hace tiempo largo vengo usando el mismo cursor y es por eso al ver el rollo que algunos hacen tratando de cambiar el cursor no entendía porque.

No creo que valgan capturas de pantallas, existen varios DE como para tratar de explicarlos todos, así que lo más fácil es intentar explicar que puede estar pasando, mucho más fácil es ir directo y hacer los ajustes pertinentes donde corresponda.

Lo primero es cambiar el cursor mediante la interfaz gráfica que tengamos, quizás y es muy probable que tengan el problema que muchos experimentan, el cual consiste en tener un cursor para GTK "por ejemplo", y otro diferente para el escritorio o algunas otras aplicaciones, en fin, no se muestra un solo puntero si no dos, el nuevo que seleccionamos y el anterior el cual cambiamos.

Supongamos que deseamos instalar el Cursor "Pulse-Glass", y al instalarlo presenta el problema antes mencionado, para intentar solucionar el problema hacemos lo siguiente:

Primero:

# Los cursores están ubicados en: /usr/share/icons # para cambiar en cursor vamos a la carpeta: /usr/share/icons/default # abrimos y modificamos (como root) el archivo: index.theme # y se coloca el nombre del cursor que se desee usar, # debería quedar algo así: [Icon Theme] Inherits=Pulse-Glass Name=Pulse-Glass

Segundo:

# también cambiar el cursor en: /home/usuario/.icons/default/index.theme # si no existe, crear las carpetas y el archivo, # si este archivo no es igual al de: /usr/share/icons/default/index.theme # se verán dos punteros diferentes, por ejemplo; uno en el Desktop y otro en Firefox. # también cambiar el cursor en los archivos de configuración de GTK 2 y 3: /home/usuario/.gtkrc-2.0 /home/usuario/.config/gtk-3.0/settings.ini ########## cambiar también en ROOT ########## # si no se cambia, en aplicaciones bajo root se verá el cursor de maneras diferentes /root/.icons/default/index.theme /root/.gtkrc-2.0 /root/.config/gtk-3.0/settings.ini # ejemplo GTK 2: ... gtk-cursor-theme-name="Pulse-Glass" gtk-cursor-theme-size=0 ... # ejemlo GTK 3: ... gtk-cursor-theme-size=0 gtk-cursor-theme-name=Pulse-Glass ...

Como ven son varias cosas que hay que cambiar, después de todo esto se debería tener un solo puntero indiferentemente de donde se esté, usuario normal o root, al igual que las app.

Es importante recordar que muchas veces es necesario hacer estos cambios a mano, porque la interfaz no los hace, sobre todo en nuestro root, y bueno, esto no pasa más que de ser algo medio molesto y tedioso a la hora de cambiar el cursor.

miércoles, 22 de abril de 2015

DD-WRT "Upgrade failed" Telnet Upgrade Firmware

Desde hace más de un año que instalé dd-wrt en otro router (tplink_tl-mr3420v1)y no había conseguido actualizarlo, esto porque al momento de intentar actualizar desde el navegador lanzaba un error, algo así como "Upgrade failed" y la actualización no se realizaba.

Después de dar vueltas y no conseguir mucha información al respecto decidí que lo mejor que podía hacer era intentar actualizarlo vía Telnet, realicé los cambios que creí pertinentes y me lancé, me alegra decir que todo fué más rápido y sencillo de lo que pensaba y en un plis plas ya tenía el router actualizado.

Los pasos que realicé: *** Todo esto a través de cable, No WI-FI ***

1.- Reseteo del router 30/30/30.
2.- Entrar al router y activar DHCP, desactivar el WI-FI, habilitar acceso remoto a telnet.
3.- Guardar y reiniciar el router.
4.- Abrir un terminal y ejecutar lo siguiente:

telnet 192.168.1.1 23
nvram erase
cd /tmp
wget -c http://download/tl-mr3420-webflash.bin
write tl-mr3420-webflash.bin linux
reboot


5.- Esperar algunos minutos y hacer reset 30/30/30 de nuevo.


Y si todo salió bien, nada más entrar al router y configurar todo de nuevo, sin embargo les dejo los pasos desde el terminal para que lo puedan entender mejor.

ljmarin@lm ~ $ telnet 192.168.1.1 23 Trying 192.168.1.1... Connected to 192.168.1.1. Escape character is '^]'. DD-WRT v24-sp2 std (c) 2015 NewMedia-NET GmbH Release: 04/09/15 (SVN revision: 26653) DD-WRT login: root Password: ========================================================== ____ ___ __ ______ _____ ____ _ _ | _ \| _ \ \ \ / / _ \_ _| __ _|___ \| || | || | || ||____\ \ /\ / /| |_) || | \ \ / / __) | || |_ ||_| ||_||_____\ V V / | _ < | | \ V / / __/|__ _| |___/|___/ \_/\_/ |_| \_\|_| \_/ |_____| |_| DD-WRT v24-sp2 http://www.dd-wrt.com ========================================================== BusyBox v1.23.2 (2015-04-09 03:22:22 CEST) built-in shell (ash) root@DD-WRT:~# nvram erase root@DD-WRT:~# cd /tmp root@DD-WRT:/tmp# wget -c http://download1.dd-wrt.com/dd-wrtv2/downloads/betas/2015/04-09-2015-r26653/tplink_tl-wr741ndv4/tl-wr741ndv4-webflash.bin Connecting to download1.dd-wrt.com (82.165.149.94:80) tl-wr741ndv4-webflas 100% |******************************************************************************| 3840k 0:00:00 ETA root@DD-WRT:/tmp# write tl-wr741ndv4-webflash.bin linux function stop_snmp not found function stop_pppoeserver not found function stop_openvpn not found function stop_openvpnserver not found function stop_freeradius not found freeram=[10895360] bufferram=[1916928] The free memory is enough, writing image once. write=[3932160] linux: CRC OK Writing image to flash, waiting a moment... write block [0] at [0x00000000] write block [65536] at [0x00010000] write block [131072] at [0x00020000] write block [196608] at [0x00030000] write block [262144] at [0x00040000] write block [327680] at [0x00050000] write block [393216] at [0x00060000] write block [458752] at [0x00070000] write block [524288] at [0x00080000] write block [589824] at [0x00090000] write block [655360] at [0x000A0000] write block [720896] at [0x000B0000] write block [786432] at [0x000C0000] write block [851968] at [0x000D0000] write block [917504] at [0x000E0000] write block [983040] at [0x000F0000] write block [1048576] at [0x00100000] write block [1114112] at [0x00110000] write block [1179648] at [0x00120000] write block [1245184] at [0x00130000] write block [1310720] at [0x00140000] write block [1376256] at [0x00150000] write block [1441792] at [0x00160000] write block [1507328] at [0x00170000] write block [1572864] at [0x00180000] write block [1638400] at [0x00190000] write block [1703936] at [0x001A0000] write block [1769472] at [0x001B0000] write block [1835008] at [0x001C0000] write block [1900544] at [0x001D0000] write block [1966080] at [0x001E0000] write block [2031616] at [0x001F0000] write block [2097152] at [0x00200000] write block [2162688] at [0x00210000] write block [2228224] at [0x00220000] write block [2293760] at [0x00230000] write block [2359296] at [0x00240000] write block [2424832] at [0x00250000] write block [2490368] at [0x00260000] write block [2555904] at [0x00270000] write block [2621440] at [0x00280000] write block [2686976] at [0x00290000] write block [2752512] at [0x002A0000] write block [2818048] at [0x002B0000] write block [2883584] at [0x002C0000] write block [2949120] at [0x002D0000] write block [3014656] at [0x002E0000] write block [3080192] at [0x002F0000] write block [3145728] at [0x00300000] write block [3211264] at [0x00310000] write block [3276800] at [0x00320000] write block [3342336] at [0x00330000] write block [3407872] at [0x00340000] write block [3473408] at [0x00350000] write block [3538944] at [0x00360000] write block [3604480] at [0x00370000] write block [3670016] at [0x00380000] write block [3735552] at [0x00390000] write block [3801088] at [0x003A0000] write block [3866624] at [0x003B0000] root@DD-WRT:/tmp# reboot root@DD-WRT:/tmp# Connection closed by foreign host. ljmarin@lm ~ $

Para lo anterior deben saber su versión exacta de dd-wrt para poder colocar el link, además de tener conexión a internet, como todo, esto también tiene su riesgo y es solo si desde el navegador se nos hace imposible actualizar.

viernes, 10 de abril de 2015

Grabar desde el micrófono en Debian utilizando arecord y ffmpeg

Existen quizás múltiples y variadas formas de grabar desde la entrada del micrófono en un linux cualquiera en general, pero para saber exactamente la manera en que grabamos sin pasar por una app mejor hacerlo desde el terminal.

Nada de comandos extraños y rebuscados, simplemente ejecutamos la aplicación que queramos utilizar y le pasamos los parámetros que deseemos para grabar y listo, así de simple.

La más sencilla es creo "arecord", en Debian forma parte de "alsa-utils" y si ya lo tienen instalado no hay que hacer nada más, si no es el caso, entonces deben instalar el paquete para poder utilizarlo.

Si no tienen configurado el volumen del micrófono pueden hacerlo a través de "alsamixer", abren el terminal y tipean "alsamixer", si ya lo hicieron entonces pueden seguir con la grabación.

Para grabar con "arecord" abrimos un terminal en la carpeta que queramos guardar la grabación y ejecutamos lo siguiente:

arecord mic.wav

Para salir de la grabación presionamos: "Ctrl + C"

Como pueden ver guardamos el archivo con el formato "wav", esto es así dado que "arecord" solo graba en los siguientes formatos (voc, wav, raw or au), si le colocan un formato "mp3" solo será un "wav" mal renombrado.

La grabación anterior es con la calidad que le asigna "arecord" por defecto, aunque el archivo es más pequeño (en mb) graba en 8 bit, 8000 Hz y en mono, si queremos grabar con más calidad (aumentan los mb) podemos pedirle a "arecord" que grabe en formato "CD":

arecord -f cd mic.wav

De esta manera graba en (16 bit little endian, 44100 Hz, stereo), para más información pueden ejecutar "man arecord".

Y como para todo hay, seguramente se estarán preguntando ¿y como se hace para grabar en formato "mp3"?, la respuesta más fácil es utilizando "FFmpeg".

(Aquí debo recordar que tengo los repositorios http://www.deb-multimedia.org/)

Para poder grabar con "FFmpeg" hay que instalarlo primero, al igual que las siguientes librerías (si quieren grabar con algunas de ellas): "libmp3lame (mp3)", "libfaac, libfdk_aac (aac)", "libvorbis (ogg)".

Instalado lo anterior, en teoría ya podemos grabar en cualesquiera de esos formatos desde la entrada del micrófono,

Pero antes debemos saber cual es nuestra entrada al mic para poder grabar con ffmpeg, no es la gran cosa y solo es cuestión de probar, podemos ir a su página y revisar su configuración (está en ingles):
Página de FFmpeg.

Básicamente es ejecutar lo siguiente en el terminal:

arecord -l

Que nos devolverá algo como:

arecord -l **** List of CAPTURE Hardware Devices **** card 0: ICH [Intel ICH], device 0: Intel ICH [Intel ICH] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: ICH [Intel ICH], device 1: Intel ICH - MIC ADC [Intel ICH - MIC ADC] Subdevices: 1/1 Subdevice #0: subdevice #0

Lo que debemos identificar es "card" y "device", esto es para utilizar en los parámetros que le pasaremos posteriormente a "FFmpeg", dirán seguro "que rollo", pero no, como decía antes es cuestión de probar, para ejemplo y sacado de la página de FFmpeg: hw:(X),(Y), where (X)=card, (Y)=device.

En mi caso utilizo "hw:0,0" pero pudiera ser "hw:0,1" o "hw:1,1" en fin, el caso particular de cada quien dependiendo el "hardware" que posea, y creo que eso se entiende sin problema.

En la carpeta donde queramos grabar abrimos un terminal:

ffmpeg -f alsa -ac 2 -i hw:0,0 -acodec libmp3lame -ar 44100 -ab 64k mic.mp3

Para salir presionamos "Q" si no funciona usamos "Ctrl + C".

Explicado por partes, con lo anterior estamos utilizando "alsa", con "dos canales (stereo)", nuestro "hardware hw:0,0", el codec para grabar es "libmp3lame", a "44100 Hz", con "64kbps" y para grabar en formato "mp3".

Si queremos grabar con más calidad subimos los "kbps" a "96k" o "128k", depende de cada quien, en "64k" es una grabación decente con buena calidad, si queremos grabar con "bits variables" utilizamos "-q:a 9" en sustitución de "-ab 64k", quedaría así:

ffmpeg -f alsa -ac 2 -i hw:0,0 -acodec libmp3lame -ar 44100 -q:a 9 mic.mp3

También es una grabación decente con un buen nivel de compresión, para ver más opciones pueden ir a la Página de FFmpeg.

Para grabar en "aac" lo anterior aplica y solo cambiamos el "codec de grabación" y el "formato", ejemplo:

ffmpeg -f alsa -ac 2 -i hw:0,0 -acodec libfdk_aac -ar 44100 -ab 64k mic.aac

Si quieren saber más pueden ir a la Página de FFmpeg.

Ahora, para grabar en formato "ogg" sería de esta manera:

ffmpeg -f alsa -ac 2 -i hw:0,0 -acodec libvorbis -ar 44100 -ab 64k mic.ogg

Como vieron se puede grabar en varios formatos desde el terminal con un mínimo esfuerzo, y aunque quedó más largo de lo que esperaba es triste entrar al blog y leer comandos que no sabemos que hacen ni para que sirven.

Espero les sirva.

miércoles, 18 de marzo de 2015

DD-WRT modo Client Bridge (Routed) con Modem CANTV ZTE ZXHN H108N V2.5

Hace poco tiempo intenté conectar el router con dd-wrt utilizando el modo "Client Bridge" con otro router un linksys E1000, y aunque lograba acoplarlos la conexión apenas duraba unos minutos, ni idea porque.

Ahora que se compró un nuevo y flamante "Módem CANTV ZTE ZXHN H108N V2.5" quise probarlo del mismo modo que el linksys, aunque no esperé muy buenos resultados, para mi sorpresa no solo conectó a la primera sino que además parece bastante estable, no se desconectó (la conexión entre módem y router) aunque descargué una archivo por casi dos horas, los parpadeos en la conexión que vi se que son 100% de CANTV.

El router que utilicé fue el ya veterano "TP-Link TL-WR741ND V4" y el "Módem CANTV ZTE ZXHN H108N V2.5", para que todo funcione, la configuración "Wireless" debería ser igual en ambos equipos, vamos a ver ahora la configuración que usé.

La configuración del Módem ZTE:







Recordar que para que funcione correctamente, la configuración de "Wireless" debería ser igual en ambos equipos. Ahora, así va la configuración en el router con dd-wrt:

La versión de dd-wrt:


Accedemos al router, ip (192.168.1.1), y nos movemos hasta la pestaña "Wireless → Basic Settings" y lo modificamos de la siguiente manera:

» Wireless Mode: Client Bridge (Routed).
» Default GW Mode: Auto(DHCP).
» Wireless Network Mode: Igual al módem ZTE.
» Channel Width: Igual al módem ZTE.
» Wireless Network Name (SSID): Igual al módem ZTE, en mi caso (Parrot).
» Network Configuration: Bridged.
» Salvamos sin aplicar los cambios.


Esta parte es opcional, es si queremos que el router funcione como repetidor, es decir, si queremos tener acceso a el mediante WI-FI.

Para eso presionamos el botón "ADD" en "Virtual Interfaces" y lo configuramos de este modo:

» Wireless Mode: AP.
» Wireless Network Mode: Usamos uno diferente, en mi caso (Parrot~)
» Wireless SSID Broadcast: Enable.
» AP Isolation: Disable.
» Network Configuration: Bridged.
» Salvamos sin aplicar los cambios.



Vamos hasta la pestaña "Wireless → Wireless Security" y modificamos:

» Security Mode: Igual al módem ZTE.
» WPA Algorithms: Igual al módem ZTE.
» WPA Shared Key: Igual al módem ZTE.


En Virtual Interfaces:

» Security Mode: Igual al módem ZTE.
» WPA Algorithms: Igual al módem ZTE.
» WPA Shared Key: Igual al módem ZTE.
» Key Renewal Interval: Valor por defecto.
» Salvamos sin aplicar los cambios.



Vamos a la pestaña "Setup → Basic Setup" y modificamos:

» WAN Connection Type: Disabled.
» Local IP Address: 192.168.1.2.
» Subnet Mask: 255.255.255.0.
» Gateway: 192.168.1.1.
» Local DNS: 192.168.1.1.
» Assign WAN Port to Switch:Marcar esto para usar el puerto WAN como otro puerto LAN.
» Salvamos sin aplicar los cambios.



En la pestaña "Setup → Advanced Routing" cambiamos:

» En "Operating Mode" cambiar a "Router".
» Salvamos sin aplicar los cambios.



En la pestaña "Services → Services" cambiamos:

» DNSMasq: Disable.
» Salvamos sin aplicar los cambios.



En la pestaña "Security → Firewall" modificamos:

» Desmarcamos todas las casillas excepto "Filter Multicast".
» Salvamos sin aplicar los cambios.



Y ya esta listo, ahora podemos aplicar los cambios y reiniciar el router.

Para acceder al Módem ZTE sería con la ip (192.168.1.1).

Y para acceder al router con dd-wrt sería con la ip (192.168.1.2).

dd-wrt info:


En esta página encontré la contraseña para entrar al Módem ZTE:
teamhardwarevzla

Y créditos al blog de Pablo que de él seguí las indicaciones:
Blog de Pablo

domingo, 8 de marzo de 2015

Envió de correo con PHPMailer y Gmail (Xampp)

Hay muchas maneras de enviar correos a través de PHP, pero casi siempre es un dolor de cabeza (no soy el primero que lo escribe), con PHPMailer es algo si se quiere sencillo, en este ejemplo estoy utilizando "xampp-linux-5.6.3-0" y "PHPMailer V5.2.9 (master.zip)".

Para comenzar, PHPMailer tiene ejemplos que podemos seguir y partir de allí, están dentro de la carpeta "examples" y pueden servir de ayuda, también el archivo "README" contiene un ejemplo básico y es el que tomé para este ejemplo.

<?php require 'PHPMailerAutoload.php'; $mail = new PHPMailer; $mail->SMTPDebug = 2; /* Enable verbose debug output */ $mail->isSMTP(); /* Set mailer to use SMTP */ $mail->Host = 'smtp.gmail.com'; /* Specify main and backup SMTP servers */ $mail->SMTPAuth = true; /* Enable SMTP authentication */ $mail->Username = 'usuario@gmail.com'; /* SMTP username */ $mail->Password = 'Super~Password'; /* SMTP password */ $mail->SMTPSecure = 'tls'; /* Enable TLS encryption, 'ssl' also accepted */ $mail->Port = 587; /* TCP port to connect to */ $mail->Helo = 'localhost'; /* Permite usar EHLO / HELO */ $mail->Hostname = 'gmail.com'; /* Permite usar un hostname */ $mail->From = 'usuario@gmail.com'; /* Correo Gmail */ $mail->FromName = 'Pedro Pérez'; /* Nombre de usuario Gmail */ $mail->addAddress('usuario-2@live.com', 'Fulanito de Tal'); /* Add a recipient / correo de destino */ // $mail->addAddress('ellen@example.com'); /* Name is optional */ // $mail->addCC('cc@example.com'); // $mail->addBCC('bcc@example.com'); // $mail->addAttachment('/var/tmp/file.tar.gz'); /* Add attachments / agregar un archivo*/ // $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); /* Optional name */ $mail->isHTML(true); /* Set email format to HTML / Comentar para texto plano */ $mail->Subject = 'Prueba de Email usando PHPMailer y Gmail'; /* Asunto */ $mail->Body = 'Aquí se escribe el mensaje a mostrar!!'; /* Lo que se mostrará en el mensaje */ if(!$mail->send()) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; } else { echo 'Message has been sent'; } ?>

Quedaría más o menos así:


Nada del otro mundo, además que está comentado, pero para que no queden dudas explico lo más importante.

"require 'PHPMailerAutoload.php';" → dependencia de PHPMailer.

SMTPDebug = 2; → activamos el modo debug.
isSMTP(); → utilizamos SMTP.
Host = 'smtp.gmail.com'; → SMTP de gmail.
SMTPAuth = true; → Actíva la autenticación SMTP.
SMTPSecure = 'tls'; → Usamos tls.
Port = 587; → El puerto de conexión es el 587.
Helo = 'localhost'; → Usamos EHLO / HELO.
Hostname = 'gmail.com'; → Asignamos un hostname.
Username = 'usuario@gmail.com'; → Usuario de Gmail.
Password = 'clave'; → Su contraseña.
From = 'usuario@gmail.com'; → Usuario de Gmail.
FromName = 'Nombre Ap.'; → Nombre del usuario de Gmail.
addAddress('destino@live.com', 'Nombre Des.'); → Correo de destino.

addAttachment('/var/tmp/file.tar.gz'); → Archivo adjunto.
isHTML(true); → Activamos / Desactivamos HTML.
Subject = 'Correo de aviso'; → El asunto de correo.
Body = 'Este es el mensaje'; → El mensaje como tal.

Comentar que en "Helo" se puede colocar lo que se desee, es lo que se muestra justo antes de la dirección ip, (Received: from localhost ([190.61.55.55])), y "Hostname" es lo que se mostrará en al final de "message-ID", (Message-ID: <2b4366312uw3eebe1z3s@gmail.com>), para terminar, si queremos enviar el correo en "texto plano" debemos comentar "isHTML(true);".

Con esto ya estaría todo listo para enviar un correo, si se presenta algún problema con en mi caso, que no podía enviar el correo por problemas de certificados la solución la conseguí y fue algo sencillo, añadir unas líneas de código y listo.

El error es algo parecido a esto:

Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /Applications/XAMPP/xamppfiles/htdocs/phpMailer/class.smtp.php on line 338

La Solución es agregar algunas líneas de código al archivo "class.smtp.php", las líneas a agregar van cerca de la línea número 242 y debería quedar más o menos así.

public function connect($host, $port = null, $timeout = 30, $options = array()) { if(count($options)==0){ $options["ssl"]=array("verify_peer"=>false,"verify_peer_name"=>false,"allow_self_signed"=>true); }

Ejemplo:


El comentario de donde tomé el ejemplo está en el siguiente enlace:
Comentario en hithub.

Solucionado lo anterior, sin ningún problema se debería poder enviar mensajes, si tienen problemas con los acentos, pueden editar el archivo "class.phpmailer.php" en la línea 47 "public $CharSet = 'iso-8859-1';" y colocar "'UTF-8'" en lugar de "'iso-8859-1'".

Descargar PHPMailer.

domingo, 1 de marzo de 2015

Pidgin Whatsapp Debian (testing)

Hace poco recordé a Pidgin Whatsapp, recordé también que lo probé y funcionó (pidgin mostraba a whatsapp como un plugin más) lo único que no me pareció fue el modo de recuperar el mensaje para crear la cuenta y la contraseña, ese paso... medio tenebroso para mi gusto, por eso no lo pude hacer andar.

Pero ahora ese paso de recuperar la cuenta y la contraseña ya no me parece tan tenebroso, debido a que ahora se puede hacer fácilmente mediante una aplicación, tan fácil como apuntar y hacer click, así de simple, y la mejor parte es que funciona bastante bien, para introducir el número de teléfono este debe tener código de país más nuestro número sin el cero (0), en mi caso un ejemplo: +58 0416xxx... = 58416xxx...


Ya con eso tenemos la cuenta y contraseñe creadas y lista para usar.

Para probar utilicé un paquete .deb para ubuntu (como había probado antes) y funcionó, el detalle, las dependencias, pero funcionó igual.

Luego de probar que funcionara bien compilé mi propio paquete .deb, en mi caso, apenas instalar un par de dependencias y listo, funciona perfecto.

Para usarlo, agregamos una nueva cuenta, y seleccionamos Whatsapp:


Agregamos el número de teléfono como "Nombre de usuario" (el número lo agregamos como explique más arriba) y también agregamos la contraseña (debimos haber creado la cuenta y contraseña primero):


Para agregar contactos lo hacemos usando su número de teléfono como "Nombre de usuario" (el número lo agregamos como explique más arriba) y le agregamos un "nombre o apodo" para que podamos identificarlos mejor.


Podemos configurar algunas opciones de privacidad:


También podemos agregar los smyleis:


Todo lo anterior funciona sin problemas, las imágenes y vídeos llegan como un link, y también podemos enviar (solo he enviado imágenes, y se tardan un poco en llegar), los smyleis funcionan bien, en general sin quejas, si se tiene un número disponible para usarlo de está manera sirve, esto, debido que tengo entendido que si se utiliza el número que utilizamos con whatsapp este se desactiva en el teléfono.

La página de pidgin-whatsapp:
Whatsapp-Purple

En esta página se explica como instalarlo/utilizarlo en ubuntu/fedora/win2:
davidgf

Aquí podemos crear la cuenta y recuperar la contraseña:
davidgf-whatsapp-pwd

Si no funciona debemos recordar "que para introducir el número de teléfono este debe tener código de país más nuestro número sin el cero (0), en mi caso un ejemplo: +58 0416xxx... = 58416xxx..." si no funciona, en esa misma página en la parte inferior ubicamos la letras en negrita "WART", es el programa que utilicé para crear la cuenta y contraseña y es la imagen que muestro más arriba, podemos descargar el exe y usarlo sin problemas (en windows).

El paquete .deb para ubuntu:
ubuntu-ppa

Y el paquete .deb que compilé para debian testing:
pidgin-whatsapp

Las dependencias para debian testing "libc6 (>= 2.7), libgcc1 (>= 1:4.1.1), libglib2.0-0 (>= 2.12.0), libpurple0 (>= 1:2.8.0), libstdc++6 (>= 4.4.0)".

Los Smyleis:
emoji-for-pidgin

Para instalarlo, descargar el "master-zip.zip" descomprimirlo y copiar la carpeta donde están los smyleis dentro de: "$home/.purple/smileys/".

En mi caso quedó así: "/home/lm/.purple/smileys/Emoji-for-Pidgin".

Espero que les sirva.

jueves, 19 de febrero de 2015

Telegram Desktop para Linux (Debian)

Hoy voy a hablarles de una aplicación que me agrada bastante, Telegram Desktop, la he venido utilizando desde hace un buen tiempo y he podido ver su evolución, en un principio no sabía que pensar, pero ahora está claro que es una aplicación para tener en cuenta.

Cuando la ejecuté por primera vez era bastante sencilla, estaba en ingles y tenía algunos otros detalles, pero funcionaba que era lo importante.

A día de hoy todo eso cambió, aunque su interfaz sigue siendo algo sencilla si se quiere (me agrada que sea así) han corregido muchas cosas, como agregar más idiomas por ejemplo, hoy mismo lanzaron una nueva versión en la cual por fin vuelve el icono de minimizado a la barra de tareas (una versión anterior funcionó pero la dañaron de nuevo) y funciona bastante bien.

La aplicación cumple su función, además se pueden enviar archivos, fotos, stickers etc., en su configuración también nos da la opción de elegir una imagen y de colocar un apodo, configurar las notificaciones del escritorio, si se desea actualizar automáticamente, algunas opciones del chat (incluye un fondo de chat), nos da la opción de cerrar las demás sesiones que tengamos abiertas, y algunas otras más también.

En general es una buena aplicación, pienso que ha madurado lo suficiente como para poder utilizarla sin ningún problema, creo que va faltando la opción del "chat secreto" y quizás los "mensajes de tiempo" (si lo tiene no lo he visto xD) por todo lo demás nada para quejarse, por el contrario, agradecer que la aplicación funcione tan bien y nos ofrezca un poco más de seguridad que el promedio.

Para descargarla pueden ir a su página Telegram Desktop.

Una captura de la aplicación en el escritorio.


Para usar la aplicación solo deben descomprimirla una vez descargada, dentro de la carpeta "Telegram" hay dos binarios, solo hace falta ejecutar el binario "Telegram" con eso debería funcionar.

viernes, 21 de noviembre de 2014

Instalando DNSCrypt con OpenDNS en Debian

Hace ya mucho tiempo atrás vengo usando los DNS de OpenDNS, en un principio solo cambié los DNS, esto lo hacía editando el archivo "dhclient.conf", tiempo después creé un registro en la página de OpenDNS y utilizando ddclient mantenía actualizada la ip para un poco más de seguridad y mejores resultados.

Más tarde apareció DNSCrypt que cifra el contenido DNS entre el computador y los servidores DNS, de entrada ofrecían un paquete .deb para instalar, luego este ya no estuvo disponible y tocaba compilar, no era ni difícil ni mucho menos, tampoco hacerlo andar, aunque ahora cuesta un poco más que antes sigue siendo relativamente fácil utilizarlo.

Para comenzar decir que para compilar deben tener instalado ciertas herramientas y dependencias como por ejemplo gcc, g++, automake, make, libtool y quizás algunos otros más que olvidé (esto para los que no han compilado nada antes).

Lo primero es descargar "libsodium", sin esta no podemos compilar DNSCrypt ya que depende de ella.
Descargar libsodium

Descargamos la última versión "libsodium-1.0.1.tar.gz" casualmente lanzada hoy 21/12/2014 (: la descomprimimos y procedemos a compilar.

Esto se puede hacer de la manera tradicional pero para que quede un poco mejor les voy a recomendar un simple script que algunas veces viene en algunas aplicaciones y simplemente lo modifiqué para usarlo, lo llamaremos "prepare", dentro lleva lo siguiente:

#!/bin/sh if autoreconf --install && ./configure \ --prefix=/usr \ --bindir=/usr/bin \ --sbindir=/usr/sbin \ --libdir=/usr/lib \ --includedir=/usr/include \ --mandir=/usr/share/man \ --docdir=/usr/share \ --enable-pie "$@" then echo echo "The DNSCrypt source code was successfully prepared and configured." echo "Type make && make install to build and install DNSCrypt." echo else echo echo "Some part of the preparation process failed." echo "Please refer to doc/devel-notes.txt for details." echo exit 1 fi

Esto fuerza por ejemplo que las librerías, binarios, manuales, etc, se copien donde deben ir y no en otro sitio, por ejemplo los binarios se instalan por defecto en /usr/local/bin y no en /usr/bin, esto lo corrige.

Cuando tengamos el script prepare listo le damos permisos de ejecución y lo copiamos dentro del la carpeta descomprimida de libsodium, abrimos un terminal dentro de la carpeta y ejecutamos el script "./prepare", con esto se debería de poner en marcha la configuración inicial, si todo sale bien y no hay errores seguimos con "make", con esto se debería compilar libsodium si no hay errores, una ves compilado en ves de instalar directo al disco "recomiendo utilizar checkinstall" ya que crea un paquete .deb bastante sencillo el cual podemos instalar y desinstalar con facilidad.

Para usarlo se debe tener instalado checkinstall además revisar el archivo de configuración del mismo "/etc/checkinstallrc" donde nos fijamos si la autoinstalación de los paquetes está activada, esto para que no lo instale de manera automática al crear el paquete .deb, revisamos que estén de esta manera las siguientes lineas:

# Install the package or just create it? INSTALL=0

Ahora si, escribimos "su" para entrar como root y luego seguimos con "checkinstall", esto nos preguntará si queremos agregar algunos comentarios, por ejemplo presionamos "Y" y escribimos algo; libsodium bla bla "enter" es una libreria bla bla "enter" ya podemos seguir, pregunta si deseamos continuar "enter" de nuevo y listo, se crea un paquete .deb dentro de la carpeta.

Lo instalamos y luego ejecutamos ldconfig -v.

Ahora descargamos DNSCrypt:
Descargar DNSCrypt

El procedimiento es el mismo que con "libsodium", es decir, descomprimimos y usamos el mismo script prepare, "./prepare", "make", "su", "checkinstall".

Instalamos el paquete .deb y ya tenemos DNSCrypt listo para usar, ahora falta configurarlo, para eso abrimos el archivo "/etc/dhcp/dhclient.conf" y lo modificamos para dejar las siguientes líneas de esta manera:

#send host-name "andare.fugue.com"; send host-name = gethostname(); #send dhcp-client-identifier 1:0:a0:24:ab:fb:9c; #send dhcp-lease-time 3600; #supersede domain-name "fugue.com home.vix.com"; prepend domain-name-servers 127.0.0.1; request subnet-mask, broadcast-address, time-offset, routers, # domain-name, domain-name-servers, domain-search, host-name, dhcp6.name-servers, dhcp6.domain-search, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers; #require subnet-mask, domain-name-servers; #timeout 60; #retry 60; #reboot 10;" #select-timeout 5; #initial-interval 2; #script "/etc/dhcp3/dhclient-script"; #media "-link0 -link1 -link2", "link0 link1"; #reject 192.33.137.209;

Lo siguiente es agregar las siguientes líneas al archivo "/etc/rc.local", (este probado si funciona) esto, antes de la linea "exit 0":

dnscrypt-proxy -d --resolver-address=208.67.220.220:443 --provider-name=2.dnscrypt-cert.opendns.com --provider-key=B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79 exit 0

Como ven, la línea está antes del "exit 0", con esto si ya listo para usar, al reiniciar la red o la maquina debería funcionar.

Esto lo podemos comprobar entrando en Welcome to OpenDNS!.

Si ven el check pues todo bien (:

Créditos a lignux.com

miércoles, 15 de octubre de 2014

Aptoide una buena alternativa a Play Store

Si poseen un smartphone con Android es muy probable que tengan instalada la app Play Store debido que prácticamente "casi" todas las aplicaciones comúnmente se instalan por esa vía.

Y algo que me molesta es que muchas aplicaciones no colocan su app para descarga desde su propia página, te envían directo a Play Store para que la instales, seguro a muchos les parecerá muy buena la idea de tener todo centralizado, a mi a estas alturas del partido no tanto.

WhatsApp por ejemplo tiene su app para descargar desde su propia página, algo que a mi parecer deberían imitar otras aplicaciones.

Ahora, ES File Explorer va un poco más allá y no unicamente colocan la descarga se su app desde su página, sino que además esta busca actualizaciones automáticamente y nos avisa en caso de que exista una actualización disponible, así deberían ser todas! y no obligatoriamente tener que filtrar todo por Play Store, y no es solo por cuestión de gustos, pueden leer desdelinux.net y entenderán de que les hablo.

Para usar Aptoide podemos descargar su app desde su propia página una ves descargada e instalada la app de Aptoide podemos comenzar a utilizarla, llevo tiempo con ella y funciona sin ningún problema, y no es necesario loguearse para instalar o actualizar nada.

Pueden agregar "Tiendas" algo así como los "repositorios" en linux, de donde se pueden instalar aplicaciones alternativas a las que ya vienen por defecto.

Dentro de las opciones de Aptoide:


La configuración:


En el inicio:


Tiendas:


Las actualizaciones:


Búsqueda de aplicaciones:


Como pueden ver no es tan diferente de lo que ya conocemos, posee una buena funcionalidad y configuración, y no me parece tan pesada como como Play Store.

Para todo el que desee probarla puede descargar la app desde su página.

martes, 7 de octubre de 2014

Ajuste de hora automático con ntpdate en Debian

Ajustar la hora en debian no es tan sencillo como en Windows, y si no tienes un entorno de escritorio (como en mi caso) se poner mejor todavía, para estos casos existe una pequeña pero eficiente aplicación para hacer este trabajo, eso si, funciona como superusuario (root).

Para instalarla:

# apt-get update # apt-get install ntpdate

Una ves instalada la podemos probar como superusuario (root):

root@lm ~ # ntpdate -u 2.pool.ntp.org 7 Oct 18:37:08 ntpdate[4674]: adjust time server 200.189.40.8 offset 0.022892 sec root@lm ~ #

Editado 09/10/2014:
La forma de actualizar que comentaba funcionaba con "/etc/rc.local" no andaba xD corrijo a una que si ya probado si funciona. Probé instalar "NTP" que debería actualizar la hora y no logré hacerlo funcionar, problema de router/configuración valla saber, opte mejor por la opción de "cron".
Pero como es una molestia tener que loguearse para poder ejecutar el comando anterior, lo podemos hacer de manera automática utilizando un sencillo "script" que será ejecutado por "cron" de manera periódica (por lo menos ese es el plan).

Crearemos un "script" que podemos llamar ntp, dentro colocamos lo siguiente:

#!/bin/sh /usr/sbin/ntpdate -u 2.pool.ntp.org

Luego lo copiamos o movemos a "/etc/cron.hourly/", luego de eso le damos permisos de ejecución de la siguiente manera:

# chmod a+x /etc/cron.hourly/ntp

Con esto cron debería ejecutar el script periódicamente y se debería ajustar la hora del sistema. El script no actualiza el sistema inmediatamente luego de iniciar sesión, lo hace en el transcurso que se ejecute el script a través de cron, en mi caso funciona sin ningún problema.

El script lo tome de:
jdbaldoma.net

lunes, 29 de septiembre de 2014

Liquorix Kernel en Debian (testing)

Por estos días Debian estuvo bastante inestable por lo menos en mi caso, lo que me obligó a hacer algunos cambios, entre esos cambios figura el cambio de kernel, el nuevo Kernel Liquorix que estoy utilizando se comporta mucho mejor que el proporcionado por debian.

Una de las formas de notar la diferencia es si se comprime un archivo de 1GB o más, la diferencia es notable, el rendimiento en general se nota mucho mejor, y no he tenido ningún problema con el driver nvidia gracias a que DKMS hace su trabajo.

Para instalarlo en Debian:

# /etc/apt/sources.list.d/liquorix.list deb http://liquorix.net/debian sid main

Podemos utilizar nuestro editor favorito o usar un gestor de archivos gráfico, y agregar la línea que se muestra.

Luego de esto actualizamos he instalamos la llave:

apt-get update apt-get install '^liquorix-([^-]+-)?keyring.?'

Para instalar x86 (i386)

apt-get install linux-headers-liquorix-686 linux-image-liquorix-686

Para instalar x86_64 (amd64)

apt-get install linux-headers-liquorix-amd64 linux-image-liquorix-amd64

Con lo anterior ya estaríamos en condición de reiniciar y utilizar el nuevo kernel.

Lo que muestra el comando uname -a

ljmarin@lm ~ $ uname -a Linux lm 3.16-3.dmz.1-liquorix-686 #1 ZEN SMP PREEMPT Thu Sep 18 01:09:30 UTC 2014 i686 GNU/Linux ljmarin@lm ~ $

Pueden leer un poco más en las siguientes direcciones:
gnulinuxvagos
debianadmin

viernes, 26 de septiembre de 2014

Bash vulnerability en Debian

Ta bueno esto de la vulnerabilidad bash (Shellshock) en linux y Mac OS, eso le recuerda a unos cuantos que no hay sistema operativo 100% seguro y que esa seguridad es enteramente relativa.

Y está la otra parte que es qué probablemente veremos cuentos y más cuentos acerca de este bug, lo exagerarán a más no poder, y como dije hace nada ningún SO es 100% seguro y menos perfecto, lo realmente bueno es que cuando estas cosas pasan todos los que están dentro del mundito linux se enteran, mejor todavía, no es que tarde mucho en corregirse el fallo (sea cual sea), además que quienes están detrás las distribuciones o de servidores linux afectados por algún fallo se apresuran enseguida a tomar medidas para solventar o contrarrestar cualquier situación adversa.

Pero asumamos que pasa esto mismo con Windows, jojo serio? que tan rápido se resuelven ahí los fallos de seguridad por muy críticos que sean? se enteran los usuarios de este SO de estos graves fallos de seguridad? cuantos de ellos están conscientes de eso? mejor... a cuantos les importa? lol.

Dejemos el asunto ahí, en Debian (testing) ayer me dispuse a probar un comando que vi en Gizmodo y expongo los resultados.

La idea es que si el comando muestra "vulnerable" el sistema es vulnerable a ataques, el comando a ejecutar:

env x='() { :;}; echo vulnerable' bash -c 'echo hello'

El resultado:

ljmarin@lm ~ $ env x='() { :;}; echo vulnerable' bash -c 'echo hello' vulnerable hello ljmarin@lm ~ $ bash --version GNU bash, versión 4.3.24(1)-release (i586-pc-linux-gnu) Copyright (C) 2013 Free Software Foundation, Inc. Licencia GPLv3+: GPL de GNU versión 3 o posterior This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. ljmarin@lm ~ $

En debian se muestra una actualización para bash, actualizo y lo intento de nuevo:

ljmarin@lm ~ $ env x='() { :;}; echo vulnerable' bash -c 'echo hello' bash: aviso: x: ignoring function definition attempt bash: error al importar la definición de la función para `x' hello ljmarin@lm ~ $ bash --version GNU bash, versión 4.3.25(1)-release (i586-pc-linux-gnu) Copyright (C) 2013 Free Software Foundation, Inc. Licencia GPLv3+: GPL de GNU versión 3 o posterior This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. ljmarin@lm ~ $

Pasa la prueba, pero leyendo en Genbeta muestran otra variante del comando anterior, es decir ahora son dos comandos.

Los comandos a ejecutar son los siguientes y la idea es que si alguno de los dos muestra vulnerable pues el sistema es vulnerable a posibles ataques.

env x='() { :;}; echo vulnerable' bash -c 'echo Fallo 1 parcheado' env X='() { (a)=>\' sh -c 'echo vulnerable'; bash -c 'echo Fallo 2 sin parchear'

El primero:

ljmarin@lm ~ $ env x='() { :;}; echo vulnerable' bash -c 'echo Fallo 1 parcheado' bash: aviso: x: ignoring function definition attempt bash: error al importar la definición de la función para `x' Fallo 1 parcheado ljmarin@lm ~ $ bash --version GNU bash, versión 4.3.25(1)-release (i586-pc-linux-gnu) Copyright (C) 2013 Free Software Foundation, Inc. Licencia GPLv3+: GPL de GNU versión 3 o posterior This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. ljmarin@lm ~ $

Va bien, ahora el otro:

ljmarin@lm ~ $ env X='() { (a)=>\' sh -c 'echo vulnerable'; bash -c 'echo Fallo 2 sin parchear' vulnerable Fallo 2 sin parchear ljmarin@lm ~ $ bash --version GNU bash, versión 4.3.25(1)-release (i586-pc-linux-gnu) Copyright (C) 2013 Free Software Foundation, Inc. Licencia GPLv3+: GPL de GNU versión 3 o posterior This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. ljmarin@lm ~ $

No pasó la prueba y aparentemente sigue "vulnerable", y aunque han dicho que esto supuestamente está corregido en debian, bueno, por lo menos en mi caso parece que no, tocará sentarse a esperar que corrijan de una ves el fallo.

jueves, 18 de septiembre de 2014

Debian Nvidia driver legacy (nvidia-legacy-304xx-driver)

Después de usar el driver Nouveau por unos meses he vuelto al driver de Nvidia, la razón de esto es que el computador comenzó a tener cuelgues aleatorios sin razón ni sentido, tenía un comportamiento bastante errático la verdad.

Los drivers de Nvidia por un tiempo estuvieron fuera de los repositorios de Debian, volvieron pero ahora el driver 304.xx pasó a ser legacy con esto se pone un poco complicado el asunto al momento de querer instalar los drivers de nuevo.

Justo ahora el driver legacy da soporte a los modelos GeForce por debajo de 8xx y el driver actual da soporte a GeForce 8xx para arriba, asi que si tienes un modelo por debajo de 8xx (como en mi caso) es necesario instalar el driver legacy.

Para instalarlo volví a poner a nouveau en el blacklist y cambié nouveau por nvidia en el xorg.conf, he instalé lo siguiente:

nvidia-legacy-304xx-driver, nvidia-legacy-304xx-kernel-dkms, nvidia-legacy-304xx-alternative, nvidia-settings-legacy-304xx nvidia-installer-cleanup, nvidia-kernel-common, nvidia-support, xserver-xorg-video-nvidia-legacy-304xx

Estos son los drivers Nvidia que deben estar instalados y ninguno más, demás está ponerse a jugar con algún otro paquete de la lista de Nvidia, en mi caso fue perdida de tiempo, con estos paquetes instalados funciona, incluso el driver vesa se niega a funcionar.


Recomiendo enviar el driver nouveau al blacklist y pasar a vesa, después de eso reiniciar he instalar los drivers Nvidia antes mencionados, colocar el driver nvidia en el xorg.conf y despues de reiniciar de nuevo debería funcionar.

Prácticamente está información no está en Debian, o por lo menos no la vi, o no está actualizada, como sea, difícil este asunto de los drivers Nvidia en Debian.

Donde conseguí algo de información: http://balau82.wordpress.com

Editado 09/10/2014:
Se agregó "nvidia-settings-legacy-304xx" a la lista, no estaba en los repos al momento de crear el post.

miércoles, 27 de agosto de 2014

El mundo Linux y sus Ultra Conservadores

No voy a contar como llegué a este punto de la historia con Linux ni voy a recordar todos los traspiés que dí con él a lo largo de ese tiempo.

Simplemente un análisis, un punto de vista de algunas cosas que he visto en todo ese espacio de tiempo que ha transcurrido, y no en vano, bastante que he aprendido, haberlo hecho me ha permitido lidiar con cosas que de otra manera hubiese sido cuesta arriba, nada más decir un acierto haber cambiado a Linux.

Pero (siempre hay un pero) porque Linux nunca ha calado entre los usuarios? porque si dicen que cada ves hay más usuarios en general, todo sigue básicamente igual con Linux, y lo mejor, no parece mejorar? porque?.

Yo mismo dije que Linux no era para cualquier persona, y no era por fastidiar, era la verdad en ese momento. Luego que Google mostró al mundo el Androide dije "esto si puede funcionar" que para cuando salió al mercado no lo tenía fácil, más sin embargo funcionó, y porque?, como es que el Androide salió de la nada y fue calando de a poco hasta llegar a donde está ahora?, he visto a la más reacia usuaria de BlackBerry cambiar al Androide y feliz de la vida, nada, no hay vuelta atrás, algo debe ser, pero que?.

Para no aburrir a nadie con el cuento y resumirlo a su máxima expresión la respuesta es simple, Google creó todo un eco-sistema al rededor del Androide, pero eso no es lo mejor, lo mejor es que funciona, si! funciona!.

El usuario de Androide no tiene que lidiar con foros llenos de usuarios estreñidos, ni con terminales y comandos, tampoco es necesario aprender a crear script, o tener que leerse algún manual de usuario del tamaño de la santa biblia, no! no! y NO!.

Por eso Windows sigue (y seguirá por otro buen rato) siendo el sistema operativo de preferencia entre los usuarios de escritorio y portátiles, al gran porcentaje de usuarios les importa nada que Windows sea libre o no, nada les importa la GPL y lo que representa, nada, ni siquiera un poco, solo les importa que el sistema funcione, poder utilizar las aplicaciones que necesitan y que sea agradable a la vista, fuera de eso, poco.

Pero que encontramos en Linux? Una comunidad de usuarios si se quiere grande en verdad, pero dispersa, diluida entre discusiones miopes y sin sentido, alejados entre sí por viejas disputas y rencores, por quien tiene la razón y quien no, lucen como estrellas dispersas en el cielo nocturno, así nada más.

Todavía recuerdo la oportunidad perdida, si, cuando XP ya era vetusto y nadie quería cambiarlo, cuando comenzaron a aparecer las netbook, tabletas, etc., esa era la oportunidad de oro, justo esa, allí la comunidad Linux y tooodo ese mundito que gira a su alrededor debió unirse y crear algo solido, único, con participación de todos los interesados, y lanzar un Linux preinstalado, fácil de utilizar, sin comandos, solo apunte haga click y listo, porque no!.

Y eso, solo soñar, comunidades enteras fragmentadas por tonterías como "si incluir flashplayer, drivers Nvidia, drivers wifi, etc." y la lista es larga, hasta por el tipo de letra habrá seguro discusión, y señores, en un ambiente así, pocas cosas prosperan.

Son los conservadores y los ultra conservadores los que no dejan que Linux prospere y crezca, son los que lo mantienen maniatado y atrapado en su fanatismo, son los que lo apartan del común de los mortales que viven en este planeta, para ellos es inconcebible un Linux preinstalado con drivers Nvidia o Broadcom y que funcione igual o mejor que cualquier Windows, eso no! nunca!.

Por razones como esas (que es apenas una parte) es que Linux se mantiene relegado a un pequeño número de usuarios, usuarios que probablemente hayan pasado ya por varias distribuciones hasta llegar a la que para ellos es la mejor, una ves allí, cavan trincheras, levantan casamatas, aceitan ametralladoras y abren fuego a discreción contra propios y extraños.

Particularmente poco o nada he participado en ese mundito, lo he intentado eso si, cada ves los mismo, una mala experiencia, después de la que para mi dije "esta es la ultima" no más, prefiero mil veces mantenerme a la distancia que acercarme y arriesgarme a caer en el mundito que tanto detesto, como sea, cada quien a lo suyo, nada más decir en mi humilde opinión una de las razones del porque Linux no surge como sistema operativo.

Ahora, si se toma una distribución como Red Hat Linux o Ubuntu (solo por nombrar alguna) y la ofrece preinstalada y se crea un entorno al rededor así como lo creó Google con el Androide, le aseguro que con el tiempo calará y los usuarios serán cada ves más con el tiempo, tal cual a pasado con Android, pero al parecer no existe la voluntad ni el interés de ofrecer algo así, y aunque si se venden equipos preinstalados con Ubuntu, están lejos de ofrecer algo que atraiga a los usuarios.

miércoles, 6 de agosto de 2014

Wipe LG L3 E400 con Fastboot + Recovery ClockworkMod

Para borrar completamente todos los datos que contenga el E400 debemos tener adb + fastboot en el ordenador.

Uno de los comentarios comunes que he leído es que después de instalar Recovery ClockworkMod es muy pero muy difícil de quitar, falso, con fastboot se puede hacer y podemos dejar el E400 en blanco para instalar de nuevo una Rom Stock "KDZ".

Para comenzar conectamos el E400 al cable usb y probamos con adb:

$ adb devices List of devices attached LGOTMS4736a2 device

Si adb detecta el E400 veremos algo parecido a lo anterior.

Ahora reiniciamos el E400 para entrar en modo fastboot:

$ adb reboot-bootloader

Después de esto deberíamos ver una pantalla negra con letras blancas y esto quiere decir que estamos en fastboot.

Probamos si fastboot reconoce el E400:

$ fastboot devices LGOTMS4736a2 fastboot

Fastboot si reconoce el E400.

Seguimos, borramos todos los datos del teléfono (después de esto no hay vuelta atrás).

Borramos el Sistema:

$ fastboot erase system

Borramos el boot:

$ fastboot erase boot

Borramos los datos de usuario y el cache:

$ fastboot erase userdata

$ fastboot erase cache

Borramos el recovery (aquí da igual el recovery que tengamos, igual lo borra):

$ fastboot erase recovery

Aquí ya el E400 es un pisapapeles, porque no tiene prácticamente nada, podemos entrar en modo de Emergencia y seguir con una Rom Stock o podemos instalar Recovery ClockworkMod para instalar la Custom Rom que más nos guste.

Para instalar Recovery ClockworkMod debemos primero haberlo descargado, lo podemos descargar desde su página:
Recovery ClockworkMod

Es el "LG Optimus L3", lo copiamos dentro de la carpeta donde tenemos adb + fastboot (windows) o abrimos un terminal donde lo tengamos (linux) y seguimos con:

$ fastboot flash recovery your_recovery_image.img

Claro, donde "your_recovery_image.img" es el nombre del recovery.

Listo, después de esto apagamos el teléfono, pulsamos vol- + inicio + power, soltamos power cuando encienda y deberíamos esperar unos segundos para entrar en el recovery.

viernes, 1 de agosto de 2014

Rootear LG L3 E400 explicado paso a paso

En Google se consiguen manuales, tutoriales, vídeos etc., de como rootear (tener privilegios de administrador) en el LG L3 E400, y lo que prácticamente la mayoría hace es descargue, apunte, haga click, listo, no funciono? se le petaquió (daño) el móvil?, pues llore.

Así que bueno, si están buscando apuntar hacer click y listo, esto no es para ustedes xD

Los pasos para rootear el teléfono (Gingerbread) son un ligadito de un par de páginas y lo demás va por mi cuenta.

Las páginas:
forum-xda-developers
forum-androidcentral

Para rootear el teléfono necesitan tener lo siguiente:
- drivers de usb instalados,
- drivers de ADB,
- adb + Fastboot
- Total Commander + adb plugin
- Droid2Root.rar

Aunque pueden conseguirlos en google dejo los Link de descarga:
* Drivers usb para el teléfono
* Drivers adb
* adb + Fastboot
* Total Commander
* adb plugin
* Droid2Root.rar

Teniendo todo instalado y configurado y asegurándonos de que podemos ver nuestro teléfono celular desde total commander con el plugin adb como se muestra en la imagen.


Lo siguiente es ubicar con total commander la carpeta de adb en el disco duro, que debería haberse instalado en la raíz del disco C:, dentro de la carpeta adb vamos a la barra de menú de total commander y seleccionamos "Comandos" y luego "Abrir consola de línea de comandos" esto abrirá la consola de windows dentro de la carpeta adb.

Y comenzamos con adb ejecutando lo siguiente:

# para verificar la conexión
- adb devices

# Y deberíamos ver:
List of devices attached
LGOTMS4736a2 device


Descomprimimos (deben detener el antivirus antes) el archivo "Droid2Root.rar" y copiamos el binario "rageagainstthecage-arm5.bin" dentro de la carpeta adb.

# copiamos el binario al teléfono
adb push rageagainstthecage-arm5.bin /data/local/tmp/rageagainstthecage-arm5.bin

# abrimos la consola de adb
adb shell

# nos movemos a la carpeta donde copiamos el binario
cd data/local/tmp

# damos permisos al binario
chmod 0755 rageagainstthecage-arm5.bin

# ejecutamos el binario (exploit)
./rageagainstthecage-arm5.bin

Luego de esto último deberíamos ver algunas letras, el teléfono quizás haga algún sonido de notificación, esperamos un minuto y damos enter de nuevo en la consola.

# detenemos adb
adb kill-server

# lo iniciamos de nuevo
adb devices

# abrimos de nuevo la consola y deberíamos entrar con "#" en ves de "$"
adb shell

# montamos "system" que es donde está casi todo el sistema
mount -o remount,rw -t ext4 /dev/mmcblk0p14 /system

Porque "mmcblk0p14" y no cualquier otro? si miramos dentro del archivo "mounts" que está dentro de android veremos:
/dev/block/mmcblk0p14 /system ext4 ro,relatime,barrier=1,data=ordered 0 0

Así que ahí es donde se monta el sistema, seguimos.

En este punto debemos copiar con total commander el binario "su" a:
"/system/xbin",

lo mismo que "busybox" ambos están dentro del Droid2Root.

Porque copiarlos con total commander y no por consola? simple, si por ejemplo hacen:
cp /data/local/tmp/su /system/xbin/su

Les va a dar error, pueden probar, quien hace "cp" es "busybox" y si no está dentro de android y menos están los link creados no funciona nunca.

Deben copiar también "busybox.apk" (debería ser una versión actualizada) a:
"/system/app/"

El "Superuser.apk" no lo copien, esto pueden hacerlo después, o instalar "SuperSu.apk" en su lugar que es el que recomiendo.

# Listo, seguimos con: (Permisos y usuario root root)
chown 0.0 /system/xbin/busybox
chown 0.0 /system/xbin/su
chmod 6755 /system/xbin/su
cd /system/xbin
ls -l *su
(Aquí deberíamos ver:)
-rwsr-sr-x root root 125420 2014-07-13 04:01 su

# seguimos (link, desmontamos y reiniciamos)
ln -s su /system/bin/su
ln -s busybox /system/bin/busybox
mount -o remount,ro -t ext4 /dev/mmcblk0p14 /system
reboot


Después de reiniciar el teléfono lo primero que deben hacer es abrir "busybox" esperar que termine de cargar todo, una ves termine darle a "Install", ya está instalado pero es un binario desactualizado y además los link no están creados, esto no debería dar ningún error.

Una ves termine busybox pueden salir y ya está listo, pueden desinstalar busybox si quieren, e instalar Superuser o SuperSu para manejar los permisos, recomiendo SuperSu que actualiza el binario "su" y no he tenido ningún problema con el.

Copiando todo como lo hice desde linux (que es lo mismo):

root@lm ~ # adb devices * daemon not running. starting it now on port 5037 * * daemon started successfully * List of devices attached LGOTMS4736a2 device root@lm ~ # adb push rageagainstthecage-arm5.bin /data/local/tmp/rageagainstthecage-arm5.bin 129 KB/s (5392 bytes in 0.040s) root@lm ~ # adb shell $ cd data/local/tmp $ chmod 0755 rageagainstthecage-arm5.bin $ ./rageagainstthecage-arm5.bin [*] CVE-2010-EASY Android local root exploit (C) 2010 by 743C [*] checking NPROC limit ... [+] RLIMIT_NPROC={2409, 2409} [*] Searching for adb ... [+] Found adb as PID 184 [*] Spawning children. Dont type anything and wait for reset! [*] [*] If you like what we are doing you can send us PayPal money to [*] 7-4-3-C@web.de so we can compensate time, effort and HW costs. [*] If you are a company and feel like you profit from our work, [*] we also accept donations > 1000 USD! [*] [*] adb connection will be reset. restart adb server on desktop and re-login. $ root@lm ~ # root@lm ~ # adb kill-server root@lm ~ # adb devices * daemon not running. starting it now on port 5037 * * daemon started successfully * List of devices attached LGOTMS4736a2 device root@lm ~ # adb shell # mount -o remount,rw -t ext4 /dev/mmcblk0p14 /system # chown 0.0 /system/xbin/busybox # chown 0.0 /system/xbin/su # chmod 6755 /system/xbin/su # cd /system/xbin # ls -l *su -rwsr-sr-x root root 125420 2014-07-13 04:01 su # ln -s su /system/bin/su # ln -s busybox /system/bin/busybox # mount -o remount,ro -t ext4 /dev/mmcblk0p14 /system # reboot root@lm ~ #

Bueno quedo largo (más de lo que esperaba) pero la idea es que se entienda como funciona y de no brickear el teléfono, espero sirva (: