Skip to main content.

16 Enero 2008

Hackeando ChanSpy

Hoy nos ha surgido la necesidad de grabar bajo demanda el audio procedente de un ChanSpy. Así entre las opciones por defecto no había nada que cumpliera nuestras necesidades. g_echelon.jpg

Como esta tarde teníamos el hacker_mode a ON, lo primero ha sido un vistazo rápido al app_chanspy.c, en el que nos hemos encontrado lo siguiente:

  1.  
  2. res = (f->frametype == AST_FRAME_DTMF) ? f->subclass : 0;
  3.  
  4. ast_frfree(f);
  5.  
  6. if (!res)
  7.    continue;if (x == sizeof(inp))
  8.    x = 0;
  9.  
  10. if (res < 0) {
  11.   running = -1;
  12.   break;
  13. }
  14.  
  15. else if (res == ‘*’) {
  16.   running = 0;
  17.   break;
  18.   } else if (res == ‘#’) {
  19.        if (!ast_strlen_zero(inp)) {
  20.           running = atoi(inp);
  21.           break;
  22.        }
  23.  
  24.            ……………….

A la vista de esto, se nos ha ocurrido que si se pulsa una tecla como por ejemplo el 5, podríamos ejecutar lo que quisiéramos, desde escribir un valor en la DB de Asterisk, reproducir un fichero,… el límite es tu imaginación :)

Por poner unos ejemplos, a continuación se muestra cómo escribir en la DB el valor ‘uniqueid’ que se escribirá en el CDR y cómo reproducir un fichero:

  1.  
  2. if (res == ‘5′)
  3. {
  4.     ast_verbose(VERBOSE_PREFIX_3 "IRONTEC:Escribiendo en la DB el valor: %sn",csth.spy.chan->cdr->uniqueid);
  5.     if (ast_db_put("UNIQUEID", csth.spy.chan->cdr->uniqueid,"0") )
  6.         ast_verbose(VERBOSE_PREFIX_3 "IRONTEC: OK Database!");
  7.         else
  8.           ast_verbose(VERBOSE_PREFIX_3 "IRONTEC: ERR Database!");
  9.  
  10.         ast_verbose(VERBOSE_PREFIX_3 "IRONTEC:Escribiendo en la DB el valor: %sn",csth.spy.chan->cdr->uniqueid);
  11.         resultado = ast_streamfile(chan, "tt-monkeys", chan->language);
  12.  
  13.        if (!resultado)
  14.            res = ast_waitstream(chan, "");
  15.  
  16. }

Hasta aquí el hackeo de la tarde… Happy Asterisk hacking!!

Posted by saul in Asterisk

Esta entrada se publicó el Miércoles, Enero 16th, 2008 a las 20:05 y está archivada bajo la categoría Asterisk. Puede seguir cualquier comentario a esta entrada a través del feed RSS 2.0 . Puede dejar un comentario, o trackback desde su propio sitio.

Deje un comentario

XHTML: Puede emplear estos tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

2005 © Irontec S.L. :: Powered by Irontec & Wordpress
[ IRONTEC S.L. - C.I.F. B-95274890 ]
[ Ctra. Basurto-Kastrexana nº70 / Enpresaldea ]
[ 48002 - Bilbao - Bizkaia ]