lunes, 31 de marzo de 2014

Antología y anatomía de los ratones

Como os habrá pasado a todos, seguro que alguna vez habréis ido acumulando trastos y más trastos por si las moscas. En mi caso, el diógenes ha hecho mella en los ratones. Porque, haciendo limpieza de las cosas que se podrían tirar han ido apareciendo cosas como estas:

Ratón de bola por puerto serie y 2 botones
Ratón de bola por puerto serie y 2 botones
Ratones de bola por puerto serie y 3 botones
Ratones de bola por puerto serie y 3 botones (teníamos otro más de estos)
Ratones de bola por puerto miniDin y 3 botones
Ratones de bola por puerto miniDin y 3 botones
Añadir leyendaRatones de bola por puerto miniDin y 3 botones (uno de ellos es la reuda)
Añadir leyendaRatones de bola por puerto miniDin y 3 botones (uno de ellos es la reuda)

Además, estaba un conversor del puerto serie para ponerlo en el de 25 pines: 

Conversor tamaños puerto serie 9 pines a 25 y vicebersa
Conversor tamaños puerto serie 9 pines a 25 y vicebersa

No sólo eso. Ya que iban a ir a la basura (menos algunas cosas como las bolas), me ha dado por destripar uno de los que tenía rueda:

Las dos partes del ratón: tapa y base
Las dos partes del ratón: tapa y base
Circuitería del ratón. La rueda se puede levantar (y quitar)
Circuitería del ratón. La rueda se puede levantar (y quitar)
La rueda se podrá desmontar. Los rectángulos negros de la izquierda son los botones. Realmente lo que es el botón es la pequeña franja blanca que tienen encima. El cable que se puede ver que está conectado justo abajo es el de datos. Si quitamos la placa marrón:

Los rodillos del ratón que se mueven al desplazar la bola
Los rodillos del ratón que se mueven al desplazar la bola
¿Os acordáis que de vez en cuando había que hacer una buena limpieza de los rodillos y de la bola porque si no, no había forma de que funcionase?

Y, por último:

Los botones desmontados de la tapa del ratón
Los botones desmontados de la tapa del ratón
Muy curioso: ¿verdad? ¿Cuántos de vosotros lo habíais hecho? En mi caso, nunca se me había ocurrido hacerlo hasta ahora. 

domingo, 9 de marzo de 2014

RootedCon 2014: Tercer y último día

Tercer y último día de la RootedCon 2014. Una vez más, me ha llevado Miguel (@BinaryRock) al evento. Como en el resto de días he ido viendo a todos los compañeros de tropelías. Aquí está la foto que me hice con Longinos:

Longinos y yo en la RootedCon 2014
Longinos y yo en la RootedCon 2014
Las ponencias de este último día no fueron menos interesantes que las realizadas los anteriores días.

Lo primero que hizo Román fue presentar a Maximilian que se ha encargado de hacer la RootedWarefare. Para saber más, revisad la página ToolsWatch.

Después de presentarlo, Manu Quintans y Frank Ruiz nos hablaron de distintas formas de actuar de ciertos grupos criminales. Para evitar hacer muy repetitivo el prefijo "ciber" decidieron hacer la broma de cambiarlo por "concha". Además, también describieron un poco cómo actuaba un "periodista" que hablaba de cierto grupo y que, prácticamente, al informar mientras que las autoridades policiales investigaban, también entorpecían la investigación. 

La charla que iban a dar Youcef Bajajaja y Juan Antonio Rivera no pudo ser, por lo que la que estaba planeada para ser la última, se pasó a esta hora: Hugo Teso nos habló sobre los peligros que tienen los aviones a la hora de poder manipular el software embebido: las facilidades para que cualquiera pueda solicitar una actualización, cómo se puede acceder con una inyección SQL o XSS de los paneles de actualización de los mismos... Además, las plataformas que permiten hacer estos accesos también se pueden utilizar por móvil. Incluso, dichas actualizaciones se pueden enviar al avión por wifi o 3G. Nos enseñó un vídeo con una prueba de concepto hecha con un dron. Que si no...

