Пару лет назад я начал исследовать приложения телеграм, протокол MTProto. Я использовал некоторые методы API не по назначению, в общем, ничего особенного. Спустя 2 года я заметил некоторую особенность, о которой мало кто упоминает, возможность испытать которую отсутствует в большинстве официальных графических приложений (за исключением Telegram X). Я начал исследовать ее и решил поделиться опытом с читателями хабра.
Telegram X
Telegram X - призер конкурса Telegram-Android, проводимый самой компанией в 2016 году, на котором были предложены приложения от многих пользователей. Первое место занял проект под названием Challegram в категории библиотеки TDLib, позже оно было переименовано и выпущено под привычным названием - Telegram X. Приложение использует TDlib (https://github.com/tdlib/td), что позволяет не задумываться насчет собственных реализаций MTProto (какие например используются в приложении Telegram Desktop).
Как работают контакты Telegram
Как вы думаете, что происходит, когда вы разрешаете приложению доступ к контактам? Как не сложно догадаться, они отправляются на сервер, где затем происходит их сверка с аккаунтами Telegram. Вы получаете этот список контактов, вы можете нажать меню "Контакты" и написать любому их них. Хорошо. Однако есть и те номера, которые еще не зарегистрировались в телеграм / скрыли свой номер, что же происходит с ними? Здесь все гораздо интереснее: они сохраняются на сервере телеграм, вы можете получить их, экспортировав пункт "Контакты" через Telegram Desktop. Добавляя контакт с номером телефона которого нет в телеграм / скрыт, вы также автоматически добавляете его на сервер.
Кроме того, вы получите уведомление, когда кто-либо создаст аккаунт с номером, который есть в ваших контактах, избежать этого уведомления для вашего контакта попросту невозможно. Пользователи уже предлагали такую возможность (https://bugs.telegram.org/c/82), но она не была реализована. Вы могли бы подумать, что анонимные номера решают эту проблему... НЕТ. Вернемся к этому чуточку позднее.
Особенность
Во всех приложениях кроме Telegram X при добавлении вы получаете плашку вида "Контакта еще нет в телеграм"
![Пример - приложение для Mac OS. Пример - приложение для Mac OS.](https://www.pvsm.ru/images/2023/03/10/strannaya-funkciya-Telegram.png)
Таким образом, это похоже на функционал множества мессенджеров.
А теперь посмотрите на то же окно в Telegram X:
![Последнее предложение Последнее предложение](https://www.pvsm.ru/images/2023/03/10/strannaya-funkciya-Telegram-2.jpg)
Я думаю вы уже догадались. 8 - число пользователей Telegram, у которых этот номер телефона загружен на сервер. Не верите? Смотрите сами: https://core.telegram.org/constructor/popularContact.
Какова ваша фантазия?
Это может быть использовано в различных направлениях, но одним из интересных - является наблюдение за парсингом телеграм.
Ни для кого не секрет что в 2020 году утекла база пользователей телеграм, предположительно полученная при помощи парсинга. Это было допущено ввиду слишком маленьких ограничений на проверку контактов. Некоторые люди просто купили много аккаунтов и начали загружать на сервер номера, чтобы сверить их. При регистрации они также получили бы чат, из которого могли бы через временные промежутки получать информацию об аккаунте. Как бы пользователь ни старался, у него не вышло бы скрыть себя, он даже не знал бы кто именно добавил его контакт.
Сейчас все эти теории можно проверить наглядно. Введите популярный номер, скрытый или не зарегистрированный в телеграм (например +79998887766) - получите "более 1000 контактов". Введите случайный из существующего диапазона - получите несколько. И этих несколько будет достаточно, чтобы автоматически обновлять информацию о вашем имени в телеграм, статусе, собирать ваши аватарки. У обычных, используемых номеров значение больше 100 - действительно, друзья имеющие доступ к телеграм уже загрузили ваш номер на сервер. Но почему у пустых или виртуальных номеров, которые никогда никому не принадлежали уже есть "знакомые в телеграм"? Думайте сами. Введите случайные цифры из несуществующего диапазона - вы с большой долей вероятности не получите ничего. И действительно, никому не нужно собирать такие номера, они никогда не могут быть кем-либо использованы.
Эксперимент с покупкой виртуальных номеров (не от Telegram)
Я приобрел номера нескольких стран чтобы проверить количество потенциальных знакомых в телеграм. Результаты не обрадовали меня.
![Вот я купил номер кипра. А у него уже целых 8 "знакомых в телеграм"! Вот я купил номер кипра. А у него уже целых 8 "знакомых в телеграм"!](https://www.pvsm.ru/images/2023/03/10/strannaya-funkciya-Telegram-3.jpg)
![Я действительно его приобрел Я действительно его приобрел](https://www.pvsm.ru/images/2023/03/10/strannaya-funkciya-Telegram-4.jpg)
Так еще с несколькими номерами. Большая часть имела знакомых, вы можете проверить мои слова самостоятельно, приобрести, проверить и отменить номер. Множество сервисов позволяют сделать это.
Анонимные номера
Кладезь для параноиков, покупка криптовалютой, никакой привязки к аккаунту, верно? Да, но все только хуже. Во-первых транзакции в сети TON прозрачны и их может проанализировать каждый. Во вторых АБСОЛЮТНО ВСЕ номера вида +8880XXXXXXX имеют от ДВУХ контактов. А именно такие номера в большинстве случаев продаются на https://fragment.com/. Вы можете проверить случайный номер не с нулём, а, например, с девяткой - получите 0 "знакомых". Получается, что кто-то спарсил 10 млн анонимных номеров, иначе объяснить это сложно. Анонимность новых номеров на нуле, вы также можете добавить их через контакты и получить после уведомление о регистрации.
К чему это все?
Пока вы покупаете номера для того чтобы быть анонимными, эти номера добавляют в контакты, чтобы при регистрации могли получить связку типа "номер - id - прочая информация". Иначе объяснить присутствие фантомных знакомых у пустых номеров сложно. Поскольку у парсящего есть чат, он может обновлять информацию в любое время (можете почитать об использовании User ID в доках Telegram). Эта возможность наглядно показывает, насколько же сложно сохранить анонимность в телеграм...
Автор:
cramp