private void CurrentBrowser_YouTubeDownloadComplete(object sender, EventArgs e) { Invoke((MethodInvoker) delegate { uiDownloadProgressBar.Visible = false; DialogResult dialogRes; string fileName; string dateAndtime; using (VideoPreviewer vidPreviewer = new VideoPreviewer(Enums.Actions.Video)) { dialogRes = vidPreviewer.ShowDialog(); fileName = vidPreviewer.FileName + vidPreviewer.FileExtension;; dateAndtime = vidPreviewer.DateAndTime; } if (dialogRes != DialogResult.OK) { return; } DisplaySavedLabel(fileName, dateAndtime); ImageDiskCache.RemoveSpecificItemFromCache(Constants.TempVideoFile); }); }
private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e) { string caseClosed = "[Case closed"; caseClosed += UserSettings.Load().HashContainerOnClose ? "- Hash exported]" : "]"; if (!isInAuditViewMode) //Still getting logged due to this logic also exisitng in the MainForm close method { Logger.Log(new OsirtActionsLog(Enums.Actions.CaseClosed, caseClosed, Constants.CaseContainerName)); } (sender as BackgroundWorker).ReportProgress(10, "Archiving Case... Please Wait"); ZipContainer(password); if (UserSettings.Load().ExportHashOnClose) { HashCase(); } (sender as BackgroundWorker).ReportProgress(10, "Performing Clean Up Operations... Please Wait"); //StopCapture(); DeleteImageMagickFiles(); ImageDiskCache.RemoveItemsInCache(); ImageDiskCache.RemoveSpecificItemFromCache(Constants.TempVideoFile); TorCleanUp(); WriteFavourites(); int attempts = 0; while (CleanUpDirectories()) { if (++attempts > 10) { break; } } }
private void Dialog_VideoDownloadComplete(object sender, EventArgs e) { //show video previewer using (VideoPreviewer vidPreviewer = new VideoPreviewer(Enums.Actions.Video, Path.Combine(Constants.VideoCacheLocation, "temp_facebook_vid.mp4"))) { vidPreviewer.ShowDialog(); } ImageDiskCache.RemoveSpecificItemFromCache(Path.Combine(Constants.VideoCacheLocation, "temp_facebook_vid.mp4")); }
private void Vd_VideoDownloadComplete(object sender, EventArgs e) { Invoke((Action) delegate { using (VideoPreviewer vidPreviewer = new VideoPreviewer(Actions.Video, Path.Combine(Constants.VideoCacheLocation, "temp_video_download.mp4"))) { vidPreviewer.ShowDialog(); } ImageDiskCache.RemoveSpecificItemFromCache(Path.Combine(Constants.VideoCacheLocation, "temp_video_download.mp4")); }); }
private void osirtVideoCapture_VideoCaptureComplete(object sender, EventArgs e) { if (markerWindow != null && markerWindow.Visible) { markerWindow.Close(); markerWindow.Dispose(); } using (VideoPreviewer vidPreviewer = new VideoPreviewer(Enums.Actions.Video)) { vidPreviewer.ShowDialog(); } ImageDiskCache.RemoveSpecificItemFromCache(Constants.TempVideoFile); }
private void CopyPageSaveToCase(string folder, WaitWindowEventArgs e) { using (ZipFile zip = new ZipFile()) { zip.AddDirectory(folder); zip.Save(folder + ".zip"); e.Window.Message = "Zipping...Please Wait"; } string copyTo = Path.Combine(Constants.ContainerLocation, Constants.Directories.GetSpecifiedCaseDirectory(Enums.Actions.Download), Path.GetFileNameWithoutExtension(folder) + ".zip"); File.Copy(folder + ".zip", copyTo); e.Window.Message = "Logging...Please Wait"; Logger.Log(new WebpageActionsLog(uiTabbedBrowserControl.CurrentTab.Browser.URL, Enums.Actions.Download, OsirtHelper.GetFileHash(copyTo), Path.GetFileNameWithoutExtension(folder) + ".zip", "Webpage downloaded")); Thread.Sleep(2000); File.Delete(folder + ".zip"); ImageDiskCache.RemoveItemsInCache(); }
private void snippetToolStripMenuItem_Click(object sender, EventArgs e) { try { if (!SnippingTool.Snip()) { return; } } catch { MessageBox.Show("Unable to use snipping tool. Try closing some tabs. If this continues, restart OSIRT.", "Unable to use snippet tool", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } using (Previewer imagePreviewer = new ImagePreviewer(Enums.Actions.Snippet, uiTabbedBrowserControl.CurrentTab.Browser.URL)) { imagePreviewer.ShowDialog(); } ImageDiskCache.RemoveItemsInCache(); }
private void uiScreenshotButton_Click(object sender, EventArgs e) { try { ImageDiskCache.RemoveItemsInCache(); //may be old items in cache, don't want them getting appended to screenshot //ImageDiskCache.RemoveSpecificItemFromCache(Constants.TempVideoFile); uiBrowserToolStrip.Enabled = false; uiTabbedBrowserControl.FullPageScreenshot(); } catch (ImageMagick.MagickDelegateErrorException mdee) { MessageBox.Show("There has been an error combining the screenshot (MagickDelegateErrorException). Try taking the screenshot again.", "Error combining screenshot", MessageBoxButtons.OK, MessageBoxIcon.Error); ImageDiskCache.RemoveItemsInCache(); ImageDiskCache.RemoveSpecificItemFromCache("temp.mp4"); UiTabbedBrowserControl_ScreenshotComplete(sender, e); } finally { //uiBrowserToolStrip.Enabled = true; } }
private void SaveAs() { try { pathToSave = Path.Combine(Constants.ContainerLocation, Constants.Directories.GetSpecifiedCaseDirectory(action), FileName); string sourceFile = Path.Combine(filePath); File.Copy(sourceFile, pathToSave); //Will need to delete this from the cache ImageDiskCache.RemoveSpecificItemFromCache(filePath); successful = true; } catch (IOException ioe) { MessageBox.Show($"Can't move file to container due to an IOExcpetion... {ioe}"); } catch (UnauthorizedAccessException uae) { MessageBox.Show($"Can't move file to container due to an Unauthorised Access Attempt... {uae}"); } catch (Exception e) { MessageBox.Show($"General... {e}"); } }
private void ShowImagePreviewer(Actions action, string imagePath) { Invoke((MethodInvoker) delegate { ScreenshotDetails details = new ScreenshotDetails(CurrentBrowser.URL); DialogResult dialogRes; string fileName; string dateAndtime; using (Previewer previewForm = new ImagePreviewer(action, CurrentBrowser.URL, imagePath)) { dialogRes = previewForm.ShowDialog(); fileName = previewForm.FileName + previewForm.FileExtension; dateAndtime = previewForm.DateAndTime; } ImageDiskCache.RemoveItemsInCache(); if (dialogRes != DialogResult.OK) { return; } DisplaySavedLabel(fileName, dateAndtime); }); }
private async void FullpageScreenshotByScrolling() { int scrollHeight = GetDocHeight(); if (scrollHeight == 0) { FireScreenshotCompleteEvent(false); return; } Debug.WriteLine("Client rect height: " + ClientRectangle.Size.Height); Debug.WriteLine("Control height: " + Height); Debug.WriteLine("Display Rect height: " + DisplayRectangle.Height); Debug.WriteLine("Client size height: " + ClientSize.Height); Enabled = false; int viewportHeight = ClientRectangle.Size.Height; int viewportWidth = ClientRectangle.Size.Width; await GetBrowser().MainFrame.EvaluateScriptAsync("(function() { document.documentElement.style.overflow = 'hidden'; })();"); int count = 0; int pageLeft = scrollHeight; bool atBottom = false; Debug.WriteLine($"OUTSIDE --- PAGE LEFT: {pageLeft}. VIEWPORT HEIGHT: {viewportHeight}"); ImageDiskCache cache = new ImageDiskCache(); while (!atBottom) { if (pageLeft > viewportHeight) { await GetBrowser().MainFrame.EvaluateScriptAsync("(function() { window.scroll(0," + (count * viewportHeight) + "); })();"); count++; await PutTaskDelay(); //we do need these delays. Some pages, like facebook, may need to load viewport content. using (Bitmap image = GetCurrentViewScreenshot()) { cache.AddImage(count, image); } if (!OsirtHelper.IsOnGoogle(URL)) { await GetBrowser().MainFrame.EvaluateScriptAsync("(function() { var elements = document.querySelectorAll('*'); for (var i = 0; i < elements.length; i++) { var position = window.getComputedStyle(elements[i]).position; if (position === 'fixed') { elements[i].style.visibility = 'hidden'; } } })(); "); } } else { //find out what's left of the page to scroll, then take screenshot //if it's the last image, we're going to need to crop what we need, as it'll take //a capture of the entire viewport. await GetBrowser().MainFrame.EvaluateScriptAsync("(function() { window.scrollBy(0," + pageLeft + "); })();"); atBottom = true; count++; await PutTaskDelay(); Rectangle cropRect = new Rectangle(new Point(0, viewportHeight - pageLeft), new Size(viewportWidth, pageLeft)); using (Bitmap src = GetCurrentViewScreenshot()) using (Bitmap target = new Bitmap(cropRect.Width, cropRect.Height)) using (Graphics g = Graphics.FromImage(target)) { g.DrawImage(src, new Rectangle(0, 0, target.Width, target.Height), cropRect, GraphicsUnit.Pixel); cache.AddImage(count, target); } } pageLeft = pageLeft - viewportHeight; Debug.WriteLine($"IN WHILE --- PAGE LEFT: {pageLeft}. VIEWPORT HEIGHT: {viewportHeight}"); }//end while await GetBrowser().MainFrame.EvaluateScriptAsync("(function() { document.documentElement.style.overflow = 'auto'; })();"); await GetBrowser().MainFrame.EvaluateScriptAsync("javascript:var s = function() { document.body.scrollTop = document.documentElement.scrollTop = 0;}; s();"); if (!OsirtHelper.IsOnGoogle(URL)) { await GetBrowser().MainFrame.EvaluateScriptAsync("(function() { var elements = document.querySelectorAll('*'); for (var i = 0; i < elements.length; i++) { var position = window.getComputedStyle(elements[i]).position; if (position === 'fixed') { elements[i].style.visibility = 'visible'; } } })(); "); } Enabled = true; WaitWindow.Show(GetScreenshot, Resources.strings.CombineScreenshots); FireScreenshotCompleteEvent(true); }
public async void Download(List <RequestWrapper> requests) { directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), DateTime.Now.ToString("ddMMyyyyHHmmss")); Directory.CreateDirectory(directory); //requests = RequestHandler.requestList.ToList(); //Could this list actually be an istance so it can work over multiple tabs? //requests = uiTabbedBrowserControl.CurrentTab.Browser.Requests().ToList(); //TODO: Set this to OSIRT's UA? client.DefaultRequestHeaders.UserAgent.ParseAdd(@"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"); foreach (var r in requests) { try { using (HttpResponseMessage response = await client.GetAsync(r.RequestUrl)) { output += "=================================================================================\r\n"; output += "Request URL: " + r.RequestUrl + "\r\n"; output += "Resource Type: " + r.ResourceType + "\r\n"; output += "Mime Type: " + r.MimeType + "\r\n"; if (response.IsSuccessStatusCode) { using (HttpContent content = response.Content) { var file = await content.ReadAsByteArrayAsync(); if (file.Length > 0 && r.FileName().Length > 0) { using (FileStream fs = new FileStream($@"{directory}\{r.FileName()}", FileMode.Create, FileAccess.Write)) { progress.Report("Downloaded: " + $@"{directory}\{r.FileName()}"); try { fs.Write(file, 0, file.Length); //causing IOException as it has not finished writing //string hash = OsirtHelper.GetFileHash($@"{directory}\{r.FileName()}"); output += "File saved as: " + r.FileName() + "\r\n"; //output += "Hash [" + UserSettings.Load().Hash + "]" + hash; output += "Download completed at: " + DateTime.Now.ToString("yyyy-MM-dd-HH:mm:ss.fffffff") + "\r\n"; output += "=================================================================================\r\n"; } catch { output += "Unabled to save this file \r\n"; output += "=================================================================================\r\n"; } } } else { output += "Unable to save this file as the Content-Length is 0\r\n"; output += "=================================================================================\r\n"; } } } else { output += $"Unable to save this file, HTTP Status Code returned {response.StatusCode.ToString()} \r\n"; output += "=================================================================================\r\n"; } } } catch { } } ImageDiskCache.RemoveItemsInCache(); }