Como detectar URLs de una imagen con Python 3

Hace un tiempo estoy trabajando en automatización de atención de amenazas de seguridad, que en inglés tiene las siglas de SOAR (Security Orchestration, Automation, and Response) y uno de los problemas que me he enfrentado es que muchos usuarios comparten evidencia en imágenes y mandan una URL capturando la sección de la pantalla donde está una URL en vez de copiarla. Esto es más común en los celulares, te llega un aviso por SMS que puede ser sospechoso y solo lo abres el SMS pero copiar información es poco común (y complicado) lo mas sencillo es hacer un screenshot (o captura de pantalla) y enviarla.

Este es el caso mas común y python 3 te puede ayudar a detectar texto y una (o varias) urls en un imagen. Esto a mi me sirve por que puede enviar varias URLs al flujo automatizado de respuesta de amenazas que ofrece la empresa para la que trabajo en este momento.

Para leer una imagen y obtener las URL necesitas 3 elementos en python, las librerías re, opencv y pytesseract

Como en la generación de phishing el ocultar o enmascarar la URL para no advertir al usuario sobre la posible amenaza es una práctica cotidiana agregué una forma de identificar la URL final si está utilizando bit.ly como acortador de URLs.

Con la linea «img = cv2.imread(‘test2.jpg’)» leemos la imagen que deseemos revisar para localizar URL, cuando se envían por SMS o por web los usuarios toman capturas como esta:

y la manda por correo o por algún otro medio, no copian el texto es complicado cuando se usa un celular. Asi que para leer la imagen utilizamos la función

text = pytesseract.image_to_string(img)

luego eliminamos los saltos de linea para tener todo el texto en un solo renglón. Esto evitará que una URL quede partida por los saltos de línea.

Por útimo llamamos a la funcion «FindURL» para obtener las URL que hubiera en el texto detectado en la imagen.

urls = FindURL(text_oneline)

Al final detectar si en la URLs hay alguna que tenga el dominio bit.ly y si es así busca la URL extendida mediante la API de bitly.

Espero que este código en python 3 para detectar URL y texto en una imagen te sea de utilidad, no es un código revisado de manera exhaustiva, sino una solución práctica que pude realiza en un par de horas.

This entry was posted in Software Libre and tagged , , , . Bookmark the permalink.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*


Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.