Take potentially dangerous PDFs, office documents, or images and convert them to safe PDFs
Find a file
Alex Pyrgiotis e7eb3bf18b
dev_scripts: Fix a recursion issue in our PyTest wrapper
Fix an issue in our PyTest wrapper, that caused this recursion error:

```
  File "shibokensupport/signature/loader.py", line 61, in feature_importedgc
  File "shibokensupport/feature.py", line 137, in feature_importedgc
  File "shibokensupport/feature.py", line 148, in _mod_uses_pysidegc
  File "/usr/lib/python3.10/inspect.py", line 1147, in getsourcegc
    lines, lnum = getsourcelines(object)gc
  File "/usr/lib/python3.10/inspect.py", line 1129, in getsourcelinesgc
    lines, lnum = findsource(object)gc
  File "/usr/lib/python3.10/inspect.py", line 954, in findsourcegc
    lines = linecache.getlines(file, module.__dict__)gc
  File "/home/user/.cache/pypoetry/virtualenvs/dangerzone-hQU0mwlP-py3.10/lib/python3.10/site-packages/py/_vendored_packages/apipkg/__init__.py", line 177, in __dict__gc
    self.__makeattr(name)gc
  File "/home/user/.cache/pypoetry/virtualenvs/dangerzone-hQU0mwlP-py3.10/lib/python3.10/site-packages/py/_vendored_packages/apipkg/__init__.py", line 157, in __makeattrgc
    result = importobj(modpath, attrname)gc
  File "/home/user/.cache/pypoetry/virtualenvs/dangerzone-hQU0mwlP-py3.10/lib/python3.10/site-packages/py/_vendored_packages/apipkg/__init__.py", line 75, in importobjgc
    module = __import__(modpath, None, None, ["__doc__"])gc
  File "shibokensupport/signature/loader.py", line 54, in feature_importgc
RecursionError: maximum recursion depth exceededgc
```

This error seems to be related to
https://github.com/pytest-dev/pytest/issues/1794. By not importing
`pytest` in our test wrapper, and instead executing directly, we can
avoid it.

Note that this seems to be triggered only by Shiboken6, which is why we
hadn't previously encountered it.
2023-02-07 18:52:08 +02:00
.circleci ci: Add a test dependency 2023-02-07 17:14:01 +02:00
.github/workflows Run windows/mac tests daily 2023-01-25 16:35:46 +00:00
assets Update README screenshots for 0.4.0 release 2022-12-02 11:26:21 +00:00
container Remove sudo: no longer needed 2023-01-23 14:13:56 +00:00
dangerzone Add PySide6 dependency for Windows and MacOS 2023-01-30 11:42:18 +00:00
dev_scripts dev_scripts: Fix a recursion issue in our PyTest wrapper 2023-02-07 18:52:08 +02:00
install install: Remove PySide2-related code for Windows 2023-01-30 11:42:24 +00:00
share Add dummy isolation provider to CLI 2023-01-25 14:51:50 +00:00
tests CI: add macOS and Winwdows tests via Github Actions 2023-01-25 16:34:46 +00:00
.gitignore migrate to pytest & test_docs -> tests/test_docs 2022-09-13 13:07:58 +01:00
BUILD.md Add comment about poetry install keyring prompt 2023-01-18 14:17:59 +00:00
CHANGELOG.md Changelog: add exit confirmation feature 2022-12-01 15:24:19 +00:00
INSTALL.md ci: Remove Fedora 35 support 2023-01-16 18:48:09 +02:00
LICENSE Remove useless files from dangerzone-converter, and move files out of separate scripts directory 2021-11-24 12:47:39 -08:00
Makefile Make 'make test' use the Python interpreter 2023-01-25 16:36:31 +00:00
poetry.lock Add PySide6 dependency for Windows and MacOS 2023-01-30 11:42:18 +00:00
pyproject.toml Add PySide6 dependency for Windows and MacOS 2023-01-30 11:42:18 +00:00
README.md README: make screenshots smaller and side-by-side 2022-12-07 10:51:04 +00:00
RELEASE.md Merge pull request #280 from freedomofpress/prepare-0.4.0 2022-12-01 16:50:56 -08:00
setup-windows.py Windows: fix "Open with" dialog showing dz description 2023-01-16 11:38:08 +00:00
setup.py Replace references to github.com/firstlookmedia 2022-12-01 22:31:42 +02:00
stdeb.cfg ci: Fix failing build-debian-bookworm step 2022-12-15 18:30:19 +02:00

Dangerzone

Take potentially dangerous PDFs, office documents, or images and convert them to a safe PDF.

Settings Converting

Dangerzone works like this: You give it a document that you don't know if you can trust (for example, an email attachment). Inside of a sandbox, Dangerzone converts the document to a PDF (if it isn't already one), and then converts the PDF into raw pixel data: a huge list of RGB color values for each page. Then, in a separate sandbox, Dangerzone takes this pixel data and converts it back into a PDF.

Read more about Dangerzone in the blog post Dangerzone: Working With Suspicious Documents Without Getting Hacked.

Getting started

You can also install Dangerzone for Mac using Homebrew: brew install --cask dangerzone

Some features

  • Sandboxes don't have network access, so if a malicious document can compromise one, it can't phone home
  • Dangerzone can optionally OCR the safe PDFs it creates, so it will have a text layer again
  • Dangerzone compresses the safe PDF to reduce file size
  • After converting, Dangerzone lets you open the safe PDF in the PDF viewer of your choice, which allows you to open PDFs and office docs in Dangerzone by default so you never accidentally open a dangerous document

Dangerzone can convert these types of document into safe PDFs:

  • PDF (.pdf)
  • Microsoft Word (.docx, .doc)
  • Microsoft Excel (.xlsx, .xls)
  • Microsoft PowerPoint (.pptx, .ppt)
  • ODF Text (.odt)
  • ODF Spreadsheet (.ods)
  • ODF Presentation (.odp)
  • ODF Graphics (.odg)
  • Jpeg (.jpg, .jpeg)
  • GIF (.gif)
  • PNG (.png)

Dangerzone was inspired by Qubes trusted PDF, but it works in non-Qubes operating systems. It uses containers as sandboxes instead of virtual machines (using Docker for macOS, Windows, and Debian/Ubuntu, and podman for Fedora).

Set up a development environment by following these instructions.