Usando la autentificación de dos factores (2FA) con Google Authenticator y Perl

Jugando un rato con la aplicación de Google Authenticator (disponible para Android e iOS), hice un pequeño programa en Perl que te permite utilizar la mencionada app.

Este programa utiliza un algoritmo conocido como TOPT (Time-based One-Time Password)

Usa las siguientes librerías:

  • Auth::GoogleAuth que consolida varias funciones comunes para que lo manejes como objetos
  • Convert::Base32 para la conversión de tu clave secreta a un hash base 32
  • Imager::QRCode para generar un jpg con el código QR para que suscribas tu programa a la aplicación de Google Authenticator. Es importante que tengas instaladas la librerias de jpeg, o bien, instalar imager desde tu manejador de paquetes (apt-get, yum, etc.) o CPAN

si invocas el programa sin parámetros te dará está información:

Usage:

    1) for Gogle authenticator verification:

       ./two_factor.pl [Code]

    2) To generate qr code for suscribe on Google Authenticator app:

       ./two_factor.pl -qr

       The file is named 'two_factor.jpg'

    3) print all info (passphrase, base32, issuer and key_id):

       ./two_factor.pl -info

    4) print One Time Password like the Google Authenticator app:

       ./two_factor.pl -code

y el código del programa “two_factor.pl” a continuación…
Continue reading “Usando la autentificación de dos factores (2FA) con Google Authenticator y Perl”

Reto “One line” de Josech

Pues Josech lanzó en Facebook un reto de hacer un programa en una sola linea que sume los valores de un array multi-dimensional, así que acepté el reto.

Código compacto y con variables abreviadas:

perl -e '@A=[1,2,[3,4],5,6,[7,8,[9,10,[11,[12,13,[14,15,16]],17,18],19]],20];sub c{my$r=shift;my$s=0;if($r=~/array/i){for(my$i=0;$i< =(@{$r}-1);$i++){$s+=c($r->[$i]);}}else{$s+=$r;}return$s;}print c(\@A)."\n";'

El código mas bonito esta aca:
Continue reading “Reto “One line” de Josech”

Algunas sugerencias al SAT para aclarar y optimizar las definiciones de XML del CFDI

Estimado Sistema de Administración Tributaria (SAT):

Por medio del presente documento quiero sugerirles algunos cambios, que considero alimentarían el modelo de los documentos de facturación electrónica, previo a que liberen la versión 3.3 del CFDI (Comprobante Fiscal Digital a través de Internet).

1) Dentro d los apartados de “Concepto” poder usar un nuevo campo llamado “Serie”, ya que el actual de “noIdentificacion” es confuso y no permite manejar correctamente las claves de producto y números de serie. Ejemplificando, Tengo un producto electrónico con clave “iPhone6S-16G-Gray” y número de serie “AW12345667”.

En la actual versión, no es posible hacer esto a menos que recurramos a “Parte”, actualmente se ve así para resolver esto:

  <cfdi:conceptos>
    <cfdi:concepto cantidad="1"
                   descripcion="Teléfono celular marca Apple modelo 6S, 16GB, gris espacial"
                   importe="14099.00"
                   noIdentificacion="iPhone6S-16G-Gray"
                   unidad="LLamada"
                   valorUnitario="14099.00">
      <cfdi:parte cantidad="1"
                  descripcion="Teléfono celular marca Apple modelo 6S, 16GB, gris espacial"
                  noIdentificacion="AW12345667"></cfdi:parte>
    </cfdi:concepto>
...
   </cfdi:conceptos>

Cuando sería mas sencillo hacer esto:
Continue reading “Algunas sugerencias al SAT para aclarar y optimizar las definiciones de XML del CFDI”

Como identificar facturas electrónicas de servicios de Uber

En mi empresa facturamos casi todo lo que podemos y no es la excepción que pidamos a Uber (servicio de transporte) estos documentos.

Pero el problema radica en que Uber no factura, si no los choferes. Uber no cuenta con un solo taxi y no da recibos fiscales en México, por lo que su sistema de facturación obliga a cada chofer a emitir el comprobante.

Esto hace complicado la clasificación contable de este servicio, por lo que hice un script rápido (uber.pl) en perl para analizar los comprobantes fiscales CFDI (Comprobantes Fiscales Digitales por Internet) en su formato XML.

Continue reading “Como identificar facturas electrónicas de servicios de Uber”

Patrocina el Festival de Cine Creative Commons Ciudad de México

cccmx_logo

El Festival de Cine Creative Commons Ciudad de México busca dar difusión al uso de un modelo de regulación de la propiedad intelectual más flexible, como lo son las licencias Creative Commons, en obras audiovisuales independientes para su difusión y distribución en plataformas digitales.

Apoyo esto por medio de está liga (contribuye por medio de fondeadora.mx).

Código para la ciudad de México

convocatoria_general_header1
El Lab PLC, la nueva área de innovación cívica y creatividad urbana del GDF, convoca a los ciudadanos con habilidades técnicas de programación, desarrollo tecnológico, diseño interactivo y afines, así como universitarios o egresados recientes que estén interesados en colaborar con el gobierno para encontrar soluciones creativas en estas áreas: desarrollo económico, medio ambiente, salud, transporte y turismo.

A través de Código para la Ciudad de México, los Programadores Ciudadanos y Universitarios seleccionados, en conjunto con las secretarías participantes identificarán necesidades y áreas de oportunidad para después proponer y desarrollar aplicaciones y otras soluciones digitales creativas.

Aquí las ligas de convocatoria para Programadores y Universitarios.

Asterisk y Open Hardware para controlar dispositivos desde un teléfono

Pues jugando un poco con Arduino y Asterisk, se me ocurrió hacer una interface entre estos dos para activar luces, puertas, etc. utilizando una extensión telefónica.

httpv://www.youtube.com/watch?v=rcFMJC4n4dQ

También hice un sistema de sockets para que desde una página web se pudieran activar estos eventos.
Continue reading “Asterisk y Open Hardware para controlar dispositivos desde un teléfono”

FLISOL Empresas y Software Libre

El día de mañana 3 de mayo del 2013, se llevará al cabo una versión dirigida a Empresas del Festival Latinoamericano de Instalación de Software Libre (FLISoL). El objeto es acercar el potencial del Open Source a las empresas y público en general.

En el marco de este evento, daré una platica sobre Call Centers basados en Asterisk y Open Hardware y sus posibilidades.

La información del evento esta en flisoldf.mx.

La sede es el hotel Fiesta Inn Teatro Insurgentes. Dir. Calle Mercaderes No. 20, Col. San José Insurgentes, C.P. 03900 México D.F, Tel. 5482-9140