Приветствую всех в этом разделе! Сегодня хотелость бы затронуть тематику спама и фишинга в Телеграм.
ДИСКЛЕЙМЕР
Автор данной статьи крайне не одобряет нелегальных, вредных и нарушающих правила действий.
Все программное обеспечение, показанное в этой статье не должно использоватся во вредных и нелегальных действиях
таких как фишинг, массовые рассылки и прочее. Информация предоставленная здесь, служит как образовательный ресурс
и описание того, как атака может быть выполнена злоумышленниками
Содержание статьи:
1. Как появилась эта идея
2. Написание базовой программы-клиента с помощью Telethon
3. Регистрация и получение API доступа к клиенту
4. Парсим посты в Телеграмм каналах и получаем данные юзеров
5. Пишем сообщение кому либо в Телеграм с помощью Telethon
6. Тестируем программу
7. Заключение
1. Как появилась эта идея
Как вы знаете, недавно Телеграм был обновлен, и в нем появилась возможность оставлять комментарии к посту на канале.
Не все админы включили это, однако есть достаточно каналов где есть регулярный сильный актив и открыты комментарии.
Когда я смотрел новое обновление Телеграм, мне бросилось в глаза то, что я могу написать в личные сообщения каждому комментатору,
а бывало такое что комментарии были от 100 до 500 ответов. Меня натолкнуло на идею, что можно с помощью клиент-API Телеграма
спарсить комментарии и получить куча User-ID и никнеймов. С этой мыслью я пошел работать над программой, которая будет показана далее.
2. Написание базовой программы-клиента с помощью Telethon
Как известно, Телеграм очень дружественнен к разработчикам, я думаю что про ботов в данном мессенджере слышали все, а вот про то,
что можно написать и свой клиент -- особо никто не знает. С помощью данной библиотеки можно сделать очень многое, но сегодня мы говорим о спаме.
Наша программа будет работать следующим образом:
1. Подключение к телеграмм аккаунту
2. Парсинг каналов, в постах которых есть возможность оставлять комментарии
3. Получение Telegram User ID и никнейма
4. Перебор полученных данных и рассылка сообщений
Сначала установим библиотеку Telethon:
Начнем. Любая программа, которая хочет работать с Telethon должна получить api_id и api_hash. С помощью них можно авторизироватся
в Телеграмме, процесс авторизации такой же как и всегда, вам присылают код и вам надо его ввести в программу. Еще вам следует придумать имя сессии,
под этим именем будет хранится Телеграмм сессия в виде файла в директории запуска программы. Получить доступ к клиенту можно так:
Теперь подключаемся к Телеграму:
На будущее, что бы отключится надо:
Когда вы будете впервые создавать сессию, вам в терминале выдаст форму ввода, здесь надо будет ввести свой телефон, код пришедший на аккаунт,
в который вы хотите войти и опционально пароль.
Далее нам дают код как в обычной процедуре:
Вводим, если вы установили пароль то вводим и пароль:
Все, вы успешно создали сессию, если вас не уведомили об обратном.
Сессия сохраняется в файле в рабочей директории программы. Не перемещайте ее и не удаляйте, где ее создали там пусть и хранится.
Далее вы можете использовать ту же сессию в дальнейших вызовах программы, указав то же имя сессии при создании клиента что и в первый раз, когда вы ее создали.
Сама программа будет иметь вид библиотеки, из которой вы сможете вызывать функции в нужном вам порядке.
3. Регистрация и получение API доступа к клиенту
Для того что бы использовать библиотеку и ваш аккаунт Телеграмма через него, вам следует зарегистрировать на него API с помощью https://my.telegram.org/auth
Шаг 1. Заходим под нашим Телеграмм-аккаунтом
Шаг 2. Вводим код
Шаг 3. Переходим в раздел где написана наша информация для работы с API
Кликаем на API development tools
Вот и наши данные в поле api_id и api_hash
4. Парсим посты в Телеграмм каналах и получаем данные юзеров
Алгоритм следующий, с помощью функции iter_messages получить ID поста, а потом той же функцией получить комментари к нему с помощью аргумента reply_to.
Где channel это никнейм канала, post.id это ID поста, с которого мы получаем комментарии
reply.sender.id -- Telegram User ID
reply.sender.username -- Telegram Username
reply.text -- Текст комментария
5. Пишем сообщение кому либо в Телеграм с помощью Telethon
Для того что бы отправить сообщение кому либо в Телеграмм, нам нужен его никнейм или User ID.
6. Тестируем программу
Итак, я добавил еще пару полезных функций в программу: запись в файл и загрузка юзеров из файла.
Эта программа, простой пример того как можно реализовать этот метод. Например что бы собрать данные с канала и записать их в файл надо:
Где 20 это максимальное количество юзеров которое следует получить.
Если мы запустим это, то получим User ID и никнейм в удобном для дальнейшего хранения формате:
Что бы отослать сообщения нам нужно:
Где 20 в spam_text это количество юзеров которым будет отправленно данное сообщение.
Что бы загрузить юзеров из файла, и проделать тот же спам нам нужно:
До файла нужно указать полный путь либо нужно что бы файл лежал в рабочей директории программы.
Добавить юзера вручную:
На основе представленного здесь метода, можно создавать более сложные и удобные в использовании программы для сбора данных юзеров и спама
7. Заключение
Хоть и метод довольно простой в исполнении, при правильном применении он может дать вам огромные возможности.
Вы сможете организовывать большие спам-рассылки практически без вложений, что поможет вам улучшить свое материальное состояние
Если вы владелец бизнеса, вам не нужно больше будет тратится на рекламу и рассылки в ТГ от сторонних лиц.
Так же это демонстрация того, как можно использовать легитимную вещь во вред, это наставление разработчикам о том,
что нужно думать дважды перед написанием чего либо нового, задатся вопросом: "Как это может быть использованно во вред?"
Благодарю всех за внимание! Я надеюсь, я научил вас чему то новому.
ДИСКЛЕЙМЕР
Автор данной статьи крайне не одобряет нелегальных, вредных и нарушающих правила действий.
Все программное обеспечение, показанное в этой статье не должно использоватся во вредных и нелегальных действиях
таких как фишинг, массовые рассылки и прочее. Информация предоставленная здесь, служит как образовательный ресурс
и описание того, как атака может быть выполнена злоумышленниками
Содержание статьи:
1. Как появилась эта идея
2. Написание базовой программы-клиента с помощью Telethon
3. Регистрация и получение API доступа к клиенту
4. Парсим посты в Телеграмм каналах и получаем данные юзеров
5. Пишем сообщение кому либо в Телеграм с помощью Telethon
6. Тестируем программу
7. Заключение
1. Как появилась эта идея
Как вы знаете, недавно Телеграм был обновлен, и в нем появилась возможность оставлять комментарии к посту на канале.
Не все админы включили это, однако есть достаточно каналов где есть регулярный сильный актив и открыты комментарии.
Когда я смотрел новое обновление Телеграм, мне бросилось в глаза то, что я могу написать в личные сообщения каждому комментатору,
а бывало такое что комментарии были от 100 до 500 ответов. Меня натолкнуло на идею, что можно с помощью клиент-API Телеграма
спарсить комментарии и получить куча User-ID и никнеймов. С этой мыслью я пошел работать над программой, которая будет показана далее.
2. Написание базовой программы-клиента с помощью Telethon
Как известно, Телеграм очень дружественнен к разработчикам, я думаю что про ботов в данном мессенджере слышали все, а вот про то,
что можно написать и свой клиент -- особо никто не знает. С помощью данной библиотеки можно сделать очень многое, но сегодня мы говорим о спаме.
Наша программа будет работать следующим образом:
1. Подключение к телеграмм аккаунту
2. Парсинг каналов, в постах которых есть возможность оставлять комментарии
3. Получение Telegram User ID и никнейма
4. Перебор полученных данных и рассылка сообщений
Сначала установим библиотеку Telethon:
Код:
pip3 install telethon
Начнем. Любая программа, которая хочет работать с Telethon должна получить api_id и api_hash. С помощью них можно авторизироватся
в Телеграмме, процесс авторизации такой же как и всегда, вам присылают код и вам надо его ввести в программу. Еще вам следует придумать имя сессии,
под этим именем будет хранится Телеграмм сессия в виде файла в директории запуска программы. Получить доступ к клиенту можно так:
Python:
from telethon.sync import TelegramClient
api_id = "Your API ID"
api_hash = "Your API Hash"
session_name = "My Session"
client = TelegramClient(session_name, api_id, api_hash)
Python:
client.start()
Python:
client.disconnect()
Когда вы будете впервые создавать сессию, вам в терминале выдаст форму ввода, здесь надо будет ввести свой телефон, код пришедший на аккаунт,
в который вы хотите войти и опционально пароль.
Далее нам дают код как в обычной процедуре:
Вводим, если вы установили пароль то вводим и пароль:
Все, вы успешно создали сессию, если вас не уведомили об обратном.
Сессия сохраняется в файле в рабочей директории программы. Не перемещайте ее и не удаляйте, где ее создали там пусть и хранится.
Далее вы можете использовать ту же сессию в дальнейших вызовах программы, указав то же имя сессии при создании клиента что и в первый раз, когда вы ее создали.
Сама программа будет иметь вид библиотеки, из которой вы сможете вызывать функции в нужном вам порядке.
3. Регистрация и получение API доступа к клиенту
Для того что бы использовать библиотеку и ваш аккаунт Телеграмма через него, вам следует зарегистрировать на него API с помощью https://my.telegram.org/auth
Шаг 1. Заходим под нашим Телеграмм-аккаунтом
Шаг 2. Вводим код
Шаг 3. Переходим в раздел где написана наша информация для работы с API
Кликаем на API development tools
Вот и наши данные в поле api_id и api_hash
4. Парсим посты в Телеграмм каналах и получаем данные юзеров
Алгоритм следующий, с помощью функции iter_messages получить ID поста, а потом той же функцией получить комментари к нему с помощью аргумента reply_to.
Python:
for post in client.iter_messages(channel):
try:
for reply in client.iter_messages(channel, reply_to=post.id):
print(reply.sender.id, reply.sender.username, reply.text):
except Exception as e:
pass
reply.sender.id -- Telegram User ID
reply.sender.username -- Telegram Username
reply.text -- Текст комментария
5. Пишем сообщение кому либо в Телеграм с помощью Telethon
Для того что бы отправить сообщение кому либо в Телеграмм, нам нужен его никнейм или User ID.
Python:
client.send_message("Nickname", "Hello Nickname")
client.send_message(1234567890, "Hello User ID")
6. Тестируем программу
Итак, я добавил еще пару полезных функций в программу: запись в файл и загрузка юзеров из файла.
Python:
from telethon.sync import TelegramClient
api_id = "Your API ID"
api_hash = "Your API Hash"
class User():
def __init__(self, uid, username):
self.id = uid
self.username = username
def __str__(self):
return str((self.id, self.username))
class Program():
def __init__(self, api_id, api_hash, session_name):
self.client = TelegramClient(session_name, api_id, api_hash)
self.client.start()
self.users = []
self.captured = 0
def _is_captured(self, user):
for usr in self.users:
if user.id == usr.id:
return True
def capture_user(self, uid, username):
u = User(uid, username)
if not self._is_captured(u):
self.users.append(u)
self.captured += 1
return True
return False
def get_captured(self):
return self.captured, self.users
def dump_captured(self, filename):
counter = 1
with open(filename, "a") as f:
for user in self.users:
s = f"{counter}:{user.id}:{user.username}\n"
f.write(s)
counter += 1
def load_captured(self, filename):
with open(filename, "r") as f:
lines = f.readlines()
for line in lines:
data = line.split(":")
self.capture_user(data[1], data[2].replace("\n", ""))
def parse_channel(self, channel, maxx):
captured_l = 0
for post in self.client.iter_messages(channel):
try:
for reply in self.client.iter_messages(channel, reply_to=post.id):
if self.capture_user(int(reply.sender.id), str(reply.sender.username)):
captured_l += 1
if captured_l >= maxx:
return
except Exception as e:
pass
return
def spam_text(self, text, amount):
counter = 0
for user in self.users:
self.client.send_message(user.id, text)
print("Send!")
counter += 1
if counter >= amount:
break
Python:
p = Program(api_id, api_hash, "Session")
p.parse_channel("channel_nickname", 20)
p.dump_captured("filename.txt")
Если мы запустим это, то получим User ID и никнейм в удобном для дальнейшего хранения формате:
Что бы отослать сообщения нам нужно:
Python:
p = Program(api_id, api_hash, "Session")
p.parse_channel("channel_nickname", 20)
p.spam_text("Your Text", 20)
Где 20 в spam_text это количество юзеров которым будет отправленно данное сообщение.
Что бы загрузить юзеров из файла, и проделать тот же спам нам нужно:
Python:
p = Program(api_id, api_hash, "Session")
p.load_captured("filename.txt")
p.spam_text("Your Text", 20)
Добавить юзера вручную:
Python:
p.capture_user(1234567890, "nickname")
На основе представленного здесь метода, можно создавать более сложные и удобные в использовании программы для сбора данных юзеров и спама
7. Заключение
Хоть и метод довольно простой в исполнении, при правильном применении он может дать вам огромные возможности.
Вы сможете организовывать большие спам-рассылки практически без вложений, что поможет вам улучшить свое материальное состояние
Если вы владелец бизнеса, вам не нужно больше будет тратится на рекламу и рассылки в ТГ от сторонних лиц.
Так же это демонстрация того, как можно использовать легитимную вещь во вред, это наставление разработчикам о том,
что нужно думать дважды перед написанием чего либо нового, задатся вопросом: "Как это может быть использованно во вред?"
Благодарю всех за внимание! Я надеюсь, я научил вас чему то новому.