Generar códigos QR con PHP

Hoy voy a hablar de una librería en PHP que ya llevo tiempo utilizando para generar códigos QR; me refiero a PHP QR Code.

Comencé a utilizar dicha librería cuando me pidieron un proyecto que llevara una firma digital “como las del SAT”. Tras comentarle a la líder del proyecto todo lo que llevaba implementar un verdadero sistema de firmas digitales, sumado a que -de verdad- la mayoría de usuarios tiene un escaso nivel técnico al grado de que no iban a ser capaces de generar sus archivos .key y .req por cuenta propia. La líder del proyecto y yo decidimos aplicar la vieja confiable: “Por lo mientras pónle (al documento que genera el sistema) un código de barras o algo, el chiste es que se vea que ya se va a empezar a implementar lo de las firmas electrónicas”, me dijo (ese “por lo mientras” lleva casi 6 años, pero esa, es otra historia).

Así pues, me di a la tarea de investigar, primero qué clase de código poner y luego cómo ponerlo.

Como dije al principio, la librería elegida fue PHP QR Code, entre otras cosas por su gran facilidad de uso. Solo debemos de incluirla en nuestro archivo PHP, y llamar a un método estático de la clase QRcode y ¡listo! (debe estar habilitada la extensión GD en el servidor)

Ejemplo 1: Generar un QR en formato PNG y mostrarlo en el navegador

require_once 'ruta/a/phpqrcode/qrlib.php';
QRcode::png("Visita mi blog https://underdog1987.wordpress.com");

Si optas por usar este método no deberás haber enviado ningún encabezado antes de llamar a QRcode. Este método puede ser útil para generar códigos con el texto de manera dinámica, por ejemplo, si el código anterior está en un archivo llamado qrgenerator.php podemos modificarlo para que quede:

require_once 'ruta/a/phpqrcode/qrlib.php';
$text=urldecode($_GET['t']);
QRcode::png("".$text);

Y entonces poder llamarlo desde un tag de la siguiente forma:

<img src="qrgenerator.php?t=Este%20es%20el%20texto%20que%20pase%20en%20la%20URL" />

Ejemplo 2: Generar un código QR y guardarlo en una carpeta

Este ejemplo me gusta más, ya que además de guardar una copia de la imagen generada, podemos indicar el tamaño y el índice de corrección de errores.

QRcode::png("texto","ruta/nombreArchivo.png",'INDICE_CORRECCION',TAMAÑO,MARGEN);

En donde:

ruta/nombreArchivo.png

Ruta (absoluta o relativa) donde se va a guardar el código generado. Se debe especificar la extensión .png

TAMAÑO

Tamaño en pixeles que tendrá cada punto del código. A mayor tamaño, más grande será la imagen generada.

MARGEN

Margen del código en unidades TAMAÑO (el margen es el espacio entre el perímetro de la imagen y la zona de los puntos).

INDICE_CORRECCION

Nivel de corrección de errores. Puede ser uno de los siguientes:

  • L – corrige hasta 7% de daño
  • M – corrige hasta 15% de daño
  • Q – corrige hasta 25% de daño
  • H – corrige hasta 30% de daño

Ejemplos

QRcode::png("Visita mi blog https://underdog1987.wordpress.com","imagenPrueba.png",'H',32,12);
imagenprueba

Corrección de errores: H Tamaño: 32 Margen: 12

QRcode::png("Visita mi blog https://underdog1987.wordpress.com","imagenPrueba.png",'L',32,12);
imagenprueba

Corrección de errores: L Tamaño: 32 Margen:12

QRcode::png("Visita mi blog https://underdog1987.wordpress.com","imagenPrueba.png",'H',5,1);
imagenprueba

Corrección de errores: H Tamaño: 5: Margen: 1

QRcode::png("Visita mi blog https://underdog1987.wordpress.com","imagenPrueba.png",'L',5,1);
imagenprueba

Corrección de errores: L Tamaño: 5 Margen: 1

Observa la diferencia de tamaño de la imagen generada en el tamaño 12 y tamaño 5.

Puedes descargar esta librería desde la página oficial del proyecto en sourceforge.net.

Este post, aunque un poco largo para ser considerado “mini”, forma parte de los Miércoles de Mini-post.

MobileBASIC – Una app que hará recordar los días de gloria de QBASIC

Para aquellos que ya llevamos rato en este mundo de la programación nos resulta muy atractivo encontrar algún lenguaje que use la sintaxis del viejo BASIC; pero resulta más atractivo aún que ese lenguaje sea nuevo.

La aplicación en cuestión lleva por nombre MobileBASIC. Es para Android, y por su sintaxis nos hará recordar (con nostalgia) al glorioso QBASIC.

Este es un ejemplo sencillo de un programa (nuestra el uso de FOR… END FOR)