José Picó y David Pérez hicieron la siguiente ponencia, en la que nos mostraron cómo se podía forzar que un móvil conectado en modo 3G pasase a 2G. Además, una observación importante que hicieron: no hay nada que no se sepa, porque todo está en la documentación de las patentes, por lo tanto es público. Su investigación se basaba en que, al menos hasta cierto punto, no todos los mensajes (donde mensajes son cada una de las comunicaciones o paquetes que se transmiten entre el terminal y las estaciones base. Así, resumiéndolo mucho).

Antes de ir a comer, Borja Berástegui nos explicó o nos mostró cómo se hacía con una consola cmd en cada terminal público que se encontraba, desde kioskos, pasando por pantallas táctiles de anuncios o, incluso, algún que otro cajero que pilló reiniciándose en algún punto de la geografía española. Eso sí, siempre siguiendo unas reglas muy estrictas como no utilizar herramientas tipo fuzzers o similares que hiciesen el ataque. Como norma general, tirando de los diálogos de ayuda, o moviendo la ventana mal ajustada... Y siempre dejando las cosas tal y como se las había encontrado. 

En un instante determinado, tanto Román como Nico Castellano nos animaron a participar en un grupo que de momento lleva el nombre de "Comunidad y Seguridad". De lo que se trata es de crear un grupo que tenga ideas en común para poder ayudar o asesorar a la sociedad en temas de seguridad. Sobretodo cuando se ve que se están redactando leyes que nos afectan en relación a la seguridad. 

Juan Vázquez y Julián Vilas nos hablaron de sistemas SCADA y cómo pudieron explotar un CENTUM OS 3000. Las dificultades para encontrar o poder descargar ROMs de este tipo de sistemas. Pero, sobretodo, también los requisitos que se imponen para poder ejecutarlos: sistemas operativos XP SP2, compartir con permisos de control total la carpeta C:\nombre3000\, deshabilitar el firewall... Hicieron una demo tirando de metasploit. Nos dijeron que todos los descubrimientos (que no tienen por qué ser todos lo que he enumerado aquí) ya han sido reportados al fabricante. 

Aladdin Gurbanov nos mostró un ejemplo de cómo con un lector/escritor de tarjetas magnéticas y algunas en blanco puedes duplicar una original. Nos enseñó cómo se divide la información que está almacenada en la banda magnética, qué contiene cada uno de los tracks y cómo se separa cada uno de ellos. Mostró un vídeo de cómo duplicó su propia tarjeta de crédito y nos mostró la información leída de la misma. Esa fue una de las condiciones que le pusieron: sólo podía mostrar información de sus tarjetas. 

En ese descanso, los que nos animamos, fuimos con Nico a una sala a parte para hacer una reunión sobre el tema de "Comunidad y seguridad". Quedamos en que nos enviarían un correo para poder ver más información al respecto y así aportar nuestra opinión. Algo que ya se movió hace dos años y se paralizó, se va a volver a mover. Esperemos que esta vez continué. 

Al finalizar esa reunión, Rául Siles (@dinosec) ya había empezado su charla sobre iOS. Cuando llegué, estaba contando cómo se podía engañar al terminal para indicarle que la versión que se va a instalar es más antigua que la que tiene instalada. Otra forma de ataque es al revés: que se instale una actualización y forzar a que se crea que tiene una fecha de, por ejemplo, 5 años adelante (de 2020, por poner un ejemplo). Por lo tanto, cada vez que llegue una actualización, esta nueva como va a ser "más antigua" que la instalada, y se rechazará. El primer ataque tiene que ser persistente (estar atacando siempre) el segundo, se hace una vez y ya dura para siempre. Para iOS 5 y 6 se hace una forma, para la versión 7 de otra. Además, aún habiendo reportado a Apple y éstos habiendo intentado solucionar el tema, no parece que lo hayan hecho del todo bien. 

Jaime Sánchez y Pablo San Emeterio nos hablaron de distintos tipos de mensajería instantanea para móvil: Viber, Snapchat, Whatsup. Cada uno de ellos con sus temas de seguridad. Por ejemplo: Viber ha optado por no cifrar absolutamente nada los multimedia, fotos, videos, localizaciones gps... y sólo cifrar los mensajes (Gracias Pablo por la corrección, :D ). O snapchat, que permite (o permitía), spamear o, incluso, bloquear un terminal, hasta tal punto que las pruebas que hicieron nos contaron que a veces incluso le llegan mensajes enviados hace casi un mes o dos. 

