Где в Телеграмме посмотреть url и host key

Если вам когда-нибудь было интересно, как приложения для обмена сообщениями, такие как Telegram и WhatsApp, работают за кулисами ваших разговоров, эта статья для вас. Мы рассмотрим метод обнаружения IP-адреса пользователя, с которым мы взаимодействуем в Telegram, с помощью мощного инструмента анализа сетевого трафика Wireshark.

https://t.me/addlist/MUtJEeJSxeY2YTFi – папка с бесплатными ресурсами и обучающими каналами Golang

Шаг 1: Загрузка Wireshark

Прежде чем мы начнем, вам необходимо загрузить и установить Wireshark на свой компьютер. Скачать его можно на официальном сайте Wireshark.

Убедитесь, что выбрали версию, совместимую с вашей операционной системой.

Шаг 2: Фильтрация трафика STUN

После открытия Wireshark вы увидите интерфейс, фиксирующий сетевой трафик в реальном времени. Давайте отфильтруем трафик STUN, который является протоколом, используемым Telegram для связи.
В строке фильтра нажмите на значок поиска, чтобы открыть опцию поиска. Затем выберите опцию “Строка” и введите в строку поиска “XOR-MAPPED-ADDRESS”.

Продолжение можно посмотреть в телеграмме!!!

Шаг 3: Начало сбора данных

Теперь мы готовы начать захват данных. Убедитесь, что Wireshark запущен, и сделайте звонок через Telegram пользователю, чей IP-адрес вы хотите обнаружить.
Как только пользователь ответит на звонок, Wireshark начнет отображать захваченные данные. Просмотрите список в поисках информации, связанной с протоколом STUN, и вы найдете IP-адрес пользователя, принявшего звонок.

Шаг 4: Определение IP-адреса

Чтобы легко определить нужный IP-адрес, воспользуйтесь функцией поиска Wireshark. Нажмите на опцию “Найти” и введите в строку поиска “XOR-MAPPED-ADDRESS”. IP-адрес пользователя сразу же появится после этой строки.

Автоматизация с помощью Golang

Используя язык программирования Golang, мы можем автоматизировать весь процесс, описанный выше. Ниже приведен код на языке Golang, который выполняет эту задачу эффективно и надежно:

package main import ( «fmt» «log» «os» «os/exec» «strings» ) func main() < const CAP_PATH = «/tmp/tg_cap.pcap» // Temporary path for pcap capture file const CAP_TEXT = «/tmp/tg_text.txt» // Temporary path for text file with information const CAP_DURATION = «5» // Capture duration in seconds // Get the external IP address of the device ipCmd := exec.Command(«curl», «-s», «icanhazip.com») ipOutput, err := ipCmd.Output() if err != nil < log.Fatal(«Failed to get IP address:», err) >MY_IP := strings.TrimSpace(string(ipOutput)) // Check if Wireshark is installed _, err = exec.LookPath(«tshark») if err != nil < log.Println(«[-] Wireshark not found. Try installing Wireshark first.») log.Println(«[+] Debian-based: sudo apt-get install -y tshark») log.Println(«[+] RedHat-based: sudo yum install -y tshark») os.Exit(1) >fmt.Println(«[+] Discovering User’s IP Address on Telegram using Golang») fmt.Println(«[+] Starting traffic capture. Please wait for», CAP_DURATION, «seconds. «) // Start traffic capture with Wireshark captureCmd := exec.Command(«tshark», «-w», CAP_PATH, «-a», «duration:»+CAP_DURATION) captureOutput, err := captureCmd.CombinedOutput() if err != nil < log.Fatal(«Traffic capture error:», err) >fmt.Println(«[+] Traffic captured.») // Convert pcap file to readable text file convertCmd := exec.Command(«tshark», «-r», CAP_PATH) convertOutput, err := convertCmd.Output() if err != nil < log.Fatal(«Error converting pcap file to text:», err) >err = os.WriteFile(CAP_TEXT, convertOutput, 0644) if err != nil < log.Fatal(«Error writing text file:», err) >fmt.Println(«[+] Pcap file successfully converted to text.») // Check if Telegram traffic is present in the text file if strings.Contains(string(convertOutput), «STUN 106») < fmt.Println(«[+] Telegram traffic found.») // Extract the IP address from the text extractCmd := exec.Command(«cat», CAP_TEXT, «|», «grep», «STUN 106», «|», «sed», «‘s/^.*XOR-MAPPED-ADDRESS: //'», «|», «awk», «» | awk ‘!seen[$0]++'») extractOutput, err := extractCmd.Output() if err != nil < log.Fatal(«Error extracting IP address:», err) >TG_OUT := strings.TrimSpace(string(extractOutput)) IP_1 := strings.Fields(TG_OUT)[0] IP_2 := strings.Fields(TG_OUT)[1] var IP string // Check if the IP address is ours or the recipient’s if MY_IP == IP_1 < IP = IP_2 >else if MY_IP == IP_2 < IP = IP_1 >else < IP = «[-] Sorry. IP address not found.» os.Exit(1) >// Get host information for the IP address hostCmd := exec.Command(«host», IP) hostOutput, err := hostCmd.Output() if err != nil < log.Fatal(«Error getting host information:», err) >fmt.Println(«[+]») fmt.Println(«[+] IP Address:», IP) fmt.Println(«[+] Host:», strings.TrimSpace(string(hostOutput))) fmt.Println(«[+]») // Clean up temporary files err = os.Remove(CAP_PATH) if err != nil < log.Fatal(«Cleanup error:», err) >err = os.Remove(CAP_TEXT) if err != nil < log.Fatal(«Cleanup error:», err) >fmt.Println(«[+] Cleanup completed.») > else < fmt.Println(«[-] Telegram traffic not found.») fmt.Println(«[!]») fmt.Println(«[!] Run this script only >>>AFTER fmt.Println(«[?]») fmt.Print(«[?] Run whois», IP, «? (Y/N): «) // Check if the user wants to run the whois command var answer string fmt.Scanln(Y» < whoisCmd := exec.Command(«whois», IP) whoisOutput, err := whoisCmd.Output() if err != nil < log.Fatal(«Error running whois command:», err) >fmt.Println(string(whoisOutput)) > else < fmt.Println(«[+] Goodbye!») os.Exit(0) >>

