def test_extractPgpKeysFromText_should_return_list_of_pgp_keys_from_string( self): key1 = "-----BEGIN PGP PUBLIC KEY BLOCK-----Version: software v1.2.3\nComment: sample comment\n\nmQINBFRUAGoBEACuk6ze2V2pZtScf1Ul25N2CX19AeL7sVYwnyrTYuWdG2FmJx4x\nDLTLVUazp2AEm/JhskulL/7VCZPyg7ynf+o20Tu9/6zUD7p0rnQA2k3Dz+7dKHHh\neEsIl5EZyFy1XodhUnEIjel2nGe6f1OO7Dr3UIEQw5JnkZyqMcbLCu9sM2twFyfa\na8JNghfjltLJs3/UjJ8ZnGGByMmWxrWQUItMpQjGr99nZf4L+IPxy2i8O8WQewB5\nfvfidBGruUYC+mTw7CusaCOQbBuZBiYduFgH8hRW97KLmHn0xzB1FV++KI7syo8q\nXGo8Un24WP40IT78XjKO\n=nUop\n-----END PGP PUBLIC KEY BLOCK-----" key2 = "-----BEGIN PGP PRIVATE KEY BLOCK-----Version: software v1.2.3\nComment: sample comment\n\nmQINBFRUAGoBEACuk6ze2V2pZtScf1Ul25N2CX19AeL7sVYwnyrTYuWdG2FmJx4x\nDLTLVUazp2AEm/JhskulL/7VCZPyg7ynf+o20Tu9/6zUD7p0rnQA2k3Dz+7dKHHh\neEsIl5EZyFy1XodhUnEIjel2nGe6f1OO7Dr3UIEQw5JnkZyqMcbLCu9sM2twFyfa\na8JNghfjltLJs3/UjJ8ZnGGByMmWxrWQUItMpQjGr99nZf4L+IPxy2i8O8WQewB5\nfvfidBGruUYC+mTw7CusaCOQbBuZBiYduFgH8hRW97KLmHn0xzB1FV++KI7syo8q\nXGo8Un24WP40IT78XjKO\n=nUop\n-----END PGP PRIVATE KEY BLOCK-----" keys = SpiderFootHelpers.extractPgpKeysFromText( f"<html><body><p>sample{key1}sample</p><p>sample{key2}sample</p></body></html>" ) self.assertIsInstance(keys, list) self.assertIn(key1, keys) self.assertIn(key2, keys) self.assertEqual(len(keys), 2)
def handleEvent(self, event): eventName = event.eventType eventData = event.data if self.errorState: return if eventData in self.results: return self.results[eventData] = True self.debug(f"Received event, {eventName}, from {event.module}") if not self.opts['keyserver_search1'] and not self.opts[ 'keyserver_search2']: self.error( f"You enabled {self.__class__.__name__} but did not set key server URLs" ) self.errorState = True return # Get e-mail addresses on this domain if eventName in ["DOMAIN_NAME", "INTERNET_NAME"]: res = self.queryDomain(self.opts['keyserver_search1'], eventData) if not res: res = self.queryDomain(self.opts['keyserver_search2'], eventData) if not res: return emails = SpiderFootHelpers.extractEmailsFromText(res['content']) self.info(f"Found {len(emails)} email addresses") for email in emails: if email.split("@")[0] in self.opts['_genericusers'].split( ","): evttype = "EMAILADDR_GENERIC" else: evttype = "EMAILADDR" mailDom = email.lower().split('@')[1] if not self.getTarget().matches(mailDom): evttype = "AFFILIATE_EMAILADDR" self.debug(f"Found e-mail address: {email}") evt = SpiderFootEvent(evttype, email, self.__name__, event) self.notifyListeners(evt) if eventName == "EMAILADDR" and self.opts['retrieve_keys']: res = self.queryEmail(self.opts['keyserver_fetch1'], eventData) if not res: res = self.queryEmail(self.opts['keyserver_fetch2'], eventData) if not res: return keys = SpiderFootHelpers.extractPgpKeysFromText(res['content']) self.info(f"Found {len(keys)} public PGP keys") for key in keys: self.debug(f"Found public key: {key}") evt = SpiderFootEvent("PGP_KEY", key, self.__name__, event) self.notifyListeners(evt)