def get_sources_data(self): """ Generates the json for the treemap by protoco, then source IP """ network = utils.get_ip_range(self.get_info()[0]) c1 = list() q1 = "SELECT src, count(*) \ FROM packets \ GROUP BY src" for level1 in self.conn.execute(q1): if not level1[0] in network: continue c2 = list() q2 = "SELECT dst, count(*) \ FROM packets \ WHERE src = ? \ GROUP BY dst" for level2 in self.conn.execute(q2, (level1[0],)): child = { "name":level2[0], "value":level2[1] } c2.append(child) child = { "name":level1[0], "value":level1[1], "children":c2 } c1.append(child) data = { "name": "root", "value":len(c1), "children":c1 } return json.dumps(data, indent=2)
def get_sources_data(self): """ Generates the json for the treemap by protoco, then source IP """ network = utils.get_ip_range(self.get_info()[0]) c1 = list() q1 = "SELECT src, count(*) \ FROM packets \ GROUP BY src" for level1 in self.conn.execute(q1): if not level1[0] in network: continue c2 = list() q2 = "SELECT dst, count(*) \ FROM packets \ WHERE src = ? \ GROUP BY dst" for level2 in self.conn.execute(q2, (level1[0], )): child = {"name": level2[0], "value": level2[1]} c2.append(child) child = {"name": level1[0], "value": level1[1], "children": c2} c1.append(child) data = {"name": "root", "value": len(c1), "children": c1} return json.dumps(data, indent=2)
def get_destination_data(self): network = utils.get_ip_range(self.get_info()[0]) c1 = list() q1 = "SELECT src, count(*) \ FROM packets \ GROUP BY src" for level1 in self.conn.execute(q1): if not level1[0] in network: continue c2 = list() q2 = "SELECT proto, count(*) \ FROM packets \ WHERE src = ? \ GROUP BY proto" for level2 in self.conn.execute(q2, (level1[0], )): c3 = list() q3 = "SELECT dst, count(*) \ FROM packets \ WHERE src = ? AND proto = ? \ GROUP BY dst" for level3 in self.conn.execute(q3, ( level1[0], level2[0], )): child = {"name": level3[0], "size": level3[1]} c3.append(child) child = {"name": level2[0], "children": c3} c2.append(child) child = {"name": level1[0], "children": c2} c1.append(child) data = {"name": "root", "children": c1} return json.dumps(data, indent=2)
def get_destination_data(self): network = utils.get_ip_range(self.get_info()[0]) c1 = list() q1 = "SELECT src, count(*) \ FROM packets \ GROUP BY src" for level1 in self.conn.execute(q1): if not level1[0] in network: continue c2 = list() q2 = "SELECT proto, count(*) \ FROM packets \ WHERE src = ? \ GROUP BY proto" for level2 in self.conn.execute(q2, (level1[0],)): c3 = list() q3 = "SELECT dst, count(*) \ FROM packets \ WHERE src = ? AND proto = ? \ GROUP BY dst" for level3 in self.conn.execute(q3, (level1[0], level2[0],)): child = { "name":level3[0],"size":level3[1] } c3.append(child) child = { "name":level2[0], "children":c3 } c2.append(child) child = { "name":level1[0], "children":c2 } c1.append(child) data = { "name": "root", "children":c1 } return json.dumps(data, indent=2)
def generate_data_for_protocol_chart(self): """ Generates the data to display protocol counts by (local) source IP """ network = utils.get_ip_range(self.get_info()[0]) data = {} q = "SELECT src, proto, count(*) \ FROM packets \ WHERE src IN ( {seq} ) \ GROUP BY src, proto".format( seq=",".join(["?"]*len(network))) for row in self.conn.execute(q, network): src = row[0] proto = row[1] cnt = row[2] if src not in data: data[src] = list() data[src].append( {"proto":proto, "value":cnt} ) print json.dumps( data ) return json.dumps( data )
def generate_data_for_protocol_chart(self): """ Generates the data to display protocol counts by (local) source IP """ network = utils.get_ip_range(self.get_info()[0]) data = {} q = "SELECT src, proto, count(*) \ FROM packets \ WHERE src IN ( {seq} ) \ GROUP BY src, proto".format(seq=",".join(["?"] * len(network))) for row in self.conn.execute(q, network): src = row[0] proto = row[1] cnt = row[2] if src not in data: data[src] = list() data[src].append({"proto": proto, "value": cnt}) print json.dumps(data) return json.dumps(data)