示例#1
0
    def main(self):
        """
        Main entry point
        :return: 
        """
        parser = argparse.ArgumentParser(description='PGP dump analyser')

        parser.add_argument('-c',
                            dest='config',
                            default=None,
                            help='JSON config file')

        parser.add_argument('--data',
                            dest='data_dir',
                            default='.',
                            help='Data directory output')

        parser.add_argument('--debug',
                            dest='debug',
                            default=False,
                            action='store_const',
                            const=True,
                            help='Debugging logging')

        parser.add_argument('--bench',
                            dest='bench',
                            default=False,
                            action='store_const',
                            const=True,
                            help='Benchmark ')

        parser.add_argument('--test',
                            dest='test',
                            default=False,
                            action='store_const',
                            const=True,
                            help='Test ')

        parser.add_argument(
            '--classif',
            dest='classif',
            default=False,
            action='store_const',
            const=True,
            help='Generate classification JSON with all records')

        parser.add_argument('--json',
                            dest='json',
                            default=None,
                            help='Big json file from pgp dump')

        self.args = parser.parse_args()
        self.config_file = self.args.config

        self.fmagic = sec.Fprinter()

        if self.args.debug:
            coloredlogs.install(level=logging.DEBUG)

        self.work()
示例#2
0
    def main(self):
        """
        Main entry point
        :return: 
        """
        parser = argparse.ArgumentParser(
            description='Maven data exporter for classification')

        parser.add_argument('-c',
                            dest='config',
                            default=None,
                            help='JSON config file')

        parser.add_argument('--data',
                            dest='data_dir',
                            default='.',
                            help='Data directory output')

        parser.add_argument('--debug',
                            dest='debug',
                            default=False,
                            action='store_const',
                            const=True,
                            help='Debugging logging')

        parser.add_argument('--sec',
                            dest='sec',
                            default=False,
                            action='store_const',
                            const=True,
                            help='sec')

        parser.add_argument('--no-deps',
                            dest='no_deps',
                            default=False,
                            action='store_const',
                            const=True,
                            help='No dependency load')

        self.args = parser.parse_args()
        self.config_file = self.args.config
        self.sqlite_file = None

        if self.args.debug:
            coloredlogs.install(level=logging.DEBUG)

        if self.args.sec:
            import sec
            self.fmagic = sec.Fprinter()

        self.work_db()
示例#3
0
    def main(self):
        """
        Main entry point
        :return: 
        """
        parser = argparse.ArgumentParser(description='PGP classification')

        parser.add_argument('--data',
                            dest='data_dir',
                            default='.',
                            help='Data directory output')

        parser.add_argument('--debug',
                            dest='debug',
                            default=False,
                            action='store_const',
                            const=True,
                            help='Debugging logging')

        parser.add_argument('--sec',
                            dest='sec',
                            default=False,
                            action='store_const',
                            const=True,
                            help='Sec')

        parser.add_argument('--dump-keys',
                            dest='dump_keys',
                            default=False,
                            action='store_const',
                            const=True,
                            help='dump keys')

        parser.add_argument('files',
                            nargs=argparse.ZERO_OR_MORE,
                            default=[],
                            help='files / folders to process')

        self.args = parser.parse_args()

        if self.args.debug:
            coloredlogs.install(level=logging.DEBUG)

        if self.args.sec:
            import sec
            self.fmagic = sec.Fprinter()

        self.work()
示例#4
0
    def main(self):
        """
        Main entry point
        :return: 
        """
        parser = argparse.ArgumentParser(description='Maven PGP key processor')

        parser.add_argument('-c', dest='config', default=None,
                            help='JSON config file')

        parser.add_argument('-s', dest='sqlite', default=None,
                            help='SQlite DB')

        parser.add_argument('--debug', dest='debug', default=False, action='store_const', const=True,
                            help='Debugging logging')

        parser.add_argument('--sec', dest='sec', default=False, action='store_const', const=True,
                            help='sec')

        parser.add_argument('--sec-mvn', dest='sec_mvn', default=False, action='store_const', const=True,
                            help='sec')

        self.args = parser.parse_args()
        self.config_file = self.args.config
        self.sqlite_file = self.args.sqlite

        if self.args.sec_mvn:
            self.args.sec = True

        if self.args.sec:
            import sec
            self.fmagic = sec.Fprinter()

        if self.args.debug:
            coloredlogs.install(level=logging.DEBUG)

        self.work_db()
示例#5
0
    def main(self):
        """
        Main entry point
        :return: 
        """
        parser = argparse.ArgumentParser(
            description='Censys TLS dataset - generates intermediates CA DB')

        parser.add_argument('--data',
                            dest='data_dir',
                            default='.',
                            help='Data directory output')

        parser.add_argument('--debug',
                            dest='debug',
                            default=False,
                            action='store_const',
                            const=True,
                            help='Debugging logging')

        parser.add_argument('--sec',
                            dest='sec',
                            default=False,
                            action='store_const',
                            const=True,
                            help='Security scan')

        parser.add_argument(
            '--dry-run',
            dest='dry_run',
            default=False,
            action='store_const',
            const=True,
            help='Dry run - no file will be overwritten or deleted')

        parser.add_argument('--tlsdir',
                            dest='tlsdir',
                            nargs=argparse.ZERO_OR_MORE,
                            default=[],
                            help='Directory with TLS results to process')

        parser.add_argument('--alexa',
                            dest='alexa',
                            nargs=argparse.ZERO_OR_MORE,
                            default=[],
                            help='Directory with Alexa results to process')

        parser.add_argument(
            '--sonar',
            dest='sonar',
            nargs=argparse.ZERO_OR_MORE,
            default=[],
            help=
            'Sonar SSL dir with *_certs.uniq.json files, json per line, raw record for cert'
        )

        parser.add_argument(
            '--sonar-snap',
            dest='sonar_snap',
            nargs=argparse.ZERO_OR_MORE,
            default=[],
            help='Sonar SSL dir with snapshots - _merge_certs.uniq.json')

        self.args = parser.parse_args()

        if self.args.debug:
            coloredlogs.install(level=logging.DEBUG)

        if self.args.sec:
            import sec
            self.fmagic = sec.Fprinter()

        self.work()