Еще по теме:  Бот для перехвата переписки в Телеграмме

Заключение

Используя Wireshark и анализируя трафик STUN в Telegram, мы можем узнать IP-адрес пользователя, с которым взаимодействуем. Эта информация может быть полезна для различных целей, например, для проверки географического положения пользователя или выявления потенциальных сетевых проблем.

Однако важно помнить, что конфиденциальность пользователя всегда должна соблюдаться. Использование этих методов должно осуществляться с соблюдением этических норм и в рамках закона.

Источник: uproger.com

Как получить ID чата/группы в Telegram?

Telegram стал мега популярен благодаря продвинутым функциям обмена данными. Вы можете пересылать даже большие файлы. Он используется как для развлечения, так и бизнеса. Спектр использования максимально обширен, в том числе благодаря поддержке ботов. Однако автоматизированные роботы порой требуют кое-какую дополнительную информацию. Порой требуется узнать ID чата в Telegram.

Зачем нужен ID чата или группы?

ID – уникальный идентификатор, который причисляется каждой группе, хоть публичной, хоть приватной. По нему можно точно определить чат или группу, ошибки быть не может. В то же время, группы с подобными названиями могут встречаться в поиске. Обычно получить ID чата Telegram нужно для того, чтобы работать с разными ботами.

Как узнать свой ID в Telegram?

Telegram не позволяет видеть идентификаторы групп и даже свой ID. Ранее он отображался в пригласительной ссылке сообщества, но в более свежих версиях изменили тип ссылки. Сейчас же вы можете использовать специальных ботов. Их много и все они работают по одинаковому принципу. Однако, как показывает практика, большинство перестали работать. Мы используем один из них.

Что нужно сделать:

Как получить ID чата/группы в Telegram?

Как посмотреть ID группы в Telegram?

Чтобы достичь поставленной цели, уже требуется более функциональный инструмент. Тоже бот, но тот, что поддерживает чтение сторонних групп. Есть на примете один проверенный чатбот.

Еще по теме:  Как понять что Телеграмм читают твой аккаунт

Как узнать ID группы или чата в Телеграм:

Как получить ID чата/группы в Telegram?

Источник: gamesqa.ru

Telegram бот через webhook

Я тогда давно написал статью про создание Telegram бота, и обещал дополнить её описанием настройки работы через webhook, но так и не дополнил. Вот только сейчас дошли руки.

Telegram bot webhook

Что это такое

Как пишут в документации, общаться с серверами Telegram бот может двумя способами:

  1. getUpdates — pull: ваш бот постоянно дёргает сервер Telegram и проверяет есть ли новые сообщения;
  2. setWebhook — push: по мере поступления новых сообщений сервер Telegram отправляет их вашему боту.

Разницу можно изобразить следующим образом:

Telegram bot, getUpdates vs setWebhook

Очевидно, что второй способ ( setWebhook ) рациональнее для всех участников процесса. Однако в нём присутствует неявная сложность: кто-то должен принимать сообщения от Telegram на стороне бота, то есть необходим веб-сервер или его эквивалент.

Как настроить

Что нужно сделать:

  1. Заиметь доменное имя для сервера и получить на него сертификат (например, от Let’s Encrypt). Документация также говорит, что в случае самоподписанного сертификата можно обойтись и просто IP адресом, но этого я не пробовал;
  2. Запилить серверную часть на стороне бота (куда будет ломиться Telegram);
  3. Зарегистрировать адрес серверной части в Telegram (зацепить webhook на endpoint), чтобы Telegram знал, куда ломиться с сообщениями.

Сертификат

С доменом и сертификатом просто. Домен у меня уже был, а сертификат я получил по этой инструкции.

Вариант с самоподписанным сертификатом на прямой IP адрес я оставляю вам на самостоятельное изучение.

Серверная часть

Серверная часть чуть посложнее. Я переделал текущую реализацию бота на pyTelegramBotAPI, используя пример для AIOHTTP.

