Osintgram

Osintgram en Kali Linux: instálalo, arréglalo, úsalo

Osintgram no está empaquetado para Kali Linux, así que no existe ningún apt install para él: lo hemos confirmado de cuatro formas independientes. Y como Kali 2024.4 dejó pip detrás de la PEP 668, la línea de instalación de casi todos los tutoriales antiguos de Kali se detiene ahora en seco con error: externally-managed-environment.

19 min de lecturaEquipo de Osintgram

Hay dos cosas de Kali que rompen una instalación de Osintgram, y ninguna de las dos la explican las páginas que ahora mismo posicionan para esta búsqueda. Las dos llegaron después de que se escribieran casi todas esas páginas.

Lo primero es el empaquetado. Osintgram no está en los repositorios de Kali, así que sudo apt install osintgram no puede funcionar por muchos artículos que impriman esa línea. Lo segundo es pip. Desde Kali 2024.4 la distribución sigue la PEP 668, así que un pip install -r requirements.txt normal fuera de un entorno virtual se niega a ejecutarse e imprime error: externally-managed-environment. Los tutoriales antiguos de Kali que siguen posicionando para esto (kalilinuxtutorials, los posts de Medium de 2021, dev.to) te dan exactamente ese comando.

Dos hechos específicos de Kali lo deciden todo en esta página. No existe ningún paquete osintgram: la herramienta no está en el catálogo de herramientas de Kali, ni en el GitLab de empaquetado de Kali, ni en Debian, así que la única vía de instalación es git clone. Y pip está bloqueado: en el Kali actual, instalar los requisitos fuera de un entorno virtual falla con error: externally-managed-environment. La secuencia que funciona es clonar, luego python3 -m venv venv y luego pip, en ese orden.

Esta página cubre solo las partes específicas de Kali: la realidad del empaquetado, el muro de la PEP 668, el problema con Python 3.13, los errores que ves en un sistema de la familia Debian y en ningún otro sitio, y Termux. El material independiente de la plataforma (por qué un entorno virtual, qué versión de Python, cómo funcionan las credenciales, Windows y Docker) está en cómo instalar Osintgram, y esta página no lo repite a propósito.

¿Está Osintgram en los repositorios de Kali?

No. Comprobamos cuatro fuentes independientes el 8 de agosto de 2026; ninguna lo incluye.

ComprobaciónResultado
kali.org/tools/osintgram/HTTP 404: no existe página de la herramienta
El índice completo de herramientas de KaliNinguna entrada osintgram en todo el índice
La API del GitLab de empaquetado de Kali, buscando osintgramDevuelve un array vacío
La API de fuentes de Debian, buscando osintgramSin coincidencia exacta ni coincidencias parciales
Cuatro comprobaciones de empaquetado, todas realizadas el 8 de agosto de 2026.

Un 404 en la página de la herramienta, por sí solo, podría ser un hueco de documentación. Cuatro negativas repartidas entre el catálogo de herramientas, el GitLab de empaquetado y Debian ya no lo son. El proyecto lo confirma por omisión: el README de Datalux/Osintgram documenta exactamente una vía de instalación, que es un git clone, un entorno virtual y pip install -r requirements.txt. Tampoco hay paquete en PyPI ni script instalador: setup.sh devuelve 404 en la rama master.

Kali sí empaqueta una herramienta para Instagram, pero no esta

sudo apt install instaloader funciona, porque instaloader está en el catálogo de Kali dentro de Identity Information. Resuelve un problema más estrecho: descargar publicaciones y metadatos de perfil en lugar de ofrecer una shell de reconocimiento. Pero está empaquetado, está mantenido y es una sola línea de apt. Si has llegado aquí porque querías una herramienta de Instagram que Kali te instale, esa es la buena.

Por qué fallan ahora los tutoriales antiguos de Kali

En Kali cambiaron dos cosas después de que se escribieran casi todas esas guías, y las dos rompen el copiar y pegar.

La primera es la PEP 668, que permite a una distribución marcar su instalación de Python como gestionada externamente. Kali documenta el comportamiento y las formas admitidas de esquivarlo: un entorno virtual, pipx, un paquete apt o el desaconsejado --break-system-packages. Ejecuta la línea de instalación que te dan esas guías y pip se detendrá antes de descargar nada.

