Loading javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java +78 −14 Original line number Diff line number Diff line Loading @@ -117,7 +117,7 @@ public class ReadCaptureThread extends Thread implements Runnable{ //private List<Packet> packets; private FilterPackets filterpackets; private Map<Long, _fragmented_packet> _fragments = null; private Map<Long, _tcp_data> _tcpBodys = null; private class _fragmented_packet { Packet _packet; Loading Loading @@ -157,15 +157,72 @@ public class ReadCaptureThread extends Thread implements Runnable{ } } // End of class _fragmented_packet private class _tcp_data{ byte[] _data=null; public _tcp_data(TCPPacket p_tcppacket) { _data = p_tcppacket.data; } public void appendData(final byte[] p_data) { _data = concat(_data, p_data); } public byte[] getData() { return _data; } private byte[] concat(byte[]... arrays) { // Determine the length of the result array int totalLength = 0; for (int i = 0; i < arrays.length; i++) { totalLength += arrays[i].length; } // create the result array byte[] result = new byte[totalLength]; // copy the source arrays into the result array int currentIndex = 0; for (int i = 0; i < arrays.length; i++) { System.arraycopy(arrays[i], 0, result, currentIndex, arrays[i].length); currentIndex += arrays[i].length; } return result; } } // End of class _tcp_data private byte[] addBodyData(TCPPacket packet) { _tcp_data tcpBodyData; Long ack = new Long(packet.ack_num); if (_tcpBodys.containsKey(ack)){ tcpBodyData = _tcpBodys.get(ack); tcpBodyData.appendData(packet.data); }else{ tcpBodyData = new _tcp_data(packet/*.data*/); _tcpBodys.put(ack, tcpBodyData); } if (packet.psh){ _tcpBodys.remove(ack); } return tcpBodyData.getData(); } public PacketHandler(String name) { this.name = name; _fragments = new HashMap<Long, _fragmented_packet>(); _tcpBodys = new HashMap<Long, _tcp_data>(); } public PacketHandler(FilterPackets filterpackets) { this.name = filterpackets.componentId.getComponentName(); this.filterpackets = filterpackets; _fragments = new HashMap<Long, _fragmented_packet>(); _tcpBodys = new HashMap<Long, _tcp_data>(); } public void receivePacket(Packet packet) { Loading Loading @@ -201,6 +258,8 @@ public class ReadCaptureThread extends Thread implements Runnable{ //System.out.println("Final packet: " + new_packet.getClass().getName()); // Remove entry _fragments.remove((long) ipPacket.ident); } else { new_packet = packet; } } else { new_packet = packet; Loading @@ -209,7 +268,11 @@ public class ReadCaptureThread extends Thread implements Runnable{ if(new_packet instanceof TCPPacket) { TCPPacket tcpPacket = (TCPPacket)new_packet; byte[] message= tcpPacket.data;//.getTCPData();//TODO: assume data is in one packet //byte[] message= tcpPacket.data;//.getTCPData();//TODO: assume data is in one packet log.debug(tcpPacket.toString()); byte[] message = addBodyData(tcpPacket); if(tcpPacket.psh){ //body is complete //String srcHost = tcpPacket.src_ip.toString(); //String dstHost = tcpPacket.dst_ip.toString(); Loading @@ -224,6 +287,7 @@ public class ReadCaptureThread extends Thread implements Runnable{ this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage); } } } if (new_packet instanceof UDPPacket){ UDPPacket udpPacket = (UDPPacket)new_packet; Loading Loading
javasrc/com/iskratel/ttcn/tri/ReadCaptureThread.java +78 −14 Original line number Diff line number Diff line Loading @@ -117,7 +117,7 @@ public class ReadCaptureThread extends Thread implements Runnable{ //private List<Packet> packets; private FilterPackets filterpackets; private Map<Long, _fragmented_packet> _fragments = null; private Map<Long, _tcp_data> _tcpBodys = null; private class _fragmented_packet { Packet _packet; Loading Loading @@ -157,15 +157,72 @@ public class ReadCaptureThread extends Thread implements Runnable{ } } // End of class _fragmented_packet private class _tcp_data{ byte[] _data=null; public _tcp_data(TCPPacket p_tcppacket) { _data = p_tcppacket.data; } public void appendData(final byte[] p_data) { _data = concat(_data, p_data); } public byte[] getData() { return _data; } private byte[] concat(byte[]... arrays) { // Determine the length of the result array int totalLength = 0; for (int i = 0; i < arrays.length; i++) { totalLength += arrays[i].length; } // create the result array byte[] result = new byte[totalLength]; // copy the source arrays into the result array int currentIndex = 0; for (int i = 0; i < arrays.length; i++) { System.arraycopy(arrays[i], 0, result, currentIndex, arrays[i].length); currentIndex += arrays[i].length; } return result; } } // End of class _tcp_data private byte[] addBodyData(TCPPacket packet) { _tcp_data tcpBodyData; Long ack = new Long(packet.ack_num); if (_tcpBodys.containsKey(ack)){ tcpBodyData = _tcpBodys.get(ack); tcpBodyData.appendData(packet.data); }else{ tcpBodyData = new _tcp_data(packet/*.data*/); _tcpBodys.put(ack, tcpBodyData); } if (packet.psh){ _tcpBodys.remove(ack); } return tcpBodyData.getData(); } public PacketHandler(String name) { this.name = name; _fragments = new HashMap<Long, _fragmented_packet>(); _tcpBodys = new HashMap<Long, _tcp_data>(); } public PacketHandler(FilterPackets filterpackets) { this.name = filterpackets.componentId.getComponentName(); this.filterpackets = filterpackets; _fragments = new HashMap<Long, _fragmented_packet>(); _tcpBodys = new HashMap<Long, _tcp_data>(); } public void receivePacket(Packet packet) { Loading Loading @@ -201,6 +258,8 @@ public class ReadCaptureThread extends Thread implements Runnable{ //System.out.println("Final packet: " + new_packet.getClass().getName()); // Remove entry _fragments.remove((long) ipPacket.ident); } else { new_packet = packet; } } else { new_packet = packet; Loading @@ -209,7 +268,11 @@ public class ReadCaptureThread extends Thread implements Runnable{ if(new_packet instanceof TCPPacket) { TCPPacket tcpPacket = (TCPPacket)new_packet; byte[] message= tcpPacket.data;//.getTCPData();//TODO: assume data is in one packet //byte[] message= tcpPacket.data;//.getTCPData();//TODO: assume data is in one packet log.debug(tcpPacket.toString()); byte[] message = addBodyData(tcpPacket); if(tcpPacket.psh){ //body is complete //String srcHost = tcpPacket.src_ip.toString(); //String dstHost = tcpPacket.dst_ip.toString(); Loading @@ -224,6 +287,7 @@ public class ReadCaptureThread extends Thread implements Runnable{ this.filterpackets.cte.triEnqueueMsg(this.filterpackets.tsiPortId, triAddress, this.filterpackets.componentId, triMessage); } } } if (new_packet instanceof UDPPacket){ UDPPacket udpPacket = (UDPPacket)new_packet; Loading