Package nz.co.abrahams.asithappens.flow

Examples of nz.co.abrahams.asithappens.flow.Flow


    /**
     * Parses a packet trace file and populates the data sets.
     */
    public void parseTrace() throws FileNotFoundException, IOException, EOPacketStream, StreamFormatException, SyntaxError, DBException {
        PacketTraceIterator source;
        Flow flow;
        boolean foundMatch;
        boolean firstPacket;
        Flow[] temporaryFlows;
        Vector<DataPoint>[] temporaryData;
       
        source = new PacketTraceIterator(fileName);
        firstPacket = true;
       
        while ( (flow = source.next()) != null ) {
           
            if ( flow.timestamp >= startTime && flow.timestamp <= finishTime ) {
               
                foundMatch = false;
                for (int set = 0; set < data.size(); set++) {
                    if ( flow.matches(flows[set], options) ) {
                        foundMatch = true;
                        data.elementAt(set).add(new DataPoint(flow.timestamp, flow.length * 8));
                        logger.debug("Adding data to flow" + set + ": " + flow.timestamp + " " + flow.length);
                    }
                }
               
                if ( foundMatch == false ) {
                    temporaryFlows = new Flow[data.size() + 1];
                    System.arraycopy(flows, 0, temporaryFlows, 0, data.size());
                    flows = temporaryFlows;
                    flows[data.size()] = flow;
                   
                    logger.debug("Adding new data set " + flow.printable(options));
                    addSet(flow.printable(options));
                    data.elementAt(data.size() - 1).add(new DataPoint(flow.timestamp, flow.length * 8));
                }
            }
            /*
            if ( firstPacket ) {
View Full Code Here


    /**
     * Parses a packet trace file and populates the data sets.
     */
    public void parseTrace() throws FileNotFoundException, IOException, EOPacketStream, StreamFormatException, SyntaxError, DBException {
        PacketTraceIterator source;
        Flow flow;
        boolean foundMatch;
        boolean firstPacket;
        Flow[] temporaryFlows;
        Vector<DataPoint>[] temporaryData;
       
        source = new PacketTraceIterator(fileName);
        firstPacket = true;
       
        taskLength = PacketCounter.newInstance(new File(fileName), PacketCounterModel.statistical).getCount();
       
        while ( (flow = source.next()) != null && ! isCancelled() ) {
           
            taskProgress++;
            if ( flow.timestamp >= startTime && flow.timestamp <= finishTime ) {

                foundMatch = false;
                for (int set = 0; set < dataSets.getDataSetCount(); set++) {
                    if ( flow.matches(dataSets.flows[set], options) ) {
                        foundMatch = true;
                        dataSets.getDataSet(set).add(new DataPoint(flow.timestamp, flow.length * 8));
                        logger.debug("Adding data to flow" + set + ": " + flow.timestamp + " " + flow.length);
                    }
                }
               
                if ( foundMatch == false ) {
                    temporaryFlows = new Flow[dataSets.getDataSetCount() + 1];
                    System.arraycopy(dataSets.flows, 0, temporaryFlows, 0, dataSets.getDataSetCount());
                    dataSets.flows = temporaryFlows;
                    dataSets.flows[dataSets.getDataSetCount()] = flow;
                   
                    logger.debug("Adding new data set " + flow.printable(options));
                    dataSets.addSet(flow.printable(options));
                    dataSets.getDataSet(dataSets.getDataSetCount() - 1).add(new DataPoint(flow.timestamp, flow.length * 8));
                }
            }
            /*
            if ( firstPacket ) {
View Full Code Here

       
    }
   
    /** @return a Flow object corresponding to the next packet in the trace file */
    public Flow next() {
        Flow flow;
        Device sourceDevice;
        Device destinationDevice;
        IpAddressPrimitive source = null;
        IpAddressPrimitive destination = null;
        MacAddressPrimitive src = null;
        MacAddressPrimitive dst = null;
        int etherProtocol = -1;
        int ipProtocol = -1;
        int srcPort = -1;
        int dstPort = -1;
       
        try {
           
            /* Aligns the position of the stream at beginning of packet */
            in.nextPacket();
           
            /* Returns the name of the first header */
            String linkType = in.getLinkType();
            int length = (int)in.getPacketLength();
            long timestamp = in.getCaptureTimestamp().getTime();
           
            if (linkType.equals("Ethernet") == true) {
               
                dst = new MacAddressPrimitive();
                dst.setValue(in);
               
                src = new MacAddressPrimitive();
                src.setValue(in);
               
                etherProtocol = in.readUnsignedShort();
               
                // Now check if its IP protocol
                if (etherProtocol == 0x800) {
                    int version =       in.readBits(4);
                    int hlen =          in.readBits(4);
                    int precedence =    in.readBits(3);
                    //int delay =         in.readBits(1);
                    //int throughtput =   in.readBits(1);
                    //int reliability =   in.readBits(1);
                    //in.readBits(2);     // Reserved 2 bits
                   
                    //int ipLength =      in.readUnsignedShort();
                    //int id =            in.readUnsignedShort();
                   
                    //in.readBits(1);     // Reserved 1 flag bit
                   
                    //int doNotFragment = in.readBits(1);
                    //int moreFragments = in.readBits(1);
                   
                    in.readBits(32);
                    in.readBits(8);
                    int offset =        in.readBits(13);
                    int timeToLive =    in.readUnsignedByte();
                   
                    ipProtocol =    in.readUnsignedByte();
                    int checksum =      in.readUnsignedShort();
                   
                    source = new IpAddressPrimitive();
                    source.setValue(in);
                   
                    destination = new IpAddressPrimitive();
                    destination.setValue(in);
                   
                    // Skip all the options
                    if ( hlen > 5 )
                        in.readBits((hlen - 5) * 32);
                   
                    //logger.debug("Ethernet " + src + " -> " + dst);
                    //logger.debug("IP " + source + " -> " + destination);
                   
                    if (ipProtocol == 6) {
                        srcPort = in.readUnsignedShort();
                        dstPort = in.readUnsignedShort();
                        long seqNumber = in.readUnsignedInt();
                        long ackNumber = in.readUnsignedInt();
                       
                        //int ipOffset = in.readBits(4);
                        // reserved
                        //in.readBits(6);
                        //int flags = in.readBits(6);
                        //int window = in.readUnsignedShort();
                       
                        in.readBits(32);
                        if ( offset > 5 )
                            in.readBits((offset - 5) * 32);
                        logger.debug("TCP: " + source + "(" + srcPort + ") -> "
                                + destination + "(" + dstPort + ")");
                       
                    } else if (ipProtocol == 17) {
                        srcPort = in.readUnsignedShort();
                        dstPort = in.readUnsignedShort();
                       
                        //int udpLength = in.readUnsignedShort();
                        //int udpChecksum = in.readUnsignedShort();
                        in.readBits(32);
                        logger.debug("UDP: " + source + "(" + srcPort + ") -> "
                                + destination + "(" + dstPort + ")");
                       
                    } else { // For all other IP protocols display number
                        logger.debug(
                                "IP: " + source + " -> " + destination + " protocol=0x"
                                + Integer.toHexString(ipProtocol) );
                    }
                    sourceDevice = new Device(InetAddress.getByName(source.toString()), new EthernetAddress(src.toString()));
                    destinationDevice = new Device(InetAddress.getByName(destination.toString()), new EthernetAddress(dst.toString()));
                   
                    return new Flow(timestamp, sourceDevice, destinationDevice, etherProtocol, ipProtocol, srcPort, dstPort, length);
                   
                } else {
                    logger.debug("Ethernet " + src + " -> " + dst
                            + " Ethertype=0x"
                            + Integer.toHexString(etherProtocol) );
                    sourceDevice = new Device(new EthernetAddress(src.toString()));
                    destinationDevice = new Device(new EthernetAddress(dst.toString()));
                    return new Flow(timestamp, sourceDevice, destinationDevice, etherProtocol, length);
                }
            } else {
                logger.debug("Unsupported packet type: " + linkType);
                return next();
            }
View Full Code Here

    /**
     * Test of nextPacket method, of class nz.co.abrahams.asithappens.PacketTraceParser.
     */
    @Test
    public void testNext() {
        Flow flow;
        System.out.println("testNext");
        flow = iterator.next();
        flow = iterator.next();
        flow = iterator.next();
        Assert.assertTrue(true);
View Full Code Here

        device2 = new Device(InetAddress.getByName("10.1.2.3"), new EthernetAddress("00:11:D8:0C:25:22"));
        device3 = new Device(InetAddress.getByName("192.168.0.1"), new EthernetAddress("00:11:D8:0C:25:11"));
        device4 = new Device(InetAddress.getByName("10.1.2.3"), new EthernetAddress("00:11:D8:0C:25:22"));
        device5 = new Device(InetAddress.getByName("102.168.0.2"), new EthernetAddress("00:11:D8:0C:25:22"));
       
        flow1 = new Flow(1115641185, device1, device2, 2048, 6, 1025, 80, 100);
        flow2 = new Flow(1115641188, device3, device4, 2048, 6, 1025, 80, 200);
       
        flow3 = new Flow(1115641188, device1, device5, 2048, 6, 1025, 80, 300);
        flow4 = new Flow(1115641198, device1, device5, 2048, 6, 1029, 80, 300);
        flow5 = new Flow(1115641198, device2, device5, 2048, 6, 1034, 80, 300);
       
       
        destinationAddressPortOptions = new FlowOptions(true, false, true, false, false, true);
        ipProtocolOptions = new FlowOptions(true, false, false, false, false, false);
        destinationAddressOptions = new FlowOptions(true, false, true, false, false, false);
View Full Code Here

TOP

Related Classes of nz.co.abrahams.asithappens.flow.Flow

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.