static string ReadLastLine(string path) { //using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.None)) //{ // byte b; // fs.Position = fs.Length; // while (fs.Position > 0) // { // fs.Position--; // b = (byte)fs.ReadByte(); // if (b == '\n') // { // break; // } // fs.Position--; // } // byte[] bytes = new byte[fs.Length - fs.Position]; // fs.Read(bytes, 0, bytes.Length); // fs.Flush(); // //fs.BaseStream.Flush(); // return System.Text.Encoding.UTF8.GetString(bytes); //} if (BackgroundWatcher.IsFileClosed(path, true)) { using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read)) { byte b; fs.Position = fs.Length; while (fs.Position > 0) { fs.Position--; b = (byte)fs.ReadByte(); if (b == '\n') { break; } fs.Position--; } byte[] bytes = new byte[fs.Length - fs.Position]; fs.Read(bytes, 0, bytes.Length); //fs.Flush(); //fs.BaseStream.Flush(); fs.Close(); return(System.Text.Encoding.UTF8.GetString(bytes)); } } return(""); //fs.Close(); }
private bool isLastRecordAdded() { string record = BackgroundWatcher.ReadLastLine(logfile.fileName); if (record != "" && record != filteredRecords.FilteredRecordsList.Last().logString) { if (OneRecord.IsRecordCanBeCreated(record)) { OneRecord _record = new OneRecord(record); filteredRecords.deleteFirstRecord(); filteredRecords.AddRecord(_record); return(true); } return(false); } else { return(false); } }
public static BackgroundWatcher MakeBackgroundWatcher(LogFile logFile, NotifyIcon notifyIcon1, MailAddress mail = null) { BackgroundWatcher bgw = new BackgroundWatcher(logFile, notifyIcon1, mail); return(bgw); }
private void WatcherChanged(object sender, FileSystemEventArgs e) { //Console.WriteLine("Type of changes: {0}; Changed: {1}", e.ChangeType, e.Name); //MessageBox.Show(String.Format("Type of changes: {0}; Changed: {1}", e.ChangeType, e.Name)); //isHackDetacted = false; DangerousHTTPRequests dr = new DangerousHTTPRequests(); int DangerousIpSize = dangerousRequests.DangerousIp.Count(); //if (dangerousRequests.DangerousIp.Any()) //{ // DangerousIpSize = dangerousRequests.DangerousIp.Count(); //} //string s = ReadLastLine(logfile.fileName); //MessageBox.Show(String.Format("Добавлено: {0}", s)); if (isLastRecordAdded()) { //MessageBox.Show(String.Format("Добавлено: {0} --- {1}", filteredRecords.FilteredRecordsList.Last().logString,filteredRecords.FilteredRecordsList.First().logString)); dr = filteredRecords.AttackDetector(); if (dr.DangerousIp.Any()) { foreach (KeyValuePair <string, float> keyValue in dr.DangerousIp) { bool isHackerDetected = false; if (keyValue.Value == 100) { if (mailAddress != null) { SendEmail(keyValue.Key); BackgroundWatcher.makeNotify(notifyIcon1, String.Format("ip: {0} взламывает ваш ресурс прямо сейчас! Мы отправили уведомление на вашу почту!", keyValue.Key)); } else { BackgroundWatcher.makeNotify(notifyIcon1, String.Format("ip: {0} взламывает ваш ресурс прямо сейчас!", keyValue.Key)); } isHackerDetected = true; } if (!dangerousRequests.DangerousIp.ContainsKey(keyValue.Key)) { if (!isHackerDetected) { BackgroundWatcher.makeNotify(notifyIcon1, "Попытка возможного взлома обнаружена"); } dangerousRequests.DangerousIp[keyValue.Key] = keyValue.Value; addDangerousIp?.Invoke(); // 2.Вызов события //writeToAnalisisTextBox(); } else { float value = 0; dangerousRequests.DangerousIp.TryGetValue(keyValue.Key, out value); if (keyValue.Value > value) { if (!isHackerDetected) { BackgroundWatcher.makeNotify(notifyIcon1, "Попытка возможного взлома обнаружена с большей вероятностью"); } dangerousRequests.DangerousIp[keyValue.Key] = keyValue.Value; addDangerousIp?.Invoke(); // 2.Вызов события } } } } //if (dangerousRequests.DangerousIp.Count() > DangerousIpSize) //{ // BackgroundWatcher.makeNotify(notifyIcon1, "Попытка возможного взлома обнаружена"); // //DangerousIpSize = dangerousRequests.DangerousIp.Count(); // //DangerousIpSize = dangerousRequests.DangerousIp.Count(); // //if (!isAnyDangerousIpDetected) // //{ // // isAnyDangerousIpDetected = true; // //} // //isHackDetacted = true; // //foreach(KeyValuePair<string,float> keyValue in dangerousRequests.DangerousIp) // // WriteDangerousRequest_InBackgroundMode_ToWindow(keyValue); // //dangerousRequests.DangerousIp.Clear(); // } //} //foreach (KeyValuePair<string, float> keyValue in dangerousRequests.DangerousIp) //{ // //if (isDangerousIPFound(keyValue)) // //{ // //} //} } }
private void BackgroundModeActive_Click(object sender, EventArgs e) { if (BackgroundModeActive.Text == "Активировать") { DialogResult logWatcherOnDialogResult = MessageBox.Show(String.Format("Вы действительно хотите активировать фоновый режим, анализирующий файл \"{0}\"?", logFile.onlyFileName), "Вы уверены?", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (logWatcherOnDialogResult == DialogResult.Yes) { MailAddress Email = Form2.getEmail(); backgroundWatcher = LogFile.MakeBackgroundWatcher(logFile, notifyIcon1, Email); backgroundWatcher.LogWatcherON(); backgroundWatcher.addDangerousIp += DisplayDangerousRequests; logFile.isBackgroundWatcherON = true; BackgroundModeActive.Text = "Деактивировать"; SearchButton.Enabled = false; searchAllFileOrNotGroupBox.Enabled = false; DateCheckbox.Enabled = false; FileNameCheckbox.Enabled = false; resultTypeCheckbox.Enabled = false; ipCheckbox.Enabled = false; ChoseFileGroupbox.Enabled = false; FileInfoRadioButton.Checked = false; FileInfoRadioButton.Enabled = false; AnalysisTextBox.Enabled = true; AnalysisTextBox.Text = ""; SecurityAnalysisButton.Enabled = false; HackingStatiscticsRadiobutton.Enabled = true; HackingStatiscticsRadiobutton.Checked = true; AnalysisTextBox.Text = "Фоновый режим активирован. Чтобы выйти - нажмите \"Деактивировать\"\n"; AnalysisTextBox.Text += "Угроз не обнаружено, но мы продолжаем работать в этом направлении."; this.WindowState = FormWindowState.Minimized; //WindowState = FormWindowState.Minimized; notifyIcon1.Icon = SystemIcons.Application; notifyIcon1.Visible = true; BackgroundWatcher.makeNotify(notifyIcon1, "log VnVlyzer переведен в фоновый режим"); //Form1_Deactivate(sender, e); } else { return; } } else { DialogResult logWatcherOnDialogResult = MessageBox.Show(String.Format("Вы действительно хотите деактивировать фоновый режим, анализирующий файл \"{0}\"?", logFile.onlyFileName), "Вы уверены?", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (logWatcherOnDialogResult == DialogResult.Yes) { backgroundWatcher.LogWatcherOFF(); BackgroundModeActive.Text = "Активировать"; logFile.isBackgroundWatcherON = false; SearchButton.Enabled = true; searchAllFileOrNotGroupBox.Enabled = true; DateCheckbox.Enabled = true; FileNameCheckbox.Enabled = true; resultTypeCheckbox.Enabled = true; ipCheckbox.Enabled = true; ChoseFileGroupbox.Enabled = true; HackingStatiscticsRadiobutton.Enabled = false; HackingStatiscticsRadiobutton.Checked = false; //richTextBox1.Text = ""; AnalysisTextBox.Text = ""; BackgroundWatcher.makeNotify(notifyIcon1, "log VnVlyzer переведен в обычный режим"); notifyIcon1.Visible = false; } else { return; } } }