Ставим необходимые пакеты:

pip install pyTelegramBotAPI pip install aiohttp pip install cchardet pip install aiodns

И сокращённо код бота теперь такой:

Что здесь происходит: мы запускаем мини-веб-сервер, который слушает порт 8443 и отвечает на запросы через определённый endpoint, который образован токеном бота. Токен используется здесь как достаточно уникальный идентификатор, чтобы какой-нибудь мимокрокодил из интернета не навызывал бота и не натворил дел. Полный адрес endpoint’а будет выглядеть вот так: https://YOUR.DOMAIN:8443/YOUR-TOKEN/ .

Обратите также внимание на отличия от стандартного примера из репозитория:

  • в качестве файла сертификата указан fullchain.pem , а не cert.pem ;
  • удалён код снятия и установки webhook’а.

Так как бота я запускаю не из-под root’а, сервис начал валиться с такой ошибкой:

python-bot[1824]: Traceback (most recent call last): python-bot[1824]: File «/usr/local/bin/bot/bot.py», line 142, in python-bot[1824]: context.load_cert_chain(WEBHOOK_SSL_CERT, WEBHOOK_SSL_PRIV) python-bot[1824]: PermissionError: [Errno 13] Permission denied systemd[1]: telegram-bot.service: Main process exited, code=exited, status=1/FAILURE systemd[1]: telegram-bot.service: Failed with result ‘exit-code’.

Еще по теме:  ТГ веб для 2 аккаунта

То есть, у пользователя, из-под которого выполняется скрипт, нет доступа к /etc/letsencrypt/ , чтобы открыть файл сертификата. Я попытался дать доступ к каталогу для новой группы, включив в неё этого пользователя:

groupadd letsencrypt usermod -a -G letsencrypt userforbot chgrp -R letsencrypt /etc/letsencrypt/

Но он один фиг не мог открыть файлы оттуда, даже простой ls выдавал ошибку доступа. В общем, или мои познания Linux полный отстой, или одно из двух. Пришлось тупо назначить его владельцем:

chown -R userforbot:letsencrypt /etc/letsencrypt/

Тогда сервис запустился нормально.

Регистрация

Теперь осталось самое, как оказалось, сложное — зарегистрировать endpoint бота в Telegram. Сложности возникли потому, что я сначала неправильно понял принцип составления endpoint’а, а также из-за проблем с проверкой сертификата.

Для установки/регистрации webhook’а нужно выполнить следующий HTTP запрос (можно просто открыть этот URL в браузере):

https://api.telegram.org/botYOUR-TOKEN/setWebhook?url=https://YOUR.DOMAIN:8443/YOUR-TOKEN/

Пока я экспериментировал и разбирался с форматом endpoint’а, Telegram возвращал мне нормальный результат:

«description»: «Webhook was set», «ok»: true, «result»: true >

Но потом я его видимо задолбал, и он стал возвращать мне следующее:

«ok»: false, «error_code»: 504, «description»: «Gateway Timeout» >

Но оказалось, что это ни на что не влияет, и webhook нормально устанавливается, так что можно даже не дожидаться таймаута, а просто отменять запрос через пару секунд.

Проверить статус webhook’а можно таким запросом:

https://api.telegram.org/botYOUR-TOKEN/getWebhookInfo

Если всё нормально, должно вернуть такое:

«ok»: true, «result»: «url»: «https://YOUR.DOMAIN:8443/YOUR-TOKEN/», «has_custom_certificate»: false, «pending_update_count»: 0, «max_connections»: 40 > >

Как видим, в поле url стоит наш endpoint.

Однако, мне оно сейчас возвращает такое:

«ok»: true, «result»: «url»: «https://YOUR.DOMAIN:8443/YOUR-TOKEN/», «has_custom_certificate»: false, «pending_update_count»: 0, «last_error_date»: 1543762687, «last_error_message»: «SSL error «, «max_connections»: 40 > >

Что указывает на некие проблемы с сертификатом. При этом бот работает нормально, то есть эта ошибка ни на что не влияет. Однако, если вместо fullchain.pem оставить cert.pem (как было указано в примере), то бот работать перестанет.

Стоит также отметить, что если вы установили webhook, то опрос Telegram через getUpdates работать больше будет. Чтобы снять webhook, надо отправить тот же самый запрос, что и для установки, но на этот раз без параметра url :

https://api.telegram.org/botYOUR-TOKEN/setWebhook
«ok»: true, «result»: true, «description»: «Webhook was deleted» >

Ну и всё, не так уж и сложно. Если бы в документации (и сторонних манулах из интернетов) была указана такая простая вещь, что для webhook’а всего-то нужен лишь веб-сервер на стороне бота, я бы это сделал уже сто лет назад. Конечно, продвинутым чувакам это скорее всего было очевидно сразу, но мнe — нет.

Note that even if you sign-in with your e-mail or GitHub, you still won’t be subscribed to replies. That is by design of remark42, unfortunately. To get updates about new replies/commends you need to explicitly subscribe to them either via e-mail or RSS.

Источник: decovar.dev

Рейтинг
( Пока оценок нет )
Загрузка ...