示例#6
0
    def work(self):
        """
        Entry point after argument processing.
        :return: 
        """
        if self.args.sec:
            import sec
            self.fmagic = sec.Fprinter()

        keys_data = []

        files = self.args.files
        for fname in files:
            if fname == '-':
                fh = sys.stdin
            else:
                fh = open(fname, 'r')

            with fh:
                key = fh.read()
                pgp_key_data = AsciiData(key)
                packets = list(pgp_key_data.packets())
                print('File: %s' % fname)
                print('Packets: %s' % len(packets))
                print('-' * 80)

                identities = []
                pubkeys = []
                for idx, packet in enumerate(packets):
                    if isinstance(packet,
                                  (PublicKeyPacket, PublicSubkeyPacket)):
                        pubkeys.append(packet)
                    elif isinstance(packet, UserIDPacket):
                        identities.append(packet)

                print('Identities: ')
                for packet in identities:
                    print('User: %s' % packet.user)
                    print('User name: %s' % packet.user_name)
                    print('User email: %s' % packet.user_email)
                    print('-' * 80)

                print('Publickeys: ')
                for packet in pubkeys:
                    print('Is subkey: %s' %
                          isinstance(packet, PublicSubkeyPacket))
                    print('Algorithm: %s' % packet.pub_algorithm)
                    print('Pub key version: %s' % packet.pubkey_version)
                    print('Fingerprint: %s' % packet.fingerprint)
                    print('key_id: %s' % packet.key_id)
                    print('creation_time: %s' % packet.creation_time)
                    print('expiration_time: %s' % packet.expiration_time)
                    print('raw_days_valid: %s' % packet.raw_days_valid)
                    print('pub_algorithm_type: %s' % packet.pub_algorithm_type)
                    print('modulus: %s' % self.hex_if_num(packet.modulus))
                    print('modulus_bitlen: %s' % packet.modulus_bitlen)
                    print('exponent: %s' % self.hex_if_num(packet.exponent))
                    print('prime: %s' % self.hex_if_num(packet.prime))
                    print('group_order: %s' %
                          self.hex_if_num(packet.group_order))
                    print('group_gen: %s' % self.hex_if_num(packet.group_gen))
                    print('key_value: %s' % packet.key_value)
                    print('-' * 80)

                    if packet.modulus is not None:
                        keys_data.append((
                            packet.modulus_bitlen,
                            packet.modulus,
                        ))

                    if self.args.sec and packet.modulus is not None:
                        n = '%x' % packet.modulus
                        x = self.fmagic.magic16([n])
                        self.tested += 1
                        if len(x) > 0:
                            self.found += 1
                            print('---- !!! ----')

        logger.info('Records tested: %s, found: %s' %
                    (self.tested, self.found))
        if self.args.dump_keys:
            for x in keys_data:
                print('%s;%s' % (x[0], self.hex_if_num(x[1])))
示例#7
0
    def main(self):
        """
        Main entry point
        :return: 
        """
        parser = argparse.ArgumentParser(
            description='Censys TLS dataset processor')

        parser.add_argument('--data',
                            dest='data_dir',
                            default='.',
                            help='Data directory output')

        parser.add_argument('--scratch',
                            dest='scratch_dir',
                            default='.',
                            help='Scratch directory output')

        parser.add_argument('-t',
                            dest='threads',
                            default=1,
                            help='Number of download threads to use')

        parser.add_argument('--debug',
                            dest='debug',
                            default=False,
                            action='store_const',
                            const=True,
                            help='Debugging logging')

        parser.add_argument(
            '--dry-run',
            dest='dry_run',
            default=False,
            action='store_const',
            const=True,
            help='Dry run - no file will be overwritten or deleted')

        parser.add_argument('--continue',
                            dest='continue1',
                            default=False,
                            action='store_const',
                            const=True,
                            help='Continue from the previous attempt')

        parser.add_argument('--continue-frac',
                            dest='continue_frac',
                            default=None,
                            type=float,
                            help='Fraction of the file to start reading from')

        parser.add_argument('--link-file',
                            dest='link_file',
                            nargs=argparse.ZERO_OR_MORE,
                            default=[],
                            help='JSON file generated by censys_links.py')

        parser.add_argument('--link-idx',
                            dest='link_idx',
                            nargs=argparse.ZERO_OR_MORE,
                            default=[],
                            help='Link indices to process')

        parser.add_argument('--file',
                            dest='file',
                            nargs=argparse.ZERO_OR_MORE,
                            default=[],
                            help='LZ4 files to process')

        parser.add_argument('--url',
                            dest='url',
                            nargs=argparse.ZERO_OR_MORE,
                            default=[],
                            help='LZ4 URL to process')

        parser.add_argument('--mpi',
                            dest='mpi',
                            default=False,
                            action='store_const',
                            const=True,
                            help='Use MPI distribution')

        parser.add_argument('--sec',
                            dest='sec',
                            default=False,
                            action='store_const',
                            const=True,
                            help='Use sec')

        self.args = parser.parse_args()

        if self.args.debug:
            coloredlogs.install(level=logging.DEBUG)

        if self.args.sec:
            import sec
            self.fmagic = sec.Fprinter()

        self.work()