public async Task <IActionResult> Create(Progetto progetto, string progettoDaCopiare) { if (ModelState.IsValid) { _context.Add(progetto); await _context.SaveChangesAsync(); if (!string.IsNullOrEmpty(progettoDaCopiare) && !progettoDaCopiare.Equals("0")) { List <ModuliProgetto> listaCopiata = await _context.ModuliProgetto.Where(m => m.ProgettoID == int.Parse(progettoDaCopiare)).ToListAsync(); int prgNuovo = progetto.ID; foreach (var el in listaCopiata) { _context.ModuliProgetto.Add(new ModuliProgetto { ProgettoID = prgNuovo, ModuloID = el.ModuloID, Target = el.Target }); } await _context.SaveChangesAsync(); } MyLogger.Log(messaggio: $"Richiesta POST:\n\tNuovo progetto con nome {progetto.Nome}", controller: "ProgettoController", metodo: "Create"); return(RedirectToAction(nameof(Edit), new { id = progetto.ID })); } MyLogger.Log(messaggio: $"ERRORE: Richiesta POST: Richiesta malformata", controller: "ProgettoController", metodo: "Create"); return(View(progetto)); }
private ModuliInseriti PopolaModuliAssegnati(Progetto progetto) { var tuttiModuli = _context.Moduli; var moduliProgetto = new HashSet <ModuliProgetto>(progetto.ModuliProgetto); var dati = new List <ModuliInProgetto>(); foreach (var modulo in tuttiModuli) { bool inserito = moduliProgetto.Any(m => m.ModuloID == modulo.ID); string target = ""; if (inserito) { target = progetto.ModuliProgetto.SingleOrDefault(m => m.ModuloID == modulo.ID).Target; } dati.Add(new ModuliInProgetto { ModuloID = modulo.ID, Nome = modulo.Nome, Comando = modulo.Comando, Inserito = inserito, Target = target, Applicazione = modulo.Applicazione, }); } var viewmodel = new ModuliInseriti { Progetto = progetto, ListaModuliConTarget = dati }; //ViewData["Moduli"] = dati; return(viewmodel); }
public IHttpActionResult InsertMethod() { // creo un progetto nuovo var pro1 = new Progetto() { ProjectName = "StudioWeb", ProjectType = "Web Site", DurationDays = 30 }; var pro2 = new Progetto() { ProjectName = "ConsoleOne", ProjectType = "Console", DurationDays = 15 }; var u = new User() { Nome = "Cristiano Motta", IsActive = true, CreationDate = DateTime.Now, Progetti = { pro1, pro2 } }; var repo = new UsersRepository(); repo.Add(u); return(Ok(JsonConvert.SerializeObject(u))); }
public IHttpActionResult Insert2Method() { var repUsers = new UsersRepository(); var chicco = repUsers.FindById(3); var pro = new Progetto() { ProjectName = "progetto Numero tre", ProjectType = "Spatial application game", DurationDays = 100, }; chicco.Progetti.Add(pro); repUsers.Update(chicco); return(Ok("Ok")); }
private ModuliInseriti PopolaModuliAssegnatiErrore(Progetto progetto, List <ModuliInProgetto> listaModuliAggiornati, List <string> ModuliSenzaTarget, List <string> ModuliSenzaInserito) { var tuttiModuli = _context.Moduli; var dati = new List <ModuliInProgetto>(); foreach (var modulo in tuttiModuli) { bool inserito = listaModuliAggiornati.Any(m => m.ModuloID == modulo.ID && m.Inserito); string target = listaModuliAggiornati.SingleOrDefault(m => m.ModuloID == modulo.ID).Target; if (inserito && string.IsNullOrEmpty(target)) { //guardo se c'è il target, sennò lo metto nella lista dei moduli senza target if (modulo.Applicazione != webmva.Models.APPLICAZIONE.WIFITE && modulo.Applicazione != webmva.Models.APPLICAZIONE.NOSQL && modulo.Applicazione != webmva.Models.APPLICAZIONE.OPENVAS && modulo.Applicazione != webmva.Models.APPLICAZIONE.SERVER) { ModuliSenzaTarget.Add(modulo.Applicazione.ToString() + "- " + modulo.Nome); } } else if (!inserito && !string.IsNullOrEmpty(target)) { // il target è non vuoto ma non è stato inserito, quindi lo metto nella lista dei moduli senza inserito ModuliSenzaInserito.Add(modulo.Applicazione.ToString() + "- " + modulo.Nome); } dati.Add(new ModuliInProgetto { ModuloID = modulo.ID, Nome = modulo.Nome, Comando = modulo.Comando, Inserito = inserito, Target = target, Applicazione = modulo.Applicazione, }); } var viewmodel = new ModuliInseriti { Progetto = progetto, ListaModuliConTarget = dati }; //ViewData["Moduli"] = dati; return(viewmodel); }
private bool AggiornaModuliInseriti(List <ModuliInProgetto> moduliDaAggiornare, Progetto progetto) { if (moduliDaAggiornare.All(m => m.Inserito == false && string.IsNullOrEmpty(m.Target))) { progetto.ModuliProgetto = new List <ModuliProgetto>(); //Console.WriteLine("Inserire almeno un modulo col relativo target"); return(false); } if (moduliDaAggiornare.Any(m => !m.Inserito && !string.IsNullOrEmpty(m.Target))) { //Console.WriteLine("Ci sono dei moduli non inseriti ma col target"); return(false); } if (moduliDaAggiornare.Any(m => m.Inserito && string.IsNullOrEmpty(m.Target))) { //I moduli WIFITE, NOSQLMAP, SERVER e OPENVAS non hanno bisogno del target List <ModuliInProgetto> ModuliEccezioni = moduliDaAggiornare.Where(m => m.Inserito && string.IsNullOrEmpty(m.Target)).ToList(); foreach (var itm in ModuliEccezioni) { if (itm.Applicazione == webmva.Models.APPLICAZIONE.WIFITE || itm.Applicazione == webmva.Models.APPLICAZIONE.NOSQL || itm.Applicazione == webmva.Models.APPLICAZIONE.SERVER || itm.Applicazione == webmva.Models.APPLICAZIONE.OPENVAS) { continue; } else { return(false); } } //Console.WriteLine("Ci sono dei moduli inseriti ma senza target"); //return false; } var moduliSelezionatiHS = moduliDaAggiornare.Where(m => m.Inserito == true); var moduliGiaPresenti = new HashSet <ModuliProgetto>(progetto.ModuliProgetto); foreach (var modulo in _context.Moduli) { if (moduliSelezionatiHS.Any(m => m.ModuloID == modulo.ID)) { // Se nei moduli già presenti nel progetto non c'è quello che sto guardando: if (!moduliGiaPresenti.Any(m => m.ModuloID == modulo.ID)) { var mod = moduliDaAggiornare.SingleOrDefault(m => m.ModuloID == modulo.ID); // Creo l'associazione tra progetto e modulo col relativo target _context.Add(new ModuliProgetto { ModuloID = modulo.ID, ProgettoID = progetto.ID, Target = mod.Target }); } // altrimenti, se il modulo era presente ma il target è stato cambiato else if (moduliGiaPresenti.SingleOrDefault(m => m.ModuloID == modulo.ID).Target != moduliDaAggiornare.SingleOrDefault(m => m.ModuloID == modulo.ID).Target) { // lo aggiorno col nuovo target var associazioneDaAggiornare = progetto.ModuliProgetto.SingleOrDefault(m => m.ModuloID == modulo.ID && m.ProgettoID == progetto.ID); associazioneDaAggiornare.Target = moduliDaAggiornare.SingleOrDefault(m => m.ModuloID == modulo.ID).Target; _context.Update(associazioneDaAggiornare); } } // se sono qui il modulo va eliminato else { if (moduliGiaPresenti.Any(m => m.ModuloID == modulo.ID)) { ModuliProgetto moduloDaRimuovere = progetto.ModuliProgetto.SingleOrDefault(m => m.ModuloID == modulo.ID && m.ProgettoID == progetto.ID); _context.Remove(moduloDaRimuovere); } } } return(true); }
public static void AggiungiIntestazione(string percorso, MyDbContext context) { if (string.IsNullOrEmpty(percorso)) { return; } List <string> content = System.IO.File.ReadLines(Path.Combine("wwwroot", "Report", percorso)).ToList(); var progetto = percorso.Split(Path.DirectorySeparatorChar).ElementAt(0); Progetto p = context.Progetti .Include(x => x.ModuliProgetto) .ThenInclude(m => m.Modulo) .SingleOrDefault(s => s.Nome == progetto); var filename = Path.GetFileName(percorso).Split('_'); var nomeModulo = filename[3].Substring(0, filename[3].LastIndexOf('.')); var data = DateTime .ParseExact(filename[0] + filename[1], "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture) .ToString("dd MMMM yyyy alle HH:mm:ss"); var associazione = p.ModuliProgetto.SingleOrDefault(x => x.Modulo.Nome.ToCamelCase() == nomeModulo && x.Modulo.Applicazione.ToString().ToLower() == filename[2]); var comando = associazione.Modulo.Comando; var target = associazione.Target; List <string> intestazione = new List <string>(); if (Path.GetExtension(percorso).Equals(".txt")) { if (filename[2].Equals("infoga") || filename[2].Equals("infogaemail")) { intestazione.Add(@"___________________________________________________________________"); intestazione.Add(@" _____ __ |_ _| / _| | | _ __ | |_ ___ __ _ __ _ | | | '_ \| _/ _ \ / _` |/ _` | _| |_| | | | || (_) | (_| | (_| | |_____|_| |_|_| \___/ \__, |\__,_| __/ | |___/ "); } else if (filename[2].Equals("sublist3r")) { intestazione.Add(@"___________________________________________________________________"); intestazione.Add(@" _____ _ _ _ _ ____ / ____| | | | (_) | | |___ \ | (___ _ _| |__ | |_ ___| |_ __) |_ __ \___ \| | | | '_ \| | / __| __||__ <| '__| ____) | |_| | |_) | | \__ \ |_ ___) | | |_____/ \__,_|_.__/|_|_|___/\__|____/|_| "); } else if (filename[2].Equals("wapiti")) { intestazione.Add(@"___________________________________________________________________"); intestazione.Add(@" __ __ _ _ _ \ \ / / (_) | (_) \ \ /\ / /_ _ _ __ _| |_ _ \ \/ \/ / _` | '_ \| | __| | \ /\ / (_| | |_) | | |_| | \/ \/ \__,_| .__/|_|\__|_| | | |_| "); } else if (filename[2].Equals("opendoor")) { intestazione.Add(@"___________________________________________________________________"); intestazione.Add(@" ____ _____ / __ \ | __ \ | | | |_ __ ___ _ __ | | | | ___ ___ _ __ | | | | '_ \ / _ \ '_ \| | | |/ _ \ / _ \| '__| | |__| | |_) | __/ | | | |__| | (_) | (_) | | \____/| .__/ \___|_| |_|_____/ \___/ \___/|_| | | |_| "); } else if (filename[2].Equals("sqlmap")) { intestazione.Add(@"___________________________________________________________________"); intestazione.Add(@" _____ ____ _ __ __ / ____|/ __ \| | | \/ | | (___ | | | | | | \ / | __ _ _ __ \___ \| | | | | | |\/| |/ _` | '_ \ ____) | |__| | |____| | | | (_| | |_) | |_____/ \___\_\______|_| |_|\__,_| .__/ | | |_| "); } else if (filename[2].Equals("joomscan")) { intestazione.Add(@"___________________________________________________________________"); intestazione.Add(@" _ _____ | | / ____| | | ___ ___ _ __ ___ | (___ ___ __ _ _ __ _ | |/ _ \ / _ \| '_ ` _ \ \___ \ / __/ _` | '_ \ | |__| | (_) | (_) | | | | | |____) | (_| (_| | | | | \____/ \___/ \___/|_| |_| |_|_____/ \___\__,_|_| |_|"); } else if (filename[2].Equals("wpscan")) { intestazione.Add(@"___________________________________________________________________"); intestazione.Add(@" __ _______ _____ \ \ / / __ \ / ____| \ \ /\ / /| |__) | (___ ___ __ _ _ __ \ \/ \/ / | ___/ \___ \ / __/ _` | '_ \ \ /\ / | | ____) | (_| (_| | | | | \/ \/ |_| |_____/ \___\__,_|_| |_| "); } else if (filename[2].Equals("wascan")) { intestazione.Add(@"___________________________________________________________________"); intestazione.Add(@" __ __ _____ \ \ / /\ / ____| \ \ /\ / / \ | (___ ___ __ _ _ __ \ \/ \/ / /\ \ \___ \ / __/ _` | '_ \ \ /\ / ____ \ ____) | (_| (_| | | | | \/ \/_/ \_\_____/ \___\__,_|_| |_|"); } else if (filename[2].Equals("odat")) { intestazione.Add(@"___________________________________________________________________"); intestazione.Add(@" ____ _____ _______ / __ \| __ \ /\|__ __| | | | | | | | / \ | | | | | | | | |/ /\ \ | | | |__| | |__| / ____ \| | \____/|_____/_/ \_\_| "); } else if (filename[2].Equals("droope")) { intestazione.Add(@"___________________________________________________________________"); intestazione.Add(@" _____ "); intestazione.Add(@" | __ \ "); intestazione.Add(@" | | | | _ __ ___ ___ _ __ ___ ___ ___ __ _ _ __ "); intestazione.Add(@" | | | || '__|/ _ \ / _ \ | '_ \ / _ \/ __| / __|/ _` || '_ \ "); intestazione.Add(@" | |__| || | | (_) || (_) || |_) || __/\__ \| (__| (_| || | | |"); intestazione.Add(@" |_____/ |_| \___/ \___/ | .__/ \___||___/ \___|\__,_||_| |_|"); intestazione.Add(@" | | "); intestazione.Add(@" |_| "); } else if (filename[2].Equals("fierce")) { intestazione.Add(@"___________________________________________________________________"); intestazione.Add(@" ______ _ "); intestazione.Add(@" | ____(_) "); intestazione.Add(@" | |__ _ ___ _ __ ___ ___ "); intestazione.Add(@" | __| | |/ _ \ '__/ __/ _ \"); intestazione.Add(@" | | | | __/ | | (_| __/"); intestazione.Add(@" |_| |_|\___|_| \___\___|"); } else if (filename[2].Equals("amass")) { intestazione.Add(@" /\ / \ _ __ ___ __ _ ___ ___ / /\ \ | '_ ` _ \ / _` / __/ __| / ____ \| | | | | | (_| \__ \__ \ /_/ \_\_| |_| |_|\__,_|___/___/"); } else if (filename[2].Equals("drupwn")) { intestazione.Add(@" _____ _______ ___ _ | __ \ | __ \ \ / / \ | | | | | |_ __ _ _| |__) \ \ /\ / /| \| | | | | | '__| | | | ___/ \ \/ \/ / | . ` | | |__| | | | |_| | | \ /\ / | |\ | |_____/|_| \__,_|_| \/ \/ |_| \_|"); } else if (filename[2].Equals("whois")) { intestazione.Add(@" __ ___ _ \ \ / / | (_) \ \ /\ / /| |__ ___ _ ___ \ \/ \/ / | '_ \ / _ \| / __| \ /\ / | | | | (_) | \__ \ \/ \/ |_| |_|\___/|_|___/"); } intestazione.Add(@"___________________________________________________________________"); intestazione.Add(""); intestazione.Add(@" Progetto: " + progetto); intestazione.Add(@" Nome Modulo: " + nomeModulo); intestazione.Add(@" Comando eseguito: " + comando); intestazione.Add(@" Target: " + target); intestazione.Add(""); intestazione.Add("\tScan iniziato il " + data); intestazione.Add(@"___________________________________________________________________"); intestazione.Add(""); intestazione.Add(""); for (int i = 0; i < intestazione.Count; i++) { content.Insert(i, intestazione.ElementAt(i)); } } else if (Path.GetExtension(percorso).Equals(".xml")) { int riga = 0; if (filename[2].Equals("nmap")) { riga = content.IndexOf("</nmaprun>"); } else if (filename[2].Equals("dnsrecon")) { riga = content.IndexOf("</records>"); } else if (filename[2].Equals("dnsenum")) { int r = content.FindIndex(x => x.Contains("</testdata>")); if (r == 1) { int index = content.ElementAt(r).Substring(0, content.ElementAt(r).LastIndexOf("/")).LastIndexOf("/") - 1; int lunghezza = content.ElementAt(r).Length; string pezzoDaMettereInNuovaRiga = content.ElementAt(r).Substring(index, lunghezza - index); string rigaNuova = content.ElementAt(r).Substring(0, index); content.RemoveAt(r); content.Add(rigaNuova); content.Add(""); content.Add(""); content.Add(pezzoDaMettereInNuovaRiga); riga = r + 1; } else { riga = r; } } content.Insert(riga, $@"<webmva> <scaninfo> <progetto>{progetto}</progetto> <modulo>{nomeModulo}</modulo> <comando>{comando}</comando> <target>{target}</target> <data>{data}</data> </scaninfo> </webmva>"); } else if (Path.GetExtension(percorso).Equals(".html")) { if (filename[2].Equals("theharvester")) { int r = content.FindIndex(x => x.Contains("<body>")); string appoggio = $@"<body> <br /> <h3>Progetto: {progetto}<br /> Modulo: {nomeModulo}<br /> Comando: {comando}<br /> Target: {target}<br /> Data: {data}</h3> <h1>"; string rigaNuova = content.ElementAt(r).Replace("<body><h1>", appoggio); content.RemoveAt(r); content.Add(rigaNuova); } } System.IO.File.WriteAllLines(Path.Combine("wwwroot", "Report", percorso), content); }
public static void Initialize(MyDbContext context) { context.Database.EnsureCreated(); if (context.Moduli.Any()) { return; } var moduli = new Modulo[] { new ModuloNMAP { Applicazione = APPLICAZIONE.NMAP, Nome = "Ping Scan", NonTCPScan = NONTCPSCAN.NOPORT }, //-sn new ModuloNMAP { Applicazione = APPLICAZIONE.NMAP, Nome = "Scan Veloce", Tempo = TEMPI.QUATTRO, FastScan = true }, // -T4 -F new ModuloNMAP { Applicazione = APPLICAZIONE.NMAP, Nome = "Scan Intenso", Tempo = TEMPI.QUATTRO, AllDetections = true, IncreaseVerbosity = true }, // -T4 -A -v new ModuloNMAP { Applicazione = APPLICAZIONE.NMAP, Nome = "Scan Porte UDP", TCPScan = TCPSCAN.SYN, NonTCPScan = NONTCPSCAN.UDP }, //-sS -sU new ModuloNMAP { Applicazione = APPLICAZIONE.NMAP, Nome = "Scan All TCP", ListSpecificPort = "1-65535" }, // -p 1-65535 new ModuloWAPITI { Applicazione = APPLICAZIONE.WAPITI, Nome = "Scan Base" }, new ModuloOPENDOOR { Applicazione = APPLICAZIONE.OPENDOOR, Nome = "Scan Base" }, new ModuloWASCAN { Applicazione = APPLICAZIONE.WASCAN, Nome = "Scan Base" }, new ModuloDROOPE { Applicazione = APPLICAZIONE.DROOPE, Nome = "Scan generico automatico" }, new ModuloDROOPE { Applicazione = APPLICAZIONE.DROOPE, Nome = "Scan Drupal", Cms = CMS.DRUPAL }, new ModuloWPSCAN { Applicazione = APPLICAZIONE.WPSCAN, Nome = "Scan base non intrusivo" }, new ModuloJOOMSCAN { Applicazione = APPLICAZIONE.JOOMSCAN, Nome = "Scan base" }, new ModuloDNSRECON { Applicazione = APPLICAZIONE.DNSRECON, Nome = "Scan base" }, new ModuloDNSENUM { Applicazione = APPLICAZIONE.DNSENUM, Nome = "Scan base" }, new ModuloFIERCE { Applicazione = APPLICAZIONE.FIERCE, Nome = "Scan base" }, new ModuloINFOGA { Applicazione = APPLICAZIONE.INFOGA, Nome = "Scan base" }, new ModuloINFOGAEMAIL { Applicazione = APPLICAZIONE.INFOGAEMAIL, Nome = "Scan Email con breach", Breach = true }, new ModuloSUBLIST3R { Applicazione = APPLICAZIONE.SUBLIST3R, Nome = "Scan base", AllSUB = true }, new ModuloSQLMAP { Applicazione = APPLICAZIONE.SQLMAP, Nome = "Scan base" }, new ModuloNOSQL { Applicazione = APPLICAZIONE.NOSQL, Nome = "NoSQL" }, new ModuloODAT { Applicazione = APPLICAZIONE.ODAT, Nome = "Scan base" }, new ModuloWIFITE { Applicazione = APPLICAZIONE.WIFITE, Nome = "Scan base interattivo" }, new ModuloAMASS { Applicazione = APPLICAZIONE.AMASS, Nome = "Scan base" }, new ModuloDRUPWN { Applicazione = APPLICAZIONE.AMASS, Nome = "Scan base" }, new ModuloTHEHARVESTER { Applicazione = APPLICAZIONE.THEHARVESTER, Nome = "Scan tutte le fonti" }, new ModuloWHOIS { Applicazione = APPLICAZIONE.WHOIS, Nome = "Whois da Registro.it", HostWhois = "whois.nic.it" } }; foreach (Modulo m in moduli) { context.Moduli.Add(m); } context.SaveChanges(); if (context.Progetti.Any()) { return; } var progetti = new Progetto[] { new Progetto { Nome = "Test1", Descrizione = "Questo carattere speciale viene chiamato spazio unificatore perché non indica la fine della linea e impedisce il conseguente ritorno a capo. Utilizzando eccessivamente tale simbolo i browser avrebbero delle difficoltà a inserire correttamente le interruzioni al termine delle linee di testo nel tentativo di renderlo ordinato e leggibile" }, new Progetto { Nome = "Test2" }, }; foreach (Progetto p in progetti) { context.Progetti.Add(p); } context.SaveChanges(); }