error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try
    apt install python3-xyz, where xyz is the package you
    are trying to install.

    If you wish to install a non-Debian-packaged Python
    package, create a virtual environment using
    python3 -m venv path/to/venv.

note: If you believe this is a mistake, please contact your
Python installation or OS distribution provider.
hint: See PEP 668 for the detailed specification.
Extracto del mensaje que Kali documenta para una instalación con pip a nivel de sistema.

Solo uno de esos cuatro remedios sirve para Osintgram. No hay paquete apt, como ya hemos visto. pipx instala aplicaciones de Python: necesita algo instalable con pip, y Osintgram no incluye ni setup.py ni pyproject.toml, así que no hay nada que pipx pueda instalar. Queda el entorno virtual, que es justo lo que el README te decía que hicieras desde el principio.

No recurras a --break-system-packages

Es el único remedio que parece funcionar y luego envenena todo lo que viene después. Deja las versiones fijadas de Osintgram en ~/.local/lib/python3.x/site-packages/, junto a las copias gestionadas por apt, y la colisión aparece más tarde como ModuleNotFoundError: No module named 'urllib3.packages.six.moves', reportado desde Kali en la issue #1766 y otra vez en las issues #1161 y #2131. Esa ruta ~/.local en un traceback es la señal delatora. Si ya lo has hecho, limpia esos paquetes antes de crear el venv o depurarás el problema equivocado.

El segundo cambio es el intérprete. El rastreador de paquetes de Kali lista python3-defaults en la versión 3.13.9-3 en el repositorio rolling, así que una instalación rolling actual está ejecutando Python 3.13 por defecto; Kali 2024.4 fue la versión que movió el valor por defecto a 3.12, y desde entonces ha vuelto a avanzar. Osintgram no se escribió para eso. Su Dockerfile sigue fijando python:3.9.2-alpine3.13, una imagen de marzo de 2021, el README no indica ninguna versión mínima y requirements.txt fija tres paquetes a releases de entre 2019 y 2021.

Instalar esas versiones fijadas en un entorno virtual limpio de Python 3.11 con un pip actual funciona (lo hemos reproducido) y prettytable y hikerapi, que no publican wheels, se compilan desde el código fuente sin quejarse. La franja a la que apuntar es de Python 3.9 a 3.11. En Kali eso suele significar aceptar 3.13 y lidiar con las consecuencias o, si tienes instalado un intérprete más antiguo, crear el entorno con él de forma explícita: python3.11 -m venv venv en lugar de python3 -m venv venv.

Guía de Kali posicionadaFecha que muestra la páginaQué falla en ella ahora
kalilinuxtutorials.comPublicada el 2020-09-04, sin ningún dateModifiedUnas 622 palabras. Es anterior al bloqueo de la PEP 668, a la ruptura de la API privada de Instagram y al backend de HikerAPI. Su título sigue diciendo 2020.
guidetolinux.com2025-01-01Te dice que hagas nano config.py. No existe tal archivo que editar: las credenciales viven en config/credentials.ini. También ejecuta python3 main.py sin nombre de usuario, algo que argparse rechaza.
Varios tutoriales de Medium y dev.toDe 2021 en adelanteDan pip3 install -r requirements.txt a nivel de sistema, que es precisamente el comando que la PEP 668 bloquea ahora.
Comprobado el 8 de agosto de 2026. Las fechas son las que publican las propias páginas.

Nada de esto es un ataque a esos autores: una guía de 2020 era correcta en 2020. Es un aviso sobre lo que pasa cuando sigues una página que nunca se ha revisado: acabas arreglando errores que ha creado la propia guía.

La instalación que funciona en el Kali actual