Para terminar, la organización hizo una entrega de los premios a las mejores ponencias de los últimos 5 años (los 4 años pasados): 
- 5º: Roberto Baratta
- 4º: Juan Antonio Calles y Pablo Gonzalez
- 3º: Raúl Siles y Jose Antonio Guasp Guasch
- 2º: David Perez y José Picó
- 1º: Jaime Peñalva (se lo recogió Javier Rodríguez, del GDT). 

Y aquí terminó la RootedCon V. Una vez más, espero poder asistir el año que viene. Mi enhorabuena por este año y nos vemos en la próxima!


sábado, 8 de marzo de 2014

RootedCon 2014: Segundo día

Hoy, ha sido el segundo día de la RootedCon 2014. Miguel, (@BinaryRock) me ha vuelto a recoger para ir al evento. Con la experiencia de ayer jueves ya sabíamos cómo llegar, por lo que un problema menos.

Hoy hemos podido ver otras ponencias que también han estado muy, muy chulas.

La primera charla la han dado Jose Luís Verdeguer, Pepelux (@pepeluxx) y Victor Soria. Nos han hablado de escuchas telefónicas, empezando por la Historia (sic) de las mismas. Se le puede dar el nombre de eavesdropping. También nos han hablado de los posibles sniffers específicos para espiar las comunicaciones VoIP. O distintas tecnologías empleadas, nombrando algunas como, por ejemplo, ECHELON, EtherPeek, Omnivore, Carnivore, NarusInSight, ENFOPOL, SITEL...

También nos han hablado de algunos programas empleados para VoIP que cifran algunos datos, pero que aún así, se pueden terminar escuchando las comunicaciones (o no se tiene el control total de las mismas)... Así muy resumido. Por ejemplo: RedPhone, ZFone... Incluso, nos han hecho un PoC con un sistema que han montado que se llama SecurCall (securcall.org: ahora mismo no accedo a la URL).

La segunda ponencia la ha dado Joaquín Moreno. Ésta ha tratado sobre cómo hacer un forensics ha un Mac OS y las dificultades que esto entraña. Un ejemplo es que puede haber problemas a la hora de realizar un clonado de disco, porque parece ser que a la hora de hacer una lectura se produce una escritura. Por lo tanto a la hora de verificar la imagen nunca se obtendrá el mismo hash. Cabe mencionar la herramienta PLASO. Nos ha recomendado utilizar LiveCDs para este tipo de tareas.

Jorge Ramió nos ha hablado de RSA. Le ha dado un pequeño repaso de su algoritmo. No es para cifrar frases, sino números.

Jose Luís Quintero y Felix Estrada: han puesto dos ejemplos de los peligros de los ordenadores: Juegos de Guerra por un lado y La Jungla (de cristal): 4 por otro. Cómo los ordenadores pueden afectar la seguridad de un país. Por un lado la película de Juegos... en la que un simple juego puede hacer que se lancen unos misiles. La otra peli: cómo se puede afectar a las infraestructuras de un país. Pero estos comentarios han durado apenas unos pocos minutos. Siendo ambos militares, han hecho incapie en que "cuanto más se depende de las tecnologías, más vulnerables somos". Nos han dicho que hay que tener en cuenta, entre otros factores, tres cosas: Las personas, la tecnología y la metodología. Sobretodo hacer un análisis de riesgos. Término que no sólo se ha empleado en esta charla. Además, las infraestructuras críticas son de empresas privadas. Por ejemplo: ¿quién entrega la luz?¿Y las telecomunicaciones? Otra palabra que tampoco nos podemos olvidar: ciberguerra. También muy recurrente en las charlas.

