diff --git a/src/main/java/cic/cs/unb/ca/jnetpcap/BasicFlow.java b/src/main/java/cic/cs/unb/ca/jnetpcap/BasicFlow.java index d8f05dee..e85d4ca3 100644 --- a/src/main/java/cic/cs/unb/ca/jnetpcap/BasicFlow.java +++ b/src/main/java/cic/cs/unb/ca/jnetpcap/BasicFlow.java @@ -119,6 +119,14 @@ public void initParameters(){ public void firstPacket(BasicPacketInfo packet){ + if(this.src==null){ + this.src = packet.getSrc(); + this.srcPort = packet.getSrcPort(); + } + if(this.dst==null){ + this.dst = packet.getDst(); + this.dstPort = packet.getDstPort(); + } updateFlowBulk(packet); detectUpdateSubflows(packet); checkFlags(packet); @@ -128,18 +136,9 @@ public void firstPacket(BasicPacketInfo packet){ this.endActiveTime = packet.getTimeStamp(); this.flowLengthStats.addValue((double)packet.getPayloadBytes()); - if(this.src==null){ - this.src = packet.getSrc(); - this.srcPort = packet.getSrcPort(); - } - if(this.dst==null){ - this.dst = packet.getDst(); - this.dstPort = packet.getDstPort(); - } if(Arrays.equals(this.src, packet.getSrc())){ this.min_seg_size_forward = packet.getHeaderBytes(); Init_Win_bytes_forward = packet.getTCPWindow(); - this.flowLengthStats.addValue((double)packet.getPayloadBytes()); this.fwdPktStats.addValue((double)packet.getPayloadBytes()); this.fHeaderBytes = packet.getHeaderBytes(); this.forwardLastSeen = packet.getTimeStamp(); @@ -153,7 +152,6 @@ public void firstPacket(BasicPacketInfo packet){ } }else{ Init_Win_bytes_backward = packet.getTCPWindow(); - this.flowLengthStats.addValue((double)packet.getPayloadBytes()); this.bwdPktStats.addValue((double)packet.getPayloadBytes()); this.bHeaderBytes = packet.getHeaderBytes(); this.backwardLastSeen = packet.getTimeStamp(); @@ -184,7 +182,13 @@ public void addPacket(BasicPacketInfo packet){ } this.fwdPktStats.addValue((double)packet.getPayloadBytes()); this.fHeaderBytes +=packet.getHeaderBytes(); - this.forward.add(packet); + this.forward.add(packet); + if(packet.hasFlagPSH()){ + this.fPSH_cnt++; + } + if(packet.hasFlagURG()){ + this.fURG_cnt++; + } this.forwardBytes+=packet.getPayloadBytes(); if (this.forward.size()>1) this.forwardIAT.addValue(currentTimestamp -this.forwardLastSeen); @@ -196,6 +200,12 @@ public void addPacket(BasicPacketInfo packet){ Init_Win_bytes_backward = packet.getTCPWindow(); this.bHeaderBytes+=packet.getHeaderBytes(); this.backward.add(packet); + if(packet.hasFlagPSH()){ + this.bPSH_cnt++; + } + if(packet.hasFlagURG()){ + this.bURG_cnt++; + } this.backwardBytes+=packet.getPayloadBytes(); if (this.backward.size()>1) this.backwardIAT.addValue(currentTimestamp-this.backwardLastSeen); @@ -381,7 +391,7 @@ void detectUpdateSubflows( BasicPacketInfo packet ){ public void updateFlowBulk (BasicPacketInfo packet){ - if(this.src == packet.getSrc()){ + if(Arrays.equals(this.src, packet.getSrc())){ updateForwardBulk(packet,blastBulkTS); }else { updateBackwardBulk(packet,flastBulkTS); diff --git a/src/main/java/cic/cs/unb/ca/jnetpcap/FlowGenerator.java b/src/main/java/cic/cs/unb/ca/jnetpcap/FlowGenerator.java index 6f546975..a4046452 100644 --- a/src/main/java/cic/cs/unb/ca/jnetpcap/FlowGenerator.java +++ b/src/main/java/cic/cs/unb/ca/jnetpcap/FlowGenerator.java @@ -132,7 +132,7 @@ public void addPacket(BasicPacketInfo packet){ // 1.- we add the packet-in-process to the flow (it is the last packet) // 2.- we move the flow to finished flow list // 3.- we eliminate the flow from the current flow list - if ((flow.getBwdFINFlags() + flow.getBwdFINFlags()) == 2) { + if ((flow.getFwdFINFlags() + flow.getBwdFINFlags()) == 2) { logger.debug("FlagFIN current has {} flow",currentFlows.size()); flow.addPacket(packet); if (mListener != null) { @@ -163,7 +163,7 @@ public void addPacket(BasicPacketInfo packet){ // 1.- we add the packet-in-process to the flow (it is the last packet) // 2.- we move the flow to finished flow list // 3.- we eliminate the flow from the current flow list - if ((flow.getBwdFINFlags() + flow.getBwdFINFlags()) == 2) { + if ((flow.getFwdFINFlags() + flow.getBwdFINFlags()) == 2) { logger.debug("FlagFIN current has {} flow",currentFlows.size()); flow.addPacket(packet); if (mListener != null) {