Seis pasos. Aquí no hace falta root salvo en el primero; todo lo demás ocurre en tu directorio personal y dentro del entorno virtual.

  1. 1

    Instala los prerrequisitos del sistema

    Git, el módulo venv y las herramientas de compilación que gnureadline necesita si tiene que compilar. Este es el único comando que necesita sudo.

    sudo apt update
    sudo apt install -y git python3-venv build-essential libncurses-dev
  2. 2

    Clona el repositorio

    Clónalo en tu directorio personal. Los tracebacks del issue tracker están llenos de /home/kali/Osintgram/, que es una convención tan buena como cualquier otra.

    git clone https://github.com/Datalux/Osintgram.git
    cd Osintgram
  3. 3

    Crea y activa el entorno virtual

    Este es el paso que vuelve irrelevante la PEP 668. No pases --system-site-packages: eso reintroduce las copias gestionadas por apt que estás intentando evitar.

    python3 -m venv venv
    source venv/bin/activate
  4. 4

    Instala las dependencias dentro de él

    Actualiza primero las herramientas de compilación. El prettytable==0.7.2 fijado es lo bastante antiguo como para fallar contra un setuptools desactualizado.

    pip install --upgrade pip setuptools wheel
    pip install -r requirements.txt
  5. 5

    Rellena el archivo de credenciales

    El repositorio incluye config/credentials.ini con tres campos vacíos: username, password y hikerapi_token. Rellena o bien el par de Instagram o bien el token de HikerAPI. make setup te pregunta por el par y escribe el archivo por ti, pero se deja fuera la línea del token y reinicia tu caché de sesión. La decisión sobre las credenciales se trata como es debido en la guía de instalación.

    nano config/credentials.ini
  6. 6

    Ejecútalo contra un objetivo

    El nombre de usuario es un argumento posicional obligatorio: main.py no arranca sin él. Añade -c <command> para ejecutar un solo comando y salir en lugar de entrar en la shell.

    python3 main.py <target username>

Dos notas al pie sobre el paso 1. python3-venv suele estar ya presente, pero en una imagen recortada de Kali no lo está, y python3 -m venv venv falla sin él; el propio mensaje de la PEP 668 te dice que te asegures de tener instalado python3-full. build-essential y libncurses-dev son un seguro más que un requisito estricto: las versiones recientes de gnureadline publican wheels manylinux2014 para x86_64 y aarch64, así que en una máquina Kali amd64 o arm64 normal pip descarga un wheel y no compila nada. Esos dos paquetes son lo que evita /usr/bin/ld: cannot find -lncurses en las máquinas donde pip sí acaba recurriendo a la distribución de código fuente.

Errores de instalación en Kali y qué significan de verdad

Estos son los fallos que aparecen específicamente en sistemas de la familia Debian, ordenados a grandes rasgos por la frecuencia con la que salen en el tracker. El texto del error es lo que pegas en un buscador; la columna del medio es lo que está pasando de verdad.

Texto del errorQué es en realidadSolución
error: externally-managed-environmentLa PEP 668. Kali rechaza las instalaciones de pip a nivel de sistema y con --user.Crea antes el venv. Instala python3-venv si falla el propio python3 -m venv.
ModuleNotFoundError: No module named 'urllib3.packages.six.moves'El python3-requests de apt mezclado con el urllib3 2.x de pip, normalmente después de un --break-system-packages. Una ruta ~/.local/lib/python3.x/site-packages/ en el traceback lo confirma.Elimina lo que fue a parar a ~/.local y luego instala en un venv limpio. Ver la issue #1766.
Cannot uninstall prettytable 3.10.1 ... no RECORD file was found for prettytablepip intenta eliminar el python3-prettytable de apt para satisfacer la versión fijada prettytable==0.7.2, y no puede, porque lo instaló Debian.Ejecútalo dentro de un venv creado sin --system-site-packages. Ver la issue #1126.
/usr/bin/ld: cannot find -lncursesgnureadline se está compilando desde el código fuente y faltan las cabeceras de desarrollo de ncurses.sudo apt install -y build-essential libncurses-dev y luego reinstala los requisitos.
ModuleNotFoundError: No module named 'pyreadline'Engañoso. main.py captura un import gnureadline fallido y recurre a pyreadline, que en requirements.txt es solo para Windows.Arregla la compilación de gnureadline, no pyreadline. Ver la fila anterior.
AttributeError: 'HTMLParser' object has no attribute 'unescape'prettytable 0.7.2 compilándose contra un setuptools antiguo.pip install --upgrade pip setuptools wheel antes de los requisitos.
ModuleNotFoundError: No module named 'src.Osintgram'Has ejecutado main.py desde un sitio que no es el clon. Tanto la importación del módulo como la lectura de la configuración usan rutas relativas.cd ~/Osintgram primero, siempre.
ERROR: Target path exists but is not a directoryAlguien ha escrito pip install -t requirements.txt. El flag es -r.Vuelve a escribirlo con -r.
Error: "username" field cannot be blank in "config/credentials.ini"El archivo de credenciales que viene incluido está vacío. Fíjate en que el proceso sale igualmente con estado 0, así que un script envoltorio lo leerá como un éxito.Rellena el archivo o define en su lugar un token de HikerAPI.
Todas las cadenas de error de aquí están citadas del repositorio o de su issue tracker.

