Exemplo n.º 1
0
    def running(self):
        if not self.atomizer and not ctx.options.no_spray:
            self.atomizer = Atomizer(loop=self.loop,
                                     target=ctx.options.target,
                                     threads=ctx.options.threads)

            getattr(self.atomizer, ctx.options.sprayer.lower())()
Exemplo n.º 2
0
    def running(self):
        if not self.atomizer and not ctx.options.no_spray:
            self.atomizer = Atomizer(loop=self.loop,
                                     domain=ctx.options.domain,
                                     password=ctx.options.password,
                                     threads=ctx.options.threads)

            getattr(self.atomizer, ctx.options.sprayer.lower())()
Exemplo n.º 3
0
    def running(self):
        if not self.atomizer:
            self.atomizer = Atomizer(
                loop=self.loop,
                domain=ctx.options.domain,
                password=ctx.options.password,
            )

            getattr(self.atomizer, ctx.options.sprayer.lower())()
Exemplo n.º 4
0
    def test_normalize(self):
        self.assertEquals(
            Atomizer.normalize_token(
                'downloaded'
            ), 'download'
        )

        self.assertEquals(
            Atomizer.normalize_multitoken(
                'Downloaded Files'
            ), 'download file'
        )
Exemplo n.º 5
0
 def __init__(self, atomizer_pin, dht_pin, display_settings):
     GPIO.setmode(GPIO.BCM)
     self.cleanup()
     self.atomizer = Atomizer(pin=atomizer_pin)
     self.dht = DHT_sensor(pin=dht_pin)
     self.display = Display(
         **display_settings
     )  # not used bc RPI cannot provide enough power for all
Exemplo n.º 6
0
    def test_atomize_with_boosting(self):
        self.assertEquals(
            Atomizer(ngram_range=(1, 1),
                     boost_terms={'book': 3}).atomize(
                'book, door, window'
            ),
            ['book', 'book', 'book', 'door', 'window']
        )

        self.assertEquals(
            Atomizer(ngram_range=(1, 2),
                     stop_words=['div'],
                     boost_terms={'black stone': 3}).atomize(
                'black stone div red brick'
            ),
            ['black', 'stone', 'red', 'brick',
             'black stone', 'black stone', 'black stone',
             'red brick']
        )
Exemplo n.º 7
0
    def test_atomize(self):
        self.assertEquals(
            Atomizer().atomize(
                'My dear friend'
            ),
            ['dear', 'friend']
        )

        self.assertEquals(
            Atomizer(ngram_range=(1, 2)).atomize(
                'My dear friend'
            ),
            ['dear', 'friend', 'dear friend']
        )

        self.assertEquals(
            Atomizer(ngram_range=(1, 2)).atomize(
                'red cubes'
            ),
            ['red', 'cube', 'red cube']
        )

        self.assertEquals(
            Atomizer(ngram_range=(1, 2)).atomize(
                'white white white box'
            ),
            ['white', 'white', 'white', 'box', 'white box']
        )

        self.assertEquals(
            Atomizer(ngram_range=(1, 2),
                     stop_words=['stop']).atomize(
                'Red stop Green stop stop stop Blue stop Yellow Orange'
            ),
            ['red', 'green', 'blue', 'yellow', 'orange', 'yellow orange']
        )
Exemplo n.º 8
0
class Vaporizer:
    def __init__(self):

        self.emails = set()
        self.atomizer = None

        self.loop = asyncio.get_event_loop()
        for sig in (signal.SIGINT, signal.SIGTERM):
            self.loop.add_signal_handler(sig, self.shutdown)

    def load(self, loader):
        loader.add_option(name="sprayer",
                          typespec=str,
                          default='',
                          help="sprayer to use")

        loader.add_option(name="domain",
                          typespec=str,
                          default='',
                          help="target domain")

        loader.add_option(name="password",
                          typespec=str,
                          default='',
                          help="password to spray")

        loader.add_option(
            name="email_format",
            typespec=str,
            default='{first}.{last}',
            help="email format",
        )

        loader.add_option(
            name="threads",
            typespec=int,
            default=3,
            help="number of concurrent threads",
        )

    def running(self):
        if not self.atomizer:
            self.atomizer = Atomizer(
                loop=self.loop,
                domain=ctx.options.domain,
                password=ctx.options.password,
            )

            getattr(self.atomizer, ctx.options.sprayer.lower())()

    def response(self, flow: http.HTTPFlow) -> None:
        try:
            emails = []
            if "html" in flow.response.headers["Content-Type"] and len(
                    flow.response.content):
                if "google.com" in flow.request.host:
                    names = google(flow.response.content)
                elif "bing.com" in flow.request.host:
                    names = bing(flow.response.content)
                else:
                    return

                for name in names:
                    first, last = name
                    email = f"{ctx.options.email_format.format(first=first, last=last, f=first[:1], l=last[:1])}@{ctx.options.domain}".lower(
                    )
                    emails.append(email)

                ctx.log.info(print_good(f"Generated {len(emails)} email(s)"))

                asyncio.ensure_future(
                    self.atomizer.atomize([
                        email for email in emails if email not in self.emails
                    ]))
                self.emails |= set(emails)
        except KeyError:
            pass

    def shutdown(self):
        with open("emails.txt", "a+") as email_file:
            for email in self.emails:
                email_file.write(email + '\n')

        ctx.log.info(
            print_good(f"Dumped {len(self.emails)} email(s) to emails.txt"))
        self.atomizer.shutdown()
        self.loop.stop()
        pending = asyncio.Task.all_tasks()
        self.loop.run_until_complete(asyncio.gather(*pending))