SUB MAIN
 DIM I, J AS INTEGER
 
 PRINT "FOR Loop counting from 1 up to 10"
   FOR I=1 TO 10
   PRINT "I=" + STRING(I)
 END FOR
 
 PRINT "FOR Loop counting from 1 to 50 in steps of 10"
   FOR I=1 TO 50 STEP 10
   PRINT "I=" + STRING(I)
 END FOR
 
 PRINT "FOR Loop counting from 99 down to 11 in steps of -11"
   FOR I=99 TO 11 STEP -11
   PRINT "I=" + STRING(I)
 END FOR

PRINT "Nested FOR Loops, Both Loops are counting from 0 TO 9"
FOR I=0 TO 9
   FOR J=0 TO 9
      PRINT "I=" + STRING(I) + ", J=" + STRING(J)
   END FOR
 END FOR
END SUB

Lamentablemente no encontré una guía de referencia al lenguaje, aunque la cantidad de ejemplos que trae son sin duda un buen comienzo, ya que entre estos hay desde lo más básico, como IF… ELSE, hasta ejemplos con geolocalización y el uso de los sensores del teléfono.

Navegando entre los ejemplos

Navegando entre los ejemplos

Ejemplo de Geolocalización

Ejemplo de Geolocalización

Si quieres probar esta App, descárgala desde Google Play.

Este post forma parte de los Miércoles de Mini-post.

Presentación de los miércoles de mini-post

Este post es solo para dar a conocer los “miércoles de Mini-post”. Dicha temática consistirá en algo muy simple: todos los miércoles publicaré una pequeña entrada con un truco, snippet, o ejemplo de programación, redes u otra cosa que vaya con los temas que se tratan en este blog.

Quiero concluir esta presentación con una simple pregunta: ¿desde tu punto de vista qué tan en serio se toman la seguridad informática en tu trabajo o escuela? Respondan en los comentarios.

SMS Gateway con Raspberry Pi y Gammu

Como sabemos, un gateway SMS permite a una computadora enviar y recibir mensajes de texto SMS. En este tutorial voy a explicar como podemos convertir nuestra Raspberry Pi en un SMS Gateway con lo cual las posibilidades de las aplicaciones Web que tengamos alojadas en ella crecen enormemente, ya que podrán enviar y recibir mensajes de texto.

Para realizar este proyecto necesitamos:

  • Raspberry Pi 3
  • Teléfono celular; yo usaré un Galaxy Pocket NEO (puedes ver los dispositivos compatibles aquí)

Sigue leyendo

Fake Access Point con Raspberry Pi e inyección de JS con Squid3

En este artículo que escribí hace ya un tiempo presenté el caso de Natalia, un personaje ficticio que vio comprometida su cuenta de Facebook tras conectarse a un punto de acceso público sin considerar los riesgos.

En dicho artículo el Honeypot que hice para recrear el caso robaba las credenciales de acceso a Facebook con una página que era un login falso de la red social.

Hoy, decidí hacerlo un poco más imperceptible al usuario, el access point le dará internet una vez que este se conecte, pero, cada archivo Javascript que descargue desde un sitio no seguro (cualquiera que no sea https)  contendrá código que le mostrará un pequeño saludo, aunque también podríamos hacer que descargue malware en su equipo :).

Además de esto, nuestro Fake Access Point ¡será portatil!

Sigue leyendo

Prueba tu Antivirus

Prueba tu Antivirus (Descargar en Google Play)

Prueba tu Antivirus es una aplicación para Android que verifica el correcto funcionamiento de tu software Antivirus del móvil.

Probar el funcionamiento de un antivirus usando virus reales, es como probar los sensores de humo de una oficina incendiándola. Es por ello que las empresas antivirus usan un archivo de prueba que consiste en un archivo de texto inofensivo, pero que se debe detectar como una amenaza.

Si usas antivirus en tu teléfono o tablet con Android y quieres probar que tan bien funciona descarga esta app, verifica que la reconozca como una amenaza. La aplicación es totalmente inofensiva.

Cómo usar esta aplicación

Al momento de instalarla, tu antivirus la debe detectar como una amenaza.

Después de instalarla puedes hacer pruebas más profundas, en las cuales tu antivirus debe detectar en tiempo real:

  1. Múltiples copias del archivo de prueba EICAR con nombres aleatorios y extensiones APK, JS, DOCX, TXT)
  2. Hasta 5 copias del archivo de prueba EICAR dentro de un archivo ZIP (eicar.zip)

Si no detecta todo, intenta a hacer un análisis completo de tu dispositivo.

Descargar Prueba tu Antivirus desde Google Play.

¿Necesitas antivirus con Windows 10?

Mucho se ha comentado de que con Windows 10 no necesitas un antivirus porque incluye a Windows Defender.

Windows Defender es un programa que hace de antivirus en Windows 10 y que viene instalado y activado de manera predeterminada, así que para salir de la duda decidí ponerlo a prueba.

WindowsDefender Sigue leyendo