Витягуємо приватні телефонні номери користувачів в Telegram

Останнім часом безпека Telegram (далі – телеграм) все частіше піддається критиці і постає питання: «чи дійсно телеграм добре захищений?»
Як і для будь-якого месенджера – важлива його максимальна інтеграція зі сторонніми сервісами. Для прикладу, телеграм в першу чергу працює з вашою телефонною книгою. Він синхронізує ваші номери зі своєю базою і перевіряє на наявність реєстрації в телеграмі. Далі – телеграм пропонує вам вільні повідомлення і дзвінки з вашими потенційними друзями. «Зручно» — що ще сказати?
Скористаємося цією зручністю.

Беремо в руки Android. Я взяв Samsung A3. Підключаємо до ПК. Попередньо експортуємо контакти і отримуємо файлик з назвою vCard.vcf. Наступні 5 хвилин прочитання цієї статті він буде нашим найкращим другом. Копіюємо собі на робочий стіл, відкриваємо через текстовий редактор і бачимо наступну картину:

Кожен наш контакт заноситься в якийсь шаблон з початком тега «BEGIN:VCARD» і кінцем «END:VCARD». Між ними знаходяться: ім’я контакту, телефон та фото (якщо є) – це основні параметри, які нам будуть потрібні.
Що ж, добре, але що це нам дає? А то, якщо ми створимо свою базу з такого шаблону, то зможемо імпортувати її назад в наш телефон і використовувати надалі за призначенням. Пам’ять андроїда дозволяє зберігати до 20 тисяч контактів. Шукаємо базу номерів в паблике/купуємо/генеруємо самі, виходячи з нашого регіону, і тд.
Сенс в тому, щоб зібрати базу з 20 тисяч номерів, присвоїти їм номери і імпортувати в наш телефон.
Я просто купив готову базу для спаму, номери яких зареєстровані в телеграме. На PHP написав скриптик для генерації шаблону «name;number» і створив свій власний vCard.vcf:

І так, ми маємо базу з 20к контактів, імена яких не відомі, як і номери. Але ми ж з вами зібралися за екшеном, тому копіюємо цю базку на флешку нашого андроїда, через контакти імпортуємо дану базу:

У підсумку, маємо телефонну книгу з 20к контактів. Далі – найцікавіше. Ми подрубаем інтернет на телефоні. Бажано, Wi-Fi. Запускаємо клієнт телеграма і, О, ДИВО! «Віз» пропонує нам синхронізацію контактів, так як вважає, що у нас нібито з’явилися нові контакти, а, значить, потенційні друзі! Ми погоджуємося, звичайно ж. І що робить віз? Телеграм перевіряє ваші номери з телефонної книги на реєстрацію у своїй базі і видає вам фото контактів, які зареєстровані!
І так, ми тепер знаємо номер телефону і фото користувача. Що ж нам з цим робити? А ми робимо наступне: експортуємо всі наші контакти. Стандартний експорт контактів з телеграма не допоможе, так як він не показує фото, тому ми можемо, скориставшись API, написати свій скриптик або взяти готовий. Я взяв готовий з гитхаба «ExportTelegramContacts». В конфіги треба прописати дані свого API, зареєструвавшись як розробник. Робиться все за хвилини.
Запускаємо програму через консоль

Читайте також  Як монобрендовому проекту потрапити в ТОП, перемігши агрегатори і внутрішні сервіси пошукових систем?

Авторізуємось і вводимо команду на експорт з фото!

Через деякі секунди/хвилини отримуємо файлик з форматом:

Абсолютно такий же вигляд, як і був у нас при генеруванні імпорту, тільки додалося полі «фото». Це аватарка нашого контакту, зашифрована base64.
Тобто, телеграм «зжер» нашу базу з 20к номерів і видав нам всі контакти, які зареєстровані в системі, попутно прив’язавши до них реальний аватар користувача (фото є не у всіх користувачів)

Раз телеграм пробив реальних користувачів на реєстрацію, то видав нам їх фото. Таким чином, ми знаємо, кому належить цей номер, але досі не знаємо логіна і реального імені користувача. Щоб дізнатися логін користувача, нам потрібен інший акаунт у телеграмі, з раніше доданими користувачами за їх логіном.
Ну, а потім все повторюється. Експортуємо базу через ExportTelegramContacts і маємо такий же файл формату vcf з даними користувачів (фото, ім’я, логін).
Потім нам просто потрібно порівняти 2 файлу і перебрати всіх користувачів з першого і другого акаунтів. Порівнювати ми будемо, звичайно ж, по фото (base64). Відповідні фото будуть означати знайдених користувачів, отже, ми об’єднаємо їх фото, логін, номер та ім’я. Таким чином, ми пробили дані потрібних нам користувачів.
Звичайно, цей процес не швидкий і дає мало шансів, але, якщо нам потрібно пробити пару тисяч користувачів, то завантажувати і вивантажувати по 20 тисяч користувачів, а потім, порівнявши їх, можна домогтися цілком не поганих результатів.
Отже, підведемо підсумки! Все просто! Маємо 2 телеграм облікових записи. Один нам потрібен для імпорту номерів, які будемо пробивати. В інший додамо, що нас цікавлять людей. Експортуємо з першого аккаунта всі наші контакти, які визначив телеграм, як друзів. Вид експорту буде: «номер_телефона: фото». З іншого експортуємо ті ж самі контакти, тільки вигляд вже буде: «логін: фото».
Ну, а далі все просто. Порівнюємо два файла і перебираємо циклічно всі контакти, знаходимо ті, які відповідають фото.
Таким чином, фото з одного списку, яке відповідає фото з друго списку, прирівнюється до нашої жертві, і ми дізнаємося його номер.
Адже, фото = фото => логін + номер
Наочний скриптик для повного перебору користувачів: (перепрошую за гарний код)

Читайте також  Як вкрасти гроші з безконтактної картки і Apple Pay

Підведемо підсумки!
Процес 1 циклу пошуку зайняв у мене близько 10 хвилин. За 10 хвилин я перебрав 20 тисяч номерів. У добу можна прогнати до декількох мільйонів. Повністю автоматизувати цей процес не вдалося, тому працювати доведеться руками, що досить незручно. До того ж, не всі користувачі ставлять фото в свій профіль. Ні з якими лімітами або обмеженнями я не зіткнувся. Протягом декількох годин тестував по максимуму. Не дивлячись на мінуси і плюси цього методу — сама ідея, що номер користувача телеграма можна розкрити – має місце бути.

Степан Лютий

Обожнюю технології в сучасному світі. Хоча частенько і замислююся над тим, як далеко вони нас заведуть. Не те, щоб я прям і знаюся на ядрах, пікселях, коллайдерах і інших парсеках. Просто приходжу в захват від того, що може в творчому пориві вигадати людський розум.

You may also like...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *