nccgroup / scrying

A tool for collecting RDP, web and VNC screenshots all in one place
Other
439 stars 54 forks source link

Web screenshotting #3

Closed sciguy16 closed 1 year ago

sciguy16 commented 4 years ago

Three potential methods:

  1. Compile in a rendering engine
    • In theory we can use servo/webrender with a glutin headless context but getting that set up is a pain that I haven't worked out yet (I haven't even managed to compile the glutin examples)
  2. use webdriver/selenium and hope that the user has a supported browser installed
  3. shell out to a headless browser

1 gives us the most control at the expense of potentially increasing the binary size fairly significantly and increasing build times 2 relies on the user having a suitable browser installed, but the APIs are fairly easy to use 3 gives us the least control and relies on browser binaries existing and working. May also require spawning a new browser process for each target, which does not scale well

sciguy16 commented 4 years ago

Rust binding to wkhtmlto{pdf,image} might be a good choice if it can be updated to provide image support rather than just PDF.

sciguy16 commented 4 years ago

alternative, dependent on google chrome and node: https://github.com/GoogleChrome/rendertron

sciguy16 commented 4 years ago

The headless_chrome implementation works well enough for now

sciguy16 commented 3 years ago

Try using this to archive the pages, and then render them inside iframes in the report: https://github.com/sciguy16/web-archive

sciguy16 commented 3 years ago

As of 594d1d6 web screenshotting now uses the system webview - either GTK/Webkit on Linux or NativeWindowsGui/EdgeHTML on Windows.

sciguy16 commented 1 year ago

Switched to headless chrome using chromiumoxide and it seems to be reliable