Jeremy Brown ha dado la charla, una vez más, en inglés, sobre cómo ser un security research en Microsoft. Nos ha explicado cómo funciona internamente el MSVR: un programa que premia a los que encuentran fallos de seguridad. No sólo a los que no pertenecen a la plantilla, sino también a aquellos que sí lo son, pero que lo hacen fuera de su horario de trabajo. No sólo se encargan de sus vulnerabilidades, sino también si se encuentra que alguna vuln. de una empresa tercera les puede afectar (y así lo hará), se ponen en contacto con ésta para que lo solucionen. Pero ellos no se encargan de parchearlo, aunque pueden ayudar. Un ejemplo que han puesto ha sido con VLC y una librería llamada libavcodec.

Más tarde, Chema Alonso (@chemaalonso) nos ha hablado de la tecnología que han creado en 11Paths: Latch y cómo se les ocurrió la idea. Nos ha mostrado ejemplos de qué se puede hacer y que no es del todo habitual: Single Sing On, control parental, acceso al SSH... Además, a la hora de preguntarle parece que le hemos dado alguna idea. Hará falta que las estudien para ver su viabilidad.

Las dos siguientes ponencias las dieron, cada uno por separado, los hermanos Tarascó.

La primera la, de Miguel, nos presentó una librería nativa y totalmente gratuita para poder poner en modo monitor... ¡y en Windows! la tarejeta wifi. Algo que hasta ahora o había que pagar una pasta, o había que utilizar un programa específico. Se basa en los drivers NDIS. ¡Qué tiempos! Me recuerda cuando tuve que hacer funcionar cierta tarjeta de red en un Linux y no había ningún múdulo. No quedaba otra que utilizar ndiswrapper. Pues el driver que han montado se basa precisamente en NDIS. Además, da soporte para el estandar 802.11ac, el próximo que saldrá para las wifis. Aunque falta la inyección, están trabajando en ello. Nos hizo alguna que otra prueba con Acrylic, que ya la trae.

La segunda, de Andrés, nos presentó un pequeño... ¿"bicho"? Hizo una ponencia sobre wifis y APTs, en la que nos presentaba el suyo propio, al que han llamado ACARUS. Utiliza distintas capacidades de salida: TCP, UDP, HTTP y DNS (sí, lo sé, ambos forman parte de los anteriores), Nos hizo varias demos y nos habló del protocolo WXP. Además, enumeró algunas de las formas posibles para detectarlo.

Al terminar, Akamai hizo el sorteo que prepararon para la ocasión. Nada: en 5 minutos estuvo despachado.

La penúltima del día nos la dio Roberto Rabatta: ¿Cómo se puede conseguir mejorar la seguridad sin tener presupuesto (ni pasta) para hacerlo? Un buen estudio en profundidad: cotes, riesgos, operación, valor añadido...

Para terminar, el capitán Cesar Lorenzana y Javier Rodríguez, del Grupo de Delitos Telemáticos de la Guadia Civil, nos presentaron un caso en el que estuvieron trabajando en el que una empresa tuvo un infección de un bicho y cómo llevaron el caso. Lo diferenciaron entre cómo Javier tiraba más de la parte tecnológica y César se ponía cómo el investigador más a la antigua usanza. En la recogida de evidencias se hicieron cosas típicas como los volcados de memoria, clonaciones de discos (por ejemplo, para virtualizar después), recogida de .pcaps de red para su posterior análisis... O, ante un atolladero, solicitar ayuda a compañeros de otros cuerpos policiales, incluyendo los de otros países. Gracias a la unión de ambos tipos de investigación y esta solicitud de ayuda, consiguieron otro caso de éxito.

Una vez hubo finalizado el evento, la organización había preparado un concierto en la sala La Sal.

Otro estupendo día... ¡Y sólo queda uno! Seguro que se da igual de bien que estos otros dos.

viernes, 7 de marzo de 2014

RootedCon 2014: Primer día

Hoy ha sido el primer día de la RootedCon 2014. Un día lleno de cambios.

Lo primero de todo: este año es muy especial. Es el quinto aniversario. ¡El quinto aniversario! Y se dice pronto. ¡5 años!

Lo segundo es que como motivo de celebración, se ha cambiado el lugar donde se celebraba habitualmente. En vez de hacerlo en el edificio de la Mutua Madrileña que está en el centro de Madrid, se ha hecho cerca de Barajas (lugar donde está el aeropuerto comercial de Madrid) en el Hotel Auditorium. También, gracias a esto se han podido conseguir unas 1000 plazas en vez de las 500 que se tenían en la anterior sala. O al revés.

