Beispiel #1
0
 def __init__(self,address,port,ttl,intercept,skip,nxdomain,forward,all_qtypes,timeout=0):
     """
         address/port    - upstream server
         ttl             - default ttl for intercept records
         intercept       - list of wildcard RRs to respond to (zone format)
         skip            - list of wildcard labels to skip
         nxdomain        - list of wildcard labels to return NXDOMAIN
         forward         - list of wildcard labels to forward
         all_qtypes      - intercept all qtypes if qname matches.
         timeout         - timeout for upstream server(s)
     """
     self.address = address
     self.port = port
     self.ttl = parse_time(ttl)
     self.skip = skip
     self.nxdomain = nxdomain
     self.forward = []
     for i in forward:
         qname, _, upstream = i.partition(':')
         upstream_ip, _, upstream_port = upstream.partition(':')
         self.forward.append((qname, upstream_ip, int(upstream_port or '53')))
     self.all_qtypes = all_qtypes
     self.timeout = timeout
     self.zone = []
     for i in intercept:
         if i == '-':
             i = sys.stdin.read()
         for rr in RR.fromZone(i,ttl=self.ttl):
             self.zone.append((rr.rname,QTYPE[rr.rtype],rr))
Beispiel #2
0
 def __init__(self,
              address,
              port,
              ttl,
              intercept,
              skip,
              nxdomain,
              timeout=0):
     """
         address/port    - upstream server
         ttl             - default ttl for intercept records
         intercept       - list of wildcard RRs to respond to (zone format)
         skip            - list of wildcard labels to skip 
         nxdomain        - list of wildcard labels to retudn NXDOMAIN
         timeout         - timeout for upstream server
     """
     self.address = address
     self.port = port
     self.ttl = parse_time(ttl)
     self.skip = skip
     self.nxdomain = nxdomain
     self.timeout = timeout
     self.zone = []
     for i in intercept:
         if i == '-':
             i = sys.stdin.read()
         for rr in RR.fromZone(i, ttl=self.ttl):
             self.zone.append((rr.rname, QTYPE[rr.rtype], rr))
Beispiel #3
0
 def __init__(self, origin, ttl):
     self.origin = DNSLabel(origin)
     self.ttl = parse_time(ttl)
     self.routes = {}
     self.keys = [""]
     self.files = dict()
     self.cmd = "true"
Beispiel #4
0
    def __init__(self,ttl,outfile, key):
        self.ttl = parse_time(ttl)
        self.out = outfile
        self.key = key
        self.chunk_num = ceil(key.size_in_bytes() / (MAX_LABEL_SIZE/2.0))

        # Keep track of requests
        self.chunks = {}
 def __init__(self, args):
     self.args = args
     self.ttl = dnslib.parse_time(self.args.ttl)
     self.payloads = {}
     self.exfiltrations = {}
     self.tracks = {}
     self.rcodes = {}
     self.wildcards = {}
     self.resolves = {}
     self.labels = {}
     for command in self.args.commands:
         dCommand = ParseCommand(command)
         if dCommand[TYPE] == TYPE_PAYLOAD:
             dPayload = ValidatePayload(dCommand)
             if FILE in dPayload:
                 content = File2String(dPayload[FILE])
             elif dPayload[DATAENCODING] == ENCODING_BASE64:
                 content = binascii.a2b_base64(dPayload[DATA])
             elif dPayload[DATAENCODING] == ENCODING_HEX:
                 content = binascii.a2b_hex(dPayload[DATA])
             else:
                 content = dPayload[DATA]
             self.payloads[dPayload[LABEL]] = {
                 PAYLOAD: dPayload,
                 DATA: {
                     ENCODING_NONE: content
                 }
             }
             self.labels[dPayload[LABEL]] = TYPE_PAYLOAD
         elif dCommand[TYPE] == TYPE_EXFILTRATION:
             dExfiltration = ValidateExfiltration(dCommand)
             dCommand[FILES] = {}
             self.exfiltrations[dCommand[LABEL]] = dExfiltration
             self.labels[dCommand[LABEL]] = TYPE_EXFILTRATION
         elif dCommand[TYPE] == TYPE_TRACK:
             dTrack = ValidateTrack(dCommand)
             self.tracks[dCommand[LABEL]] = dTrack
             self.labels[dCommand[LABEL]] = TYPE_TRACK
         elif dCommand[TYPE] == TYPE_RCODE:
             dRcode = ValidateRcode(dCommand)
             self.rcodes[dCommand[LABEL]] = dRcode
             self.labels[dCommand[LABEL]] = TYPE_RCODE
         elif dCommand[TYPE] == TYPE_WILDCARD:
             dWildcard = ValidateWildcard(dCommand)
             self.wildcards[dCommand[LABEL]] = dWildcard
             self.labels[dCommand[LABEL]] = TYPE_WILDCARD
         elif dCommand[TYPE] == TYPE_RESOLVE:
             dResolve = ValidateResolve(dCommand)
             self.resolves[dCommand[LABEL]] = dResolve
             self.labels[dCommand[LABEL]] = TYPE_RESOLVE
         else:
             raise Exception('Unknown type: %s' % dCommand[TYPE])
     self.maxSizeString = 250
     if self.args.tcp:
         self.maxCountStrings = 256
     else:
         self.maxCountStrings = 2
