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; }