Beispiel #1
0
        /// <summary>
        /// Returns a list of flows
        /// </summary>
        /// <param name="packets"></param>
        /// <returns></returns>

        /*     public static List<Flow2> GenerateFlows(IEnumerable<Packet> packets)
         *   {
         *       SortedList<ConnectionPair, Flow2> flows = new SortedList<ConnectionPair, Flow2>();
         *
         *       int id = 0;
         *
         *       foreach (Packet pkt in packets)
         *       {
         *           ConnectionPair conn = new ConnectionPair(pkt);
         *           ConnectionPair revConn = conn.BackwardDirection; // the reverse direction of the flow
         *
         *           if (!flows.ContainsKey(conn))
         *           {
         *               if (!flows.ContainsKey(revConn))
         *                   flows.Add(conn, new Flow2(id++, conn));
         *               else
         *                   conn = revConn;
         *           }
         *
         *           flows[conn].AddPacket(pkt);
         *       }
         *
         *       return flows.Values.ToList();
         *   }
         */

        /// <summary>
        /// Returns a list of conversations
        /// was created by hossein
        /// </summary>
        /// <param name="packets"></param>
        /// <returns></returns>
        public static List <Conversationflow2> GenerateConversations(IEnumerable <Flow2> flows)
        {
            SortedList <ConversationPair, Conversationflow2> conversationflows = new SortedList <ConversationPair, Conversationflow2>();

            int id = 0;

            foreach (Flow2 flw in flows)
            {
                ConversationPair conn    = new ConversationPair(flw);
                ConversationPair revConn = conn.BackwardDirection; // the reverse direction of the flow

                if (!conversationflows.ContainsKey(conn))
                {
                    if (!conversationflows.ContainsKey(revConn))
                    {
                        conversationflows.Add(conn, new Conversationflow2(id++, conn));
                    }
                    else
                    {
                        conn = revConn;
                    }
                }

                conversationflows[conn].AddFlow(flw);
            }

            return(conversationflows.Values.ToList());
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public int CompareTo(object obj)
        {
            if (obj is ConversationPair)
            {
                ConversationPair cp = (ConversationPair)obj;

                if (this.Equals(cp))
                {
                    return(0);
                }
                else
                {
                    if (cp.Protocol == this.Protocol)
                    {
                        if (Protocol != Packet.Protocol.UDP)
                        {
                            return(1);
                        }
                    }
                    else
                    {
                        return(this.Protocol == Packet.Protocol.TCP ? 1 : -1);
                    }
                }
            }

            return(-1);
        }
Beispiel #3
0
        public Conversationflow2(int id, ConversationPair connection)
        {
            this._id = id;

            this._flows = new List <Flow2>();

            this._conn = connection;

            this.ProcessName = default(string);
        }
Beispiel #4
0
        public Conversationflow2(int id, ConversationPair connection, IEnumerable <Flow2> flwList)
        {
            this._id = id;

            this._conn = connection;

            this._flows = new List <Flow2>();

            this._flows.AddRange(flwList);

            this.ProcessName = default(string);
        }
Beispiel #5
0
        public override bool Equals(object obj)
        {
            if (!(obj is ConversationPair))
            {
                return(false);
            }

            ConversationPair cpObj = (ConversationPair)obj;

            if (cpObj.SrcIP.AddressFamily.Equals(this.SrcIP.AddressFamily))
            {
                if (cpObj.SrcIP.Equals(this.SrcIP) &&
                    cpObj.DestIP.Equals(this.DestIP) &&
                    (cpObj.Protocol == this.Protocol))
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #6
0
 public void Dispose()
 {
     this._conn = null;
     //   this._pktList.Clear();
     //   this._pktList = null;
 }