Beispiel #1
0
        internal static Scanner GetScannerFromDB(int ScanID)
        {
            Scanner ScannerFromLog = null;

            using (SQLiteConnection DB = new SQLiteConnection("data source=" + IronProjectFile))
            {

                DB.Open();
                using (SQLiteCommand cmd = DB.CreateCommand())
                {
                    cmd.CommandText = "SELECT RequestHeaders, RequestBody, BinaryRequest, Status, InjectionPoints, FormatPlugin, SessionPlugin, ScanPlugins FROM ScanQueue WHERE ScanID=@ScanID LIMIT 1";
                    cmd.Parameters.AddWithValue("@ScanID", ScanID);
                    using (SQLiteDataReader result = cmd.ExecuteReader())
                    {
                        IronLogRecord ILR = new IronLogRecord();
                        ILR.RequestHeaders = result["RequestHeaders"].ToString();
                        ILR.RequestBody = result["RequestBody"].ToString();
                        ILR.IsRequestBinary = (result["BinaryRequest"].ToString().Equals("1"));
                        Session Irse = Session.GetIronSessionFromIronLogRecord(ILR, 0);
                        Request Req = Irse.Request;
                        string Status = result["Status"].ToString();
                        string FormatPluginName = result["FormatPlugin"].ToString();
                        string SessionPluginName = result["SessionPlugin"].ToString();
                        string InjectionString = result["InjectionPoints"].ToString();
                        string[] ScanPluginsArray = result["ScanPlugins"].ToString().Split(new char[] { ',' });

                        ScannerFromLog = new Scanner(Req);
                        ScannerFromLog.ScanID = ScanID;

                        if (Status.Equals("Not Started")) return ScannerFromLog;

                        if (SessionPluginName.Length > 0)
                        {
                            if (!SessionPluginName.Equals("None") && SessionPlugin.List().Contains(SessionPluginName))
                            {
                                ScannerFromLog.SessionHandler = SessionPlugin.Get(SessionPluginName);
                            }
                        }
                        if (FormatPluginName.Length > 0)
                        {
                            if (!FormatPluginName.Equals("None") && FormatPlugin.List().Contains(FormatPluginName))
                            {
                                ScannerFromLog.BodyFormat = FormatPlugin.Get(FormatPluginName);
                            }
                        }
                        if (ScanPluginsArray.Length > 0)
                        {
                            List<string> ValidScanPlugins = ActivePlugin.List();
                            foreach (string Name in ScanPluginsArray)
                            {
                                if (ValidScanPlugins.Contains(Name))
                                {
                                    ScannerFromLog.AddCheck(Name);
                                }
                            }
                        }
                        ScannerFromLog.AbsorbInjectionString(InjectionString);
                        ScannerFromLog.Status = Status;

                    }
                }
            }

            return ScannerFromLog;
        }