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())()
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())()
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 test_normalize(self): self.assertEquals( Atomizer.normalize_token( 'downloaded' ), 'download' ) self.assertEquals( Atomizer.normalize_multitoken( 'Downloaded Files' ), 'download file' )
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
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'] )
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'] )
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))