예제 #1
0
        /// <summary>
        /// This is the nmapAddEntry method.
        /// It is used to add an Nmap finding to the Record.
        /// </summary>
        /// <param name="entry">the whole nmap dataentry finding</param>
        public void nmapAddEntry(DataEntry entry)
        {
            // return if entry is with non-openPort RiskFactor
            if (entry.getRiskFactor() != RiskFactor.OPEN)
            {
                checkNARaw.Add(entry.deepCopy());
                return;
            }

            string fileName = entry.getFileName();

            if (!fileNameRaw.ContainsKey(DataEntry.EntryType.NMAP))
            {
                fileNameRaw.Add(DataEntry.EntryType.NMAP, new List <string>());
            }
            if (!fileNameRaw[DataEntry.EntryType.NMAP].Contains(fileName))
            {
                fileNameRaw[DataEntry.EntryType.NMAP].Add(fileName);
            }

            openPortRaw.Add(entry.deepCopy());
            // If the entry is not duplicate

            String ip = entry.getIp();

            if (!openPortTableItem.ContainsKey(ip))
            {
                openPortTableItem[ip] = new OpenPortTableItemData();
            }
            openPortTableItem[ip].addNmapOpenPort(((NmapDataEntry)entry).getOpenPortList());
            openPortTableItem[ip].addNmapFilteredPort(((NmapDataEntry)entry).getFilteredPortList());
            if (!isDuplicate(openPort, entry))
            {
                //// Add ReportItem entry to dictionary
                //openPort.Add(openPort.Count, entry);

                // Change risk stat
                riskStats.addHost(entry.getIp(), entry.getRiskFactor());
            }
        }
예제 #2
0
        /// <summary>
        /// This is the nessusAddEntry method.
        /// It is used to add an Nessus finding to the Record.
        /// </summary>
        /// <param name="pluginId">the pluginID of the nessus finding</param>
        /// <param name="ip">the host name of the nessus finding</param>
        /// <param name="entry">the whole nessus dataentry finding</param>
        public void nessusAddEntry(DataEntry entry)
        {
            int    pluginId = int.Parse(((NessusDataEntry)entry).getPluginID());
            string ip       = entry.getIp();
            Dictionary <int, DataEntry> targetDictionary    = null;
            List <DataEntry>            targetDictionaryRaw = null;

            // Find which Dictionary the entry to be stored
            switch (entry.getRiskFactor())
            {
            case RiskFactor.HIGH:
                targetDictionary    = highRisk;
                targetDictionaryRaw = highRiskRaw;
                break;

            case RiskFactor.MEDIUM:
                targetDictionary    = mediumRisk;
                targetDictionaryRaw = mediumRiskRaw;
                break;

            case RiskFactor.LOW:
                targetDictionary    = lowRisk;
                targetDictionaryRaw = lowRiskRaw;
                break;

            case RiskFactor.NONE:
                targetDictionary    = noneRisk;
                targetDictionaryRaw = noneRiskRaw;
                break;

            case RiskFactor.OPEN:
                targetDictionary    = openPort;
                targetDictionaryRaw = openPortRaw;
                break;

            default:
                targetDictionary    = checkNA;
                targetDictionaryRaw = checkNARaw;
                break;
            }

            // return if entry is with unknow RiskFactor
            if (targetDictionary == null)
            {
                return;
            }


            string fileName = entry.getFileName();

            if (!fileNameRaw.ContainsKey(DataEntry.EntryType.NESSUS))
            {
                fileNameRaw.Add(DataEntry.EntryType.NESSUS, new List <string>());
            }
            if (!fileNameRaw[DataEntry.EntryType.NESSUS].Contains(fileName))
            {
                fileNameRaw[DataEntry.EntryType.NESSUS].Add(fileName);
            }

            targetDictionaryRaw.Add(entry.deepCopy());

            if (!openPortTableItem.ContainsKey(ip))
            {
                openPortTableItem[ip] = new OpenPortTableItemData();
            }
            openPortTableItem[ip].addNessusOpenPort(((NessusDataEntry)entry).getPort(), ((NessusDataEntry)entry).getProtocol());
            // Change risk stat
            riskStats.addHost(ip, entry.getRiskFactor());

            // Add ReportItem entry to the dictionary (for an non-openPort finding)


            if (entry.getRiskFactor() != RiskFactor.OPEN)
            {
                if (targetDictionary.ContainsKey((int)pluginId))
                {
                    //String p_w_p = entry.getportwithprotocol();
                    //@@@@@System.Windows.Forms.MessageBox.Show(entry.getIpList().IndexOf(ip.Substring(0, ip.Length)).ToString() + "))" + ip + ">>" + ip.Substring(0, ip.IndexOf("(")));
                    //Plan 3targetDictionary[pluginId].addIp(ip, entry.getportwithprotocol()[entry.getIpList().IndexOf(ip.Substring(0,ip.IndexOf("(")))]);       //@@@@@

                    //Plan 2
                    targetDictionary[pluginId].addIp(ip, entry.getportwithprotocol(), entry.getpluginoutput_findingdetail());
                }
                else
                {
                    targetDictionary[pluginId] = entry;
                    //plan 2
                    //targetDictionary[pluginId].combine_ip_with_corresponding_port();
                }
            }

            // Add Open Port finding to dictionary
            else
            {
                //entry.combine_ip_with_corresponding_port();
                //    bool isDuplicate = false;

                //    foreach (KeyValuePair<int, DataEntry> keyValuePair in targetDictionary)
                //    {

                //        DataEntry tempEntry = keyValuePair.Value;
                //        List<String> ipList = tempEntry.getIpList();

                //        foreach (String host in ipList)
                //        {

                //            // merging of open port finding if host exist in open port findings
                //            if (host == entry.getIp())
                //            {

                //                if (!tempEntry.getDescription().Contains(entry.getDescription()))
                //                {
                //                    tempEntry.setDescription(tempEntry.getDescription() + ", " + entry.getDescription());
                //                }

                //                isDuplicate = true;
                //                break;
                //            }
                //        }

                //        if (isDuplicate)
                //        {
                //            break;
                //        }
                //    }

                //    // If the current entry is not an Duplicate entry
                //    if (!isDuplicate)
                //    {

                //        // Add it to the OpenPort findings
                //        targetDictionary.Add(targetDictionary.Count, entry);
                //    }
            }
        }