private void OutputAction(pcap_data data) { var inst = new Ip_list_data { Source_ip = data.source_ip, Source_port = data.source_port, Dest_ip = data.dest_ip, Dest_port = data.dest_port, Time = data.time, Conut = 1, Ttl = data.ttl, Type = (data.type == 6) ? "Tcp" : "Udp" }; string destip = lpv4 == data.source_ip ? data.dest_ip : data.source_ip; ushort destport = lpv4 == data.source_ip ? data.dest_port : data.source_port; string code = Toarray(data.p_data, data.len); string path = Directory.GetCurrentDirectory() + "\\cache"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } File.AppendAllText(path + "\\" + destip + "." + destport.ToString() + ".txt", data.time + " len " + data.len.ToString() + " " + (data.source_ip == lpv4 ? "Send" : "Recv") + " " + data.source_ip + ":" + data.source_port.ToString() + "-->" + data.dest_ip + ":" + data.dest_port.ToString() + "\r" + code + "\n"); ip_list_name.Dispatcher.Invoke(() => { try { foreach (var item in ip_list) { if (item.Source_ip == destip || item.Dest_ip == destip) { if (item.Source_port == destport || item.Dest_port == destport) { item.Conut++; item.Time = inst.Time; item.Ttl = inst.Ttl; return; } } } ip_list.Add(inst); } catch (Exception e) { throw e; } }); }
private void msegloop(object param) { clrtool.mytool tool = (clrtool.mytool)param; while (thread_br) { pcap_data data = tool.read(); if (data.res == 0) { continue; } if (data.res == -1) { return; } OutputAction(data); // Console.WriteLine(data.time + " " + data.len.ToString() +" "+data.source_ip + ":" + data.source_port.ToString()+"-->"+data.dest_ip+":"+data.dest_port.ToString()); } }