Osintgram no Kali Linux: instale, corrija e use
O Osintgram não é empacotado para o Kali Linux, então não existe apt install para ele. Confirmamos isso de quatro maneiras independentes. E como o Kali 2024.4 colocou o pip atrás da PEP 668, a linha de instalação de quase todo tutorial antigo de Kali agora para de imediato com error: externally-managed-environment.
Duas características do Kali quebram a instalação do Osintgram, e nenhuma delas é explicada pelas páginas que hoje aparecem no topo dessa busca. As duas surgiram depois que a maioria dessas páginas foi escrita.
A primeira é o empacotamento. O Osintgram não está nos repositórios do Kali, então sudo apt install osintgram não tem como funcionar, por mais blog posts que reproduzam essa linha. A segunda é o pip. Desde o Kali 2024.4 a distribuição segue a PEP 668, então um pip install -r requirements.txt puro, fora de um ambiente virtual, se recusa a rodar e imprime error: externally-managed-environment. Os tutoriais antigos de Kali que ainda aparecem bem posicionados (kalilinuxtutorials, os posts do Medium de 2021, dev.to) entregam exatamente esse comando.
Dois fatos específicos do Kali determinam tudo nesta página. Não existe pacote osintgram: a ferramenta está ausente do catálogo de ferramentas do Kali, do GitLab de empacotamento do Kali e do Debian, então a única via de instalação é o git clone. E o pip está travado: no Kali atual, instalar os requisitos fora de um virtualenv falha com error: externally-managed-environment. A sequência que funciona é clonar, depois python3 -m venv venv, depois pip, nessa ordem.
Esta página cobre apenas as partes específicas do Kali: a realidade do empacotamento, o muro da PEP 668, o problema do Python 3.13, os erros que você vê em um sistema da família Debian e em nenhum outro lugar, e o Termux. O material independente de plataforma (por que um virtualenv, qual versão do Python, como funcionam as credenciais, Windows e Docker) está em como instalar o Osintgram, e esta página deliberadamente não repete nada disso.
O Osintgram está nos repositórios do Kali?
Não. Verificamos quatro fontes independentes em 8 de agosto de 2026; nenhuma delas o lista.
| Verificação | Resultado |
|---|---|
kali.org/tools/osintgram/ | HTTP 404: não existe página da ferramenta |
| O índice completo de ferramentas do Kali | Nenhuma entrada osintgram em lugar algum |
API do GitLab de empacotamento do Kali, buscando por osintgram | Retorna um array vazio |
API do Debian sources, buscando por osintgram | Nenhuma correspondência exata, nenhuma parcial |
Um 404 só na página da ferramenta poderia ser uma falha de documentação. Quatro negativas no catálogo de ferramentas, no GitLab de empacotamento e no Debian não são. O projeto concorda por omissão: o README do Datalux/Osintgram documenta exatamente um caminho de instalação, que é um git clone, um virtualenv e pip install -r requirements.txt. Também não existe pacote no PyPI, nem script instalador; setup.sh dá 404 no branch master.
O Kali empacota sim uma ferramenta de Instagram, só que não esta
sudo apt install instaloader funciona, porque o instaloader está no catálogo do Kali sob Identity Information. Ele resolve um problema mais estreito (baixar publicações e metadados de perfil, em vez de rodar um shell de reconhecimento), mas é empacotado, é mantido e cabe em uma linha de apt. Se você chegou aqui porque queria uma ferramenta de Instagram que o Kali instala para você, é essa.
Por que os tutoriais antigos de Kali falham hoje
Duas coisas mudaram no Kali depois que a maioria desses guias foi escrita, e as duas quebram o copiar e colar.
A primeira é a PEP 668, que permite a uma distribuição marcar sua instalação de Python como gerenciada externamente. O Kali documenta o comportamento e as saídas oficiais: um virtualenv, pipx, um pacote apt ou o desencorajado --break-system-packages. Rode a linha de instalação que esses guias dão e o pip para antes de baixar qualquer coisa.
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.Só um desses quatro remédios se aplica ao Osintgram. Não existe pacote apt, como já ficou estabelecido. O pipx instala aplicações Python: ele precisa de algo instalável via pip, e o Osintgram não traz setup.py nem pyproject.toml, então não há nada para o pipx instalar. Sobra o virtualenv, que é o que o README mandava fazer desde o começo.
Não apele para o --break-system-packages
É o único remédio que parece funcionar e depois envenena tudo o que vem em seguida. Ele joga as versões fixadas do Osintgram em ~/.local/lib/python3.x/site-packages/, ao lado das cópias gerenciadas pelo apt, e a colisão aparece mais tarde como ModuleNotFoundError: No module named 'urllib3.packages.six.moves', relatada a partir do Kali na issue #1766, e de novo nas issues #1161 e #2131. Esse caminho ~/.local no traceback é a pista que entrega tudo. Se você já fez isso, limpe esses pacotes antes de montar o venv, ou vai depurar o problema errado.
A segunda mudança é o interpretador. O rastreador de pacotes do Kali lista o python3-defaults em 3.13.9-3 no repositório rolling, ou seja, uma instalação rolling atual roda Python 3.13 por padrão; o Kali 2024.4 foi a versão que mudou o padrão para 3.12, e de lá para cá ele avançou de novo. O Osintgram não foi escrito para isso. O Dockerfile dele ainda fixa python:3.9.2-alpine3.13, uma imagem de março de 2021, o README não indica versão mínima nenhuma, e o requirements.txt fixa três pacotes em releases de 2019 a 2021.
Instalar essas versões fixadas em um virtualenv limpo de Python 3.11 com o pip atual funciona. Nós reproduzimos, e prettytable e hikerapi, que não publicam wheels, compilam a partir do código-fonte sem reclamar. Python 3.9 a 3.11 é a faixa a mirar. No Kali isso normalmente significa aceitar o 3.13 e lidar com as consequências ou, se você tiver um interpretador mais antigo instalado, criar o ambiente explicitamente com ele: python3.11 -m venv venv em vez de python3 -m venv venv.
| Guia de Kali bem posicionado | Data na página | O que há de errado com ele hoje |
|---|---|---|
| kalilinuxtutorials.com | Publicado em 2020-09-04, sem nenhum dateModified | Cerca de 622 palavras. É anterior ao bloqueio da PEP 668, à quebra da API privada do Instagram e ao backend HikerAPI. O título dele ainda diz 2020. |
| guidetolinux.com | 2025-01-01 | Manda você rodar nano config.py. Não existe esse arquivo para editar: as credenciais ficam em config/credentials.ini. Ele também roda python3 main.py sem nome de usuário, o que o argparse rejeita. |
| Tutoriais variados no Medium e no dev.to | De 2021 em diante | Mandam rodar pip3 install -r requirements.txt em todo o sistema, que é exatamente o comando que a PEP 668 agora bloqueia. |
Nada disso é uma alfinetada nesses autores; um guia de 2020 estava correto em 2020. É um aviso sobre o que acontece quando você segue uma página que nunca foi revisada: você acaba corrigindo erros que o próprio guia criou.
A instalação que funciona no Kali atual
Seis passos. Nada aqui precisa de root, exceto o primeiro; todo o resto acontece no seu diretório home e dentro do virtualenv.
- 1
Instale os pré-requisitos do sistema
Git, o módulo venv e as ferramentas de build de que o
gnureadlineprecisa caso tenha de compilar. Este é o único comando que precisa de sudo.sudo apt update sudo apt install -y git python3-venv build-essential libncurses-dev - 2
Clone o repositório
Clone no seu diretório home. Os tracebacks no issue tracker estão cheios de
/home/kali/Osintgram/, que é uma convenção tão boa quanto qualquer outra.git clone https://github.com/Datalux/Osintgram.git cd Osintgram - 3
Crie e ative o ambiente virtual
Este é o passo que torna a PEP 668 irrelevante. Não passe
--system-site-packages: isso reintroduz justamente as cópias gerenciadas pelo apt que você está tentando evitar.python3 -m venv venv source venv/bin/activate - 4
Instale as dependências dentro dele
Atualize as ferramentas de build primeiro. O
prettytable==0.7.2fixado é antigo o bastante para falhar contra um setuptools defasado.pip install --upgrade pip setuptools wheel pip install -r requirements.txt - 5
Preencha o arquivo de credenciais
O repositório traz o
config/credentials.inicom três campos em branco:username,passwordehikerapi_token. Preencha ou o par do Instagram, ou o token do HikerAPI. Omake setuppergunta o par e escreve o arquivo para você, mas ele descarta a linha do token e zera o seu cache de sessão. A decisão sobre credenciais está coberta como deve ser no guia de instalação.nano config/credentials.ini - 6
Rode contra um alvo
O nome de usuário é um argumento posicional obrigatório; o
main.pynão inicia sem um. Adicione-c <command>para rodar um único comando e sair, em vez de cair no shell.python3 main.py <target username>
Duas notas de rodapé sobre o passo 1. O python3-venv normalmente já está presente, mas em uma imagem enxuta do Kali não está, e python3 -m venv venv falha sem ele; a própria mensagem da PEP 668 manda garantir que o python3-full esteja instalado. build-essential e libncurses-dev são seguro, não exigência estrita: as versões recentes do gnureadline trazem wheels manylinux2014 para x86_64 e aarch64, então em uma máquina Kali amd64 ou arm64 comum o pip baixa um wheel e não compila nada. Esses dois pacotes são o que evita /usr/bin/ld: cannot find -lncurses nas máquinas em que o pip realmente cai para a distribuição de código-fonte.
Erros de instalação no Kali e o que eles realmente significam
Estas são as falhas que aparecem especificamente em sistemas da família Debian, mais ou menos na ordem de frequência com que surgem no tracker. O texto do erro é o que você cola no buscador; a coluna do meio é o que está de fato acontecendo.
| Texto do erro | O que ele é de verdade | Correção |
|---|---|---|
error: externally-managed-environment | PEP 668. O Kali recusa instalações do pip em todo o sistema e com --user. | Monte o venv primeiro. Instale o python3-venv se o próprio python3 -m venv falhar. |
ModuleNotFoundError: No module named 'urllib3.packages.six.moves' | O python3-requests do apt misturado com o urllib3 2.x do pip, normalmente depois de um --break-system-packages. Um caminho ~/.local/lib/python3.x/site-packages/ no traceback confirma. | Remova o que foi parar em ~/.local, depois instale em um venv limpo. Veja a issue #1766. |
Cannot uninstall prettytable 3.10.1 ... no RECORD file was found for prettytable | O pip está tentando remover o python3-prettytable do apt para satisfazer o pin prettytable==0.7.2, e não consegue, porque quem o instalou foi o Debian. | Rode dentro de um venv criado sem --system-site-packages. Veja a issue #1126. |
/usr/bin/ld: cannot find -lncurses | O gnureadline está compilando a partir do código-fonte e faltam os headers de desenvolvimento do ncurses. | sudo apt install -y build-essential libncurses-dev e depois reinstale os requisitos. |
ModuleNotFoundError: No module named 'pyreadline' | Enganoso. O main.py captura um import gnureadline que falhou e cai para o pyreadline, que no requirements.txt é só para Windows. | Corrija a compilação do gnureadline, não o pyreadline. Veja a linha acima. |
AttributeError: 'HTMLParser' object has no attribute 'unescape' | prettytable 0.7.2 compilando contra um setuptools antigo. | pip install --upgrade pip setuptools wheel antes dos requisitos. |
ModuleNotFoundError: No module named 'src.Osintgram' | Você rodou o main.py de algum lugar que não é o clone. Tanto o import do módulo quanto a leitura da config usam caminhos relativos. | cd ~/Osintgram primeiro, sempre. |
ERROR: Target path exists but is not a directory | Alguém digitou pip install -t requirements.txt. A flag é -r. | Digite de novo com -r. |
Error: "username" field cannot be blank in "config/credentials.ini" | O arquivo de credenciais que vem no repositório está vazio. Note que o processo encerra com status 0 mesmo assim, então um script wrapper vai ler isso como sucesso. | Preencha o arquivo, ou defina um token do HikerAPI no lugar. |
Vale expandir uma das linhas, porque ela faz as pessoas caçarem o pacote errado. No Linux você pode receber um erro de pyreadline. O main.py abre com um try: import gnureadline / except: import pyreadline sem qualificação, e o marcador de ambiente no requirements.txt só instala o pyreadline no Windows. Então, no Kali, essa mensagem nunca é sobre o pyreadline: ela significa que o import do gnureadline falhou, o que quase sempre significa que a compilação do gnureadline falhou. Instalar o pyreadline não vai ajudar. Corrigir o ncurses vai.
Rodando o Osintgram no Kali
Três linhas, sempre, e a primeira importa mais do que parece.
cd ~/Osintgram
source venv/bin/activate
python3 main.py <target username>O src/config.py lê config/credentials.ini como caminho relativo, e o main.py importa src.Osintgram do mesmo jeito. Inicie como python3 ~/Osintgram/main.py target a partir do seu diretório home e a leitura da config não encontra absolutamente nada, ou você recebe ModuleNotFoundError: No module named 'src.Osintgram', que é exatamente a issue #105. Não existe prefixo de instalação nem script wrapper; o diretório do clone é a aplicação.
Tudo o que a ferramenta lê e escreve fica dentro desse clone:
~/Osintgram/config/credentials.ini: seu nome de usuário e sua senha do Instagram, ou um token do HikerAPI.~/Osintgram/config/settings.json: a sessão de login em cache. O comandocache, ou iniciar com-C, redefine o arquivo para{}.~/Osintgram/output/<target>/: os resultados, como<target>_<command>.txte.json. A saída em arquivo fica desligada até você digitarFILE=youJSON=y, ou iniciar com-f/-j.
Esse arquivo de credenciais é texto puro no disco
O config/credentials.ini guarda um nome de usuário e uma senha do Instagram em texto claro dentro do seu clone. O README do projeto diz duas vezes, em vermelho, para não usar sua conta própria ou principal e para não enviar o arquivo para um fork. O .gitignore cobre credentials.ini e settings.json, o que protege você de um git add . acidental e não de um git add -f deliberado. Use uma conta descartável, ou coloque um token do HikerAPI no terceiro campo e nunca escreva uma senha ali.
Depois que ele inicia, você está em um shell interativo com um prompt amarelo Run a command: e autocompletar com TAB nos nomes dos comandos. Cuidado com os comandos pesados: os quatro comandos de e-mail e telefone fazem uma chamada de API extra por seguidor, sem backoff em lugar nenhum, e um usuário de Kali na issue #366 tirou 41,643 registros do fwersemail antes de o Instagram bloquear as requisições; o crash que veio em seguida descartou todos eles. A referência completa de comandos, os nomes dos arquivos de saída e os comandos que não retornam mais nada estão em como usar o Osintgram.
Kali em ARM e Osintgram no Termux
O Kali em arm64 não exige nenhuma mudança na sequência acima. O gnureadline 8.3.3 publica wheels manylinux2014 tanto para x86_64 quanto para aarch64, então a única dependência que poderia exigir um compilador normalmente não precisa de um em nenhuma das duas arquiteturas.
Osintgram no Termux
O Termux não é o Kali, mas é o outro lugar de onde as pessoas tentam rodar isso pelo celular, e é o ambiente em que a compilação é realmente inevitável. A libc bionic do Android não corresponde nem às tags de wheel manylinux nem às musl, então o pip cai para a distribuição de código-fonte do gnureadline, o que significa que o clang e os headers do ncurses precisam estar lá 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.txtO Termux reporta platform_system como Linux, então o marcador no requirements.txt seleciona o gnureadline e nunca o pyreadline: o crash de inicialização do Windows não se aplica aqui. O relato de Termux mais comum no tracker, a issue #583, é só alguém rodando python3 main.py antes de instalar os requisitos e recebendo ModuleNotFoundError: No module named 'requests'. Tudo depois do passo dos pacotes é idêntico ao fluxo do Kali, arquivo de credenciais incluído. E o problema de login abaixo também.
Instala. E aí o login falha.
Colocar o Osintgram no Kali é a metade fácil. A metade difícil é que o login com usuário e senha no Instagram basicamente não funciona mais, e nada do que você fizer do lado do Kali muda isso. Se a sua instalação terminou e a ferramenta morre em Attempt to login..., você não errou nada.
A falha é do lado do servidor. O backend clássico é o instagram-private-api==1.6.0, preso a um endpoint do Instagram que desde então foi retirado, e os relatos de 2026 (issue #2627, março de 2026) voltam como checkpoint_required com um checkpoint_url de https://i.instagram.com/web/unsupported_version/: é o Instagram rejeitando a versão de API da biblioteca, não a sua senha. Existe um segundo backend: coloque um token no campo hikerapi_token do config/credentials.ini, ou inicie com HIKERAPI_TOKEN=<token> python3 main.py <target> -c <command>, e o main.py constrói um cliente HikerAPI no lugar, sem nenhum login do Instagram envolvido. Esse é o caminho que ainda foi projetado para funcionar, e os usuários relatam que funciona, mas é um serviço pago de terceiros, significa enviar seus alvos para esse terceiro, e tem quebras de formato de resposta próprias, relatadas na issue #2664.
O quadro completo de status (o que quebrou, quando, o que ainda funciona e quanto custa) está em o Osintgram ainda funciona em 2026. E se o seu alvo é uma conta privada, existe um limite intransponível que nenhuma plataforma, fork ou flag contorna.
Quando a instalação não vale a pena
Existe uma versão desse trabalho em que nada do que está acima se paga. Se você precisa de dados públicos de perfil em um punhado de contas, e não está especificamente tentando aprender a ferramenta ou trabalhar offline, então o clone, a conta descartável, o throttling e as falhas de login não te dão nada que você não consiga mais rápido de outro jeito.
Uma consulta hospedada também elimina a parte do fluxo de CLI que carrega risco real no Kali: você nunca coloca as suas próprias credenciais do Instagram em um arquivo, então não há banimento por login automatizado com que se preocupar. Os mesmos dados públicos, sem PEP 668.