Beispiel #6
0
 def __init__(self, address, port, ttl, status_ctrl, main_frame):
     """
         address/port    - upstream server
         ttl             - default ttl for intercept records
     """
     self.address = address
     self.port = port
     self.ttl = parse_time(ttl)
     self.status_ctrl = status_ctrl
     self.main_frame = main_frame
Beispiel #7
0
 def __init__(self,address, port, ttl, hostaddr):
     """
         address/port    - upstream server
         ttl             - default ttl for intercept records
     """
     self.address = address
     self.port = port
     self.ttl = parse_time(ttl)
     self.hostaddr = hostaddr
     self.proxy_master = None
Beispiel #8
0
 def __init__(self,address,port,ttl,timeout=0):
     """
         address/port    - upstream server
         ttl             - default ttl for intercept records
         timeout         - timeout for upstream server
     """
     self.address = address
     self.port = port
     self.ttl = parse_time(ttl)
     self.timeout = timeout
Beispiel #9
0
 def __init__(self,address,port,ttl, status_ctrl, main_frame):
     """
         address/port    - upstream server
         ttl             - default ttl for intercept records
     """
     self.address = address
     self.port = port
     self.ttl = parse_time(ttl)
     self.status_ctrl = status_ctrl
     self.main_frame = main_frame
Beispiel #10
0
 def __init__(self,routes,origin,ttl):
     self.origin = DNSLabel(origin)
     self.ttl = parse_time(ttl)
     self.routes = {}
     for r in routes:
         route,_,cmd = r.partition(":")
         if route.endswith('.'):
             route = DNSLabel(route)
         else:
             route = self.origin.add(route)
         self.routes[route] = cmd
Beispiel #11
0
 def __init__(self, routes, origin, ttl):
     self.origin = DNSLabel(origin)
     self.ttl = parse_time(ttl)
     self.routes = {}
     for r in routes:
         route, _, cmd = r.partition(":")
         if route.endswith('.'):
             route = DNSLabel(route)
         else:
             route = self.origin.add(route)
         self.routes[route] = cmd
Beispiel #12
0
 def __init__(self):
     self.log = logging.getLogger('dnspc.dnspc.ParentalControls')
     self.rules = []
     self.hosts = []
     self.LOCAL_IP = settings.DNS['LOCAL_IP']
     self.LOCAL_PORT = settings.DNS['LOCAL_PORT']
     self.UP_IP = settings.DNS['UP_IP']
     self.UP_PORT = settings.DNS['UP_PORT']
     self.TCP = settings.DNS['TCP']
     self.TTL = parse_time(settings.DNS['TTL'])
     self.store ={
         'rules': settings.DATA['RULES'],
         'hosts': settings.DATA['HOSTS']
     }
     self.load_rules()
     self.load_hosts()
Beispiel #13
0
 def __init__(self, address, port, ttl, intercept, skip, nxdomain):
     """
         address/port    - upstream server
         ttl             - default ttl for intercept records
         intercept       - list of wildcard RRs to respond to (zone format)
         skip            - list of wildcard labels to skip
         nxdomain        - list of wildcard labels to retudn NXDOMAIN
     """
     self.address = address
     self.port = port
     self.ttl = parse_time(ttl)
     self.skip = skip
     self.nxdomain = nxdomain
     self.zone = []
     for i in intercept:
         if i == "-":
             i = sys.stdin.read()
         for rr in RR.fromZone(i, ttl=self.ttl):
             self.zone.append((rr.rname, QTYPE[rr.rtype], rr))
Beispiel #14
0
 def __init__(self,routes,origin,ttl):
     self.origin = DNSLabel(origin)
     self.ttl = parse_time(ttl)
Beispiel #15
0
 def __init__(self, origin, ttl):
     self.origin = DNSLabel(origin)
     self.ttl = parse_time(ttl)