Telegram se ha convertido en una de las mejores herramientas de mensajería instantánea, siendo actualmente la principal contraparte de WhatsApp gracias a sus avanzadas capacidades de privacidad y anonimato. Aún al día de hoy, existen muchas funciones en la plataforma que podrían resultar desconocidas para los usuarios más inexpertos, aunque sin duda son bastante útiles en diversos casos.
En esta ocasión, los especialistas en concientización de ciberseguridad del Instituto Internacional de Seguridad Cibernética (IICS) le mostrarán cómo crear un bot de Telegram para recibir correo electrónico temporal. Antes de continuar, le recordamos que este artículo fue elaborado con fines exclusivamente informativos, por lo que IICS no es responsable del mal uso que pueda darse a la información aquí contenida.
Para comenzar, debe ingresar al sitio web de REPLIT y registrarse.
Registro:
A continuación, deberá crear un nuevo proyecto de Python, mencionan los especialistas en concientización de ciberseguridad.
Veremos la siguiente imagen:
Deberá escribir el siguiente código en el archivo main.py:
import logging
from aiogram import Bot, Dispatcher, executor, types
from config import API_TOKEN
import keyboard as kb
from onesec_api import Mailbox
import json
import asyncio
logging.basicConfig(level=logging.INFO)
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
@dp.message_handler(content_types=['text'])
async def texthandler(m: types.Message):
if m.text != ' Получить почту':
await m.answer(f'Приветствую тебя, {m.from_user.mention}\nЭтот бот создан для быстрого получения временной почты.\nНажми на кнопу ниже ', reply_markup=kb.menu)
elif m.text == ' Получить почту':
ma = Mailbox('')
email = f'{ma._mailbox_}@1secmail.com'
await m.answer(f' Вот твоя почта: {email}\nОтправляй письмо.\nПочта проверяется автоматически, каждые 5 секунд, если придет новое письмо, мы вас об этом оповестим!\nНа 1 почту можно получить только - 1 письмо.')
while True:
mb = ma.filtred_mail()
if isinstance(mb, list):
mf = ma.mailjobs('read',mb[0])
js = mf.json()
fromm = js['from']
theme = js['subject']
mes = js['textBody']
await m.answer(f' Новое письмо:\n<b>От</b>: {fromm}\n<b>Тема</b>: {theme}\n<b>Сообщение</b>: {mes}', reply_markup=kb.menu, parse_mode='HTML')
break
else:
pass
await asyncio.sleep(5)
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True) # Запуск
Cree un archivo https://onesec_api.py e ingrese el código allí:
import requests
import json
import random
import string
import lxml.html as HT
#comment
class Mailbox:
"""Main operation with 1secmail.com api:
'get' - get all mail in box
'read' - read message in box (need message id)
'del' - clear mailbox, all messages be removed!
"""
def __init__(self,mail_name):
"""Constructor"""
self.API = 'https://www.1secmail.com/api/v1/'
self.s = requests.Session()
if mail_name == '':
self._mailbox_ = self.rand_pass()
#print(f'use mailbox: {self._mailbox_}@1secmail.com')
else:
self._mailbox_ = mail_name #change to your own test mailbox
def rand_pass(password=False):
"""Generate a random password or random mail"""
if password:
special = string.punctuation
else:
special = "abcdefghijklmnopqrstuvwxyz1234567890"
randomSource = string.ascii_letters + string.digits
password = ""
for i in range(9):
password += random.choice(randomSource)
return password
def mailjobs (self, action, id=None):
"""Main operation with 1secmail.com api:
'get' - get all mail in box
'read' - read message in box (need message id)
'del' - clear mailbox, all messages be removed!
"""
mail_list = 'error'
act_ilst = ['getMessages','deleteMailbox','readMessage']
act_dict = {
'get':act_ilst[0],
'del':act_ilst[1],
'read':act_ilst[2]
}
if action in ['read', 'readMessage'] and id is None:
print ('Need message id for reading')
return mail_list
if action in act_dict:
action = act_dict[action]
elif action in act_ilst:
pass
else:
print (f'Wrong action: {action}')
return mail_list
if action == 'readMessage':
mail_list = self.s.get(self.API,
params={'action':action,
'login':self._mailbox_,
'domain':'1secmail.com',
'id':id
}
)
if action == 'deleteMailbox':
mail_list = self.s.post('https://www.1secmail.com/mailbox/',
data={'action':action,
'login':self._mailbox_,
'domain':'1secmail.com'
}
)
if action == 'getMessages':
mail_list = self.s.get(self.API,
params={'action':action,
'login':self._mailbox_,
'domain':'1secmail.com'
}
)
return mail_list
def filtred_mail (self, domain=True, subject=True, id=True, date=True):
"""Simpled mail filter, all params optional"""
ma = self.mailjobs('get')
out_mail = []
if ma != 'error':
#print(ma.url)
list_ma = ma.json()
for i in list_ma:
if id != True:
id_find = i['id'].find(id) != -1
else:
id_find = id
if date != True:
dat_find = i['date'].find(date) != -1
else:
dat_find = date
if domain != True:
dom_find = i['from'].lower().find(domain.lower()) != -1
else:
dom_find = domain
if subject != True:
sub_find = i['subject'].lower().find(subject.lower()) != -1
else:
sub_find = subject
if sub_find and dom_find and id_find and dat_find:
out_mail.append(i['id'])
if len(out_mail) >0:
return out_mail
else:
return 'not found'
else:
return ma
def clear_box(self, domain, subject, clear=True):
"""Clear mail box if we find some message"""
ma = self.filtred_mail(domain, subject)
if isinstance(ma, list):
ma = self.mailjobs('read', ma[0])
if ma != 'error':
if clear: print('clear mailbox')
if clear: x = self.mailjobs ('del')
return ma
else:
return ma
else:
return ma
def get_link(self, domain, subject, x_path='//a', clear=True):
"""Find link inside html mail body by x-path and return link"""
ma = self.clear_box(domain, subject, clear)
if ma != 'error' and ma != 'not found':
mail_body = ma.json()['body']
else:
return ma
#try:
web_body = HT.fromstring(mail_body)
#except Type_of_Exception:
# print("except")
child = web_body.xpath(x_path)[0]
return child.attrib['href']
if __name__ == "__main__":
"""Easy test"""
#random box
ma = Mailbox('')
#user box
ma = Mailbox('api.test')
mb = ma.filtred_mail()
print('all mail id: ', mb)
if isinstance(mb, list):
print(mb[0])
mf = ma.mailjobs('read',mb[0])
print('first mail: ',mf.json()['body'])
else:
mf = 'not found'
print ("if email from gmail.com contain 'Restore password' subject - return restore link and clear mailbox")
rl = ma.get_link('gmail.com', 'Restore password')
print ('return link:', rl)
A continuación, cree un archivo https://keyboard.py e ingrese el siguiente código:
from aiogram import types
menu = types.ReplyKeyboardMarkup(resize_keyboard=True)
menu.add(
types.KeyboardButton(' Получить почту')
)
A continuación sigue la parte difícil, mencionan los expertos en concientización de ciberseguridad. Deberá crear un archivo https://config.py e ingresar su token del bot de Telegram en API_TOKEN para el espacio 123.
API_TOKEN = '123' # token number
Una vez cumplidos todos estos pasos, presione el botón Ejecutar:
Vamos a comprobar que la herramienta se ha instalado correctamente:
Todo está listo. Finalmente, los expertos en concientización de ciberseguridad recomiendan usar este bot solamente con fines legítimos, como evitar que su bandeja de entrada email se infeste de mensajes molestos.
Para conocer más sobre riesgos de seguridad informática, malware, vulnerabilidades y tecnologías de la información, no dude en ingresar al sitio web del Instituto Internacional de Seguridad Cibernética (IICS).
Trabajando como arquitecto de soluciones de ciberseguridad, Alisa se enfoca en la protección de datos y la seguridad de datos empresariales. Antes de unirse a nosotros, ocupó varios puestos de investigador de ciberseguridad dentro de una variedad de empresas de seguridad cibernética. También tiene experiencia en diferentes industrias como finanzas, salud médica y reconocimiento facial.
Envía tips de noticias a info@noticiasseguridad.com o www.instagram.com/iicsorg/
También puedes encontrarnos en Telegram www.t.me/noticiasciberseguridad