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()
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()
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()
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()
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()
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])))
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()