def getTrace(visit_file, direction=None): with open(visit_file, 'r') as f: sample = json.load(f) Config.hostname.update(sample[u'ip_to_name']) webId, traceId = sample['visit_log'][u'current_url'], sample['visit_log']['visit_id'] trace = Trace(traceId, webId) for tcp_conn in sample['tcp_connections']: connection_id = tcp_conn['connection_id'] TCP = TCPConnection(connection_id, webId, hostip=sample['visit_log'][u'host_ip']) for pkt in tcp_conn['packets']: pkt_time, pkt_size = pkt[0], abs(pkt[1]) if pkt_size == 0: continue pkt_dir = Packet.Outgoing if pkt[1] < 0 else Packet.Incoming if direction is None or direction == pkt_dir: TCP.addPacket(Packet(pkt_time, pkt_size, pkt_dir)) TCP._packets.sort(key=lambda x: x.getTime()) trace.addTcpCon(TCP) return trace