Otro cambio es que en esta ocasión me han llevado. Gracias a Miguel, @BinaryRock.

Otra novedad es que hemos tenido un montón de stands, desde las chicas de Eventos Recreativos, a las que desde aquí les mando un beso muy fuerte, pasando por PaloAlto, Everis, una impresora 3D... Es más, me hice con 3 libros de 0xWord, ¡que ya voy con mucho retraso!

Libros de 0xWORD que me he traído de la RootedCon 2014
Libros de 0xWORD que me he traído de la RootedCon 2014

Además, también me he encontrado con un montón de los habituales. Y he podido hablar de mis proyectos, o intentos de, con otros.

Pero, como no, lo importante también han sido las ponencias.

La primera: Francisco Jesús Gómez (@ffranz) y Carlos Juán Díaz (@ttlexpired) nos han hablado de Sinfonier. Una herramienta para obtención de datos. Sobretodo lo que se acaba buscando es como hacer scriptings, pero con una interfaz gráfica. Lo que comúnmente se llama "para tontos". Además, ¡piden colaboración!. Si te interesa... ¡adelante!

Alfonso Muñoz (@mindcrypt) nos ha hablado de esteganografía en textos. Pero textos, que al lenguaje natural resulten legibles y no sea sencillo saber si se oculta información o no. Alguno  de los problemas que nos encontramos a la hora de trabajar en este ámbito, puede ser, por ejemplo, la polisemia. El ejemplo que nos ha puesto es el de toda la vida: banco tiene muchas acepciones.

Pau Oliva (@pof) nos ha hablado sobre su pequeña herramienta que permite saltarse los portales cautivos de, sobretodo, muchos restaurantes, haciendo spoofing de alguno de los clientes que ya están conectados al mismo. ¡Además tiene la herramienta publicada en el Play!

Antonio Ramos nos ha hablado de análisis de riesgos. En vez de utilizar las técnicas AGILE para la programación, las aplicamos a los análisis de riesgos. Hemos podido oír expresiones como "cisnes negros": Algo inesperado (muy resumido por mi parte, según he podido entenderlo). De lo que se trata es de estar preparados para lo que no se sabe que va a suceder. También nos ha hablado de 4 tipos de escenarios: simple, complicado, complejo o crítico. Según la experiencia y la gravedad del mismo, estará catalogado en un lugar o en otro.

Otra novedad: una charla en inglés. En este caso hemos tenido la visita de Raj Shah. Para el que ha querido se ha podido poner unos auriculares para tener traducción en inglés. En mi caso, me he puesto a oído pelado. Es decir, me he lanzado a escucharlo sin cogerme cascos ni nada. Nos ha hablado de los APTs, término para el que, en su opinión, sólo es un palabro de márketing. Si bien éste procedía ya desde la Guerra Fría. Tiene tres características, de las cuales, sólo puedo contar dos: determinante y paciente. La primera de todas se me ha quedado en el tintero en las notas que he tomado. El papel de la libreta no es que fuera muy hasta allá y no se dejaba escribir del todo bien. ¿Una realidad humana? De todas formas, lo de ponerse a escuchar así no ha sido mala experiencia. A lo mejor a otra hora que no sea justo después de comer...

Pablo Gonzalez (@pablogonzalezpe) y Juan Antonio Calles (@jantonioCalles) han presentado su ponencia sobre ciberguerra. No sin antes mostrar al mundo la BSO que Davidnoide / David Insonusvita (@insonusvita) les ha hecho. Han hablado de distintos casos históricos al respecto o distintos ejemplos en los que se puede aplicar. Además, han hecho una prueba de concepto con un móvil Android y Metasploit. Es más: han mostrado un pequeño trolleo que le hicieron a Román.

Alberto Cita nos ha destripado Skype: Cómo funcionaba antes y después de la compra de este programa de VoIP por parte de Microsoft. Antes, cifraba de una forma. Ahora, tira de SSL y cómo Microsoft sí que puede descifrar la comunicación entre dos usuarios. Incluso alguna prueba realizada por él muestra, cómo haciendo MITM, se puede realizar el descifrado.

