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)
Пример #2
0
    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)