Merece la pena ampliar una fila, porque manda a la gente a perseguir el paquete equivocado. En Linux puedes encontrarte un error de pyreadline. main.py empieza con un simple try: import gnureadline / except: import pyreadline, y el marcador de entorno de requirements.txt solo instala pyreadline en Windows. Así que en Kali ese mensaje nunca va de pyreadline: significa que ha fallado la importación de gnureadline, lo que casi siempre significa que ha fallado la compilación de gnureadline. Instalar pyreadline no te va a ayudar. Arreglar ncurses sí.

Ejecutar Osintgram en Kali

Tres líneas cada vez, y la primera importa más de lo que parece.

cd ~/Osintgram
source venv/bin/activate
python3 main.py <target username>
La secuencia de arranque. El cd no es opcional.

src/config.py lee config/credentials.ini como ruta relativa, y main.py importa src.Osintgram de la misma forma. Lánzalo como python3 ~/Osintgram/main.py target desde tu directorio personal y la lectura de la configuración no encontrará absolutamente nada, o te saldrá ModuleNotFoundError: No module named 'src.Osintgram', que es justo lo que cuenta la issue #105. No hay prefijo de instalación ni script envoltorio: el directorio del clon es la aplicación.

Todo lo que la herramienta lee y escribe vive dentro de ese clon:

  • ~/Osintgram/config/credentials.ini: tu nombre de usuario y contraseña de Instagram, o un token de HikerAPI.
  • ~/Osintgram/config/settings.json: la sesión de login en caché. El comando cache, o lanzar con -C, la reinicia a {}.
  • ~/Osintgram/output/<target>/: los resultados, como <target>_<command>.txt y .json. La salida a archivo está desactivada hasta que escribes FILE=y o JSON=y, o lanzas con -f / -j.

Ese archivo de credenciales está en texto plano en el disco

config/credentials.ini guarda un nombre de usuario y una contraseña de Instagram en texto claro dentro de tu clon. El README del proyecto avisa dos veces, en rojo, de que no uses tu cuenta propia o principal y de que no subas el archivo a un fork. .gitignore cubre credentials.ini y settings.json, lo que te protege de un git add . accidental pero no de un git add -f deliberado. Usa una cuenta desechable, o pon un token de HikerAPI en el tercer campo y no escribas nunca una contraseña ahí.

Una vez arranca estás en una shell interactiva con un prompt amarillo Run a command: y autocompletado con TAB sobre los nombres de los comandos. Cuidado con los pesados: los cuatro comandos de correo y teléfono hacen una llamada extra a la API por cada seguidor, sin ningún tipo de backoff, y un usuario de Kali en la issue #366 sacó 41.643 registros de fwersemail antes de que Instagram bloqueara las peticiones; el fallo que vino después los descartó todos. La referencia completa de comandos, los nombres de los archivos de salida y los comandos que ya no devuelven nada están en cómo usar Osintgram.

Kali en ARM, y Osintgram en Termux

Kali en arm64 no necesita ningún cambio en la secuencia anterior. gnureadline 8.3.3 publica wheels manylinux2014 tanto para x86_64 como para aarch64, así que la única dependencia que podría exigir un compilador normalmente no lo necesita en ninguna de las dos arquitecturas.

Osintgram en Termux

