blurred_faces

En un mundo donde la presencia en línea es indispensable, la seguridad web se convierte en una prioridad absoluta. Con la proliferación de amenazas como virus, malware y phishing, cada clic en internet podría representar un riesgo potencial para la seguridad de nuestros datos. Es por eso que la tarea de desarrollar una aplicación web en Python que pueda analizar y prevenir posibles efectos nocivos era muy interesante.

La tarea consistía en crear una aplicación web en Python (usando Flask como marco de desarrollo) permitiendo a los usuarios escanear URLs en busca de posibles amenazas y, con un simple clic, iniciar el escaneo.

En resumen el proceso es el siguiente:

  1. Al acceder a la página inicial de la aplicación, los usuarios son recibidos con un formulario donde pueden ingresar la URL a analizar.
  2. La aplicación puede realizar un análisis exhaustivo de la URL.
  3. Debe proporcionar un resumen claro y comprensible de los resultados, para que los pudiera interpretar cualquier usuario.

Este fue el resultado:

blurred_faces

El primer paso no presentaba dificultas pero si lo fue tratar con la APP de Virus Total puedes accedera ella haciendo clic aquí.

Durante el desarrollo de la aplicación, uno de los principales desafíos que enfrenté fue la obtención del análisis de VirusTotal a través de su API. A pesar de contar con una función diseñada para obtener esta información, enfrenté dificultades para interpretar correctamente los datos devueltos por la API. En lugar de proporcionar el análisis detallado que esperaba, VirusTotal me proporcionaba un diccionario con información general para acceder a la URL con el resultado del analisis.

Este el resultado que muestra Virus total con el analisis de la URL introducida:

blurred_faces

Una vez que logré entender la estructura de los datos devueltos por la API de VirusTotal, me encontré con el problema de cómo procesar estos datos para obtener las estadísticas específicas de análisis que necesitaba la aplicación. Ya no me valía la lógica que había implementado inicialmente y tuve que replantear cómo extraer la información de la página web. Si bien la función que diseñé estaba destinada a extraer estas estadísticas del diccionario de la respuesta JSON, requirió un proceso de depuración y ajuste constante del código para garantizar que la aplicación pudiera pasar correctamente la información recibida a ChatGPT.

La solución era sencilla, ya que la URL para ver los resultados tenía varias pestañas, con diferentes tipos de información, lo que yo necesitaba estaba en la 1ª pestaña que salía por defecto. Solo había que extraer la información de esa pestaña mediante scraping ;). Por ello, obtenía de la URL solo la parte de la pestaña que necesitaba y se la volvía a pasar a VirusTotal.

blurred_faces


Resultado final, en json, para pasar a ChatGPT.

Explicación de la solución mediante el código de la imagen:

  • Define una función llamada obtener_informacion_virustotal(url, api_key) que toma una URL y una clave de API como parámetros.
  • Extrae el ID de la URL proporcionada.
  • Construye una nueva URL que apunta al endpoint de la API de VirusTotal para obtener información sobre URLs.
  • Realiza una solicitud GET a esta URL, incluyendo las cabeceras adecuadas con la clave de API proporcionada.
  • Si la solicitud es exitosa, procesa la respuesta en formato JSON para extraer estadísticas de análisis sobre la URL.
  • Si hay algún error durante este proceso o si la solicitud HTTP genera una excepción (como errores 404 o 500), imprime un mensaje de error indicando que hubo un problema al obtener datos de VirusTotal.

Pero vayamos al grano: ¿Qué paso al final?

A pesar de los desafíos encontrados durante el desarrollo, la experiencia me brindó una valiosa oportunidad para mejorar mis habilidades en el manejo de API y el procesamiento de datos en formato JSON. A través de la resolución de problemas y la experimentación con diferentes enfoques, logré superar los obstáculos y obtener una comprensión más sólida de cómo interactuar con servicios externos para enriquecer el funcionamiento de la aplicación. Esta experiencia destacó la importancia de la adaptabilidad y la perseverancia en el proceso de desarrollo de software, demostrando que cada desafío presenta una oportunidad para aprender y crecer como desarrollador.

Este fue el resultado que al final de le muestra al usuario:

blurred_faces

Un saludo y hasta la próxima.



About

"Mi pasión por la tecnología y el aprendizaje continuo me ha llevado a formarme en programación, inteligencia artificial y big data.


Recent posts