コード例 #1
0
        private static DomainIgnore DictionaryToDomainIgnore(Dictionary <string, Object> vals)
        {
            DomainIgnore ignore = new DomainIgnore();

            ignore.DomainIgnoreId = DatabaseUtilities.SafeMapToInt32(vals, "domain_ignore_id");
            ignore.DomainToIgnore = DatabaseUtilities.SafeMapToString(vals, "domain_to_ignore");
            ignore.DomainId       = DatabaseUtilities.SafeMapToInt32(vals, "domain_id");
            return(ignore);
        }
コード例 #2
0
        private DomainIgnore DataRowToDomain(DataRowView row)
        {
            DomainIgnore ignore = new DomainIgnore();

            ignore.DomainIgnoreId = DatabaseUtilities.SafeMapToInt32(row["domain_ignore_id"], "domain_ignore_id");
            ignore.DomainToIgnore = DatabaseUtilities.SafeMapToString(row["domain_to_ignore"]);
            ignore.DomainId       = DatabaseUtilities.SafeMapToInt32(row["domain_id"], "domain_id");
            return(ignore);
        }
コード例 #3
0
 private static void BindUpdateParameters(DomainIgnore domainIgnore, DbUpdater updater, bool includeId = true)
 {
     if (includeId)
     {
         updater.BindParameter("domain_ignore_id", System.Data.DbType.Int32, domainIgnore.DomainIgnoreId);
     }
     updater.BindParameter("domain_to_ignore", System.Data.DbType.String, domainIgnore.DomainToIgnore);
     updater.BindParameter("domain_id", System.Data.DbType.Int32, domainIgnore.DomainId);
 }
コード例 #4
0
        public UpdateResult Insert(DomainIgnore ignore)
        {
            var result = new UpdateResult();

            try
            {
                DbUpdater updater = new DbUpdater();
                BindUpdateParameters(ignore, updater, false);
                result.Id = updater.Insert("domain_ignore");
            }
            catch (Exception ex)
            {
                result.Error   = true;
                result.Message = ex.Message;
                if (ex.InnerException != null)
                {
                    result.Message += " Inner: " + ex.InnerException.Message;
                }
            }

            return(result);
        }
コード例 #5
0
        private DomainIgnoreFindResult GenericFind(string whereClause, List <DbField> parameters)
        {
            DomainIgnoreFindResult result = new DomainIgnoreFindResult();

            try
            {
                DbAccessor connection = new DbAccessor();
                AddAccessorSelectors(connection);

                if (!String.IsNullOrEmpty(whereClause))
                {
                    connection.SetWhereClause(whereClause, parameters);
                }
                List <string> tables = new List <string>();
                tables.Add("domain_ignore");

                DataView dataView = connection.FindWhere(tables);

                foreach (DataRowView row in dataView)
                {
                    DomainIgnore ignore = DataRowToDomain(row);
                    result.Items.Add(ignore);
                }
            }
            catch (Exception ex)
            {
                result.Error   = true;
                result.Message = ex.Message;
                if (ex.InnerException != null)
                {
                    result.Message += " Inner: " + ex.InnerException.Message;
                }
            }

            return(result);
        }
コード例 #6
0
        private void _btnProgramLoad_Click(object sender, EventArgs e)
        {
            List <HackingTarget>   items            = JsonLoader.Load(@"C:\Alternative\Source\doc.json");
            DomainController       domainController = new DomainController();
            DomainIgnoreController ignoreController = new DomainIgnoreController();

            foreach (HackingTarget item in items)
            {
                foreach (Target target in item.Targets.in_scope)
                {
                    string platform = "";
                    if (item.URL.Contains("hackerone"))
                    {
                        if (!target.asset_type.Equals("URL"))
                        {
                            continue;
                        }
                        platform = "hackerone";
                    }

                    if (item.URL.Contains("bugcrowd"))
                    {
                        //if (!target.type.Equals("website"))
                        if (!target.target.Contains("http"))
                        {
                            continue;
                        }
                        platform = "bugcrowd";
                    }

                    string domaintext = target.asset_identifier;
                    if (String.IsNullOrEmpty(domaintext))
                    {
                        domaintext = target.target;
                    }

                    domaintext = domaintext.Replace("*.", "").Replace("https://", "").Replace("http://", "").Replace("(", "").Replace(")", "").Split('?')[0].Split('/')[0];

                    string regex = "(\\[.*\\])|(\".*\")|('.*')|(\\(.*\\))|(<.*>)";
                    domaintext = Regex.Replace(domaintext, regex, "");

                    string[] parts = domaintext.Split('.');

                    if (parts.Length >= 2)
                    {
                        int count = parts.Length - 1;
                        domaintext = parts[count - 1] + "." + parts[count];
                    }

                    Clark.Domain.Data.Domain domain = domainController.FindByDomain(domaintext);
                    if (domain == null)
                    {
                        domain = new Domain();

                        domain.Platform      = platform;
                        domain.BountyURL     = item.URL;
                        domain.BountyEndDate = new DateTime(2999, 12, 31);
                        domain.Private       = false;
                        domain.DomainName    = domaintext;

                        UpdateResult res = domainController.Insert(domain);
                        if (res.Error)
                        {
                            MessageBox.Show(target.asset_identifier + " error");
                        }
                    }
                }

                foreach (Target target in item.Targets.out_of_scope)
                {
                    if (!target.asset_type.Equals("URL"))
                    {
                        continue;
                    }

                    DomainIgnore ignore = ignoreController.FindByIgnoreDomain(target.asset_identifier.Replace("*.", ""));
                    if (ignore == null)
                    {
                        ignore = new DomainIgnore();

                        string domain2Ignore = target.asset_identifier;
                        domain2Ignore = domain2Ignore.Replace("*.", "").Replace("https://", "").Replace("http://", "").Replace("(", "").Replace(")", "").Split('?')[0].Split('/')[0];

                        string regex = "(\\[.*\\])|(\".*\")|('.*')|(\\(.*\\))|(<.*>)";
                        domain2Ignore = Regex.Replace(domain2Ignore, regex, "");

                        ignore.DomainToIgnore = domain2Ignore;



                        UpdateResult res = ignoreController.Insert(ignore);
                        if (res.Error)
                        {
                            MessageBox.Show(target.asset_identifier + " error");
                        }
                    }
                }
            }
        }