Termux no es Kali, pero es el otro sitio desde el que la gente intenta ejecutar esto en un móvil, y es el entorno donde la compilación sí es realmente inevitable. La libc bionic de Android no encaja ni con las etiquetas de wheel manylinux ni con las musl, así que pip recurre a la distribución de código fuente de gnureadline, lo que significa que clang y las cabeceras de ncurses tienen que estar ahí antes.

pkg update -y && pkg upgrade -y
pkg install -y python git clang make binutils ncurses-utils libffi openssl
git clone https://github.com/Datalux/Osintgram.git
cd Osintgram
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Termux: el paso de los paquetes es la parte que cambia.

Termux informa de platform_system como Linux, así que el marcador de requirements.txt selecciona gnureadline y nunca pyreadline: el fallo de arranque de Windows no aplica aquí. El reporte de Termux más habitual del tracker, la issue #583, es simplemente alguien ejecutando python3 main.py antes de instalar los requisitos y obteniendo ModuleNotFoundError: No module named 'requests'. Todo lo que viene después del paso de los paquetes es idéntico al flujo de Kali, archivo de credenciales incluido, y también lo es el problema de login que viene a continuación.

Se instala. Y entonces falla el login.

Meter Osintgram en Kali es la mitad fácil. La difícil es que un login en Instagram con usuario y contraseña ya casi no funciona, y nada de lo que hagas del lado de Kali cambia eso. Si tu instalación terminó bien y la herramienta se muere en Attempt to login..., no has cometido ningún error.

El fallo es del lado del servidor. El backend clásico es instagram-private-api==1.6.0, fijado a un endpoint de Instagram que desde entonces se ha retirado, y los reportes de 2026 (issue #2627, marzo de 2026) vuelven con checkpoint_required y un checkpoint_url de https://i.instagram.com/web/unsupported_version/: Instagram rechazando la versión de la API de la librería, no tu contraseña. Hay un segundo backend: pon un token en el campo hikerapi_token de config/credentials.ini, o lanza con HIKERAPI_TOKEN=<token> python3 main.py <target> -c <command>, y main.py construye un cliente de HikerAPI en su lugar, sin ningún login de Instagram de por medio. Esa es la vía que sigue diseñada para funcionar, y los usuarios informan de que funciona, pero es un servicio de terceros de pago, implica enviar tus objetivos a ese tercero y tiene sus propias roturas de formato de respuesta, reportadas en la issue #2664.

El panorama completo del estado actual (qué se rompió, cuándo, qué sigue funcionando y cuánto cuesta) está en ¿sigue funcionando Osintgram en 2026?. Y si tu objetivo es una cuenta privada, hay un límite infranqueable que no esquiva ninguna plataforma, ni fork, ni flag.

Cuándo no merece la pena instalarlo

Hay una versión de este trabajo en la que nada de lo anterior compensa. Si necesitas datos públicos de perfil de un puñado de cuentas, y no estás tratando específicamente de aprender la herramienta o de trabajar sin conexión, entonces el clon, la cuenta desechable, la limitación de peticiones y los fallos de login no te aportan nada que no puedas conseguir más rápido.

Una consulta alojada también elimina la parte del flujo de la CLI que tiene un riesgo real en Kali: nunca pones tus propias credenciales de Instagram en un archivo, así que no hay ningún baneo por login automatizado del que preocuparse. Los mismos datos públicos, sin PEP 668.

Preguntas frecuentes

  • Cómo instalar Osintgram en 2026

    Clonar, venv, pip, credenciales: los seis comandos que instalan Osintgram, más cada error real que lo detiene y qué significa cada uno.

  • ¿Osintgram sigue funcionando en 2026?

    El login con contraseña está prácticamente muerto; el backend de HikerAPI es la vía que sigue diseñada para funcionar. Último commit el 25 de agosto de 2025, 828 issues abiertas.

Osintgram es una herramienta OSINT independiente y no está afiliada a Instagram ni a Meta. Estas guías describen únicamente software de código abierto documentado públicamente e investigación con fuentes abiertas. Usa estas técnicas de forma legal, sobre objetivos que estés autorizado a investigar, y nunca para acosar o vigilar a particulares.