#!/usr/bin/python # -*- coding: utf-8 -*- import sys from josef_lib import * import leveldb import argparse import json from josef_leveldb import * from datetime import datetime as dt parser = argparse.ArgumentParser(description="") parser.add_argument('--domain', default=None, help="RTFM") parser.add_argument('--log', default=None, help="RTFM") parser.add_argument('--exclude-expired', action='store_true', help="RTFM") args = parser.parse_args() monitored_domains = [ "google.com", "preishelden.de", "liu.se", "nordu.net", "symantec.com", ] if args.domain: db = db_open() raw = db_lookup_domain(db, args.domain) else: print "No domain selected!" sys.exit() cur_time = dt.now() count_valid = 0 count_all = 0 for item in raw: # print item + '}', type(item) try: entry = json.loads((item + '}').replace("'", '"')) except: print (item + '}').replace("'", '"') # print entry, type(entry) success = True not_after_time = dt.strptime(entry["not_after"], "%b %d %H:%M:%S %Y GMT") not_before_time = dt.strptime(entry["not_before"], "%b %d %H:%M:%S %Y GMT") if args.log: if args.log in entry["log"]: pass else: success = False if cur_time > not_after_time: expired = True elif cur_time < not_before_time: expired = True else: expired = False # Exclude expired if args.exclude_expired and expired: success = False # Set count matches if success: count_all += 1 if not expired: count_valid += 1 # Print matching if success: s = entry["subject"].split("CN=")[1] + \ " certified by " + entry["issuer"].split("CN=")[1] + \ " (" + entry["log"] + ") " if expired: print "(NOT VALID) " + s else: print "(VALID) " + s print str(count_all) + " matches found." # print res # print "Found " + str(len(res)) + " results" # print db.Get("wush.net") # print db.Get("wush.net") # f = open("output/cert_data.json") # max_count = 1 # for line in f: # # print max_count # # try: # tmp = json.loads(line) # # print tmp # # d = tmp["subject"].split("CN=")[1] # db_add_cert(tmp) # # print d # max_count -= 1 # if max_count == 0: # break