Por último, antes del panel, el físcal especializado en delitos telemáticos Jorge Bermúdez nos ha explicado cómo funciona la fiscalía por dentro en relación a estos temas. Además, nos ha dicho cómo es capaz de "hackear" algunos temas de la ley. Ejemplos como que alguien se puede escapar por estar poco tiempo en la cárcel, pero, si además la ley dice algo así como que "el periodo de alejamiento es de X tiempo" y la suma del tiempo de privación de libertad más el de alejamiento es superior a 5 años, ya es delito grave. O cosas similares. Nos ha puesto varios ejemplos curiosos. También nos ha hablado de cómo tiene que funcionar un juez. La verdad, para tratarse de cosas de leyes ha sido muy, muy amena.

Más o menos este ha sido el resumen del día de hoy. A parte de la dificultad de encontrar un sitio para comer y alguna que otra cosilla más, me lo he pasado muy, muy bien. Mañana viernes (a estas horas, ya sería hoy), más. 

miércoles, 5 de marzo de 2014

Abriendo paneles en Windows con el CMD

Os voy a poner en situación:

Cogemos nuestro sandbox favorita (o la que tengas más a mano). En mi caso: Sandboxie. Haces una instalación de algún programa. El que más te guste. Y lo haces utilizando la opción que tiene de Ejecutar un programa aislado en la sandbox:
Sandboxie: Ejecutar aislado en una Sandbox
Sandboxie: Ejecutar aislado en una Sandbox
Ahora que lo hemos instalado pueden pasar varias cosas:

  1. Que se ejecute directamente. Esto se hará la primera vez, pero las siguientes…
  2. Que sepamos dónde está instalado. Es muy importante, porque tendremos que ejecutarlo que ejecutarlo utilizando el mismo sistema que el anterior indicando su ruta completa. O, también, lanzando el explorer. Y después ir a la ruta adecuada para ejecutarlo.
Ahora, nos encontramos con otro problema: Ya no lo usamos y necesitamos desinstalarlo. Para hacerlo, tendremos que abrir el panel de control (siempre y cuando no traiga su propio ejecutable de desinstalación). Por lo que nos encontramos con un problema: hay que ejecutar el panel de control en la misma sandbox en la que tenemos el programa. Por lo tanto: ¿qué hacemos? Tendremos que localizar qué tenemos que ejecutar para lanzarlo. Ya sea ejecutándolo directamente aislado, o aislar una consola cmd (símbolo del sistema) y sea ahí donde levantemos los paneles necesarios.

Haciendo una búsqueda rápida me he encontrado con el siguiente manual:


Control panel tool Command
Accessibility Optionscontrol access.cpl
Add New Hardwarecontrol sysdm.cpl add new hardware
Add/Remove Programscontrol appwiz.cpl
Date/Time Propertiescontrol timedate.cpl
Display Propertiescontrol desk.cpl
FindFastcontrol findfast.cpl
Fonts Foldercontrol fonts
Internet Propertiescontrol inetcpl.cpl
Joystick Propertiescontrol joy.cpl
Keyboard Propertiescontrol main.cpl keyboard
Microsoft Exchangecontrol mlcfg32.cpl (or Windows Messaging)
Microsoft Mail Post Officecontrol wgpocpl.cpl
Modem Propertiescontrol modem.cpl
Mouse Propertiescontrol main.cpl
Multimedia Propertiescontrol mmsys.cpl
Network Propertiescontrol netcpl.cpl NOTE: In Windows NT 4.0, Network properties is Ncpa.cpl, not Netcpl.cpl
Password Propertiescontrol password.cpl
PC Cardcontrol main.cpl pc card (PCMCIA)
Printers Foldercontrol printers
Regional Settingscontrol intl.cpl
Scanners and Camerascontrol sticpl.cpl
Sound Propertiescontrol mmsys.cpl sounds
System Propertiescontrol sysdm.cpl

En nuestro caso, queremos abrir el panel relacionado con la instalación y desinstalación de programas, por lo que utilizaremos el que nos va a abrir Add/Remove Programs:

