DEV Community

Higor Diego
Higor Diego

Posted on

Como descobrir o endereço IP do usuário usando Telegram.

Ip find telegram

Se você já se perguntou como funcionam os aplicativos de mensagens, como Telegram e WhatsApp, por trás das conversas, este artigo é para você. Vamos explorar uma maneira de descobrir o endereço IP do usuário com quem estamos interagindo no Telegram, utilizando o poderoso Wireshark, uma ferramenta de análise de tráfego de rede.

Passo 1: Baixando o Wireshark

Antes de começar, você precisa baixar e instalar o Wireshark em seu computador. Você pode encontrar o download no site oficial do Wireshark.

Certifique-se de escolher a versão compatível com o seu sistema operacional.

Passo 2: Filtrando o Tráfego STUN

Após abrir o Wireshark, você verá uma interface que captura o tráfego de rede em tempo real. Vamos filtrar o tráfego STUN, que é o protocolo utilizado pelo Telegram para a comunicação.
Na barra de filtros, clique no ícone de busca para abrir a opção de busca. Em seguida, selecione a opção "String" e digite "XOR-MAPPED-ADDRESS" na linha de busca.

Passo 3: Iniciando a Captura de Dados

Agora, estamos prontos para iniciar a captura de dados. Certifique-se de que o Wireshark esteja em execução e realize uma chamada via Telegram para o usuário com quem deseja descobrir o endereço IP.
Assim que o usuário atender a chamada, o Wireshark começará a exibir os dados capturados. Procure na lista por informações relacionadas ao protocolo STUN, e você encontrará o endereço IP do usuário que recebeu a chamada.

Passo 4: Identificando o Endereço IP
Para facilitar a identificação do endereço IP desejado, utilize a função de busca do Wireshark. Clique na opção "Find" e digite "XOR-MAPPED-ADDRESS" na linha de busca. O endereço IP do usuário aparecerá imediatamente após essa string.


Automatizando com Golang

Com o uso da linguagem de programação Golang, podemos automatizar todo o processo descrito acima. A seguir, apresentamos um código em Golang que realiza essa tarefa de forma eficiente e confiável:

 package main import ( "fmt" "log" "os" "os/exec" "strings" ) func main() { const CAP_PATH = "/tmp/tg_cap.pcap" // Caminho temporário para o arquivo de captura pcap const CAP_TEXT = "/tmp/tg_text.txt" // Caminho temporário para o arquivo de texto com informações const CAP_DURATION = "5" // Duração da captura em segundos // Obter o endereço IP externo do dispositivo ipCmd := exec.Command("curl", "-s", "icanhazip.com") ipOutput, err := ipCmd.Output() if err != nil { log.Fatal("Falha ao obter o endereço IP:", err) } MY_IP := strings.TrimSpace(string(ipOutput)) // Verificar se o Wireshark está instalado _, err = exec.LookPath("tshark") if err != nil { log.Println("[-] Wireshark não foi encontrado. Tente instalar o Wireshark primeiro.") log.Println("[+] Debian baseado: sudo apt-get install -y tshark") log.Println("[+] Baseado em RedHat: sudo yum install -y tshark") os.Exit(1) } fmt.Println("[+] Descobrindo o Endereço IP do Usuário no Telegram usando Golang") fmt.Println("[+] Iniciando a captura de tráfego. Aguarde", CAP_DURATION, "segundos...") // Iniciar a captura de tráfego com o Wireshark captureCmd := exec.Command("tshark", "-w", CAP_PATH, "-a", "duration:"+CAP_DURATION) captureOutput, err := captureCmd.CombinedOutput() if err != nil { log.Fatal("Erro na captura de tráfego:", err) } fmt.Println("[+] Tráfego capturado.") // Converter o arquivo pcap para um arquivo de texto legível convertCmd := exec.Command("tshark", "-r", CAP_PATH) convertOutput, err := convertCmd.Output() if err != nil { log.Fatal("Erro ao converter o arquivo pcap para texto:", err) } err = os.WriteFile(CAP_TEXT, convertOutput, 0644) if err != nil { log.Fatal("Erro ao escrever o arquivo de texto:", err) } fmt.Println("[+] Arquivo pcap convertido com sucesso.") // Verificar se o tráfego do Telegram está presente no arquivo de texto if strings.Contains(string(convertOutput), "STUN 106") { fmt.Println("[+] Tráfego do Telegram foi encontrado.") // Extrair o endereço IP do texto extractCmd := exec.Command("cat", CAP_TEXT, "|", "grep", "STUN 106", "|", "sed", "'s/^.*XOR-MAPPED-ADDRESS: //'", "|", "awk", "'{match($0,/[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+/); ip = substr($0,RSTART,RLENGTH); print ip}' | awk '!seen[$0]++'") extractOutput, err := extractCmd.Output() if err != nil { log.Fatal("Erro ao extrair o endereço IP:", err) } TG_OUT := strings.TrimSpace(string(extractOutput)) IP_1 := strings.Fields(TG_OUT)[0] IP_2 := strings.Fields(TG_OUT)[1] var IP string // Verificar se o endereço IP é o nosso ou do destinatário if MY_IP == IP_1 { IP = IP_2 } else if MY_IP == IP_2 { IP = IP_1 } else { IP = "[-] Desculpe. Endereço IP não encontrado." os.Exit(1) } // Obter informações de host para o endereço IP hostCmd := exec.Command("host", IP) hostOutput, err := hostCmd.Output() if err != nil { log.Fatal("Erro ao obter informações de host:", err) } fmt.Println("[+]") fmt.Println("[+] Endereço IP:", IP) fmt.Println("[+] Host:", strings.TrimSpace(string(hostOutput))) fmt.Println("[+]") // Limpar os arquivos temporários err = os.Remove(CAP_PATH) if err != nil { log.Fatal("Erro na limpeza:", err) } err = os.Remove(CAP_TEXT) if err != nil { log.Fatal("Erro na limpeza:", err) } fmt.Println("[+] Limpeza concluída.") } else { fmt.Println("[-] Tráfego do Telegram não foi encontrado.") fmt.Println("[!]") fmt.Println("[!] Execute este script somente >>>APÓS<<< a resposta.") fmt.Println("[!]") os.Exit(1) } fmt.Println("[?]") fmt.Print("[?] Executar whois", IP, "? (S/N): ") // Verificar se o usuário deseja executar o comando whois var answer string fmt.Scanln(&answer) if strings.ToUpper(answer) == "S" { whoisCmd := exec.Command("whois", IP) whoisOutput, err := whoisCmd.Output() if err != nil { log.Fatal("Erro ao executar o comando whois:", err) } fmt.Println(string(whoisOutput)) } else { fmt.Println("[+] Tchau tchau!") os.Exit(0) } } 
Enter fullscreen mode Exit fullscreen mode

Conclusão

Utilizando o Wireshark e a análise do tráfego STUN no Telegram, podemos descobrir o endereço IP do usuário com quem estamos interagindo. Essa informação pode ser útil para diversos propósitos, como verificar a localização geográfica do usuário ou identificar possíveis problemas de rede.

No entanto, é importante lembrar que a privacidade dos usuários deve ser sempre respeitada. O uso dessas técnicas deve ser feito de maneira ética e dentro dos limites legais.

Referências:

https://medium.com/@ibederov_en/find-out-the-ip-address-through-a-call-to-telegram-a899441b1bac

https://www.wireshark.org/

https://go.dev/

Top comments (0)