Exemple #1
0
def cache_messages(streams):
    """
    Reconstructs messages from TCP streams and caches them in Redis.
    """
    redis_pipe = REDIS_CONN.pipeline()
    count = 0
    serializer = Serializer()
    stream = Stream()
    for stream_id, stream.segments in streams.iteritems():
        data = stream.data()
        _data = data.next()
        while True:
            try:
                (msg, _data) = serializer.deserialize_msg(_data)
            except (HeaderTooShortError, PayloadTooShortError) as err:
                logging.debug("{}: {}".format(stream_id, err))
                try:
                    _data += data.next()
                except StopIteration:
                    break
            except ProtocolError as err:
                logging.debug("{}: {}".format(stream_id, err))
                try:
                    _data = data.next()
                except StopIteration:
                    break
            else:
                node = (stream_id[0], stream_id[1])
                count += cache_message(redis_pipe, node, stream.timestamp, msg)
    redis_pipe.execute()
    return count
Exemple #2
0
def get_invs(filepath):
    """
    Extracts inv messages from the specified pcap file.
    """
    serializer = Serializer()
    pcap_file = open(filepath)
    pcap_reader = dpkt.pcap.Reader(pcap_file)
    for timestamp, buf in pcap_reader:
        frame = dpkt.ethernet.Ethernet(buf)
        ip_packet = frame.data
        if isinstance(ip_packet.data, dpkt.tcp.TCP):
            tcp_packet = ip_packet.data
            payload = tcp_packet.data
            if len(payload) > 0:
                try:
                    (msg, _) = serializer.deserialize_msg(payload)
                except ProtocolError as err:
                    pass
                else:
                    if msg['command'] == "inv":
                        if ip_packet.v == 6:
                            address = socket.inet_ntop(socket.AF_INET6,
                                                       ip_packet.src)
                        else:
                            address = socket.inet_ntop(socket.AF_INET,
                                                       ip_packet.src)
                        node = (address, tcp_packet.sport)
                        save_invs(timestamp, node, msg['inventory'])
    pcap_file.close()
Exemple #3
0
 def __init__(self, pipe, token='', treefile='', serializer=None, debug=0):
     super(ClientWorker, self).__init__('Client')
     self.secure = pipe
     self.s = serializer or Serializer()
     self.token = token
     self.treefile = treefile
     self._debug = debug
Exemple #4
0
 def __init__(self, filepath):
     self.filepath = filepath
     self.redis_pipe = REDIS_CONN.pipeline()
     self.serializer = Serializer()
     self.streams = defaultdict(PriorityQueue)
     self.stream = Stream()
     self.count = 0
     self.keys = set()  # ping:ADDRESS-PORT:NONCE
Exemple #5
0
 def __init__(self, filepath):
     self.filepath = filepath
     self.redis_pipe = REDIS_CONN.pipeline()
     self.serializer = Serializer(magic_number=CONF['magic_number'])
     self.streams = defaultdict(PriorityQueue)
     self.stream = Stream()
     self.count = 0
     self.ping_keys = set()  # ping:ADDRESS-PORT:NONCE
     self.invs = defaultdict(list)
Exemple #6
0
    def __init__(self, controller, filemanager, serializer=None):
        super(ServerLogics, self).__init__('Backend')
        self.s = serializer or Serializer()
        self.filelogics = filemanager
        self.controller = controller

        self.resources = {
            'users': self.users,
            'files': self.files,
        }
 def __init__(self, filepath):
     self.filepath = filepath
     self.serializer = Serializer(magic_number=unhexlify('daa5bef9'))
     self.streams = defaultdict(PriorityQueue)
     self.stream = Stream()