Abrir panel de control en Sandboxie. control appwix.cpl
Abrir panel de control en Sandboxie. control appwix.cpl
Por lo que al ejecutarlo:
Panel de Agregar o quitar programas en una sandbox
Panel de Agregar o quitar programas en una sandbox
Y ya podremos desinstalarlo.

No está del todo mal tener este listado. De todas formas, seguro que está incompleto. Pero para ir tirando… También, se puede ver que no lo he lanzado desde una consola/símbolo del sistema/cmd, pero, a todos los efectos, funciona igual. 

viernes, 28 de febrero de 2014

PBX: Music On Hold en extensiones virtuales

Como los asiduos a este blog ya sabréis, estoy embarcado en temas de VoIP. Y, resulta, que había algo que quería hacer y me estaba costando un rato conseguirlo. No está del todo terminado, pero puedo adelantar las bases de lo que he tenido que hacer por si alguien lo necesitaba. Además, he tenido que hacer unos cambios con respecto a las fuentes, dado que cuando éstas se escribieron se hacía de otra manera.

Lo primero de todo: quiero que al llamar desde una extensión de mi centralita a otra extensión, ésta se comporte de una manera determinada. En mi caso, quería que sonase una música en espera y si después se desea, que suene alguna locución.

Lo primero que vamos a necesitar es crear una nueva extensión. En mi caso he querido que fuese virtual, porque no quiero que ningún terminal la utilice. Seguro que hay otras maneras de hacerlo. A lo mejor una de estas no es la más idónea. La monté en su momento pensando que podría hacerlo en 3 minutos y no fue así. Por lo tanto: crear una nueva extensión. En este caso tendrá que ser virtual. A la hora de rellenar los datos, pondremos:

  • El número de extensión
  • Display name: Será la descripción o nombre. 
  • Aunque posiblemente no haga falta, también le he rellenado el outbound cid con el mismo dato que el display name.
  • En recording options, las inboud [internal|external] calls también las vamos a activar siempre. Sin embargo, tengo que jugar con esto. José Luis (Verdeguer, aka Pepeluxx [@pepeluxx]), me pasó un script y tengo que jugar con él. 
  • El voicemail lo activas y se pone una contraseña. 

Ahora sí: tal y como lo tengo, creo que sólo va a servir el número de extensión asignado. Todo se andará.

Muy bien. Ahora quiero que haga ciertas cosas. Y si intentas configurar la música en espera (music on hold, o también conocido como MOH), y llamas directamente, te saldrá alguno de los contestadores diciéndote que no está disponible en esos instantes. Pues, dio la casualidad que atiné en una de las búsquedas que hice y encontré una solución:

[from-internal-custom]
exten=>383,1,Answer
exten=>383,2,Wait(1)
exten=>383,3,Background(tt-allbusy)
exten=>383,4,SetMusicOnHold,default
exten=>383,5,WaitMusicOnHold,30
exten=>383,6,Background(thank-you-for-calling)
exten=>383,7,Background(goodbye)
exten=>383,8,Congestion
exten=>383,9,Hangup


Fundamentalmente: abres el fichero que se encuentra en /etc/asterisk/extensions_custom.conf y, si no existe la primera línea se añade, si exite, se ponen el resto de líneas debajo de ésta.


Estupendo. Ahora que ya lo he guardado, cojo y ejecuto:


#asterisk -r
#core restart now


Por lo que he reiniciado el servicio de la centralita. Al menos, como es mía y sólo estoy yo, me puedo permitir hacerlo. Además, podría caber la posibilidad de que hubiese otra forma, pero a mí, ahora mismo, me vale. ¡Ojo! Que si tienes gente conectada a la tuya, podrías finalizar sus llamadas. 

Ahora, haces una prueba y... Sólo oyes la primera locución. Las demás... Nada. Si vas a los logs de las llamadas, podrás ver algo como esto:

No application 'SetMusicOnHold,default' for extension (from-internal, 383, 4)

Esto viene a decir: No entiendo qué significa "SetMusicOnHold,default" para la extensión que se encuentra en "from-internal, número_de_extensión, comando_número_4".


Si se busca esto, no lo va a ser capaz de ejecutarlo. De hecho, la llamada terminará abruptamente. ¿Cómo lo solucionamos? Pues  buscando un poco nos encontramos con que está deprecado (deprecated). 

Tendremos que ejecutarlo así:

[from-internal-custom]
exten=>50000,1,Answer
exten=>50000,2,Wait(1)
exten=>50000,3,Background(tt-allbusy)
exten=>50000,4,MusicOnHold(default,30)
exten=>50000,5,Background(thank-you-for-calling)
exten=>50000,6,Background(goodbye)
exten=>50000,7,Congestion
exten=>50000,8,Hangup

Ahora sí que conseguiremos que funcione todo el proceso. Pero sigue habiendo algunos puntos que tenemos que corregir. Por ejemplo: El comando (internamente me ha parecido ver que lo llaman aplicación), background. Éste se va a encargar de mostrar una locución y, a la vez, será capaz de entender los códigos que se introduzcan por teclado. Pero a mí no me interesa eso. Yo quiero que suene el audio que toque (por ejemplo, una voz pidiendo que esperes) y ya. Para eso está la opción de playback. Por eso, vamos a cambiar el primero por este segundo. Aquí dejo un enlace sobre las diferencias. Aunque, a decir la verdad, me gustaba más el anterior que encontré (y no sé dónde está).

Cuidado con no poner alguno de los pasos, o repetir el número en alguno de ellos. El comportamiento será algo curioso (tendría que haberlo apuntado!!). 

Podemos ver que ahora la opción de la música en espera es un sólo comando, al cual, se le pasará el nombre de la sección de la música en espera que deseas que suene y qué tiempo quieres que dure. Está en segundos. Si no lo he entendido mal, si no se pone el tiempo, esto sonará hasta que se termine el audio (una canción, por ejemplo). Lo que he llamado sección se encuentra en la interfaz web, en el menú de Settings, Music On Hold. Como puedes ver tenemos uno que se llama default. Este es el que nos sonará. Pero si quieres subir otra, mi recomendación a día de hoy, que no se cómo elegir alguna de las que están agrupadas, es crearse una por cada canción. El día que sepa cómo se puede escoger, aviso. 

Por lo tanto, y para resumir:
- El sistema descuelga la llamada
- Espera un segundo (no se si habrá algo más entre medias)
- Suena un audio solicitando que esperes, que todos están atendiendo otras llamadas de telemárketing.
- Música en espera para que te acomodes (o cuelgues si te cansas).
- Dos locuciones más.
- Unos pitidos como que la línea está ocupada
- Te cuelgan.

Poco a poco intentaré ir afinando el sistema. Además, como habéis podido observar, parte de la configuración la he hecho tirando de interfaz gráfica y otra parte ya me he animado a hacerlo editando ficheros (que no se verán modificados automáticamente en cuanto menos me lo espere).

miércoles, 26 de febrero de 2014

Mostrando código fuente en Blogger I

Algunas veces me ha tocado mostrar código fuente aquí en el blog. Y me he encontrado con el problema de formatearlo bien. Estuve buscando algo y me encontré con este pequeño manual para conseguirlo.

Si se siguen los pasos tan sencillos que muestran, se conseguirá que al menos el código no quede un poco chapucero. Al menos para mostrarlo al público. Porque lo que es incrustarlo aquí sigue siendo un poco infierno. Ya me está costando copypastear y dejarlo bien...

Pero, una pequeña prueba de concepto (para que la veáis, que ya la usé hace poco), no se vería igual que pusiese:

printf("Hola mundo!!! Dime algo");
scanf("%s",&a);
printf("Gracias por decirme: ", a);

Que poner:
printf("Hola mundo!!! Dime algo");
scanf("%s",&a);
printf("Gracias por decirme: ", a);

Por lo tanto, recodermos:

[pre class="prettyprint"]
[/pre]

Es lo que tendremos que poner cuando toque introducir algún tipo de código, como por ejemplo, scripts. O, incluso, a lo mejor me planteo también ponerlo para el contenido de ficheros de configuración. ¡Ah! No os olvidéis de cambiar los corchetes por los signos de "menor que" y de "mayor que". Que aún no he visto cómo evitar que me los interprete.