[
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, sex characteristics, gender identity and expression,\nlevel of experience, education, socio-economic status, nationality, personal\nappearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or\n advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic\n address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for other behaviors that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting the project team at alicia@as93.net. All\ncomplaints will be reviewed and investigated and will result in a response that\nis deemed necessary and appropriate to the circumstances. The project team is\nobligated to maintain confidentiality with regard to the reporter of an incident.\nFurther details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,\navailable at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n[homepage]: https://www.contributor-covenant.org\n\nFor answers to common questions about this code of conduct, see\nhttps://www.contributor-covenant.org/faq\n"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "content": "# Contributing\n\nLike most open source projects, this list exists because of contributors like yourself. 💖<br>\nI would like to personally thank you for taking the time to further this list, and also for checking the contributing policy.\n\nYou can find project setup, build and deploy instructions in the [README](./README.md).\n\n---\n\n> [!NOTE]\n> **Working on your first Pull Request?** You can learn more about contributing to open source at [Git-In](https://github.com/Lissy93/git-in)\n\n> [!IMPORTANT]\n> \n> - If you're updating the checklist, the only file you need to update is `personal-security-checklist.yml`. DO NOT edit the markdown or website content directly, as this will be overridden on the next build.\n> - When submitting your pull request, provide references backing up any information that you're adding/amending/removing.\n> - Please ensure you've followed our [code of conduct](/.github/CODE_OF_CONDUCT.md), that is adapted from [Contributor Covenant](https://www.contributor-covenant.org/).\n> - If you're adding or deleting something major, you should consider opening an issue first to discuss it.\n\n> [!WARNING]\n> Users submitting PRs, issues or comments which are either obviously spam or activley offensive **will be reported**\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/addition.yml",
    "content": "name: Addition\ndescription: 🆕 Suggest something to be added to the list\ntitle: '[ADDITION] <title>'\nlabels: ['Suggested Addition', 'Awaiting Review']\nassignees:\n  - lissy93\nbody:\n  # Location\n  - type: input\n    id: location\n    attributes:\n      label: Location\n      description: >-\n        Indicate which section (and if applicable sub-section) the addition should be made\n      placeholder:\n    validations:\n      required: true\n\n  # Addition Info\n  - type: textarea\n    id: addition\n    attributes:\n      label: Addition\n      description: |\n        Please describe what should be added\n        Where applicable, provide links to reputable sources to back up any info\n      placeholder: \n    validations:\n      required: true\n\n  # Can user submit PR\n  - type: dropdown\n    id: canImplement\n    attributes:\n      label: Would you like to submit a PR?\n      description: Is this addition something that you are willing to submit a pull request for?\n      options:\n        - 'No'\n        - 'Maybe'\n        - 'Yes'\n    validations:\n      required: false\n\n\n  # Confirmation checkboxes\n  - type: checkboxes\n    id: idiot-check\n    attributes:\n      label: Please tick the boxes\n      options:\n        - label: To the best of my knowledge, the information I've provided is correct\n          required: true\n        - label: I have checked that a similar ticket has not previously been opened\n          required: true\n        - label: I agree to the repositories [Code of Conduct](https://github.com/Lissy93/personal-security-checklist/blob/master/.github/CODE_OF_CONDUCT.md)\n          required: true\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/amendment.yml",
    "content": "name: Amendment\ndescription: ✏️ Suggest an edit or bring attention to a mistake\ntitle: '[AMENDMENT] <title>'\nlabels: ['Suggested Amendment', 'Awaiting Review']\nassignees:\n  - lissy93\nbody:\n  # Location\n  - type: input\n    id: location\n    attributes:\n      label: Location\n      description: >-\n        Indicate which section (and if applicable sub-section) the amendment should be made\n      placeholder:\n    validations:\n      required: true\n\n  # Amendments description\n  - type: textarea\n    id: amendments\n    attributes:\n      label: Amendments\n      description: |\n        Please describe what amendments should be made.\n        If relating to content change, please also provide links to backup any information\n      placeholder: \n    validations:\n      required: true\n\n  # Can user submit PR\n  - type: dropdown\n    id: canImplement\n    attributes:\n      label: Would you like to submit a PR?\n      description: Is this amendment something that you are willing to submit a pull request for?\n      options:\n        - 'No'\n        - 'Maybe'\n        - 'Yes'\n    validations:\n      required: false\n\n\n  # Confirmation checkboxes\n  - type: checkboxes\n    id: idiot-check\n    attributes:\n      label: Please tick the boxes\n      options:\n        - label: To the best of my knowledge, the information I've provided is correct\n          required: true\n        - label: I have checked that a similar ticket has not previously been opened\n          required: true\n        - label: I agree to the repositories [Code of Conduct](https://github.com/Lissy93/personal-security-checklist/blob/master/.github/CODE_OF_CONDUCT.md)\n          required: true\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/removal.yml",
    "content": "name: Removal\ndescription: ❌ Suggest something that should be removed from the list\ntitle: '[REMOVAL] <title>'\nlabels: ['Suggested Removal', 'Awaiting Review']\nassignees:\n  - lissy93\nbody:\n  # Location\n  - type: input\n    id: location\n    attributes:\n      label: What should be removed?\n      description: >-\n        Indicate which point, and from which section you are referring to\n      placeholder:\n    validations:\n      required: true\n\n  # Removal description\n  - type: textarea\n    id: removal\n    attributes:\n      label: Justification\n      description: |\n        Describe why this should be removed\n        Where applicable, provide links to reputable sources to back up any info\n      placeholder: \n    validations:\n      required: true\n\n  # Can user submit PR\n  - type: dropdown\n    id: canImplement\n    attributes:\n      label: Would you like to submit a PR?\n      description: Is this removal something that you are willing to submit a pull request for?\n      options:\n        - 'No'\n        - 'Maybe'\n        - 'Yes'\n    validations:\n      required: false\n\n  # Confirmation checkboxes\n  - type: checkboxes\n    id: idiot-check\n    attributes:\n      label: Please tick the boxes\n      options:\n        - label: To the best of my knowledge, the information I've provided is correct\n          required: true\n        - label: I have checked that a similar ticket has not previously been opened\n          required: true\n        - label: I agree to the repositories [Code of Conduct](https://github.com/Lissy93/personal-security-checklist/blob/master/.github/CODE_OF_CONDUCT.md)\n          required: true\n\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "<!--\nThank you for contributing the The Personal Security Checklist 🫶\nSo that your PR can be reviewed quickly, please complete the following sections:\n-->\n\n#### Category\n<!-- Indicate the type of PR (delete as necessary) -->\nChecklist addition or deletion / Spelling, grammatical or link updates / website code changes / other\n\n#### Overview\n<!-- Briefly outline your new changes -->\n\n#### Issue Number _(if applicable)_\n<!-- If this PR is related to an issue, please include ticket number. -->\n\n#### Supporting Material _(if applicable)_\n<!-- For any content changes, additions or deletions, please include links to relevant references or supported materials -->\n\n#### Association _(if applicable)_\n<!-- If you are affiliated with a product or service that relates to this PR, please disclose this for transparency -->\n\n#### Checklist\n<!-- Please complete the following checklist 😇 -->\n- [ ] I have performed a self-review (valid links, formatting, spelling and grammar)\n- [ ] I have indicated whether I have any affiliation with any software/ services edited\n- [ ] I have read the [Contributing Guidelines](.github/CONTRIBUTING.md), and agree to follow the [Code of Conduct](/.github/CODE_OF_CONDUCT.md)\n"
  },
  {
    "path": ".github/README.md",
    "content": "<h1 align=\"center\">Personal Security Checklist</h1>\n\n<p align=\"center\">\n<b><i>The ultimate list of tips to secure your digital life</i></b>\n<br />\n<b>🌐 <a href=\"https://digital-defense.io/\">digital-defense.io</a></b><br />\n<br />\n<a href=\"https://personal-security-checklist.as93.net\"><img src=\"https://i.ibb.co/Rb6P6h6/shield.png\" width=\"64\" /><br /></a>\n<br />\n<kbd><br />👉 <a href=\"https://github.com/Lissy93/personal-security-checklist/blob/HEAD/CHECKLIST.md\"><b>Read the Checklist</b></a> 👈<br /><br /></kbd>\n<br />\n</p>\n\n<details>\n    <summary><b>Contents</b></summary>\n    \n- [The Checklist](#the-checklist)\n- [The Website](#the-website)\n- [The API](#the-api)\n- [Contributing](#contributing)\n- [Credits](#credits)\n- [License](#license)\n\n</details>\n\n---\n\n## The Checklist\n\nYou can read the full checklist in [`CHECKLIST.md`](https://github.com/Lissy93/personal-security-checklist/blob/HEAD/CHECKLIST.md).<br>\n<sub>To view/edit the raw data, see [`personal-security-checklist.yml`](https://github.com/Lissy93/personal-security-checklist/blob/master/personal-security-checklist.yml)</sub>\n\n---\n\n## The Website\n\nThe easiest method for consuming the checklist is via our website: **[digital-defense.io](https://digital-defense.io/)**\n\nHere you can browse lists, filter by your threat model and tick items off once complete (plus, there are pretty charts to make you feel good about your progress ☺️).\n\n<p align=\"center\">\n<img width=\"600\" src=\"https://i.ibb.co/jzKn05H/digital-defense.png\" />\n</p>\n\n### About\nThe source for the website is in [`web/`](https://github.com/Lissy93/personal-security-checklist/blob/HEAD/web).<br />\nThe site is built with Qwik, using TypeScript and some components from DaisyUI.\n\n### Developing\nTo run the app locally, or to make code changes, you'll need Node and Git installed.\n\n1. Grab the code: `git clone git@github.com:Lissy93/personal-security-checklist.git`\n2. Navigate into the source: `cd personal-security-checklist/web`\n3. Install dependencies: `yarn`\n4. Start the development server: `yarn dev`\n\nAlternatively, just open this repo in Code Spaces, where everything is already configured and ready to go.\n\n### Deploying\nTo deploy the app, follow the developing steps above, then run `yarn build`, `yarn build.static`. You can then deploy it by copying the `dist/` directory to any CDN, web server or static hosting provider of your choice.\n\nAlternatively, fork the repo and import it into your providers' dashboard. Or use the link below for an easy 1-click deployment 😉\n\n---\n\n## The API\n\nWe also make all the data available via a free API, which you can use however you wish.\n\n### Usage\nAll endpoints are documented in our OpenAPI spec, you can view these and try them out via our [Swagger docs]().\n\nBase: digital-defense.io/api\n\n/api/checklists\n/api/checklists/[name-or-index]\n/api/checklists/[name]/[point-index]\n/api/search/[searchterm]\n\n## Contributing\nAll checklist data is stored in [`personal-security-checklist.yml`](https://github.com/Lissy93/personal-security-checklist/blob/HEAD/personal-security-checklist.yml). This is pulled in the website at build-time and referenced by the API, and is also dynamically inserted into the markdown [Checklist page](https://github.com/Lissy93/personal-security-checklist/blob/HEAD/CHECKLIST.md).\n\nSo if you only wish to make changes to the data, this is the only file you need to edit.\n\nImportant: When submitting your pull request, provide references backing up any information that you're adding/amending/removing.\n\nFor modifying the website or API source, see the developing sections above for instructions on running locally.\n\nBefore submitting an issue or PR, please ensure you've followed the [community guidelines](https://github.com/Lissy93/personal-security-checklist/blob/master/.github/CONTRIBUTING.md) and followed the [Code of Conduct](https://github.com/Lissy93/personal-security-checklist/blob/HEAD/.github/CODE_OF_CONDUCT.md).\n\n---\n\n\n## Credits\n\n### Sponsors\n\n![sponsors badge](https://readme-contribs.as93.net/sponsors/lissy93?avatarSize=80&perRow=10)\n\n### Contributors\n\n![contributors badge](https://readme-contribs.as93.net/contributors/lissy93/personal-security-checklist?perRow=16&limit=96)\n\n\n### Stargzers\n\n![stargazers badge](https://readme-contribs.as93.net/stargazers/lissy93/personal-security-checklist?perRow=16&limit=64)\n\n\n## Credits\n\nThank you to all who have contributed to, or sponsored this project!\n\n### Sponsors\n\n\nIf you've found this repository helpful, consider sponsoring me on GitHub if you're able 💜\n\n### Contributors\n\n\n---\n\n\n## License\n\n> _**[Lissy93/Personal-Security-Checklist](https://github.com/Lissy93/personal-security-checklist)** is licensed under [MIT](https://github.com/Lissy93/personal-security-checklist/blob/HEAD/LICENSE) © [Alicia Sykes](https://aliciasykes.com) 2024._<br>\n> <sup align=\"right\">For information, see <a href=\"https://tldrlegal.com/license/mit-license\">TLDR Legal > MIT</a></sup>\n\n<details>\n<summary>Expand License</summary>\n\n```\nThe MIT License (MIT)\nCopyright (c) Alicia Sykes <alicia@omg.com> \n\nPermission is hereby granted, free of charge, to any person obtaining a copy \nof this software and associated documentation files (the \"Software\"), to deal \nin the Software without restriction, including without limitation the rights \nto use, copy, modify, merge, publish, distribute, sub-license, and/or sell \ncopies of the Software, and to permit persons to whom the Software is furnished \nto do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included install \ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANT ABILITY, FITNESS FOR A\nPARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n```\n\n</details>\n\n\n\n\n<!-- License + Copyright -->\n<p  align=\"center\">\n  <i>© <a href=\"https://aliciasykes.com\">Alicia Sykes</a> 2024</i><br>\n  <i>Licensed under <a href=\"https://gist.github.com/Lissy93/143d2ee01ccc5c052a17\">MIT</a></i><br>\n  <a href=\"https://github.com/lissy93\"><img src=\"https://i.ibb.co/4KtpYxb/octocat-clean-mini.png\" /></a><br>\n  <sup>Thanks for visiting :)</sup>\n</p>\n\n<!-- Dinosaurs are Awesome -->\n<!-- \n                        . - ~ ~ ~ - .\n      ..     _      .-~               ~-.\n     //|     \\ `..~                      `.\n    || |      }  }              /       \\  \\\n(\\   \\\\ \\~^..'                 |         }  \\\n \\`.-~  o      /       }       |        /    \\\n (__          |       /        |       /      `.\n  `- - ~ ~ -._|      /_ - ~ ~ ^|      /- _      `.\n              |     /          |     /     ~-.     ~- _\n              |_____|          |_____|         ~ - . _ _~_-_\n-->\n\n"
  },
  {
    "path": ".github/workflows/insert-checklist.yml",
    "content": "name: ☑️ Generate and insert markdown from YAML\n\non:\n  workflow_dispatch:\n  push:\n    branches: [ master ]\n    paths: ['personal-security-checklist.yml']\n    \njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout repository 🛎️\n        uses: actions/checkout@v2\n        \n      # Get current date-time (used for commit message)\n      - name: Get Date 📅\n        id: date\n        run: echo \"::set-output name=date::$(date +'%d-%b-%Y')\"\n        \n      # Downloads + installs Python (used for running gen scripts)  \n      - name: Set up Python 🐍\n        uses: actions/setup-python@v2\n        with:\n          python-version: '3.x'\n          \n      # Install contents of requirements.txt\n      - name: Install dependencies 📥\n        run: |\n          python -m pip install --upgrade pip\n          cd lib && pip install -r requirements.txt\n\n      # The make command triggers all the Python scripts, generates output\n      - name: Run make command 🔨\n        run: python lib/generate.py\n\n      # Commit and push the outputed JSON files\n      - name: Commit and push generated files ⤴️\n        run: |\n          git config --global user.name \"Liss-Bot\"\n          git config --global user.email \"alicia-gh-bot@mail.as93.net\"\n          git pull origin master\n          git add CHECKLIST.md\n          if git diff --staged --quiet; then\n            echo \"Nothin new added, so nothing to commit, exiting...\"\n          else\n            git commit -m \"Updates checklist (auto-generated, on ${{ steps.date.outputs.date }})\"\n            git push\n          fi\n"
  },
  {
    "path": ".github/workflows/maintain-gh-pages.yml",
    "content": "name: 🐙 Update gh-pages site\n\non:\n  workflow_dispatch: # Manual dispatch\n  push:\n    branches: [ master ]\n    paths: ['CHECKLIST.md']\n\njobs:\n  update-readme:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n\n      - name: Configure git\n        run: |\n          git config --global user.email \"liss-bot@d0h.co\"\n          git config --global user.name \"Liss.Bot\"\n\n      - name: Copy CHECKLIST.md to gh-pages\n        run: |\n          # Fetch all branches\n          git fetch --all\n          \n          # Switch to gh-pages branch\n          git checkout gh-pages\n          \n          # Copy CHECKLIST from master branch\n          git checkout master -- CHECKLIST.md\n          \n          # Move and rename CHECKLIST.md to the root\n          mv CHECKLIST.md README.md\n          \n          # Check if there are changes, if so commit and push\n          if [ -n \"$(git status --porcelain)\" ]; then\n            git add README.md\n            git commit -m \"Update README.md from master branch\"\n            git push origin gh-pages\n          else\n            echo \"No changes in README.md\"\n          fi\n"
  },
  {
    "path": ".github/workflows/sync-mirror.yml",
    "content": "# Pushes the contents of the repo to the Codeberg mirror\nname: 🪞 Mirror to Codeberg\non:\n  workflow_dispatch:\n  schedule:\n    - cron: '30 0 * * 0'\njobs:\n  codeberg:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n        with: { fetch-depth: 0 }\n      - uses: pixta-dev/repository-mirroring-action@v1\n        with:\n          target_repo_url: git@codeberg.org:alicia/personal-security-checklist.git\n          ssh_private_key: ${{ secrets.CODEBERG_SSH }}\n \n"
  },
  {
    "path": "CHECKLIST.md",
    "content": "\n[![Awesome](https://awesome.re/badge-flat2.svg)](https://github.com/zbetcheckin/Security_list)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n[![License](https://img.shields.io/badge/LICENSE-CC_BY_4.0-00a2ff?&style=flat-square)](https://creativecommons.org/licenses/by/4.0/)\n[![Contributors](https://img.shields.io/github/contributors/lissy93/personal-security-checklist?color=%23ffa900&style=flat-square)](https://github.com/Lissy93/personal-security-checklist/graphs/contributors)\n\n<p align=\"center\"><img src=\"https://i.ibb.co/rGQK71g/personal-security-checklist-6.png\" /></p>\n\n*<p align=\"center\">A curated checklist of tips to protect your digital security and privacy</p>*\n\n### Contents\n\n[<img src=\"https://i.ibb.co/XbyGTrP/1-authentication-2-36x36.png\" width=\"28\" height=\"28\" /> Authentication](#authentication)<br>\n[<img src=\"https://i.ibb.co/8KMrdbX/2-internet-36x36.png\" width=\"28\" height=\"28\" /> Browsing the Web](#web-browsing)<br>\n[<img src=\"https://i.ibb.co/7NrXW3L/5-email-36x36.png\" width=\"28\" height=\"28\" /> Email](#emails)<br>\n[<img src=\"https://i.ibb.co/DrWJBT9/13-messaging-36x36.png\" width=\"28\" height=\"28\" /> Secure Messaging](#secure-messaging)<br>\n[<img src=\"https://i.ibb.co/GFYyXMd/6-social-media-36x36.png\" width=\"28\" height=\"28\" /> Social Media](#social-media)<br>\n[<img src=\"https://i.ibb.co/0VTZQpH/3-networking-36x36.png\" width=\"28\" height=\"28\" /> Networks](#networking)<br>\n[<img src=\"https://i.ibb.co/F3WwqsV/7-phones-36x36.png\" width=\"28\" height=\"28\" /> Mobile Phones](#mobile-devices)<br>\n[<img src=\"https://i.ibb.co/ZftcgJq/8-computers-36x36.png\" width=\"28\" height=\"28\" /> Personal Computers](#personal-computers)<br>\n[<img src=\"https://i.ibb.co/b2S9372/9-smart-home-36x36.png\" width=\"28\" height=\"28\" /> Smart Home](#smart-home)<br>\n[<img src=\"https://i.ibb.co/4JTqL5y/12-finance-36x36.png\" width=\"28\" height=\"28\" /> Personal Finance](#personal-finance)<br>\n[<img src=\"https://i.ibb.co/KVPV1Lk/10-human-36x36.png\" width=\"28\" height=\"28\" /> Human Aspect](#sensible-computing)<br>\n[<img src=\"https://i.ibb.co/9NbhBww/11-physical-36x36.png\" width=\"28\" height=\"28\" /> Physical Security](#physical-security)<br>\n\nToo long? 🦒 See the [TLDR version](https://github.com/Lissy93/personal-security-checklist/blob/HEAD/articles/2_TLDR_Short_List.md) instead.\n\nFor a list of privacy-respecting software, check out [Awesome-Privacy](https://github.com/lissy93/awesome-privacy).\n\nA mirror of this repo is available at [codeberg.org/alicia/personal-security-checklist](https://codeberg.org/alicia/personal-security-checklist).\n\n---\n\n<!-- checklist-start -->\n## Authentication\n\nMost reported data breaches are caused by the use of weak, default, or stolen passwords (according to [this Verizon report](http://www.verizonenterprise.com/resources/reports/rp_dbir-2016-executive-summary_xg_en.pdf)). Use long, strong, and unique passwords, manage them in a secure password manager, enable 2-factor authentication, keep on top of breaches, and take care while logging into your accounts.\n\n**Security** | **Priority** | **Details and Hints**\n--- | --- | ---\n**Use a Strong Password** | Essential | If your password is too short, or contains dictionary words, places, or names, then it can be easily cracked through brute force or guessed by someone. The easiest way to make a strong password is by making it long (12+ characters) — consider using a 'passphrase' made up of many words. Alternatively, use a password generator to create a long, strong random password. Have a play with [Security.org's How Secure Is My Password?](https://security.org/how-secure-is-my-password/), to get an idea of how quickly common passwords can be cracked. Read more about creating strong passwords: [securityinabox.org](https://securityinabox.org/en/passwords/passwords/).\n**Don't Reuse Passwords** | Essential | If someone were to reuse a password and one site they had an account with suffered a leak, then a criminal could easily gain unauthorized access to their other accounts. This is usually done through large-scale automated login requests, and it is called Credential Stuffing. Unfortunately, this is all too common, but it's simple to protect against — use a different password for each of your online accounts.\n**Use a Secure Password Manager** | Essential | For most people, it is going to be near-impossible to remember hundreds of strong and unique passwords. A password manager is an application that generates, stores, and auto-fills your login credentials for you. All your passwords will be encrypted against 1 master password (which you must remember, and it should be very strong). Most password managers have browser extensions and mobile apps, so whatever device you are on, your passwords can be auto-filled. A good all-rounder is [Bitwarden](https://awesome-privacy.xyz/essentials/password-managers/bitwarden), or see [Recommended Password Managers](https://awesome-privacy.xyz/essentials/password-managers).\n**Avoid Sharing Passwords** | Essential | While there may be times that you need to share access to an account with another person, you should generally avoid doing this because it makes it easier for the account to become compromised. If you absolutely do need to share a password — for example, when working on a team with a shared account — this should be done via features built into a password manager.\n**Enable 2-Factor Authentication** | Essential | 2FA is where you must provide both something you know (a password) and something you have (such as a code on your phone) to log in. This means that if anyone has your password (e.g., through phishing, malware, or a data breach), they will not be able to log into your account. It's easy to get started, download [an authenticator app](https://github.com/Lissy93/awesome-privacy#2-factor-authentication) onto your phone, and then go to your account security settings and follow the steps to enable 2FA. Next time you log in on a new device, you will be prompted for the code that is displayed in the app on your phone (it works without internet, and the code usually changes every 30 seconds).\n**Keep Backup Codes Safe** | Essential | When you enable multi-factor authentication, you will usually be given several codes that you can use if your 2FA method is lost, broken, or unavailable. Keep these codes somewhere safe to prevent loss or unauthorized access. You should store these on paper or in a safe place on disk (e.g., in offline storage or an encrypted file/drive). Don't store these in your password manager as 2FA sources and passwords should be kept separately.\n**Sign Up for Breach Alerts** | Optional | After a website suffers a significant data breach, the leaked data often ends up on the internet. Several websites collect these leaked records and allow you to search your email address to check if you are in any of their lists. [Firefox Monitor](https://monitor.firefox.com), [Have I Been Pwned](https://haveibeenpwned.com), and [DeHashed](https://dehashed.com) allow you to sign up for monitoring, where they will notify you if your email address appears in any new data sets. It is useful to know as soon as possible when this happens so that you can change your passwords for the affected accounts. [Have i been pwned](https://awesome-privacy.xyz/security-tools/online-tools/have-i-been-pwned) also has domain-wide notification, where you can receive alerts if any email addresses under your entire domain appear (useful if you use aliases for [anonymous forwarding](https://github.com/Lissy93/awesome-privacy#anonymous-mail-forwarding)).\n**Shield your Password/PIN** | Optional | When typing your password in public places, ensure you are not in direct line of sight of a CCTV camera and that no one can see over your shoulder. Cover your password or pin code while you type, and do not reveal any plain text passwords on your screen.\n**Update Critical Passwords Periodically** | Optional | Database leaks and breaches are common, and, likely, several of your passwords are already somewhere online. Occasionally updating passwords of security-critical accounts can help mitigate this. But providing that all your passwords are long, strong, and unique, there is no need to do this too often — annually should be sufficient. Enforcing mandatory password changes within organisations is [no longer recommended](https://duo.com/decipher/microsoft-will-no-longer-recommend-forcing-periodic-password-changes), as it encourages colleagues to select weaker passwords.\n**Don’t Save your Password in Browsers** | Optional | Most modern browsers offer to save your credentials when you log into a site. Don’t allow this, as they are not always encrypted and could allow someone to gain access to your accounts. Instead, use a dedicated password manager to store (and auto-fill) your passwords.\n**Avoid Logging In on Someone Else’s Device** | Optional | Avoid logging in on other people's computers since you can't be sure their system is clean. Be especially cautious of public machines, as malware and tracking arr more common here. Using someone else's device is especially dangerous with critical accounts like online banking. When using someone else's machine, ensure that you're in a private/incognito session (Use Ctrl+Shift+N/ Cmd+Shift+N). This will request the browser to not save your credentials, cookies, and browsing history.\n**Avoid Password Hints** | Optional | Some sites allow you to set password hints. Often, it is very easy to guess answers. In cases where password hints are mandatory, use random answers and record them in your password manager (`Name of the first school: 6D-02-8B-!a-E8-8F-81`).\n**Never Answer Online Security Questions Truthfully** | Optional | If a site asks security questions (such as place of birth, mother's maiden name, or first car, etc.), don't provide real answers. It is a trivial task for hackers to find out this information online or through social engineering. Instead, create a fictitious answer, and store it inside your password manager. Using real words is better than random characters, as [explained here](https://news.ycombinator.com/item?id=29244870).\n**Don’t Use a 4-digit PIN** | Optional | Don’t use a short PIN to access your smartphone or computer. Instead, use a text password or a much longer PIN. Numeric passphrases are easy to crack (A 4-digit pin has 10,000 combinations, compared to 7.4 million for a 4-character alpha-numeric code).\n**Avoid Using SMS for 2FA** | Optional | When enabling multi-factor authentication, opt for app-based codes or a hardware token if supported. SMS is susceptible to several common threats, such as [SIM-swapping](https://www.maketecheasier.com/sim-card-hijacking) and [interception](https://secure-voice.com/ss7_attacks). There's also no guarantee of how securely your phone number will be stored or what else it will be used for. From a practical point of view, SMS will only work when you have a signal and can be slow. If a website or service requires the usage of an SMS number for recovery, consider purchasing a second pre-paid phone number only used for account recovery for these instances.\n**Avoid Using your PM to Generate OTPs** | Advanced | Many password managers are also able to generate 2FA codes. It is best not to use your primary password manager as your 2FA authenticator as well, since it would become a single point of failure if compromised. Instead, use a dedicated [authenticator app](https://github.com/Lissy93/awesome-privacy#2-factor-authentication) on your phone or laptop.\n**Avoid Face Unlock** | Advanced | Most phones and laptops offer a facial recognition authentication feature, using the camera to compare a snapshot of your face with a stored hash. It may be very convenient, but there are numerous ways to [fool it](https://www.forbes.com/sites/jvchamary/2017/09/18/security-apple-face-id-iphone-x/) and gain access to the device through digital photos and reconstructions from CCTV footage. Unlike your password, there are likely photos of your face on the internet and videos recorded by surveillance cameras.\n**Watch Out for Keyloggers** | Advanced | A hardware [keylogger](https://en.wikipedia.org/wiki/Hardware_keylogger) is a physical device planted between your keyboard and the USB port, which intercepts all keystrokes and sometimes relays data to a remote server. It gives a hacker access to everything typed, including passwords. The best way to stay protected is just by checking your USB connection after your PC has been unattended. It is also possible for keyloggers to be planted inside the keyboard housing, so look for any signs that the case has been tampered with, and consider bringing your own keyboard to work. Data typed on a virtual keyboard, pasted from the clipboard, or auto-filled by a password manager can not be intercepted by a hardware keylogger.\n**Consider a Hardware Token** | Advanced | A U2F/FIDO2 security key is a USB (or NFC) device that you insert while logging in to an online service to verify your identity instead of entering a OTP from your authenticator. [SoloKey](https://solokeys.com) and [NitroKey](https://www.nitrokey.com) are examples of such keys. They bring with them several security benefits. Since the browser communicates directly with the device, it cannot be fooled as to which host is requesting\n**Use Passkeys Where Available** | Recommended | Passkeys (also known as FIDO2 WebAuthn) are a passwordless authentication method that is more secure and convenient than traditional passwords. They use your devices biometric authentication (fingerprint, face ID) or a PIN to log in, and are resistant to phishing attacks. Many major services now support passkeys including Google, Apple, Microsoft, and GitHub. Consider enabling passkeys for accounts that offer them as an alternative to passwords or as an additional 2FA method. authentication because the TLS certificate is checked. [This post](https://security.stackexchange.com/a/71704) is a good explanation of the security of using FIDO U2F tokens. Of course, it is important to store the physical key somewhere safe or keep it on your person. Some online accounts allow for several methods of 2FA to be enabled.\n**Consider Offline Password Manager** | Advanced | For increased security, an encrypted offline password manager will give you full control over your data. [KeePass](https://awesome-privacy.xyz/essentials/password-managers/keepass) is a popular choice, with lots of [plugins](https://[KeePass](https://awesome-privacy.xyz/essentials/password-managers/keepass).info/plugins.html) and community forks with additional compatibility and functionality. Popular clients include: [KeePassXC](https://keepassxc.org) (desktop), [KeePassDX](https://www.keepassdx.com) (Android) and [StrongBox](https://apps.apple.com/us/app/strongbox-password-safe/id897283731) (iOS). The drawback being that it may be slightly less convenient for some, and it will be up to you to back it up and store it securely.\n**Consider Unique Usernames** | Advanced | Having different passwords for each account is a good first step, but if you also use a unique username, email, or phone number to log in, then it will be significantly harder for anyone trying to gain unauthorised access. The easiest method for multiple emails, is using auto-generated aliases for anonymous mail forwarding. This is where [anything]@yourdomain.com will arrive in your inbox, allowing you to use a different email for each account (see [Mail Alias Providers](https://github.com/Lissy93/awesome-privacy#mail-forwarding)). Usernames are easier since you can use your password manager to generate, store, and auto-fill these. Virtual phone numbers can be generated through your VOIP provider.\n\n### Recommended Software\n- [Password Managers](https://awesome-privacy.xyz/essentials/password-managers)\n- [2-Factor Authentication](https://awesome-privacy.xyz/essentials/2-factor-authentication)\n\n\n## Web Browsing\n\nMost websites on the internet will use some form of tracking, often to gain insight into their users behaviour and preferences. This data can be incredibly detailed, and so is extremely valuable to corporations, governments and intellectual property thieves. Data breaches and leaks are common, and deanonymizing users web activity is often a trivial task.\n\nThere are two primary methods of tracking; stateful (cookie-based), and stateless (fingerprint-based). Cookies are small pieces of information, stored in your browser with a unique ID that is used to identify you. Browser fingerprinting is a highly accurate way to identify and track users wherever they go online. The information collected is quite comprehensive, and often includes browser details, OS, screen resolution, supported fonts, plugins, time zone, language and font preferences, and even hardware configurations.\n\nThis section outlines the steps you can take, to be better protected from threats, minimise online tracking and improve privacy.\n\n**Security** | **Priority** | **Details and Hints**\n--- | --- | ---\n**Block Ads** | Essential | Using an ad-blocker can help improve your privacy, by blocking the trackers that ads implement. [uBlock Origin](https://awesome-privacy.xyz/networking/ad-blockers/ublock-origin) is a very efficient and open source browser addon, developed by Raymond Hill. When 3rd-party ads are displayed on a webpage, they have the ability to track you, gathering personal information about you and your habits, which can then be sold, or used to show you more targeted ads, and some ads are plain malicious or fake. Blocking ads also makes pages load faster, uses less data and provides a less cluttered experience.\n**Ensure Website is Legitimate** | Basic | It may sound obvious, but when you logging into any online accounts, double check the URL is correct. Storing commonly visited sites in your bookmarks is a good way to ensure the URL is easy to find. When visiting new websites, look for common signs that it could be unsafe: Browser warnings, redirects, on-site spam and pop-ups. You can also check a website using a tool, such as: [Virus Total](https://awesome-privacy.xyz/security-tools/online-tools/virus-total), [IsLegitSite](https://www.islegitsite.com), [Google Safe Browsing Status](https://transparencyreport.google.com/safe-browsing/search) if you are unsure.\n**Watch out for Browser Malware** | Basic | Your system or browser can be compromised by spyware, miners, browser hijackers, malicious redirects, adware etc. You can usually stay protected, just by: ignoring pop-ups, be wary of what your clicking, don't proceed to a website if your browser warns you it may be malicious. Common signs of browser malware include: default search engine or homepage has been modified, toolbars, unfamiliar extensions or icons, significantly more ads, errors and pages loading much slower than usual. These articles from Heimdal explain [signs of browser malware](https://heimdalsecurity.com/blog/warning-signs-operating-system-infected-malware), [how browsers get infected](https://heimdalsecurity.com/blog/practical-online-protection-where-malware-hides) and [how to remove browser malware](https://heimdalsecurity.com/blog/malware-removal).\n**Use a Privacy-Respecting Browser** | Essential | [Firefox](https://awesome-privacy.xyz/essentials/browsers/firefox) (with a few tweaks) and [Brave](https://awesome-privacy.xyz/essentials/browsers/brave-browser) are secure, private-respecting browsers. Both are fast, open source, user-friendly and available on all major operating systems. Your browser has access to everything that you do online, so if possible, avoid Google Chrome, Edge and Safari as (without correct configuration) all three of them, collect usage data, call home and allow for invasive tracking. Firefox requires a few changes to achieve optimal security, for example - [arkenfox](https://github.com/arkenfox/user.js/wiki) or [12byte](https://12bytes.org/firefox-configuration-guide-for-privacy-freaks-and-performance-buffs/)'s user.js configs. See more: [Privacy Browsers](https://github.com/Lissy93/awesome-privacy#browsers).\n**Use a Private Search Engine** | Essential | Using a privacy-preserving, non-tracking search engine, will reduce risk that your search terms are not logged, or used against you. Consider [DuckDuckGo](https://awesome-privacy.xyz/essentials/search-engines/duckduckgo), or [Qwant](https://awesome-privacy.xyz/essentials/search-engines/qwant). Google implements some [incredibly invasive](https://hackernoon.com/data-privacy-concerns-with-google-b946f2b7afea) tracking policies, and have a history of displaying [biased search results](https://www.businessinsider.com/evidence-that-google-search-results-are-biased-2014-10). Therefore Google, along with Bing, Baidu, Yahoo and Yandex are incompatible with anyone looking to protect their privacy. It is recommended to update your [browsers default search](https://duckduckgo.com/install) to a privacy-respecting search engine.\n**Remove Unnecessary Browser Addons** | Essential | Extensions are able to see, log or modify anything you do in the browser, and some innocent looking browser apps, have malicious intentions. Websites can see which extensions you have installed, and may use this to enhance your fingerprint, to more accurately identify/ track you. Both [Firefox](https://awesome-privacy.xyz/essentials/browsers/firefox) and Chrome web stores allow you to check what permissions/access rights an extension requires before you install it. Check the reviews. Only install extensions you really need, and removed those which you haven't used in a while.\n**Keep Browser Up-to-date** | Essential | Browser vulnerabilities are constantly being [discovered](https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=browser) and patched, so it’s important to keep it up to date, to avoid a zero-day exploit. You can [see which browser version you're using here](https://www.whatismybrowser.com/), or follow [this guide](https://www.whatismybrowser.com/guides/how-to-update-your-browser/) for instructions on how to update. Some browsers will auto-update to the latest stable version.\n**Check for HTTPS** | Essential | If you enter information on a non-HTTPS website, this data is transported unencrypted and can therefore be read by anyone who intercepts it. Do not enter any data on a non-HTTPS website, but also do not let the green padlock give you a false sense of security, just because a website has SSL certificate, does not mean that it is legitimate or trustworthy. [HTTPS-Everywhere](https://www.eff.org/https-everywhere) (developed by the [EFF](https://www.eff.org/)) used to be a browser extension/addon that automatically enabled HTTPS on websites, but as of 2022 is now deprecated. In their [accouncement article](https://www.eff.org/) the EFF explains that most browsers now integrate such protections. Additionally, it provides instructions for [Firefox](https://awesome-privacy.xyz/essentials/browsers/firefox), Chrome, Edge and Safari browsers on how to enable their HTTPS secure protections.\n**Use DNS-over-HTTPS** | Essential | Traditional DNS makes requests in plain text for everyone to see. It allows for eavesdropping and manipulation of DNS data through man-in-the-middle attacks. Whereas DNS-over-HTTPS performs DNS resolution via the HTTPS protocol, meaning data between you and your DNS resolver is encrypted. A popular option is [CloudFlare](https://awesome-privacy.xyz/networking/dns-providers/cloudflare)'s [1.1.1.1](https://awesome-privacy.xyz/security-tools/mobile-apps/1.1.1.1), or compare providers- it is simple to enable in-browser. Note that DoH comes with its own issues, mostly preventing web filtering.\n**Multi-[Session](https://awesome-privacy.xyz/communication/encrypted-messaging/session) Containers** | Essential | Compartmentalisation is really important to keep different aspects of your browsing separate. For example, using different profiles for work, general browsing, social media, online shopping etc will reduce the number associations that data brokers can link back to you. One option is to make use of [Firefox Containers](https://awesome-privacy.xyz/security-tools/browser-extensions/firefox-multi-account-containers) which is designed exactly for this purpose. Alternatively, you could use different browsers for different tasks ([Brave](https://awesome-privacy.xyz/essentials/browsers/brave-browser), [Firefox](https://awesome-privacy.xyz/essentials/browsers/firefox), [Tor](https://awesome-privacy.xyz/networking/mix-networks/tor) etc).\n**Use Incognito** | Essential | When using someone else's machine, ensure that you're in a private/ incognito session. This will prevent browser history, cookies and some data being saved, but is not fool-proof- you can still be tracked.\n**Understand Your Browser Fingerprint** | Essential | Browser Fingerprinting is an incredibly accurate method of tracking, where a website identifies you based on your device information. You can view your fingerprint at amiunique.org- The aim is to be as un-unique as possible.\n**Manage Cookies** | Essential | Clearing cookies regularly is one step you can take to help reduce websites from tracking you. Cookies may also store your session token, which if captured, would allow someone to access your accounts without credentials. To mitigate this you should clear cookies often.\n**Block Third-Party Cookies** | Essential | Third-party cookies placed on your device by a website other than the one you’re visiting. This poses a privacy risk, as a 3rd entity can collect data from your current session. This guide explains how you can disable 3rd-party cookies, and you can check here ensure this worked.\n**Block Third-Party Trackers** | Essential | Blocking trackers will help to stop websites, advertisers, analytics and more from tracking you in the background. [Privacy Badger](https://awesome-privacy.xyz/security-tools/browser-extensions/privacy-badger), [DuckDuckGo Privacy Essentials](https://awesome-privacy.xyz/security-tools/browser-extensions/privacy-essentials), [uBlock Origin](https://awesome-privacy.xyz/networking/ad-blockers/ublock-origin) and uMatrix (advanced) are all very effective, open source tracker-blockers available for all major browsers.\n**Beware of Redirects** | Optional | While some redirects are harmless, others, such as Unvalidated redirects are used in phishing attacks, it can make a malicious link seem legitimate. If you are unsure about a redirect URL, you can check where it forwards to with a tool like RedirectDetective.\n**Do Not Sign Into Your Browser** | Optional | Many browsers allow you to sign in, in order to sync history, bookmarks and other browsing data across devices. However this not only allows for further data collection, but also increases attack surface through providing another avenue for a malicious actor to get hold of personal information.\n**Disallow Prediction Services** | Optional | Some browsers allow for prediction services, where you receive real-time search results or URL auto-fill. If this is enabled then data is sent to Google (or your default search engine) with every keypress, rather than when you hit enter.\n**Avoid G Translate for Webpages** | Optional | When you visit a web page written in a foreign language, you may be prompted to install the Google Translate extension. Be aware that Google collects all data (including input fields), along with details of the current user. Instead use a translation service that is not linked to your browser.\n**Disable Web Notifications** | Optional | Browser push notifications are a common method for criminals to encourage you to click their link, since it is easy to spoof the source. Be aware of this, and for instructions on disabling browser notifications, see this article.\n**Disable Automatic Downloads** | Optional | Drive-by downloads is a common method of getting harmful files onto a users device. This can be mitigated by disabling auto file downloads, and be cautious of websites which prompt you to download files unexpectedly.\n**Disallow Access to Sensors** | Optional | Mobile websites can tap into your device sensors without asking. If you grant these permissions to your browser once, then all websites are able to use these capabilities, without permission or notification.\n**Disallow Location** | Optional | Location Services lets sites ask for your physical location to improve your experience. This should be disabled in settings. Note that there are still other methods of determining your approximate location.\n**Disallow Camera/ Microphone access** | Optional | Check browser settings to ensure that no websites are granted access to webcam or microphone. It may also be beneficial to use physical protection such as a webcam cover and microphone blocker.\n**Disable Browser Password Saves** | Optional | Do not allow your browser to store usernames and passwords. These can be easily viewed or accessed. Instead use a password manager.\n**Disable Browser Autofill** | Optional | Turn off autofill for any confidential or personal details. This feature can be harmful if your browser is compromised in any way. Instead, consider using your password manager's Notes feature.\n**Protect from Exfil Attack** | Optional | The CSS Exfiltrate attack is a method where credentials and other sensitive details can be snagged with just pure CSS. You can stay protected, with the [CSS Exfil Protection](https://awesome-privacy.xyz/security-tools/browser-extensions/css-exfil-protection) plugin.\n**Deactivate ActiveX** | Optional | ActiveX is a browser extension API that built into Microsoft IE, and enabled by default. It's not commonly used anymore, but since it gives plugins intimate access rights, and can be dangerous, therefore you should disable it.\n**Disable WebRTC** | Optional | WebRTC allows high-quality audio/video communication and peer-to-peer file-sharing straight from the browser. However it can pose as a privacy leak. To learn more, check out this guide.\n**Spoof HTML5 Canvas Sig** | Optional | Canvas Fingerprinting allows websites to identify and track users very accurately. You can use the Canvas-Fingerprint-Blocker extension to spoof your fingerprint or use [Tor](https://awesome-privacy.xyz/networking/mix-networks/tor).\n**Spoof User Agent** | Optional | The user agent tells the website what device, browser and version you are using. Switching user agent periodically is one small step you can take to become less unique.\n**Disregard DNT** | Optional | Enabling Do Not Track has very limited impact, since many websites do not respect or follow this. Since it is rarely used, it may also add to your signature, making you more unique.\n**Prevent HSTS Tracking** | Optional | HSTS was designed to help secure websites, but privacy concerns have been raised as it allowed site operators to plant super-cookies. It can be disabled by visiting chrome://net-internals/#hsts in Chromium-based browsers.\n**Prevent Automatic Browser Connections** | Optional | Even when you are not using your browser, it may call home to report on usage activity, analytics and diagnostics. You may wish to disable some of this, which can be done through the settings.\n**Enable 1st-Party Isolation** | Optional | [First Party Isolation](https://awesome-privacy.xyz/security-tools/browser-extensions/first-party-isolation) means that all identifier sources and browser state are scoped using the URL bar domain, this can greatly reduce tracking.\n**Strip Tracking Params from URLs** | Advanced | Websites often append additional GET parameters to URLs that you click, to identify information like source/referrer. You can sanitize manually, or use an extension like [ClearURLs](https://awesome-privacy.xyz/security-tools/browser-extensions/clearurls) to strip tracking data from URLs automatically.\n**First Launch Security** | Advanced | After installing a web browser, the first time you launch it (prior to configuring its privacy settings), most browsers will call home. Therefore, after installing a browser, you should first disable your internet connection, then configure privacy options before reenabling your internet connectivity.\n**Use The Tor Browser** | Advanced | The [Tor](https://awesome-privacy.xyz/networking/mix-networks/tor) Project provides a browser that encrypts and routes your traffic through multiple nodes, keeping users safe from interception and tracking. The main drawbacks are speed and user experience.\n**Disable JavaScript** | Advanced | Many modern web apps are JavaScript-based, so disabling it will greatly decrease your browsing experience. But if you really want to go all out, then it will really reduce your attack surface.\n\n### Recommended Software\n- [Privacy Browsers](https://github.com/Lissy93/awesome-privacy#browsers)\n- [Browser Extensions](https://github.com/Lissy93/awesome-privacy#browser-extensions)\n- [Browser & Bookmark Sync](https://github.com/Lissy93/awesome-privacy#browser-sync)\n\n\n## Email\n\nNearly 50 years since the first email was sent, it's still very much a big part of our day-to-day life, and will continue to be for the near future. So considering how much trust we put in them, it's surprising how fundamentally insecure this infrastructure is. Email-related fraud [is on the up](https://www.csoonline.com/article/3247670/email/email-security-in-2018.html), and without taking basic measures you could be at risk.\n\nIf a hacker gets access to your emails, it provides a gateway for your other accounts to be compromised (through password resets), therefore email security is paramount for your digital safety.\n\nThe big companies providing \"free\" email service, don't have a good reputation for respecting users privacy: Gmail was caught giving [third parties full access](https://www.wsj.com/articles/techs-dirty-secret-the-app-developers-sifting-through-your-gmail-1530544442) to user emails and also [tracking all of your purchases](https://www.cnbc.com/2019/05/17/google-gmail-tracks-purchase-history-how-to-delete-it.html). Yahoo was also caught scanning emails in real-time [for US surveillance agencies](http://news.trust.org/item/20161004170601-99f8c) Advertisers [were granted access](https://thenextweb.com/insider/2018/08/29/both-yahoo-and-aol-are-scanning-customer-emails-to-attract-advertisers) to Yahoo and AOL users messages to “identify and segment potential customers by picking up on contextual buying signals, and past purchases.”\n\n**Security** | **Priority** | **Details and Hints**\n--- | --- | ---\n**Have more than one email address** | Essential | Consider using a different email address for security-critical communications from trivial mail such as newsletters. This compartmentalization could reduce the amount of damage caused by a data breach, and also make it easier to recover a compromised account.\n**Keep Email Address Private** | Essential | Do not share your primary email publicly, as mail addresses are often the starting point for most phishing attacks.\n**Keep your Account Secure** | Essential | Use a long and unique password, enable 2FA and be careful while logging in. Your email account provides an easy entry point to all your other online accounts for an attacker.\n**Disable Automatic Loading of Remote Content** | Essential | Email messages can contain remote content such as images or stylesheets, often automatically loaded from the server. You should disable this, as it exposes your IP address and device information, and is often used for tracking. For more info, see [this article](https://www.theverge.com/2019/7/3/20680903/email-pixel-trackers-how-to-stop-images-automatic-download).\n**Use Plaintext** | Optional | There are two main types of emails on the internet: plaintext and HTML. The former is strongly preferred for privacy & security as HTML messages often include identifiers in links and inline images, which can collect usage and personal data. There's also numerous risks of remote code execution targeting the HTML parser of your mail client, which cannot be exploited if you are using plaintext. For more info, as well as setup instructions for your mail provider, see [UsePlaintext.email](https://useplaintext.email/).\n**Don’t connect third-party apps to your email account** | Optional | If you give a third-party app or plug-in full access to your inbox, they effectively have full unhindered access to all your emails and their contents, which poses significant security and privacy risks.\n**Don't Share Sensitive Data via Email** | Optional | Emails are very easily intercepted. Furthermore, you can’t be sure of how secure your recipient's environment is. Therefore, emails cannot be considered safe for exchanging confidential information, unless it is encrypted.\n**Consider Switching to a Secure Mail Provider** | Optional | Secure and reputable email providers such as [Forward Email](https://awesome-privacy.xyz/communication/encrypted-email/forward-email), [ProtonMail](https://awesome-privacy.xyz/communication/mail-forwarding/protonmail), and [Tutanota](https://awesome-privacy.xyz/communication/encrypted-email/tuta) allow for end-to-end encryption, full privacy as well as more security-focused features. Unlike typical email providers, your mailbox cannot be read by anyone but you, since all messages are encrypted.\n**Use Smart Key** | Advanced | OpenPGP does not support Forward secrecy, which means if either your or the recipient's private key is ever stolen, all previous messages encrypted with it will be exposed. Therefore, you should take great care to keep your private keys safe. One method of doing so, is to use a USB Smart Key to sign or decrypt messages, allowing you to do so without your private key leaving the USB device.\n**Use Aliasing / Anonymous Forwarding** | Advanced | Email aliasing allows messages to be sent to [anything]@my-domain.com and still land in your primary inbox. Effectively allowing you to use a different, unique email address for each service you sign up for. This means if you start receiving spam, you can block that alias and determine which company leaked your email address.\n**Subaddressing** | Optional | An alternative to aliasing is subaddressing, where anything after the `+` symbol is omitted during mail delivery. This enables you to keep track of who shared/ leaked your email address, but unlike aliasing, it will not protect against your real address being revealed.\n**Use a Custom Domain** | Advanced | Using a custom domain means that you are not dependent on the address assigned by your mail provider. So you can easily switch providers in the future and do not need to worry about a service being discontinued.\n**Sync with a client for backup** | Advanced | To avoid losing temporary or permanent access to your emails during an unplanned event (such as an outage or account lock), Thunderbird can sync/ backup messages from multiple accounts via IMAP and store locally on your primary device.\n**Be Careful with Mail Signatures** | Advanced | You do not know how secure of an email environment the recipient of your message may have. There are several extensions that automatically crawl messages, and create a detailed database of contact information based upon email signatures.\n**Be Careful with Auto-Replies** | Advanced | Out-of-office automatic replies are very useful for informing people there will be a delay in replying, but all too often people reveal too much information- which can be used in social engineering and targeted attacks.\n**Choose the Right Mail Protocol** | Advanced | Do not use outdated protocols (below IMAPv4 or POPv3), both have known vulnerabilities and out-dated security.\n**Self-Hosting** | Advanced | Self-hosting your own mail server is not recommended for non-advanced users, since correctly securing it is critical yet requires strong networking knowledge.\n**Always use TLS Ports** | Advanced | There are SSL options for POP3, IMAP, and SMTP as standard TCP/IP ports. They are easy to use, and widely supported so should always be used instead of plaintext email ports.\n**DNS Availability** | Advanced | For self-hosted mail servers, to prevent DNS problems impacting availability- use at least 2 MX records, with secondary and tertiary MX records for redundancy when the primary MX record fails.\n**Prevent DDoS and Brute Force Attacks** | Advanced | For self-hosted mail servers (specifically SMTP), limit your total number of simultaneous connections, and maximum connection rate to reduce the impact of attempted bot attacks.\n**Maintain IP Blacklist** | Advanced | For self-hosted mail servers, you can improve spam filters and harden security, through maintaining an up-to-date local IP blacklist and a spam URI realtime block lists to filter out malicious hyperlinks.\n\n### Recommended Software\n- [Secure Email Providers](https://github.com/Lissy93/awesome-privacy#encrypted-email)\n- [Mail Forwarding](https://github.com/Lissy93/awesome-privacy#anonymous-mail-forwarding)\n- [Pre-Configured Mail Servers](https://github.com/Lissy93/awesome-privacy#pre-configured-mail-servers)\n- [Email Clients](https://github.com/Lissy93/awesome-privacy#email-clients)\n\n\n## Messaging\n\n\n\n**Security** | **Priority** | **Details and Hints**\n--- | --- | ---\n**Only Use Fully End-to-End Encrypted Messengers** | Essential | End-to-end encryption is a system of communication where messages are encrypted on your device and not decrypted until they reach the intended recipient. This ensures that any actor who intercepts traffic cannot read the message contents, nor can anybody with access to the central servers where data is stored.\n**Use only Open Source Messaging Platforms** | Essential | If code is open source then it can be independently examined and audited by anyone qualified to do so, to ensure that there are no backdoors, vulnerabilities, or other security issues.\n**Use a \"Trustworthy\" Messaging Platform** | Essential | When selecting an encrypted messaging app, ensure it's fully open source, stable, actively maintained, and ideally backed by reputable developers.\n**Check Security Settings** | Essential | Enable security settings, including contact verification, security notifications, and encryption. Disable optional non-security features such as read receipt, last online, and typing notification.\n**Ensure your Recipients Environment is Secure** | Essential | Your conversation can only be as secure as the weakest link. Often the easiest way to infiltrate a communications channel is to target the individual or node with the least protection.\n**Disable Cloud Services** | Essential | Some mobile messaging apps offer a web or desktop companion. This not only increases attack surface but it has been linked to several critical security issues, and should therefore be avoided, if possible.\n**Secure Group Chats** | Essential | The risk of compromise rises exponentially, the more participants are in a group, as the attack surface increases. Periodically check that all participants are legitimate.\n**Create a Safe Environment for Communication** | Essential | There are several stages where your digital communications could be monitored or intercepted. This includes: your or your participants' device, your ISP, national gateway or government logging, the messaging provider, the servers.\n**Agree on a Communication Plan** | Optional | In certain situations, it may be worth making a communication plan. This should include primary and backup methods of securely getting in hold with each other.\n**Strip Meta-Data from Media** | Optional | Metadata is \"Data about Data\" or additional information attached to a file or transaction. When you send a photo, audio recording, video, or document you may be revealing more than you intended to.\n**Defang URLs** | Optional | Sending links via various services can unintentionally expose your personal information. This is because, when a thumbnail or preview is generated- it happens on the client-side.\n**Verify your Recipient** | Optional | Always ensure you are talking to the intended recipient, and that they have not been compromised. One method for doing so is to use an app which supports contact verification.\n**Enable Ephemeral Messages** | Optional | Self-destructing messages is a feature that causes your messages to automatically delete after a set amount of time. This means that if your device is lost, stolen, or seized, an adversary will only have access to the most recent communications.\n**Avoid SMS** | Optional | SMS may be convenient, but it's not secure. It is susceptible to threats such as interception, sim swapping, manipulation, and malware.\n**Watch out for Trackers** | Optional | Be wary of messaging applications with trackers, as the detailed usage statistics they collect are often very invasive, and can sometimes reveal your identity as well as personal information that you would otherwise not intend to share.\n**Consider Jurisdiction** | Advanced | The jurisdictions where the organisation is based, and data is hosted should also be taken into account.\n**Use an Anonymous Platform** | Advanced | If you believe you may be targeted, you should opt for an anonymous messaging platform that does not require a phone number, or any other personally identifiable information to sign up or use.\n**Ensure Forward Secrecy is Supported** | Advanced | Opt for a platform that implements forward secrecy. This is where your app generates a new encryption key for every message.\n**Consider a Decentralized Platform** | Advanced | If all data flows through a central provider, you have to trust them with your data and meta-data. You cannot verify that the system running is authentic without back doors.\n\n### Recommended Software\n- [Secure Messaging Apps](https://github.com/Lissy93/awesome-privacy#encrypted-messaging)\n- [P2P Messaging Platforms](https://github.com/Lissy93/awesome-privacy#p2p-messaging)\n\n\n## Social Media\n\nOnline communities have existed since the invention of the internet, and give people around the world the opportunity to connect, communicate and share. Although these networks are a great way to promote social interaction and bring people together, that have a dark side - there are some serious [Privacy Concerns with Social Networking Services](https://en.wikipedia.org/wiki/Privacy_concerns_with_social_networking_services), and these social networking sites are owned by private corporations, and that they make their money by collecting data about individuals and selling that data on, often to third party advertisers.\nSecure your account, lock down your privacy settings, but know that even after doing so, all data intentionally and non-intentionally uploaded is effectively public. If possible, avoid using conventional social media networks.\n\n\n**Security** | **Priority** | **Details and Hints**\n--- | --- | ---\n**Secure your Account** | Essential | Social media profiles get stolen or taken over all too often. To protect your account: use a unique and strong password, and enable 2-factor authentication.\n**Check Privacy Settings** | Essential | Most social networks allow you to control your privacy settings. Ensure that you are comfortable with what data you are currently exposing and to whom.\n**Think of All Interactions as Public** | Essential | There are still numerous methods of viewing a users 'private' content across many social networks. Therefore, before uploading, posting or commenting on anything, think \"Would I mind if this was totally public?\"\n**Think of All Interactions as Permanent** | Essential | Pretty much every post, comment, photo etc is being continuously backed up by a myriad of third-party services, who archive this data and make it indexable and publicly available almost forever.\n**Don't Reveal too Much** | Essential | Profile information creates a goldmine of info for hackers, the kind of data that helps them personalize phishing scams. Avoid sharing too much detail (DoB, Hometown, School etc).\n**Be Careful what you Upload** | Essential | Status updates, comments, check-ins and media can unintentionally reveal a lot more than you intended them to. This is especially relevant to photos and videos, which may show things in the background.\n**Don't Share Email or Phone Number** | Essential | Posting your real email address or mobile number, gives hackers, trolls and spammers more munition to use against you, and can also allow separate aliases, profiles or data points to be connected.\n**Don't Grant Unnecessary Permissions** | Essential | By default many of the popular social networking apps will ask for permission to access your contacts, call log, location, messaging history etc. If they don’t need this access, don’t grant it.\n**Be Careful of 3rd-Party Integrations** | Essential | Avoid signing up for accounts using a Social Network login, revoke access to social apps you no longer use.\n**Avoid Publishing Geo Data while still Onsite** | Essential | If you plan to share any content that reveals a location, then wait until you have left that place. This is particularly important when you are taking a trip, at a restaurant, campus, hotel/resort, public building or airport.\n**Remove metadata before uploading media** | Optional | Most smartphones and some cameras automatically attach a comprehensive set of additional data (called EXIF data) to each photograph. Remove this data before uploading.\n**Implement Image Cloaking** | Advanced | Tools like Fawkes can be used to very subtly, slightly change the structure of faces within photos in a way that is imperceptible by humans, but will prevent facial recognition systems from being able to recognize a given face.\n**Consider Spoofing GPS in home vicinity** | Advanced | Even if you yourself never use social media, there is always going to be others who are not as careful, and could reveal your location.\n**Consider False Information** | Advanced | If you just want to read, and do not intend on posting too much- consider using an alias name, and false contact details.\n**Don’t have any social media accounts** | Advanced | Social media is fundamentally un-private, so for maximum online security and privacy, avoid using any mainstream social networks.\n\n### Recommended Software\n- [Alternative Social Media](https://github.com/Lissy93/awesome-privacy#social-networks)\n- [Alternative Video Platforms](https://github.com/Lissy93/awesome-privacy#video-platforms)\n- [Alternative Blogging Platforms](https://github.com/Lissy93/awesome-privacy#blogging-platforms)\n- [News Readers and Aggregation](https://github.com/Lissy93/awesome-privacy#news-readers-and-aggregation)\n\n\n## Networks\n\nThis section covers how you connect your devices to the internet securely, including configuring your router and setting up a VPN.\n\n\n**Security** | **Priority** | **Details and Hints**\n--- | --- | ---\n**Use a VPN** | Essential | Use a reputable, paid-for VPN. This can help protect sites you visit from logging your real IP, reduce the amount of data your ISP can collect, and increase protection on public WiFi.\n**Change your Router Password** | Essential | After getting a new router, change the password. Default router passwords are publicly available, meaning anyone within proximity would be able to connect.\n**Use WPA2, and a strong password** | Essential | There are different authentication protocols for connecting to WiFi. Currently, the most secure options are WPA2 and WPA3 (on newer routers).\n**Keep router firmware up-to-date** | Essential | Manufacturers release firmware updates that fix security vulnerabilities, implement new standards, and sometimes add features or improve the performance of your router.\n**Implement a Network-Wide VPN** | Optional | If you configure your VPN on your router, firewall, or home server, then traffic from all devices will be encrypted and routed through it, without needing individual VPN apps.\n**Protect against DNS leaks** | Optional | When using a VPN, it is extremely important to exclusively use the DNS server of your VPN provider or secure service.\n**Use a secure VPN Protocol** | Optional | OpenVPN and WireGuard are open source, lightweight, and secure tunneling protocols. Avoid using PPTP or SSTP.\n**Secure DNS** | Optional | Use DNS-over-HTTPS which performs DNS resolution via the HTTPS protocol, encrypting data between you and your DNS resolver.\n**Avoid the free router from your ISP** | Optional | Typically they’re manufactured cheaply in bulk in China, with insecure propriety firmware that doesn't receive regular security updates.\n**Whitelist MAC Addresses** | Optional | You can whitelist MAC addresses in your router settings, disallowing any unknown devices to immediately connect to your network, even if they know your credentials.\n**Change the Router’s Local IP Address** | Optional | It is possible for a malicious script in your web browser to exploit a cross-site scripting vulnerability, accessing known-vulnerable routers at their local IP address and tampering with them.\n**Don't Reveal Personal Info in SSID** | Optional | You should update your network name, choosing an SSID that does not identify you, include your flat number/address, and does not specify the device brand/model.\n**Opt-Out Router Listings** | Optional | WiFi SSIDs are scanned, logged, and then published on various websites, which is a serious privacy concern for some.\n**Hide your SSID** | Optional | Your router's Service Set Identifier is simply the network name. If it is not visible, it may receive less abuse.\n**Disable WPS** | Optional | Wi-Fi Protected Setup provides an easier method to connect, without entering a long WiFi password, but WPS introduces a series of major security issues.\n**Disable UPnP** | Optional | Universal Plug and Play allows applications to automatically forward a port on your router, but it has a long history of serious security issues.\n**Use a Guest Network for Guests** | Optional | Do not grant access to your primary WiFi network to visitors, as it enables them to interact with other devices on the network.\n**Change your Router's Default IP** | Optional | Modifying your router admin panel's default IP address will make it more difficult for malicious scripts targeting local IP addresses.\n**Kill unused processes and services on your router** | Optional | Services like Telnet and SSH that provide command-line access to devices should never be exposed to the internet and should also be disabled on the local network unless they're actually needed.\n**Don't have Open Ports** | Optional | Close any open ports on your router that are not needed. Open ports provide an easy entrance for hackers.\n**Disable Unused Remote Access Protocols** | Optional | When protocols such as PING, Telnet, SSH, UPnP, and HNAP etc are enabled, they allow your router to be probed from anywhere in the world.\n**Disable Cloud-Based Management** | Optional | You should treat your router's admin panel with the utmost care, as considerable damage can be caused if an attacker is able to gain access.\n**Manage Range Correctly** | Optional | It's common to want to pump your router's range to the max, but if you reside in a smaller flat, your attack surface is increased when your WiFi network can be picked up across the street.\n**Route all traffic through [Tor](https://awesome-privacy.xyz/networking/mix-networks/tor)** | Advanced | VPNs have their weaknesses. For increased security, route all your internet traffic through the [Tor](https://awesome-privacy.xyz/networking/mix-networks/tor) network.\n**Disable WiFi on all Devices** | Advanced | Connecting to even a secure WiFi network increases your attack surface. Disabling your home WiFi and connect each device via Ethernet.\n\n### Recommended Software\n- [Virtual Private Networks](https://github.com/Lissy93/awesome-privacy#virtual-private-networks)\n- [Mix Networks](https://github.com/Lissy93/awesome-privacy#mix-networks)\n- [Router Firmware](https://github.com/Lissy93/awesome-privacy#router-firmware)\n- [Open Source Proxies](https://github.com/Lissy93/awesome-privacy#proxies)\n- [DNS Providers](https://github.com/Lissy93/awesome-privacy#dns)\n- [Firewalls](https://github.com/Lissy93/awesome-privacy#firewalls)\n- [Network Analysis Tools](https://github.com/Lissy93/awesome-privacy#network-analysis)\n- [Self-Hosted Network Security Tools](https://github.com/Lissy93/awesome-privacy#self-hosted-network-security)\n\n\n## Mobile Devices\n\nSmart phones have revolutionized so many aspects of life and brought the world to our fingertips. For many of us, smart phones are our primary means of communication, entertainment and access to knowledge. But while they've brought convenience to whole new level, there's some ugly things going on behind the screen.\nGeo-tracking is used to trace our every move, and we have little control over who has this data- your phone is even able to [track your location without GPS](https://gizmodo.com/how-to-track-a-cellphone-without-gps-or-consent-1821125371). Over the years numerous reports that surfaced, outlining ways in which your phone's [mic can eavesdrop](https://www.independent.co.uk/life-style/gadgets-and-tech/news/smartphone-apps-listening-privacy-alphonso-shazam-advertising-pool-3d-honey-quest-a8139451.html), and the [camera can watch you](https://www.businessinsider.com/hackers-governments-smartphone-iphone-camera-wikileaks-cybersecurity-hack-privacy-webcam-2017-6)- all without your knowledge or consent. And then there's the malicious apps, lack of security patches and potential/ likely backdoors.\nUsing a smart phone generates a lot of data about you- from information you intentionally share, to data silently generated from your actions. It can be scary to see what Google, Microsoft, Apple and Facebook know about us- sometimes they know more than our closest family. It's hard to comprehend what your data will reveal, especially in conjunction with other data.\nThis data is used for [far more than just advertising](https://internethealthreport.org/2018/the-good-the-bad-and-the-ugly-sides-of-data-tracking/) - more often it's used to rate people for finance, insurance and employment. Targeted ads can even be used for fine-grained surveillance (see [ADINT](https://adint.cs.washington.edu))\nMore of us are concerned about how [governments use collect and use our smart phone data](https://www.statista.com/statistics/373916/global-opinion-online-monitoring-government/), and rightly so, federal agencies often [request our data from Google](https://www.statista.com/statistics/273501/global-data-requests-from-google-by-federal-agencies-and-governments/), [Facebook](https://www.statista.com/statistics/287845/global-data-requests-from-facebook-by-federal-agencies-and-governments/), Apple, Microsoft, Amazon, and other tech companies. Sometimes requests are made in bulk, returning detailed information on everybody within a certain geo-fence, [often for innocent people](https://www.nytimes.com/interactive/2019/04/13/us/google-location-tracking-police.html). And this doesn't include all of the internet traffic that intelligence agencies around the world have unhindered access to.\n\n\n**Security** | **Priority** | **Details and Hints**\n--- | --- | ---\n**Encrypt your Device** | Essential | In order to keep your data safe from physical access, use file encryption. This will mean if your device is lost or stolen, no one will have access to your data.\n**Turn off connectivity features that aren’t being used** | Essential | When you're not using WiFi, Bluetooth, NFC etc, turn those features off. There are several common threats that utilise these features.\n**Keep app count to a minimum** | Essential | Uninstall apps that you don’t need or use regularly. As apps often run in the background, slowing your device down, but also collecting data.\n**App Permissions** | Essential | Don’t grant apps permissions that they don’t need. For Android, [Bouncer](https://awesome-privacy.xyz/security-tools/mobile-apps/bouncer) is an app that allows you to grant temporary/ 1-off permissions.\n**Only install Apps from official source** | Essential | Applications on Apple App Store and Google Play Store are scanned and cryptographically signed, making them less likely to be malicious.\n**Be Careful of Phone Charging Threats** | Optional | Juice Jacking is when hackers use public charging stations to install malware on your smartphone or tablet through a compromised USB port.\n**Set up a mobile carrier PIN** | Essential | SIM hijacking is when a hacker is able to get your mobile number transferred to their sim. The easiest way to protect against this is to set up a PIN through your mobile provider.\n**Opt-out of Caller ID Listings** | Optional | To keep your details private, you can unlist your number from caller ID apps like TrueCaller, CallApp, SyncMe, and Hiya.\n**Use Offline Maps** | Optional | Consider using an offline maps app, such as OsmAnd or Organic Maps, to reduce data leaks from map apps.\n**Opt-out of personalized ads** | Optional | You can slightly reduce the amount of data collected by opting-out of seeing personalized ads.\n**Erase after too many login attempts** | Optional | To protect against an attacker brute forcing your pin, set your device to erase after too many failed login attempts.\n**Monitor Trackers** | Optional | [εxodus](https://awesome-privacy.xyz/security-tools/online-tools/εxodus) is a great service which lets you search for any app and see which trackers are embedded in it.\n**Use a Mobile Firewall** | Optional | To prevent applications from leaking privacy-sensitive data, you can install a firewall app.\n**Reduce Background Activity** | Optional | For Android, SuperFreeze makes it possible to entirely freeze all background activities on a per-app basis.\n**Sandbox Mobile Apps** | Optional | Prevent permission-hungry apps from accessing your private data with [Island](https://awesome-privacy.xyz/security-tools/mobile-apps/island), a sandbox environment.\n**Tor Traffic** | Advanced | [Orbot](https://awesome-privacy.xyz/security-tools/mobile-apps/orbot) provides a system-wide Tor connection, which will help protect you from surveillance and public WiFi threats.\n**Avoid Custom Virtual Keyboards** | Optional | It is recommended to stick with your device's stock keyboard. If you choose to use a third-party keyboard app, ensure it is reputable.\n**Restart Device Regularly** | Optional | Restarting your phone at least once a week will clear the app state cached in memory and may run more smoothly after a restart.\n**Avoid SMS** | Optional | SMS should not be used to receive 2FA codes or for communication, instead use an encrypted messaging app, such as [Signal](https://awesome-privacy.xyz/communication/encrypted-messaging/signal).\n**Keep your Number Private** | Optional | [MySudo](https://awesome-privacy.xyz/finance/virtual-credit-cards/mysudo) allows you to create and use virtual phone numbers for different people or groups. This is great for compartmentalisation.\n**Watch out for Stalkerware** | Optional | Stalkerware is malware that is installed directly onto your device by someone you know. The best way to get rid of it is through a factory reset.\n**Favor the Browser, over Dedicated App** | Optional | Where possible, consider using a secure browser to access sites, rather than installing dedicated applications.\n**Consider running a custom ROM (Android)** | Advanced | If you're concerned about your device manufacturer collecting too much personal information, consider a privacy-focused custom ROM.\n\n### Recommended Software\n- [Mobile Apps, for Security + Privacy](https://github.com/Lissy93/awesome-privacy#mobile-apps)\n- [Encrypted Messaging](https://github.com/Lissy93/awesome-privacy#encrypted-messaging)\n- [Mobile Operation Systems](https://github.com/Lissy93/awesome-privacy#mobile-operating-systems)\n\n\n## Personal Computers\n\nAlthough Windows and OS X are easy to use and convenient, they both are far from secure. Your OS provides the interface between hardware and your applications, so if compromised can have detrimental effects.\n\n\n**Security** | **Priority** | **Details and Hints**\n--- | --- | ---\n**Keep your System up-to-date** | Essential | System updates contain fixes/patches for security issues, improve performance, and sometimes add new features. Install new updates when prompted.\n**Encrypt your Device** | Essential | Use BitLocker for Windows, FileVault on MacOS, or LUKS on Linux, to enable full disk encryption. This prevents unauthorized access if your computer is lost or stolen.\n**Backup Important Data** | Essential | Maintaining encrypted backups prevents loss due to ransomware, theft, or damage. Consider using [Cryptomator](https://awesome-privacy.xyz/security-tools/mobile-apps/cryptomator) for cloud files or [VeraCrypt](https://awesome-privacy.xyz/essentials/file-encryption/veracrypt) for USB drives.\n**Be Careful Plugging USB Devices into your Computer** | Essential | USB devices can pose serious threats. Consider making a USB sanitizer with CIRCLean to safely check USB devices.\n**Activate Screen-Lock when Idle** | Essential | Lock your computer when away and set it to require a password on resume from screensaver or sleep to prevent unauthorized access.\n**Disable Cortana or Siri** | Essential | Voice-controlled assistants can have privacy implications due to data sent back for processing. Disable or limit their listening capabilities.\n**Review your Installed Apps** | Essential | Keep installed applications to a minimum to reduce exposure to vulnerabilities and regularly clear application caches.\n**Manage Permissions** | Essential | Control which apps have access to your location, camera, microphone, contacts, and other sensitive information.\n**Disallow Usage Data from being sent to the Cloud** | Essential | Limit the amount of usage information or feedback sent to the cloud to protect your privacy.\n**Avoid Quick Unlock** | Essential | Use a strong password instead of biometrics or short PINs for unlocking your computer to enhance security.\n**Power Off Computer, instead of Standby** | Essential | Shut down your device when not in use, especially if your disk is encrypted, to keep data secure.\n**Don't link your PC with your Microsoft or Apple Account** | Optional | Use a local account only to prevent data syncing and exposure. Avoid using sync services that compromise privacy.\n**Check which Sharing Services are Enabled** | Optional | Disable network sharing features you are not using to close gateways to common threats.\n**Don't use Root/Admin Account for Non-Admin Tasks** | Optional | Use an unprivileged user account for daily tasks and only elevate permissions for administrative changes to mitigate vulnerabilities.\n**Block Webcam + Microphone** | Optional | Cover your webcam when not in use and consider blocking unauthorized audio recording to protect privacy.\n**Use a Privacy Filter** | Optional | Use a screen privacy filter in public spaces to prevent shoulder surfing and protect sensitive information.\n**Physically Secure Device** | Optional | Use a Kensington Lock to secure your laptop in public spaces and consider port locks to prevent unauthorized physical access.\n**Don't Charge Devices from your PC** | Optional | Use a power bank or AC wall charger instead of your PC to avoid security risks associated with USB connections.\n**Randomize your hardware address on Wi-Fi** | Optional | Modify or randomize your MAC address to protect against tracking across different WiFi networks.\n**Use a Firewall** | Optional | Install a firewall app to monitor and block unwanted internet access by certain applications, protecting against remote access attacks and privacy breaches.\n**Protect Against Software Keyloggers** | Optional | Use key stroke encryption tools to protect against software keyloggers recording your keystrokes.\n**Check Keyboard Connection** | Optional | Be vigilant for hardware keyloggers when using public or unfamiliar computers by checking keyboard connections.\n**Prevent Keystroke Injection Attacks** | Optional | Lock your PC when away and consider using USBGuard or similar tools to protect against keystroke injection attacks.\n**Don't use commercial \"Free\" Anti-Virus** | Optional | Rely on built-in security tools and avoid free anti-virus applications due to their potential for privacy invasion and data collection.\n**Periodically check for Rootkits** | Advanced | Regularly check for rootkits to detect and mitigate full system control threats using tools like [chkrootkit](https://awesome-privacy.xyz/operating-systems/linux-defenses/chkrootkit).\n**BIOS Boot Password** | Advanced | Enable a BIOS or UEFI password to add an additional security layer during boot-up, though be aware of its limitations.\n**Use a Security-Focused Operating System** | Advanced | Consider switching to Linux or a security-focused distro like QubeOS or [Tails](https://awesome-privacy.xyz/operating-systems/desktop-operating-systems/tails) for enhanced privacy and security.\n**Make Use of VMs** | Advanced | Use virtual machines for risky activities or testing suspicious software to isolate potential threats from your primary system.\n**Compartmentalize** | Advanced | Isolate different programs and data sources from one another as much as possible to limit the extent of potential breaches.\n**Disable Undesired Features (Windows)** | Advanced | Disable unnecessary Windows \"features\" and services that run in the background to reduce data collection and resource use.\n**Secure Boot** | Advanced | Ensure that Secure Boot is enabled to prevent malware from replacing your boot loader and other critical software.\n**Secure SSH Access** | Advanced | Take steps to protect SSH access from attacks by changing the default port, using SSH keys, and configuring firewalls.\n**Close Un-used Open Ports** | Advanced | Turn off services listening on external ports that are not needed to protect against remote exploits and improve security.\n**Implement Mandatory Access Control** | Advanced | Restrict privileged access to limit the damage that can be done if a system is compromised.\n**Use Canary Tokens** | Advanced | Deploy canary tokens to detect unauthorized access to your files or emails faster and gather information about the intruder.\n\n### Recommended Software\n- [Secure Operating Systems](https://github.com/Lissy93/awesome-privacy#desktop-operating-systems)\n- [Linux Defenses](https://github.com/Lissy93/awesome-privacy#linux-defences)\n- [Windows Defenses](https://github.com/Lissy93/awesome-privacy#windows-defences)\n- [Mac OS Defenses](https://github.com/Lissy93/awesome-privacy#mac-os-defences)\n- [Anti-Malware](https://github.com/Lissy93/awesome-privacy#anti-malware)\n- [Firewalls](https://github.com/Lissy93/awesome-privacy#firewalls-1)\n- [File Encryption](https://github.com/Lissy93/awesome-privacy#file-encryption)\n\n\n## Smart Home\n\nHome assistants (such as Google Home, Alexa and Siri) and other internet connected devices collect large amounts of personal data (including voice samples, location data, home details and logs of all interactions). Since you have limited control on what is being collected, how it's stored, and what it will be used for, this makes it hard to recommend any consumer smart-home products to anyone who cares about privacy and security.\nSecurity vs Privacy: There are many smart devices on the market that claim to increase the security of your home while being easy and convenient to use (Such as Smart Burglar Alarms, Internet Security Cameras, Smart Locks and Remote access Doorbells to name a few). These devices may appear to make security easier, but there is a trade-off in terms of privacy: as they collect large amounts of personal data, and leave you without control over how this is stored or used. The security of these devices is also questionable, since many of them can be (and are being) hacked, allowing an intruder to bypass detection with minimum effort.\nThe most privacy-respecting option, would be to not use \"smart\" internet-connected devices in your home, and not to rely on a security device that requires an internet connection. But if you do, it is important to fully understand the risks of any given product, before buying it. Then adjust settings to increase privacy and security. The following checklist will help mitigate the risks associated with internet-connected home devices.\n\n**Security** | **Priority** | **Details and Hints**\n--- | --- | ---\n**Rename devices to not specify brand/model** | Essential | Change default device names to something generic to prevent targeted attacks by obscuring brand or model information.\n**Disable microphone and camera when not in use** | Essential | Use hardware switches to turn off microphones and cameras on smart devices to protect against accidental recordings or targeted access.\n**Understand what data is collected, stored and transmitted** | Essential | Research and ensure comfort with the data handling practices of smart home devices before purchase, avoiding devices that share data with third parties.\n**Set privacy settings, and opt out of sharing data with third parties** | Essential | Adjust app settings for strictest privacy controls and opt-out of data sharing with third parties wherever possible.\n**Don't link your smart home devices to your real identity** | Essential | Use anonymous usernames and passwords, avoiding sign-up/log-in via social media or other third-party services to maintain privacy.\n**Keep firmware up-to-date** | Essential | Regularly update smart device firmware to apply security patches and enhancements.\n**Protect your Network** | Essential | Secure your home WiFi and network to prevent unauthorized access to smart devices.\n**Be wary of wearables** | Optional | Consider the extensive data collection capabilities of wearable devices and their implications for privacy.\n**Don't connect your home's critical infrastructure to the Internet** | Optional | Evaluate the risks of internet-connected thermostats, alarms, and detectors due to potential remote access by hackers.\n**Mitigate Alexa/ Google Home Risks** | Optional | Consider privacy-focused alternatives like [Mycroft](https://awesome-privacy.xyz/smart-home-and-iot/voice-assistants/mycroft) or use Project Alias to prevent idle listening by voice-activated assistants.\n**Monitor your home network closely** | Optional | Use tools like FingBox or router features to monitor for unusual network activity.\n**Deny Internet access where possible** | Advanced | Use firewalls to block internet access for devices that don't need it, limiting operation to local network use.\n**Assess risks** | Advanced | Consider the privacy implications for all household members and adjust device settings for security and privacy, such as disabling devices at certain times.\n\n### Recommended Software\n- [Home Automation](https://github.com/Lissy93/awesome-privacy#home-automation)\n- [AI Voice Assistants](https://github.com/Lissy93/awesome-privacy#ai-voice-assistants)\n\n\n## Personal Finance\n\nCredit card fraud is the most common form of identity theft (with [133,015 reports in the US in 2017 alone](https://www.experian.com/blogs/ask-experian/identity-theft-statistics/)), and a total loss of $905 million, which was a 26% increase from the previous year. The with a median amount lost per person was $429 in 2017. It's more important than ever to take basic steps to protect yourself from falling victim\nNote about credit cards: Credit cards have technological methods in place to detect and stop some fraudulent transactions. Major payment processors implement this, by mining huge amounts of data from their card holders, in order to know a great deal about each persons spending habits. This data is used to identify fraud, but is also sold onto other data brokers. Credit cards are therefore good for security, but terrible for data privacy.\n\n**Security** | **Priority** | **Details and Hints**\n--- | --- | ---\n**Sign up for Fraud Alerts and Credit Monitoring** | Essential | Enable fraud alerts and credit monitoring through Experian, TransUnion, or Equifax to be alerted of suspicious activity.\n**Apply a Credit Freeze** | Essential | Prevent unauthorized credit inquiries by freezing your credit through Experian, TransUnion, and Equifax.\n**Use Virtual Cards** | Optional | Utilize virtual card numbers for online transactions to protect your real banking details. Services like [Privacy.com](https://awesome-privacy.xyz/finance/virtual-credit-cards/privacy.com) and [MySudo](https://awesome-privacy.xyz/finance/virtual-credit-cards/mysudo) offer such features.\n**Use Cash for Local Transactions** | Optional | Pay with [Cash](https://awesome-privacy.xyz/finance/other-payment-methods/cash) for local and everyday purchases to avoid financial profiling by institutions.\n**Use Cryptocurrency for Online Transactions** | Optional | Opt for privacy-focused cryptocurrencies like [Monero](https://awesome-privacy.xyz/finance/cryptocurrencies/monero) for online transactions to maintain anonymity. Use cryptocurrencies wisely to ensure privacy.\n**Store Crypto Securely** | Advanced | Securely store cryptocurrencies using offline wallet generation, hardware wallets like [Trezor](https://awesome-privacy.xyz/finance/crypto-wallets/trezor) or [ColdCard](https://awesome-privacy.xyz/finance/crypto-wallets/coldcard), or consider long-term storage solutions like [CryptoSteel](https://awesome-privacy.xyz/finance/crypto-wallets/cryptosteel).\n**Buy Crypto Anonymously** | Advanced | Purchase cryptocurrencies without linking to your identity through services like [LocalBitcoins](https://awesome-privacy.xyz/finance/crypto-exchanges/localbitcoins), [Bisq](https://awesome-privacy.xyz/finance/crypto-exchanges/bisq), or Bitcoin ATMs.\n**Tumble/ Mix Coins** | Advanced | Use a bitcoin mixer or CoinJoin before converting Bitcoin to currency to obscure transaction trails.\n**Use an Alias Details for Online Shopping** | Advanced | For online purchases, consider using alias details, forwarding email addresses, VOIP numbers, and secure delivery methods to protect your identity.\n**Use alternate delivery address** | Advanced | Opt for deliveries to non-personal addresses such as PO Boxes, forwarding addresses, or local pickup locations to avoid linking purchases directly to you.\n\n### Recommended Software\n- [Virtual Credit Cards](https://github.com/Lissy93/awesome-privacy#virtual-credit-cards)\n- [Cryptocurrencies](https://github.com/Lissy93/awesome-privacy#cryptocurrencies)\n- [Crypto Wallets](https://github.com/Lissy93/awesome-privacy#crypto-wallets)\n- [Crypto Exchanges](https://github.com/Lissy93/awesome-privacy#crypto-exchanges)\n- [Other Payment Methods](https://github.com/Lissy93/awesome-privacy#other-payment-methods)\n- [Budgeting Tools](https://github.com/Lissy93/awesome-privacy#budgeting-tools)\n\n\n## Human Aspect\n\nMany data breaches, hacks and attacks are caused by human error. The following list contains steps you should take, to reduce the risk of this happening to you. Many of them are common sense, but it's worth takin note of.\n\n**Security** | **Priority** | **Details and Hints**\n--- | --- | ---\n**Verify Recipients** | Essential | Emails can be easily spoofed. Verify the sender's authenticity, especially for sensitive actions, and prefer entering URLs manually rather than clicking links in emails.\n**Don't Trust Your Popup Notifications** | Essential | Fake pop-ups can be deployed by malicious actors. Always check the URL before entering any information on a popup.\n**Never Leave Device Unattended** | Essential | Unattended devices can be compromised even with strong passwords. Use encryption and remote erase features like Find My Phone for lost devices.\n**Prevent Camfecting** | Essential | Protect against camfecting by using webcam covers and microphone blockers. Mute home assistants when not in use or discussing sensitive matters.\n**Stay protected from shoulder surfers** | Essential | Use privacy screens on laptops and mobiles to prevent others from reading your screen in public spaces.\n**Educate yourself about phishing attacks** | Essential | Be cautious of phishing attempts. Verify URLs, context of received messages, and employ good security practices like using 2FA and not reusing passwords.\n**Watch out for Stalkerware** | Essential | Be aware of stalkerware installed by acquaintances for spying. Look out for signs like unusual battery usage and perform factory resets if suspected.\n**Install Reputable Software from Trusted Sources** | Essential | Only download software from legitimate sources and check files with tools like [Virus Total](https://awesome-privacy.xyz/security-tools/online-tools/virus-total) before installation.\n**Store personal data securely** | Essential | Ensure all personal data on devices or in the cloud is encrypted to protect against unauthorized access.\n**Obscure Personal Details from Documents** | Essential | When sharing documents, obscure personal details with opaque rectangles to prevent information leakage.\n**Do not assume a site is secure, just because it is `HTTPS`** | Essential | HTTPS does not guarantee a website's legitimacy. Verify URLs and exercise caution with personal data.\n**Use Virtual Cards when paying online** | Optional | Use virtual cards for online payments to protect your banking details and limit transaction risks.\n**Review application permissions** | Optional | Regularly review and manage app permissions to ensure no unnecessary access to sensitive device features.\n**Opt-out of public lists** | Optional | Remove yourself from public databases and marketing lists to reduce unwanted contacts and potential risks.\n**Never Provide Additional PII When Opting-Out** | Optional | Do not provide additional personal information when opting out of data services to avoid further data collection.\n**Opt-out of data sharing** | Optional | Many apps and services default to data sharing settings. Opt out to protect your data from being shared with third parties.\n**Review and update social media privacy** | Optional | Regularly check and update your social media settings due to frequent terms updates that may affect your privacy settings.\n**Compartmentalize** | Advanced | Keep different areas of digital activity separate to limit data exposure in case of a breach.\n**WhoIs Privacy Guard** | Advanced | Use WhoIs Privacy Guard for domain registrations to protect your personal information from public searches.\n**Use a forwarding address** | Advanced | Use a PO Box or forwarding address for mail to prevent companies from knowing your real address, adding a layer of privacy protection.\n**Use anonymous payment methods** | Advanced | Opt for anonymous payment methods like cryptocurrencies to avoid entering identifiable information online.\n\n\n## Physical Security\n\nPublic records often include sensitive personal data (full name, date of birth, phone number, email, address, ethnicity etc), and are gathered from a range of sources (census records, birth/ death/ marriage certificates, voter registrants, marketing information, customer databases, motor vehicle records, professional/ business licenses and all court files in full detail). This sensitive personal information is [easy and legal to access](https://www.consumerreports.org/consumerist/its-creepy-but-not-illegal-for-this-website-to-provide-all-your-public-info-to-anyone/), which raises some [serious privacy concerns](https://privacyrights.org/resources/public-records-internet-privacy-dilemma) (identity theft, personal safety risks/ stalkers, destruction of reputations, dossier society)\n\nCCTV is one of the major ways that the corporations, individuals and the government tracks your movements. In London, UK the average person is caught on camera about 500 times per day. This network is continuing to grow, and in many cities around the world, facial recognition is being rolled out, meaning the state can know the identity of residents on the footage in real-time.\nStrong authentication, encrypted devices, patched software and anonymous web browsing may be of little use if someone is able to physically compromise you, your devices and your data. This section outlines some basic methods for physical security\n\n**Security** | **Priority** | **Details and Hints**\n--- | --- | ---\n**Destroy Sensitive Documents** | Essential | Shred or redact sensitive documents before disposal to protect against\nidentity theft and maintain confidentiality.\n\n**Opt-Out of Public Records** | Essential | Contact people search websites to opt-out from listings that show persona\ninformation, using guides like Michael Bazzell's Personal Data Removal Workbook.\n\n**Watermark Documents** | Essential | Add a watermark with the recipient's name and date to digital copies of\npersonal documents to trace the source of a breach.\n\n**Don't Reveal Info on Inbound Calls** | Essential | Only share personal data on calls you initiate and verify the recipient's phone number.\n\n**Stay Alert** | Essential | Be aware of your surroundings and assess potential risks in new environments.\n**Secure Perimeter** | Essential | Ensure physical security of locations storing personal info devices, minimizing external access and using intrusion detection systems.\n**Physically Secure Devices** | Essential | Use physical security measures like Kensington locks, webcam covers, and privacy screens for devices.\n**Keep Devices Out of Direct Sight** | Essential | Prevent devices from being visible from outside to mitigate risks from lasers and theft.\n**Protect your PIN** | Essential | Shield your PIN entry from onlookers and cameras, and clean touchscreens after use.\n**Check for Skimmers** | Essential | Inspect ATMs and public devices for skimming devices and tampering signs before use.\n**Protect your Home Address** | Optional | Use alternative locations, forwarding addresses, and anonymous payment methods to protect your home address.\n**Use a PIN, Not Biometrics** | Advanced | Prefer PINs over biometrics for device security in situations where legal coercion to unlock devices may occur.\n**Reduce exposure to CCTV** | Advanced | Wear disguises and choose routes with fewer cameras to avoid surveillance.\n**Anti-Facial Recognition Clothing** | Advanced | Wear clothing with patterns that trick facial-recognition technology.\n**Reduce Night Vision Exposure** | Advanced | Use IR light sources or reflective glasses to obstruct night vision cameras.\n**Protect your DNA** | Advanced | Avoid sharing DNA with heritage websites and be cautious about leaving DNA traces.\n\n\n\n<!-- checklist-end -->\n\n----\n\n#### There's an interactive version!\n- [Digital Defense](https://digital-defense.io) - View details, check items of, and track your progress\n\n#### Other Awesome Security Lists\n- @sbilly/[awesome-security](https://github.com/sbilly/awesome-security)\n- @0x4D31/[awesome-threat-detection](https://github.com/0x4D31/awesome-threat-detection)\n- @hslatman/[awesome-threat-intelligence](https://github.com/hslatman/awesome-threat-intelligence)\n- @PaulSec/[awesome-sec-talks](https://github.com/PaulSec/awesome-sec-talks)\n- @Lissy93/[awesome-privacy](https://github.com/lissy93/awesime-privacy)\n- @Zbetcheckin/[security_list](https://github.com/zbetcheckin/Security_list)\n- Michael Horowitz / [defensivecomputingchecklist.com](https://defensivecomputingchecklist.com/)\n\n[See More](/4_Privacy_And_Security_Links.md#other-github-security-lists)\n\n----\n\n## Notes\n\n*Thanks for visiting, hope you found something useful here :) Contributions are welcome, and much appreciated - to propose an edit [raise an issue](https://github.com/Lissy93/personal-security-checklist/issues/new/choose), or [open a PR](https://github.com/Lissy93/personal-security-checklist/pull/new/master). See: [`CONTRIBUTING.md`](/.github/CONTRIBUTING.md).*\n\n*Disclaimer: This is not an exhaustive list, and aims only to be taken as guide.*\n\n*Licensed under [Creative Commons, CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), © [Alicia Sykes](https://aliciasykes.com) 2020*\n\n[![Attribution 4.0 International](https://licensebuttons.net/l/by/3.0/88x31.png)](/LICENSE.md)\n\n---\n\nHelp support the continued development of this project 💖\n\n[![Sponsor Lissy93 on GitHub](https://img.shields.io/badge/Sponsor_on_GitHub-Lissy93-%23ff4dda?style=for-the-badge&logo=githubsponsors&logoColor=ff4dda)](https://github.com/sponsors/Lissy93)\n\n----\n\nFound this helpful? Consider sharing it with others, to help them also improve their digital security 😇\n\n[![Share on Twitter](https://img.shields.io/badge/Share-Twitter-17a2f3?style=for-the-badge&logo=Twitter)](http://twitter.com/share?text=Check%20out%20the%20Personal%20Cyber%20Security%20Checklist-%20an%20ultimate%20list%20of%20tips%20for%20protecting%20your%20digital%20security%20and%20privacy%20in%202020%2C%20with%20%40Lissy_Sykes%20%F0%9F%94%90%20%20%F0%9F%9A%80&url=https://github.com/Lissy93/personal-security-checklist)\n[![Share on LinkedIn](https://img.shields.io/badge/Share-LinkedIn-0077b5?style=for-the-badge&logo=LinkedIn)](\nhttp://www.linkedin.com/shareArticle?mini=true&url=https://github.com/Lissy93/personal-security-checklist&title=The%20Ultimate%20Personal%20Cyber%20Security%20Checklist&summary=%F0%9F%94%92%20A%20curated%20list%20of%20100%2B%20tips%20for%20protecting%20digital%20security%20and%20privacy%20in%202020&source=https://github.com/Lissy93)\n[![Share on Facebook](https://img.shields.io/badge/Share-Facebook-4267b2?style=for-the-badge&logo=Facebook)](https://www.linkedin.com/shareArticle?mini=true&url=https%3A//github.com/Lissy93/personal-security-checklist&title=The%20Ultimate%20Personal%20Cyber%20Security%20Checklist&summary=%F0%9F%94%92%20A%20curated%20list%20of%20100%2B%20tips%20for%20protecting%20digital%20security%20and%20privacy%20in%202020&source=)\n[![Share on Mastodon](https://img.shields.io/badge/Share-Mastodon-56a7e1?style=for-the-badge&logo=Mastodon)](https://mastodon.social/web/statuses/new?text=Check%20out%20the%20Ultimate%20Personal%20Cyber%20Security%20Checklist%20by%20%40Lissy93%20on%20%23GitHub%20%20%F0%9F%94%90%20%E2%9C%A8)\n\n---\n\nGet in touch 📬\n\n[![Alicia Sykes on Twitter](https://img.shields.io/twitter/follow/Lissy_Sykes?style=social&logo=twitter)](https://twitter.com/Lissy_Sykes)\n[![Alicia Sykes on GitHub](https://img.shields.io/github/followers/lissy93?label=Lissy93&style=social)](https://github.com/Lissy93)\n[![Alicia Sykes on Mastodon](https://img.shields.io/mastodon/follow/1032965?domain=https%3A%2F%2Fmastodon.social)](https://mastodon.social/web/accounts/1032965)\n[![Alicia Sykes on Keybase](https://img.shields.io/badge/aliciasykes--lightgrey?style=social&logo=Keybase)](https://keybase.io/aliciasykes)\n[![Alicia Sykes's PGP](https://img.shields.io/badge/PGP--lightgrey?style=social&logo=Let%E2%80%99s%20Encrypt)](https://keybase.io/aliciasykes/pgp_keys.asc)\n[![Alicia Sykes's Website](https://img.shields.io/badge/aliciasykes.com--lightgrey?style=social&logo=Tencent%20QQ)](https://aliciasykes.com)\n\n---\n"
  },
  {
    "path": "Dockerfile",
    "content": ""
  },
  {
    "path": "LICENSE",
    "content": "# Creative Commons Attribution 4.0 International Public License (\"CC BY 4.0\")\n\n> © [Alicia Sykes](http://aliciasykes.com/legal) 2020, Licensed under [Creative Commons Attribution 4.0](https://creativecommons.org/licenses/by/4.0/)\n\nCreative Commons Corporation (“Creative Commons”) is not a law firm and does not\nprovide legal services or legal advice. Distribution of Creative Commons public\nlicenses does not create a lawyer-client or other relationship. Creative Commons\nmakes its licenses and related information available on an “as-is” basis.\nCreative Commons gives no warranties regarding its licenses, any material\nlicensed under their terms and conditions, or any related information. Creative\nCommons disclaims all liability for damages resulting from their use to the\nfullest extent possible.\n\n## USING CREATIVE COMMONS PUBLIC LICENSES\n\nCreative Commons public licenses provide a standard set of terms and conditions\nthat creators and other rights holders may use to share original works of\nauthorship and other material subject to copyright and certain other rights\nspecified in the public license below. The following considerations are for\ninformational purposes only, are not exhaustive, and do not form part of our\nlicenses.\n\n### Considerations for licensors:\n\nOur public licenses are intended for use by those authorized to give the public\npermission to use material in ways otherwise restricted by copyright and certain\nother rights. Our licenses are irrevocable. Licensors should read and understand\nthe terms and conditions of the license they choose before applying it.\nLicensors should also secure all rights necessary before applying our licenses\nso that the public can reuse the material as expected. Licensors should clearly\nmark any material not subject to the license. This includes other CC-licensed\nmaterial, or material used under an exception or limitation to copyright.\n\n### Considerations for the public:\n\nBy using one of our public licenses, a licensor grants the public permission to\nuse the licensed material under specified terms and conditions. If the\nlicensor’s permission is not necessary for any reason–for example, because of\nany applicable exception or limitation to copyright–then that use is not\nregulated by the license. Our licenses grant only permissions under copyright\nand certain other rights that a licensor has authority to grant. Use of the\nlicensed material may still be restricted for other reasons, including because\nothers have copyright or other rights in the material. A licensor may make\nspecial requests, such as asking that all changes be marked or described.\nAlthough not required by our licenses, you are encouraged to respect those\nrequests where reasonable.\n\n---\n\n## Creative Commons Attribution 4.0 International Public License\n\nBy exercising the Licensed Rights (defined below), You accept and agree to be\nbound by the terms and conditions of this Creative Commons Attribution 4.0\nInternational Public License (\"Public License\"). To the extent this Public\nLicense may be interpreted as a contract, You are granted the Licensed Rights in\nconsideration of Your acceptance of these terms and conditions, and the Licensor\ngrants You such rights in consideration of benefits the Licensor receives from\nmaking the Licensed Material available under these terms and conditions.\n\n### Section 1 – Definitions.\n\n   a. Adapted Material means material subject to Copyright and Similar Rights\n      that is derived from or based upon the Licensed Material and in which the\n      Licensed Material is translated, altered, arranged, transformed, or\n      otherwise modified in a manner requiring permission under the Copyright\n      and Similar Rights held by the Licensor. For purposes of this Public\n      License, where the Licensed Material is a musical work, performance, or\n      sound recording, Adapted Material is always produced where the Licensed\n      Material is synched in timed relation with a moving image.\n\n   b. Adapter's License means the license You apply to Your Copyright and\n      Similar Rights in Your contributions to Adapted Material in accordance\n      with the terms and conditions of this Public License.\n\n   c. Copyright and Similar Rights means copyright and/or similar rights closely\n      related to copyright including, without limitation, performance,\n      broadcast, sound recording, and Sui Generis Database Rights, without\n      regard to how the rights are labeled or categorized. For purposes of this\n      Public License, the rights specified in Section 2(b)(1)-(2) are not\n      Copyright and Similar Rights.\n\n   d. Effective Technological Measures means those measures that, in the absence\n      of proper authority, may not be circumvented under laws fulfilling\n      obligations under Article 11 of the WIPO Copyright Treaty adopted on\n      December 20, 1996, and/or similar international agreements.\n\n   e. Exceptions and Limitations means fair use, fair dealing, and/or any other\n      exception or limitation to Copyright and Similar Rights that applies to\n      Your use of the Licensed Material.\n\n   f. Licensed Material means the artistic or literary work, database, or other\n   material to which the Licensor applied this Public License.\n\n   g. Licensed Rights means the rights granted to You subject to the terms and\n      conditions of this Public License, which are limited to all Copyright and\n      Similar Rights that apply to Your use of the Licensed Material and that\n      the Licensor has authority to license.\n\n   h. Licensor means the individual(s) or entity(ies) granting rights under this\n      Public License.\n\n   i. Share means to provide material to the public by any means or process that\n      requires permission under the Licensed Rights, such as reproduction,\n      public display, public performance, distribution, dissemination,\n      communication, or importation, and to make material available to the\n      public including in ways that members of the public may access the\n      material from a place and at a time individually chosen by them.\n\n   j. Sui Generis Database Rights means rights other than copyright resulting\n      from Directive 96/9/EC of the European Parliament and of the Council of 11\n      March 1996 on the legal protection of databases, as amended and/or\n      succeeded, as well as other essentially equivalent rights anywhere in the\n      world.\n\n   k. You means the individual or entity exercising the Licensed Rights under\n      this Public License. Your has a corresponding meaning.\n\n### Section 2 – Scope.\n\na. License grant\n\n  1. Subject to the terms and conditions of this Public License, the\n     Licensor hereby grants You a worldwide, royalty-free,\n     non-sublicensable, non-exclusive, irrevocable license to exercise the\n     Licensed Rights in the Licensed Material to:\n\n     A. reproduce and Share the Licensed Material, in whole or in part; and\n\n     B. produce, reproduce, and Share Adapted Material.\n\n  2. Exceptions and Limitations. For the avoidance of doubt, where\n     Exceptions and Limitations apply to Your use, this Public License does\n     not apply, and You do not need to comply with its terms and conditions.\n\n  3. Term. The term of this Public License is specified in Section 6(a).\n\n  4. Media and formats; technical modifications allowed. The Licensor\n     authorizes You to exercise the Licensed Rights in all media and formats\n     whether now known or hereafter created, and to make technical\n     modifications necessary to do so. The Licensor waives and/or agrees not\n     to assert any right or authority to forbid You from making technical\n     modifications necessary to exercise the Licensed Rights, including\n     technical modifications necessary to circumvent Effective Technological\n     Measures. For purposes of this Public License, simply making\n     modifications authorized by this Section 2(a)(4) never produces Adapted\n     Material.\n\n  5. Downstream recipients.\n\n     A. Offer from the Licensor – Licensed Material. Every recipient of the\n        Licensed Material automatically receives an offer from the Licensor\n        to exercise the Licensed Rights under the terms and conditions of\n        this Public License.\n\n     B. No downstream restrictions. You may not offer or impose any\n        additional or different terms or conditions on, or apply any\n        Effective Technological Measures to, the Licensed Material if doing\n        so restricts exercise of the Licensed Rights by any recipient of the\n        Licensed Material.\n\n  6. No endorsement. Nothing in this Public License constitutes or may be\n     construed as permission to assert or imply that You are, or that Your\n     use of the Licensed Material is, connected with, or sponsored,\n     endorsed, or granted official status by, the Licensor or others\n     designated to receive attribution as provided in Section 3(a)(1)(A)(i).\n\nb. Other rights\n\n  1. Moral rights, such as the right of integrity, are not licensed under\n     this Public License, nor are publicity, privacy, and/or other similar\n     personality rights; however, to the extent possible, the Licensor\n     waives and/or agrees not to assert any such rights held by the Licensor\n     to the limited extent necessary to allow You to exercise the Licensed\n     Rights, but not otherwise.\n\n  2. Patent and trademark rights are not licensed under this Public License.\n\n  3. To the extent possible, the Licensor waives any right to collect\n     royalties from You for the exercise of the Licensed Rights, whether\n     directly or through a collecting society under any voluntary or\n     waivable statutory or compulsory licensing scheme. In all other cases\n     the Licensor expressly reserves any right to collect such royalties.\n\n### Section 3 – License Conditions.\n\nYour exercise of the Licensed Rights is expressly made subject to the following conditions.\n\na. Attribution\n\n  1. If You Share the Licensed Material (including in modified form), You\n     must:\n\n     A. retain the following if it is supplied by the Licensor with the\n        Licensed Material:\n\n        i. identification of the creator(s) of the Licensed Material and any\n           others designated to receive attribution, in any reasonable\n           manner requested by the Licensor (including by pseudonym if\n           designated);\n\n        ii. a copyright notice;\n\n        iii. a notice that refers to this Public License;\n\n        iv. a notice that refers to the disclaimer of warranties;\n\n        v. a URI or hyperlink to the Licensed Material to the extent\n           reasonably practicable;\n\n     B. indicate if You modified the Licensed Material and retain an\n        indication of any previous modifications; and\n\n     C. indicate the Licensed Material is licensed under this Public\n        License, and include the text of, or the URI or hyperlink to, this\n        Public License.\n\n  2. You may satisfy the conditions in Section 3(a)(1) in any reasonable\n     manner based on the medium, means, and context in which You Share the\n     Licensed Material. For example, it may be reasonable to satisfy the\n     conditions by providing a URI or hyperlink to a resource that includes\n     the required information.\n\n  3. If requested by the Licensor, You must remove any of the information\n     required by Section 3(a)(1)(A) to the extent reasonably practicable.\n\n  4. If You Share Adapted Material You produce, the Adapter's License You\n     apply must not prevent recipients of the Adapted Material from\n     complying with this Public License.\n      \n### Section 4 – Sui Generis Database Rights.\n\nWhere the Licensed Rights include Sui Generis Database Rights that apply to Your\nuse of the Licensed Material:\n\n   a. for the avoidance of doubt, Section 2(a)(1) grants You the right to\n      extract, reuse, reproduce, and Share all or a substantial portion of the\n      contents of the database;\n\n   b. if You include all or a substantial portion of the database contents in a\n      database in which You have Sui Generis Database Rights, then the database\n      in which You have Sui Generis Database Rights (but not its individual\n      contents) is Adapted Material; and\n   \n   c. You must comply with the conditions in Section 3(a) if You Share all or a\n      substantial portion of the contents of the database.\n\nFor the avoidance of doubt, this Section 4 supplements and does not replace Your\nobligations under this Public License where the Licensed Rights include other\nCopyright and Similar Rights.\n\n### Section 5 – Disclaimer of Warranties and Limitation of Liability.\n\n   a. Unless otherwise separately undertaken by the Licensor, to the extent\n      possible, the Licensor offers the Licensed Material as-is and\n      as-available, and makes no representations or warranties of any kind\n      concerning the Licensed Material, whether express, implied, statutory, or\n      other. This includes, without limitation, warranties of title,\n      merchantability, fitness for a particular purpose, non-infringement,\n      absence of latent or other defects, accuracy, or the presence or absence\n      of errors, whether or not known or discoverable. Where disclaimers of\n      warranties are not allowed in full or in part, this disclaimer may not\n      apply to You.\n\n   b. To the extent possible, in no event will the Licensor be liable to You on\n      any legal theory (including, without limitation, negligence) or otherwise\n      for any direct, special, indirect, incidental, consequential, punitive,\n      exemplary, or other losses, costs, expenses, or damages arising out of\n      this Public License or use of the Licensed Material, even if the Licensor\n      has been advised of the possibility of such losses, costs, expenses, or\n      damages. Where a limitation of liability is not allowed in full or in\n      part, this limitation may not apply to You.\n\n   c. The disclaimer of warranties and limitation of liability provided above\n      shall be interpreted in a manner that, to the extent possible, most\n      closely approximates an absolute disclaimer and waiver of all liability.\n\n### Section 6 – Term and Termination.\n\n a. This Public License applies for the term of the Copyright and Similar\n    Rights licensed here. However, if You fail to comply with this Public\n    License, then Your rights under this Public License terminate\n    automatically.\n\n b. Where Your right to use the Licensed Material has terminated under\n    Section 6(a), it reinstates:\n\n    1. automatically as of the date the violation is cured, provided it is\n       cured within 30 days of Your discovery of the violation; or\n\n    2. upon express reinstatement by the Licensor.\n\n    For the avoidance of doubt, this Section 6(b) does not affect any right\n    the Licensor may have to seek remedies for Your violations of this Public\n    License.\n\n c. For the avoidance of doubt, the Licensor may also offer the Licensed\n    Material under separate terms or conditions or stop distributing the\n    Licensed Material at any time; however, doing so will not terminate this\n    Public License.\n\n d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.\n\n### Section 7 – Other Terms and Conditions.\n\n   a. The Licensor shall not be bound by any additional or different terms or\n      conditions communicated by You unless expressly agreed.\n\n   b. Any arrangements, understandings, or agreements regarding the Licensed\n      Material not stated herein are separate from and independent of the terms\n      and conditions of this Public License.\n\n### Section 8 – Interpretation.\n\n   a. For the avoidance of doubt, this Public License does not, and shall not be\n      interpreted to, reduce, limit, restrict, or impose conditions on any use\n      of the Licensed Material that could lawfully be made without permission\n      under this Public License.\n\n   b. To the extent possible, if any provision of this Public License is deemed\n      unenforceable, it shall be automatically reformed to the minimum extent\n      necessary to make it enforceable. If the provision cannot be reformed, it\n      shall be severed from this Public License without affecting the\n      enforceability of the remaining terms and conditions.\n\n   c. No term or condition of this Public License will be waived and no failure\n      to comply consented to unless expressly agreed to by the Licensor.\n\n   d. Nothing in this Public License constitutes or may be interpreted as a\n      limitation upon, or waiver of, any privileges and immunities that apply to\n      the Licensor or You, including from the legal processes of any\n      jurisdiction or authority.\n\nCreative Commons is not a party to its public licenses. Notwithstanding,\nCreative Commons may elect to apply one of its public licenses to material it\npublishes and in those instances will be considered the “Licensor.” The text of\nthe Creative Commons public licenses is dedicated to the public domain under the\nCC0 Public Domain Dedication. Except for the limited purpose of indicating that\nmaterial is shared under a Creative Commons public license or as otherwise\npermitted by the Creative Commons policies published at\ncreativecommons.org/policies, Creative Commons does not authorize the use of the\ntrademark “Creative Commons” or any other trademark or logo of Creative Commons\nwithout its prior written consent including, without limitation, in connection\nwith any unauthorized modifications to any of its public licenses or any other\narrangements, understandings, or agreements concerning use of licensed material.\nFor the avoidance of doubt, this paragraph does not form part of the public\nlicenses.\n\nCreative Commons may be contacted at creativecommons.org.\n"
  },
  {
    "path": "articles/0_Why_It_Matters.md",
    "content": "# Digital Privacy and Security - Why is Matters\n\n\n**TLDR;** Privacy is a fundamental right, and essential to democracy, liberty, and freedom of speech. Our privacy is being abused by governments (with mass-surveillance), corporations (profiting from selling personal data), and cyber criminals (stealing our poorly-secured personal data and using it against us). Security is needed in order to keep your private data private, and good digital security is critical to stay protected from the growing risks associated with the war on data.\n\n----\n\n## What is Personal Data?\nPersonal data is any information that relates to an identified or identifiable living individual. Even data that has been de-identified or anonymized can often still be used to re-identify a person, especially when combined with a secondary data set.\n\nThis could be sensitive documents (such as medical records, bank statements, card numbers, etc), or user-generated content (messages, emails, photos, search history, home CCTV, etc) or apparently trivial metadata (such as mouse clicks, typing patterns, time spent on each web page, etc)\n\n## How is Data Collected?\nOne of the most common data collection methods is web tracking. This is when websites use cookies, device fingerprints, and other methods to identify you, and follow you around the web. It is often done for advertising, analytics, and personalization. When aggregated together, this data can paint a very detailed picture of who you are.\n\n## How is Data Stored?\nData that has been collected is typically stored in databases on a server. These servers are rarely owned by the companies managing them, [56% of servers](https://www.canalys.com/newsroom/global-cloud-market-Q3-2019) are owned by Amazon AWS, Google Cloud, and Microsoft Azure. If stored correctly the data will be encrypted, and authentication required to gain access. However that usually isn't the case, and large data leaks [occur almost daily](https://selfkey.org/data-breaches-in-2019/). As well as that data breaches occur, when an adversary compromises a database storing personal data. In fact, you've probably already been caught up in a data breach (check your email, at [have i been pwned](https://haveibeenpwned.com))\n\n## What is Personal Data Used For?\n\nData is collected, stored and used by governments, law enforcement, corporations and sometimes criminals:\n\n### Government Mass Surveillance\nIntelligence and law enforcement agencies need surveillance powers to tackle serious crime and terrorism. However, since the Snowden revelations, we now know that this surveillance is not targeted at those suspected of wrongdoing - but instead the entire population. All our digital interactions are being logged and tracked by our very own governments.\n\nMass surveillance is a means of control and suppression, it takes away our inerrant freedoms and breeds conformity. When we know we are being watched, we subconsciously change our behavior. A society of surveillance is just one step away from a society of submission.\n\n### Corporations\nOn the internet the value of data is high. Companies all want to know exactly who you are and what you are doing. They collect data, store it, use it and sometimes sell it onwards.\n\nEverything that each of us does online leaves a trail of data. These traces make up a goldmine of information full of insights into people on a personal level as well as a valuable read on larger cultural, economic and political trends. Tech giants (such as Google, Facebook, Apple, Amazon, and Microsoft) are leveraging this, building billion-dollar businesses out of the data that our interactions with digital devices create. We, as users have no guarantees that what is being collected is being stored securely, we often have no way to know for sure that it is deleted when we request so, and we don't have access to what their AI systems have infered from our data.\n\nOur computers, phones, wearables, digital assistants and IoT have been turned into tracking bugs that are plugged into a vast corporate-owned surveillance network. Where we go, what we do, what we talk about, who we talk to, and who we see – everything is recorded and, at some point, leveraged for value. They know us intimately, even the things that we hide from those closest to us. In our modern internet ecosystem, this kind of private surveillance is the norm.\n\n### Cybercriminals\nHackers and cybercriminals pose an ongoing and constantly evolving threat. With the ever-increasing amount of our personal data being collected and logged - we are more vulnerable to data breaches and identity fraud than ever before.\n\nIn the same way, criminals will go to great lengths to use your data against you: either through holding it ransom, impersonating you, stealing money or just building up a profile on you and selling it on, to another criminal entity.\n\n---\n\n## Why Data Privacy Matters\n\n#### Data Privacy and Freedom of Speech\nPrivacy is a fundamental right, and you shouldn't need to prove the necessity of fundamental right to anyone. As Edward Snowden said, \"Arguing that you don't care about the right to privacy because you have nothing to hide is no different than saying you don't care about free speech because you have nothing to say\". There are many scenarios in which privacy is crucial and desirable like intimate conversations, medical procedures, and voting. When we know we are being watched, our behavior changes, which in turn suppresses things like free speech.\n\n#### Data Can Have Control Over You\nKnowledge is power; Knowledge about you is power over you. Your information will be used to anticipate your actions and manipulate the way you shop, vote, and think. When you know you are being watched, you subconsciously change your behavior. Mass surveillance is an effective means of fostering compliance with social norms or with social orthodoxy. Without privacy, you might be afraid of being judged by others, even if you're not doing anything wrong. It can be a heavy burden constantly having to wonder how everything we do will be perceived by others.\n\n#### Data Can Be Used Against You\nYour personal information and private communications can be \"cherry-picked\" to paint a certain one-sided picture. It can make you look like a bad person, or criminal, even if you are not. Data often results in people not being judged fairly - standards differ between cultures, organisations, and generations. Since data records are permanent, behavior that is deemed acceptable today, may be held against you tomorrow. Further to this, even things we don't think are worth hiding today, may later be used against us in unexpected ways.\n\n#### Data Collection Has No Respect For Boundaries\nData collection has no respect for social boundaries, you may wish to prevent some people (such as employers, family or former partners) from knowing certain things about you. Once you share personal data, even with a party you trust, it is then out of your control forever, and at risk of being hacked, leaked or sold. An attack on our privacy, also hurts the privacy of those we communicate with.\n\n#### Data Discriminates\nWhen different pieces of your data is aggregated together, it can create a very complete picture of who you are. This data profile, is being used to influence decisions made about you: from insurance premiums, job prospects, bank loan eligibility and license decisions. It can determine whether we are investigated by the government, searched at the airport, or blocked from certain services. Even what content you see on the internet is affected by our personal data. This typically has a bigger impact on minority groups, who are unfairly judged the most. Without having the ability to know or control what, how, why and when our data is being used, we lose a level of control. One of the hallmarks of freedom is having autonomy and control over our lives, and we can’t have that if so many important decisions about us are being made in the dark, without our awareness or participation.\n\n#### The \"I Have Nothing to Hide\" Argument\nPrivacy isn’t about hiding information; privacy is about protecting information, and everyone has information that they’d like to protect. Even with nothing to hide, you still put blinds on your window, locks on your door, and passwords on your email account.- Nobody would want their search history, bank statements, photos, notes or messages to be publicly available to the world.\n\n#### Data Privacy needs to be for Everyone\nFor online privacy to be effective, it needs to be adopted my the masses, and not just the few. By exercising your right to privacy, you make it easier for others, such as activists and journalists, to do so without sticking out.\n\n----\n\n## So What Should we Do?\n\n- Educate yourself about what's going on and why it matters\n- Be aware of changes to policies, revelations, recent data breaches and related news\n- Take steps to secure your online accounts and protect your devices\n- Understand how to communicate privately, and how use the internet anonymously\n- Use software and services that respect your privacy, and keep your data safe\n- Support organisations that fight for your privacy and internet freedom\n- Find a way to make your voice heard, and stand up for what you believe in\n\n----\n\n## Further Links\n- [Ultimate Personal Security Checklist](/README.md)\n- [Privacy-Respecting Software](https://github.com/Lissy93/awesome-privacy)\n- [Privacy & Security Gadgets](/6_Privacy_and-Security_Gadgets.md)\n- [Further Links + More Awesome Stuff](/4_Privacy_And_Security_Links.md)\n\n----\n\n#### Notes\n\n*Thanks for visiting, hope you found something useful here :) Contributions are welcome, and much appreciated - to propose an edit [raise an issue](https://github.com/Lissy93/personal-security-checklist/issues/new/choose), or [open a PR](https://github.com/Lissy93/personal-security-checklist/pull/new/master). See: [`CONTRIBUTING.md`](/.github/CONTRIBUTING.md).*\n\n*I owe a lot of thanks others who've conducted research, written papers, developed software all in the interest of privacy and security. Full attributions and references found in [`ATTRIBUTIONS.md`](/ATTRIBUTIONS.md).*\n\n\n*Licensed under [Creative Commons, CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), © [Alicia Sykes](https://aliciasykes.com) 2020*\n\n[![Attribution 4.0 International](https://licensebuttons.net/l/by/3.0/88x31.png)](https://github.com/Lissy93/personal-security-checklist/blob/master/LICENSE.md)\n\n----\n\nFound this helpful? Consider sharing it with others, to help them also improve their digital security 😇\n\n[![Share on Twitter](https://img.shields.io/badge/Share-Twitter-17a2f3?style=for-the-badge&logo=Twitter)](http://twitter.com/share?text=Check%20out%20the%20Personal%20Cyber%20Security%20Checklist-%20an%20ultimate%20list%20of%20tips%20for%20protecting%20your%20digital%20security%20and%20privacy%20in%202020%2C%20with%20%40Lissy_Sykes%20%F0%9F%94%90%20%20%F0%9F%9A%80&url=https://github.com/Lissy93/personal-security-checklist)\n[![Share on LinkedIn](https://img.shields.io/badge/Share-LinkedIn-0077b5?style=for-the-badge&logo=LinkedIn)](\nhttp://www.linkedin.com/shareArticle?mini=true&url=https://github.com/Lissy93/personal-security-checklist&title=The%20Ultimate%20Personal%20Cyber%20Security%20Checklist&summary=%F0%9F%94%92%20A%20curated%20list%20of%20100%2B%20tips%20for%20protecting%20digital%20security%20and%20privacy%20in%202020&source=https://github.com/Lissy93)\n[![Share on Facebook](https://img.shields.io/badge/Share-Facebook-4267b2?style=for-the-badge&logo=Facebook)](https://www.linkedin.com/shareArticle?mini=true&url=https%3A//github.com/Lissy93/personal-security-checklist&title=The%20Ultimate%20Personal%20Cyber%20Security%20Checklist&summary=%F0%9F%94%92%20A%20curated%20list%20of%20100%2B%20tips%20for%20protecting%20digital%20security%20and%20privacy%20in%202020&source=)\n[![Share on Mastodon](https://img.shields.io/badge/Share-Mastodon-56a7e1?style=for-the-badge&logo=Mastodon)](https://mastodon.social/web/statuses/new?text=Check%20out%20the%20Ultimate%20Personal%20Cyber%20Security%20Checklist%20by%20%40Lissy93%20on%20%23GitHub%20%20%F0%9F%94%90%20%E2%9C%A8)\n"
  },
  {
    "path": "articles/2_TLDR_Short_List.md",
    "content": "# Personal Cyber Security | TLDR [![Awesome](https://awesome.re/badge-flat2.svg)](https://awesome.re) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![License](https://img.shields.io/badge/LICENSE-CC_BY_4.0-00a2ff?&style=flat-square)](https://creativecommons.org/licenses/by/4.0/)[![Contributors](https://img.shields.io/github/contributors/lissy93/personal-security-checklist?color=%23ffa900&style=flat-square)](/ATTRIBUTIONS.md#contributors-)\n\n#### Contents\n- [Personal Security Checklist](#personal-security-checklist)\n- [Privacy-focused Software](#open-source-privacy-focused-software)\n- [Security Hardware](#security-hardware)\n\n## PERSONAL SECURITY CHECKLIST\n\n> This checklist of privacy and security tips, is a summarized version of [The Complete Personal Security Checklist](https://github.com/Lissy93/personal-security-checklist/blob/master/README.md). It lays out the most essential steps you should take to protect your digital life.\n\n### Authentication\n- Use a long, strong and unique password for each of your accounts (see [HowSecureIsMyPassword.net](https://howsecureismypassword.net))\n- Use a secure [password manager](https://github.com/Lissy93/awesome-privacy#password-managers), to encrypt, store and fill credentials, such as [BitWarden](https://bitwarden.com) or [KeePass](https://keepass.info) / [KeePassXC](https://keepassxc.org)\n- Enable 2-Factor authentication where available, and use an [authenticator app](https://github.com/Lissy93/awesome-privacy#2-factor-authentication) or [hardware token](/6_Privacy_and-Security_Gadgets.md#fido-u2f-keys)\n- When you enable multi-factor authentication, you will usually be given several codes that you can use if your 2FA method is lost, broken or unavailable. You should store these on paper or in a safe place on disk (e.g. in offline storage or as in an encrypted file/drive).\n- Sign up for breach alerts (with [Firefox Monitor](https://monitor.firefox.com) or [HaveIBeenPwned](https://haveibeenpwned.com)), and update passwords of compromised accounts\n\n\n### Browsing\n- Use a Privacy-Respecting Browser, [Brave](https://brave.com) and [Firefox](https://www.mozilla.org/en-US/exp/firefox/new) are good options. Set your default search to a non-tracking engine, such as [DuckDuckGo](https://duckduckgo.com)\n- Do not enter any information on a non-HTTPS website (look for the lock icon). Firefox, Chrome, Edge and Safari now have integrated HTTPS security features; if you do not know if it's enabled, check out this [guide](https://www.eff.org/deeplinks/2021/09/https-actually-everywhere) to learn where to look.\n- Block invasive 3rd-party trackers and ads using an extension like [Privacy Badger](https://privacybadger.org) or [uBlock](https://github.com/gorhill/uBlock)\n- Keep your browser up-to-date, explore the privacy settings and remove unnecessary add-ons/ extensions\n- Consider using compartmentalization to separate different areas of your browsing (such as work, social, shopping etc), in order to reduce tracking. This can be done with [Firefox Containers](https://support.mozilla.org/en-US/kb/containers), or by using separate browsers or browser profiles\n- Don't allow your browser to save your passwords or auto-fill personal details (instead use a [password manager](https://github.com/Lissy93/awesome-privacy#password-managers), and [disable your browsers own auto-fill](https://www.computerhope.com/issues/ch001377.htm))\n- Clear your cookies, session data and cache regularly. An extension such as [Cookie-Auto-Delete](https://github.com/Cookie-AutoDelete/Cookie-AutoDelete) can be used to automate this\n- Don't sign into your browser, as it can link further data to your identity. If you need to, you can use an open source [bookmark sync](https://github.com/Lissy93/awesome-privacy#browser-sync) app\n- Consider using [Decentraleyes](https://decentraleyes.org) to decrease the number of trackable CDN requests your device makes\n- Test your browser using a tool like [Panopticlick](https://panopticlick.eff.org) to ensure there are no major issues. [BrowserLeaks](https://browserleaks.com) and [Am I Unique](https://amiunique.org/fp) are also useful for exploring what device info you are exposing to websites\n- For anonymous browsing use [The Tor Browser](https://www.torproject.org/), and avoid logging into any of your personal accounts\n\n\n### Phone\n- Set a device PIN, ideally use a long passcode. If supported, configure fingerprint authentication, but avoid face unlock\n- Encrypt your device, in order to keep your data safe from physical access. To enable, for Android: `Settings --> Security --> Encryption`, or for iOS: `Settings --> TouchID & Passcode --> Data Protection`\n- Keep device up-to-date. System updates often contain patches for recently-discovered security vulnerabilities. You should install updates when prompted\n- Review application permissions. Don't grant access permissions to apps that do not need it. (For Android, see also [Bouncer](https://play.google.com/store/apps/details?id=com.samruston.permission&hl=en_US) - an app that allows you to grant temporary permissions)\n- Disable connectivity features that aren't being used, and 'forget' WiFi networks that you no longer need\n- Disable location tracking. By default, both Android and iOS logs your GPS location history. You can disable this, for Android: `Maps --> Settings --> Location History`, and iOS: `Settings --> Privacy --> Location Services --> System Services --> Places`. Be aware that third-party apps may still log your position, and that there are other methods of determining your location other than GPS (Cell tower, WiFi, Bluetooth etc)\n- Use an application firewall to block internet connectivity for apps that shouldn't need it. Such as [NetGuard](https://www.netguard.me/) (Android) or [Lockdown](https://apps.apple.com/in/app/lockdown-apps/id1469783711) (iOS)\n- Understand that apps contain trackers that collect, store and sometimes share your data. For Android, you could use [Exodus](https://exodus-privacy.eu.org/en/page/what/) to reveal which trackers your installed apps are using.\n\n\n### Email\nIt's important to protect your email account, as if a hacker gains access to it they will be able to pose as you, and reset the passwords for your other online accounts. One of the biggest threats to digital security is still phishing, and it can sometimes be incredibly convincing, so remain vigilant, and understand [how to spot malicious emails](https://heimdalsecurity.com/blog/abcs-detecting-preventing-phishing), and avoid publicly sharing your email address\n\n- Use a long, strong and unique password and enable 2FA\n- Consider switching to a secure and encrypted mail provider using, such as [ProtonMail](https://protonmail.com) or [Tutanota](https://tutanota.com)\n- Use email aliasing to protect your real mail address, with a provider such as [Anonaddy](https://anonaddy.com) or [SimpleLogin](https://simplelogin.io/?slref=bridsqrgvrnavso). This allows you to keep your real address private, yet still have all messages land in your primary inbox\n- Disable automatic loading of remote content, as it is often used for detailed tracking but can also be malicious\n- Using a custom domain, will mean you will not lose access to your email address if your current provider disappears. If you need to back up messages, use a secure IMAP client [Thunderbird](https://www.thunderbird.net)\n\n\n### Secure Messaging\n- Use a [secure messaging app](https://github.com/Lissy93/awesome-privacy#encrypted-messaging) that is both fully open source and end-to-end encrypted with perfect forward secrecy (e.g. [Signal](https://www.signal.org/))\n- Ensure that both your device, and that of your recipient(s) is secure (free from malware, encrypted and has a strong password)\n- Disable cloud services, such as web app companion or cloud backup feature, both of which increases attack surface\n- Strip meta data from media before sharing, as this can lead to unintentionally revealing more data than you intended\n- Verify your recipient is who they claim to be, either physically or cryptographically by using an app that offers contact verification\n- Avoid SMS, but if you must use it then encrypt your messages, e.g. using the [Silence](https://silence.im/) app\n- Opt for a stable and actively maintained messaging platform, that is backed by reputable developers and have a transparent revenue model or are able to account for where funding has originated from. It should ideally be based in a friendly jurisdiction and have undergone an independent security audit. \n- In some situations, it may be appropriate to use an app that supports disappearing messages, and/ or allows for anonymous sign up (without any PII: phone number, email address etc). A [decentralized platform](https://github.com/Lissy93/awesome-privacy#p2p-messaging) can offer additional security and privacy benefits in some circumstances, as there is no single entity governing it, e.g. [Matrix](https://matrix.org/), [Session](https://getsession.org/), [Tox](https://tox.chat/) or [Briar](https://briarproject.org/)\n\n\n### Networking\n- Use a reputable VPN to keep your IP protected and reduce the amount of browsing data your ISP can log, but understand their [limitations](5_Privacy_Respecting_Software.md#word-of-warning-4).  Good options include [ProtonVPN](https://protonvpn.com) and [Mullvad](https://mullvad.net), see [thatoneprivacysite.net](https://thatoneprivacysite.net/) for detailed comparisons\n- Change your routers default password. Anyone connected to your WiFi is able to listen to network traffic, so in order to prevent people you don't know from connecting, use WPA2 and set a strong password.\n- Use a [secure DNS](https://github.com/Lissy93/awesome-privacy#dns) provider, (such as [Cloudflare's 1.1.1.1](https://1.1.1.1/dns/)) to reduce tracking. Ideally configure this on your router, but if that's not possible, then it can be done on each device. \n\n\n**📜 See More**: [The Complete Personal Security Checklist](https://github.com/Lissy93/personal-security-checklist/blob/master/README.md)\n\n----\n\n\n## OPEN-SOURCE, PRIVACY-FOCUSED SOFTWARE\nSwitch to alternative open-source, privacy-respecting apps and services, which won't collect your data, track you or show targetted ads.\n\n#### Security\n- Password Managers: [BitWarden] | [1Password] *(proprietary)* | [KeePassXC] *(offline)* | [LessPass] *(stateless)*\n- 2-Factor Authentication: [Aegis] *(Android)* | [Authenticator] *(iOS)* | [AndOTP] *(Android)*\n- File Encryption: [VeraCrypt] | [Cryptomator] *(for cloud)*\n- Encrypted Messaging: [Signal] | [KeyBase] *(for groups/ communities)*\n- Encrypted Email: [ProtonMail] | [MailFence] | [Tutanota] | (+ also [33Mail] | [anonaddy] for aliasing)\n- Private Browsers: [Brave Browser] | [Firefox] *with [some tweaks](https://restoreprivacy.com/firefox-privacy/)* | [Tor]\n- Non-Tracking Search Engines: [DuckDuckGo] | [StartPage] | [SearX] *(self-hosted)* | [Qwant]\n- VPN: [Mullvad] | [ProtonVPN]  | [Windscribe] | [IVPN] *(better still, use [Tor] for anonimity)*. See also [VPN Warning Note]\n- App Firewall: [NetGuard] (Android) | [Lockdown] (iOS) | [OpenSnitch] (Linux) | [LuLu] (MacOS)\n\n#### Browser Extensions\n- [Privacy Badger] - Blocks trackers.\n- [HTTPS Everywhere] - Upgrades requests to HTTPS.\n- [uBlock Origin] - Blocks ads, trackers and malwares.\n- [ScriptSafe] - Block execution of certain scripts.\n- [WebRTC Leak Prevent] - Prevents IP leaks.\n- [Vanilla Cookie Manager] - Auto-removes unwanted cookies.\n- [Privacy Essentials] - Shows which sites are insecure\n\n#### Mobile Apps\n- [Exodus] - Shows which trackers are on your device.\n- [Orbot]- System-wide Tor Proxy.\n- [Island] - Sand-box environment for apps.\n- [NetGuard] - Controll which apps have network access.\n- [Bouncer] - Grant temporary permissions.\n- [Greenify] - Control which apps can run in the background.\n- [1.1.1.1] - Use CloudFlare's DNS over HTTPS.\n- [Fing App] - Monitor your home WiFi network for intruders\n\n#### Online Tools\n- [εxodus] - Shows which trackers an app has.\n- [';--have i been pwned?] - Check if your details have been exposed in a breach.\n- [EXIF Remover] - Removes meta data from image or file.\n- [Redirect Detective] - Shows where link redirects to.\n- [Virus Total] - Scans file or URL for malware.\n- [Panopticlick], [Browser Leak Test] and [IP Leak Test] - Check for system and browser leaks\n\n#### Productivity Tools\n- File Storage: [NextCloud].\n- File Sync: [Syncthing].\n- File Drop: [FilePizza].\n- Notes: [Standard Notes], [Cryptee], [Joplin].\n- Blogging: [Write Freely].\n- Calendar/ Contacts Sync: [ETE Sync]\n\n📜 **See More**: [Complete List of Privacy-Respecting Sofware](https://github.com/Lissy93/awesome-privacy)\n\n----\n\n## SECURITY HARDWARE\n\nThere are also some gadgets that can help improve your physical and digital security.\n\n- **Blockers & Shields**: [PortaPow] - USB Data Blocker | [Mic Block] - Physically disables microphone | [Silent-Pocket] - Signal-blocking faraday pouches | [Lindy] - Physical port blockers | [RFID Shields] | [Webcam Covers] | [Privacy Screen]\n- **Crypto Wallets**: [Trezor] - Hardware wallet | [CryptoSteel] - Indestructible steel crypto wallet\n- **FIDO U2F Keys**: [Solo Key] | [Nitro Key] | [Librem Key]\n- **Data Blockers**: [PortaPow] - Blocks data to protect against malware upload attacks, enables FastCharge.\n- **Hardware-encrypted storage**:  [iStorage]- PIN-authenticated 256-bit hardware encrypted storage | [Encrypted Drive Enclosure]\n- **Networking**: [Anonabox] - Plug-and-play Tor router | [FingBox] - Easy home network automated security monitoring\n- **Paranoid Gadgets!** [Orwl]- Self-destroying PC | [Hunter-Cat]- Card-skim detector | [Adversarial Fashion]- Anti-facial-recognition clothing | [DSTIKE Deauth Detector] - Detect deauth attacks, from [Spacehuhn] | [Reflectacles]- Anti-surveillance glasses | [Armourcard]- Active RFID jamming | [Bug-Detector]- Check for RF-enabled eavesdropping equipment | [Ultrasonic Microphone Jammer] - Emits signals that's silent to humans, but interfere with recording equipment.\n\n\nThere's no need to spend money - Most of these products can be made at home with open source software. Here's a list of [DIY Security Gadgets](/6_Privacy_and-Security_Gadgets.md#diy-security-products).\n\n📜 **See More**: [Privacy and Security Gadgets](/6_Privacy_and-Security_Gadgets.md)\n\n----\n\n*Thanks for visiting, hope you found something useful here :) Contributions are welcome, and much appreciated - to propose an edit [raise an issue](https://github.com/Lissy93/personal-security-checklist/issues/new/choose), or [open a PR](https://github.com/Lissy93/personal-security-checklist/pull/new/master). See: [`CONTRIBUTING.md`](/.github/CONTRIBUTING.md).*\n\n----\n\nFound this helpful? Consider sharing, to help others improve their digital security 😇\n\n[![Share on Twitter](https://img.shields.io/badge/Share-Twitter-17a2f3?style=flat-square&logo=Twitter)](http://twitter.com/share?text=Check%20out%20the%20Personal%20Cyber%20Security%20Checklist-%20an%20ultimate%20list%20of%20tips%20for%20protecting%20your%20digital%20security%20and%20privacy%20in%202020%2C%20with%20%40Lissy_Sykes%20%F0%9F%94%90%20%20%F0%9F%9A%80&url=https://github.com/Lissy93/personal-security-checklist)\n[![Share on LinkedIn](https://img.shields.io/badge/Share-LinkedIn-0077b5?style=flat-square&logo=LinkedIn)](\nhttp://www.linkedin.com/shareArticle?mini=true&url=https://github.com/Lissy93/personal-security-checklist&title=The%20Ultimate%20Personal%20Cyber%20Security%20Checklist&summary=%F0%9F%94%92%20A%20curated%20list%20of%20100%2B%20tips%20for%20protecting%20digital%20security%20and%20privacy%20in%202020&source=https://github.com/Lissy93)\n[![Share on Facebook](https://img.shields.io/badge/Share-Facebook-4267b2?style=flat-square&logo=Facebook)](https://www.linkedin.com/shareArticle?mini=true&url=https%3A//github.com/Lissy93/personal-security-checklist&title=The%20Ultimate%20Personal%20Cyber%20Security%20Checklist&summary=%F0%9F%94%92%20A%20curated%20list%20of%20100%2B%20tips%20for%20protecting%20digital%20security%20and%20privacy%20in%202020&source=)\n[![Share on Mastodon](https://img.shields.io/badge/Share-Mastodon-56a7e1?style=flat-square&logo=Mastodon)](https://mastodon.social/web/statuses/new?text=Check%20out%20the%20Ultimate%20Personal%20Cyber%20Security%20Checklist%20by%20%40Lissy93%20on%20%23GitHub%20%20%F0%9F%94%90%20%E2%9C%A8)\n\n\n\n\n\n*Licensed under [Creative Commons, CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), © [Alicia Sykes](https://aliciasykes.com) 2020*\n\n<a href=\"https://twitter.com/intent/follow?screen_name=Lissy_Sykes\">\n  <img src=\"https://img.shields.io/twitter/follow/Lissy_Sykes?style=social&logo=twitter\" alt=\"Follow Alicia Sykes on Twitter\">\n</a>\n\n\n[//]: # (SECURITY SOFTWARE LINKS)\n[BitWarden]: https://bitwarden.com\n[1Password]: https://1password.com\n[KeePassXC]: https://keepassxc.org\n[LessPass]: https://lesspass.com\n[Aegis]: https://getaegis.app\n[AndOTP]: https://github.com/andOTP/andOTP\n[Authenticator]: https://mattrubin.me/authenticator\n[VeraCrypt]: https://www.veracrypt.fr\n[Cryptomator]: https://cryptomator.org\n[Tor]: https://www.torproject.org\n[Pi-Hole]: https://pi-hole.net\n[Mullvad]: https://mullvad.net\n[ProtonVPN]: https://protonvpn.com\n[Windscribe]: https://windscribe.com/?affid=6nh59z1r\n[IVPN]: https://www.ivpn.net\n[NetGuard]: https://www.netguard.me\n[Lockdown]: https://lockdownhq.com\n[OpenSnitch]: https://github.com/evilsocket/opensnitch\n[LuLu]: https://objective-see.com/products/lulu.html\n[SimpleWall]: https://github.com/henrypp/simplewall\n[33Mail]: http://33mail.com/Dg0gkEA\n[anonaddy]: https://anonaddy.com\n[Signal]: https://signal.org\n[KeyBase]: https://keybase.io\n[ProtonMail]: https://protonmail.com\n[MailFence]: https://mailfence.com\n[Tutanota]: https://tutanota.com\n[Brave Browser]: https://brave.com/?ref=ali721\n[Firefox]: https://www.mozilla.org/\n[DuckDuckGo]: https://duckduckgo.com\n[StartPage]: https://www.startpage.com\n[Qwant]: https://www.qwant.com\n[SearX]: https://asciimoo.github.io/searx\n\n[VPN Warning Note]: https://github.com/Lissy93/personal-security-checklist/blob/master/5_Privacy_Respecting_Software.md#word-of-warning-8\n\n[//]: # (PRODUCTIVITY SOFTWARE LINKS)\n[NextCloud]: https://nextcloud.com\n[Standard Notes]: https://standardnotes.org/?s=chelvq36\n[Cryptee]: https://crypt.ee\n[Joplin]: https://joplinapp.org\n[ETE Sync]: https://www.etesync.com/accounts/signup/?referrer=QK6g\n[FilePizza]: https://file.pizza/\n[Syncthing]: https://syncthing.net\n[Write Freely]: https://writefreely.org\n\n[//]: # (BROWSER EXTENSION LINKS)\n[Privacy Badger]: https://www.eff.org/privacybadger\n[HTTPS Everywhere]: https://eff.org/https-everywhere\n[uBlock Origin]: https://github.com/gorhill/uBlock\n[ScriptSafe]: https://github.com/andryou/scriptsafe\n[WebRTC Leak Prevent]: https://github.com/aghorler/WebRTC-Leak-Prevent\n[Vanilla Cookie Manager]: https://github.com/laktak/vanilla-chrome\n[Privacy Essentials]: https://duckduckgo.com/app\n\n[//]: # (ONLINE SECURITY TOOLS)\n[';--have i been pwned?]: https://haveibeenpwned.com\n[εxodus]: https://reports.exodus-privacy.eu.org\n[Panopticlick]: https://panopticlick.eff.org\n[Browser Leak Test]: https://browserleaks.com\n[IP Leak Test]: https://ipleak.net\n[EXIF Remover]: https://www.exifremove.com\n[Redirect Detective]: https://redirectdetective.com\n[Virus Total]: https://www.virustotal.com\n\n[//]: # (ANDROID APP LINKS)\n[Island]: https://play.google.com/store/apps/details?id=com.oasisfeng.island\n[Orbot]: https://play.google.com/store/apps/details?id=org.torproject.android\n[Orbot]: https://play.google.com/store/apps/details?id=org.torproject.android\n[Bouncer]: https://play.google.com/store/apps/details?id=com.samruston.permission\n[Crypto]: https://play.google.com/store/apps/details?id=com.kokoschka.michael.crypto\n[Cryptomator]: https://play.google.com/store/apps/details?id=org.cryptomator\n[Daedalus]: https://play.google.com/store/apps/details?id=org.itxtech.daedalus\n[Brevent]: https://play.google.com/store/apps/details?id=me.piebridge.brevent\n[Greenify]: https://play.google.com/store/apps/details?id=com.oasisfeng.greenify\n[Secure Task]: https://play.google.com/store/apps/details?id=com.balda.securetask\n[Tor Browser]: https://play.google.com/store/apps/details?id=org.torproject.torbrowser \n[PortDroid]: https://play.google.com/store/apps/details?id=com.stealthcopter.portdroid\n[Packet Capture]: https://play.google.com/store/apps/details?id=app.greyshirts.sslcapture\n[SysLog]: https://play.google.com/store/apps/details?id=com.tortel.syslog\n[Dexplorer]: https://play.google.com/store/apps/details?id=com.dexplorer\n[Check and Test]: https://play.google.com/store/apps/details?id=com.inpocketsoftware.andTest\n[Tasker]: https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm\n[Haven]: https://play.google.com/store/apps/details?id=org.havenapp.main\n[NetGaurd]: https://www.netguard.me/\n[Exodus]: https://exodus-privacy.eu.org/en/page/what/#android-app\n[XUMI Security]: https://xumi.ca/xumi-security/\n[Fing App]: https://www.fing.com/products/fing-app\n[FlutterHole]: https://github.com/sterrenburg/flutterhole\n[1.1.1.1]: https://1.1.1.1/\n[The Guardian Project]: https://play.google.com/store/apps/dev?id=6502754515281796553\n[The Tor Project]: https://play.google.com/store/apps/developer?id=The+Tor+Project\n[Oasis Feng]: https://play.google.com/store/apps/dev?id=7664242523989527886\n[Marcel Bokhorst]: https://play.google.com/store/apps/dev?id=8420080860664580239\n\n[//]: # (SECURITY HARDWARE LINKS)\n[Encrypted Drive Enclosure]: https://www.startech.com/HDD/Enclosures/encrypted-sata-enclosure-2-5in-hdd-ssd-usb-3~S2510BU33PW\n[iStorage]: https://istorage-uk.com\n[PortaPow]: https://portablepowersupplies.co.uk/product/usb-data-blocker\n[Lindy]: https://lindy.com/en/technology/port-blockers\n[Mic Block]: https://www.aliexpress.com/item/4000542324471.html\n[RFID Shields]: https://www.aliexpress.com/item/32976382478.html\n[Webcam Covers]: https://www.aliexpress.com/item/4000393683866.html\n[Privacy Screen]: https://www.aliexpress.com/item/32906889317.html\n[Trezor]: https://trezor.io\n[CryptoSteel]: https://cryptosteel.com/product/cryptosteel/?v=79cba1185463\n[Solo Key]: https://solokeys.com\n[Nitro Key]: https://www.nitrokey.com\n[Librem Key]: https://puri.sm/products/librem-key\n[Anonabox]: https://www.anonabox.com\n[FingBox]: https://www.fing.com/products/fingbox\n[Orwl]: https://orwl.org\n[Hunter-Cat]: https://lab401.com/products/hunter-cat-card-skimmer-detector\n[DSTIKE Deauth Detector]: https://www.tindie.com/products/lspoplove/dstike-deauth-detector-pre-flashed-with-detector\n[Bug-Detector]: https://www.brickhousesecurity.com/counter-surveillance/multi-bug\n[Ultrasonic Microphone Jammer]: https://uspystore.com/silent-ultrasonic-microphone-defeater\n[Silent-Pocket]: https://silent-pocket.com\n[Armourcard]: https://armourcard.com\n[Adversarial Fashion]: https://adversarialfashion.com\n[Reflectacles]: https://www.reflectacles.com\n[Spacehuhn]: https://github.com/spacehuhn/DeauthDetector\n\n"
  },
  {
    "path": "articles/4_Privacy_And_Security_Links.md",
    "content": "# Awesome Privacy & Security Links\n\n[![Awesome](https://awesome.re/badge-flat2.svg)](https://awesome.re) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![License](https://img.shields.io/badge/LICENSE-CC_BY_4.0-00a2ff?&style=flat-square)](https://creativecommons.org/licenses/by/4.0/) [![Contributors](https://img.shields.io/github/contributors/lissy93/personal-security-checklist?color=%23ffa900&style=flat-square)](https://github.com/Lissy93/personal-security-checklist/graphs/contributors)\n\n*A curated list of notable guides, articles, tools and media - relating to digital security, internet freedom and online privacy*\n\n**See also**: [Personal Security Checklist](https://github.com/Lissy93/personal-security-checklist/blob/master/README.md) | [Privacy-Respecting Software](https://github.com/Lissy93/personal-security-checklist/blob/master/5_Privacy_Respecting_Software.md) | [Security Gadgets](/6_Privacy_and-Security_Gadgets.md) | [Why Privacy Matters](/0_Why_It_Matters.md) | [TLDR](/2_TLDR_Short_List.md)🔐\n\n## Contents\n\n- **Information and Guides**\n  - [How-To Guides](#how-to-guides)\n  - [Articles](#articles)\n  - [Blogs](#blogs)\n- **Media**\n  - [Books](#books)\n  - [Podcasts](#podcasts)\n  - [Videos](#videos)\n- **Security Tools & Services**\n  - [Online Tools](#online-tools)\n  - Privacy-Respecting Software, moved to [here](https://github.com/Lissy93/awesome-privacy)\n  - Security Hardware, moved to [here](/6_Privacy_and-Security_Gadgets.md)\n- **Research**\n  - [Data and API's](#data-apis-and-visualisations)\n  - [Academic](#academic)\n- **Organisations**\n  - [Foundations](#foundations)\n  - [Government and Independant Organisations](#governance)\n- **More Lists**\n  - [Mega Guides](#mega-guides)\n  - [Other GitHub Security Lists](#more-awesome-github-lists)\n\n\n## How-To Guides\n\n- **Threat Protection**\n  - Protect against SIM-swap scam: via [wired](https://www.wired.com/story/sim-swap-attack-defend-phone)\n  - How to spot a phishing attack: via [EFF](https://ssd.eff.org/en/module/how-avoid-phishing-attacks)\n  - Protection from Identity Theft: via [Restore Privacy](https://restoreprivacy.com/identity-theft-fraud)\n  - Protecting from key-stroke-logging, with KeyScrambler: via [TechRepublic](https://www.techrepublic.com/blog/it-security/keyscrambler-how-keystroke-encryption-works-to-thwart-keylogging-threats)\n  - Guide to Hash Checks, to ensure a program has not been tampered with: via [ProPrivacy](https://proprivacy.com/guides/how-why-and-when-you-should-hash-check)\n  - Permanently and Securely Delete ‘Files and Directories’ in Linux: via [TechMint](https://www.tecmint.com/permanently-and-securely-delete-files-directories-linux/)\n- **Networking**\n  - How to enable DNS over HTTPS: via [geekwire](https://geekwire.co.uk/privacy-and-security-focused-dns-resolver)\n  - How to resolve DNS leak issue: via [DNSLeakTest](https://www.dnsleaktest.com/how-to-fix-a-dns-leak.html) \n  - Protect against WebRTC Leaks: via [Restore Privacy](https://restoreprivacy.com/webrtc-leaks)\n  - ISP and DNS privacy tips: via [bluz71](https://bluz71.github.io/2018/06/20/digital-privacy-tips.html)\n  - Beginners guide on getting started with Tor: via [ProPrivacy](https://proprivacy.com/privacy-service/guides/ultimate-tor-browser-guide)\n  - Beginners guide to I2P: via [The Tin Hat](https://thetinhat.com/tutorials/darknets/i2p.html)\n  - About Using VPN and Tor together: via [ProPrivacy](https://proprivacy.com/vpn/guides/using-vpn-tor-together)\n  - How to use `__nomap`, to reduce public exposure of SSID: via [ghacks](https://www.ghacks.net/2014/10/29/add-_nomap-to-your-routers-ssid-to-have-it-ignored-by-google-and-mozilla/)\n  - Up-to-date router configurations for advanced security: via [RouterSecurity.org](https://routersecurity.org/)\n- **Communication**\n  - Email Self-Defense, Configure your mail client securly, from scratch - via [FSF.org](https://emailselfdefense.fsf.org)\n  - How to avoid Phishing Attacks: via [EFF](https://ssd.eff.org/en/module/how-avoid-phishing-attacks)\n  - How to use PGP: Via EFF - [Windows](https://ssd.eff.org/en/module/how-use-pgp-windows), [MacOS](https://ssd.eff.org/en/module/how-use-pgp-mac-os-x) and [Linux](https://ssd.eff.org/en/module/how-use-pgp-linux)\n  - A Step-by-Step Guide to Generating More Secure GPG Keys: via [spin.atomicobject.com](https://spin.atomicobject.com/2013/11/24/secure-gpg-keys-guide/)\n  - How to Maintain Anonyimity in Bitcoin Transactions: [coinsutra.com](https://coinsutra.com/anonymous-bitcoin-transactions/)\n  - Beginners Guide to Signal (secure messaging app): via [Freedom of the Press Foundation](https://freedom.press/news/signal-beginners/)\n  - How to use OTR messaging with Adium (MacOS): via [CalyxiIstitute.org](https://calyxinstitute.org/docs/howto-encrypted-instant-messaging-with-osx-adium-and-otr)\n  - Full guide to using plaintext emails: via [useplaintext.email](https://useplaintext.email/)\n- **Devices**\n  - How to Enable Encryption on your Devices: via [SpreadPrivacy.com](https://spreadprivacy.com/how-to-encrypt-devices/)\n  - How to Delete your Data Securely: Via EFF - [Windows](https://ssd.eff.org/en/module/how-delete-your-data-securely-windows), [MacOS](https://ssd.eff.org/en/module/how-delete-your-data-securely-macos) and [Linux](https://ssd.eff.org/en/module/how-delete-your-data-securely-linux) \n  - Layers of Personal Tech Security: via [The Wire Cutter](https://thewirecutter.com/blog/internet-security-layers)\n  - Device-Specific Privacy Guides: via [SpreadPrivacy](https://spreadprivacy.com/tag/device-privacy-tips/)\n    - For: [Windows 10](https://spreadprivacy.com/windows-10-privacy-tips/), [MacOS](https://spreadprivacy.com/mac-privacy-tips/), [Linux](https://spreadprivacy.com/linux-privacy-tips/), [Android](https://spreadprivacy.com/android-privacy-tips/) and [iOS](https://spreadprivacy.com/iphone-privacy-tips/)\n  - Guide to scrubbing Windows OSs from forensic investigation: by u/moschles, via [Reddit](https://www.reddit.com/r/security/comments/32fb1l/open_guide_to_scrubbing_windows_oss_from_forensic)\n  - A curated list of Windows Domain Hardening techniques: by @PaulSec, via: [GitHub](https://github.com/PaulSec/awesome-windows-domain-hardening)\n  - Configuring Gboard for better Privacy: via [Ghacks](https://www.ghacks.net/2016/12/21/configure-gboard-privacy-google-keyboard/)\n  - Settings to update on iPhone, for better privacy: via [lifehacker](https://lifehacker.com/the-privacy-enthusiasts-guide-to-using-an-iphone-1792386831)\n  - How to check App Permissions (Android, iOS, Mac & Windows): via [Wired](https://www.wired.com/story/how-to-check-app-permissions-ios-android-macos-windows/)\n  - How to manage Self-Encrypting Drives: via [TechSpot](https://www.techspot.com/guides/869-self-encrypting-drives/)\n  - Harden your MacOS Security: via [@drduh on GitHub](https://github.com/drduh/macOS-Security-and-Privacy-Guide)\n- **Software**\n  - Complete guide to configuring Firefox for Privacy + Speed: via [12bytes](https://12bytes.org/articles/tech/firefox/firefoxgecko-configuration-guide-for-privacy-and-performance-buffs/)\n  - Firefox Configuration Guide for Beginners: via [12bytes](https://12bytes.org/articles/tech/firefox/the-firefox-privacy-guide-for-dummies/)\n  - How to use Vera Crypt: via [howtogeek](https://www.howtogeek.com/108501/the-how-to-geek-guide-to-getting-started-with-truecrypt)\n  - How to use KeePassXC: via [EFF](https://ssd.eff.org/en/module/how-use-keepassxc)\n  - How to use uMatrix browser addon to block trackers: via [ProPrivacy](https://proprivacy.com/privacy-service/guides/lifehacks-setup-umatrix-beginners) \n  - How to set up 2-Factor Auth on common websites: via [The Verge](https://www.theverge.com/2017/6/17/15772142/how-to-set-up-two-factor-authentication)\n  - How to use DuckDuckGo advanced search features: via [Ghacks](https://www.ghacks.net/2013/03/24/duckduckgo-another-bag-of-tricks-to-get-the-most-out-of-it/)\n  - How to use Cryptomator (encrypt files on cloud storage): via [It's Foss](https://itsfoss.com/cryptomator/)\n- **Physical Security**\n  - Guide to Living Anonymously, Personal Data Removal and Credit Freeze: via [IntelTechniques.com](https://inteltechniques.com/data/workbook.pdf)\n  - Hiding from Physical Surveillance: via [Snallabolaget](http://snallabolaget.com/hiding-from-surveillance-how-and-why)\n  - Guide to opting-out of public data listings and marketing lists: via [World Privacy Forum](https://www.worldprivacyforum.org/2015/08/consumer-tips-top-ten-opt-outs)\n  -\n- **Enterprise**\n  - A basic checklist to harden GDPR compliancy: via [GDPR Checklist](https://gdprchecklist.io)\n- **Reference Info**\n  - A direcory of websites, apps and services supporting 2FA: via [TwoFactorAuth.org](https://twofactorauth.org)\n  - A directory of direct links to delete your account from web services: via [JustDeleteMe.xyz](https://justdeleteme.xyz)\n  - Impartial VPN Comparison Data: via [ThatOnePrivacySite](https://thatoneprivacysite.net/#detailed-vpn-comparison)\n  - Terms of Service; Didn't Read - Vital resource that summarizes and extracts the key details from Privacy Policies/ Terms of Services, aiming to fix the issues caused by blindly agreeing to these Terms: via [tosdr.org](https://tosdr.org/)\n  - Free, open-source and privacy-respecting alternatives to popular software: via [Switching.Software](https://switching.software/)\n  - Product reviews from a privacy perspective, by Mozilla: via [Privacy Not Included](https://foundation.mozilla.org/en/privacynotincluded)\n  - Surveillance Catalogue - Database of secret government surveillance equipment, Snowden: via [The Intercept](https://theintercept.com/surveillance-catalogue)\n    - See also: The source code, on WikiLeaks [Vault7](https://wikileaks.org/vault7) and [Vault8](https://wikileaks.org/vault8), and the accompanying [press release](https://wikileaks.org/ciav7p1)\n  - Who Has Your Back? - Which companies hand over your comply with Government Data Requests 2019: via [EFF](https://www.eff.org/wp/who-has-your-back-2019)\n  - Check who your local and government representatives in your local area are [WhoAreMyRepresentatives.org](https://whoaremyrepresentatives.org)\n  - Open project to rate, annotate, and archive privacy policies: via [PrivacySpy.org](https://privacyspy.org)\n  - Hosts to block: via [someonewhocares/ hosts](https://someonewhocares.org/hosts) / [StevenBlack/ hosts](https://github.com/StevenBlack/hosts)\n  - Magic Numbers - Up-to-date file signature table, to identify / verify files have not been tampered with: via [GaryKessler](https://www.garykessler.net/library/file_sigs.html)\n  - List of IP ranges per country: via [Nirsoft](https://www.nirsoft.net/countryip)\n  - Database of default passwords for various devices by manufacturer and model: via [Default-Password.info](https://default-password.info)\n- **All-in-one digital and physical security**\n  - Umbrella: an open source iOS/Android/Web app for learning about and managing digital, operational and physical security (from safe communication to dealing with a kidnap) via [Security First](https://www.secfirst.org)\n\n\n\n## Articles\n- **General**\n  - 8-point manifesto, of why Privacy Matters: via [whyprivacymatters.org](https://whyprivacymatters.org)\n  - Rethinking Digital Ads: via [TheInternetHealthReport](https://internethealthreport.org/2019/rethinking-digital-ads)\n- **Encryption**\n  - Overview of projects working on next-generation secure email: via [OpenTechFund](https://github.com/OpenTechFund/secure-email)\n  - Anatomy of a GPG Key: via [@DaveSteele](https://davesteele.github.io/gpg/2014/09/20/anatomy-of-a-gpg-key/)\n- **Surveillance**\n  - Twelve Million Phones, One Dataset, Zero Privacy: via [NY Times](https://www.nytimes.com/interactive/2019/12/19/opinion/location-tracking-cell-phone.html)\n  - Windows data sending: via [The Hacker News](https://thehackernews.com/2016/02/microsoft-windows10-privacy.html)\n  - Is your Anti-Virus spying on you: via [Restore Privacy](https://restoreprivacy.com/antivirus-privacy)\n  - What does your car know about you?: via [Washington Post](https://www.washingtonpost.com/technology/2019/12/17/what-does-your-car-know-about-you-we-hacked-chevy-find-out)\n  - Turns Out Police Stingray Spy Tools Can Indeed Record Calls: via [Wired](https://www.wired.com/2015/10/stingray-government-spy-tools-can-record-calls-new-documents-confirm)\n  - UK Police Accessing Private Phone Data Without Warrant: via [Restore Privacy](https://restoreprivacy.com/uk-police-accessing-phone-data)\n  - Rage Against Data Dominance: via [Privacy International](https://privacyinternational.org/long-read/3734/rage-against-data-dominance-new-hope)\n  - NSA Files Decoded, What the revelations mean for you: via [The Guardian](https://www.theguardian.com/world/interactive/2013/nov/01/snowden-nsa-files-surveillance-revelations-decoded)\n  - How to Track a Cellphone Without GPS—or Consent: via [Gizmodo](https://gizmodo.com/how-to-track-a-cellphone-without-gps-or-consent-1821125371)\n  - Apps able to track device location, through power manager: via [Wired](https://www.wired.com/2015/02/powerspy-phone-tracking/)\n  - Hackers and governments can see you through your phone’s camera: via [Business Insider](https://www.businessinsider.com/hackers-governments-smartphone-iphone-camera-wikileaks-cybersecurity-hack-privacy-webcam-2017-6)\n  - Law Enforcement Geo-Fence Data Requests - How an Innocent cyclist became a suspect when cops accessed his Google location data: via [Daily Mail](https://www.dailymail.co.uk/news/article-8086095/Police-issue-warrant-innocent-mans-Google-information.html)\n  - IBM Used NYPD Surveillance Footage to Develop Technology That Lets Police Search by Skin Color: via [TheIntercept](https://theintercept.com/2018/09/06/nypd-surveillance-camera-skin-tone-search/)\n- **Threats**\n  - 23 reasons not to reveal your DNA: via [Internet Health Report](https://internethealthreport.org/2019/23-reasons-not-to-reveal-your-dna)\n  - Security of Third-Party Keyboard Apps on Mobile Devices: via [Lenny Zelster](https://zeltser.com/third-party-keyboards-security)\n  - Mobile Websites Can Tap Into Your Phone's Sensors Without Asking: via [Wired](https://www.wired.com/story/mobile-websites-can-tap-into-your-phones-sensors-without-asking)\n  - Non-admin accounts mitigate 94% of critical Windows vulnerabilities: via [ghacks](https://www.ghacks.net/2017/02/23/non-admin-accounts-mitigate-94-of-critical-windows-vulnerabilities/)\n  - Android Apps are able to monitor screen state, data usage, installed app details and more without any permissions: by @databurn-in, via [GitHub](https://github.com/databurn-in/Android-Privacy-Issues)\n    - See also, [PrivacyBreacher](https://github.com/databurn-in/PrivacyBreacher) - an app developed by @databurn-in, which demonstrates these issues\n  - How URL Previews in Apps can Leak Personal Info: via [hunch.ly](https://hunch.ly/osint-articles/osint-article-how-to-blow-your-online-cover)\n  - Big data privacy risks: via [CSO Online](https://www.csoonline.com/article/2855641/the-5-worst-big-data-privacy-risks-and-how-to-guard-against-them.html)\n  - Anti-Doxing Guide (For Activists Facing Attacks): via [Equality Labs](https://medium.com/@EqualityLabs/anti-doxing-guide-for-activists-facing-attacks-from-the-alt-right-ec6c290f543c)\n- **Breaches**\n  - Wired guide to data breaches - past, present and future: via [Wired](https://www.wired.com/story/wired-guide-to-data-breaches/)\n  - Grindr and OkCupid Spread Personal Details Study Says: via [NY Times](https://www.nytimes.com/2020/01/13/technology/grindr-apps-dating-data-tracking.html)\n  - The Asia-Pacific Cyber Espionage Campaign that Went Undetected for 5 Years: via [TheHackerNews](https://thehackernews.com/2020/05/asia-pacific-cyber-espionage.html)\n  - ClearView AI Data Breach - 3 Billion Faces: via [Forbes](https://www.forbes.com/sites/kateoflahertyuk/2020/02/26/clearview-ai-the-company-whose-database-has-amassed-3-billion-photos-hacked/)\n  - The MongoDB hack and the importance of secure defaults: via [Synk](https://snyk.io/blog/mongodb-hack-and-secure-defaults/)\n  - Truecaller Data Breach – 47.5 Million Indian Truecaller Records On Sale: via [GBHackers](https://gbhackers.com/truecaller-data-breach/)\n  - Hundreds of millions of Facebook user records were exposed on Amazon cloud server: via [CBS News](https://www.cbsnews.com/news/millions-facebook-user-records-exposed-amazon-cloud-server/)\n  - Microsoft data breach exposes 250 million customer support records: via [Graham Cluley](https://www.grahamcluley.com/microsoft-data-breach/)  \n- **Data Collection**\n  - Ring Doorbell App Packed with Third-Party Trackers: via [EFF](https://www.eff.org/deeplinks/2020/01/ring-doorbell-app-packed-third-party-trackers)\n  - How a highly targeted ad can track your precise movements: via [Wired](https://www.wired.com/story/track-location-with-mobile-ads-1000-dollars-study/)\n    - Based on the paper, Using Ad Targeting for Surveillance on a Budget: via [Washington.edu](https://adint.cs.washington.edu/ADINT.pdf)\n  - How websites can see your full personal details, from your phone contract info: via [Medium/@philipn](https://medium.com/@philipn/want-to-see-something-crazy-open-this-link-on-your-phone-with-wifi-turned-off-9e0adb00d024)\n  - Facebook and America’s largest companies give worker data to Equifax: via [FastCompany](https://www.fastcompany.com/40485634/equifax-salary-data-and-the-work-number-database)\n  - Exfiltration of personal data by session-replay scripts: via [Freedom-to-Tinker](https://freedom-to-tinker.com/2017/11/15/no-boundaries-exfiltration-of-personal-data-by-session-replay-scripts/)\n  - Apple's iTerm2 Leaks Everything You Hover in Your Terminal via DNS Requests: via [BleepingComputer](https://www.bleepingcomputer.com/news/security/iterm2-leaks-everything-you-hover-in-your-terminal-via-dns-requests/)\n  - Google Has Quietly Dropped Ban on Personally Identifiable Web Tracking: via [propublica.org](https://www.propublica.org/article/google-has-quietly-dropped-ban-on-personally-identifiable-web-tracking)\n\n\n## Blogs\n- **Security Reserachers**\n  - [Krebs on Security](https://krebsonsecurity.com/) - Lots of up-to-date, in-depth interesting cyber security news and investigations, by a true legend in the field and NY Times Bestseller, Brian Krebs. [RSS](https://krebsonsecurity.com/feed/)\n  - [Schneier on Security](https://www.schneier.com/) - Commentary, news, essays and more all about cryptography, cyber security and privacy. New posts are written almost daily, and this is also home to the famous [Crypto Gram](https://www.schneier.com/crypto-gram/) weekly newsletter, that's been popular since 1994. By the world-renowned security professional, and serial bestselling author, Bruce Schneier. [RSS](https://www.schneier.com/blog/atom.xml)\n  - [Troy Hunt](https://www.troyhunt.com/) - Security researcher and data breach collector. [RSS](https://feeds.feedburner.com/TroyHunt) \n  - [Graham Cluley](https://www.grahamcluley.com/) - Security news, advise and opinion. From Graham Cluley, co-host of Smashing Security.\n  - [The Last Watch Dog](https://www.lastwatchdog.com/) - Privacy and Security articles, opinion and media by Byron Acohido\n  - [Daniel Miessler](https://danielmiessler.com/) - Summaries recent news and events, and focuses on security, technology and people. [RSS](https://danielmiessler.com/feed/)\n  - [Errata Security](https://blog.erratasec.com/) - Covers latest interesting news, and explains concepts clearly. By Robert Graham and David Maynor. [RSS](https://blog.erratasec.com/feeds/posts/default?alt=rss)\n  - [Underground Tradecraft](https://gru.gq/blog-feed/) - Counterintelligence, OPSEC and Tradecraft for everyone\n- **Cyber Security News**\n  - [Dark Reading](https://www.darkreading.com/) - Well-known cyber security news site, with articles on a range of topics, ranging from data breaches, IoT, cloud security and threat intelligence. [RSS](https://www.darkreading.com/rss_simple.asp)\n  - [Threat Post](https://threatpost.com/) - News and Articles Cloud Security, Malware, Vulnerabilities, Waterfall Security and Podcasts. [RSS](https://threatpost.com/feed/)\n  - [We Live Security](https://www.welivesecurity.com/) - Security news, views, and insight, by ESET + Community. [RSS](https://www.welivesecurity.com/rss-configurator/)\n  - [The Hacker News](https://thehackernews.com/)  - News and info covering Data Breaches, Cyber Attacks, Vulnerabilities, Malware. [RSS](https://feeds.feedburner.com/TheHackersNews)\n  - [Sophos: Naked Security](https://nakedsecurity.sophos.com/) - Security news and updates, presented in an easy-to-digest format. [RSS](https://nakedsecurity.sophos.com/feed/)\n  - [IT Security Guru](https://www.itsecurityguru.org/) - Combines top cyber security news from multiple sites, easier to stay up-to-date\n  - [FOSS Bytes - Cyber Security](https://fossbytes.com/category/security) - News about the latest exploits and hacks\n- **Cyber Security Infomation**\n  - [Heimdal](https://heimdalsecurity.com/blog) - Personal Cyber Security Tutorials and Articles\n  - [Tech Crunch](https://techcrunch.com/tag/cybersecurity-101) - Cyber Security 101\n  - [Email Self-Defense](https://emailselfdefense.fsf.org) - Complete guide to secure email\n  - [Security Planner](https://securityplanner.org) - Great advise for beginners\n  - [My Shaddow](https://myshadow.org) - Resources and guides, to help you take controll of your data\n- **Privacy Guides**\n  - [EFF SSD](https://ssd.eff.org) - Tips for safer online communications\n  - [Restore Privacy](https://restoreprivacy.com) - Tools and guides about privacy and security\n  - [That One Privacy Site](https://thatoneprivacysite.net) - impartial comparisons and discussions\n  - [The Hated One](https://www.youtube.com/channel/UCjr2bPAyPV7t35MvcgT3W8Q) - Privacy and security videos\n  - [12Bytes](https://12bytes.org/articles/tech) - Tech, Privacy and more (Note, sometimes covers controversial topics)\n  - [Pixel Privacy](https://pixelprivacy.com/resources) - Online privacy guides\n  - [The Tin Hat](https://thetinhat.com) - Tutorials and Articles for Online Privacy\n  - [PrivacyTools.io]( https://www.privacytools.io) - Tools to protect against mass surveillance\n  - [PrismBreak](https://prism-break.org/en/all) - Secure app alternatives\n  - [The VERGE guide to privacy](https://bit.ly/2ptl4Wm) - Guides for securing mobile, web and home tech\n- **Privacy News**\n  - [Spread Privacy](https://spreadprivacy.com) - Raising the standard of trust online, by DuckDuckGo\n  - [BringBackPrivacy](https://bringingprivacyback.com) - Easy-reading, sharable privacy articles\n  - [The Privacy Project](https://www.nytimes.com/interactive/2019/opinion/internet-privacy-project.html) - Articles and reporting on Privacy, by the NYT\n- **Internet Freedom**\n  - [OONI](https://ooni.org/post), Internet freedom and analysis on blocked sites\n  - [Internet Health Report](https://foundation.mozilla.org/en/internet-health-report) - Mozilla is documenting and explaining what’s happening to openness and freedom on the Internet\n  - [Worth Hiding](https://worthhiding.com) - Posts about privacy, politics and the law\n\n## Books\n- [Permanent Record](https://www.amazon.co.uk/Permanent-Record-Edward-Snowden/dp/1529035651) by Edward Snowden\n- [Sandworm](https://www.amazon.co.uk/Sandworm-Cyberwar-Kremlins-Dangerous-Hackers/dp/0385544405) by Andy Greenberg: A New Era of Cyberwar and the Hunt for the Kremlin's Most Dangerous Hackers\n- [Extreme Privacy](https://www.amazon.co.uk/Extreme-Privacy-Takes-Disappear-America/dp/1093757620) by Michael Bazzell: Thoroughly detailed guide for protecting your privacy both electronically and physically\n- [Ghost in the Wires](https://www.amazon.co.uk/gp/product/B00FOQS8D6) by Kevin Mitnick: Kevin tells his story of being the world's most wanted hacker\n- [The Art of Invisibility](https://www.amazon.com/Art-Invisibility-Worlds-Teaches-Brother/dp/0316380504), by Kevin Mitnick: You How to Be Safe in the Age of Big Brother\n- [Eyes in the Sky](https://www.goodreads.com/book/show/40796190-eyes-in-the-sky): The Secret Rise of Gorgon Stare and How It Will Watch Us All, by Arthur Holla Michel: Outlines the capabilities of the digital imaging in continuous aerial and satellite surveillance, and discusses both the current systems that are deployed, and the technical feasibility of future plans\n\n## Podcasts\n- [Darknet Diaries] by Jack Rhysider: Stories from the dark sides of the internet.<br>\n[![Stitcher](https://img.shields.io/badge/Listen-Stitcher-E88923?logo=stitcher&style=flat-square)][da-stitch]\n[![iTunes](https://img.shields.io/badge/Listen-iTunes-FB5BC5?logo=itunes&style=flat-square)][da-itunes]\n[![Spotify](https://img.shields.io/badge/Listen-Spotify-1ED760?logo=spotify&style=flat-square)][da-spotify]\n[![Google Podcasts](https://img.shields.io/badge/Listen-Google%20Podcasts-4285F4?logo=Google%20Podcasts&style=flat-square)][da-google]\n[![PocketCasts](https://img.shields.io/badge/Listen-PocketCasts-F43E37?logo=Pocket%20Casts&style=flat-square)][cy-pocketcasts]\n- [CYBER] by Motherboard: News and analysis about the latest cyber threats<br>\n[![Stitcher](https://img.shields.io/badge/Listen-Stitcher-E88923?logo=stitcher&style=flat-square)][cy-stitch]\n[![iTunes](https://img.shields.io/badge/Listen-iTunes-FB5BC5?logo=itunes&style=flat-square)][cy-itunes]\n[![Spotify](https://img.shields.io/badge/Listen-Spotify-1ED760?logo=spotify&style=flat-square)][cy-spotify]\n[![SoundCloud](https://img.shields.io/badge/Listen-SoundCloud-FF6600?logo=soundcloud&style=flat-square)][cy-soundcloud]\n[![PocketCasts](https://img.shields.io/badge/Listen-PocketCasts-F43E37?logo=Pocket%20Casts&style=flat-square)][cy-pocketcasts]\n- [The Privacy, Security, & OSINT Show] by Michael Bazzell: Comprehensive guides on Privacy and OSINT<br>\n[![Stitcher](https://img.shields.io/badge/Listen-Stitcher-E88923?logo=stitcher&style=flat-square)][tp-stitch]\n[![iTunes](https://img.shields.io/badge/Listen-iTunes-FB5BC5?logo=itunes&style=flat-square)][tp-itunes]\n[![Spotify](https://img.shields.io/badge/Listen-Spotify-1ED760?logo=spotify&style=flat-square)][tp-spotify]\n[![SoundCloud](https://img.shields.io/badge/Listen-SoundCloud-FF6600?logo=soundcloud&style=flat-square)][tp-soundcloud]\n[![PocketCasts](https://img.shields.io/badge/Listen-PocketCasts-F43E37?logo=Pocket%20Casts&style=flat-square)][tp-pocketcasts]\n- [Smashing Security] by Graham Cluley and Carole Theriault: Casual, opinionated and humerous chat about current cybersecurity news<br>\n[![Stitcher](https://img.shields.io/badge/Listen-Stitcher-E88923?logo=stitcher&style=flat-square)][sm-stitch]\n[![iTunes](https://img.shields.io/badge/Listen-iTunes-FB5BC5?logo=itunes&style=flat-square)][sm-itunes]\n[![Spotify](https://img.shields.io/badge/Listen-Spotify-1ED760?logo=spotify&style=flat-square)][sm-spotify]\n[![Google Podcasts](https://img.shields.io/badge/Listen-Google%20Podcasts-4285F4?logo=Google%20Podcasts&style=flat-square)][sm-google]\n[![PocketCasts](https://img.shields.io/badge/Listen-PocketCasts-F43E37?logo=Pocket%20Casts&style=flat-square)][sm-pocketcasts]\n- [IRL Podcast] by Mozilla: Online Life is Real Life, Stories about the future of the Web<br>\n[![Stitcher](https://img.shields.io/badge/Listen-Stitcher-E88923?logo=stitcher&style=flat-square)][irl-stitch]\n[![iTunes](https://img.shields.io/badge/Listen-iTunes-FB5BC5?logo=itunes&style=flat-square)][irl-itunes]\n[![Spotify](https://img.shields.io/badge/Listen-Spotify-1ED760?logo=spotify&style=flat-square)][irl-spotify]\n[![Google Podcasts](https://img.shields.io/badge/Listen-Google%20Podcasts-4285F4?logo=Google%20Podcasts&style=flat-square)][irl-google]\n[![PocketCasts](https://img.shields.io/badge/Listen-PocketCasts-F43E37?logo=Pocket%20Casts&style=flat-square)][irl-pocketcasts]\n- [Random but Memorable] by 1Password - A Security advice podcast<br>\n[![Stitcher](https://img.shields.io/badge/Listen-Stitcher-E88923?logo=stitcher&style=flat-square)][rbm-stitch]\n[![iTunes](https://img.shields.io/badge/Listen-iTunes-FB5BC5?logo=itunes&style=flat-square)][rbm-itunes]\n[![Spotify](https://img.shields.io/badge/Listen-Spotify-1ED760?logo=spotify&style=flat-square)][rbm-spotify]\n[![Google Podcasts](https://img.shields.io/badge/Listen-Google%20Podcasts-4285F4?logo=Google%20Podcasts&style=flat-square)][rbm-google]\n[![PocketCasts](https://img.shields.io/badge/Listen-PocketCasts-F43E37?logo=Pocket%20Casts&style=flat-square)][rbm-pocketcasts]\n\n\n \nMore Security Podcasts on [player.fm](https://player.fm/featured/security)\n\n More Podcasts (Verification Required): [Naked Security](https://nakedsecurity.sophos.com) | [Open Source Security Podcast](opensourcesecuritypodcast.com) | [Defensive Security Podcast](https://defensivesecurity.org) | [Malicious Life](https://malicious.life) | [Down the Security Rabbit Hole](http://podcast.wh1t3rabbit.net) | [Cyber Wire](https://thecyberwire.com/podcasts/daily-podcast) | [Hacking Humans](https://thecyberwire.com/podcasts/hacking-humans) | [Security Now](https://twit.tv/shows/security-now) | [Cyber Security Interviews](https://cybersecurityinterviews.com) | [Security Weekly](https://securityweekly.com) | [The Shared Security Podcast](https://sharedsecurity.net) | [Risky Business](https://risky.biz/netcasts/risky-business) | [Crypto-Gram Security Podcast](https://crypto-gram.libsyn.com) | [Off the Hook](https://player.fm/series/off-the-hook-84511) | [Opt Out Podcast](https://optoutpod.com/)\n \n\n[Darknet Diaries]: https://darknetdiaries.com\n[da-stitch]: https://www.stitcher.com/podcast/darknet-diaries\n[da-itunes]: https://podcasts.apple.com/us/podcast/darknet-diaries/id1296350485\n[da-spotify]: https://open.spotify.com/show/4XPl3uEEL9hvqMkoZrzbx5\n[da-pocketcasts]: https://pca.st/darknetdiaries\n[da-google]: https://podcasts.google.com/?feed=aHR0cHM6Ly9mZWVkcy5tZWdhcGhvbmUuZm0vZGFya25ldGRpYXJpZXM%3D\n\n[CYBER]: https://www.vice.com/en_us/article/59vpnx/introducing-cyber-a-hacking-podcast-by-motherboard\n[cy-stitch]: https://www.stitcher.com/podcast/vice-2/cyber\n[cy-soundcloud]: https://soundcloud.com/motherboard\n[cy-itunes]: https://podcasts.apple.com/us/podcast/cyber/id1441708044\n[cy-spotify]: https://open.spotify.com/show/3smcGJaAF6F7sioqFDQjzn\n[cy-pocketcasts]: https://pca.st/z7m3\n\n[The Privacy, Security, & OSINT Show]: https://inteltechniques.com/podcast.html\n[tp-stitch]: https://www.stitcher.com/podcast/michael-bazzell/the-complete-privacy-security-podcast\n[tp-soundcloud]: https://soundcloud.com/user-98066669\n[tp-itunes]: https://podcasts.apple.com/us/podcast/complete-privacy-security/id1165843330\n[tp-spotify]: https://open.spotify.com/show/6QPWpZJ6bRTdbkI7GgLHBM\n[tp-pocketcasts]: https://pca.st/zdIq\n\n[Smashing Security]: https://www.smashingsecurity.com\n[sm-stitch]: https://www.stitcher.com/podcast/smashing-security\n[sm-itunes]: https://podcasts.apple.com/gb/podcast/smashing-security/id1195001633\n[sm-spotify]: https://open.spotify.com/show/3J7pBxEu43nCnRTSXaan8S\n[sm-pocketcasts]: https://pca.st/47UH\n[sm-google]: https://podcasts.google.com/?feed=aHR0cHM6Ly93d3cuc21hc2hpbmdzZWN1cml0eS5jb20vcnNz\n\n[IRL Podcast]: https://irlpodcast.org\n[irl-stitch]: https://www.stitcher.com/podcast/smashing-security\n[irl-itunes]: https://geo.itunes.apple.com/podcast/us/id1247652431?mt=2&at=1010lbVy\n[irl-spotify]: https://open.spotify.com/show/0vT7LJMeVDxyQ2ZamHKu08\n[irl-pocketcasts]: https://pca.st/irl\n[irl-google]: https://www.google.com/podcasts?feed=aHR0cHM6Ly9mZWVkcy5tb3ppbGxhLXBvZGNhc3RzLm9yZy9pcmw\n\n[Random but Memorable]: https://blog.1password.com/random-but-memorable-the-security-advice-podcast-from-1password\n[rbm-stitch]: https://www.stitcher.com/podcast/1password/random-but-memorable\n[rbm-itunes]: https://podcasts.apple.com/us/podcast/random-but-memorable/id1435486599\n[rbm-pocketcasts]: https://pca.st/43AW\n[rbm-spotify]: https://open.spotify.com/show/5Sa3dy0xDvMT0h3O5MGMOr\n[rbm-google]: https://podcasts.google.com/?feed=aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS9lRVpIazJhTA\n\n\n## Videos\n- **General**\n  - [You are being watched](https://youtu.be/c8jDsg-M6qM) by The New York Times\n  - [The Power of Privacy](https://youtu.be/KGX-c5BJNFk) by The Guardian\n  - [Why Privacy matters, even if you have nothing to hide](https://youtu.be/Hjspu7QV7O0) by The Hated One\n  - [The Unhackable Email Service](https://youtu.be/NM8fAnEqs1Q) by Freethink\n  - [NSA Whistleblower: Government Collecting Everything You Do](https://youtu.be/SjHs-E2e2V4) by Empire Files\n- **Cryptography**\n  - [Advanced Into to GnuPGP](https://begriffs.com/posts/2016-11-05-advanced-intro-gnupg.html) by  Neal Walfield ([walfield.org](http://walfield.org/))\n- **TED Talks**\n  - [How Online Trackers Track You, and What To Do About It](https://youtu.be/jVeqAemtC6w) by Luke Crouch\n  - [Why you should switch off your home WiFi](https://youtu.be/2GpNhYy2l08) by Bram Bonné\n  - [Why Privacy Matters](https://www.ted.com/talks/glenn_greenwald_why_privacy_matters), by Glenn Greenwald\n  - [Fighting viruses, defending the net](https://www.ted.com/talks/mikko_hypponen_fighting_viruses_defending_the_net), by Mikko Hypponen\n  - [The 1s and 0s behind cyber warfare](https://www.ted.com/talks/chris_domas_the_1s_and_0s_behind_cyber_warfare), by Chris Domas\n  - [State Sanctioned Hacking - The Elephant in the Room](https://youtu.be/z-A2MxHmnU4) - Historic, economic and demographic overview of the growing threat to the U.S. from Chinese cyber invasions, by Frank Heidt\n  - [How the IoT is Making Cybercrime Investigation Easier](https://youtu.be/9CemONO6vrY) - How our data is changing the nature of \"evidence\" in digital forensics, by Jonathan Rajewski\n  - [Online Privacy Doesn't Exist](https://youtu.be/LgWrD3EJ1Do) - The unexpected dangers our digital breadcrumbs can lead to, by Denelle Dixon\n  - [Data is the new gold, who are the new thieves?](https://youtu.be/XNF-rGiGb50) - Introduction and demonstration of the power of data, by Tijmen Schep\n- **Conferences**\n  - [DEF CON 27](https://www.youtube.com/playlist?list=PL9fPq3eQfaaA4qJEQQyXDYtTIfxCNA0wB) - Collection of talks from DEF CON 2019, Vegas\n  - [RSA Conference](https://www.youtube.com/user/RSAConference) - Collection of security talks from the RSA conferences\n  - [Administraitor.video](https://administraitor.video) - A regularly updated collection of new and interesting security confrence talks\n- **Misc**\n  - [Through a PRISM, Darkly](https://youtu.be/e4woRYs0mM4) - Everything we know about NSA spying, by Kurt Opsahl\n  - [What it REALLY takes to have True Privacy in the 21st Cen](https://youtu.be/bxQSu06yuZc) by @MalcomVetter\n\nSee also: [awesome-sec-talks](https://github.com/PaulSec/awesome-sec-talks) by @PaulSec\n\n\n## Online Tools\n\n- **Check and Test**\n  - [εxodus](https://reports.exodus-privacy.eu.org) - Check which trackers any app on the Play Store has\n  - [Have I been Pwned](https://haveibeenpwned.com) and [Dehashed](https://www.dehashed.com) - Check if your details have been compromised\n  - [Redirect Detective](https://redirectdetective.com) - Check where a suspicious URL redirects to\n  - [Botometer](https://botometer.iuni.iu.edu/) - An AI script to check if a certain username is a bot\n  - [Who Tracks Me](https://whotracks.me/trackers.html) - Breakdown of common tracking scripts, and which sites use them\n- **Utilities**\n  - [Privacy.sexy](https://privacy.sexy/) - A collection of commands you can run to impplement best prctices on Windows or MacOS\n  - [ExifRemove](https://www.exifremove.com) - Remove Meta/ EXIF data online\n  - [Secure Password Check](https://password.kaspersky.com) - Fun little tool, to demonstrate how long it could take to crack a password\n  - [33Mail](http://33mail.com/Dg0gkEA) or [Anonaddy](https://anonaddy.com) or [SimpleLogin](https://simplelogin.io?slref=bridsqrgvrnavso) Protect your email address, by auto-generating unique permeant aliases for each account, so all emails land in your primary inbox\n  - [Deseat Me](https://www.deseat.me) - Clean up your online presence\n- **Anti-Tracking Analysis**\n  - [Panopticlick](https://panopticlick.eff.org) - Check if, and how your browser is tracking  you\n  - [Browser Leaks](https://browserleaks.com) - Check which information is being leaked by your browser\n  - [DNSLeakTest](https://www.dnsleaktest.com) - Check for and fix a DNS leak\n  - [IP Leak](https://ipleak.net) - IP Leak test\n  - [Am I Unique?](http://amiunique.org) - If your fingerprint is unique, then websites can track you\n  - [Qualys SSL Client Test](https://clienttest.ssllabs.com:8443/ssltest/viewMyClient.html) - Check the SSL/TLS capabilities of your browser\n- **Phishing, Hacking and Abuse**\n  - [VirusTotal](https://www.virustotal.com) - Analyse a suspicious web resource for malware\n  - [ScamAdviser](https://www.scamadviser.com) - Check if a website is a scam, before buying from it\n  - [Abuse IP DB](https://www.abuseipdb.com) - Report an IP address for abuse, spam or attacks, and check the status of any IP\n  - [Phish Tank](https://www.phishtank.com) - Check if a link is a known phishing URL, Submit a phishing URL, browse recent phishing URLs\n  - [Is It Hacked?](http://www.isithacked.com) - Check if a website or page appears to be hacked, hijacked or generally suspicious \n- **IP Tools**\n  - [I Know What You Download](https://iknowwhatyoudownload.com) - Shows torrents that have been downloaded or distributed from your IP address\n  - [Hetrix Tools - Blacklist Check](https://hetrixtools.com/blacklist-check/) - Check if your Domain or IP appears on any common blacklists\n  - [Check: The Tor Project](https://check.torproject.org/) - Check if your connected via Tor, and diagnose issues\n- **Public Domain and Website Scanning Tools**\n  - [URL Scan](https://urlscan.io) - Scan and analyse websites, shows IP, DNS, domain and host data, as well as info about resources and requests\n  - [Security Trails](https://securitytrails.com/#search) - Shows all DNS records, historical DNS data and sub domains\n  - [crt.sh](https://crt.sh) - Shows current and previous SSL/ TLS certificates for a given domain, has advanced search option\n  - [Virus Total](https://www.virustotal.com) - Scans any URL, web asset or file for malware\n  - [DomainTools WhoIs](https://whois.domaintools.com) - Who Is Lookup. Check who registered a domain name, and find contact details\n  - [Pentest Tools Vulnerability Scanner](https://pentest-tools.com/website-vulnerability-scanning/website-scanner) - Light scan searches for client and server-side vulnerabilities and missing HTTP security headers\n  - [Qualys SSL Server Test](https://www.ssllabs.com/ssltest) - Perform a deep analysis of the configuration of any SSL web server on the public Internet\n  - [Abuse IP DB](https://www.abuseipdb.com) - Check if an IP or domain has been reported for abuse, or file a report\n  - [RIPEstat](https://stat.ripe.net) - Detailed analysis of IP Addresses (Routing, DNS, Abuse History, Activity etc)\n  - [Multirbl](http://multirbl.valli.org) - Complete IP check for sending Mailservers\n  - [IPVoid](https://www.ipvoid.com) - Full suit of Domain, IP, and DNS tools for Tracing, Lookup, Checking and Pinging\n- **Net Neutrality**\n  - [Blocked by ORG](https://www.blocked.org.uk) - Check if your website is blocked by certain ISPs\n  - [Data Rights Finder](https://www.datarightsfinder.org) - Find, understand and use information from privacy policies\n  - [Down For Everyone Or Just Me](https://downforeveryoneorjustme.com) - Quickly determine if a website is down, or just unavailable for you\n- **Anonymous Services** - The following sites host a veriety of anonymous online services\n  - [NixNet](https://nixnet.services)\n  - [Snopyta](https://snopyta.org)\n  - [Disroot](https://disroot.org)\n- **Archives**\n  - [The Way Back Machine](https://archive.org/web/web.php) - See previous versions of any website. An archive of 431 billion snapshots over 20 years\n  - [PolitiTweet](https://polititweet.org) -  Archives Tweets from powerful public figures, and records silent retractions and deleted tweets\n  - [Internet Archive Software Collection](https://archive.org/details/software) - The largest vintage and historical software library\n  - [OpenLibrary](https://openlibrary.org) - A free, digital library of over 2 million eBooks, and information on over 20 million books\n  - [Archive-It](https://archive-it.org) - Collecting and accessing cultural heritage on the web\n\n\n## Privacy-Respecting Software\n\nThis section has moved to [here](https://github.com/Lissy93/awesome-privacy). Complete list of privacy-respecting software and services\n\n## Security Hardware\n\nThis section has moved to [here](/6_Privacy_and-Security_Gadgets.md). Products, gadgets and DIY projects to help improve security\n\n## Data, API's and Visualisations\n\n- **Research Results**\n  - [Internet Census Data](https://ant.isi.edu/datasets) - Includes data on address space allocation, traffic, DNS, service enumeration, internet outages and other internet topology data\n  - [Web Tracking Data](https://webtransparency.cs.princeton.edu/webcensus/#data) by Princeton University - This is the largest and most detailed analysis of online tracking to date, and measures both stateful (cookie-based) and stateless (fingerprinting-based) tracking. The crawls were made with [OpenWPM](https://github.com/mozilla/OpenWPM)\n  - [Who has your Back?](https://www.eff.org/files/2019/06/11/whyb_2019_report.pdf) by EFF - Anual report assessing how companies handle personal data\n    - Historic Reports: [2012](https://www.eff.org/files/who-has-your-back-2012_0.pdf) | [2013](https://www.eff.org/sites/default/files/who-has-your-back-2013-report-20130513.pdf) | [2014](https://www.eff.org/files/2014/05/15/who-has-your-back-2014-govt-data-requests.pdf) | [2015](https://www.eff.org/files/2015/06/18/who_has_your_back_2015_protecting_your_data_from_government_requests_20150618.pdf) | [2016](https://www.eff.org/files/2016/05/04/who-has-your-back-2016.pdf) | [2017](https://www.eff.org/files/2017/07/08/whohasyourback_2017.pdf) | [2018](https://www.eff.org/files/2018/05/31/whyb_2018_report.pdf) | [2019](https://www.eff.org/files/2019/06/11/whyb_2019_report.pdf)\n  - [Lists of Websites Abusing Session Replay](https://webtransparency.cs.princeton.edu/no_boundaries/session_replay_sites.html) - Third-party sesssion replay scripts, record all your acions and allow them to be watched by a human. This list of websites include this\n    - See also, the accompaniing [blog post](https://freedom-to-tinker.com/2017/11/15/no-boundaries-exfiltration-of-personal-data-by-session-replay-scripts/) and the [WebTAP](https://webtap.princeton.edu/) project\n  - [Sensor Access Data](https://databank.illinois.edu/datasets/IDB-9213932) - A Crawl of the Mobile Web Measuring Sensor Accesses, Illinois\n  - [Canalys Newsroom](https://www.canalys.com/newsroom) - Research Studies on Security, Privacy, Technology and Finance\n  - [Data Never Sleeps](https://web-assets.domo.com/blog/wp-content/uploads/2019/07/data-never-sleeps-7-896kb.jpg) - An infographic visualizing how much data is generated every minute (2019)\n  - [What they Know about You](https://external-preview.redd.it/KU3pS4LIhLWqeYSluiYyJMhLQW1fEjTdh8lEKL2jafc.png?auto=webp&s=fe015c1e32731bc61cd0d57313f5a261173846ca) - An Infographic showing what information are Giant Tech Companies collecting from you (2020)\n- **Databases**\n  - [Exodus](https://reports.exodus-privacy.eu.org/en/trackers/stats) - Trackers in Android Apps\n  - [Exploit Database](https://www.exploit-db.com) - A database or Current software vulnerabilities\n  - [URLScan](https://urlscan.io) - Service scanning for malicious domains, with historical results\n  - [Dehashed](https://www.dehashed.com/breach) - Data Breaches and Credentials\n  - [VirusTotal](https://developers.virustotal.com/v3.0/reference) - Detailed virus scans of software\n  - [Abuse IP DB](https://www.abuseipdb.com) - Database of IPs reported for abuse\n  - [SnusBase](https://snusbase.com) - Long standing database hosting breached data\n  - [OpenPhish](https://openphish.com) - A feed of current phishing endpoints\n  - [HashToolkit](http://hashtoolkit.com) - Database of 'cracked' hashes\n  - [SecLists](https://github.com/danielmiessler/SecLists) - Starter list of leaked databases, passwords, usernames etc (Great for programming)\n  - [Qualys SSL Pulse](https://www.ssllabs.com/ssl-pulse) - A continuous and global dashboard for monitoring the quality of SSL / TLS support over time across 150,000 SSL - and TLS-enabled websites, based on Alexa’s list of the most popular sites in the world\n  - [Tor Bulk Exit List](https://check.torproject.org/torbulkexitlist) - List of all exit nodes (IP) in use on the Tor network\n- **Fun with Live Data** 🌠\n  - **Internet**\n    - [Tor Flow](https://torflow.uncharted.software) - Real-time data flow between Tor nodes\n    - [Internet Census](http://census2012.sourceforge.net/images/geovideo.gif) - 24-hour world map of average utilization of IPv4 addresses\n    -  ICMP ping requests were sent out via the Carna botnet. Read how this was done on the [Official Site](http://census2012.sourceforge.net) or download similar [datasets](https://ant.isi.edu/datasets/all.html)\n    - [Map of Mobile Internet](https://labs.mapbox.com/labs/twitter-gnip/brands/) - Shows world data coverage, according to Twitter data\n    - [IKnow](https://iknowwhatyoudownload.com/en/stat/GB/daily) - Live data showing what content is being downloaded + distributed via torrents\n    - [Semantic Internet Map](http://internet-map.net) - Shows how different websites link together\n    - [Wiggle](https://wigle.net) - Worlds largest WiFi Map showing personal hotspot statistics geographically\n    - [BGP Stream](https://bgpstream.com) - Shows all current outages\n    - [Freedom House - Censorship Map](https://freedomhouse.org/explore-the-map) - Global internet freedom and democracy status per country, over time\n    - [DomainTools Statistics](https://research.domaintools.com/statistics) - Domain registration Numbers and Charts\n    - [Insecam](http://www.insecam.org) - A directory and feed of insecure or public live webcams\n  - **Cyber**\n    - [Checkpoint](https://threatmap.checkpoint.com) - Geographical plotting of Malware, Phishing and Exploits\n    - [Comparitech Ransomware Attack Map](https://www.comparitech.com/ransomware-attack-map/) - Geographically plotted ransomware attacks and stats\n    - [FortiGuard](https://threatmap.fortiguard.com) - Incoming & Outgoing Attacks per Country\n    - [Kaspersky Stats](https://cybermap.kaspersky.com/stats) - Shows detailed threats per second from a variety of categories\n    - [Kaspersky LogBook](https://apt.securelist.com) - Historic Threat Time Line\n    - See also\n      - Every AV-provider and wannabe security company has a matrix-style cyber map nowadays, here are some less-spectacular ones, which didn't make it onto the list: [Fire Eye](https://www.fireeye.com/cyber-map/threat-map.html), [BitDefender](https://threatmap.bitdefender.com), [ESET](https://www.virusradar.com), [Looking Glass Cyber Map](https://map.lookingglasscyber.com), [Digital Attack Map](https://www.digitalattackmap.com)\n      - [pewpew](https://github.com/hrbrmstr/pewpew) is a sweet web component, that you can use to build your own threat map (with sound effects!)\n  - **Unrelated, but Awesome Data**\n    - [Submarine Cable Map](https://www.submarinecablemap.com) - An up-to-date map of major global internet cables (see also [he.net](https://he.net/3d-map) and [this](https://submarine-cable-map-2016.telegeography.com))\n    - [FlightRadar24](https://www.flightradar24.com) - World-wide map of live aircraft positions\n    - [Marine Traffic](https://www.marinetraffic.com/) - World-wide map of live ships, tankers, cargo & passenger vessels and more\n    - [Stuff in Space](http://stuffin.space) - Shows objects orbiting Earth\n    - [Asterank](http://www.asterank.com/) - A scientific and economic database of over 600,000 asteroids\n    - [Flight Misery Map](https://uk.flightaware.com/miserymap/) - Real-time US geographical flight delay & cancellation trends\n    - [Meteor Showers](https://www.meteorshowers.org/) - Shows commit locations, simulating meteor showers with time\n    - [Airport WiFi Map](https://www.google.com/maps/d/u/0/viewer?mid=1Z1dI8hoBZSJNWFx2xr_MMxSxSxY) - Shows WiFi networks and their passwords for airports around the world\n    - [One in a Million](https://onemilliontweetmap.com/) - A real-time Twitter map\n    - [ListenToWikipedia](http://listen.hatnote.com/) - Wikipedia edits, represented by a tone, depending on size, built by Hatnote\n    - [BitListen](https://www.bitlisten.com/) - Real-time BTC transactions, represented by bubbles and tones\n    - [FiatLeak](https://fiatleak.com/) - Real-time crypto stats\n    - [Google Search Terms](https://trends.google.com/trends/hottrends/visualize?pn=p9&nrow=4&ncol=4) - Hourly Google Search Trends, in your location\n    - [Sentiment Sweep](https://sentiment-sweep.com/now) - Geographic sentiment analysis on real-time Twitter data (- I made this one)\n    - [Three Thousand Years](http://histography.io/) - Shows major events throughout history, using Wikipedia data\n    - [Wiki-Atlas](https://wiki-atlas.org/) - Wikipedia articles, categorized and plotted on a map\n    - [ncov2019/live](https://ncov2019.live/) - Real-time Covid-19 data, map and dashboard (by Avi Schiffmann)\n    - [National Grid: Live Status](http://grid.iamkate.com/) - Real-time UK energy stats (by Kate Morley) (similar to [Grid Watch](https://www.gridwatch.templar.co.uk/))\n    - [Globe of Economic Complexity](http://globe.cid.harvard.edu/) - Visualize's 15 Trillion dollars of world trade, where each dot is $100,000,000 of export\n \n Interested in discovering more awesome real-time data visualizations? Check out [this post, here](https://listed.to/@lissy93/18611/fun-with-real-time-data) 🌠\n \n## Academic\n\n- **Journals**\n  - Rethinking information privacy‐security: Does it really matter? By Waseem Afzal: via [Wiley](https://asistdl.onlinelibrary.wiley.com/doi/10.1002/meet.14505001095)\n  - Crypto Paper: Privacy, Security, and Anonymity For Every Internet User, by Crypto Seb: via [GitHub](https://github.com/cryptoseb/cryptopaper)\n  - Challenges in assessing privacy impact, Tales from the Front Line: via [Wiley](https://onlinelibrary.wiley.com/doi/10.1002/spy2.101)\n  - A privacy‐preserving multifactor authentication system: via [Wiley](https://onlinelibrary.wiley.com/doi/10.1002/spy2.88)\n  - Web Browser Privacy: What Do Browsers Say When They Phone Home?: via [scss.tcd.ie](https://www.scss.tcd.ie/Doug.Leith/pubs/browser_privacy.pdf)\n  - Online Tracking, A 1-million-site Measurement and Analysis: via [Princeton University](https://www.cs.princeton.edu/~arvindn/publications/OpenWPM_1_million_site_tracking_measurement.pdf)\n  - Detecting and Defending Against Third-Party Tracking on the Web: via [Franziska Roesner](http://www.franziroesner.com/pdf/webtracking-NSDI2012.pdf)\n  - Is Google degrading search? Consumer Harm from Universal Search: via [law.berkeley.edu](https://www.law.berkeley.edu/wp-content/uploads/2015/04/Luca-Wu-Yelp-Is-Google-Degrading-Search-2015.pdf)\n  - A Comprehensive Evaluation of Third-Party Cookie Policies: via [WhoLeftOpenTheCookieJar.com](https://wholeftopenthecookiejar.com/static/tpc-paper.pdf)\n  - The Dangers of Surveillance: via [Harvard Law Review](https://harvardlawreview.org/wp-content/uploads/pdfs/vol126_richards.pdf)\n  - Recognizing Speech From Gyroscope Signals: via [Stanford](https://crypto.stanford.edu/gyrophone/)\n  - A Study of Scripts Accessing Smartphone Sensors: via [sensor-js.xyz](https://sensor-js.xyz/webs-sixth-sense-ccs18.pdf)\n  - Pixel Perfect, Fingerprinting Canvas in HTML5: [hovav.net](https://hovav.net/ucsd/dist/canvas.pdf)\n  - Shining the Floodlights on Mobile Web Tracking — A Privacy Survey: via [semanticscholar.org](https://pdfs.semanticscholar.org/80bb/5c9119ff4fc2374103b4f3d6a8f614b3c2ed.pdf)\n  - Characterizing the Use of Browser-Based Blocking Extensions To Prevent Online Tracking: via [aruneshmathur.co.in](http://aruneshmathur.co.in/files/publications/SOUPS18_Tracking.pdf)\n  - Privacy implications of email tracking: via [senglehardt.com](https://senglehardt.com/papers/pets18_email_tracking.pdf)\n  - Battery Status Not Included, Assessing Privacy in Web Standards: via [princeton.edu](https://www.cs.princeton.edu/~arvindn/publications/battery-status-case-study.pdf)\n  - Achieving Anonymity Against Major Face Recognition Algorithms: via [ruhr-uni-bochum.de](https://www.mobsec.ruhr-uni-bochum.de/media/ei/veroeffentlichungen/2016/01/15/2013-cms-face-recognition.pdf)\n  - De-anonymizing Web Browsing Data with Social Networks: via [princeton.edu](https://www.cs.princeton.edu/~arvindn/publications/browsing-history-deanonymization.pdf)\n  - The Surveillance Implications of Web Tracking: via [senglehardt.com](https://senglehardt.com/papers/www15_cookie_surveil.pdf)\n  - Understanding Facebook Connect login permissions: via [jbonneau.com](http://jbonneau.com/doc/RB14-fb_permissions.pdf)\n  - Corporate Surveillance in Everyday Life, How Companies Collect, Combine, Analyze, Trade, and Use Personal Data on Billions: By Wolfie Christl, via [crackedlabs.org](https://crackedlabs.org/dl/CrackedLabs_Christl_CorporateSurveillance.pdf)\n  - Using Ad Targeting for Surveillance on a Budget: via [washington.edu](https://adint.cs.washington.edu/ADINT.pdf)\n  - Cross-Site WebSocket Hijacking: via [christian-schneider.net](http://www.christian-schneider.net/CrossSiteWebSocketHijacking.html)\n  - Location Tracking using Mobile Device Power Analysis: [scribd.com](https://www.scribd.com/doc/256304846/PowerSpy-Location-Tracking-using-Mobile-Device-Power-Analysis)\n  - HORNET, High-speed Onion Routing at the Network Layer: via [arxiv.org](https://arxiv.org/pdf/1507.05724v1.pdf)\n  - Decoy Routing: Toward Unblockable Internet Communication: via [usenix.org](https://www.usenix.org/legacy/events/foci11/tech/final_files/Karlin.pdf)\n  - Trackers Vs Firefox, Comparing different blocking utilities: via [GitHub - @jawz101](https://github.com/jawz101/TrackersVsFirefox)\n  - 'I've Got Nothing to Hide' and Other Misunderstandings of Privacy: via [ssrn.com](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=998565&)\n- **Write-Ups**\n  - Privacy - An Encyclopedic Definition and Background [stanford.edu](https://plato.stanford.edu/entries/privacy/)\n\n\n- **Implementations and Standards**\n  - [The GNU Privacy Guard](https://www.gnupg.org)\n  - [OpenPGP JavaScript Implementation](https://openpgpjs.org)\n  - [WireGuard](https://www.wireguard.com/papers/wireguard.pdf)\n  - [Nym](https://as93.link/nym-blog-post) - Next Generation of Privacy infrastructure\n  - [REC-X.509](https://www.itu.int/rec/T-REC-X.509) - The standard defining the format of public key certificates, used across most internet protocols and applications\n  - [obfs4-spec](https://gitweb.torproject.org/pluggable-transports/obfs4.git/tree/doc/obfs4-spec.txt) & [obfs3-protocol-spec](https://gitweb.torproject.org/pluggable-transports/obfsproxy.git/tree/doc/obfs3/obfs3-protocol-spec.txt) - The Tor obfourscator and Pluggable transport for obfuscated traffic\n  \n\n\n\n\n## Foundations\n\n- [Contract for the Web](https://contractfortheweb.org)\n- [Electronic Frountier Foundation](https://www.eff.org) - Defending digital privacy + more\n- [OWASP Foundation](https://www.owasp.org)\n- [Freedom House](https://freedomhouse.org) - Fighting for freedom on the net\n- [Privacy International](https://privacyinternational.org)\n- [Open Tech Fund](https://www.opentech.fund)\n- [Freedom of the Press Foundation](https://freedom.press)\n- [Open Rights Group](https://www.openrightsgroup.org)\n- [LEAP Encryption Access Project](https://leap.se)\n- [The Guardian Project](https://guardianproject.info)\n- [Foundation for Applied Privacy](https://applied-privacy.net)\n- [Safe + Secure](https://safeandsecure.film) - advise for journalists and film makers\n- [Citizen Lab](https://citizenlab.ca)\n- [Electronic Privacy Information Center](https://epic.org)\n- [American Civil Liberties Union](https://www.aclu.org/issues/privacy-technology)\n- [Free Software Foundation](https://www.fsf.org)\n- [Calyx Institute](https://calyxinstitute.org/) - Brooklyn-based organisation, aiming to educate the public about privacy in digital communications\n- [Courage Foundation](https://www.couragefound.org) - Supports those who risk life / liberty to make significant contributions to the historical record\n- [Fight for the Future](https://www.fightforthefuture.org) - Fighting for a future where technology liberates\n- [Public Citizen](https://www.citizen.org) - Standing up to corporate power and hold the government accountable\n- [The DNS Privacy Project](https://dnsprivacy.org/wiki/display/DP) - Collaborative open project to promote, implement and deploy DNS Privacy\n- [Epic](https://www.epic.org/) - Washington DC-based organisation raising attention to emerging privacy and civil liberties issues\n\n\n## Governance\n\n- **Citizen/ Small business Advice and Infrormation**\n  - [UK National Cyber Security Center](https://www.ncsc.gov.uk)\n  - [US Cybersecurity - NIST](https://www.nist.gov/topics/cybersecurity)\n  - [Stay Safe Online](https://staysafeonline.org) - US government-backed project, aimed to inform and educate individuals and small businesses about basic digital security\n  - [Annual Credit Report](https://www.annualcreditreport.com) - US Free Credit Reports\n- **Cybercrime**\n    - [Consumer Fraud Reporting](http://consumerfraudreporting.org) - US's Catalogue of online scams currently circulating, and a means to report cases\n    - [Action Fraud](https://www.actionfraud.police.uk) - UK’s national reporting centre for fraud and cyber crime\n    - [Crime Stoppers](https://crimestoppers-uk.org/) - UK Independent Charity, for reporting crimes anonymously \n- **Fact Checkling**\n  - [Full Fact](https://fullfact.org) - UK independent fact checking charity, campaigning to expose bad information, and the harm it does\n  - [Snopes](https://www.snopes.com/) - Transparent fact checking service, with documented sources. Their investigative reporting uses evidence-based and contextualized analysis\n  - [FactCheck.org](https://www.factcheck.org/fake-news/) - US Site debunking misinformation shared on social media\n  - [Media Bias Fact Check](https://mediabiasfactcheck.com/) - Focusing on media bias, and comparing different view points on each story from over 3000 sources\n  - [AP Fact Check](https://apnews.com/APFactCheck) - Fact checking service provided by AP News\n- **CERT** - Your local jurisdiction will likely have a Computer emergency response team (historically known as [CERT](https://online.norwich.edu/academic-programs/resources/how-computer-emergency-response-teams-and-computer-security-incident-response-teams-combat-cyber-threats)). Who is in charge of handline handles domestic and international computer security incidents.\n  - **A-C** - Australia: [auscert.org.au](https://www.auscert.org.au) | Austria: [cert.at](https://www.cert.at) | Bangladesh: [cirt.gov.bd](https://www.cirt.gov.bd) |  Bolivia: [cgii.gob.bo](https://cgii.gob.bo) | Brazil: [cert.br](https://www.cert.br) | Canada: [cyber.gc.ca](https://cyber.gc.ca/en/about-cyber-centre) | China: [cert.org.cn](https://www.cert.org.cn) | Columbia: [colcert.gov.co](http://www.colcert.gov.co) | Croatia: [carnet.hr](https://www.carnet.hr) |  Czech Republic: [csirt.cz](https://csirt.cz) \n  - **D-G** - Denmark: [cert.dk](https://www.cert.dk) | Ecuador: [ecucert.gob.ec](https://www.ecucert.gob.ec) | Egypt: [egcert.eg](https://www.egcert.eg) | Estonia: [ria.ee / CERT-EE](https://ria.ee/en/cyber-security/cert-ee.html) | Finland: [kyberturvallisuuskeskus.fi](https://www.kyberturvallisuuskeskus.fi/en/homepage) | France: [cert.ssi.gouv.fr](https://www.cert.ssi.gouv.fr) | Germany: [cert-bund.de](https://www.cert-bund.de) | Ghana: [nca-cert.org.gh](https://nca-cert.org.gh) \n  - **H-M** - Hong Kong: [hkcert.org](https://www.hkcert.org) | Iceland: [cert.is](https://www.cert.is) | India: [CERT-IN](https://www.cert-in.org.in) | Indonesia: [idsirtii.or.id](https://idsirtii.or.id) | Iran: [cert.ir](https://cert.ir) | Italy: [cert-pa.it](https://www.cert-pa.it) | Japan: [JPCERT](https://www.jpcert.or.jp) | Kyrgyzstan: [cert.gov.kg](http://cert.gov.kg) | Luxembourg: [circl.lu](https://circl.lu) | Macau: [mocert.org](www.mocert.org) | Malaysia: [mycert.org.my](http://www.mycert.org.my) | Morocco: [educert.ma](http://www.educert.ma) \n  - **N-P** - Netherlands: [ncsc.nl](https://www.ncsc.nl) |  New Zealand: [cert.govt.nz](https://www.cert.govt.nz) | Nigeria: [cert.gov.ng](https://cert.gov.ng) | Norway: [norcert](https://www.nsm.stat.no/norcert) | Pakistan: [pakcert.org](http://www.pakcert.org) | Papua New Guinea: [pngcert.org.pg](https://www.pngcert.org.pg) | Philippines: [cspcert.ph](https://cspcert.ph) | Poland: [cert.pl](https://www.cert.pl) | Portugal: [cncs.gov.pt/certpt](https://www.cncs.gov.pt/certpt)\n  - **Q-S** - Qatar: [qcert.org](https://qcert.org) | Rep of Ireland: [ncsc.gov.ie](https://www.ncsc.gov.ie) | Romania: [cert.ro](https://www.cert.ro) | Russia: [gov-cert.ru](http://www.gov-cert.ru) / [cert.ru](https://www.cert.ru) | Singapore: [csa.gov.sg/singcert](https://www.csa.gov.sg/singcert) | Slovenia: [sk-cert.sk](https://www.sk-cert.sk) | South Korea: [krcert.or.kr](https://www.krcert.or.kr) | Spain: [incibe.es](https://www.incibe.es) | Sri Lanka - [cert.gov.lk](https://www.cert.gov.lk) | Sweden: [cert.se](https://www.cert.se) | Switzerland: [govcert.ch]\n  - **T-Z** - Taiwan: [twcert.org.tw](https://www.twcert.org.tw) | Thailand: [thaicert.or.th](https://www.thaicert.or.th) | Tonga:  [cert.to](https://www.cert.to) | Ukraine:[cert.gov.ua](https://cert.gov.ua) | UAE: [tra.gov.ae/aecert](https://www.tra.gov.ae/aecert) | United Kingdom: [ncsc.gov.uk](https://www.ncsc.gov.uk) | United States: [us-cert.gov](https://www.us-cert.gov)\n  - **Global**: [first.org](https://www.first.org) - The global Forum of Incident Response and Security Teams\n\n## Mega Guides\n- Very thorough list of things to be aware of and defensive steps, by Michael Horowitz: [defensivecomputingchecklist.com](https://defensivecomputingchecklist.com/)\n- Software reccomendations and advice for privacy: [privacytools.io](https://www.privacytools.io/) \n- Tips and tricks, for internet freedom, data health and privacy: [datadetoxkit.org](https://datadetoxkit.org/)\n- Digital security tools and tactics: [securityinabox.org](https://securityinabox.org/)\n- Online privacy guide, and software reccomendations: via [Fried](https://fried.com/privacy)\n- Guide to security through encryption: via [ProPrivacy](https://proprivacy.com/guides/the-ultimate-privacy-guide)\n- Large collection of beginner security guides: [Heimdal Security](https://heimdalsecurity.com/blog/cyber-security-mega-guide)\n- The Motherboard guide to not getting hacked: via [Vice](https://www.vice.com/en_us/article/d3devm/motherboard-guide-to-not-getting-hacked-online-safety-guide)\n- Online anonimity, and Tor + VPN tutorials: via [ivpn](https://www.ivpn.net/privacy-guides)\n\n\n## More Awesome GitHub Lists\n\n- **Awesome Open Source Apps**\n  - [awesome-windows-apps](https://github.com/Awesome-Windows/Awesome) by 'many'\n  - [awesome-macOS-apps](https://github.com/iCHAIT/awesome-macOS) by @iCHAIT\n  - [awesome-linux-software](https://github.com/luong-komorebi/Awesome-Linux-Software) by @luong-komorebi\n  - [open-source-ios-apps](https://github.com/dkhamsing/open-source-ios-apps) by @dkhamsing\n  - [open-source-android-apps](https://github.com/pcqpcq/open-source-android-apps) by @pcqpcq\n  - [awesome-selfhosted](https://github.com/awesome-selfhosted/awesome-selfhosted) by 'many'\n  - [privacy-respecting](https://github.com/nikitavoloboev/privacy-respecting) by @nikitavoloboev\n  - [awesome-privacy](https://github.com/KevinColemanInc/awesome-privacy) by @KevinColemanInc\n  - [privacy-respecting-software](https://github.com/Lissy93/personal-security-checklist/blob/master/5_Privacy_Respecting_Software.md) by @lissy93\n- **Guides**\n  - [MacOS-Security-and-Privacy-Guide](https://github.com/drduh/macOS-Security-and-Privacy-Guide) by @drduh\n  - [YubiKey-Guide](https://github.com/drduh/YubiKey-Guide) by @drduh\n  - [Debian-Privacy-Server-Guide](https://github.com/drduh/Debian-Privacy-Server-Guide) by @drduh\n  - [personal-security-checklist](https://github.com/Lissy93/personal-security-checklist) by @lissy93\n- **Security Links (Hacking / Pen Testing / Threat Inteligence / CFTs)**\n  - [Security_list](https://github.com/zbetcheckin/Security_list) by @zbetcheckin\n  - [awesome-security](https://github.com/sbilly/awesome-security) by @sbilly\n  - [awesome-sec-talks](https://github.com/PaulSec/awesome-sec-talks) by @PaulSec\n  - [awesome-threat-intelligence](https://github.com/hslatman/awesome-threat-intelligence) by @hslatman\n  - [awesome-incident-response](https://github.com/meirwah/awesome-incident-response) by @meirwah\n  - [awesome-anti-forensic](https://github.com/remiflavien1/awesome-anti-forensic) by @remiflavien1\n  - [awesome-malware-analysis](https://github.com/rshipp/awesome-malware-analysis) by @rshipp\n  - [awesome-lockpicking](https://github.com/fabacab/awesome-lockpicking) by @fabacab\n  - [awesome-hacking](https://github.com/carpedm20/awesome-hacking) by @carpedm20\n  - [awesome-honeypots](https://github.com/paralax/awesome-honeypots) by @paralax\n  - [awesome-forensics](https://github.com/Cugu/awesome-forensics) by @cugu\n  - [awesome-pentest](https://github.com/enaqx/awesome-pentest) by @enaqx\n  - [awesome-ctf](https://github.com/apsdehal/awesome-ctf) by @apsdehal\n  - [awesome-osint](https://github.com/jivoi/awesome-osint) by @jivoi\n  - [SecLists](https://github.com/danielmiessler/SecLists) by @danielmiessler\n  - [Infosec_Reference](https://github.com/rmusser01/Infosec_Reference) by @rmusser01\n- **Misc**\n  - [awesome-crypto-papers](https://github.com/pFarb/awesome-crypto-papers) by @pFarb\n- **Awesome Lists of Awesome Lists**\n  - [awesome]( https://github.com/sindresorhus/awesome) by @sindresorhus\n  - [lists](https://github.com/jnv/lists) by @jnv\n- **More In This Repo**\n  - [Personal Security Checklist](/README.md) by @lissy93\n  - [Privacy-Respecting Software](https://github.com/Lissy93/awesome-privacy)\n  - [Importance of Privacy & Security](/0_Why_It_Matters.md)\n  - [Digital Security Gadgets / DIY hardware](/6_Privacy_and-Security_Gadgets.md)\n  - [TLDR - Condensed Summary of this Repo](/2_TLDR_Short_List.md)\n  \n---\n\n*Thanks for visiting, hope you found something useful here :) Contributions are welcome, and much appreciated - to propose an edit [raise an issue](https://github.com/Lissy93/personal-security-checklist/issues/new/choose), or [open a PR](https://github.com/Lissy93/personal-security-checklist/pull/new/master). See: [`CONTRIBUTING.md`](/.github/CONTRIBUTING.md).*\n\n*Licensed under [Creative Commons, CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), © [Alicia Sykes](https://aliciasykes.com) 2020*\n\n[![Attribution 4.0 International](https://licensebuttons.net/l/by/3.0/88x31.png)](https://github.com/Lissy93/personal-security-checklist/blob/master/LICENSE.md)\n\n\n----\n\nFound this helpful? Consider sharing it with others, to help them also improve their digital security 😇\n\n[![Share on Twitter](https://img.shields.io/badge/Share-Twitter-17a2f3?style=for-the-badge&logo=Twitter)](http://twitter.com/share?text=Check%20out%20the%20Personal%20Cyber%20Security%20Checklist-%20an%20ultimate%20list%20of%20tips%20for%20protecting%20your%20digital%20security%20and%20privacy%20in%202020%2C%20with%20%40Lissy_Sykes%20%F0%9F%94%90%20%20%F0%9F%9A%80&url=https://github.com/Lissy93/personal-security-checklist)\n[![Share on LinkedIn](https://img.shields.io/badge/Share-LinkedIn-0077b5?style=for-the-badge&logo=LinkedIn)](\nhttp://www.linkedin.com/shareArticle?mini=true&url=https://github.com/Lissy93/personal-security-checklist&title=The%20Ultimate%20Personal%20Cyber%20Security%20Checklist&summary=%F0%9F%94%92%20A%20curated%20list%20of%20100%2B%20tips%20for%20protecting%20digital%20security%20and%20privacy%20in%202020&source=https://github.com/Lissy93)\n[![Share on Facebook](https://img.shields.io/badge/Share-Facebook-4267b2?style=for-the-badge&logo=Facebook)](https://www.linkedin.com/shareArticle?mini=true&url=https%3A//github.com/Lissy93/personal-security-checklist&title=The%20Ultimate%20Personal%20Cyber%20Security%20Checklist&summary=%F0%9F%94%92%20A%20curated%20list%20of%20100%2B%20tips%20for%20protecting%20digital%20security%20and%20privacy%20in%202020&source=)\n[![Share on Mastodon](https://img.shields.io/badge/Share-Mastodon-56a7e1?style=for-the-badge&logo=Mastodon)](https://mastodon.social/web/statuses/new?text=Check%20out%20the%20Ultimate%20Personal%20Cyber%20Security%20Checklist%20by%20%40Lissy93%20on%20%23GitHub%20%20%F0%9F%94%90%20%E2%9C%A8)\n\n"
  },
  {
    "path": "articles/5_Privacy_Respecting_Software.md",
    "content": "\n\n| ➡️ This list page has now been moved to [awesome-privacy](https://github.com/Lissy93/awesome-privacy) |\n| --- |\n"
  },
  {
    "path": "articles/6_Privacy_and-Security_Gadgets.md",
    "content": "[![Awesome](https://awesome.re/badge-flat2.svg)](https://awesome.re)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n[![License](https://img.shields.io/badge/LICENSE-CC_BY_4.0-00a2ff?&style=flat-square)](https://creativecommons.org/licenses/by/4.0/)\n\n# Hardware for Protecting Privacy and Security\nA curated list of (DIY and pre-built) devices, to help preserve privacy and improve physical cyber security 🔐\n\n**Too long? 🦒** See the [TLDR version](/2_TLDR_Short_List.md#security-hardware) instead.\n\nSee Also, [The Hackers Hardware Toolkit](https://raw.githubusercontent.com/yadox666/The-Hackers-Hardware-Toolkit/master/TheHackersHardwareToolkit.pdf) by [@yadox666](https://github.com/yadox666)- Ultimate guide of gadgets for Red Team pentesters and security researchers\n\n**Note**: This section is intended just to be a bit of fun, it is entirely possible to stay secure and anonymous, without having to build or buy anything. Now that more devices have been added, it's not been possible to test everything here, so these products should not be taken as recommendations, just interesting ideas, and a bit of fun\n\n\n---\n\n#### Contents\n- [Basics](#basics)\n- [DIY Security Products](#diy-security-products)\n- [Paranoid Security Gadgets](#paranoid-security-gadgets)\n- [Network Security](#network-security)\n- [Secure Computing Devices](#secure-computing-devices)\n- [Hardware Encrypted Storage](#hardware-encrypted-storage)\n- [USB Data Blockers](#usb-data-blockers)\n- [FIDO U2F Keys](#fido-u2f-keys)\n- [Crypto Wallets](#crypto-wallets)\n\n\n## Basics\n(All products in this section have been tested.)\n\n**Item** | **Description**\n--- | ---\n**USB Data Blocker**<br>[![Data Blocker](https://i.ibb.co/jG3dpGW/1.jpg)](https://amzn.to/2HDArRP) | There are many exploits that allow an attacker to infect your device with malware and/ or steal data, when you plug it in to what appears to be a USB power outlet. If you are charging your phone while travelling, a USB data blocker will prevent anything other than power from getting to your device, by removing the connection between the 2 data wires. The PortaPower brand, also comes with a fast charging chip, since without the data connection your device would otherwise charge at minimum speed\n**Microphone Blocker**<br>[![__](https://i.ibb.co/BKQTCbQ/2.jpg)](https://amzn.to/2uQ3r5L) | A microphone blocker is a device that prohibits audio hacking, in the form of a hardware accessory for a smartphones, laptops etc. It functions as a dummy mic jack, so the device thinks it has a microphone plugged in, and hence disables the internal one\n**Faraday Pouch**<br>[![__](https://i.ibb.co/HBBG0QL/3.jpg)](https://amzn.to/3bIkfw4) | [Faraday Shield](https://en.wikipedia.org/wiki/Faraday_cage) is an enclosure that blocks electromagnetic fields. It is useful to keep any device which could be hacked through sending or receiving signals in such a case, such as car keys, or a smart phone. [Larger](https://amzn.to/2UTZOGM) versions are availible for tablets and latops.\n**RFID Blocking Cards**<br>[![__](https://i.ibb.co/m4GtMdj/4.jpg)](https://amzn.to/38ycMxN) | If you are concerned about card skimming, you can use an RFID blocking sleeve to protect your contactless payment and identity cards. However there are proportionately very few RFID-skimmer crimes reported, and most credit cards have a low contactless limit\n**Web Cam Covers**<br>[![__](https://i.ibb.co/X7B1WsH/5.jpg)](https://amzn.to/2uEz16H) | Web cam covers are quite self-explanatory, they physically conceal the lenses on your laptop or phone camera, to prevent a malicious actor (hacker, government, corporation etc) from watching you through the camera. It may sound paranoid, but unfortunately it happens, and it is a relatively simple process for someone to gain remote access to a webcam. Even Mark Zuckerberg [covers his webcam](https://www.geek.com/tech/mark-zuckerberg-tapes-up-his-webcam-and-snowden-says-you-should-too-1659083/)! Of course you could just use some tape, rather than buying a cover\n**Prokey Wallet**<br>[![__](https://i.ibb.co/m53MmCL/prokey.jpg)](https://prokey.io/?reflink=67e4a39bc5cd4c04bd7f38b50b041c1f) | Prokey Optimum is a secure, easy-to-use offline hardware wallet, that works directly through the browser (on Windows, Mac, Linux and Android), without the need for installing any apps. Both the firmware and browser app is [open source](https://github.com/prokey-io), and it natively supports [over 1000 coins and tokens](https://prokey.io/all-coins). It's affordably priced at £42/ $59, with free world-wide shipping and customer support\n**Port Blockers**<br>[![__](https://i.ibb.co/fYPVnK5/6.jpg)](https://amzn.to/327Yn9n) | There are many attacks that involve an attacker inserting a USB device (such as a BadUSB/ Rubber Ducky/ Malduino) to an open USB port. Adding a port blocker doesn't render you safe from this, since the attacker could take the time to try and remove it, but it could protect you for an opportunistic attack\n**Privacy Filter**<br>[![__](https://i.ibb.co/KjkTbGN/7.jpg)](https://amzn.to/3bAa9xv) | Privacy filters are polarized sheets of plastic, that when placed over a computer screen prevent screen visibility from any angle other than straight on. They make it harder for anyone to look over your shoulder and see your data confidential\n**YubiKey**<br>[![__](https://i.ibb.co/PGtbwxN/8.jpg)](https://amzn.to/38wcG9R) | The YubiKey is a small hardware device used to secure access on mobile devices, computers, and servers to all of your online accounts. It allows for second-factor authentication, hence protecting anyone other than you from logging in. It is said to be more convenient and more secure than using a mobile authenticator, but there are reasons for and against\n**Encrypted Kingston Data Traveler**<br>[![__](https://i.ibb.co/ScRFhdt/9.jpg)](https://amzn.to/38xsnO5) | Good value, easy-to-use with no installation required. Built-in hardware encryption and high password protection. Also optionally allows for automatic cloud backup option to protect against data loss (which doesn't say much about their faith in this USB device, but jokes aside-) this is a very affordable and well rated little device\n**Hardware Encrypted USB 3.0 Drive**<br>[![__](https://i.ibb.co/p3MzFHF/11.jpg)](https://amzn.to/2vD32Ug) | OS & Platform independent, with 100% hardware encryption, so it works perfectly with all operating systems. USB 3.0 with Read/Write Speeds of 116/43 MBps. GDPR complient and FIPS 140-2 Level 3, NLNCSA DEP-V & NATO Restricted Level Certified with real time military grade AES-XTS 256-bit hardware encryption\n**Hardware Encrypted External Hard Drive**<br>[![__](https://i.ibb.co/BV5k29v/12.jpg)](https://amzn.to/37pTmK8) | Similar to the iStorage hardware encrypted USB 3.1 drive, this external hard drive has high capacity and strong hardware encryption. Data is encrypted with FIPS PUB 197 Validated Encryption Algorithm, and against a 7 - 15 digit alpha-numeric pin, with erasing capabilities for multiple failed login attempts\n**Fingbox - Home Network Monitoring**<br>[![__](https://i.ibb.co/nkMxwz9/14.jpg)](https://amzn.to/2V5gATx) | Fing Box is an optional companion to the [Fing App](https://www.fing.com/products/fing-app). It provides network monitoring and security capabilities, to protect your home/ work network. As well as the functionality of the app, the FingBox allows you to block intruders and notify you about unknown devices as well as analyse your network for vulnerabilities, such as open ports. You can also see which devises are near your home at what time (even if they're not connected to your WiFi), and improve network speed with scheduled analysis and bandwidth allocation. Best to try out the Fing app alone, before buying the FindBox, but both are great products for netowrk monitoring and security\n**Bootable Drive Eraser**<br>[![__](https://i.ibb.co/P11d0YH/15.jpg)](https://amzn.to/2SsL67Y) | Easy-to-use bootable USB will completely erase your hard drive with military grade destruction, making it near-impossible for any files or personal data to be recovered. This should be done before you sell, or dispose of any hard drive. Of course there are various .ISOs you can download and flash to a USB yourself if you do not want to spend money, but this USB supports all devices and is quick and easy to use, with excellent results\n**Mobile Privacy Screen**<br>[![__](https://i.ibb.co/Zg9QG1j/17.jpg)](https://amzn.to/2OZO3Lc) | Similar to the laptop/ monitor privacy filter, this screen protector will prevent anyone from seeing what is on your screen when reading from an angle\n**Kensington Lock**<br>[![__](https://i.ibb.co/TKHV5d3/20.jpg)](https://amzn.to/38zu0e2) | Quite self-explanatory, this lock will make it harder for someone to steal your laptop, and get to your data. Of course it does require that your laptop has the [Kensington Security Slot](https://en.wikipedia.org/wiki/Kensington_Security_Slot), which many do\n**Anti-Surveillance Clothing**<br>[![__](https://i.ibb.co/Gk8jBBm/21.jpg)](https://adversarialfashion.com) | Facial recognition is being rolled out in most countries now, the patterns on these clothes, will confuse facial, object and number plate recognition, injecting junk data in to the systems, hence making it harder for automated systems to monitor and track you\n**Solo Key**<br>[![__](https://i.ibb.co/8PFQRDy/26.jpg)](https://amzn.to/37CsOpj) | Another FIDO2 physical security key for 2-facto authentication and storing encryption keys. SoloKeys have both open source hardware and software, they are easy to use out of the box, but can also be used for developers and makers, since there is a well documented CLI\n**Nano Ledger**<br>[![__](https://i.ibb.co/HdVyPzb/22.jpg)](https://amzn.to/37q1cn6) | If you are in possession of Bitcoin or other crypto then one of the most secure ways to store, send and receive coins is with a hardware wallet. Ledger has a solid reputation when it comes to hardware encryption, and the main principle behind their wallets is to provide full isolation between the private keys and your easy-to-hack computer or smartphone\n**Cold Storage**<br>[![__](https://i.ibb.co/nj6xyv1/23.jpg)](https://amzn.to/2HqVy9x) | If you are not planning on spending your crypto any time soon, and do not want to trust a tech-based solution, then consider this metal cold storage wallet. Unlike writing your private key down on paper, this will not fade, and cannot be destroyed by water, fire of other environmental circumstances. Of course you could just engrave your key on a small sheet of aluminium\n**Anonabox**<br>[![__](https://i.ibb.co/L177XDJ/24.jpg)](https://amzn.to/2UWtP8E) | Plug-and-play Tor router, that can be used with public WiFi while travelling, or at home. Anonabox provides easy access to the deep web and lets you bypass censorship, protect your location, deter data collection and more. It can also be used with a VPN, or for online hosting. Of course you could build a similar product your self using a Raspberry Pi and a WiFi range extender\n**Deauth Detector**<br>[![__](https://i.ibb.co/BqNGRCW/19.jpg)](https://amzn.to/2HtUy4B) | Most WiFi hacks begin by sending deauth packets, so that connected clients will briefly be disconnected to the network. This [ESP8266](https://en.wikipedia.org/wiki/ESP8266) comes pre-flashed with [@SpaceHuhn's](https://github.com/spacehuhn) deauth detector (which you can view [here, on GitHub](https://github.com/spacehuhn/DeauthDetector)). Once it detects [deauthentication or disassociation frames](https://mrncciew.com/2014/10/11/802-11-mgmt-deauth-disassociation-frames), it will activate a speaker to notify you\n**WiPhone**<br>[![__](https://i.ibb.co/grnJjKt/wiphone.jpg)](https://www.wiphone.io/) | A fully open source, modular and easily customizable phone for VOIP and LoRa. Great for making free calls over WiFi, communicating locally over LoRa, or just tinkering thanks to its ESP32 pinouts\n**Librem 5**<br>[![__](https://i.ibb.co/3TNh5Vt/l5-v1-front-100x100.png)](https://shop.puri.sm/shop/librem-5/) | Security and Privacy focused smart phone by Purism. With hardware kill switches and specially designed software, this device runs Linux, and does not track you. It Separates CPU from Cellular Baseband, uses IP-Native Communication First and Decentralized Communication by Default. The source code is user-controlled, and has layered security protection. Purism also have [other security-focused products](https://puri.sm/products)\n**Slate Travel Router**<br>[![__](https://i.ibb.co/Nt7hmfW/ar750s-ext-1000x1000.jpg)](https://www.gl-inet.com/products/gl-ar750s/) | The GL-AR750S-Ext can serve as a Wi-Fi access point, a pfSense firewall or a portable router with always-on VPN connectivity. It's great for controlling your network (firewall, VPN, ad-block, web filtering, data limits and more) when traveling or away from home\n\n\n## DIY Security Products\n\nDon't want to spend money? Most of the products above, plus some that wearn't included can be built at home with some pretty simple hardware and open source software. The following list will point you in the right direction to start making!\n\nSee Also [DIY Networking Hardware](#diy-networking-hardware)\n\n- **Network-wide add-block** - [Pi Hole](https://pi-hole.net) is a simple yet powerful app, that can be installed on a [Raspberry Pi](https://amzn.to/36GNpsm), and once you've updated your routers DNS servers to point to it, all resources on the blacklist will be blocked, at the point of origin. This makes it much more powerful than a browser add-on, and will also speed your internet up\n- **USB Sanitiser** - [CIRCLean](https://www.circl.lu/projects/CIRCLean) is a hardware solution to clean documents from untrusted (obtained) USB drives. It automatically converts untrusted documents into a readable but disarmed format and stores these clean files on a trusted (user owned) USB key/stick.\n- **Bootable Drive Eraser** - You can flash the [DBAN](https://dban.org) or [KillDisk](https://www.killdisk.com/bootablecd.htm) ISO file onto a USB, boot from it and securly, fully wipe your hard drives. This is useful to do before selling or disposing of a PC.\n- **Deauth Detector** - Since most wireless attacked begin by sending out deauthentication packets, you can flash SpaceHuhns [DeauthDetector](https://github.com/spacehuhn/DeauthDetector), onto a standard [ESP8266 NodeMCU](https://amzn.to/2v5grV0), plug it in, and wait to be notified of wireless deauth attacks\n- **AI Assistant Mod** - [Project Alias](https://github.com/bjoernkarmann/project_alias) runs on a Pi, and gives you more control and increased privacy for both Google Home and Alexa, through intercepting voice commands, emitting noise interference + lots more. If your interested in voice assistants, then also check out [Mycroft](https://mycroft.ai)- an open source, Pi-based alternative to Google Home/ Alexa\n- **Tor WiFi Network** - Using [OnionPi](https://github.com/breadtk/onion_pi), you can create a second wireless network, that routed traffic through Tor. This is very light-weight so can be done with just a  [Pi Zero W](https://amzn.to/2Urc0hM). Here is a configuration [guide](https://www.sbprojects.net/projects/raspberrypi/tor.php)\n- **Credential Recall Card** - A password card is a unique grid of random letters and digits, that lets you generate, store and recall unique and strong passwords for your accounts. Generate your own unique password card, and read more via: [PasswordCard.org](https://www.passwordcard.org/en)\n- **Faraday Case** - If you want to block signals for devices such as car keys, smart phone, laptop or even just RFID-enabled cards and passports, you can line a box or pouch with [Faraday Fabric](https://amzn.to/2ORKtTr)\n- **Hardware Wallet** - Using the Trezor Shield or [Trezor Core](https://github.com/trezor/trezor-firmware) and a Raspberry Pi, you can create your own hardware wallet for safley storing your crypto currency private keys offline. See [this guide](https://github.com/Multibit-Legacy/multibit-hardware/wiki/Trezor-on-Raspberry-Pi-from-scratch) for building. If you enjoyed that, you can also run your own Bitcoin and  Lightning Node [Raspiblitz](https://github.com/rootzoll/raspiblitz)\n- **Encrypted USB** - You can use [VeraCrypt](https://www.veracrypt.fr/en/Home.html) to create an encrypted USB drive, using any off-the shelf [USB drive](https://amzn.to/2RykcLD)\n- **Home VPN** - [Pi_VPN](https://www.pivpn.io) lets you use [OpenVPN](https://openvpn.net) to connect to your home network from anywhere, through your [Pi](https://amzn.to/2uniPqa). See [this guide](https://pimylifeup.com/raspberry-pi-vpn-server) for set-up instructions. This will work particularly well in combination with Pi Hole.\n- **USB Password Manager** - Storing your passwords in the cloud may be convinient, but you cannot ever be certain they won't be breached. [KeePass](https://keepass.info/help/v2/setup.html) is an offline password manager, with a portable ddition that can run of a USB. There's also an [app](https://play.google.com/store/apps/details?id=com.korovan.kpass). See also [KeePassX](https://www.keepassx.org) and [KeePassXC](https://keepassxc.org) which are popular communnity forks with additional functionality\n- **Secure Chat Platform** Tinfoil Chat (TFC) is an onion-routed, endpoint secure messaging system, that relies on high assurance hardware architecture to protect users from passive collection, MITM attacks and most importantly, remote key exfiltration. See [TFC](https://github.com/maqp/tfc)\n- **Automated Backups** - [Syncthing](https://syncthing.net) is a privacy-focused continuous file synchronization program. You can use it to make on-site backups as well as encrypted and sync your data with your chosen cloud storage provider\n- **GPS Spoofer** - If you don't want to be tracked with GPS, then using a SDR you can send out spoof GPS signals, making near-by GPS-enabled devices think that they are in a totally different location. (Wouldn't recommend using this while on an airplane though!). You can use [gps-sdr-sim](https://github.com/osqzss/gps-sdr-sim) by [@osqzss](https://github.com/osqzss), and run it on a [Hacker RF](https://greatscottgadgets.com/hackrf) or similar SDR. Here's a [guide](https://www.rtl-sdr.com/tag/gps-spoofing) outlineing how to get started, you'll also need a [NooElec HackRF One](https://amzn.to/2Ta1s5J) or similar [SDR](https://amzn.to/39cLiOx). Check your local laws first, you may need a radio license.\n- **No-Mic Laptop** - You can go one step further than using a mic-blcoker, and physically remove the microphone from your laptop. (And then use a removable external mic when needed). See how, for [Apple MacBook and iPhone](https://www.wired.com/story/remove-the-mic-from-your-phone/) | [Video Guide](https://www.youtube.com/watch?v=Eo-IwQMeVLc). If that seems to extreme, there are [other options](https://security.stackexchange.com/a/130402)\n\nIf you are confident with electronics, then you could also make:\n- **USB Data Blocker** - By simple removing the data wires from a USB adapter, you can create a protector to keep you safe while charing your device in public spaces. See [this guide](https://www.instructables.com/id/Making-a-USB-Condom) for more info (note: fast charge will not work)\n- **Hardware Encrypted Password Manager** - Even better than a software-encrypted password manager, is the [hardpass0.2](https://bit.ly/3bg4Xi4) which is a very simple hardware-encrypted USB store, using [GnuPG Smart card](https://www.g10code.com/p-card.html), [GNU Password Standard](https://www.passwordstore.org/) and this [source code](https://github.com/girst/hardpass-passwordmanager) all running on a [Pi Zero](https://amzn.to/2Sz0vU4). See also the [Zamek Project](https://bit.ly/36ZJrec), using this [source code](https://github.com/jareklupinski/zamek) to achive a similar functioning hardware-password manager\n- **U2F USB Token** - Similar to the FIDO2 2-factor authentication USB keys, [U2f-Zero](https://github.com/conorpp/u2f-zero) by Conor Patrick, lets you turn a Pi Zero into a second-factor auth method. Note: project no longer activley maintained, see [NitroKey](https://github.com/nitrokey) instead\n- **True Random Number Generator - Standalone** - The [FST-01](https://www.gniibe.org/FST-01/fst-01.html) is an open source hardware RNG with good documentation, and see the [neug source code](https://salsa.debian.org/gnuk-team/gnuk/neug)\n- **PC auto-lock Flash Drive** - Turn a flash drive into a lock/ unlock key for your PC, allowing you to quickly lock your device when needed [deprecated]\n- **Headless Pi Zero SSH server** - Create an small test server, that you can SSH into for development, in order to not have to run risky or potentially dangerous code or software directly on your PC, see [this artticle](https://openpunk.com/post/5) for getting started\n\n\n## Paranoid Security Gadgets\n\nWe can go even further, these products are far from essential and are maybe a little over-the-top. But fun to play around with, if you really want to avoid being tracked!\n\n- **Self-Destroying PC** - The ORWL PC will wipe all data if it is compromised, and has many other safeguards to ensure no one other than you can access anything from your drive. Comes with QubeOS, Windows or Linux, and requires both a password and fob to log in. See more: [orwl.org](https://orwl.org)\n- **Tor Travel-Router** - Plug-and-play travel router, providing WiFi with VPN or Tor for more private internet access, also has Wi-Fi uplink and range extender with a clear user interface. See more: [Anonabox.com](https://www.anonabox.com) | [Amazon](https://amzn.to/2HHV0fG) | [shop.itsfoss.com](https://shop.itsfoss.com/sales/anonabox-pro)\n- **Hardware Data Encryption Token** - Savvi Solutions Purrtec Encryption Keys provide an extra layer of protection for ofline data encryption, requiring the USB to be inserted as well as the password, in order to encrypt or decrypt files and data. [Purrtec.com](http://www.purrtec.com/) | [shop.itsfoss.com](https://shop.itsfoss.com/sales/purrtec-encryption-keys-2-pack)\n- **Active RFID Jamming** - Armour Card is a slim credit-card shaped device, which when in contact with any readers creates an electronic force field, strong enough to \"jam\" and readings from being taken by emmiting arbitrary data. Aimed at protecting cred cards, identity documents, key cards and cell phones. [US](https://amzn.to/38bJxB9) | [ArmourCard Website](https://armourcard.com)\n- **Ultra-Sonic Microphone Jammer** - Blocks phones, dictaphones, voice assistants and other recording devices. Uses built-in transducers to generate ultrasonic signals that can not be heard by humans, but cause indistinct noise, on redording devices, making it impossible to distinguish any details of the conversations. See more [UK](https://amzn.to/2Hnk63s) | [US](https://amzn.to/2v2fwVG)\n- **GPS Jammer** - In the DIY list, there was a link to how to build a GPS spoof device using an SDR. But you can also buy a GPS jammer, which may be useful if you fear that you are being tracked. They are aimed at preventing UAVs from operating in your area, but can also be used to confuse other tracking devices near by, there's a variety of models with varying power and range availible from $50 - $500. [AliExpress](https://www.aliexpress.com/item/4000214903055.html)\n- **Audio Jammer/ White Noise Generator** - protects your private room conversations by generating a un-filterable masking sound which desensitizes any near-by microphones. Sounds like random static to your ears but it is a variable oscillating frequency that masks your in person conversations. via [SpyGadgets.com](https://www.spygadgets.com/rechargeable-audio-jammer-white-noise-generator-aj-40/)\n- **LibremKey: USB Token** - A USB security token to make encryption, key management, and tamper detection convenient and secure. [Purism](https://puri.sm/products/librem-key/)\n- **Secalot: All-in-one Security Key** - An open source, small USB, that functions as a hardware Hardware cryptocurrency wallet, OpenPGP smart card, U2F authenticator, and one-time password generator. via [Secalot](https://www.secalot.com/)\n- **Slim Hardware OTP Generator** - A reprogrammable TOTP hardware token authenticator. Unlike USB security keys, this does not need to be connected, and instead is used like a mobile OTP generator, where you enter the 6-digit code. Useful as a backup, in case your phone is not accessible. Via [Protectimus](https://www.protectimus.com/protectimus-slim-mini/)\n- **p@ss™ Bracelet** - Fun password generator wristband, allowing you to generate hard to guess, unique passwords for each of your online accounts, and not have to remember them. [Tindie](https://www.tindie.com/products/russtopia/psstm-bracelet/)\n- **Credential Recall Cards** - An easy method for generating and recalling secure passwords. You could [make your own](https://www.passwordcard.org/en), or buy one such as the C@RD™ Mark II, available via: [Tindie](https://www.tindie.com/products/russtopia/crdtm-mark-ii-credential-ccess-recall-device/)\n- **Card Skimmer Detector** - Ensure an ATM or card reader does not have an integrated skimming device. See more at [Lab401](https://lab401.com/products/hunter-cat-card-skimmer-detector)\n- **Deauth Detector** - Most WiFi-based attacks involve sending deauth packets at some point, a deauth-detector will notify you whenever these packets are detected. This particular model uses SpaceHuhns code, running on an ESP8266. via: [Tindie](https://www.tindie.com/products/lspoplove/dstike-deauth-detector-pre-flashed-with-detector/) | [Amazon](https://www.amazon.com/MakerFocus-ESP8266-Detector-Pre-flashed-Deauther/dp/B07WKDPBRY)\n- **Bug Detector** - Able to  detect radio waves, magnetic fields,  in order to find hidden wired or wireless recording or camera equipment and transmitting devices, Note: has limited accuracy. See more: [UK](https://amzn.to/2V8z8C1) | [US](https://amzn.to/2V9AnkI)\n- **Advanced Multi-Frequency RF Detector** - Get instantly notified whenever a threat enters your environment. Detects the following frequencies: CDMA (824–849MHz), GSM(880-920MHz), GS-DCS(1710–1790MHz), WCDMA, 3G, GSM-PCS, DECT(1920–2480MHz), Bluetooth, WiFi(2400–2480MHz), Wi-Max(3000–7000MHz). via [spygadgets.com](https://www.spygadgets.com/1207i-multi-frequency-rf-bug-detector-cdma-gsm-bluetooth-wimax/)\n- **Laser Surveillance Defeater** - Sophisticated spies could potentially use a laser microphone, which bounces an invisible infrared laser off of a window and back to a light sensor. By measuring any interference in that reflected light, the laser microphone can detect vibrations in the window pane and reconstruct sound on the other side of the glass. A laser surveillance defeater creates small in-audible vibrations, which can stop all vibration-based evesdropping. [shomer-tec](https://www.shomer-tec.com/laser-surveillance-defeater.html) | [Amazon](https://www.amazon.com/Surveillance-Defeater-Countermeasure-Protection-Device/dp/B00383Z5L0)\n- **Voice Changer** - Useful to disguise voice, while chatting online. See more: [UK](https://amzn.to/3bXqpsn) | [US](https://amzn.to/2PqUEyz)\n- **Anti-Facial Recognition Clothing** - Carefully printed patterns that confuse common facial recognition algorithms. See more: [Amazon UK](https://amzn.to/32dnYgO) | [Redbubble](https://www.redbubble.com/people/naamiko/works/24714049-anti-surveillance-clothing?p=mens-graphic-t-shirt) | [Monoza](https://www.monoza.mobi/hyperface-anti-surveillance-shirt/?sku=1045-19321-423696-174028)\n- **Reflective Glasses** - Blocks faces from most CCTV and camera footage, and stops facial recognition from being able to map your face. See more: [Reflectacles](https://www.reflectacles.com)\n- **Hardware Password Manager** - MooltiPass is an offline, hardware encrypted USB password manager, with desktop and mobile browser integrations. You can export your KeePass database onto it, for secure authentication on the road, and the hardware is open source. See More: [TheMooltiPass.com](https://www.themooltipass.com) | [Hackaday](https://hackaday.com/tag/mooltipass/)\n- **QUANTUM** - Multifunctional crypto device, is an open source secure, reliable and simple cross-platform cryptocurrency wallet and password manager. See more: [crypto-arts.com](https://security-arts.com/) | [Tindie](https://www.tindie.com/products/security-arts/quantum-multifunctional-crypto-device/)\n- **Faraday Cases** - A Faraday cage or Faraday shield is an enclosure used to block electromagnetic fields. Useful for electronics, since many devices are constantly transmitting and receiving, which is the worst when you are trying to avoid being tracked. Their have been numerous reportings that governments can apparently track phones, even when they are [powered off](https://slate.com/technology/2013/07/nsa-can-reportedly-track-cellphones-even-when-they-re-turned-off.html), and since smart phones often do not have removable batteries, the only option is often to shield them from any em waves. See [SilentPocket.com](https://silent-pocket.com/collections/all-products) | [Faraday Box](https://amzn.to/3cj9z7r) | [Faraday Phone Pouch](https://amzn.to/38faum5)\n- **DNA Invisble** - An open source recipe that erases and deletes 99.5% of DNA left behind, and obfuscates the remaining 0.5%. You leave your DNA behind all the time, once analysed this is able to say a lot about your genetic makeup, and who you are. Learn more about this threat in [this video](https://youtu.be/MoX_BDWZUG0), See [DNA Invisible](http://biogenfutur.es)\n- **Roller Stamp** - Data eraser for paper. [Amazon](https://www.amazon.co.uk/Vantamo-Identity-Protection-Including-Refills/dp/B074MGBXLS/)\n- **Forensic bridge kit** - Allows for write blocking to prevent unauthorized writing to a device, and for crating images with out modifying data. See more: [Amazon](https://www.amazon.com/dp/B00Q76XG5W)\n- **Firewalla** - Tiny open source smart firewall. Has many useful features: VPN Server, Ad-blocker, powerful monitoring, security analysis and family controls. [Firewalla.com](https://firewalla.com) | [Tindie](https://www.tindie.com/products/firewallallc/firewalla-smart-internet-security-for-your-home/)\n- **IoTMATE v2b-CL** - Plug-and-play open source home automation module, does not require internet access and has some good privacy controls, making it a more secure alternative to big-name IoT hubs (Note: requires technical and electrical knowledge to install and configure). [Tindie](https://www.tindie.com/products/iotmate/iotmate-v2b-cl-home-automation-with-alexa-support/)\n- **Stand-alone Drive Eraser** - Allows you to erase drives, without connecting them to your PC. Availible in different modesls for different needs. See More: [Amazon](https://www.amazon.com/StarTech-com-Hard-Drive-Eraser-Standalone/dp/B073X3YZNL)\n- **Shredder** - It is important to safely dispose of any documents that contain personal information. This is a very affordable shredder - it cuts pieces into security level P-4 sizes (5/32\" by 15/32\"). It also shreds credit cards into the same size. [Amazon](https://www.amazon.com/AmazonBasics-6-Sheet-High-Security-Micro-Cut-Shredder/dp/B00Q3KFX8U)\n- **Device Timer** - This non-smart device can be used to turn various devices (such as lights or radio) on or off at certain times. It's useful to deter people when you are away. [Amazon](https://www.amazon.com/Century-Digital-Programmable-Packaging-Security/dp/B00MVF16JG)\n- **SurfEasy Key** - A portable web browser you can carry in your pocket for private and secure browsing on the go. Provides encrypted storage and anonymous browsing features. Again, you can make your own version with an encrypted USB, and a portable executable. [fightforthefuture.org](https://shop.fightforthefuture.org/products/surfeasy-key)\n- **Private Texting LoRa Transceivers** | A pack of 2 private texting unit, which are small companion radios for a smartphone, allowing you to communicate independently from celluar networks, great for privacy, security and when you have no service. [Tindie](https://www.tindie.com/products/DLSpectrum/two-private-texting-lora-transceivers/) \n- **TrueRNG** - Generates a stream of True Random Numbers for use in Simulations, Security, and Gaming. [Tindie](https://www.tindie.com/products/ubldit/truerng-v3/)\n- **Wire Tap Detector** - Easily check both single and multi-line phone systems for series and parallel taps. Via [BrickHouseSecurity](https://www.brickhousesecurity.com/counter-surveillance/wiretap/)\n- **True Random Number Generator** - FST-01SZ is a tiny stand alone USB 32-bit computer based on a free hardware design. (NeuG is an implementation of a TRNG for GD32F103 MCU). See More: [Free Software Foundation: Shop](https://shop.fsf.org/storage-devices/neug-usb-true-random-number-generator)\n\n\n## Network Security\n\nGadgets that help protect and anonamise your internet, detect & prevent intrusions and provide additional network controlls, both at home and while traveling. There are many products like this availible, some of them are over-priced for what they are, others provide some really essential network security features. It is possible to re-create some of these solutions yourself, to save money [above](#diy-security-products).\n\n- **Anonabox** - Plug-and-play Tor router. Wi-Fi uplink and range extender with user interface, also has VPN options and USB ports for local file sharing.  [Amazon](https://amzn.to/38bwZIA) | [Anonabox.com](anonabox.com) | [shop.itsfoss.com](https://shop.itsfoss.com/sales/anonabox-pro)\n- **Turris Omnia Router** - Open source wireless router, running OpenWrt. Above average specs, and useful features including automatic updates, distributed adaptive firewall and virtual server. Via [turris.com](https://www.turris.com/en/omnia/overview/) | [Amazon](https://www.amazon.com/Turris-hi-Performance-printserver-Virtual-Dual-core/dp/B07XCKK146)\n- **FingBox** - Network monitoring and security, for what it offers Fing is very affordable, and there is a free [app](https://www.fing.com/products/fing-app) that you can use before purchasing the hardware to get started. [Fing.com](https://www.fing.com/products/fingbox) | [US](https://amzn.to/2wlXfCT) | [UK](https://amzn.to/2I63hKP)\n- **BitdefenderBox** - Cybersecurity home firewall hub, for protecting IoT and other devices. Has other features such as parental controlls and is easy to set up. [US](https://amzn.to/2vrurZJ) | [UK](https://amzn.to/34Ul54w)\n- **Flashed-Routers** - Pre-configured branded routers, flashed with custom open source firmware, for better security, privacy and performance. [flashrouters.com](https://www.flashrouters.com/routers)\n- **Firewalla** - Tiny open source smart firewall. Has many useful features: VPN Server, Ad-blocker, powerful monitoring, security analysis and family controls. [Firewalla.com](https://firewalla.com) | [Tindie](https://www.tindie.com/products/firewallallc/firewalla-smart-internet-security-for-your-home/)\n- **Trend Micro Box** - Protect home networks from external and internal cyber attacks. Detects intrusions, vulnrabbilities, remote access, web threats and provides other security features. [US](https://amzn.to/2wk3Y0s) | [US](https://amzn.to/2uqX4Wv)\n- **AlwaysHome Duo** - USB VPN with accelerated virtual networking to your home or office network, crossing geo-blocking and firewall mechanisms. [US](https://amzn.to/2Ts6oSn) | [UK](https://amzn.to/3bi4cF0)\n- **Firewalla Red** - An intrusion detection and intrusion prevention system, with a web and mobile interface. Also has Ad-block, VPN, internet controll features and insights. [US](https://amzn.to/388BlAw) | [Firewalla.com](https://firewalla.com)\n- **LibertyShield** - Pre-configured, plug-and-play multi-country VPN router, note that after 1 year there is a monthly subscription. [US](https://amzn.to/2T89vzU) | [UK](https://amzn.to/2twJlwM)\n- **Gigabit Travel AC VPN Router** - A fully-featured dual-band travel router with VPN capabilities. [US](https://amzn.to/32HD1zU) | [UK](https://amzn.to/2SkUxFg)\n- **Helios 64** - ARM-powered fully open source NAS. Using a local backup solution mitigates a lot of the privacy concerns of popular cloud storage providers, and Kobol's Helios 64 is a great option in terms of cost, reliability, functionality and security. High capacity (up to 80TB across 5-bays), with good network throughput (2.5GB multi-Gigabit Ethernet and dual LAN), adequate computing power and memory, great reliability, (with a built-in UPS, dual DC input). [Kobol.io](https://kobol.io/)\n- **InvizBox** - Tor router, that provides speed, privacy and security for all devices connected to it. [Invizbox.com](https://www.invizbox.com) | [Amazon](https://amzn.to/2w4v7V3) \n- **InviziBox Go** - Portable VPN: https://amzn.to/386ikPT\n- **WatchGuard Firebox** - Business-grade network firewall. [US](https://amzn.to/2VF0MqR) | [UK](https://amzn.to/2VF12WR)\n\n#### DIY Networking Hardware\n- **[Pi-Hole](https://pi-hole.net)** - Network-level advertisement and Internet tracker blocking application which acts as a DNS sinkhole. Pi-Hole can significantly speed up your internet, remove ads and block malware. It comes with a nice web interface and a mobile app with monitoring features, it's open source, easy to install and very widley used\n- **[IPFire](https://www.ipfire.org)** - A hardened, versatile, state-of-the-art open source firewall based on Linux. Its ease of use, high performance and extensibility make it usable for everyone\n- **[PiVPN](https://pivpn.io)** - A simple way to set up a home VPN on a any Debian server. Supports OpenVPN and WireGuard with elliptic curve encryption keys up to 512 bit. Supports multiple DNS providers and custom DNS provividers - works nicley along-side PiHole\n- **[E2guardian](http://e2guardian.org)** - Powerful open source web content filter\n- **[OpenWRT](https://openwrt.org)** Powerful custom router firmware, with great security, performance and customization features. See more [custom router firmware](https://github.com/Lissy93/awesome-privacy#router-firmware)\n- **[SquidGuard](http://www.squidguard.org)** - A URL redirector software, which can be used for content control of websites users can access. It is written as a plug-in for Squid and uses blacklists to define sites for which access is redirected\n- **[PF Sense](https://www.pfsense.org)** - Widley used, open source firewall/router\n- **[Zeek](https://www.zeek.org)** -  Detect if you have a malware-infected computer on your network, and powerful network analysis framework and monitor\n\n[See more](https://geekflare.com/best-open-source-firewall) open source firewall apps\n\nFor most projects, a Raspberry Pi 3 or 4 is more than enough. You could also build your own hardware, see [this guide](https://www.instructables.com/id/Build-your-own-gateway-firewall) on constructing a gateware firewall yourself.\n\n\n## Secure Computing Devices\n\n- **ORWL PC** - A self-destroying PC, that will wipe all data if it is compromised, and has many other safeguards to ensure no one other than you can access anything from your drive. Comes with QubeOS, Windows or Linux, and requires both a password and fob to log in. See more: [orwl.org](https://orwl.org)\n- **Librem 5** - An open source security and privacy-focused phone, running PureOS, built by Prism. See More: [puri.sm/products/librem-5](https://puri.sm/products/librem-5)\n- **Armadillo Phones** - Encrypted phones, SIMs and Networks, provide zero-trust  communications and pro-active defences. Their keychain software is open source, and they also provide encrypted SIMs, and servers.\nSee More: [ArmadilloPhone.com](https://www.armadillophone.com/store#diamond)\n- **KryptAll** - Provides secure mobile networking, for encrypted celluar calling. However without being open source, these devices are harder to verify. See More: [KryptAll.com](https://www.kryptall.com)\n- **WiPhone** - A fully open source, modular and easily customizable phone for VOIP and LoRa. Great for making free calls over WiFi, communicating locally over LoRa, or just tinkering thanks to its ESP32 pinouts. See more: [WiPhone.io](https://www.wiphone.io/)\n- **Ano-Phone** - Android devices loaded with additional security defences. Not open source. \nSee More: [ano-phone.com](https://ano-phone.com)\n- **Secure Group** - Hardware-encrypted smart phones, for privacy and security. See more: [SecureGroup.com](https://securegroup.com/hardware)\n- **Librem Laptop** - The Librem 13, Librem 15 and Librem  Mini are well-speced, open source hardware-encrypted computing devices by Purism. They have several hardware features, like physical connectivity switches, and tamper-proof hardware. See More [puri.sm](https://puri.sm/products)\n\n\n\n## Hardware Encrypted Storage\n\nHardware-based encryption uses a device’s on-board security to perform encryption and decryption. It is self-contained and does not require the help of any additional software. Therefore, it is essentially free from the possibility of contamination, malicious code infection, or vulnerability, and able to be used on any platform.\n\nIf the device itself becomes compromised, your data will remain safe. Really useful backing up, transporting and sharing personal data safely. For maximum security, you can combine hardware encryption with software encryption.\n\nReliable options include:\n\n- AES Hardware encrypted USB 3.0 external hard drive enclosure for HDD or SSD: [US]() | [UK](https://amzn.to/2GM3GkB)\n- Integral 256-bit AES USB 3.0 (Software required), 16GB, 32GB, 64GB. [US]() | [UK](https://amzn.to/37vpyNb)\n- iStorage 256-bit AES USB 3.0 Pro (Hardware Encrypted), with keypad, 8GB, 16GB, 32GB, 64GB. [US](https://amzn.to/2T9wTgo) | [UK](https://amzn.to/2O1OPXu)\n- IornKey Rugged Enterprise-grade encrypted USB Pen, 4GB, 8GB, 16GB, 32GB, 64GB, 128GB. [US](https://amzn.to/2wYWQH2) | [UK](https://amzn.to/3cjsnUi)\n- iStorage 256-bit AES USB 3.0 Personal (Hardware Encrypted), with keypad, 8GB, 16GB, 32GB, 64GB. [US](https://amzn.to/2I99c1G) | [UK](https://amzn.to/38GzHqo)\n- Lexar JumpDrive Fingerprint USB 3.0 (Software required), 32GB, 64GB, 128GB, 256GB. [US](https://amzn.to/38b0eeP) | [UK](https://amzn.to/2GtipRC)\n- iStorage 256-bit Hardware Encrypted external USB 3.1 SSD Drive. 128GB, 256GB, 512GB, 1TB. [UK](https://amzn.to/37wkhVA)\n- iStorage 256-bit Hardware Encrypted external USB 3.1 HDD Drive. 1TB, 2TB, 3TB, 4TB. [US](https://amzn.to/32DI4RA) | [UK](https://amzn.to/37vpFYN)\n- iodd Mini USB 3.0 256-bit Secure encrypted SSD Drive. 256GB, 512GB, 1TB. [UK](https://www.amazon.co.uk/dp/B07Y4FR9H7)   \n\n*Alternatively, a cheaper option would be a software-encrypted USB. [VeraCrypt](https://www.veracrypt.fr/en/Home.html) is cross-platform open source encryption application. It's surprisingly simple (see [this how-to guide](https://www.howtogeek.com/108501/the-how-to-geek-guide-to-getting-started-with-truecrypt)), and very secure. Combine this with an ordinary USB drive, this [high-speed (300mb/s) 256GB flash drive](https://amzn.to/2RykcLD) is a great option*\n\n*For encryption your boot drive, you can use [BitLocker](https://docs.microsoft.com/en-us/windows/security/information-protection/bitlocker/bitlocker-overview) (Windows), [FileVault](https://support.apple.com/en-us/HT204837) (OSX), or any of these [options](https://www.tecmint.com/file-and-disk-encryption-tools-for-linux)  for Linux.*\n\n\n\n## USB Data Blockers\n\nSmall, low-cost but essential devise. It attaches inbetween your USB cable and the charging socket, and will physically block data transfer and syncing while charging. Totally mitigates the risk of being hacked via a USB exploit, and stops anything being uploaded to your device.\n\n- PortaPow 3rd Gen, USB A, 2-Pack. [Red](https://amzn.to/39aStqE) | [White](https://amzn.to/2TqXl4i) | [Black](https://amzn.to/38imYd2)\n- PortaPow Dual USB Power Monitor with Data Blocker, usful for monitoring power consumption and managing which devices are allowed data connections. [US](https://amzn.to/2I7HT7J) | [UK](https://amzn.to/3chnWcJ) \n- Privise USB A Data Blocker. [US](https://amzn.to/3cig0rr) | [UK](https://amzn.to/2VAbX3K)\n- Data-only Micro-USB cable. Be sure that it is actually data-only, you can count the pins at each end. Again PortaPow make a legitimate safe-charge cable. [US](https://amzn.to/2Tq09ys) | [UK](https://amzn.to/38chHDF)\n- USB-C ondom. An open source power-with-no-data USB-C data blocker. [Tindie](https://www.tindie.com/products/CrowbarTech/usb-c-ondom/)\n\nPortaPow (3rd gen) is one of the best options, since it has a SmartCharge chip (which isn't usually possible without the data wire).\n\nYou can also build your own very easily, [here is a schematic](https://www.electroschematics.com/diy-usb-condom-circuit).\n\nWord of Warning: Sometimes the cable itself can be dangerous. See [O.M.G Cable](https://shop.hak5.org/products/o-mg-cable), it looks like a totally authentic phone cable, but is actually able to deploy advanced exploits often without you being able to identify. It is always best label your cables, to ensure you are using your own, safe wire.\n\n\n## FIDO U2F Keys\n\nPhysical 2-factor authentication keys are a secure and convinient method of authentication. See [twofactorauth.org](https://twofactorauth.org) for a list of websites that provide 2FA.\n- **[Solo Key](https://solokeys.com)** - An open source U2F and FIDO2 key, with NFC. via [SoloKeys.com](https://solokeys.com)\n- **[LibremKey](https://puri.sm/products/librem-key/)** - A USB security token to make encryption, key management, and tamper detection convenient and secure. via [Puri.sm](https://puri.sm/products/librem-key/)\n- **[OnlyKey](onlykey.io/alicia)** - A pin-protected open source hardware password manager with FIDO2/ U2F. It's very affordable, considering the broad feature set, but initial setup is a little complex. Via [OnlyKey.com](onlykey.io/alicia)\n- **[NitroKey](https://www.nitrokey.com/)** - An open source secure USB, providing authentication (OTP, U2F and static passwords), email encryption (GnuPG, OpenGPG, S/MIME etc), file encryption (with VeraCrypt, GnuPG and more), key and certificate management and SSH keys for server administration. via [NitroKey.com](https://www.nitrokey.com/)\n- **[Secalot](https://www.secalot.com/)** - A small open source USB, that functions as a hardware Hardware crypto wallet, OpenPGP smart card, U2F authenticator, and one-time password generator. via [Secalot.com](https://www.secalot.com/)\n- **[Protectimus](https://www.protectimus.com/protectimus-slim-mini/)** - A credit-card sized, slim TOTP hardware token. Allows you to generate 6-digit OTP codes, without the need for a mobile device. Useful as a backup, in case your phone is not accessible. Via [Protectimus.com](https://www.protectimus.com/protectimus-slim-mini/)\n- **[Yubikey](https://www.yubico.com/products/)** - Extremely popular, easy-to-use and reliable authentication keys, availible in a variety of form factors - from Micro keys, USB-C, Slim USB-A, and dual lightning + USB. Note, that neither the hardware, nor software is open source. Via [yubico.com](https://www.yubico.com/products/)\n- **[Thetis](https://thetis.io)** - Extremely durable, mobile-friendly USB-A FIDO U2F Key. via [Thetis.io](https://thetis.io)\n- **[U2F Zero](https://u2fzero.com/)** - Simple, open source U2F token, with write-only keys, tamper-resistance and hardware true random number generator to ensure high entropy.\n\nYou can also build your own key, see [U2f-Zero](https://github.com/conorpp/u2f-zero) by Conor Patrick, lets you turn a Pi Zero into a second-factor auth method. Or check out [NitroKey](https://github.com/nitrokey), for a guide on building U2F with an ESP-8266, see [this Hackaday article](https://hackaday.com/2018/01/04/two-factor-authentication-with-the-esp8266/) \n\n\n\n## Crypto Wallets\n\nThe most secure medium to store your currency is cold (offline) wallets, since they cannot be hacked. Of course it is vital that you keep your private keys somewhere that they cannot be stolen, and cannot be lost or destroyed. Electronic devices can make it easy to securely store and spend crypto currency. Choose a wallet that is open source, and with a good reputation. Ensure you backup your seed, and keep it somewhere safe.\n\n- Trezor is fully open source and implements a firmware-based security on top of known hardware. [Trezor.com](https://trezor.io)\n- Prokey Optimum is a secure, easy-to-use offline wallet, that works directly through the browser (on Windows, Mac, Linux and Android), without the need for installing any apps. Both the firmware and browser app is [open source](https://github.com/prokey-io), and it natively supports [over 1000 coins and tokens](https://prokey.io/all-coins). It's affordably priced at £42/ $59, with free world-wide shipping and customer support. [Prokey.io](https://prokey.io/?reflink=67e4a39bc5cd4c04bd7f38b50b041c1f)\n- Ledger is a popular option, as both their hardware and software are good quality, easy to use, and feature rich, however it is not open source. [Ledger.com](https://shop.ledger.com/pages/hardware-wallets-comparison)\n- Indestructible Steel Wallet, for private key. [US](https://amzn.to/2Px0EFV) | [UK](https://amzn.to/2VLeVmr)\n- QUANTUM is a Multifunctional crypto device, that is an open source secure, reliable and simple cross-platform cryptocurrency wallet and password manager. [crypto-arts.com](https://security-arts.com/) | [Tindie](https://www.tindie.com/products/security-arts/quantum-multifunctional-crypto-device/)\n\nAlways ensure the packaging has not been tampered with, buy direct from the manufacturer when possible.\n\n---\n\n## See Also\n\n- [Awesome Privacy-Respecting Software](https://github.com/Lissy93/awesome-privacy)\n- [Ultimate Personal Security Checklist](/README.md)\n- [Why Privacy and Security Matters](/0_Why_It_Matters.md)\n- [Further Links + More Awesome Stuff](/4_Privacy_And_Security_Links.md)\n\n\nContributions welcome and appreciated - to propose an edit [raise an issue](https://github.com/Lissy93/personal-security-checklist/issues/new/choose) or [open a PR](https://github.com/Lissy93/personal-security-checklist/pull/new/master). See: [`CONTRIBUTING.md`](/.github/CONTRIBUTING.md)\n\n*Licensed under [Creative Commons, CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), © [Alicia Sykes](https://aliciasykes.com) 2020*\n\n[![Attribution 4.0 International](https://licensebuttons.net/l/by/3.0/88x31.png)](https://github.com/Lissy93/personal-security-checklist/blob/master/LICENSE.md)\n\n---\n\nFound this helpful? Consider sharing it with others, to help them also improve their digital security 😇\n\n[![Share on Twitter](https://img.shields.io/badge/Share-Twitter-17a2f3?style=for-the-badge&logo=Twitter)](http://twitter.com/share?text=Check%20out%20the%20Personal%20Cyber%20Security%20Checklist-%20an%20ultimate%20list%20of%20tips%20for%20protecting%20your%20digital%20security%20and%20privacy%20in%202020%2C%20with%20%40Lissy_Sykes%20%F0%9F%94%90%20%20%F0%9F%9A%80&url=https://github.com/Lissy93/personal-security-checklist)\n[![Share on LinkedIn](https://img.shields.io/badge/Share-LinkedIn-0077b5?style=for-the-badge&logo=LinkedIn)](\nhttp://www.linkedin.com/shareArticle?mini=true&url=https://github.com/Lissy93/personal-security-checklist&title=The%20Ultimate%20Personal%20Cyber%20Security%20Checklist&summary=%F0%9F%94%92%20A%20curated%20list%20of%20100%2B%20tips%20for%20protecting%20digital%20security%20and%20privacy%20in%202020&source=https://github.com/Lissy93)\n[![Share on Facebook](https://img.shields.io/badge/Share-Facebook-4267b2?style=for-the-badge&logo=Facebook)](https://www.linkedin.com/shareArticle?mini=true&url=https%3A//github.com/Lissy93/personal-security-checklist&title=The%20Ultimate%20Personal%20Cyber%20Security%20Checklist&summary=%F0%9F%94%92%20A%20curated%20list%20of%20100%2B%20tips%20for%20protecting%20digital%20security%20and%20privacy%20in%202020&source=)\n[![Share on Mastodon](https://img.shields.io/badge/Share-Mastodon-56a7e1?style=for-the-badge&logo=Mastodon)](https://mastodon.social/web/statuses/new?text=Check%20out%20the%20Ultimate%20Personal%20Cyber%20Security%20Checklist%20by%20%40Lissy93%20on%20%23GitHub%20%20%F0%9F%94%90%20%E2%9C%A8)\n"
  },
  {
    "path": "articles/ATTRIBUTIONS.md",
    "content": "# Attributions\n\n## Sponsors 💖\n\n<!-- readme: sponsors -start -->\n<table>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/koconder\">\n            <img src=\"https://avatars.githubusercontent.com/u/25068?u=582657b23622aaa3dfe68bd028a780f272f456fa&v=4\" width=\"80;\" alt=\"koconder\"/>\n            <br />\n            <sub><b>Vincent Koc</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/peng1can\">\n            <img src=\"https://avatars.githubusercontent.com/u/225854?v=4\" width=\"80;\" alt=\"peng1can\"/>\n            <br />\n            <sub><b>Peng1can</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/tbjers\">\n            <img src=\"https://avatars.githubusercontent.com/u/1117052?u=539d96d5e581b3139c75713ce35b89a36626404c&v=4\" width=\"80;\" alt=\"tbjers\"/>\n            <br />\n            <sub><b>Torgny Bjers</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/emlazzarin\">\n            <img src=\"https://avatars.githubusercontent.com/u/1141361?u=714e3487a3f2e0df721b01a0133945f075d3ff68&v=4\" width=\"80;\" alt=\"emlazzarin\"/>\n            <br />\n            <sub><b>Eddy Lazzarin</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/AnandChowdhary\">\n            <img src=\"https://avatars.githubusercontent.com/u/2841780?u=747e554b3a7f12eb20b7910e1c87d817844f714f&v=4\" width=\"80;\" alt=\"AnandChowdhary\"/>\n            <br />\n            <sub><b>Anand Chowdhary</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/shrippen\">\n            <img src=\"https://avatars.githubusercontent.com/u/2873570?v=4\" width=\"80;\" alt=\"shrippen\"/>\n            <br />\n            <sub><b>Shrippen</b></sub>\n        </a>\n    </td></tr>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/davidpaulyoung\">\n            <img src=\"https://avatars.githubusercontent.com/u/3418369?v=4\" width=\"80;\" alt=\"davidpaulyoung\"/>\n            <br />\n            <sub><b>David Young</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/bile0026\">\n            <img src=\"https://avatars.githubusercontent.com/u/5022496?u=aec96ad173c0ea9baaba93807efa8a848af6595c&v=4\" width=\"80;\" alt=\"bile0026\"/>\n            <br />\n            <sub><b>Zach Biles</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/UlisesGascon\">\n            <img src=\"https://avatars.githubusercontent.com/u/5110813?u=3c41facd8aa26154b9451de237c34b0f78d672a5&v=4\" width=\"80;\" alt=\"UlisesGascon\"/>\n            <br />\n            <sub><b>Ulises Gascón</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/digitalarche\">\n            <img src=\"https://avatars.githubusercontent.com/u/6546135?u=d033c9c16e8367987aec3f9ff5922bc67dd1eedf&v=4\" width=\"80;\" alt=\"digitalarche\"/>\n            <br />\n            <sub><b>Digital Archeology</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/bmcgonag\">\n            <img src=\"https://avatars.githubusercontent.com/u/7346620?u=2a0f9284f3e12ac1cc15288c254d1ec68a5081e8&v=4\" width=\"80;\" alt=\"bmcgonag\"/>\n            <br />\n            <sub><b>Brian McGonagill</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/vlad-timofeev\">\n            <img src=\"https://avatars.githubusercontent.com/u/11474041?u=eee43705b54d2ec9f51fc4fcce5ad18dd17c87e4&v=4\" width=\"80;\" alt=\"vlad-timofeev\"/>\n            <br />\n            <sub><b>Vlad Timofeev</b></sub>\n        </a>\n    </td></tr>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/helixzz\">\n            <img src=\"https://avatars.githubusercontent.com/u/12218889?u=d06d0c103dfbdb99450623064f7da3c5a3675fb6&v=4\" width=\"80;\" alt=\"helixzz\"/>\n            <br />\n            <sub><b>HeliXZz</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/forwardemail\">\n            <img src=\"https://avatars.githubusercontent.com/u/32481436?v=4\" width=\"80;\" alt=\"forwardemail\"/>\n            <br />\n            <sub><b>Forward Email - Open-source & Privacy-focused Email Service (2023)</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/Bastii717\">\n            <img src=\"https://avatars.githubusercontent.com/u/53431819?u=604977bed6ad6875ada890d0d3765a4cacc2fa14&v=4\" width=\"80;\" alt=\"Bastii717\"/>\n            <br />\n            <sub><b>Bastii717</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/ratty222\">\n            <img src=\"https://avatars.githubusercontent.com/u/92832598?u=137b65530cbd5f5af9c24cde51baa6cc77cc934b&v=4\" width=\"80;\" alt=\"ratty222\"/>\n            <br />\n            <sub><b>Brent</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/Glydeon\">\n            <img src=\"https://avatars.githubusercontent.com/u/121807526?u=c4177e73394d90ad76a9a0282143f3a204af0f60&v=4\" width=\"80;\" alt=\"Glydeon\"/>\n            <br />\n            <sub><b>Byron</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/NixyJuppie\">\n            <img src=\"https://avatars.githubusercontent.com/u/138570196?u=b102c222487905728b858704962d32759df29ebe&v=4\" width=\"80;\" alt=\"NixyJuppie\"/>\n            <br />\n            <sub><b>Nixy</b></sub>\n        </a>\n    </td></tr>\n</table>\n<!-- readme: sponsors -end -->\n\n## Contributors 🙌\n\nThanks goes to these wonderful people\n\n<!-- readme: contributors -start -->\n<table>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/Lissy93\">\n            <img src=\"https://avatars.githubusercontent.com/u/1862727?v=4\" width=\"80;\" alt=\"Lissy93\"/>\n            <br />\n            <sub><b>Alicia Sykes</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/liss-bot\">\n            <img src=\"https://avatars.githubusercontent.com/u/87835202?v=4\" width=\"80;\" alt=\"liss-bot\"/>\n            <br />\n            <sub><b>Alicia Bot</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/matkoniecz\">\n            <img src=\"https://avatars.githubusercontent.com/u/899988?v=4\" width=\"80;\" alt=\"matkoniecz\"/>\n            <br />\n            <sub><b>Mateusz Konieczny</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/lucadidomenico\">\n            <img src=\"https://avatars.githubusercontent.com/u/56132403?v=4\" width=\"80;\" alt=\"lucadidomenico\"/>\n            <br />\n            <sub><b>Luca Di Domenico</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/gitetsu\">\n            <img src=\"https://avatars.githubusercontent.com/u/44036?v=4\" width=\"80;\" alt=\"gitetsu\"/>\n            <br />\n            <sub><b>Gitetsu</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/aarontorres0\">\n            <img src=\"https://avatars.githubusercontent.com/u/51248787?v=4\" width=\"80;\" alt=\"aarontorres0\"/>\n            <br />\n            <sub><b>Aaron </b></sub>\n        </a>\n    </td></tr>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/0xnbk\">\n            <img src=\"https://avatars.githubusercontent.com/u/355844?v=4\" width=\"80;\" alt=\"0xnbk\"/>\n            <br />\n            <sub><b>Nbk</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/alxndrv\">\n            <img src=\"https://avatars.githubusercontent.com/u/44431221?v=4\" width=\"80;\" alt=\"alxndrv\"/>\n            <br />\n            <sub><b>Andrey Aleksandrov</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/hypogram\">\n            <img src=\"https://avatars.githubusercontent.com/u/122231081?v=4\" width=\"80;\" alt=\"hypogram\"/>\n            <br />\n            <sub><b>Hypogram</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/b3pio\">\n            <img src=\"https://avatars.githubusercontent.com/u/59568034?v=4\" width=\"80;\" alt=\"b3pio\"/>\n            <br />\n            <sub><b>₿ӠⱣłØ</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/rusty-snake\">\n            <img src=\"https://avatars.githubusercontent.com/u/41237666?v=4\" width=\"80;\" alt=\"rusty-snake\"/>\n            <br />\n            <sub><b>Rusty-snake</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/marjamis\">\n            <img src=\"https://avatars.githubusercontent.com/u/10202014?v=4\" width=\"80;\" alt=\"marjamis\"/>\n            <br />\n            <sub><b>Marjamis</b></sub>\n        </a>\n    </td></tr>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/ansuz\">\n            <img src=\"https://avatars.githubusercontent.com/u/1264398?v=4\" width=\"80;\" alt=\"ansuz\"/>\n            <br />\n            <sub><b>Ansuz</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/zacharyraber\">\n            <img src=\"https://avatars.githubusercontent.com/u/105998568?v=4\" width=\"80;\" alt=\"zacharyraber\"/>\n            <br />\n            <sub><b>Zachary Raber</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/sirodoht\">\n            <img src=\"https://avatars.githubusercontent.com/u/553444?v=4\" width=\"80;\" alt=\"sirodoht\"/>\n            <br />\n            <sub><b>Theodore Keloglou</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/ilesinge\">\n            <img src=\"https://avatars.githubusercontent.com/u/501674?v=4\" width=\"80;\" alt=\"ilesinge\"/>\n            <br />\n            <sub><b>Alexandre G.-Raymond</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/ba32107\">\n            <img src=\"https://avatars.githubusercontent.com/u/26036493?v=4\" width=\"80;\" alt=\"ba32107\"/>\n            <br />\n            <sub><b>Balazs Gyurak</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/dmbaturin\">\n            <img src=\"https://avatars.githubusercontent.com/u/482212?v=4\" width=\"80;\" alt=\"dmbaturin\"/>\n            <br />\n            <sub><b>Daniil Baturin</b></sub>\n        </a>\n    </td></tr>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/mwleeds\">\n            <img src=\"https://avatars.githubusercontent.com/u/7833263?v=4\" width=\"80;\" alt=\"mwleeds\"/>\n            <br />\n            <sub><b>Phaedrus Leeds</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/pndyjack\">\n            <img src=\"https://avatars.githubusercontent.com/u/20967911?v=4\" width=\"80;\" alt=\"pndyjack\"/>\n            <br />\n            <sub><b>Pndyjack</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/kdenhartog\">\n            <img src=\"https://avatars.githubusercontent.com/u/23125059?v=4\" width=\"80;\" alt=\"kdenhartog\"/>\n            <br />\n            <sub><b>Kyle Den Hartog</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/lukecarr\">\n            <img src=\"https://avatars.githubusercontent.com/u/24438483?v=4\" width=\"80;\" alt=\"lukecarr\"/>\n            <br />\n            <sub><b>Luke Carr</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/lordpansar\">\n            <img src=\"https://avatars.githubusercontent.com/u/14231148?v=4\" width=\"80;\" alt=\"lordpansar\"/>\n            <br />\n            <sub><b>Magnus Sundström</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/mschwrdtnr\">\n            <img src=\"https://avatars.githubusercontent.com/u/39745446?v=4\" width=\"80;\" alt=\"mschwrdtnr\"/>\n            <br />\n            <sub><b>Max S.</b></sub>\n        </a>\n    </td></tr>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/nickali\">\n            <img src=\"https://avatars.githubusercontent.com/u/1514992?v=4\" width=\"80;\" alt=\"nickali\"/>\n            <br />\n            <sub><b>Nick Ali</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/Oymate\">\n            <img src=\"https://avatars.githubusercontent.com/u/50857856?v=4\" width=\"80;\" alt=\"Oymate\"/>\n            <br />\n            <sub><b>Oymate</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/pdelfino\">\n            <img src=\"https://avatars.githubusercontent.com/u/7698207?v=4\" width=\"80;\" alt=\"pdelfino\"/>\n            <br />\n            <sub><b>Pedro Delfino</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/sjamaan\">\n            <img src=\"https://avatars.githubusercontent.com/u/128536?v=4\" width=\"80;\" alt=\"sjamaan\"/>\n            <br />\n            <sub><b>Peter Bex</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/yaxollum\">\n            <img src=\"https://avatars.githubusercontent.com/u/46109467?v=4\" width=\"80;\" alt=\"yaxollum\"/>\n            <br />\n            <sub><b>Peter Ye</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/rorymbyrne\">\n            <img src=\"https://avatars.githubusercontent.com/u/18581795?v=4\" width=\"80;\" alt=\"rorymbyrne\"/>\n            <br />\n            <sub><b>Rory Byrne</b></sub>\n        </a>\n    </td></tr>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/Silvhr\">\n            <img src=\"https://avatars.githubusercontent.com/u/71043300?v=4\" width=\"80;\" alt=\"Silvhr\"/>\n            <br />\n            <sub><b>Silvhr</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/spikecodes\">\n            <img src=\"https://avatars.githubusercontent.com/u/19519553?v=4\" width=\"80;\" alt=\"spikecodes\"/>\n            <br />\n            <sub><b>Spike</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/ThomasRettig\">\n            <img src=\"https://avatars.githubusercontent.com/u/68767503?v=4\" width=\"80;\" alt=\"ThomasRettig\"/>\n            <br />\n            <sub><b>Thomas Rettig</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/tim-v3\">\n            <img src=\"https://avatars.githubusercontent.com/u/103248132?v=4\" width=\"80;\" alt=\"tim-v3\"/>\n            <br />\n            <sub><b>Tim Weber</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/zeusalmighty717\">\n            <img src=\"https://avatars.githubusercontent.com/u/79133911?v=4\" width=\"80;\" alt=\"zeusalmighty717\"/>\n            <br />\n            <sub><b>Zeus Almighty</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/apraile\">\n            <img src=\"https://avatars.githubusercontent.com/u/9890538?v=4\" width=\"80;\" alt=\"apraile\"/>\n            <br />\n            <sub><b>Apraile</b></sub>\n        </a>\n    </td></tr>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/elesiuta\">\n            <img src=\"https://avatars.githubusercontent.com/u/8146662?v=4\" width=\"80;\" alt=\"elesiuta\"/>\n            <br />\n            <sub><b>Eric Lesiuta</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/fireneat\">\n            <img src=\"https://avatars.githubusercontent.com/u/95147296?v=4\" width=\"80;\" alt=\"fireneat\"/>\n            <br />\n            <sub><b>Fireneat</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/ignoramous\">\n            <img src=\"https://avatars.githubusercontent.com/u/852289?v=4\" width=\"80;\" alt=\"ignoramous\"/>\n            <br />\n            <sub><b>Ignoramous</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/kevodwyer\">\n            <img src=\"https://avatars.githubusercontent.com/u/5311499?v=4\" width=\"80;\" alt=\"kevodwyer\"/>\n            <br />\n            <sub><b>Kevodwyer</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/notthewave\">\n            <img src=\"https://avatars.githubusercontent.com/u/74874782?v=4\" width=\"80;\" alt=\"notthewave\"/>\n            <br />\n            <sub><b>Notthewave</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/ogoregen\">\n            <img src=\"https://avatars.githubusercontent.com/u/37447279?v=4\" width=\"80;\" alt=\"ogoregen\"/>\n            <br />\n            <sub><b>Oğuzhan</b></sub>\n        </a>\n    </td></tr>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/omahs\">\n            <img src=\"https://avatars.githubusercontent.com/u/73983677?v=4\" width=\"80;\" alt=\"omahs\"/>\n            <br />\n            <sub><b>Omahs</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/pabloscloud\">\n            <img src=\"https://avatars.githubusercontent.com/u/93644977?v=4\" width=\"80;\" alt=\"pabloscloud\"/>\n            <br />\n            <sub><b>Pabloscloud</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/partoneoftwo\">\n            <img src=\"https://avatars.githubusercontent.com/u/1677630?v=4\" width=\"80;\" alt=\"partoneoftwo\"/>\n            <br />\n            <sub><b>Partoneoftwo</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/pipboy96\">\n            <img src=\"https://avatars.githubusercontent.com/u/46632672?v=4\" width=\"80;\" alt=\"pipboy96\"/>\n            <br />\n            <sub><b>Pipboy96</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/theblackmallard\">\n            <img src=\"https://avatars.githubusercontent.com/u/42389961?v=4\" width=\"80;\" alt=\"theblackmallard\"/>\n            <br />\n            <sub><b>Theblackmallard</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/titanism\">\n            <img src=\"https://avatars.githubusercontent.com/u/101466223?v=4\" width=\"80;\" alt=\"titanism\"/>\n            <br />\n            <sub><b>Titanism</b></sub>\n        </a>\n    </td></tr>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/0x192\">\n            <img src=\"https://avatars.githubusercontent.com/u/55300518?v=4\" width=\"80;\" alt=\"0x192\"/>\n            <br />\n            <sub><b>W1nst0n</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/101lols\">\n            <img src=\"https://avatars.githubusercontent.com/u/29000894?v=4\" width=\"80;\" alt=\"101lols\"/>\n            <br />\n            <sub><b>101lols</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/boushley\">\n            <img src=\"https://avatars.githubusercontent.com/u/101239?v=4\" width=\"80;\" alt=\"boushley\"/>\n            <br />\n            <sub><b>Aaron Boushley</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/Adv4n6\">\n            <img src=\"https://avatars.githubusercontent.com/u/34752023?v=4\" width=\"80;\" alt=\"Adv4n6\"/>\n            <br />\n            <sub><b>Adv4n6</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/ndsvw\">\n            <img src=\"https://avatars.githubusercontent.com/u/21332313?v=4\" width=\"80;\" alt=\"ndsvw\"/>\n            <br />\n            <sub><b>Alexander L.</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/andydonzelli\">\n            <img src=\"https://avatars.githubusercontent.com/u/6990701?v=4\" width=\"80;\" alt=\"andydonzelli\"/>\n            <br />\n            <sub><b>Andy Donzelli</b></sub>\n        </a>\n    </td></tr>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/austinhuang0131\">\n            <img src=\"https://avatars.githubusercontent.com/u/16656689?v=4\" width=\"80;\" alt=\"austinhuang0131\"/>\n            <br />\n            <sub><b>Austin Huang</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/ben-thul\">\n            <img src=\"https://avatars.githubusercontent.com/u/13566569?v=4\" width=\"80;\" alt=\"ben-thul\"/>\n            <br />\n            <sub><b>Ben Thul</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/BBlackwo\">\n            <img src=\"https://avatars.githubusercontent.com/u/7598058?v=4\" width=\"80;\" alt=\"BBlackwo\"/>\n            <br />\n            <sub><b>Benjamin B</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/BrunoBernardino\">\n            <img src=\"https://avatars.githubusercontent.com/u/1239616?v=4\" width=\"80;\" alt=\"BrunoBernardino\"/>\n            <br />\n            <sub><b>Bruno Bernardino</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/chemmi\">\n            <img src=\"https://avatars.githubusercontent.com/u/15739060?v=4\" width=\"80;\" alt=\"chemmi\"/>\n            <br />\n            <sub><b>Christian Hemminghaus</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/DaShoe\">\n            <img src=\"https://avatars.githubusercontent.com/u/89014564?v=4\" width=\"80;\" alt=\"DaShoe\"/>\n            <br />\n            <sub><b>DaShoe</b></sub>\n        </a>\n    </td></tr>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/danielgtaylor\">\n            <img src=\"https://avatars.githubusercontent.com/u/106826?v=4\" width=\"80;\" alt=\"danielgtaylor\"/>\n            <br />\n            <sub><b>Daniel G. Taylor</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/dim1119\">\n            <img src=\"https://avatars.githubusercontent.com/u/10008788?v=4\" width=\"80;\" alt=\"dim1119\"/>\n            <br />\n            <sub><b>Dimitris Lazarakis</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/VoDmAl\">\n            <img src=\"https://avatars.githubusercontent.com/u/248879?v=4\" width=\"80;\" alt=\"VoDmAl\"/>\n            <br />\n            <sub><b>Dmitry Vorobyev</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/federicoviceconti\">\n            <img src=\"https://avatars.githubusercontent.com/u/25590766?v=4\" width=\"80;\" alt=\"federicoviceconti\"/>\n            <br />\n            <sub><b>Federico</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/0x5FE\">\n            <img src=\"https://avatars.githubusercontent.com/u/65371336?v=4\" width=\"80;\" alt=\"0x5FE\"/>\n            <br />\n            <sub><b>0x5FE</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/fkohrt\">\n            <img src=\"https://avatars.githubusercontent.com/u/12914806?v=4\" width=\"80;\" alt=\"fkohrt\"/>\n            <br />\n            <sub><b>Florian Kohrt</b></sub>\n        </a>\n    </td></tr>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/freddy-m\">\n            <img src=\"https://avatars.githubusercontent.com/u/25013506?v=4\" width=\"80;\" alt=\"freddy-m\"/>\n            <br />\n            <sub><b>Freddy</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/hw4n\">\n            <img src=\"https://avatars.githubusercontent.com/u/38372575?v=4\" width=\"80;\" alt=\"hw4n\"/>\n            <br />\n            <sub><b>Hwanhee Chae</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/jneplokh\">\n            <img src=\"https://avatars.githubusercontent.com/u/46184597?v=4\" width=\"80;\" alt=\"jneplokh\"/>\n            <br />\n            <sub><b>Jacob Neplokh</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/gongjason\">\n            <img src=\"https://avatars.githubusercontent.com/u/52545545?v=4\" width=\"80;\" alt=\"gongjason\"/>\n            <br />\n            <sub><b>Jason G</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/mxygem\">\n            <img src=\"https://avatars.githubusercontent.com/u/21065409?v=4\" width=\"80;\" alt=\"mxygem\"/>\n            <br />\n            <sub><b>Gemini Smith</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/monkeywithacupcake\">\n            <img src=\"https://avatars.githubusercontent.com/u/7316730?v=4\" width=\"80;\" alt=\"monkeywithacupcake\"/>\n            <br />\n            <sub><b>Jess</b></sub>\n        </a>\n    </td></tr>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/openjck\">\n            <img src=\"https://avatars.githubusercontent.com/u/933396?v=4\" width=\"80;\" alt=\"openjck\"/>\n            <br />\n            <sub><b>John Karahalis</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/edelbluth\">\n            <img src=\"https://avatars.githubusercontent.com/u/4939388?v=4\" width=\"80;\" alt=\"edelbluth\"/>\n            <br />\n            <sub><b>Juergen Edelbluth</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/fetzu\">\n            <img src=\"https://avatars.githubusercontent.com/u/6372605?v=4\" width=\"80;\" alt=\"fetzu\"/>\n            <br />\n            <sub><b>Julien</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/seclution\">\n            <img src=\"https://avatars.githubusercontent.com/u/38378574?v=4\" width=\"80;\" alt=\"seclution\"/>\n            <br />\n            <sub><b>Kai Biebel</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/koirand\">\n            <img src=\"https://avatars.githubusercontent.com/u/17229643?v=4\" width=\"80;\" alt=\"koirand\"/>\n            <br />\n            <sub><b>Kazuki Koide</b></sub>\n        </a>\n    </td>\n    <td align=\"center\">\n        <a href=\"https://github.com/Kotbenek\">\n            <img src=\"https://avatars.githubusercontent.com/u/64036903?v=4\" width=\"80;\" alt=\"Kotbenek\"/>\n            <br />\n            <sub><b>Dominik Piątkowski</b></sub>\n        </a>\n    </td></tr>\n<tr>\n    <td align=\"center\">\n        <a href=\"https://github.com/leon-costa\">\n            <img src=\"https://avatars.githubusercontent.com/u/83498565?v=4\" width=\"80;\" alt=\"leon-costa\"/>\n            <br />\n            <sub><b>Leon Costa</b></sub>\n        </a>\n    </td></tr>\n</table>\n<!-- readme: contributors -end -->\n\n## Stargazers 🌟\n\n[![Recent Star Gazers](https://reporoster.com/stars/dark/Lissy93/personal-security-checklist)](https://github.com/Lissy93/personal-security-checklist/stargazers)\n\n[![Recent Forkers](https://reporoster.com/forks/dark/lissy93/personal-security-checklist)](https://github.com/lissy93/personal-security-checklist/network/members)\n\n## Special Thanks 🤗\n\nSpecial Thanks to [Stefan Keim](https://github.com/indus) and [Matt (IPv4) Cowley](https://github.com/MattIPv4) from [JS.org](https://js.org), for providing the domain used for our GitHub Page ([security-list.js.org](https://security-list.js.org)).\n\nAnd of course, and huge thank you to the awesome developers behind the projects listed in the [Privacy-Respecting Software list](/5_Privacy_Respecting_Software.md). The effort, time and love they've put into each one of those applications is immediately apparent, they've done an amazing job 💞\n\n## You? 👈\n\nWant to get involved? You can support the continued development of this project by submitting a PR, sponsoring us on GitHub, sharing this repo with your network or staring the repository. [Contributions](/CONTRIBUTING.md) of any kind are very welcome!\n\n#### Submit an Improvement\n\n[![Submit a PR](https://img.shields.io/badge/Submit_a_PR-GitHub-%23060606?style=for-the-badge&logo=github&logoColor=fff)](https://github.com/Lissy93/dashy/compare)\n\n#### Sponsor the Project\n\n[![Sponsor Lissy93 on GitHub](https://img.shields.io/badge/Sponsor_on_GitHub-Lissy93-%23ff4dda?style=for-the-badge&logo=githubsponsors&logoColor=ff4dda)](https://github.com/sponsors/Lissy93)\n\n#### Share with your Network\n\n[![Share on Twitter](https://img.shields.io/badge/Share-Twitter-17a2f3?style=for-the-badge&logo=Twitter)](http://twitter.com/share?text=Check%20out%20the%20Personal%20Cyber%20Security%20Checklist-%20an%20ultimate%20list%20of%20tips%20for%20protecting%20your%20digital%20security%20and%20privacy%20in%202020%2C%20with%20%40Lissy_Sykes%20%F0%9F%94%90%20%20%F0%9F%9A%80&url=https://github.com/Lissy93/personal-security-checklist)\n[![Share on LinkedIn](https://img.shields.io/badge/Share-LinkedIn-0077b5?style=for-the-badge&logo=LinkedIn)](http://www.linkedin.com/shareArticle?mini=true&url=https://github.com/Lissy93/personal-security-checklist&title=The%20Ultimate%20Personal%20Cyber%20Security%20Checklist&summary=%F0%9F%94%92%20A%20curated%20list%20of%20100%2B%20tips%20for%20protecting%20digital%20security%20and%20privacy%20in%202020&source=https://github.com/Lissy93)\n[![Share on Mastodon](https://img.shields.io/badge/Share-Mastodon-56a7e1?style=for-the-badge&logo=Mastodon)](https://mastodon.social/web/statuses/new?text=Check%20out%20the%20Ultimate%20Personal%20Cyber%20Security%20Checklist%20by%20%40Lissy93%20on%20%23GitHub%20%20%F0%9F%94%90%20%E2%9C%A8)\n\n\n## References 📝\n\n<blockquote>\n\"2019 Data Breach Investigations Report - EMEA\", Verizon Enterprise Solutions, 2020. [Online]. Available: https://enterprise.verizon.com/resources/reports/2019-data-breach-investigations-report-emea.pdf. [Accessed: 25- Apr - 2020]  \n  \n\"Web Browser Privacy: What Do Browsers Say When They Phone Home?\", Feb 2020. [Online].\nAvailable: https://www.scss.tcd.ie/Doug.Leith/pubs/browser_privacy.pdf. [Accessed: 27- Apr - 2020]\n\n\"Comments on the Competition and Markets Authority’s interim report on online platforms and digital advertising\", Privacyinternational.org, Jan 2020. [Online].\nAvailable: https://privacyinternational.org/sites/default/files/2020-04/20.02.12_CMA_PI_Comments_Interim_Report_FINAL.pdf. [Accessed: 02- Ma - 2020]\n\n\"Cracking DES: Secrets of Encryption Research, Wiretap Politics, and Chip Design\", 1998. [Online].\nAvailable: https://dl.packetstormsecurity.net/cracked/des/cracking-des.htm. [Accessed: 25- Apr - 2020]\n\n\"Digital Identity Guidelines\", 2020. [Online].\nAvailable: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-63-3.pdf. [Accessed: 25- Apr - 2020]\n\n\"DNS Security - Getting it Right\", Open Rights Group, 2020. [Online].\nAvailable: https://www.openrightsgroup.org/about/reports/dns-security-getting-it-right. [Accessed: 25- Apr - 2020]\n\n\"DNS-over-HTTPS performance | SamKnows\", Samknows.com, 2020. [Online].\nAvailable: https://www.samknows.com/blog/dns-over-https-performance. [Accessed: 25- Apr - 2020]\n\nJ. Eckenrode and S. Friedman, \"The state of cybersecurity at financial institutions\", 2018. [Online].\nAvailable: https://www2.deloitte.com/us/en/insights/industry/financial-services/state-of-cybersecurity-at-financial-institutions.html. [Accessed: 25- Apr - 2020]\n\nE. Foundation, \"Cracking DES\", Shop.oreilly.com, 1998. [Online].\nAvailable: http://shop.oreilly.com/product/9781565925205.do. [Accessed: 25- Apr - 2020]\n\n\"Google data collection, research and findings\", Digital Content Next, 2020. [Online].\nAvailable: https://digitalcontentnext.org/blog/2018/08/21/google-data-collection-research/. [Accessed: 25- Apr - 2020]\n\nS. Lekies, B. Stock, M. Wentzel and M. Johns, \"The Unexpected Dangers of Dynamic JavaScript\", UseNix & SAP, 2020. [Online]. Available: https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-lekies.pdf. [Accessed: 25- Apr - 2020]\n\n\"Privacy concerns with social networking services\", 2020. [Online]. Available: https://en.wikipedia.org/wiki/Privacy_concerns_with_social_networking_services. [Accessed: 25- Apr - 2020]\n\nD. Tian, G. Hernandez, J. Choi, V. Frost, C. Ruales, P. Traynor, H. Vijayakumar, L. Harrison, A. Rahmati, M. Grace and K. Butler, \"Vulnerability Analysis of AT Commands Within the Android Ecosystem\", Cise.ufl.edu, 2020. [Online].\nAvailable: https://www.cise.ufl.edu/~butler/pubs/usenix18-atcmd.pdf. [Accessed: 25- Apr - 2020]\n\nS. Topuzov, \"Phone hacking through SS7 is frighteningly easy and effective\", Blog.securegroup.com, 2020. [Online].\nAvailable: https://blog.securegroup.com/phone-hacking-through-ss7-is-frighteningly-easy-and-effective. [Accessed: 25- Apr - 2020]\n\nJ. Heidemann, Y. Pradkin, R. Govindan, C. Papadopoulos and J. Bannister, \"Exploring Visible Internet Hosts through Census and Survey\", Isi.edu, 2020. [Online].\nAvailable: https://www.isi.edu/~johnh/PAPERS/Heidemann07c.pdf. [Accessed: 10- Ma - 2020]\n\nMichalevsky, Y., Boneh, D. and Nakibly, G., 2014. Recognizing Speech From Gyroscope Signals. [online] Usenix.org. Available at: <https://www.usenix.org/system/files/conference/usenixsecurity14/sec14-paper-michalevsky.pdf> [Accessed 26 May 2020].\n\nFavaretto, M., Clercq, E. and Simone Elger, B., 2019. Big Data And Discrimination: Perils, Promises And Solutions. A Systematic Review. [online] springeropen. Available at: <https://journalofbigdata.springeropen.com/articles/10.1186/s40537-019-0177-4> [Accessed 26 May 2020].\n\nWeb Browser Privacy: What Do Browsers Say When They Phone Home?, n.d. https://www.scss.tcd.ie/Doug.Leith/pubs/browser_privacy.pdf.\n\nA Comprehensive Evaluation of Third-Party Cookie Policies, n.d. https://wholeftopenthecookiejar.com/static/tpc-paper.pdf.\n\nA Study of Scripts Accessing Smartphone Sensors, n.d. https://sensor-js.xyz/webs-sixth-sense-ccs18.pdf.\n\nAcar, Abbas, Wenyi Liu, Raheem Beyah, Kemal Akkaya, and Arif Selcuk Uluagac. “A Privacy‐Preserving Multifactor Authentication System.” Security and \nPrivacy 2, no. 6 (2019). https://doi.org/10.1002/spy2.94.\n\nAfzal, Waseem. “Rethinking Information Privacy-Security: Does It Really Matter?” Proceedings of the American Society for Information Science and \nTechnology 50, no. 1 (2013): 1–10. https://doi.org/10.1002/meet.14505001095.\n\nBattery Status Not Included, Assessing Privacy in Web Standards, n.d. https://www.cs.princeton.edu/~arvindn/publications/battery-status-case-study.pdf.\nChristl, Wolfie. Corporate Surveillance in Everyday Life, How Companies Collect, Combine, Analyze, Trade, and Use Personal Data on Billions, n.d. \nhttps://crackedlabs.org/dl/CrackedLabs_Christl_CorporateSurveillance.pdf.\n\nDas, Anupam, Gunes Acar, Nikita Borisov, and Amogh Pradeep. “The Webs Sixth Sense.” Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security, 2018. https://doi.org/10.1145/3243734.3243860.\n\nEnglehardt, Steven, Dillon Reisman, Christian Eubank, Peter Zimmerman, Jonathan Mayer, Arvind Narayanan, and Edward W. Felten. “Cookies That Give You Away.” Proceedings of the 24th International Conference on World Wide Web - WWW 15, 2015. https://doi.org/10.1145/2736277.2741679.\n\nEnglehardt, Steven, Jeffrey Han, and Arvind Narayanan. “I Never Signed up for This! Privacy Implications of Email Tracking.” Proceedings on Privacy Enhancing Technologies 2018, no. 1 (January 2018): 109–26. https://doi.org/10.1515/popets-2018-0006.\n\nFerra, Fenia, Isabel Wagner, Eerke Boiten, Lee Hadlington, Ismini Psychoula, and Richard Snape. “Challenges in Assessing Privacy Impact: Tales from the Front Lines.” Security and Privacy 3, no. 2 (2019). https://doi.org/10.1002/spy2.101.\n\nhmathur, arunes. Characterizing the Use of Browser-Based Blocking Extensions To Prevent Online Tracking, n.d. http://aruneshmathur.co.in/files/publications/SOUPS18_Tracking.pdf.\n\nLebeck, Kiron, Kimberly Ruth, Tadayoshi Kohno, and Franziska Roesner. “Towards Security and Privacy for Multi-User Augmented Reality: Foundations with End Users.” 2018 IEEE Symposium on Security and Privacy (SP), 2018. https://doi.org/10.1109/sp.2018.00051.\n\nLocation Tracking using Mobile Device Power Analysis, n.d. https://www.scribd.com/doc/256304846/PowerSpy-Location-Tracking-using-Mobile-Device-Power-Analysis.\n\nOnline Tracking, A 1-million-site Measurement and Analysis, n.d. https://www.cs.princeton.edu/~arvindn/publications/OpenWPM_1_million_site_tracking_measurement.pdf.\n\nPixel Perfect, Fingerprinting Canvas in HTML5, n.d. https://hovav.net/ucsd/dist/canvas.pdf.\n\nRecognizing Speech From Gyroscope Signals, n.d. https://crypto.stanford.edu/gyrophone/.\n\nRoesner, Franziska. Detecting and Defending Against Third-Party Tracking on the Web, n.d. http://www.franziroesner.com/pdf/webtracking-NSDI2012.pdf.\n\nSchneider, Christian. Cross-Site WebSocket Hijacking, n.d. http://www.christian-schneider.net/CrossSiteWebSocketHijacking.html.\n\nSeb, Crypto. Crypto Paper: Privacy, Security, and Anonymity For Every Internet User, n.d. https://github.com/cryptoseb/cryptopaper.\n\nShining the Floodlights on Mobile Web Tracking — A Privacy Survey, n.d. https://pdfs.semanticscholar.org/80bb/5c9119ff4fc2374103b4f3d6a8f614b3c2ed.pdf.\n\nSu, Jessica, Ansh Shukla, Sharad Goel, and Arvind Narayanan. “De-Anonymizing Web Browsing Data with Social Networks.” Proceedings of the 26th International Conference on World Wide Web, March 2017. https://doi.org/10.1145/3038912.3052714.\n\nThe Surveillance Implications of Web Tracking, n.d. https://senglehardt.com/papers/www15_cookie_surveil.pdf.\n\nTrackers Vs Firefox, Comparing different blocking utilities, n.d. https://github.com/jawz101/TrackersVsFirefox.\n\nUnderstanding Facebook Connect login permissions, n.d. http://jbonneau.com/doc/RB14-fb_permissions.pdf.\n\nVines, Paul, Franziska Roesner, and Tadayoshi Kohno. “Exploring ADINT.” Proceedings of the 2017 on Workshop on Privacy in the Electronic Society - WPES 17, 2017. https://doi.org/10.1145/3139550.3139567.\n\nYelp, Luca Wu. Is Google degrading search? Consumer Harm from Universal Search, n.d. https://www.law.berkeley.edu/wp-content/uploads/2015/04/Luca-Wu-Yelp-Is-Google-Degrading-Search-2015.pdf.\n\n</blockquote>\n\n**Above References apply to the Content in the Following Files**:<br>\n[TLDR](/2_TLDR_Short_List.md) | [Intro](/0_Why_It_Matters.md) | [The Personal Security Checklist](/README.md) | [Privacy-Respecting Software](/5_Privacy_Respecting_Software.md) | [Security Hardware](/6_Privacy_and-Security_Gadgets.md) | [Further Links](/4_Privacy_And_Security_Links.md)\n\n---\n\nLicensed under [Creative Commons, CC BY 4.0](/LICENSE.md), © [Alicia Sykes](https://aliciasykes.com) 2022\n\n"
  },
  {
    "path": "articles/Secure-Messaging.md",
    "content": "# Choosing a Secure Messenging Platform\n\nThis article explains the considerations you should be aware of when selecting a secure messenger.\n\n**TLDR;** Opting for a secure messaging app can prevent any third-parties accessing your private conversions. Choose a platform that is E2E encrypted, open source and actively maintained. Advanced security features can harden defenses further, such as  self-destructing messages, contact verification, forward secrecy, the ability to sign up with an aliases (instead of phone number or email) and a decentralized P2P network sending content over Tor.\n\n## Considerations\n\n### End-to-end Encryption\nEnd-to-end encryption means that messages are encrypted locally on your device, before being sent to your recipient(s). Neither the service provider, nor any actor who intercepts messages can ever decrypt the content. This is important since your data is safe from a data breach, law enforcement warrant, rogue employee or a malicious actor. Avoid apps that offer E2E encryption as an optional feature, as this could increase the chance of a plain text accidentally message being sent. Be aware that some providers offer weak or backdore'd encryption - (often called [Snake Oil Encryption](https://en.wikipedia.org/wiki/Snake_oil_(cryptography))), if the platform is not open source, then there is no way of verifying weather this is the case.\n\n### Open Source\nThe most secure designs, are the ones you do not have to trust. Without an app being open source, we can not verify that it is truly secure. It may have backdoors, weak cryptography or security vulnerabilities. This is one reason why apps which has fully-open and public source code can be more trustworthy But don't be fooled by false advertising; just because an app uses open source cryptography, does not mean it is fully open source, and hence cannot be verified. The published source code must be complete, and the security design system must be thoroughly documented.\n\n### Code Audit\nAs well as encryption, the developers need to take care of code quality, user experience, and service availability. The math behind the cryptography may be flawless, but a small mistake in the implementation, can result in serious consequences for security. Therefore the code base should be regularly audited by independant security specialists, and the report published publicly.\n\n### Active Maintenance\nPushing  well tested security updates in a timely manner is of prime importance to security.  New bugs, vulnerabilities and issues are being discovered all the time, and without being patched they may be exploited by an adversary.  For a messenger to be secure, a public stable (non-beta) release needs to be available, and there needs to be secure auto-updating mechanisms to quickly mitigate security problems. It should be clear to the user which version they are running, and if a newer version is available\n\n### Reproducible Builds\nMost apps are distributed in a pre-compiled form, making it very difficult to verify that the version you downloaded is authentic and the same as that in the open source repository.  [Binary Transparency](https://wiki.mozilla.org/Security/Binary_Transparency) allows third parties to verify that the binaries are built directly from the public source code. [Reproducible builds](https://reproducible-builds.org) is the practice of verifying the build are authentic, and do not contain backdoors. This is done with a pre-defined build environment and a  fully deterministic build process - transforming a given set of source code must always output the same result. The user can then, if they desire build the app themselves and validate that the output matches the original build.\n\n### Additional Features\nSome messaging platforms have additional features, that can be enticing to users, but it critical that these features do not undermine the goals of security. For example, cloud backups should be off by default, and if exported data will be decrypted the user must be made aware of this. Avoid platforms that priorities feature development over security\n\n### Meta Data\nSending and receiving messages generates meta data, and this can reveal a lot of information: Who do you talk to, how often/ for how long, when, where, how etc. Not all messaging platforms automatically encrypt this, so it is important to check: What is collected, how long is it stored, with whom is it shared for and for what purposes. In general, the best meta data policies are the shortest: We do not collect any user meta data.\n\n### Stability\nThe app should be usable, salable and reliable.  One of the biggest dangers is that if the platform fails to reliably deliver messages, users may be forced to fall back to less secure channels.  Some smaller messaging services may not have the resources required to build a robust and reliable messaging platform, yet this is essential for security.\n\n### Financing\nBuilding apps and maintaining servers is expensive. Ask yourself - who is paying for all that? Because usually, if a service is free - you're the product. This isn't always the case, as some open source apps are funded by non-profit organisations, who receive donations and sponsorship.  But if you cannot easily find out who is behind the app, this should be a red flag.\n\n### Reputable Developers\nDevelopers should have a solid history of responding to technical problems and legal threats with the platform, as well as a realistic and transparent attitude toward government and law enforcement\n\n\n### Jurisdiction \nThe location of where the company is legally registered, where they run operations from and where they host user data plays a big role in security. In some countries or states, organisations are forced to comply with local government regulations, which can often require the organisation log all their users data, or hand over any encryption keys. Generally, it's better to avoid companies from within the [Five Eyes](https://en.wikipedia.org/wiki/Five_Eyes) Alliance.\n\n### Anonymity\nIf the app asks for a phone number, email address or name, then you are not anonymous.  For vulnerable users, the ability to sign up anonymously is critical, as a major identifier like a phone number  is private information, and could be risky if they are being targeted by someone who knows their identity, (such as a government, stalker or criminal adversary). This may not be needed for everyone, but if you believe you may be targeted, then opt for an anonymous messaging app, download it over Tor, outside of Google Play / Apple App Store, create an anonymous identity  ant only run the app while connected through Tor.\n\n### Contact Verification\nYour communications can only be as secure as the weakest link, and if you cannot verify your contacts identity, you cannot be sure that their account has not been taken over, or even that you are communicating with the intended entity. In the same way, if your recipient has been compromised, your messages are not safe at all. Contact fingerprint verification is a powerful feature, enabling users to trust the destination, and preventing hackers from hijacking the conversation. It usually takes the form of comparing fingerprint codes, even over a phone call or in real life via a QR code. A secure messenger should provide reliable indicators of compromise that are recognizable to an end-user, so if someone has logged on from a new device, both parties should be notified.\n\n### Ephemeral Messages\nYou cannot always rely on the physical security of your device. Self-destructing messages is a really neat feature the causes your messages to automatically delete after a set amount of time. This means that if your device is lost or stolen, an adversary will only have access to the most recent communications. Unlike remote erase, disappearing messages does not require your device to be remotely accessible or have signal. You are able to vary this time frame from weeks all the way down to just a few seconds, depending on your threat model.\n\n### Forward Secrecy\nOpt for a platform that implements  [forward secrecy](https://en.wikipedia.org/wiki/Forward_secrecy). This is where your app generates a new encryption key for every message, then even if your adversary has obtained your device and extracted the private encryption key, they will not be able to use it to decrypt any previously captured messages. This means that even if a key from one party is compromised, it will not be possible to decrypt the remainder of the session with this key.\n\n### Decentralization\nWithout freedom, your app will have a single point of failure. If all data flows through a central provider, then you have to trust them with your meta-data. And if that provider ceases to operate, the entire network will be unavailable for that duration. Whereas with a decentralized system, you have the freedom to delegate trust to someone else, in another jurisdiction. With a fully peer-to-peer app, there are no central servers to compromise, and there is no single point of failure.\n\n## Additional Settings\nYour choose an application that allows you to disable optional non-security features such as read receipt, last online and typing notification. If the app supports cloud sync either for backup or for access through a web app companion, this increases the attack surface and so should be disabled also.\n\n## Final Considerations\nThe weakest point in any system is the user. If you or your recipient is compromised, then even the most advanced security features will become obsolete. Follow good security practices, and ensure the contact you are communicating with also does so. It's important to remember that new vulnerabilities are being discovered and exploited all the time, and the most secure messaging app of today could become compromised in the future\n\n"
  },
  {
    "path": "lib/api-spec.yml",
    "content": ""
  },
  {
    "path": "lib/api.py",
    "content": ""
  },
  {
    "path": "lib/generate.py",
    "content": "import os\nimport yaml\nimport logging\n\n# Configure Logging\nlogging.basicConfig(level=logging.INFO)\nlogger = logging.getLogger(__name__)\n\nproject_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\nyaml_file_path = os.path.join(project_root, 'personal-security-checklist.yml')\nmarkdown_file_path = os.path.join(project_root, 'CHECKLIST.md')\n\n\ndef read_yaml(file_path):\n    logger.info(f\"Reading YAML file from {file_path}...\")\n    with open(file_path, 'r') as file:\n        return yaml.safe_load(file)\n\ndef generate_markdown_section(section):\n    markdown = f\"## {section['title']}\\n\\n\"\n    markdown += f\"{section['intro']}\\n\\n\"\n    markdown += \"**Security** | **Priority** | **Details and Hints**\\n\"\n    markdown += \"--- | --- | ---\\n\"\n    for item in section['checklist']:\n        markdown += f\"**{item['point']}** | {item['priority']} | {item['details']}\\n\"\n    \n    if 'softwareLinks' in section:\n        software_links = [software for software in section['softwareLinks'] if 'title' in software and 'url' in software]\n        if software_links:\n            markdown += \"\\n### Recommended Software\\n\"\n            for software in software_links:\n                markdown += f\"- [{software['title']}]({software['url']})\\n\"\n    \n    return markdown\n\ndef insert_markdown_content(md_file_path, new_content):\n    start_marker, end_marker = \"<!-- checklist-start -->\", \"<!-- checklist-end -->\"\n    logger.info(f\"Inserting generated markdown into {md_file_path} between markers...\")\n    \n    with open(md_file_path, 'r') as file:\n        content = file.read()\n    \n    start_index = content.find(start_marker)\n    end_index = content.find(end_marker, start_index)\n    \n    if start_index == -1 or end_index == -1:\n        logger.error(\"Markers not found in the markdown file.\")\n        return\n    \n    updated_content = content[:start_index + len(start_marker)] + \"\\n\" + new_content + \"\\n\" + content[end_index:]\n    \n    with open(md_file_path, 'w') as file:\n        file.write(updated_content)\n    logger.info(\"Markdown content successfully inserted.\")\n\ndef main():\n    yaml_data = read_yaml(yaml_file_path)\n    markdown_content = \"\"\n    for section in yaml_data:\n        markdown_content += generate_markdown_section(section) + \"\\n\\n\"\n    insert_markdown_content(markdown_file_path, markdown_content)\n    logger.info(\"Script completed successfully!\")\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "lib/requirements.txt",
    "content": "PyYAML==6.0.1\nrequests==2.31.0\n"
  },
  {
    "path": "lib/schema.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"title\": \"Section\",\n  \"type\": \"array\",\n  \"items\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"title\": { \"type\": \"string\" },\n      \"slug\": { \"type\": \"string\" },\n      \"description\": { \"type\": \"string\" },\n      \"intro\": { \"type\": \"string\" },\n      \"icon\": { \"type\": \"string\" },\n      \"color\": { \"type\": \"string\" },\n      \"checklist\": {\n        \"type\": \"array\",\n        \"items\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"point\": { \"type\": \"string\" },\n            \"priority\": { \"type\": \"string\", \"enum\": [\"essential\", \"optional\", \"advanced\"] },\n            \"details\": { \"type\": \"string\" }\n          },\n          \"required\": [\"point\", \"priority\", \"details\"]\n        }\n      },\n      \"furtherLinks\": {\n        \"type\": \"array\",\n        \"items\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"title\": { \"type\": \"string\" },\n            \"url\": { \"type\": \"string\", \"format\": \"uri\" },\n            \"description\": { \"type\": \"string\" }\n          },\n          \"required\": [\"title\", \"url\", \"description\"]\n        },\n        \"minItems\": 0\n      }\n    },\n    \"required\": [\"title\", \"slug\", \"description\", \"intro\", \"checklist\"],\n    \"additionalProperties\": false\n  }\n}\n"
  },
  {
    "path": "lib/validate.py",
    "content": ""
  },
  {
    "path": "personal-security-checklist.yml",
    "content": "- title: Authentication\n  slug: authentication\n  description: Securing your online account login credentials\n  icon: password\n  color: yellow\n  intro: >-\n    Most reported data breaches are caused by the use of weak, default, or stolen passwords\n    (according to [this Verizon report](http://www.verizonenterprise.com/resources/reports/rp_dbir-2016-executive-summary_xg_en.pdf)).\n    Use long, strong, and unique passwords, manage them in a secure password manager, enable\n    2-factor authentication, keep on top of breaches, and take care while logging into your accounts.\n  checklist:\n  - point: Use a Strong Password\n    priority: Essential\n    details: >-\n      If your password is too short, or contains dictionary words, places, or names, then it can be easily\n      cracked through brute force or guessed by someone. The easiest way to make a strong password is by\n      making it long (12+ characters) — consider using a 'passphrase' made up of many words. Alternatively,\n      use a password generator to create a long, strong random password. Have a play with\n      [Security.org's How Secure Is My Password?](https://security.org/how-secure-is-my-password/), to get an idea of how quickly common\n      passwords can be cracked. Read more about creating strong passwords:\n      [securityinabox.org](https://securityinabox.org/en/passwords/passwords/).\n\n  - point: Don't Reuse Passwords\n    priority: Essential\n    details: >-\n      If someone were to reuse a password and one site they had an account with suffered a leak, then a\n      criminal could easily gain unauthorized access to their other accounts. This is usually done through\n      large-scale automated login requests, and it is called Credential Stuffing. Unfortunately, this is all\n      too common, but it's simple to protect against — use a different password for each of your online accounts.\n\n  - point: Use a Secure Password Manager\n    priority: Essential\n    details: >-\n      For most people, it is going to be near-impossible to remember hundreds of strong and unique passwords.\n      A password manager is an application that generates, stores, and auto-fills your login credentials for you.\n      All your passwords will be encrypted against 1 master password (which you must remember, and it should be\n      very strong). Most password managers have browser extensions and mobile apps, so whatever device you are on,\n      your passwords can be auto-filled. A good all-rounder is\n      [Bitwarden](https://awesome-privacy.xyz/essentials/password-managers/bitwarden), or see\n      [Recommended Password Managers](https://awesome-privacy.xyz/essentials/password-managers).\n\n  - point: Avoid Sharing Passwords\n    priority: Essential\n    details: >-\n      While there may be times that you need to share access to an account with another person, you should\n      generally avoid doing this because it makes it easier for the account to become compromised. If you\n      absolutely do need to share a password — for example, when working on a team with a shared account — this\n      should be done via features built into a password manager.\n\n  - point: Enable 2-Factor Authentication\n    priority: Essential\n    details: >-\n      2FA is where you must provide both something you know (a password) and something you have (such as a\n      code on your phone) to log in. This means that if anyone has your password (e.g., through phishing,\n      malware, or a data breach), they will not be able to log into your account. It's easy to get started,\n      download [an authenticator app](https://github.com/Lissy93/awesome-privacy#2-factor-authentication)\n      onto your phone, and then go to your account security settings and follow the steps to enable 2FA. Next\n      time you log in on a new device, you will be prompted for the code that is displayed in the app on your phone\n      (it works without internet, and the code usually changes every 30 seconds).\n\n  - point: Keep Backup Codes Safe\n    priority: Essential\n    details: >-\n      When you enable multi-factor authentication, you will usually be given several codes that you can use if\n      your 2FA method is lost, broken, or unavailable. Keep these codes somewhere safe to prevent loss or\n      unauthorized access. You should store these on paper or in a safe place on disk (e.g., in offline storage\n      or an encrypted file/drive). Don't store these in your password manager as 2FA sources and passwords\n      should be kept separately.\n\n  - point: Sign Up for Breach Alerts\n    priority: Optional\n    details: >-\n      After a website suffers a significant data breach, the leaked data often ends up on the internet. Several websites collect\n      these leaked records and allow you to search your email address to check if you are in any of their lists.\n      [Firefox Monitor](https://monitor.firefox.com), [Have I Been Pwned](https://haveibeenpwned.com),\n      and [DeHashed](https://dehashed.com) allow you to sign up for monitoring, where they will notify you if your\n      email address appears in any new data sets. It is useful to know as soon as possible when this happens so\n      that you can change your passwords for the affected accounts. [Have i been pwned](https://awesome-privacy.xyz/security-tools/online-tools/have-i-been-pwned) also has domain-wide\n      notification, where you can receive alerts if any email addresses under your entire domain appear (useful if\n      you use aliases for [anonymous forwarding](https://github.com/Lissy93/awesome-privacy#anonymous-mail-forwarding)).\n\n  - point: Shield your Password/PIN\n    priority: Optional\n    details: >-\n      When typing your password in public places, ensure you are not in direct line of sight of a CCTV camera and\n      that no one can see over your shoulder. Cover your password or pin code while you type, and do not\n      reveal any plain text passwords on your screen.\n\n  - point: Update Critical Passwords Periodically\n    priority: Optional\n    details: >-\n      Database leaks and breaches are common, and, likely, several of your passwords are already somewhere\n      online. Occasionally updating passwords of security-critical accounts can help mitigate this. But providing\n      that all your passwords are long, strong, and unique, there is no need to do this too often — annually should be\n      sufficient. Enforcing mandatory password changes within organisations is [no longer recommended](https://duo.com/decipher/microsoft-will-no-longer-recommend-forcing-periodic-password-changes),\n      as it encourages colleagues to select weaker passwords.\n\n  - point: Don’t Save your Password in Browsers\n    priority: Optional\n    details: >-\n      Most modern browsers offer to save your credentials when you log into a site. Don’t allow this, as they are\n      not always encrypted and could allow someone to gain access to your accounts. Instead, use a dedicated\n      password manager to store (and auto-fill) your passwords.\n\n  - point: Avoid Logging In on Someone Else’s Device\n    priority: Optional\n    details: >-\n      Avoid logging in on other people's computers since you can't be sure their system is clean. Be especially cautious\n      of public machines, as malware and tracking arr more common here. Using someone else's device is especially\n      dangerous with critical accounts like online banking. When using someone else's machine, ensure that you're in a\n      private/incognito session (Use Ctrl+Shift+N/ Cmd+Shift+N). This will request the browser to not save your credentials,\n      cookies, and browsing history.\n\n  - point: Avoid Password Hints\n    priority: Optional\n    details: >-\n      Some sites allow you to set password hints. Often, it is very easy to guess answers. In cases where password hints\n      are mandatory, use random answers and record them in your password manager (`Name of the first school: 6D-02-8B-!a-E8-8F-81`).\n\n  - point: Never Answer Online Security Questions Truthfully\n    priority: Optional\n    details: >-\n      If a site asks security questions (such as place of birth, mother's maiden name, or first car, etc.), don't provide\n      real answers. It is a trivial task for hackers to find out this information online or through social engineering.\n      Instead, create a fictitious answer, and store it inside your password manager. Using real words is better than\n      random characters, as [explained here](https://news.ycombinator.com/item?id=29244870).\n\n  - point: Don’t Use a 4-digit PIN\n    priority: Optional\n    details: >-\n      Don’t use a short PIN to access your smartphone or computer. Instead, use a text password or a much longer PIN.\n      Numeric passphrases are easy to crack (A 4-digit pin has 10,000 combinations, compared to 7.4 million for a\n      4-character alpha-numeric code).\n\n  - point: Avoid Using SMS for 2FA\n    priority: Optional\n    details: >-\n      When enabling multi-factor authentication, opt for app-based codes or a hardware token if supported. SMS is\n      susceptible to several common threats, such as [SIM-swapping](https://www.maketecheasier.com/sim-card-hijacking)\n      and [interception](https://secure-voice.com/ss7_attacks). There's also no guarantee of how securely your phone\n      number will be stored or what else it will be used for. From a practical point of view, SMS will only work when\n      you have a signal and can be slow. If a website or service requires the usage of an SMS number for recovery, consider\n      purchasing a second pre-paid phone number only used for account recovery for these instances.\n\n  - point: Avoid Using your PM to Generate OTPs\n    priority: Advanced\n    details: >-\n      Many password managers are also able to generate 2FA codes. It is best not to use your primary password manager\n      as your 2FA authenticator as well, since it would become a single point of failure if compromised. Instead, use a\n      dedicated [authenticator app](https://github.com/Lissy93/awesome-privacy#2-factor-authentication) on your phone or laptop.\n\n  - point: Avoid Face Unlock\n    priority: Advanced\n    details: >-\n      Most phones and laptops offer a facial recognition authentication feature, using the camera to compare a snapshot\n      of your face with a stored hash. It may be very convenient, but there are numerous ways to [fool it](https://www.forbes.com/sites/jvchamary/2017/09/18/security-apple-face-id-iphone-x/)\n      and gain access to the device through digital photos and reconstructions from CCTV footage. Unlike your password,\n      there are likely photos of your face on the internet and videos recorded by surveillance cameras.\n\n  - point: Watch Out for Keyloggers\n    priority: Advanced\n    details: >-\n      A hardware [keylogger](https://en.wikipedia.org/wiki/Hardware_keylogger) is a physical device planted between\n      your keyboard and the USB port, which intercepts all keystrokes and sometimes relays data to a remote server.\n      It gives a hacker access to everything typed, including passwords. The best way to stay protected is just by\n      checking your USB connection after your PC has been unattended. It is also possible for keyloggers to be planted\n      inside the keyboard housing, so look for any signs that the case has been tampered with, and consider bringing your\n      own keyboard to work. Data typed on a virtual keyboard, pasted from the clipboard, or auto-filled by a password\n      manager can not be intercepted by a hardware keylogger.\n\n  - point: Consider a Hardware Token\n    priority: Advanced\n    details: >-\n      A U2F/FIDO2 security key is a USB (or NFC) device that you insert while logging in to an online service to\n      verify your identity instead of entering a OTP from your authenticator. [SoloKey](https://solokeys.com) and\n      [NitroKey](https://www.nitrokey.com) are examples of such keys. They bring with them several security benefits.\n      Since the browser communicates directly with the device, it cannot be fooled as to which host is requesting\n  - point: Use Passkeys Where Available\n    priority: Recommended\n    details: >-\n      Passkeys (also known as FIDO2 WebAuthn) are a passwordless authentication method that is more secure\n      and convenient than traditional passwords. They use your devices biometric authentication (fingerprint, face ID)\n      or a PIN to log in, and are resistant to phishing attacks. Many major services now support passkeys including Google,\n      Apple, Microsoft, and GitHub. Consider enabling passkeys for accounts that offer them as an alternative to\n      passwords or as an additional 2FA method.\n      authentication because the TLS certificate is checked. [This post](https://security.stackexchange.com/a/71704) is\n      a good explanation of the security of using FIDO U2F tokens. Of course, it is important to store the physical key\n      somewhere safe or keep it on your person. Some online accounts allow for several methods of 2FA to be enabled.\n\n  - point: Consider Offline Password Manager\n    priority: Advanced\n    details: >-\n      For increased security, an encrypted offline password manager will give you full control over your data.\n      [KeePass](https://awesome-privacy.xyz/essentials/password-managers/keepass) is a popular choice, with lots of [plugins](https://[KeePass](https://awesome-privacy.xyz/essentials/password-managers/keepass).info/plugins.html) and\n      community forks with additional compatibility and functionality. Popular clients include: [KeePassXC](https://keepassxc.org)\n      (desktop), [KeePassDX](https://www.keepassdx.com) (Android) and [StrongBox](https://apps.apple.com/us/app/strongbox-password-safe/id897283731)\n      (iOS). The drawback being that it may be slightly less convenient for some, and it will be up to you to back it up\n      and store it securely.\n\n  - point: Consider Unique Usernames\n    priority: Advanced\n    details: >-\n      Having different passwords for each account is a good first step, but if you also use a unique username, email, or\n      phone number to log in, then it will be significantly harder for anyone trying to gain unauthorised access. The easiest\n      method for multiple emails, is using auto-generated aliases for anonymous mail forwarding. This is where\n      [anything]@yourdomain.com will arrive in your inbox, allowing you to use a different email for each account (see\n      [Mail Alias Providers](https://github.com/Lissy93/awesome-privacy#mail-forwarding)). Usernames are easier\n      since you can use your password manager to generate, store, and auto-fill these. Virtual phone numbers can be generated\n      through your VOIP provider.\n  softwareLinks:\n    - title: Password Managers\n      url: https://awesome-privacy.xyz/essentials/password-managers\n    - title: 2-Factor Authentication\n      url: https://awesome-privacy.xyz/essentials/2-factor-authentication\n\n- title: Web Browsing\n  slug: web-browsing\n  description: Avoiding tracking, censorship, and data collection online\n  icon: browser\n  intro: >-\n    Most websites on the internet will use some form of tracking, often to gain\n    insight into their users behaviour and preferences. This data can be incredibly\n    detailed, and so is extremely valuable to corporations, governments and intellectual\n    property thieves. Data breaches and leaks are common, and deanonymizing users web\n    activity is often a trivial task.\n\n\n    There are two primary methods of tracking; stateful (cookie-based), and stateless\n    (fingerprint-based). Cookies are small pieces of information, stored in your browser\n    with a unique ID that is used to identify you. Browser fingerprinting is a highly\n    accurate way to identify and track users wherever they go online. The information\n    collected is quite comprehensive, and often includes browser details, OS, screen\n    resolution, supported fonts, plugins, time zone, language and font preferences,\n    and even hardware configurations.\n\n\n    This section outlines the steps you can take, to be better protected from threats,\n    minimise online tracking and improve privacy.\n  checklist:\n  - point: Block Ads\n    priority: Essential\n    details: >-\n      Using an ad-blocker can help improve your privacy, by blocking the trackers that ads implement.\n      [uBlock Origin](https://awesome-privacy.xyz/networking/ad-blockers/ublock-origin) is a very\n      efficient and open source browser addon,\n      developed by Raymond Hill. When 3rd-party ads are displayed on a webpage, they have the ability to\n      track you, gathering personal information about you and your habits, which can then be sold, or used\n      to show you more targeted ads, and some ads are plain malicious or fake. Blocking ads also makes pages\n      load faster, uses less data and provides a less cluttered experience.\n\n  - point: Ensure Website is Legitimate\n    priority: Basic\n    details: >-\n      It may sound obvious, but when you logging into any online accounts, double check the URL is correct.\n      Storing commonly visited sites in your bookmarks is a good way to ensure the URL is easy to find. When\n      visiting new websites, look for common signs that it could be unsafe: Browser warnings, redirects,\n      on-site spam and pop-ups. You can also check a website using a tool, such as:\n      [Virus Total](https://awesome-privacy.xyz/security-tools/online-tools/virus-total),\n      [IsLegitSite](https://www.islegitsite.com), [Google Safe Browsing Status](https://transparencyreport.google.com/safe-browsing/search)\n      if you are unsure.\n\n  - point: Watch out for Browser Malware\n    priority: Basic\n    details: >-\n      Your system or browser can be compromised by spyware, miners, browser hijackers, malicious redirects,\n      adware etc. You can usually stay protected, just by: ignoring pop-ups, be wary of what your clicking,\n      don't proceed to a website if your browser warns you it may be malicious. Common signs of browser malware\n      include: default search engine or homepage has been modified, toolbars, unfamiliar extensions or icons,\n      significantly more ads, errors and pages loading much slower than usual. These articles from Heimdal\n      explain [signs of browser malware](https://heimdalsecurity.com/blog/warning-signs-operating-system-infected-malware),\n      [how browsers get infected](https://heimdalsecurity.com/blog/practical-online-protection-where-malware-hides)\n      and [how to remove browser malware](https://heimdalsecurity.com/blog/malware-removal).\n\n  - point: Use a Privacy-Respecting Browser\n    priority: Essential\n    details: >-\n      [Firefox](https://awesome-privacy.xyz/essentials/browsers/firefox) (with a few tweaks)\n      and [Brave](https://awesome-privacy.xyz/essentials/browsers/brave-browser)\n      are secure, private-respecting browsers. Both are fast, open source, user-friendly and available on all\n      major operating systems. Your browser has access to everything that you do online, so if possible, avoid\n      Google Chrome, Edge and Safari as (without correct configuration) all three of them, collect usage data,\n      call home and allow for invasive tracking. Firefox requires a few changes to achieve optimal security,\n      for example - [arkenfox](https://github.com/arkenfox/user.js/wiki) or [12byte](https://12bytes.org/firefox-configuration-guide-for-privacy-freaks-and-performance-buffs/)'s\n      user.js configs. See more: [Privacy Browsers](https://github.com/Lissy93/awesome-privacy#browsers).\n\n  - point: Use a Private Search Engine\n    priority: Essential\n    details: >-\n      Using a privacy-preserving, non-tracking search engine, will reduce risk that your search terms are not\n      logged, or used against you. Consider [DuckDuckGo](https://awesome-privacy.xyz/essentials/search-engines/duckduckgo),\n      or [Qwant](https://awesome-privacy.xyz/essentials/search-engines/qwant).\n      Google implements some [incredibly invasive](https://hackernoon.com/data-privacy-concerns-with-google-b946f2b7afea)\n      tracking policies, and have a history of displaying [biased search results](https://www.businessinsider.com/evidence-that-google-search-results-are-biased-2014-10).\n      Therefore Google, along with Bing, Baidu, Yahoo and Yandex are incompatible with anyone looking to protect\n      their privacy. It is recommended to update your [browsers default search](https://duckduckgo.com/install)\n      to a privacy-respecting search engine.\n\n  - point: Remove Unnecessary Browser Addons\n    priority: Essential\n    details: >-\n      Extensions are able to see, log or modify anything you do in the browser, and some innocent looking\n      browser apps, have malicious intentions. Websites can see which extensions you have installed, and may\n      use this to enhance your fingerprint, to more accurately identify/ track you. Both [Firefox](https://awesome-privacy.xyz/essentials/browsers/firefox) and Chrome\n      web stores allow you to check what permissions/access rights an extension requires before you install it.\n      Check the reviews. Only install extensions you really need, and removed those which you haven't used in a while.\n\n  - point: Keep Browser Up-to-date\n    priority: Essential\n    details: >-\n      Browser vulnerabilities are constantly being [discovered](https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=browser)\n      and patched, so it’s important to keep it up to date, to avoid a zero-day exploit. You can [see which browser\n      version you're using here](https://www.whatismybrowser.com/), or follow [this guide](https://www.whatismybrowser.com/guides/how-to-update-your-browser/)\n      for instructions on how to update. Some browsers will auto-update to the latest stable version.\n\n  - point: Check for HTTPS\n    priority: Essential\n    details: >-\n      If you enter information on a non-HTTPS website, this data is transported unencrypted and can therefore\n      be read by anyone who intercepts it. Do not enter any data on a non-HTTPS website, but also do not let\n      the green padlock give you a false sense of security, just because a website has SSL certificate, does\n      not mean that it is legitimate or trustworthy. [HTTPS-Everywhere](https://www.eff.org/https-everywhere)\n      (developed by the [EFF](https://www.eff.org/)) used to be a browser extension/addon that automatically\n      enabled HTTPS on websites, but as of 2022 is now deprecated. In their [accouncement article](https://www.eff.org/)\n      the EFF explains that most browsers now integrate such protections. Additionally, it provides instructions\n      for [Firefox](https://awesome-privacy.xyz/essentials/browsers/firefox), Chrome, Edge and Safari browsers on how to enable their HTTPS secure protections.\n\n  - point: Use DNS-over-HTTPS\n    priority: Essential\n    details: >-\n      Traditional DNS makes requests in plain text for everyone to see. It allows for eavesdropping and\n      manipulation of DNS data through man-in-the-middle attacks. Whereas DNS-over-HTTPS performs DNS\n      resolution via the HTTPS protocol, meaning data between you and your DNS resolver is encrypted.\n      A popular option is [CloudFlare](https://awesome-privacy.xyz/networking/dns-providers/cloudflare)'s [1.1.1.1](https://awesome-privacy.xyz/security-tools/mobile-apps/1.1.1.1), or compare providers- it is simple to enable in-browser.\n      Note that DoH comes with its own issues, mostly preventing web filtering.\n\n  - point: Multi-[Session](https://awesome-privacy.xyz/communication/encrypted-messaging/session) Containers\n    priority: Essential\n    details: >-\n      Compartmentalisation is really important to keep different aspects of your browsing separate. For\n      example, using different profiles for work, general browsing, social media, online shopping etc\n      will reduce the number associations that data brokers can link back to you. One option is to make\n      use of [Firefox Containers](https://awesome-privacy.xyz/security-tools/browser-extensions/firefox-multi-account-containers)\n      which is designed exactly for this purpose.\n      Alternatively, you could\n      use different browsers for different tasks\n      ([Brave](https://awesome-privacy.xyz/essentials/browsers/brave-browser),\n      [Firefox](https://awesome-privacy.xyz/essentials/browsers/firefox),\n      [Tor](https://awesome-privacy.xyz/networking/mix-networks/tor) etc).\n\n  - point: Use Incognito\n    priority: Essential\n    details: >-\n      When using someone else's machine, ensure that you're in a private/ incognito session. This will\n      prevent browser history, cookies and some data being saved, but is not fool-proof- you can still\n      be tracked.\n\n  - point: Understand Your Browser Fingerprint\n    priority: Essential\n    details: >-\n      Browser Fingerprinting is an incredibly accurate method of tracking, where a website identifies you\n      based on your device information. You can view your fingerprint at amiunique.org- The aim is to be\n      as un-unique as possible.\n\n  - point: Manage Cookies\n    priority: Essential\n    details: >-\n      Clearing cookies regularly is one step you can take to help reduce websites from tracking you.\n      Cookies may also store your session token, which if captured, would allow someone to access your\n      accounts without credentials. To mitigate this you should clear cookies often.\n\n  - point: Block Third-Party Cookies\n    priority: Essential\n    details: >-\n      Third-party cookies placed on your device by a website other than the one you’re visiting. This\n      poses a privacy risk, as a 3rd entity can collect data from your current session. This guide explains\n      how you can disable 3rd-party cookies, and you can check here ensure this worked.\n\n  - point: Block Third-Party Trackers\n    priority: Essential\n    details: >-\n      Blocking trackers will help to stop websites, advertisers, analytics and more from tracking you in\n      the background. [Privacy Badger](https://awesome-privacy.xyz/security-tools/browser-extensions/privacy-badger),\n      [DuckDuckGo Privacy Essentials](https://awesome-privacy.xyz/security-tools/browser-extensions/privacy-essentials),\n      [uBlock Origin](https://awesome-privacy.xyz/networking/ad-blockers/ublock-origin) and uMatrix (advanced)\n      are all very effective, open source tracker-blockers available for all major browsers.\n\n  - point: Beware of Redirects\n    priority: Optional\n    details: >-\n      While some redirects are harmless, others, such as Unvalidated redirects are used in phishing attacks,\n      it can make a malicious link seem legitimate. If you are unsure about a redirect URL, you can check\n      where it forwards to with a tool like RedirectDetective.\n\n  - point: Do Not Sign Into Your Browser\n    priority: Optional\n    details: >-\n      Many browsers allow you to sign in, in order to sync history, bookmarks and other browsing data across\n      devices. However this not only allows for further data collection, but also increases attack surface\n      through providing another avenue for a malicious actor to get hold of personal information.\n\n  - point: Disallow Prediction Services\n    priority: Optional\n    details: >-\n      Some browsers allow for prediction services, where you receive real-time search results or URL auto-fill.\n      If this is enabled then data is sent to Google (or your default search engine) with every keypress,\n      rather than when you hit enter.\n\n  - point: Avoid G Translate for Webpages\n    priority: Optional\n    details: >-\n      When you visit a web page written in a foreign language, you may be prompted to install the Google Translate\n      extension. Be aware that Google collects all data (including input fields), along with details of the current\n      user. Instead use a translation service that is not linked to your browser.\n\n  - point: Disable Web Notifications\n    priority: Optional\n    details: >-\n      Browser push notifications are a common method for criminals to encourage you to click their link, since\n      it is easy to spoof the source. Be aware of this, and for instructions on disabling browser notifications,\n      see this article.\n\n  - point: Disable Automatic Downloads\n    priority: Optional\n    details: >-\n      Drive-by downloads is a common method of getting harmful files onto a users device. This can be mitigated\n      by disabling auto file downloads, and be cautious of websites which prompt you to download files unexpectedly.\n\n  - point: Disallow Access to Sensors\n    priority: Optional\n    details: >-\n      Mobile websites can tap into your device sensors without asking. If you grant these permissions to your\n      browser once, then all websites are able to use these capabilities, without permission or notification.\n\n  - point: Disallow Location\n    priority: Optional\n    details: >-\n      Location Services lets sites ask for your physical location to improve your experience. This should be\n      disabled in settings. Note that there are still other methods of determining your approximate location.\n\n  - point: Disallow Camera/ Microphone access\n    priority: Optional\n    details: >-\n      Check browser settings to ensure that no websites are granted access to webcam or microphone. It may also\n      be beneficial to use physical protection such as a webcam cover and microphone blocker.\n\n  - point: Disable Browser Password Saves\n    priority: Optional\n    details: >-\n      Do not allow your browser to store usernames and passwords. These can be easily viewed or accessed.\n      Instead use a password manager.\n\n  - point: Disable Browser Autofill\n    priority: Optional\n    details: >-\n      Turn off autofill for any confidential or personal details. This feature can be harmful if your browser\n      is compromised in any way. Instead, consider using your password manager's Notes feature.\n\n  - point: Protect from Exfil Attack\n    priority: Optional\n    details: >-\n      The CSS Exfiltrate attack is a method where credentials and other sensitive details can be snagged with\n      just pure CSS. You can stay protected,\n      with the [CSS Exfil Protection](https://awesome-privacy.xyz/security-tools/browser-extensions/css-exfil-protection) plugin.\n\n  - point: Deactivate ActiveX\n    priority: Optional\n    details: >-\n      ActiveX is a browser extension API that built into Microsoft IE, and enabled by default. It's not commonly\n      used anymore, but since it gives plugins intimate access rights, and can be dangerous, therefore you should\n      disable it.\n\n  - point: Disable WebRTC\n    priority: Optional\n    details: >-\n      WebRTC allows high-quality audio/video communication and peer-to-peer file-sharing straight from the\n      browser. However it can pose as a privacy leak. To learn more, check out this guide.\n\n  - point: Spoof HTML5 Canvas Sig\n    priority: Optional\n    details: >-\n      Canvas Fingerprinting allows websites to identify and track users very accurately. You can use the\n      Canvas-Fingerprint-Blocker extension to spoof your fingerprint or\n      use [Tor](https://awesome-privacy.xyz/networking/mix-networks/tor).\n\n  - point: Spoof User Agent\n    priority: Optional\n    details: >-\n      The user agent tells the website what device, browser and version you are using. Switching user agent\n      periodically is one small step you can take to become less unique.\n\n  - point: Disregard DNT\n    priority: Optional\n    details: >-\n      Enabling Do Not Track has very limited impact, since many websites do not respect or follow this. Since\n      it is rarely used, it may also add to your signature, making you more unique.\n\n  - point: Prevent HSTS Tracking\n    priority: Optional\n    details: >-\n      HSTS was designed to help secure websites, but privacy concerns have been raised as it allowed site\n      operators to plant super-cookies. It can be disabled by visiting chrome://net-internals/#hsts in\n      Chromium-based browsers.\n\n  - point: Prevent Automatic Browser Connections\n    priority: Optional\n    details: >-\n      Even when you are not using your browser, it may call home to report on usage activity, analytics and\n      diagnostics. You may wish to disable some of this, which can be done through the settings.\n\n  - point: Enable 1st-Party Isolation\n    priority: Optional\n    details: >-\n      [First Party Isolation](https://awesome-privacy.xyz/security-tools/browser-extensions/first-party-isolation) means\n      that all identifier sources and browser state are scoped using the URL bar\n      domain, this can greatly reduce tracking.\n\n  - point: Strip Tracking Params from URLs\n    priority: Advanced\n    details: >-\n      Websites often append additional GET parameters to URLs that you click, to identify information like\n      source/referrer. You can sanitize manually,\n      or use an extension like [ClearURLs](https://awesome-privacy.xyz/security-tools/browser-extensions/clearurls) to strip tracking data\n      from URLs automatically.\n\n  - point: First Launch Security\n    priority: Advanced\n    details: >-\n      After installing a web browser, the first time you launch it (prior to configuring its privacy settings),\n      most browsers will call home. Therefore, after installing a browser, you should first disable your internet\n      connection, then configure privacy options before reenabling your internet connectivity.\n\n  - point: Use The Tor Browser\n    priority: Advanced\n    details: >-\n      The [Tor](https://awesome-privacy.xyz/networking/mix-networks/tor) Project provides a browser that encrypts and routes your traffic through multiple nodes, keeping\n      users safe from interception and tracking. The main drawbacks are speed and user experience.\n\n  - point: Disable JavaScript\n    priority: Advanced\n    details: >-\n      Many modern web apps are JavaScript-based, so disabling it will greatly decrease your browsing experience.\n      But if you really want to go all out, then it will really reduce your attack surface.\n  softwareLinks:\n    - title: Privacy Browsers\n      url: https://github.com/Lissy93/awesome-privacy#browsers\n    - title: Search Engines\n      utl: https://github.com/Lissy93/awesome-privacy#search-engines\n    - title: Browser Extensions\n      url: https://github.com/Lissy93/awesome-privacy#browser-extensions\n    - title: Browser & Bookmark Sync\n      url: https://github.com/Lissy93/awesome-privacy#browser-sync\n  color: emerald\n\n- title: Email\n  slug: email\n  description: Protecting the gateway to your online accounts\n  icon: email\n  intro: >-\n    Nearly 50 years since the first email was sent, it's still very much a big part\n    of our day-to-day life, and will continue to be for the near future. So considering\n    how much trust we put in them, it's surprising how fundamentally insecure this\n    infrastructure is. Email-related fraud\n    [is on the up](https://www.csoonline.com/article/3247670/email/email-security-in-2018.html),\n    and without taking basic measures you could be at risk.\n    \n\n    If a hacker gets access to your emails, it provides a gateway for your other\n    accounts to be compromised (through password resets), therefore email security\n    is paramount for your digital safety.\n\n\n    The big companies providing \"free\" email service, don't have a good reputation\n    for respecting users privacy: Gmail was caught giving\n    [third parties full access](https://www.wsj.com/articles/techs-dirty-secret-the-app-developers-sifting-through-your-gmail-1530544442)\n    to user emails and also [tracking all of your purchases](https://www.cnbc.com/2019/05/17/google-gmail-tracks-purchase-history-how-to-delete-it.html).\n    Yahoo was also caught scanning emails in real-time [for US surveillance agencies](http://news.trust.org/item/20161004170601-99f8c)\n    Advertisers [were granted access](https://thenextweb.com/insider/2018/08/29/both-yahoo-and-aol-are-scanning-customer-emails-to-attract-advertisers)\n    to Yahoo and AOL users messages to “identify and segment potential customers by picking up on contextual buying signals, and past purchases.”\n\n  checklist:\n  - point: Have more than one email address\n    priority: Essential\n    details: >-\n      Consider using a different email address for security-critical communications from trivial mail such\n      as newsletters. This compartmentalization could reduce the amount of damage caused by a data breach,\n      and also make it easier to recover a compromised account.\n\n  - point: Keep Email Address Private\n    priority: Essential\n    details: >-\n      Do not share your primary email publicly, as mail addresses are often the starting point for most\n      phishing attacks.\n\n  - point: Keep your Account Secure\n    priority: Essential\n    details: >-\n      Use a long and unique password, enable 2FA and be careful while logging in. Your email account\n      provides an easy entry point to all your other online accounts for an attacker.\n\n  - point: Disable Automatic Loading of Remote Content\n    priority: Essential\n    details: >-\n      Email messages can contain remote content such as images or stylesheets, often automatically loaded\n      from the server. You should disable this, as it exposes your IP address and device information, and\n      is often used for tracking. For more info, see [this article](https://www.theverge.com/2019/7/3/20680903/email-pixel-trackers-how-to-stop-images-automatic-download).\n\n  - point: Use Plaintext\n    priority: Optional\n    details: >-\n      There are two main types of emails on the internet: plaintext and HTML. The former is strongly preferred\n      for privacy & security as HTML messages often include identifiers in links and inline images, which can\n      collect usage and personal data. There's also numerous risks of remote code execution targeting the HTML\n      parser of your mail client, which cannot be exploited if you are using plaintext. For more info, as well\n      as setup instructions for your mail provider, see [UsePlaintext.email](https://useplaintext.email/).\n\n  - point: Don’t connect third-party apps to your email account\n    priority: Optional\n    details: >-\n      If you give a third-party app or plug-in full access to your inbox, they effectively have full unhindered\n      access to all your emails and their contents, which poses significant security and privacy risks.\n\n  - point: Don't Share Sensitive Data via Email\n    priority: Optional\n    details: >-\n      Emails are very easily intercepted. Furthermore, you can’t be sure of how secure your recipient's\n      environment is. Therefore, emails cannot be considered safe for exchanging confidential information,\n      unless it is encrypted.\n\n  - point: Consider Switching to a Secure Mail Provider\n    priority: Optional\n    details: >-\n      Secure and reputable email providers such as [Forward Email](https://awesome-privacy.xyz/communication/encrypted-email/forward-email),\n      [ProtonMail](https://awesome-privacy.xyz/communication/mail-forwarding/protonmail),\n      and [Tutanota](https://awesome-privacy.xyz/communication/encrypted-email/tuta) allow for end-to-end\n      encryption, full privacy as well as more security-focused features. Unlike typical email providers, your\n      mailbox cannot be read by anyone but you, since all messages are encrypted.\n\n  - point: Use Smart Key\n    priority: Advanced\n    details: >-\n      OpenPGP does not support Forward secrecy, which means if either your or the recipient's private key is\n      ever stolen, all previous messages encrypted with it will be exposed. Therefore, you should take great\n      care to keep your private keys safe. One method of doing so, is to use a USB Smart Key to sign or decrypt\n      messages, allowing you to do so without your private key leaving the USB device.\n\n  - point: Use Aliasing / Anonymous Forwarding\n    priority: Advanced\n    details: >-\n      Email aliasing allows messages to be sent to [anything]@my-domain.com and still land in your primary inbox.\n      Effectively allowing you to use a different, unique email address for each service you sign up for. This means\n      if you start receiving spam, you can block that alias and determine which company leaked your email address.\n\n  - point: Subaddressing\n    priority: Optional\n    details: >-\n      An alternative to aliasing is subaddressing, where anything after the `+` symbol is omitted during mail delivery.\n      This enables you to keep track of who shared/ leaked your email address, but unlike aliasing, it will not protect\n      against your real address being revealed.\n\n  - point: Use a Custom Domain\n    priority: Advanced\n    details: >-\n      Using a custom domain means that you are not dependent on the address assigned by your mail provider. So you can\n      easily switch providers in the future and do not need to worry about a service being discontinued.\n\n  - point: Sync with a client for backup\n    priority: Advanced\n    details: >-\n      To avoid losing temporary or permanent access to your emails during an unplanned event (such as an outage or\n      account lock), Thunderbird can sync/ backup messages from multiple accounts via IMAP and store locally on your\n      primary device.\n\n  - point: Be Careful with Mail Signatures\n    priority: Advanced\n    details: >-\n      You do not know how secure of an email environment the recipient of your message may have. There are several\n      extensions that automatically crawl messages, and create a detailed database of contact information based upon\n      email signatures.\n\n  - point: Be Careful with Auto-Replies\n    priority: Advanced\n    details: >-\n      Out-of-office automatic replies are very useful for informing people there will be a delay in replying, but all\n      too often people reveal too much information- which can be used in social engineering and targeted attacks.\n\n  - point: Choose the Right Mail Protocol\n    priority: Advanced\n    details: >-\n      Do not use outdated protocols (below IMAPv4 or POPv3), both have known vulnerabilities and out-dated security.\n\n  - point: Self-Hosting\n    priority: Advanced\n    details: >-\n      Self-hosting your own mail server is not recommended for non-advanced users, since correctly securing it is\n      critical yet requires strong networking knowledge.\n\n  - point: Always use TLS Ports\n    priority: Advanced\n    details: >-\n      There are SSL options for POP3, IMAP, and SMTP as standard TCP/IP ports. They are easy to use, and widely\n      supported so should always be used instead of plaintext email ports.\n\n  - point: DNS Availability\n    priority: Advanced\n    details: >-\n      For self-hosted mail servers, to prevent DNS problems impacting availability- use at least 2 MX records, with\n      secondary and tertiary MX records for redundancy when the primary MX record fails.\n\n  - point: Prevent DDoS and Brute Force Attacks\n    priority: Advanced\n    details: >-\n      For self-hosted mail servers (specifically SMTP), limit your total number of simultaneous connections, and maximum\n      connection rate to reduce the impact of attempted bot attacks.\n\n  - point: Maintain IP Blacklist\n    priority: Advanced\n    details: >-\n      For self-hosted mail servers, you can improve spam filters and harden security, through maintaining an up-to-date\n      local IP blacklist and a spam URI realtime block lists to filter out malicious hyperlinks.\n  color: teal\n  softwareLinks:\n    - title: Secure Email Providers\n      url: https://github.com/Lissy93/awesome-privacy#encrypted-email\n    - title: Mail Forwarding\n      url: https://github.com/Lissy93/awesome-privacy#anonymous-mail-forwarding\n    - title: Pre-Configured Mail Servers\n      url: https://github.com/Lissy93/awesome-privacy#pre-configured-mail-servers\n    - title: Email Clients\n      url: https://github.com/Lissy93/awesome-privacy#email-clients\n\n- title: Messaging\n  slug: messaging\n  description: Keeping your communications private and secure\n  icon: messaging\n  intro: ''\n  checklist:\n  - point: Only Use Fully End-to-End Encrypted Messengers\n    priority: Essential\n    details: >-\n      End-to-end encryption is a system of communication where messages are encrypted on your device and\n      not decrypted until they reach the intended recipient. This ensures that any actor who intercepts\n      traffic cannot read the message contents, nor can anybody with access to the central servers where\n      data is stored.\n\n  - point: Use only Open Source Messaging Platforms\n    priority: Essential\n    details: >-\n      If code is open source then it can be independently examined and audited by anyone qualified to do\n      so, to ensure that there are no backdoors, vulnerabilities, or other security issues.\n\n  - point: Use a \"Trustworthy\" Messaging Platform\n    priority: Essential\n    details: >-\n      When selecting an encrypted messaging app, ensure it's fully open source, stable, actively maintained,\n      and ideally backed by reputable developers.\n\n  - point: Check Security Settings\n    priority: Essential\n    details: >-\n      Enable security settings, including contact verification, security notifications, and encryption.\n      Disable optional non-security features such as read receipt, last online, and typing notification.\n\n  - point: Ensure your Recipients Environment is Secure\n    priority: Essential\n    details: >-\n      Your conversation can only be as secure as the weakest link. Often the easiest way to infiltrate a\n      communications channel is to target the individual or node with the least protection.\n\n  - point: Disable Cloud Services\n    priority: Essential\n    details: >-\n      Some mobile messaging apps offer a web or desktop companion. This not only increases attack surface but\n      it has been linked to several critical security issues, and should therefore be avoided, if possible.\n\n  - point: Secure Group Chats\n    priority: Essential\n    details: >-\n      The risk of compromise rises exponentially, the more participants are in a group, as the attack surface\n      increases. Periodically check that all participants are legitimate.\n\n  - point: Create a Safe Environment for Communication\n    priority: Essential\n    details: >-\n      There are several stages where your digital communications could be monitored or intercepted. This includes:\n      your or your participants' device, your ISP, national gateway or government logging, the messaging provider,\n      the servers.\n\n  - point: Agree on a Communication Plan\n    priority: Optional\n    details: >-\n      In certain situations, it may be worth making a communication plan. This should include primary and backup\n      methods of securely getting in hold with each other.\n\n  - point: Strip Meta-Data from Media\n    priority: Optional\n    details: >-\n      Metadata is \"Data about Data\" or additional information attached to a file or transaction. When you send a\n      photo, audio recording, video, or document you may be revealing more than you intended to.\n\n  - point: Defang URLs\n    priority: Optional\n    details: >-\n      Sending links via various services can unintentionally expose your personal information. This is because,\n      when a thumbnail or preview is generated- it happens on the client-side.\n\n  - point: Verify your Recipient\n    priority: Optional\n    details: >-\n      Always ensure you are talking to the intended recipient, and that they have not been compromised. One method\n      for doing so is to use an app which supports contact verification.\n\n  - point: Enable Ephemeral Messages\n    priority: Optional\n    details: >-\n      Self-destructing messages is a feature that causes your messages to automatically delete after a set amount\n      of time. This means that if your device is lost, stolen, or seized, an adversary will only have access to the\n      most recent communications.\n\n  - point: Avoid SMS\n    priority: Optional\n    details: >-\n      SMS may be convenient, but it's not secure. It is susceptible to threats such as interception, sim swapping,\n      manipulation, and malware.\n\n  - point: Watch out for Trackers\n    priority: Optional\n    details: >-\n      Be wary of messaging applications with trackers, as the detailed usage statistics they collect are often very\n      invasive, and can sometimes reveal your identity as well as personal information that you would otherwise not\n      intend to share.\n\n  - point: Consider Jurisdiction\n    priority: Advanced\n    details: >-\n      The jurisdictions where the organisation is based, and data is hosted should also be taken into account.\n\n  - point: Use an Anonymous Platform\n    priority: Advanced\n    details: >-\n      If you believe you may be targeted, you should opt for an anonymous messaging platform that does not require\n      a phone number, or any other personally identifiable information to sign up or use.\n\n  - point: Ensure Forward Secrecy is Supported\n    priority: Advanced\n    details: >-\n      Opt for a platform that implements forward secrecy. This is where your app generates a new encryption key\n      for every message.\n\n  - point: Consider a Decentralized Platform\n    priority: Advanced\n    details: >-\n      If all data flows through a central provider, you have to trust them with your data and meta-data. You cannot\n      verify that the system running is authentic without back doors.\n  softwareLinks:\n    - title: Secure Messaging Apps\n      url: https://github.com/Lissy93/awesome-privacy#encrypted-messaging\n    - title: P2P Messaging Platforms\n      url: https://github.com/Lissy93/awesome-privacy#p2p-messaging\n  color: cyan\n\n- title: Social Media\n  slug: social-media\n  description: Minimizing the risks associated with using online communities\n  icon: social\n  intro: >\n    Online communities have existed since the invention of the internet, and give\n    people around the world the opportunity to connect, communicate and share.\n    Although these networks are a great way to promote social interaction and\n    bring people together, that have a dark side - there are some serious\n    [Privacy Concerns with Social Networking Services](https://en.wikipedia.org/wiki/Privacy_concerns_with_social_networking_services),\n    and these social networking sites are owned by private corporations,\n    and that they make their money by collecting data about individuals and\n    selling that data on, often to third party advertisers.\n\n    Secure your account, lock down your privacy settings, but know that even\n    after doing so, all data intentionally and non-intentionally uploaded is\n    effectively public. If possible, avoid using conventional social media networks.\n  checklist:\n  - point: Secure your Account\n    priority: Essential\n    details: >-\n      Social media profiles get stolen or taken over all too often. To protect your account: use a unique\n      and strong password, and enable 2-factor authentication.\n\n  - point: Check Privacy Settings\n    priority: Essential\n    details: >-\n      Most social networks allow you to control your privacy settings. Ensure that you are comfortable with\n      what data you are currently exposing and to whom.\n\n  - point: Think of All Interactions as Public\n    priority: Essential\n    details: >-\n      There are still numerous methods of viewing a users 'private' content across many social networks.\n      Therefore, before uploading, posting or commenting on anything, think \"Would I mind if this was totally public?\"\n\n  - point: Think of All Interactions as Permanent\n    priority: Essential\n    details: >-\n      Pretty much every post, comment, photo etc is being continuously backed up by a myriad of third-party\n      services, who archive this data and make it indexable and publicly available almost forever.\n\n  - point: Don't Reveal too Much\n    priority: Essential\n    details: >-\n      Profile information creates a goldmine of info for hackers, the kind of data that helps them personalize\n      phishing scams. Avoid sharing too much detail (DoB, Hometown, School etc).\n\n  - point: Be Careful what you Upload\n    priority: Essential\n    details: >-\n      Status updates, comments, check-ins and media can unintentionally reveal a lot more than you intended\n      them to. This is especially relevant to photos and videos, which may show things in the background.\n\n  - point: Don't Share Email or Phone Number\n    priority: Essential\n    details: >-\n      Posting your real email address or mobile number, gives hackers, trolls and spammers more munition to\n      use against you, and can also allow separate aliases, profiles or data points to be connected.\n\n  - point: Don't Grant Unnecessary Permissions\n    priority: Essential\n    details: >-\n      By default many of the popular social networking apps will ask for permission to access your contacts,\n      call log, location, messaging history etc. If they don’t need this access, don’t grant it.\n\n  - point: Be Careful of 3rd-Party Integrations\n    priority: Essential\n    details: >-\n      Avoid signing up for accounts using a Social Network login, revoke access to social apps you no longer\n      use.\n\n  - point: Avoid Publishing Geo Data while still Onsite\n    priority: Essential\n    details: >-\n      If you plan to share any content that reveals a location, then wait until you have left that place.\n      This is particularly important when you are taking a trip, at a restaurant, campus, hotel/resort, public\n      building or airport.\n\n  - point: Remove metadata before uploading media\n    priority: Optional\n    details: >-\n      Most smartphones and some cameras automatically attach a comprehensive set of additional data (called\n      EXIF data) to each photograph. Remove this data before uploading.\n\n  - point: Implement Image Cloaking\n    priority: Advanced\n    details: >-\n      Tools like Fawkes can be used to very subtly, slightly change the structure of faces within photos in a\n      way that is imperceptible by humans, but will prevent facial recognition systems from being able to recognize\n      a given face.\n\n  - point: Consider Spoofing GPS in home vicinity\n    priority: Advanced\n    details: >-\n      Even if you yourself never use social media, there is always going to be others who are not as careful,\n      and could reveal your location.\n\n  - point: Consider False Information\n    priority: Advanced\n    details: >-\n      If you just want to read, and do not intend on posting too much- consider using an alias name, and false\n      contact details.\n\n  - point: Don’t have any social media accounts\n    priority: Advanced\n    details: >-\n      Social media is fundamentally un-private, so for maximum online security and privacy, avoid using any\n      mainstream social networks.\n\n  softwareLinks:\n    - title: Alternative Social Media\n      url: https://github.com/Lissy93/awesome-privacy#social-networks\n    - title: Alternative Video Platforms\n      url: https://github.com/Lissy93/awesome-privacy#video-platforms\n    - title: Alternative Blogging Platforms\n      url: https://github.com/Lissy93/awesome-privacy#blogging-platforms\n    - title: News Readers and Aggregation\n      url: https://github.com/Lissy93/awesome-privacy#news-readers-and-aggregation\n  color: blue\n\n- title: Networks\n  slug: networks\n  description: Safeguarding your network traffic\n  icon: network\n  intro: >\n    This section covers how you connect your devices to the internet securely,\n    including configuring your router and setting up a VPN.\n  checklist:\n  - point: Use a VPN\n    priority: Essential\n    details: >-\n      Use a reputable, paid-for VPN. This can help protect sites you visit from logging your real IP, reduce\n      the amount of data your ISP can collect, and increase protection on public WiFi.\n\n  - point: Change your Router Password\n    priority: Essential\n    details: >-\n      After getting a new router, change the password. Default router passwords are publicly available,\n      meaning anyone within proximity would be able to connect.\n\n  - point: Use WPA2, and a strong password\n    priority: Essential\n    details: >-\n      There are different authentication protocols for connecting to WiFi. Currently, the most secure options\n      are WPA2 and WPA3 (on newer routers).\n\n  - point: Keep router firmware up-to-date\n    priority: Essential\n    details: >-\n      Manufacturers release firmware updates that fix security vulnerabilities, implement new standards, and\n      sometimes add features or improve the performance of your router.\n\n  - point: Implement a Network-Wide VPN\n    priority: Optional\n    details: >-\n      If you configure your VPN on your router, firewall, or home server, then traffic from all devices will\n      be encrypted and routed through it, without needing individual VPN apps.\n\n  - point: Protect against DNS leaks\n    priority: Optional\n    details: >-\n      When using a VPN, it is extremely important to exclusively use the DNS server of your VPN provider or\n      secure service.\n\n  - point: Use a secure VPN Protocol\n    priority: Optional\n    details: >-\n      OpenVPN and WireGuard are open source, lightweight, and secure tunneling protocols. Avoid using PPTP\n      or SSTP.\n\n  - point: Secure DNS\n    priority: Optional\n    details: >-\n      Use DNS-over-HTTPS which performs DNS resolution via the HTTPS protocol, encrypting data between you\n      and your DNS resolver.\n\n  - point: Avoid the free router from your ISP\n    priority: Optional\n    details: >-\n      Typically they’re manufactured cheaply in bulk in China, with insecure propriety firmware that doesn't\n      receive regular security updates.\n\n  - point: Whitelist MAC Addresses\n    priority: Optional\n    details: >-\n      You can whitelist MAC addresses in your router settings, disallowing any unknown devices to immediately\n      connect to your network, even if they know your credentials.\n\n  - point: Change the Router’s Local IP Address\n    priority: Optional\n    details: >-\n      It is possible for a malicious script in your web browser to exploit a cross-site scripting vulnerability,\n      accessing known-vulnerable routers at their local IP address and tampering with them.\n\n  - point: Don't Reveal Personal Info in SSID\n    priority: Optional\n    details: >-\n      You should update your network name, choosing an SSID that does not identify you, include your flat\n      number/address, and does not specify the device brand/model.\n\n  - point: Opt-Out Router Listings\n    priority: Optional\n    details: >-\n      WiFi SSIDs are scanned, logged, and then published on various websites, which is a serious privacy\n      concern for some.\n\n  - point: Hide your SSID\n    priority: Optional\n    details: >-\n      Your router's Service Set Identifier is simply the network name. If it is not visible, it may receive\n      less abuse.\n\n  - point: Disable WPS\n    priority: Optional\n    details: >-\n      Wi-Fi Protected Setup provides an easier method to connect, without entering a long WiFi password, but\n      WPS introduces a series of major security issues.\n\n  - point: Disable UPnP\n    priority: Optional\n    details: >-\n      Universal Plug and Play allows applications to automatically forward a port on your router, but it has\n      a long history of serious security issues.\n\n  - point: Use a Guest Network for Guests\n    priority: Optional\n    details: >-\n      Do not grant access to your primary WiFi network to visitors, as it enables them to interact with other\n      devices on the network.\n\n  - point: Change your Router's Default IP\n    priority: Optional\n    details: >-\n      Modifying your router admin panel's default IP address will make it more difficult for malicious scripts\n      targeting local IP addresses.\n\n  - point: Kill unused processes and services on your router\n    priority: Optional\n    details: >-\n      Services like Telnet and SSH that provide command-line access to devices should never be exposed to the\n      internet and should also be disabled on the local network unless they're actually needed.\n\n  - point: Don't have Open Ports\n    priority: Optional\n    details: >-\n      Close any open ports on your router that are not needed. Open ports provide an easy entrance for hackers.\n\n  - point: Disable Unused Remote Access Protocols\n    priority: Optional\n    details: >-\n      When protocols such as PING, Telnet, SSH, UPnP, and HNAP etc are enabled, they allow your router to be\n      probed from anywhere in the world.\n\n  - point: Disable Cloud-Based Management\n    priority: Optional\n    details: >-\n      You should treat your router's admin panel with the utmost care, as considerable damage can be caused\n      if an attacker is able to gain access.\n\n  - point: Manage Range Correctly\n    priority: Optional\n    details: >-\n      It's common to want to pump your router's range to the max, but if you reside in a smaller flat, your\n      attack surface is increased when your WiFi network can be picked up across the street.\n\n  - point: Route all traffic through [Tor](https://awesome-privacy.xyz/networking/mix-networks/tor)\n    priority: Advanced\n    details: >-\n      VPNs have their weaknesses. For increased security, route all your internet traffic through the [Tor](https://awesome-privacy.xyz/networking/mix-networks/tor)\n      network.\n\n  - point: Disable WiFi on all Devices\n    priority: Advanced\n    details: >-\n      Connecting to even a secure WiFi network increases your attack surface. Disabling your home WiFi and\n      connect each device via Ethernet.\n  color: violet\n  softwareLinks:\n  - title: Virtual Private Networks\n    url: https://github.com/Lissy93/awesome-privacy#virtual-private-networks\n  - title: Mix Networks\n    url: https://github.com/Lissy93/awesome-privacy#mix-networks\n  - title: Router Firmware\n    url: https://github.com/Lissy93/awesome-privacy#router-firmware\n  - title: Open Source Proxies\n    url: https://github.com/Lissy93/awesome-privacy#proxies\n  - title: DNS Providers\n    url: https://github.com/Lissy93/awesome-privacy#dns\n  - title: Firewalls\n    url: https://github.com/Lissy93/awesome-privacy#firewalls\n  - title: Network Analysis Tools\n    url: https://github.com/Lissy93/awesome-privacy#network-analysis\n  - title: Self-Hosted Network Security Tools\n    url: https://github.com/Lissy93/awesome-privacy#self-hosted-network-security\n\n- title: Mobile Devices\n  slug: mobile-devices\n  description: Reduce invasive tracking for cells, smartphones and tablets\n  icon: mobile\n  intro: >\n    Smart phones have revolutionized so many aspects of life and brought the world\n    to our fingertips. For many of us, smart phones are our primary means of communication,\n    entertainment and access to knowledge. But while they've brought convenience\n    to whole new level, there's some ugly things going on behind the screen.\n\n    Geo-tracking is used to trace our every move, and we have little control over\n    who has this data- your phone is even able to\n    [track your location without GPS](https://gizmodo.com/how-to-track-a-cellphone-without-gps-or-consent-1821125371).\n    Over the years numerous reports that surfaced, outlining ways in which your\n    phone's [mic can eavesdrop](https://www.independent.co.uk/life-style/gadgets-and-tech/news/smartphone-apps-listening-privacy-alphonso-shazam-advertising-pool-3d-honey-quest-a8139451.html),\n    and the [camera can watch you](https://www.businessinsider.com/hackers-governments-smartphone-iphone-camera-wikileaks-cybersecurity-hack-privacy-webcam-2017-6)- all without your knowledge or consent.\n    And then there's the malicious apps, lack of security patches and potential/ likely backdoors.\n\n    Using a smart phone generates a lot of data about you- from information you\n    intentionally share, to data silently generated from your actions.\n    It can be scary to see what Google, Microsoft, Apple and Facebook know about\n    us- sometimes they know more than our closest family. It's hard to comprehend\n    what your data will reveal, especially in conjunction with other data.\n\n    This data is used for\n    [far more than just advertising](https://internethealthreport.org/2018/the-good-the-bad-and-the-ugly-sides-of-data-tracking/) -\n    more often it's used to rate people for finance, insurance and employment.\n    Targeted ads can even be used for fine-grained surveillance (see [ADINT](https://adint.cs.washington.edu))\n\n    More of us are concerned about how\n    [governments use collect and use our smart phone data](https://www.statista.com/statistics/373916/global-opinion-online-monitoring-government/),\n    and rightly so, federal agencies often\n    [request our data from Google](https://www.statista.com/statistics/273501/global-data-requests-from-google-by-federal-agencies-and-governments/),\n    [Facebook](https://www.statista.com/statistics/287845/global-data-requests-from-facebook-by-federal-agencies-and-governments/),\n    Apple, Microsoft, Amazon, and other tech companies. Sometimes requests are\n    made in bulk, returning detailed information on everybody within a certain geo-fence,\n    [often for innocent people](https://www.nytimes.com/interactive/2019/04/13/us/google-location-tracking-police.html).\n    And this doesn't include all of the internet traffic that intelligence agencies around the world have unhindered access to.\n  checklist:\n  - point: Encrypt your Device\n    priority: Essential\n    details: >-\n      In order to keep your data safe from physical access, use file encryption. This will mean if your\n      device is lost or stolen, no one will have access to your data.\n\n  - point: Turn off connectivity features that aren’t being used\n    priority: Essential\n    details: >-\n      When you're not using WiFi, Bluetooth, NFC etc, turn those features off. There are several common threats\n      that utilise these features.\n\n  - point: Keep app count to a minimum\n    priority: Essential\n    details: >-\n      Uninstall apps that you don’t need or use regularly. As apps often run in the background, slowing your\n      device down, but also collecting data.\n\n  - point: App Permissions\n    priority: Essential\n    details: >-\n      Don’t grant apps permissions that they don’t need. For Android, [Bouncer](https://awesome-privacy.xyz/security-tools/mobile-apps/bouncer) is an app that allows you to grant\n      temporary/ 1-off permissions.\n\n  - point: Only install Apps from official source\n    priority: Essential\n    details: >-\n      Applications on Apple App Store and Google Play Store are scanned and cryptographically signed, making them\n      less likely to be malicious.\n\n  - point: Be Careful of Phone Charging Threats\n    priority: Optional\n    details: >-\n      Juice Jacking is when hackers use public charging stations to install malware on your smartphone or tablet\n      through a compromised USB port.\n\n  - point: Set up a mobile carrier PIN\n    priority: Essential\n    details: >-\n      SIM hijacking is when a hacker is able to get your mobile number transferred to their sim. The easiest way\n      to protect against this is to set up a PIN through your mobile provider.\n\n  - point: Opt-out of Caller ID Listings\n    priority: Optional\n    details: >-\n      To keep your details private, you can unlist your number from caller ID apps like TrueCaller, CallApp, SyncMe,\n      and Hiya.\n\n  - point: Use Offline Maps\n    priority: Optional\n    details: >-\n      Consider using an offline maps app, such as OsmAnd or Organic Maps, to reduce data leaks from map apps.\n\n  - point: Opt-out of personalized ads\n    priority: Optional\n    details: >-\n      You can slightly reduce the amount of data collected by opting-out of seeing personalized ads.\n\n  - point: Erase after too many login attempts\n    priority: Optional\n    details: >-\n      To protect against an attacker brute forcing your pin, set your device to erase after too many failed\n      login attempts.\n\n  - point: Monitor Trackers\n    priority: Optional\n    details: >-\n      [εxodus](https://awesome-privacy.xyz/security-tools/online-tools/εxodus) is a great service which\n      lets you search for any app and see which trackers are embedded in it.\n\n  - point: Use a Mobile Firewall\n    priority: Optional\n    details: >-\n      To prevent applications from leaking privacy-sensitive data, you can install a firewall app.\n\n  - point: Reduce Background Activity\n    priority: Optional\n    details: >-\n      For Android, SuperFreeze makes it possible to entirely freeze all background activities on a per-app basis.\n\n  - point: Sandbox Mobile Apps\n    priority: Optional\n    details: >-\n      Prevent permission-hungry apps from accessing your private data with [Island](https://awesome-privacy.xyz/security-tools/mobile-apps/island), a sandbox environment.\n\n  - point: Tor Traffic\n    priority: Advanced\n    details: >-\n      [Orbot](https://awesome-privacy.xyz/security-tools/mobile-apps/orbot) provides\n      a system-wide Tor connection, which will help protect you from surveillance and public WiFi threats.\n\n  - point: Avoid Custom Virtual Keyboards\n    priority: Optional\n    details: >-\n      It is recommended to stick with your device's stock keyboard. If you choose to use a third-party keyboard app,\n      ensure it is reputable.\n\n  - point: Restart Device Regularly\n    priority: Optional\n    details: >-\n      Restarting your phone at least once a week will clear the app state cached in memory and may run more smoothly\n      after a restart.\n\n  - point: Avoid SMS\n    priority: Optional\n    details: >-\n      SMS should not be used to receive 2FA codes or for communication, instead use an encrypted messaging app,\n      such as [Signal](https://awesome-privacy.xyz/communication/encrypted-messaging/signal).\n\n  - point: Keep your Number Private\n    priority: Optional\n    details: >-\n      [MySudo](https://awesome-privacy.xyz/finance/virtual-credit-cards/mysudo) allows\n      you to create and use virtual phone numbers for different people or groups. This is great for\n      compartmentalisation.\n\n  - point: Watch out for Stalkerware\n    priority: Optional\n    details: >-\n      Stalkerware is malware that is installed directly onto your device by someone you know.\n      The best way to get rid of it is through a factory reset.\n\n  - point: Favor the Browser, over Dedicated App\n    priority: Optional\n    details: >-\n      Where possible, consider using a secure browser to access sites,\n      rather than installing dedicated applications.\n\n  - point: Consider running a custom ROM (Android)\n    priority: Advanced\n    details: >-\n      If you're concerned about your device manufacturer collecting too much\n      personal information, consider a privacy-focused custom ROM.\n  color: fuchsia\n  softwareLinks:\n  - title: Mobile Apps, for Security + Privacy\n    url: https://github.com/Lissy93/awesome-privacy#mobile-apps\n  - title: Encrypted Messaging\n    url: https://github.com/Lissy93/awesome-privacy#encrypted-messaging\n  - title: Mobile Operation Systems\n    url: https://github.com/Lissy93/awesome-privacy#mobile-operating-systems\n\n- title: Personal Computers\n  slug: personal-computers\n  description: Securing your PC's operating system, data & activity\n  icon: computer\n  intro: >\n    Although Windows and OS X are easy to use and convenient, they both are far from secure.\n    Your OS provides the interface between hardware and your applications, so if\n    compromised can have detrimental effects.\n  checklist:\n  - point: Keep your System up-to-date\n    priority: Essential\n    details: >-\n      System updates contain fixes/patches for security issues, improve performance, and sometimes add new\n      features. Install new updates when prompted.\n\n  - point: Encrypt your Device\n    priority: Essential\n    details: >-\n      Use BitLocker for Windows, FileVault on MacOS, or LUKS on Linux, to enable full disk encryption. This\n      prevents unauthorized access if your computer is lost or stolen.\n\n  - point: Backup Important Data\n    priority: Essential\n    details: >-\n      Maintaining encrypted backups prevents loss due to ransomware, theft, or damage. Consider using\n      [Cryptomator](https://awesome-privacy.xyz/security-tools/mobile-apps/cryptomator)\n      for cloud files or [VeraCrypt](https://awesome-privacy.xyz/essentials/file-encryption/veracrypt) for USB drives.\n\n  - point: Be Careful Plugging USB Devices into your Computer\n    priority: Essential\n    details: >-\n      USB devices can pose serious threats. Consider making a USB sanitizer with CIRCLean to safely check USB\n      devices.\n\n  - point: Activate Screen-Lock when Idle\n    priority: Essential\n    details: >-\n      Lock your computer when away and set it to require a password on resume from screensaver or sleep to\n      prevent unauthorized access.\n\n  - point: Disable Cortana or Siri\n    priority: Essential\n    details: >-\n      Voice-controlled assistants can have privacy implications due to data sent back for processing. Disable\n      or limit their listening capabilities.\n\n  - point: Review your Installed Apps\n    priority: Essential\n    details: >-\n      Keep installed applications to a minimum to reduce exposure to vulnerabilities and regularly clear\n      application caches.\n\n  - point: Manage Permissions\n    priority: Essential\n    details: >-\n      Control which apps have access to your location, camera, microphone, contacts, and other sensitive\n      information.\n\n  - point: Disallow Usage Data from being sent to the Cloud\n    priority: Essential\n    details: >-\n      Limit the amount of usage information or feedback sent to the cloud to protect your privacy.\n\n  - point: Avoid Quick Unlock\n    priority: Essential\n    details: >-\n      Use a strong password instead of biometrics or short PINs for unlocking your computer to enhance\n      security.\n\n  - point: Power Off Computer, instead of Standby\n    priority: Essential\n    details: >-\n      Shut down your device when not in use, especially if your disk is encrypted, to keep data secure.\n\n  - point: Don't link your PC with your Microsoft or Apple Account\n    priority: Optional\n    details: >-\n      Use a local account only to prevent data syncing and exposure. Avoid using sync services that compromise\n      privacy.\n\n  - point: Check which Sharing Services are Enabled\n    priority: Optional\n    details: >-\n      Disable network sharing features you are not using to close gateways to common threats.\n\n  - point: Don't use Root/Admin Account for Non-Admin Tasks\n    priority: Optional\n    details: >-\n      Use an unprivileged user account for daily tasks and only elevate permissions for administrative changes\n      to mitigate vulnerabilities.\n\n  - point: Block Webcam + Microphone\n    priority: Optional\n    details: >-\n      Cover your webcam when not in use and consider blocking unauthorized audio recording to protect privacy.\n\n  - point: Use a Privacy Filter\n    priority: Optional\n    details: >-\n      Use a screen privacy filter in public spaces to prevent shoulder surfing and protect sensitive\n      information.\n\n  - point: Physically Secure Device\n    priority: Optional\n    details: >-\n      Use a Kensington Lock to secure your laptop in public spaces and consider port locks to prevent\n      unauthorized physical access.\n\n  - point: Don't Charge Devices from your PC\n    priority: Optional\n    details: >-\n      Use a power bank or AC wall charger instead of your PC to avoid security risks associated with USB\n      connections.\n\n  - point: Randomize your hardware address on Wi-Fi\n    priority: Optional\n    details: >-\n      Modify or randomize your MAC address to protect against tracking across different WiFi networks.\n\n  - point: Use a Firewall\n    priority: Optional\n    details: >-\n      Install a firewall app to monitor and block unwanted internet access by certain applications, protecting\n      against remote access attacks and privacy breaches.\n\n  - point: Protect Against Software Keyloggers\n    priority: Optional\n    details: >-\n      Use key stroke encryption tools to protect against software keyloggers recording your keystrokes.\n\n  - point: Check Keyboard Connection\n    priority: Optional\n    details: >-\n      Be vigilant for hardware keyloggers when using public or unfamiliar computers by checking keyboard\n      connections.\n\n  - point: Prevent Keystroke Injection Attacks\n    priority: Optional\n    details: >-\n      Lock your PC when away and consider using USBGuard or similar tools to protect against keystroke\n      injection attacks.\n\n  - point: Don't use commercial \"Free\" Anti-Virus\n    priority: Optional\n    details: >-\n      Rely on built-in security tools and avoid free anti-virus applications due to their potential for\n      privacy invasion and data collection.\n\n  - point: Periodically check for Rootkits\n    priority: Advanced\n    details: >-\n      Regularly check for rootkits to detect and mitigate full system control threats using tools like\n      [chkrootkit](https://awesome-privacy.xyz/operating-systems/linux-defenses/chkrootkit).\n\n  - point: BIOS Boot Password\n    priority: Advanced\n    details: >-\n      Enable a BIOS or UEFI password to add an additional security layer during boot-up, though be aware of\n      its limitations.\n\n  - point: Use a Security-Focused Operating System\n    priority: Advanced\n    details: >-\n      Consider switching to Linux or a security-focused distro like QubeOS or\n      [Tails](https://awesome-privacy.xyz/operating-systems/desktop-operating-systems/tails)\n      for enhanced privacy and\n      security.\n\n  - point: Make Use of VMs\n    priority: Advanced\n    details: >-\n      Use virtual machines for risky activities or testing suspicious software to isolate potential threats\n      from your primary system.\n\n  - point: Compartmentalize\n    priority: Advanced\n    details: >-\n      Isolate different programs and data sources from one another as much as possible to limit the extent of\n      potential breaches.\n\n  - point: Disable Undesired Features (Windows)\n    priority: Advanced\n    details: >-\n      Disable unnecessary Windows \"features\" and services that run in the background to reduce data collection\n      and resource use.\n\n  - point: Secure Boot\n    priority: Advanced\n    details: >-\n      Ensure that Secure Boot is enabled to prevent malware from replacing your boot loader and other critical\n      software.\n\n  - point: Secure SSH Access\n    priority: Advanced\n    details: >-\n      Take steps to protect SSH access from attacks by changing the default port, using SSH keys, and\n      configuring firewalls.\n\n  - point: Close Un-used Open Ports\n    priority: Advanced\n    details: >-\n      Turn off services listening on external ports that are not needed to protect against remote exploits and\n      improve security.\n\n  - point: Implement Mandatory Access Control\n    priority: Advanced\n    details: >-\n      Restrict privileged access to limit the damage that can be done if a system is compromised.\n\n  - point: Use Canary Tokens\n    priority: Advanced\n    details: >-\n      Deploy canary tokens to detect unauthorized access to your files or emails faster and gather\n      information about the intruder.\n  color: pink\n  softwareLinks:\n  - title: Secure Operating Systems\n    url: https://github.com/Lissy93/awesome-privacy#desktop-operating-systems\n  - title: Linux Defenses\n    url: https://github.com/Lissy93/awesome-privacy#linux-defences\n  - title: Windows Defenses\n    url: https://github.com/Lissy93/awesome-privacy#windows-defences\n  - title: Mac OS Defenses\n    url: https://github.com/Lissy93/awesome-privacy#mac-os-defences\n  - title: Anti-Malware\n    url: https://github.com/Lissy93/awesome-privacy#anti-malware\n  - title: Firewalls\n    url: https://github.com/Lissy93/awesome-privacy#firewalls-1\n  - title: File Encryption\n    url: https://github.com/Lissy93/awesome-privacy#file-encryption\n\n- title: Smart Home\n  slug: smart-home\n  description: Using IoT devices without compromising your privacy\n  icon: home\n  intro: >-\n    Home assistants (such as Google Home, Alexa and Siri) and other internet connected\n    devices collect large amounts of personal data (including voice samples, location data,\n    home details and logs of all interactions). Since you have limited control on what is\n    being collected, how it's stored, and what it will be used for, this makes it hard to\n    recommend any consumer smart-home products to anyone who cares about privacy and security.\n\n    Security vs Privacy: There are many smart devices on the market that claim to increase\n    the security of your home while being easy and convenient to use (Such as Smart Burglar\n    Alarms, Internet Security Cameras, Smart Locks and Remote access Doorbells to name a few).\n    These devices may appear to make security easier, but there is a trade-off in terms of\n    privacy: as they collect large amounts of personal data, and leave you without control\n    over how this is stored or used. The security of these devices is also questionable,\n    since many of them can be (and are being) hacked, allowing an intruder to bypass\n    detection with minimum effort.\n\n    The most privacy-respecting option, would be to not use \"smart\" internet-connected\n    devices in your home, and not to rely on a security device that requires an internet\n    connection. But if you do, it is important to fully understand the risks of any given\n    product, before buying it. Then adjust settings to increase privacy and security.\n    The following checklist will help mitigate the risks associated with\n    internet-connected home devices.\n  checklist:\n  - point: Rename devices to not specify brand/model\n    priority: Essential\n    details: >-\n      Change default device names to something generic to prevent targeted attacks by obscuring brand or model information.\n\n  - point: Disable microphone and camera when not in use\n    priority: Essential\n    details: >-\n      Use hardware switches to turn off microphones and cameras on smart devices to protect against accidental recordings or targeted access.\n\n  - point: Understand what data is collected, stored and transmitted\n    priority: Essential\n    details: >-\n      Research and ensure comfort with the data handling practices of smart home devices before purchase, avoiding devices that share data with third parties.\n\n  - point: Set privacy settings, and opt out of sharing data with third parties\n    priority: Essential\n    details: >-\n      Adjust app settings for strictest privacy controls and opt-out of data sharing with third parties wherever possible.\n\n  - point: Don't link your smart home devices to your real identity\n    priority: Essential\n    details: >-\n      Use anonymous usernames and passwords, avoiding sign-up/log-in via social media or other third-party services to maintain privacy.\n\n  - point: Keep firmware up-to-date\n    priority: Essential\n    details: >-\n      Regularly update smart device firmware to apply security patches and enhancements.\n\n  - point: Protect your Network\n    priority: Essential\n    details: >-\n      Secure your home WiFi and network to prevent unauthorized access to smart devices.\n\n  - point: Be wary of wearables\n    priority: Optional\n    details: >-\n      Consider the extensive data collection capabilities of wearable devices and their implications for privacy.\n\n  - point: Don't connect your home's critical infrastructure to the Internet\n    priority: Optional\n    details: >-\n      Evaluate the risks of internet-connected thermostats, alarms, and detectors due to potential remote access by hackers.\n\n  - point: Mitigate Alexa/ Google Home Risks\n    priority: Optional\n    details: >-\n      Consider privacy-focused alternatives like\n      [Mycroft](https://awesome-privacy.xyz/smart-home-and-iot/voice-assistants/mycroft) or use\n      Project Alias to prevent idle listening by voice-activated assistants.\n\n  - point: Monitor your home network closely\n    priority: Optional\n    details: >-\n      Use tools like FingBox or router features to monitor for unusual network activity.\n\n  - point: Deny Internet access where possible\n    priority: Advanced\n    details: >-\n      Use firewalls to block internet access for devices that don't need it, limiting operation to local network use.\n\n  - point: Assess risks\n    priority: Advanced\n    details: >-\n      Consider the privacy implications for all household members and adjust device settings for security and privacy, such as disabling devices at certain times.\n  color: red\n  softwareLinks:\n  - title: Home Automation\n    url: https://github.com/Lissy93/awesome-privacy#home-automation\n  - title: AI Voice Assistants\n    url: https://github.com/Lissy93/awesome-privacy#ai-voice-assistants\n\n- title: Personal Finance\n  slug: personal-finance\n  description: Protecting your funds, financial accounts and transactions\n  icon: finance\n  intro: >-\n    Credit card fraud is the most common form of identity theft (with [133,015 reports in the\n    US in 2017 alone](https://www.experian.com/blogs/ask-experian/identity-theft-statistics/)),\n    and a total loss of $905 million, which was a 26% increase from the previous year.\n    The with a median amount lost per person was $429 in 2017.\n    It's more important than ever to take basic steps to protect yourself from falling victim\n\n    Note about credit cards: Credit cards have technological methods in place to\n    detect and stop some fraudulent transactions. Major payment processors implement\n    this, by mining huge amounts of data from their card holders, in order to know\n    a great deal about each persons spending habits. This data is used to identify\n    fraud, but is also sold onto other data brokers. Credit cards are therefore good\n    for security, but terrible for data privacy.\n  checklist:\n  - point: Sign up for Fraud Alerts and Credit Monitoring\n    priority: Essential\n    details: >-\n      Enable fraud alerts and credit monitoring through Experian, TransUnion, or Equifax to be alerted of suspicious activity.\n\n  - point: Apply a Credit Freeze\n    priority: Essential\n    details: >-\n      Prevent unauthorized credit inquiries by freezing your credit through Experian, TransUnion, and Equifax.\n\n  - point: Use Virtual Cards\n    priority: Optional\n    details: >-\n      Utilize virtual card numbers for online transactions to protect your real banking details. Services like [Privacy.com](https://awesome-privacy.xyz/finance/virtual-credit-cards/privacy.com) and [MySudo](https://awesome-privacy.xyz/finance/virtual-credit-cards/mysudo) offer such features.\n\n  - point: Use Cash for Local Transactions\n    priority: Optional\n    details: >-\n      Pay with [Cash](https://awesome-privacy.xyz/finance/other-payment-methods/cash) for local and everyday purchases to avoid financial profiling by institutions.\n\n  - point: Use Cryptocurrency for Online Transactions\n    priority: Optional\n    details: >-\n      Opt for privacy-focused cryptocurrencies like\n      [Monero](https://awesome-privacy.xyz/finance/cryptocurrencies/monero) for\n      online transactions to maintain anonymity. Use cryptocurrencies wisely to ensure privacy.\n\n  - point: Store Crypto Securely\n    priority: Advanced\n    details: >-\n      Securely store cryptocurrencies using offline wallet generation, hardware wallets\n      like [Trezor](https://awesome-privacy.xyz/finance/crypto-wallets/trezor) or\n      [ColdCard](https://awesome-privacy.xyz/finance/crypto-wallets/coldcard), or\n      consider long-term storage solutions like\n      [CryptoSteel](https://awesome-privacy.xyz/finance/crypto-wallets/cryptosteel).\n\n  - point: Buy Crypto Anonymously\n    priority: Advanced\n    details: >-\n      Purchase cryptocurrencies without linking to your identity through services\n      like [LocalBitcoins](https://awesome-privacy.xyz/finance/crypto-exchanges/localbitcoins),\n      [Bisq](https://awesome-privacy.xyz/finance/crypto-exchanges/bisq), or Bitcoin ATMs.\n\n  - point: Tumble/ Mix Coins\n    priority: Advanced\n    details: >-\n      Use a bitcoin mixer or CoinJoin before converting Bitcoin to currency to obscure transaction trails.\n\n  - point: Use an Alias Details for Online Shopping\n    priority: Advanced\n    details: >-\n      For online purchases, consider using alias details, forwarding email addresses, VOIP numbers, and secure delivery methods to protect your identity.\n\n  - point: Use alternate delivery address\n    priority: Advanced\n    details: >-\n      Opt for deliveries to non-personal addresses such as PO Boxes, forwarding addresses, or local pickup locations to avoid linking purchases directly to you.\n  color: purple\n  softwareLinks:\n  - title: Virtual Credit Cards\n    url: https://github.com/Lissy93/awesome-privacy#virtual-credit-cards\n  - title: Cryptocurrencies\n    url: https://github.com/Lissy93/awesome-privacy#cryptocurrencies\n  - title: Crypto Wallets\n    url: https://github.com/Lissy93/awesome-privacy#crypto-wallets\n  - title: Crypto Exchanges\n    url: https://github.com/Lissy93/awesome-privacy#crypto-exchanges\n  - title: Other Payment Methods\n    url: https://github.com/Lissy93/awesome-privacy#other-payment-methods\n  - title: Budgeting Tools\n    url: https://github.com/Lissy93/awesome-privacy#budgeting-tools\n\n- title: Human Aspect\n  slug: human-aspect\n  description: Avoiding social engineering security risks\n  icon: human\n  intro: >-\n    Many data breaches, hacks and attacks are caused by human error.\n    The following list contains steps you should take, to reduce the risk of this\n    happening to you. Many of them are common sense, but it's worth takin note of.\n\n  checklist:\n  - point: Verify Recipients\n    priority: Essential\n    details: >-\n      Emails can be easily spoofed. Verify the sender's authenticity, especially for sensitive actions, and prefer entering URLs manually rather than clicking links in emails.\n\n  - point: Don't Trust Your Popup Notifications\n    priority: Essential\n    details: >-\n      Fake pop-ups can be deployed by malicious actors. Always check the URL before entering any information on a popup.\n\n  - point: Never Leave Device Unattended\n    priority: Essential\n    details: >-\n      Unattended devices can be compromised even with strong passwords. Use encryption and remote erase features like Find My Phone for lost devices.\n\n  - point: Prevent Camfecting\n    priority: Essential\n    details: >-\n      Protect against camfecting by using webcam covers and microphone blockers. Mute home assistants when not in use or discussing sensitive matters.\n\n  - point: Stay protected from shoulder surfers\n    priority: Essential\n    details: >-\n      Use privacy screens on laptops and mobiles to prevent others from reading your screen in public spaces.\n\n  - point: Educate yourself about phishing attacks\n    priority: Essential\n    details: >-\n      Be cautious of phishing attempts. Verify URLs, context of received messages, and employ good security practices like using 2FA and not reusing passwords.\n\n  - point: Watch out for Stalkerware\n    priority: Essential\n    details: >-\n      Be aware of stalkerware installed by acquaintances for spying. Look out for signs like unusual battery usage and perform factory resets if suspected.\n\n  - point: Install Reputable Software from Trusted Sources\n    priority: Essential\n    details: >-\n      Only download software from legitimate sources and check files with tools\n      like [Virus Total](https://awesome-privacy.xyz/security-tools/online-tools/virus-total) before installation.\n\n  - point: Store personal data securely\n    priority: Essential\n    details: >-\n      Ensure all personal data on devices or in the cloud is encrypted to protect against unauthorized access.\n\n  - point: Obscure Personal Details from Documents\n    priority: Essential\n    details: >-\n      When sharing documents, obscure personal details with opaque rectangles to prevent information leakage.\n\n  - point: Do not assume a site is secure, just because it is `HTTPS`\n    priority: Essential\n    details: >-\n      HTTPS does not guarantee a website's legitimacy. Verify URLs and exercise caution with personal data.\n\n  - point: Use Virtual Cards when paying online\n    priority: Optional\n    details: >-\n      Use virtual cards for online payments to protect your banking details and limit transaction risks.\n\n  - point: Review application permissions\n    priority: Optional\n    details: >-\n      Regularly review and manage app permissions to ensure no unnecessary access to sensitive device features.\n\n  - point: Opt-out of public lists\n    priority: Optional\n    details: >-\n      Remove yourself from public databases and marketing lists to reduce unwanted contacts and potential risks.\n\n  - point: Never Provide Additional PII When Opting-Out\n    priority: Optional\n    details: >-\n      Do not provide additional personal information when opting out of data services to avoid further data collection.\n\n  - point: Opt-out of data sharing\n    priority: Optional\n    details: >-\n      Many apps and services default to data sharing settings. Opt out to protect your data from being shared with third parties.\n\n  - point: Review and update social media privacy\n    priority: Optional\n    details: >-\n      Regularly check and update your social media settings due to frequent terms updates that may affect your privacy settings.\n\n  - point: Compartmentalize\n    priority: Advanced\n    details: >-\n      Keep different areas of digital activity separate to limit data exposure in case of a breach.\n\n  - point: WhoIs Privacy Guard\n    priority: Advanced\n    details: >-\n      Use WhoIs Privacy Guard for domain registrations to protect your personal information from public searches.\n\n  - point: Use a forwarding address\n    priority: Advanced\n    details: >-\n      Use a PO Box or forwarding address for mail to prevent companies from knowing your real address, adding a layer of privacy protection.\n\n  - point: Use anonymous payment methods\n    priority: Advanced\n    details: >-\n      Opt for anonymous payment methods like cryptocurrencies to avoid entering identifiable information online.\n\n  color: indigo\n\n- title: Physical Security\n  slug: physical-security\n  description: Taking measures to prevent IRL security incidents\n  icon: physical\n  intro: >-\n    Public records often include sensitive personal data (full name, date of birth,\n    phone number, email, address, ethnicity etc), and are gathered from a range of\n    sources (census records, birth/ death/ marriage certificates, voter registrants,\n    marketing information, customer databases, motor vehicle records, professional/\n    business licenses and all court files in full detail). This sensitive personal\n    information is\n    [easy and legal to access](https://www.consumerreports.org/consumerist/its-creepy-but-not-illegal-for-this-website-to-provide-all-your-public-info-to-anyone/),\n    which raises some [serious privacy concerns](https://privacyrights.org/resources/public-records-internet-privacy-dilemma)\n    (identity theft, personal safety risks/ stalkers, destruction of reputations, dossier society)\n\n\n    CCTV is one of the major ways that the corporations, individuals and the government\n    tracks your movements. In London, UK the average person is caught on camera about\n    500 times per day. This network is continuing to grow, and in many cities around\n    the world, facial recognition is being rolled out, meaning the state can know\n    the identity of residents on the footage in real-time.\n\n    Strong authentication, encrypted devices, patched software and anonymous web\n    browsing may be of little use if someone is able to physically compromise you,\n    your devices and your data. This section outlines some basic methods for physical security\n\n  checklist:\n  - point: Destroy Sensitive Documents\n    priority: Essential\n    details: |\n      Shred or redact sensitive documents before disposal to protect against\n      identity theft and maintain confidentiality.\n\n  - point: Opt-Out of Public Records\n    priority: Essential\n    details: |\n      Contact people search websites to opt-out from listings that show persona\n      information, using guides like Michael Bazzell's Personal Data Removal Workbook.\n\n  - point: Watermark Documents\n    priority: Essential\n    details: |\n      Add a watermark with the recipient's name and date to digital copies of\n      personal documents to trace the source of a breach.\n\n  - point: Don't Reveal Info on Inbound Calls\n    priority: Essential\n    details: |\n      Only share personal data on calls you initiate and verify the recipient's phone number.\n\n  - point: Stay Alert\n    priority: Essential\n    details: Be aware of your surroundings and assess potential risks in new environments.\n\n  - point: Secure Perimeter\n    priority: Essential\n    details: Ensure physical security of locations storing personal info devices, minimizing external access and using intrusion detection systems.\n\n  - point: Physically Secure Devices\n    priority: Essential\n    details: Use physical security measures like Kensington locks, webcam covers, and privacy screens for devices.\n\n  - point: Keep Devices Out of Direct Sight\n    priority: Essential\n    details: Prevent devices from being visible from outside to mitigate risks from lasers and theft.\n\n  - point: Protect your PIN\n    priority: Essential\n    details: Shield your PIN entry from onlookers and cameras, and clean touchscreens after use.\n\n  - point: Check for Skimmers\n    priority: Essential\n    details: Inspect ATMs and public devices for skimming devices and tampering signs before use.\n\n  - point: Protect your Home Address\n    priority: Optional\n    details: Use alternative locations, forwarding addresses, and anonymous payment methods to protect your home address.\n\n  - point: Use a PIN, Not Biometrics\n    priority: Advanced\n    details: Prefer PINs over biometrics for device security in situations where legal coercion to unlock devices may occur.\n\n  - point: Reduce exposure to CCTV\n    priority: Advanced\n    details: Wear disguises and choose routes with fewer cameras to avoid surveillance.\n\n  - point: Anti-Facial Recognition Clothing\n    priority: Advanced\n    details: Wear clothing with patterns that trick facial-recognition technology.\n\n  - point: Reduce Night Vision Exposure\n    priority: Advanced\n    details: Use IR light sources or reflective glasses to obstruct night vision cameras.\n\n  - point: Protect your DNA\n    priority: Advanced\n    details: Avoid sharing DNA with heritage websites and be cautious about leaving DNA traces.\n\n  color: lime\n"
  },
  {
    "path": "web/.eslintignore",
    "content": "**/*.log\n**/.DS_Store\n*.\n.vscode/settings.json\n.history\n.yarn\nbazel-*\nbazel-bin\nbazel-out\nbazel-qwik\nbazel-testlogs\ndist\ndist-dev\nlib\nlib-types\netc\nexternal\nnode_modules\ntemp\ntsc-out\ntsdoc-metadata.json\ntarget\noutput\nrollup.config.js\nbuild\n.cache\n.vscode\n.rollup.cache\ndist\ntsconfig.tsbuildinfo\nvite.config.ts\n*.spec.tsx\n*.spec.ts\n.netlify\npnpm-lock.yaml\npackage-lock.json\nyarn.lock\nserver\n"
  },
  {
    "path": "web/.eslintrc.cjs",
    "content": "module.exports = {\n  root: true,\n  env: {\n    browser: true,\n    es2021: true,\n    node: true,\n  },\n  extends: [\n    \"eslint:recommended\",\n    \"plugin:@typescript-eslint/recommended\",\n    \"plugin:qwik/recommended\",\n  ],\n  parser: \"@typescript-eslint/parser\",\n  parserOptions: {\n    tsconfigRootDir: __dirname,\n    project: [\"./tsconfig.json\"],\n    ecmaVersion: 2021,\n    sourceType: \"module\",\n    ecmaFeatures: {\n      jsx: true,\n    },\n  },\n  plugins: [\"@typescript-eslint\"],\n  rules: {\n    \"@typescript-eslint/no-explicit-any\": \"off\",\n    \"@typescript-eslint/explicit-module-boundary-types\": \"off\",\n    \"@typescript-eslint/no-inferrable-types\": \"off\",\n    \"@typescript-eslint/no-non-null-assertion\": \"off\",\n    \"@typescript-eslint/no-empty-interface\": \"off\",\n    \"@typescript-eslint/no-namespace\": \"off\",\n    \"@typescript-eslint/no-empty-function\": \"off\",\n    \"@typescript-eslint/no-this-alias\": \"off\",\n    \"@typescript-eslint/ban-types\": \"off\",\n    \"@typescript-eslint/ban-ts-comment\": \"off\",\n    \"prefer-spread\": \"off\",\n    \"no-case-declarations\": \"off\",\n    \"no-console\": \"off\",\n    \"@typescript-eslint/no-unused-vars\": [\"error\"],\n    \"@typescript-eslint/consistent-type-imports\": \"warn\",\n    \"@typescript-eslint/no-unnecessary-condition\": \"warn\",\n  },\n};\n"
  },
  {
    "path": "web/.gitignore",
    "content": "# Build\n/dist\n/lib\n/lib-types\n/server\n\n# Development\nnode_modules\n*.local\n\n# Cache\n.cache\n.mf\n.rollup.cache\ntsconfig.tsbuildinfo\n\n# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\n# Editor\n.vscode/*\n!.vscode/launch.json\n!.vscode/*.code-snippets\n\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n\n# Yarn\n.yarn/*\n!.yarn/releases\n\n# Vercel\n.vercel\n"
  },
  {
    "path": "web/.prettierignore",
    "content": "**/*.log\n**/.DS_Store\n*.\n.vscode/settings.json\n.history\n.yarn\nbazel-*\nbazel-bin\nbazel-out\nbazel-qwik\nbazel-testlogs\ndist\ndist-dev\nlib\nlib-types\netc\nexternal\nnode_modules\ntemp\ntsc-out\ntsdoc-metadata.json\ntarget\noutput\nrollup.config.js\nbuild\n.cache\n.vscode\n.rollup.cache\ntsconfig.tsbuildinfo\nvite.config.ts\n*.spec.tsx\n*.spec.ts\n.netlify\npnpm-lock.yaml\npackage-lock.json\nyarn.lock\nserver\n"
  },
  {
    "path": "web/.vscode/launch.json",
    "content": "{\n  // Use IntelliSense to learn about possible attributes.\n  // Hover to view descriptions of existing attributes.\n  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    {\n      \"name\": \"Launch Chrome\",\n      \"request\": \"launch\",\n      \"type\": \"chrome\",\n      \"url\": \"http://localhost:5173\",\n      \"webRoot\": \"${workspaceFolder}\"\n    },\n    {\n      \"type\": \"node\",\n      \"name\": \"dev.debug\",\n      \"request\": \"launch\",\n      \"skipFiles\": [\"<node_internals>/**\"],\n      \"cwd\": \"${workspaceFolder}\",\n      \"program\": \"${workspaceFolder}/node_modules/vite/bin/vite.js\",\n      \"args\": [\"--mode\", \"ssr\", \"--force\"]\n    }\n  ]\n}\n"
  },
  {
    "path": "web/.vscode/qwik-city.code-snippets",
    "content": "{\n  \"onRequest\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"qonRequest\",\n    \"description\": \"onRequest function for a route index\",\n    \"body\": [\n      \"export const onRequest: RequestHandler = (request) => {\",\n      \"  $0\",\n      \"};\",\n    ],\n  },\n  \"loader$\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"qloader$\",\n    \"description\": \"loader$()\",\n    \"body\": [\"export const $1 = routeLoader$(() => {\", \"  $0\", \"});\"],\n  },\n  \"action$\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"qaction$\",\n    \"description\": \"action$()\",\n    \"body\": [\"export const $1 = routeAction$((data) => {\", \"  $0\", \"});\"],\n  },\n  \"Full Page\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"qpage\",\n    \"description\": \"Simple page component\",\n    \"body\": [\n      \"import { component$ } from '@builder.io/qwik';\",\n      \"\",\n      \"export default component$(() => {\",\n      \"  $0\",\n      \"});\",\n    ],\n  },\n}\n"
  },
  {
    "path": "web/.vscode/qwik.code-snippets",
    "content": "{\n  \"Qwik component (simple)\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"qcomponent$\",\n    \"description\": \"Simple Qwik component\",\n    \"body\": [\n      \"export const ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}} = component$(() => {\",\n      \"  return <${2:div}>$4</$2>\",\n      \"});\",\n    ],\n  },\n  \"Qwik component (props)\": {\n    \"scope\": \"typescriptreact\",\n    \"prefix\": \"qcomponent$ + props\",\n    \"description\": \"Qwik component w/ props\",\n    \"body\": [\n      \"export interface ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}}Props {\",\n      \"  $2\",\n      \"}\",\n      \"\",\n      \"export const $1 = component$<$1Props>((props) => {\",\n      \"  const ${2:count} = useSignal(0);\",\n      \"  return (\",\n      \"    <${3:div} on${4:Click}$={(ev) => {$5}}>\",\n      \"      $6\",\n      \"    </${3}>\",\n      \"  );\",\n      \"});\",\n    ],\n  },\n  \"Qwik signal\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"quseSignal\",\n    \"description\": \"useSignal() declaration\",\n    \"body\": [\"const ${1:foo} = useSignal($2);\", \"$0\"],\n  },\n  \"Qwik store\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"quseStore\",\n    \"description\": \"useStore() declaration\",\n    \"body\": [\"const ${1:state} = useStore({\", \"  $2\", \"});\", \"$0\"],\n  },\n  \"$ hook\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"q$\",\n    \"description\": \"$() function hook\",\n    \"body\": [\"$(() => {\", \"  $0\", \"});\", \"\"],\n  },\n  \"useVisibleTask\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"quseVisibleTask\",\n    \"description\": \"useVisibleTask$() function hook\",\n    \"body\": [\"useVisibleTask$(({ track }) => {\", \"  $0\", \"});\", \"\"],\n  },\n  \"useTask\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"quseTask$\",\n    \"description\": \"useTask$() function hook\",\n    \"body\": [\n      \"useTask$(({ track }) => {\",\n      \"  track(() => $1);\",\n      \"  $0\",\n      \"});\",\n      \"\",\n    ],\n  },\n  \"useResource\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"quseResource$\",\n    \"description\": \"useResource$() declaration\",\n    \"body\": [\n      \"const $1 = useResource$(({ track, cleanup }) => {\",\n      \"  $0\",\n      \"});\",\n      \"\",\n    ],\n  },\n}\n"
  },
  {
    "path": "web/README.txt",
    "content": "\nThis is the source for the https://digital-defense.io website, which displays the checklist data interactively\n\nFor build, development and deploy instructions, see the main README\n\nIf you wish to make content changes, the only file you need to edit is `personal-security-checklist.yml`, in the repo's root\n\nAll code here is licensed under MIT\n\n\n"
  },
  {
    "path": "web/adapters/static/vite.config.mts",
    "content": "import { staticAdapter } from \"@builder.io/qwik-city/adapters/static/vite\";\nimport { extendConfig } from \"@builder.io/qwik-city/vite\";\nimport baseConfig from \"../../vite.config.mts\";\n\nexport default extendConfig(baseConfig, () => {\n  return {\n    build: {\n      ssr: true,\n      rollupOptions: {\n        input: [\"@qwik-city-plan\"],\n      },\n    },\n    plugins: [\n      staticAdapter({\n        origin: \"https://yoursite.qwik.dev\",\n      }),\n    ],\n  };\n});\n"
  },
  {
    "path": "web/adapters/vercel-edge/vite.config.mts",
    "content": "import { vercelEdgeAdapter } from \"@builder.io/qwik-city/adapters/vercel-edge/vite\";\nimport { extendConfig } from \"@builder.io/qwik-city/vite\";\nimport baseConfig from \"../../vite.config.mts\";\n\nexport default extendConfig(baseConfig, () => {\n  return {\n    build: {\n      ssr: true,\n      rollupOptions: {\n        input: [\"src/entry.vercel-edge.tsx\", \"@qwik-city-plan\"],\n      },\n      outDir: \".vercel/output/functions/_qwik-city.func\",\n    },\n    plugins: [vercelEdgeAdapter()],\n  };\n});\n"
  },
  {
    "path": "web/package.json",
    "content": "{\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"build\": \"qwik build\",\n    \"build.client\": \"vite build\",\n    \"build.preview\": \"vite build --ssr src/entry.preview.tsx\",\n    \"build.server\": \"vite build -c adapters/vercel-edge/vite.config.mts\",\n    \"build.static\": \"vite build -c adapters/static/vite.config.mts\",\n    \"build.types\": \"tsc --incremental --noEmit\",\n    \"deploy\": \"vercel deploy\",\n    \"dev\": \"vite --mode ssr\",\n    \"dev.debug\": \"node --inspect-brk ./node_modules/vite/bin/vite.js --mode ssr --force\",\n    \"fmt\": \"prettier --write .\",\n    \"fmt.check\": \"prettier --check .\",\n    \"lint\": \"eslint \\\"src/**/*.ts*\\\" -f compact\",\n    \"preview\": \"qwik build preview && vite preview --open\",\n    \"start\": \"vite --open --mode ssr\",\n    \"qwik\": \"qwik\"\n  },\n  \"devDependencies\": {\n    \"@builder.io/qwik-city\": \"^1.1.4\",\n    \"@types/js-yaml\": \"^4.0.9\",\n    \"@types/node\": \"^20.11.16\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.20.0\",\n    \"@typescript-eslint/parser\": \"^6.20.0\",\n    \"autoprefixer\": \"^10.4.13\",\n    \"daisyui\": \"^3.0.2\",\n    \"eslint\": \"^8.56.0\",\n    \"eslint-plugin-qwik\": \"^1.4.3\",\n    \"js-yaml\": \"^4.1.0\",\n    \"postcss\": \"^8.4.21\",\n    \"tailwindcss\": \"^3.2.4\",\n    \"typescript\": \"^5.3.3\",\n    \"undici\": \"^5.16.0\",\n    \"vercel\": \"^29.1.1\",\n    \"vite\": \"^4.0.4\",\n    \"vite-plugin-static-copy\": \"^1.0.1\",\n    \"vite-tsconfig-paths\": \"^4.3.1\"\n  },\n  \"dependencies\": {\n    \"@builder.io/qwik\": \"^1.1.4\",\n    \"@tailwindcss/typography\": \"^0.5.10\",\n    \"chart.js\": \"^4.4.1\",\n    \"marked\": \"^12.0.0\",\n    \"progressbar.js\": \"^1.1.1\",\n    \"qwik-transition\": \"^0.0.7\",\n    \"sharp\": \"^0.32.6\"\n  },\n  \"resolutions\": {\n    \"sharp\": \"^0.32.6\"\n  }\n}\n"
  },
  {
    "path": "web/postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    'postcss-import': {},\n    'tailwindcss/nesting': {},\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n}\n"
  },
  {
    "path": "web/public/manifest.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/web-manifest-combined.json\",\n  \"name\": \"digital-defense\",\n  \"short_name\": \"Digital Defense\",\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"background_color\": \"#5616c6\",\n  \"description\": \"The ultimate personal security checklist\"\n}\n"
  },
  {
    "path": "web/public/robots.txt",
    "content": ""
  },
  {
    "path": "web/src/components/core/icon.tsx",
    "content": "// IconComponent.jsx or IconComponent.tsx\nimport { component$ } from \"@builder.io/qwik\";\nimport colors from 'tailwindcss/colors';\n\nconst getSvgPath = (icon: string) => {\n  switch (icon) {\n    case 'star':\n      return {\n        vb: \"0 0 24 24\",\n        path: \"M10 15l-5.5 3 1-5.5L0 7.5l5.6-0.5L10 2l2 5 5.5 0.5-4 4 1 5.5z\",\n      }; \n    case 'password':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391l-7 7V408v80 24H24h80 24V488 448h40 24V424 384h40 9.9l7-7 33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zM376 96a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\", \n      };\n    case 'browser':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z\", \n      };\n    case 'email':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z\", \n      };\n    case 'messaging':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M64 0C28.7 0 0 28.7 0 64V256c0 35.3 28.7 64 64 64H96v48c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L202.7 320H352c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM352 352H256v32c0 35.3 28.7 64 64 64H437.3l81.1 60.8c4.8 3.6 11.3 4.2 16.8 1.5s8.8-8.2 8.8-14.3V448h32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H448V256c0 53-43 96-96 96z\", \n      };\n    case 'social':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z\", \n      };\n    case 'network':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M176 80v48h32 48 80V80H176zm-48 48V80H96c-8.8 0-16 7.2-16 16v32h48zM80 176v56H208V176H80zm0 160h48V280H80v56zm0 48v32c0 8.8 7.2 16 16 16H208V384H176 128 80zm96-48H288.8c-.5 4.7-.8 9.4-.8 14.1c0 11.5 1 22.9 3 33.9H256v48h50.1c8.1 17.5 18.8 33.7 31.5 48H96c-35.3 0-64-28.7-64-64V96c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64v48.6c-1.7-1.5-3.3-3.1-5-4.6c-17.7-16-44.7-16-62.5-.1c-12.9 11.5-25.1 23.7-36.5 36.1H256v56h76c-2.4 3.6-4.7 7.2-6.9 10.7c-7.4 12-14.2 24.5-19.9 37.3H176v56zM432 128V96c0-8.8-7.2-16-16-16H384v48h48zm48 384c-88.4 0-160-71.6-160-160c0-76.7 62.5-144.7 107.2-179.4c5-3.9 10.9-5.8 16.8-5.8c7.9-.1 16 3.1 22 9.2l46 46 11.3-11.3c11.7-11.7 30.6-12.7 42.3-1C624.5 268 640 320.2 640 352c0 88.4-71.6 160-160 160zm64-111.8c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C453 327.1 416 363.6 416 400.2c0 35.3 28.7 64 64 64s64-28.7 64-64z\", \n      };\n    case 'mobile':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zm80 432h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\", \n      };\n    case 'computer':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M0 192H176V0H160C71.6 0 0 71.6 0 160v32zm0 32V352c0 88.4 71.6 160 160 160h64c88.4 0 160-71.6 160-160V224H192 0zm384-32V160C384 71.6 312.4 0 224 0H208V192H384z\", \n      };\n    case 'home':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M357.7 8.5c-12.3-11.3-31.2-11.3-43.4 0l-208 192c-9.4 8.6-12.7 22-8.5 34c87.1 25.3 155.6 94.2 180.3 181.6H464c26.5 0 48-21.5 48-48V256h32c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8.1-35.2l-208-192zM288 208c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V208zM24 256c-13.3 0-24 10.7-24 24s10.7 24 24 24c101.6 0 184 82.4 184 184c0 13.3 10.7 24 24 24s24-10.7 24-24c0-128.1-103.9-232-232-232zm8 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM0 376c0 13.3 10.7 24 24 24c48.6 0 88 39.4 88 88c0 13.3 10.7 24 24 24s24-10.7 24-24c0-75.1-60.9-136-136-136c-13.3 0-24 10.7-24 24z\", \n      };\n    case 'finance':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M64 32C28.7 32 0 60.7 0 96v32H576V96c0-35.3-28.7-64-64-64H64zM576 224H0V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V224zM112 352h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\", \n      };\n    case 'human':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152z\", \n      };\n    case 'physical':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h88.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-23.7 12.9-44.4 32-55.4V272c0-30.5 12.2-58.2 32-78.4V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM464 240c17.7 0 32 14.3 32 32v48H432V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\", \n      };\n    case 'shield':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8V444.8C394 378 431.1 230.1 432 141.4L256 66.8l0 0z\", \n      };\n    case 'github':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z\", \n      };\n    case 'checklist':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-4.7 132.7c6.2 6.2 6.2 16.4 0 22.6l-64 64c-6.2 6.2-16.4 6.2-22.6 0l-32-32c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L112 249.4l52.7-52.7c6.2-6.2 16.4-6.2 22.6 0zM192 272c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16zm-16 80H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zM72 368a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\",\n      };\n    case 'code':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z\",\n      };\n    case 'all':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M0 72C0 49.9 17.9 32 40 32H88c22.1 0 40 17.9 40 40v48c0 22.1-17.9 40-40 40H40c-22.1 0-40-17.9-40-40V72zM0 232c0-22.1 17.9-40 40-40H88c22.1 0 40 17.9 40 40v48c0 22.1-17.9 40-40 40H40c-22.1 0-40-17.9-40-40V232zM128 392v48c0 22.1-17.9 40-40 40H40c-22.1 0-40-17.9-40-40V392c0-22.1 17.9-40 40-40H88c22.1 0 40 17.9 40 40zM160 72c0-22.1 17.9-40 40-40h48c22.1 0 40 17.9 40 40v48c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V72zM288 232v48c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V232c0-22.1 17.9-40 40-40h48c22.1 0 40 17.9 40 40zM160 392c0-22.1 17.9-40 40-40h48c22.1 0 40 17.9 40 40v48c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V392zM448 72v48c0 22.1-17.9 40-40 40H360c-22.1 0-40-17.9-40-40V72c0-22.1 17.9-40 40-40h48c22.1 0 40 17.9 40 40zM320 232c0-22.1 17.9-40 40-40h48c22.1 0 40 17.9 40 40v48c0 22.1-17.9 40-40 40H360c-22.1 0-40-17.9-40-40V232zM448 392v48c0 22.1-17.9 40-40 40H360c-22.1 0-40-17.9-40-40V392c0-22.1 17.9-40 40-40h48c22.1 0 40 17.9 40 40z\",\n      };\n    case 'homepage':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\",\n      };\n    case 'articles':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M96 96c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H80c-44.2 0-80-35.8-80-80V128c0-17.7 14.3-32 32-32s32 14.3 32 32V400c0 8.8 7.2 16 16 16s16-7.2 16-16V96zm64 24v80c0 13.3 10.7 24 24 24H296c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24H184c-13.3 0-24 10.7-24 24zm208-8c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zM160 304c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\",\n      };\n    case 'about':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\",\n      };\n    case 'filters':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M3.9 54.9C10.5 40.9 24.5 32 40 32H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9V448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6V320.9L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\",\n      };\n    case 'sort':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z\",\n      };\n    case 'clear':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M0 128C0 92.7 28.7 64 64 64H370.7c17 0 33.3 6.7 45.3 18.7L566.6 233.4c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6L416 429.3c-12 12-28.3 18.7-45.3 18.7H64c-35.3 0-64-28.7-64-64V128zm143 47c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\",\n      };\n    case 'settings':\n      return {\n        vb: \"0 0 640 512\",\n        path: \"M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8h-.7c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\",\n      };\n    case 'mastodon':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M433 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.6-28.4-290.5 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54a102.5 102.5 0 0 1 -.9-13.9c85.6 20.9 158.7 9.1 178.8 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H90.2c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z\",\n      };\n    case 'twitter':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z\",\n      };\n    case 'hub':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\",\n      };\n    case 'dev':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M120.1 208.3c-3.9-2.9-7.8-4.4-11.7-4.4H91v104.5h17.5c3.9 0 7.8-1.5 11.7-4.4 3.9-2.9 5.8-7.3 5.8-13.1v-69.7c0-5.8-2-10.2-5.8-13.1zM404.1 32H43.9C19.7 32 .1 51.6 0 75.8v360.4C.1 460.4 19.7 480 43.9 480h360.2c24.2 0 43.8-19.6 43.9-43.8V75.8c-.1-24.2-19.7-43.8-43.9-43.8zM154.2 291.2c0 18.8-11.6 47.3-48.4 47.3h-46.4V173h47.4c35.4 0 47.4 28.5 47.4 47.3l0 70.9zm100.7-88.7H201.6v38.4h32.6v29.6H201.6v38.4h53.3v29.6h-62.2c-11.2 .3-20.4-8.5-20.7-19.7V193.7c-.3-11.2 8.6-20.4 19.7-20.7h63.2l0 29.5zm103.6 115.3c-13.2 30.8-36.9 24.6-47.4 0l-38.5-144.8h32.6l29.7 113.7 29.6-113.7h32.6l-38.5 144.8z\",\n      };\n    case 'linkedin':\n      return {\n        vb: \"0 0 512 512\",\n        path: \"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\",\n      };\n    default:\n      return { vb: \"\", path: \"\" }; // Default path or a placeholder icon\n  }\n};\n\n\n\n\nconst makeFillColor = (props: IconProps) => {\n  const isColorKey = (color: any): color is keyof typeof colors => color in colors;\n\n  let colorValue = 'currentcolor';\n  if (props.color && isColorKey(props.color)) {\n    const colorObject = colors[props.color];\n    if (colorObject[400]) {\n      colorValue = colorObject[400];\n    }\n  }\n  return colorValue;\n};\n\n\ninterface IconProps {\n  icon: string;\n  color?: string;\n  class?: string;\n  width?: number;\n  height?: number;\n}\n\nconst IconComponent = component$((props: IconProps) => {\n  const fillColor = makeFillColor(props);\n  const svgStyle = { fill: fillColor };\n  const { vb, path } = getSvgPath(props.icon);\n  const svgClass = props.class || '';\n  const width = props.width || 80;\n  const height = props.height || props.width || 50;\n\n  return (\n    <svg class={svgClass} style={svgStyle} xmlns=\"http://www.w3.org/2000/svg\" viewBox={vb} width={width} height={height}>\n      <path d={path} />\n    </svg>\n  );\n});\n\nexport default IconComponent;\n"
  },
  {
    "path": "web/src/components/furniture/footer.tsx",
    "content": "import { component$ } from \"@builder.io/qwik\";\n\nexport default component$(() => {\n\n  const ghLink = 'https://github.com/Lissy93/personal-security-checklist/';\n  const licenseLink = 'https://github.com/Lissy93/personal-security-checklist/blob/master/LICENSE';\n  const authorLink = 'https://aliciasykes.com';\n\n  return (\n  <footer class=\"footer footer-center px-4 py-2 mt-4 text-base-content bg-base-200 bg-opacity-25\">\n    <aside>\n      <p>Licensed under <a href={licenseLink} class=\"link link-primary\">MIT</a> -\n      © <a href={authorLink} class=\"link link-primary\">Alicia Sykes</a> 2024 - \n      View source on <a href={ghLink} class=\"link link-primary\">GitHub</a></p>\n    </aside>\n  </footer>\n  );\n});\n"
  },
  {
    "path": "web/src/components/furniture/header.tsx",
    "content": "import { component$ } from \"@builder.io/qwik\";\n\nexport default component$(() => {\n  return (\n    <header>\n    </header>\n  );\n});\n"
  },
  {
    "path": "web/src/components/furniture/hero.tsx",
    "content": "import { component$ } from \"@builder.io/qwik\";\n\nimport Icon from \"~/components/core/icon\";\n\nexport default component$(() => {\n  return (\n    <div class=\"hero mb-8 mx-auto xl:max-w-7xl max-w-6xl w-full xl:px-10\">\n      <div class=\"hero-content text-center bg-front shadow-sm lg:rounded-xl w-full\">\n        <div class=\"max-w-2xl flex flex-col place-items-center\">\n          <p>The Ultimate</p>\n          <h1 class=\"text-5xl font-bold\">Personal Security Checklist</h1>\n          <p class=\"subtitle pb-6\">Your guide to securing your digital life and protecting your privacy</p>\n          <Icon class=\"mb-4\" icon=\"shield\" width={120} height={120}  />\n          <a href=\"https://github.com/lissy93/personal-security-checklist\">\n            <button class=\"btn btn-primary btn-lg\">\n              <Icon icon=\"github\" width={20} height={20}  />\n              View on GitHub\n            </button>\n          </a>\n        </div>\n      </div>\n    </div>\n  );\n});\n"
  },
  {
    "path": "web/src/components/furniture/nav.tsx",
    "content": "\nimport { $, component$, useContext } from \"@builder.io/qwik\";\nimport Icon from \"~/components/core/icon\";\nimport type { Section } from '~/types/PSC';\nimport { useTheme } from '~/store/theme-store';\nimport articles from '~/data/articles';\nimport { ChecklistContext } from '~/store/checklist-context';\n\n\nexport default component$(() => {\n\n  const data = useContext(ChecklistContext);\n\n  const { theme, setTheme } = useTheme();\n\n  const themes = [\n    'dark', 'light', 'night', 'cupcake', \n    'bumblebee', 'corporate', 'synthwave', 'retro', \n    'valentine', 'halloween', 'aqua', 'lofi', \n    'fantasy', 'dracula'\n  ];\n\n    const deleteAllData = $(() => {\n    const isConfirmed = confirm('Are you sure you want to delete all local data? This will erase your progress.');\n    if (isConfirmed) {\n      localStorage.clear();\n      location.reload();\n    }\n  });\n\n  return (\n    <>\n      <input id=\"my-drawer-3\" type=\"checkbox\" class=\"drawer-toggle\" /> \n      <div class=\"navbar bg-base-100\">\n        <div class=\"flex-1\">\n          <div class=\"flex-none md:hidden\">\n            <label for=\"my-drawer-3\" aria-label=\"open sidebar\" class=\"btn btn-square btn-ghost\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" class=\"inline-block w-6 h-6 stroke-current\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 6h16M4 12h16M4 18h16\"></path></svg>\n            </label>\n          </div> \n          <a href=\"/\" class=\"btn btn-ghost text-xl flex capitalize\">\n            <label for=\"my-drawer-3\" aria-label=\"open sidebar\" class=\"tooltip tooltip-bottom\" data-tip=\"View all Pages\"><Icon class=\"mr-2\" icon=\"shield\" width={28} height={28}  /></label>\n            <h1>Digital Defense</h1>\n          </a>\n        </div>\n        <div class=\"flex-none hidden md:flex\">\n          <ul class=\"menu menu-horizontal px-1\">\n            <li>\n              <details>\n                <summary>\n                  <Icon icon=\"checklist\" width={16} height={16}  />\n                  Checklists\n                </summary>\n                <ul class=\"p-2 bg-base-100 rounded-t-none z-10\">\n                  {data.value.map((item: Section, index: number) => (\n                    <li key={`checklist-nav-${index}`} class={`hover:bg-${item.color}-600 hover:bg-opacity-15`}>\n                      <a href={`/checklist/${item.slug}`}>\n                      <Icon color={item.color} class=\"mr-2\" icon={item.icon} width={16} height={16}  />\n                        {item.title}\n                      </a>\n                    </li>\n                  ))}\n                </ul>\n              </details>\n            </li>\n            <li>\n              <a href=\"https://github.com/lissy93/personal-security-checklist\"\n                class=\"tooltip flex tooltip-bottom\" data-tip=\"View / Edit Source & Data\">\n                <Icon icon=\"github\" width={16} height={16}  />GitHub\n              </a>\n            </li>\n          </ul>\n          <div class=\"tooltip tooltip-bottom\" data-tip=\"Theme\">\n            <label class=\"cursor-pointer grid place-items-center\">\n              <input\n                type=\"checkbox\"\n                checked={theme.theme === 'dark'}\n                onClick$={() => {\n                  setTheme(theme.theme === 'dark' ? 'light' : 'dark');\n                }}\n                class=\"toggle theme-controller bg-base-content row-start-1 col-start-1 col-span-2\"\n              />\n              <svg class=\"col-start-1 row-start-1 stroke-base-100 fill-base-100\" xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"5\"/><path d=\"M12 1v2M12 21v2M4.2 4.2l1.4 1.4M18.4 18.4l1.4 1.4M1 12h2M21 12h2M4.2 19.8l1.4-1.4M18.4 5.6l1.4-1.4\"/></svg>\n              <svg class=\"col-start-2 row-start-1 stroke-base-100 fill-base-100\" xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"></path></svg>\n            </label>\n          </div>\n          <li class=\"list-none px-2\">\n            <p\n              onClick$={() => ((document.getElementById('settings_modal') || {}) as HTMLDialogElement).showModal()}\n              class=\"cursor-pointer tooltip flex tooltip-bottom\" data-tip=\"Settings\">\n                <Icon icon=\"settings\" width={20} height={20}  />\n            </p>\n          </li>\n        </div>\n      </div>\n\n      <div class=\"drawer-side z-10\">\n        <label for=\"my-drawer-3\" aria-label=\"close sidebar\" class=\"drawer-overlay\"></label> \n        <ul class=\"rounded-box menu p-4 w-80 min-h-full bg-base-200\">\n          <h2 class=\"flex text-primary\">\n          <Icon class=\"mr-2\" icon=\"shield\" width={16} height={16}  />\n            Digital Defense\n          </h2>\n          <li><a href=\"/\"><Icon class=\"mr-2\" icon=\"homepage\" width={16} height={16}  />Home</a></li>\n          <li><a href=\"https://github.com/lissy93/personal-security-checklist\">\n            <Icon class=\"mr-2\" icon=\"github\" width={16} height={16}  />GitHub</a>\n          </li>\n          <li>\n            <a href=\"/checklist\"><Icon class=\"mr-2\" icon=\"all\" width={16} height={16} />Checklists</a>\n            <ul>\n              {data.value.map((item: Section, index: number) => (\n              <li key={`checklist-side-${index}`} class={`hover:bg-${item.color}-600 hover:bg-opacity-15`}>\n                <a href={`/checklist/${item.slug}`}>\n                <Icon color={item.color} class=\"mr-2\" icon={item.icon} width={16} height={16}  />\n                  {item.title}\n                </a>\n              </li>\n              ))}\n            </ul>\n          </li>\n          <li>\n            <a href=\"/article\">\n              <Icon class=\"mr-2\" icon=\"articles\" width={16} height={16} />Articles\n            </a>\n            <ul>\n              {articles.map(article => (\n                <li key={article.slug}>\n                  <a href={`/article/${article.slug}`}>{article.title}</a>\n                </li>\n              ))}\n            </ul>\n          </li>\n          <li>\n            <a href=\"/about\">\n              <Icon class=\"mr-2\" icon=\"about\" width={16} height={16} />About\n            </a>\n            <ul>\n              <li>\n                <a href=\"https://github.com/Lissy93/personal-security-checklist/?tab=readme-ov-file#contributing\">Contributing</a>\n              </li>\n              <li>\n                <a href=\"https://github.com/Lissy93/personal-security-checklist/blob/master/LICENSE\">License</a>\n              </li>\n            </ul>\n            <ul>\n            <li>\n              <a href=\"/about#author\">Author</a>\n              <ul>\n                <li><a href=\"https://aliciasykes.com/contact\">Contact</a></li>\n                <li>\n                  <a href=\"https://apps.aliciasykes.com\">More Apps</a>\n                </li>\n                <li class=\"flex flex-row\">\n                  <a href=\"https://github.com/lissy93\"><Icon icon=\"hub\" width={16} height={16} /></a>\n                  <a href=\"https://x.com/lissy_sykes\"><Icon icon=\"twitter\" width={16} height={16} /></a>\n                  <a href=\"https://mastodon.social/@lissy93\"><Icon icon=\"mastodon\" width={16} height={16} /></a>\n                  <a href=\"https://dev.to/lissy93\"><Icon icon=\"dev\" width={16} height={16} /></a>\n                  <a href=\"https://linkedin.com/in/aliciasykes\"><Icon icon=\"linkedin\" width={16} height={16} /></a>\n                </li>\n              </ul>\n            </li>\n            </ul>\n          </li>\n        </ul>\n      </div>\n\n      <dialog id=\"settings_modal\" class=\"modal\">\n        <div class=\"modal-box\">\n          <div class=\"tabs tabs-lifted\">\n            <p class=\"tab tab-active\">Settings</p>\n            <a class=\"tab\" href=\"/about\">About</a>\n          </div>\n          <div class=\"modal-action justify-start w-full flex flex-col gap-4\">\n              <div class=\"flex items-between w-full justify-between\">\n                <label for=\"theme\" class=\"label\">Theme</label>\n                <select \n                  id=\"theme\" \n                  class=\"select select-bordered w-full max-w-xs\"\n                  onChange$={(event) => setTheme((event.target as HTMLSelectElement).value) }\n                  >\n                  <option disabled selected>Theme</option>\n                  {themes.map((someTheme) => (\n                    <option\n                      key={someTheme}\n                      value={someTheme}\n                      selected={someTheme === theme.theme}\n                      >\n                      {someTheme.charAt(0).toUpperCase() + someTheme.slice(1)}\n                    </option>\n                  ))}\n                </select>\n              </div>\n              <div class=\"flex items-between w-full justify-between\">\n                <label class=\"label\">Data</label>\n                <button class=\"btn btn-primary\" onClick$={deleteAllData}>Delete All</button>\n              </div>\n              <button\n                class=\"btn my-1 mx-auto\"\n                onClick$={() => ((document.getElementById('settings_modal') || {}) as HTMLDialogElement).close()}\n              >Close</button>\n            </div>\n        </div>\n      </dialog>\n    </>\n  );\n});\n"
  },
  {
    "path": "web/src/components/psc/checklist-table.tsx",
    "content": "import { $, component$, useStore, useSignal } from \"@builder.io/qwik\";\nimport { useCSSTransition } from \"qwik-transition\";\n\nimport Icon from \"~/components/core/icon\";\nimport type { Priority, Section, Checklist } from '../../types/PSC';\nimport { marked } from \"marked\";\nimport { useLocalStorage } from \"~/hooks/useLocalStorage\";\nimport styles from './psc.module.css';\n\n\nexport default component$((props: { section: Section }) => {\n\n  const [completed, setCompleted] = useLocalStorage('PSC_PROGRESS', {});\n  const [ignored, setIgnored] = useLocalStorage('PSC_IGNORED', {});\n\n  const showFilters = useSignal(false);\n  const { stage } = useCSSTransition(showFilters, { timeout: 300 });\n\n  const sortState = useStore({ column: '', ascending: true });\n\n  const checklist = useSignal<Checklist[]>(props.section.checklist);\n\n  const originalFilters = {\n    show: 'all', // 'all', 'remaining', 'completed'\n    levels: {\n      essential: true,\n      optional: true,\n      advanced: true,\n    },\n  };\n\n  const filterState = useStore(originalFilters);\n\n  const getBadgeClass = (priority: Priority, precedeClass: string = '') => {\n    switch (priority.toLocaleLowerCase()) {\n      case 'essential':\n        return `${precedeClass}success`;\n      case 'optional':\n        return `${precedeClass}warning`;\n      case 'advanced':\n        return `${precedeClass}error`;\n      default:\n        return `${precedeClass}neutral`;\n    }\n  };\n\n  const generateId = (title: string) => {\n    return title.toLowerCase().replace(/ /g, '-');\n  };\n\n  const parseMarkdown = (text: string | undefined): string => {\n    return marked.parse(text || '', { async: false }) as string || '';\n  };\n\n  const isIgnored = (pointId: string) => {\n    return ignored.value[pointId] || false;\n  };\n  \n\n  const isChecked = (pointId: string) => {\n    if (isIgnored(pointId)) return false;\n    return completed.value[pointId] || false;\n  };\n\n  const filteredChecklist = checklist.value.filter((item) => {\n    const itemId = generateId(item.point);\n    const itemCompleted = isChecked(itemId);\n    const itemIgnored = isIgnored(itemId);\n    const itemLevel = item.priority;\n\n    // Filter by completion status\n    if (filterState.show === 'remaining' && (itemCompleted || itemIgnored)) return false;\n    if (filterState.show === 'completed' && !itemCompleted) return false;\n\n    // Filter by level\n    return filterState.levels[itemLevel.toLocaleLowerCase() as Priority];\n  });\n\n  const sortChecklist = (a: Checklist, b: Checklist) => {\n    const getValue = (item: Checklist) => {\n      switch (sortState.column) {\n        case 'done':\n          if (isIgnored(generateId(item.point))) {\n            return 2;\n          }\n          return isChecked(generateId(item.point)) ? 0 : 1;\n        case 'advice':\n          return item.point;\n        case 'level':\n          return ['essential', 'optional', 'advanced'].indexOf(item.priority.toLowerCase());\n        default:\n          return 0;\n      }\n    };\n    const valueA = getValue(a);\n    const valueB = getValue(b);\n\n    if (valueA === valueB) {\n      return 0;\n    } else if (sortState.ascending) {\n      return valueA < valueB ? -1 : 1;\n    } else {\n      return valueA > valueB ? -1 : 1;\n    }\n  };\n\n  const handleSort = $((column: string) => {\n    if (sortState.column === column) { // Reverse direction if same column\n      sortState.ascending = !sortState.ascending;\n    } else { // Sort table by column\n      sortState.column = column;\n      sortState.ascending = true; // Default to ascending\n    }\n  });\n\n  const resetFilters = $(() => {\n    checklist.value = props.section.checklist;\n    sortState.column = '';\n    sortState.ascending = true;\n    filterState.levels = originalFilters.levels;\n    filterState.show = originalFilters.show;\n  });\n\n  const calculateProgress = (): { done: number, total: number, percent: number, disabled: number} => {\n    let done = 0;\n    let disabled = 0;\n    let total = 0;\n\n    props.section.checklist.forEach((item) => {\n      const itemId = generateId(item.point);\n      if (isIgnored(itemId)) {\n        disabled += 1;\n      } else if (isChecked(itemId)) {\n        done += 1;\n        total += 1;\n      } else {\n        total += 1;\n      }\n    });\n\n    const percent = Math.round((done / total) * 100);\n    return { done, total: props.section.checklist.length, percent, disabled };\n  };\n\n  const { done, total, percent, disabled } = calculateProgress();\n\n  return (\n    <>\n\n    <div class=\"flex flex-wrap justify-between items-center\">\n      <div>\n        <progress class=\"progress w-64\" value={percent} max=\"100\"></progress>\n        <p class=\"text-xs text-center\">\n          {done} out of {total} ({percent}%)\n          complete, {disabled} ignored</p>\n      </div>\n\n      <div class=\"flex flex-wrap gap-2 justify-end my-4\">\n        {(sortState.column || JSON.stringify(filterState) !== JSON.stringify(originalFilters)) && (\n          <button class=\"btn btn-sm hover:btn-primary\" onClick$={resetFilters}>\n            <Icon width={18} height={16} icon=\"clear\"/>\n            Reset Filters\n          </button>\n        )}\n        <button class=\"btn btn-sm hover:btn-primary\" onClick$={() => { showFilters.value = !showFilters.value; }}>\n          <Icon width={18} height={16} icon=\"filters\"/>\n          {showFilters.value ? 'Hide' : 'Show'} Filters\n        </button>\n      </div>\n    </div>\n\n    {showFilters.value && (\n      <div class=\"flex flex-wrap justify-between bg-base-100 rounded px-4 py-1 transition-all\"\n        style={{ opacity: stage.value === \"enterTo\" ? 1 : 0, height: stage.value === \"enterTo\" ? 'auto' : 0 }}> \n        {/* Filter by completion */}\n        <div class=\"flex justify-end items-center gap-1\">\n          <p class=\"font-bold text-sm\">Show</p>\n          <label onClick$={() => (filterState.show = 'all')}\n            class=\"p-2 rounded hover:bg-front transition-all cursor-pointer flex gap-2\">\n            <span class=\"text-sm\">All</span> \n            <input type=\"radio\" name=\"show\" class=\"radio radio-sm checked:radio-info\" checked />\n          </label>\n          <label onClick$={() => (filterState.show = 'remaining')}\n            class=\"p-2 rounded hover:bg-front transition-all cursor-pointer flex gap-2\">\n            <span class=\"text-sm\">Remaining</span> \n            <input type=\"radio\" name=\"show\" class=\"radio radio-sm checked:radio-error\" />\n          </label>\n          <label onClick$={() => (filterState.show = 'completed')}\n            class=\"p-2 rounded hover:bg-front transition-all cursor-pointer flex gap-2\">\n            <span class=\"text-sm\">Completed</span> \n            <input type=\"radio\" name=\"show\" class=\"radio radio-sm checked:radio-success\" />\n          </label>\n        </div>\n        {/* Filter by level */}\n        <div class=\"flex justify-end items-center gap-1\">\n          <p class=\"font-bold text-sm\">Filter</p>\n          <label class=\"p-2 rounded hover:bg-front transition-all cursor-pointer flex gap-2\">\n            <span class=\"text-sm\">Basic</span> \n            <input\n              type=\"checkbox\"\n              checked={filterState.levels.essential}\n              onChange$={() => (filterState.levels.essential = !filterState.levels.essential)}\n              class=\"checkbox checkbox-sm checked:checkbox-success\"\n            />\n          </label>\n          <label class=\"p-2 rounded hover:bg-front transition-all cursor-pointer flex gap-2\">\n            <span class=\"text-sm\">Optional</span> \n            <input\n              type=\"checkbox\"\n              checked={filterState.levels.optional}\n              onChange$={() => (filterState.levels.optional = !filterState.levels.optional)}\n              class=\"checkbox checkbox-sm checked:checkbox-warning\"\n            />\n          </label>\n          <label\n            class=\"p-2 rounded hover:bg-front transition-all cursor-pointer flex gap-2\">\n            <span class=\"text-sm\">Advanced</span> \n            <input\n              type=\"checkbox\"\n              checked={filterState.levels.advanced}\n              class=\"checkbox checkbox-sm checked:checkbox-error\"\n              onChange$={() => (filterState.levels.advanced = !filterState.levels.advanced)}\n            />\n          </label>\n        </div>\n      </div>\n    )}\n\n    <table class=\"table\">\n      <thead>\n        <tr>\n          { [\n            { id: 'done', text: 'Done?'},\n            { id: 'advice', text: 'Advice' },\n            { id: 'level', text: 'Level' }\n          ].map((item) => (\n            <th\n              key={item.id}\n              class=\"cursor-pointer\"\n              onClick$={() => handleSort(item.id)}\n            >\n              <span class=\"flex items-center gap-0.5 hover:text-primary transition\">\n                <Icon width={12} height={14} icon=\"sort\" />\n                {item.text}\n              </span>\n            </th>\n          ))}\n          <th>Details</th>\n        </tr>\n      </thead>\n      <tbody>\n        {filteredChecklist.sort(sortChecklist).map((item, index) => {\n          const badgeColor = getBadgeClass(item.priority);\n          const itemId = generateId(item.point);\n          const isItemCompleted = isChecked(itemId);\n          const isItemIgnored = isIgnored(itemId);\n          return (\n            <tr key={index} class={[\n              'rounded-sm transition-all',\n              isItemCompleted ? `bg-${badgeColor} bg-opacity-10` : '',\n              isItemIgnored? 'bg-neutral bg-opacity-15' : '',\n              !isItemIgnored && !isItemCompleted ? `hover:bg-opacity-5 hover:bg-${badgeColor}` : '',\n              ]}>\n              <td class=\"text-center\">\n                <input\n                  type=\"checkbox\"\n                  class={`checkbox checked:checkbox-${badgeColor} hover:checkbox-${badgeColor}`}\n                  id={`done-${itemId}`}\n                  checked={isChecked(itemId)}\n                  disabled={isIgnored(itemId)}\n                  onClick$={() => {\n                    const data = completed.value;\n                    data[itemId] = !data[itemId];\n                    setCompleted(data);\n                  }}\n                />\n                <label for={`ignore-${itemId}`} class=\"text-small block opacity-50 mt-2\">Ignore</label>\n                <input\n                  type=\"checkbox\"\n                  id={`ignore-${itemId}`}\n                  class={`toggle toggle-xs toggle-${badgeColor}`}\n                  checked={isIgnored(itemId)}\n                  onClick$={() => {\n                    const ignoredData = ignored.value;\n                    ignoredData[itemId] = !ignoredData[itemId];\n                    setIgnored(ignoredData);\n\n                    const completedData = completed.value;\n                    completedData[itemId] = false;\n                    setCompleted(completedData);\n                  }}\n                />\n              </td>\n              <td>\n                <label\n                  for={`done-${itemId}`}\n                  class={`text-base font-bold ${isIgnored(itemId) ? 'line-through' : 'cursor-pointer'}`}>\n                  {item.point}\n                </label>\n              </td>\n              <td>\n                <div class={`badge gap-2 badge-${badgeColor}`}>\n                  {item.priority}\n                </div>\n              </td>\n              <td class={styles.checklistItemDescription} dangerouslySetInnerHTML={parseMarkdown(item.details)}></td>\n            </tr>\n          )}\n        )}\n      </tbody>\n    </table>\n    </>\n  );\n});\n"
  },
  {
    "path": "web/src/components/psc/progress.tsx",
    "content": "import { $, component$, useSignal, useOnWindow, useContext } from \"@builder.io/qwik\";\nimport { Chart, registerables } from 'chart.js';\n\nimport { useLocalStorage } from \"~/hooks/useLocalStorage\";\nimport { ChecklistContext } from \"~/store/checklist-context\";\nimport type { Priority, Sections, Section } from '~/types/PSC';\nimport Icon from '~/components/core/icon';\n\n/**\n * Component for client-side user progress metrics.\n * Combines checklist data with progress from local storage,\n * calculates percentage completion for each priority level,\n * and renders some pretty pie charts to visualize results\n */\nexport default component$(() => {\n\n  // All checklist data, from store\n  const checklists = useContext(ChecklistContext);\n  // Completed items, from local storage\n  const [checkedItems] = useLocalStorage('PSC_PROGRESS', {});\n  // Ignored items, from local storage\n  const [ignoredItems] = useLocalStorage('PSC_IGNORED', {});\n  // Local storage for closing and ignoring the welcome dialog\n  const [ignoreDialog, setIgnoreDialog] = useLocalStorage('PSC_CLOSE_WELCOME', false);\n  // Store to hold calculated progress results\n  const totalProgress = useSignal({ completed: 0, outOf: 0 });\n  // Ref to the radar chart canvas\n  const radarChart  = useSignal<HTMLCanvasElement>();\n  // Completion data for each section\n  const sectionCompletion =  useSignal<number[]>([]);\n\n  /**\n   * Calculates the users progress over specified sections.\n   * Given an array of sections, reads checklists in each,\n   * counts total number of checklist items\n   * counts the number of completed items from local storage\n   * and returns the percentage of completion\n   */\n  const calculateProgress = $((sections: Sections): { completed: number, outOf: number } => {\n    if (!checkedItems.value || !sections.length) {\n      return { completed: 0, outOf: 0 };\n    }\n    let totalItems = sections.reduce((total: number, section: Section) => total + section.checklist.length, 0);\n    let totalComplete = 0;\n    sections.forEach((section: Section) => {\n      section.checklist.forEach((item) => {\n        const id = item.point.toLowerCase().replace(/ /g, '-');\n        const isComplete = checkedItems.value[id];\n        const isIgnored = ignoredItems.value[id];\n        if (isComplete) {\n          totalComplete++;\n        }\n        if (isIgnored) {\n          totalItems--;\n        }\n      });\n    });\n    return { completed: totalComplete, outOf: totalItems };\n    // return Math.round((totalComplete / totalItems) * 100);\n  });\n\n  /**\n   * Filters the checklist items in a given array of sections,\n   * so only the ones of a given priority are returned\n   * @param sections - Array of sections to filter\n   * @param priority - The priority to filter by\n   */\n  const filterByPriority = $((sections: Sections, priority: Priority): Sections => {\n    const normalize = (pri: string) => pri.toLowerCase().replace(/ /g, '-');\n    return sections.map(section => ({\n      ...section,\n      checklist: section.checklist.filter(item => normalize(item.priority) === normalize(priority))\n    }));\n  });\n\n  /**\n   * Draws a completion chart using ProgressBar.js\n   * Illustrating a given percent rendered to a given target element\n   * @param percentage - The percentage of completion (0-100)\n   * @param target - The ID of the element to draw the chart in\n   * @param color - The color of the progress chart, defaults to Tailwind primary\n   */\n  const drawProgress = $((percentage: number, target: string, color?: string) => {\n    // Get a given color value from Tailwind CSS variable\n    const getCssVariableValue = (variableName: string, fallback = '') => {\n      return getComputedStyle(document.documentElement)\n        .getPropertyValue(variableName)\n        .trim()\n      || fallback;\n    }\n    // Define colors and styles for progress chart\n    const primaryColor = color || 'hsl(var(--pf, 220, 13%, 69%))';\n    const foregroundColor = 'hsl(var(--nc, 220, 13%, 69%))';\n    const red = `hsl(${getCssVariableValue('--er', '0 91% 71%')})`;\n    const green = `hsl(${getCssVariableValue('--su', '158 64% 52%')})`;\n    const labelStyles = {\n      color: foregroundColor, position: 'absolute', right: '0.5rem',  top: '2rem'\n    };\n    // Animations to occur on each step of the progress bar\n    const stepFunction = (state: any, bar: any) => {\n      const value = Math.round(bar.value() * 100);\n      bar.path.setAttribute('stroke', state.color);\n      bar.setText(value ? `${value}%` : '');\n      if (value >= percentage) {\n        bar.path.setAttribute('stroke', primaryColor);\n      }\n    };\n    // Define config settings for progress chart\n    const progressConfig = {\n      strokeWidth: 6,\n      trailWidth: 3,\n      color: primaryColor,\n      trailColor: foregroundColor,\n      text: { style: labelStyles },\n      from: { color: red },\n      to: { color: green },\n      step: stepFunction,\n    };\n    // Initiate ProgressBar.js passing in config, to draw the progress chart\n    import('progressbar.js').then((ProgressBar) => {\n      const line = new ProgressBar.SemiCircle(target, progressConfig);\n      line.animate(percentage / 100);\n    });\n  });\n\n  /**\n   * Given a priority, filters the checklist, calculates data, renders chart\n   * @param priority - The priority to filter by\n   * @param color - The color override for the chart\n   */\n  const makeDataAndDrawChart = $((priority: Priority, color?: string) => {\n    filterByPriority(checklists.value, priority)\n    .then((sections: Sections) => {\n      calculateProgress(sections)\n        .then((progress) => {\n          const { completed, outOf } = progress;\n          const percent = Math.round((completed / outOf) * 100)\n          drawProgress(percent, `#${priority}-container`, color)\n        })\n    });\n  });\n\n  /**\n   * When the window has loaded (client-side only)\n   * Initiate the filtering, calculation and rendering of progress charts\n   */\n  useOnWindow('load', $(() => {\n\n    calculateProgress(checklists.value)\n      .then((progress) => {\n        totalProgress.value = progress;\n    })\n\n    makeDataAndDrawChart('essential', 'hsl(var(--su, 158 64% 52%))');\n    makeDataAndDrawChart('optional', 'hsl(var(--wa, 43 96% 56%))');\n    makeDataAndDrawChart('advanced', 'hsl(var(--er, 0 91% 71%))');\n  }));\n\n\n  /**\n   * Calculates the percentage of completion for each section\n   */\n  useOnWindow('load', $(async () => {\n    sectionCompletion.value = await Promise.all(checklists.value.map(section => {\n      return calculateProgress([section]).then(\n        (progress) => Math.round(progress.completed / progress.outOf * 100)\n      );\n    }));\n  }));\n\n\n  interface RadarChartData {\n    labels: string[];\n    datasets: {\n      label: string;\n      data: number[];\n      [key: string]: any; // Anything else goes!\n    }[];\n  }\n\n  /**\n   * Builds the multi-dimensional data used for the radar chart\n   * based on each section, each level of priority, and the progress\n   * @param sections - The sections to build data from\n   */\n  const makeRadarData = $((sections: Sections): Promise<RadarChartData> => {\n    // The labels for the corners of the chart, based on sections\n    const labels = sections.map((section: Section) => section.title);\n    // Items applied to every dataset\n    const datasetTemplate = {\n      borderWidth: 1,\n    };\n    // Helper function to asynchronously calculate percentage\n    const calculatePercentage = async (section: Section, priority: Priority) => {\n      const filteredSections = await filterByPriority([section], priority);\n      const progress = await calculateProgress(filteredSections);\n      return progress.outOf > 0 ? (progress.completed / progress.outOf) * 100 : 0;\n    };\n  \n    // Asynchronously build data for each priority level\n    const buildDataForPriority = (priority: Priority, color: string) => {\n      return Promise.all(sections.map(section => calculatePercentage(section, priority)))\n        .then(data => ({\n          ...datasetTemplate,\n          label: priority.charAt(0).toUpperCase() + priority.slice(1),\n          data: data,\n          backgroundColor: color,\n        }));\n    };\n  \n    // Wait on each set to resolve, and return the final data object\n    return Promise.all([\n      buildDataForPriority('advanced', 'hsl(0 91% 71%/75%)'),\n      buildDataForPriority('optional', 'hsl(43 96% 56%/75%)'),\n      buildDataForPriority('essential', 'hsl(158 64% 52%/75%)'),      \n    ]).then(datasets => ({\n      labels,\n      datasets,\n    }));\n  });\n  \n  \n\n  useOnWindow('load', $(() => {\n    Chart.register(...registerables);\n\n    makeRadarData(checklists.value).then((data) => {\n      if (radarChart.value) {\n        new Chart(radarChart.value, {\n          type: 'radar',\n          data,\n          options: {\n            responsive: true,\n            scales: {\n              r: {\n                angleLines: {\n                  display: true,\n                  color: '#7d7d7da1',\n                },\n                suggestedMin: 0,\n                suggestedMax: 100,\n                ticks: {\n                  stepSize: 25,\n                  callback: (value) => `${value}%`,\n                  color: '#ffffffbf',\n                  backdropColor: '#ffffff3b',\n                },\n                grid: {\n                  display: true,\n                  color: '#7d7d7dd4',\n                },\n              },\n            },\n            plugins: {\n              legend: {\n                position: 'bottom',\n                labels: {\n                  font: {\n                    size: 10,\n                  },\n                },\n              },\n              tooltip: {\n                callbacks: {\n                  label: (ctx) => `Completed ${Math.round(ctx.parsed.r)}% of ${ctx.dataset.label || ''} items`,\n                }\n              }\n            },\n          }\n        });\n        \n      }\n    });\n  }));\n\n  const items = [\n    { id: 'essential-container', label: 'Essential' },\n    { id: 'optional-container', label: 'Optional' },\n    { id: 'advanced-container', label: 'Advanced' },\n  ];\n\n  // Beware, some god-awful markup ahead (thank Tailwind for that!)\n  return (\n  <div class=\"flex justify-center flex-wrap items-stretch gap-6 mb-4 relative\">\n    {(!ignoreDialog.value && (!Object.keys(checkedItems.value).length) ) && (\n    <div class=\"\n      px-16 py-8 top-1/3 z-10 max-w-lg\n      absolute flex flex-col justify-center bg-gray-600 rounded-md bg-clip-padding\n      backdrop-filter backdrop-blur-md bg-opacity-40 border border-stone-800\">\n        <button\n          class=\"absolute top-1 right-1 btn btn-sm opacity-50\"\n          onClick$={() => setIgnoreDialog(true)}\n          >Close</button>\n        <p class=\"text-xl block text-center font-bold\">No stats yet</p>\n        <p class=\"w-md text-left my-2\">You'll see your progress here, once you start ticking items off the checklists</p>\n        <p class=\"w-md text-left my-2\">Get started, by selecting a checklist below</p>\n      </div>\n    )}\n\n    <div class=\"flex justify-center flex-col items-center gap-6\">\n      {/* Progress Percent */}\n      <div class=\"rounded-box bg-front shadow-md w-96 p-4\">\n        <h3 class=\"text-primary text-2xl\">Your Progress</h3>\n        <p class=\"text-lg\">\n          You've completed <b>{totalProgress.value.completed} out of {totalProgress.value.outOf}</b> items\n        </p>\n        <progress\n          class=\"progress w-80\"\n          value={totalProgress.value.completed}\n          max={totalProgress.value.outOf}>\n        </progress>\n      </div>\n    \n      {/* Completion per level */}\n      <div class=\"carousel rounded-box\">\n      {items.map((item) => (\n        <div\n          key={item.id}\n          class=\"flex flex-col justify-items-center carousel-item w-20 p-4\n                bg-front shadow-md mx-2.5 rounded-box\">\n          <div class=\"relative\" id={item.id}></div>\n          <p class=\"text-center\">{item.label}</p>\n        </div>\n        ))}\n      </div>\n      {/* Something ??? */}\n      <div class=\"p-4 rounded-box bg-front shadow-md w-96 flex-grow\">\n        <p class=\"text-sm opacity-80 mb-2\">\n          Next up, consider switching to more secure and\n          privacy-respecting apps and services.\n        </p>\n        <p class=\"text-lg\">\n          View our directory of recommended software,\n          at <a class=\"link link-secondary font-bold\" href=\"https://awesome-privacy.xyz\">awesome-privacy.xyz</a>\n        </p>\n      </div>\n    </div>\n\n    {/* Radar Chart showing total progress per category and level */}\n    <div class=\"rounded-box bg-front shadow-md w-96 p-4\">\n      <canvas ref={radarChart} id=\"myChart\"></canvas>\n    </div>\n\n    <div class=\"justify-center flex-col items-center gap-6 hidden xl:flex\">\n      {/* Remaining Tasks */}\n      <div class=\"p-4 rounded-box bg-front shadow-md w-96 flex-grow\">\n        <ul>\n          { checklists.value.map((section: Section, index: number) => (\n              <li key={index}>\n                <a\n                  href={`/checklist/${section.slug}`}\n                  class={[\n                    'my-2 w-80 flex justify-between items-center tooltip transition',\n                    `hover:text-${section.color}-400`\n                  ]}\n                  data-tip={`Completed ${sectionCompletion.value[index]}% of ${section.checklist.length} items.`}\n                >\n                <p class=\"text-sm m-0 flex items-center text-left gap-1 text-nowrap overflow-hidden max-w-40\">\n                  <Icon icon={section.icon} width={14} />\n                  {section.title}\n                </p>\n                <div class=\"progress w-36\">\n                  <span \n                    class={`block h-full transition bg-${section.color}-400`}\n                    style={`width: ${sectionCompletion.value[index] || 0}%;`}></span>\n                </div>\n                </a>\n              </li>\n          ))}\n        </ul>\n      </div>\n    </div>\n  </div>\n  );\n});\n\n"
  },
  {
    "path": "web/src/components/psc/psc.module.css",
    "content": "\n.container {\n  /* I couldn't figure out how to do this with Tailwind.... */\n  grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\n}\n\n.checklistItemDescription {\n  a {\n    text-decoration: underline;\n  }\n}\n"
  },
  {
    "path": "web/src/components/psc/section-link-grid.tsx",
    "content": "import { $, component$, useOnWindow, useSignal } from \"@builder.io/qwik\";\n\nimport { useLocalStorage } from \"~/hooks/useLocalStorage\";\nimport type { Checklist, Section } from '~/types/PSC';\nimport Icon from '~/components/core/icon';\nimport styles from './psc.module.css';\n\nexport default component$((props: { sections: Section[] }) => {\n\n  // Create signals to store the number of items done or ignored per section\n  const completions =  useSignal<number[]>();\n  const done =  useSignal<number[]>();\n\n  // Get the IDs of completed and ignore items from local storage\n  const [checked] = useLocalStorage('PSC_PROGRESS', {});\n  const [ignored] = useLocalStorage('PSC_IGNORED', {});\n\n  /**\n   * Get the percentage of completion for a given section\n   * using completion data from local storage, and disregarding ignored items\n   */\n  const getPercentCompletion = $((section: Section): number => {\n    const id = (item: Checklist) => item.point.toLowerCase().replace(/ /g, '-')\n    const total = section.checklist.filter((item) => !ignored.value[id(item)]).length;\n    const done = section.checklist.filter((item) => checked.value[id(item)]).length;\n    return Math.round((done / total) * 100);\n  });\n\n  // On load (in browser only), calculate and set completion data for sections\n  useOnWindow('load', $(async () => {\n    // Percentage completion, per section\n    completions.value = await Promise.all(props.sections.map(section => \n      getPercentCompletion(section),\n    ));\n    // Count of completed items, per section\n    done.value = await Promise.all(props.sections.map(section => \n      section.checklist.filter(\n        (item) => checked.value[item.point.toLowerCase().replace(/ /g, '-')],\n      ).length\n    ));\n  }));\n\n  return (\n    <div class={[styles.container, 'grid',\n      'mx-auto mt-8 px-4 gap-7', 'xl:px-10 xl:max-w-7xl',\n      'transition-all', 'max-w-6xl w-full']}>\n      {props.sections.map((section: Section, index: number) => (                   \n        <a key={section.slug}\n          href={`/checklist/${section.slug}`}\n          class={[\n            'card card-side bg-front bg-opacity-25 shadow-md transition-all px-2',\n            `outline-offset-2 outline-${section.color}-400`,\n            'hover:outline hover:outline-10 hover:outline-offset-4 hover:bg-opacity-15',\n            `hover:bg-${section.color}-600`\n          ]}\n        >\n          <div class=\"flex-shrink-0 flex flex-col py-4 h-auto items-stretch justify-evenly\">\n            <Icon icon={section.icon || 'star'} color={section.color} />\n            {(done.value && done.value[index]) ? (\n              <p class={`text-${section.color}-400 pt-2 pb-0 px-0 mx-0 my-0`}>\n                {done.value[index]}/{section.checklist.length} Done\n              </p>\n            ) : (\n              <p class={`text-${section.color}-400 pt-2 pb-0 px-0 mx-0 my-0`}>\n                {section.checklist.length} Items\n              </p>\n            )}\n          </div>\n          <div class=\"card-body flex-grow py-2 pl-4 pr-0\">\n            <h2 class={`card-title text-${section.color}-400 hover:text-${section.color}-500`}>\n              {section.title}\n            </h2>\n            <p class=\"p-0\">{section.description}</p>\n            {(completions.value && completions.value[index]) ? (\n              <div\n                class={['radial-progress absolute right-2 top-2 scale-75', `text-${section.color}-400`]}\n                style={`--value:${completions.value[index]}; --size: 2.5rem;`}\n                role=\"progressbar\">\n                  <span class=\"text-xs\">{completions.value[index]}%</span>\n              </div>\n            ) : (\n              <span class=\"absolute right-2 top-2 opacity-30 text-xs\">\n                Not yet started\n              </span>\n            )}\n          </div>\n        </a>\n      ))}\n    </div>\n  );\n});\n"
  },
  {
    "path": "web/src/components/router-head/router-head.tsx",
    "content": "import { useDocumentHead, useLocation } from \"@builder.io/qwik-city\";\n\nimport { component$ } from \"@builder.io/qwik\";\n\nexport const RouterHead = component$(() => {\n  const head = useDocumentHead();\n  const loc = useLocation();\n\n  return (\n    <>\n      {/* Basics */}\n      <title>{head.title || 'Digital Defense - The ultimate personal security checklist to secure your digital life'}</title>\n      <meta name=\"description\" content=\"The ultimate personal security checklist to secure your digital life\" />\n      \n      {/* Site config */}\n      <link rel=\"canonical\" href={loc.url.href} />\n      <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n      <link rel=\"icon\" type=\"image/png\" href=\"/favicon.png\" />\n      <link rel=\"apple-touch-icon\" href=\"/favicon.png\" />\n      <meta name=\"theme-color\" content=\"#6419e6\" />\n      <link rel=\"manifest\" href=\"/manifest.json\" />\n\n      {/* Open Graph / Facebook */}\n      <meta property=\"og:type\" content=\"website\" />\n      <meta property=\"og:url\" content={loc.url.href} />\n      <meta property=\"og:title\" content=\"Digital Defense - The ultimate personal security checklist to secure your digital life\" />\n      <meta property=\"og:description\" content=\"The ultimate personal security checklist to secure your digital life\" />\n      <meta property=\"og:image\" content=\"/banner.png\" />\n\n      {/* Twitter */}\n      <meta name=\"twitter:card\" content=\"summary_large_image\" />\n      <meta name=\"twitter:url\" content={loc.url.href} />\n      <meta name=\"twitter:title\" content=\"Digital Defense - The ultimate personal security checklist to secure your digital life\" />\n      <meta name=\"twitter:description\" content=\"The ultimate personal security checklist to secure your digital life\" />\n      <meta name=\"twitter:image\" content=\"/banner.png\" />\n\n      {head.meta.map((m) => (\n        <meta key={m.key} {...m} />\n      ))}\n\n      {head.links.map((l) => (\n        <link key={l.key} {...l} />\n      ))}\n\n      {head.styles.map((s) => (\n        <style key={s.key} {...s.props} dangerouslySetInnerHTML={s.style} />\n      ))}\n\n      {head.scripts.map((s) => (\n        <script key={s.key} {...s.props} dangerouslySetInnerHTML={s.script} />\n      ))}\n      <script defer data-domain=\"digital-defense.io\" src=\"https://no-track.as93.net/js/script.js\"></script>\n    </>\n  );\n});\n"
  },
  {
    "path": "web/src/components/starter/icons/qwik.tsx",
    "content": "export const QwikLogo = ({\n  width = 100,\n  height = 35,\n}: {\n  width?: number;\n  height?: number;\n}) => (\n  <svg\n    width={width}\n    height={height}\n    viewBox=\"0 0 167 53\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <path\n      d=\"M81.9545 46.5859H75.5513V35.4045C73.4363 36.8579 71.0496 37.5749 68.4884 37.5749C65.0151 37.5749 62.4344 36.6253 60.8239 34.6487C59.2134 32.6915 58.3984 29.2034 58.3984 24.2231C58.3984 19.1266 59.3492 15.5997 61.2702 13.5456C63.23 11.4721 66.3734 10.4644 70.7004 10.4644C74.7946 10.4644 78.5201 11.0264 81.9545 12.131V46.5859ZM75.5513 16.278C74.096 15.8323 72.4661 15.6191 70.7004 15.6191C68.5272 15.6191 66.9749 16.1811 66.1017 17.3244C65.2479 18.4871 64.7823 20.6962 64.7823 23.9712C64.7823 27.0524 65.1897 29.1065 66.0435 30.2304C66.8973 31.335 68.3719 31.897 70.5452 31.897C73.3781 31.897 75.5513 30.7343 75.5513 29.2809V16.278Z\"\n      fill=\"white\"\n    />\n    <path\n      d=\"M91.133 11.1426C93.4033 17.4406 95.3242 23.7386 96.993 30.0948C99.205 23.5836 101.087 17.2856 102.542 11.1426H108.15C110.265 17.4406 112.031 23.7386 113.447 30.0948C115.97 23.196 117.949 16.8787 119.404 11.1426H125.71C123.033 20.173 120.064 28.777 116.785 36.8966H109.256C108.402 32.3039 107.044 26.7617 105.22 20.1536C104.056 25.2889 102.445 30.8893 100.33 36.8966H92.8018C90.2793 27.5174 87.5434 18.9522 84.6328 11.1426H91.133Z\"\n      fill=\"white\"\n    />\n    <path\n      d=\"M132.832 7.55758C129.999 7.55758 129.203 6.85996 129.203 3.97257C129.203 1.39523 130.018 0.794495 132.832 0.794495C135.665 0.794495 136.46 1.39523 136.46 3.97257C136.46 6.85996 135.665 7.55758 132.832 7.55758ZM129.649 11.1426H136.053V36.8966H129.649V11.1426Z\"\n      fill=\"white\"\n    />\n    <path\n      d=\"M166.303 11.1426C161.763 17.5956 158.581 21.5295 156.815 22.9441C158.27 23.8937 162.17 28.8933 167.002 36.916H159.628C153.613 27.7887 150.742 23.8549 149.325 23.2542V36.916H142.922V0H149.325V23.2348C150.78 22.169 153.963 18.1382 158.872 11.1426H166.303Z\"\n      fill=\"white\"\n    />\n    <path\n      d=\"M40.973 52.5351L32.0861 43.6985L31.9503 43.7179V43.621L13.0511 24.9595L17.708 20.4637L14.9721 4.76715L1.99103 20.8513C-0.220992 23.0798 -0.628467 26.7036 0.962635 29.3778L9.07337 42.8265C10.3152 44.9 12.566 46.1402 14.9915 46.1208L19.0081 46.082L40.973 52.5351Z\"\n      fill=\"#18B6F6\"\n    />\n    <path\n      d=\"M45.8232 20.5411L44.038 17.2468L43.1066 15.5609L42.738 14.902L42.6992 14.9408L37.8094 6.47238C36.587 4.34075 34.2974 3.02301 31.8137 3.04239L27.5255 3.15865L14.7384 3.19741C12.313 3.21679 10.101 4.49577 8.87853 6.56927L1.09766 21.9945L15.0101 4.72831L33.2496 24.7656L30.0091 28.0406L31.9495 43.7178L31.9689 43.679V43.7178H31.9301L31.9689 43.7565L33.4824 45.2293L40.8364 52.4187C41.1469 52.7094 41.6514 52.3606 41.4379 51.9924L36.8975 43.0589L44.8142 28.4282L45.0664 28.1375C45.1634 28.0212 45.2604 27.905 45.3381 27.7887C46.8904 25.6764 47.1038 22.8472 45.8232 20.5411Z\"\n      fill=\"#AC7EF4\"\n    />\n    <path\n      d=\"M33.3076 24.6882L15.0099 4.74774L17.61 20.3668L12.9531 24.882L31.9105 43.6985L30.203 28.0794L33.3076 24.6882Z\"\n      fill=\"white\"\n    />\n  </svg>\n);\n"
  },
  {
    "path": "web/src/data/articles.ts",
    "content": "\ninterface Article {\n  title: string;\n  description: string;\n  slug: string;\n  markdown: string;\n  warningMessage?: string;\n}\n\nconst articles: Article[] = [\n  {\n    title: 'Why security matters?',\n    description: 'Why your personal digital security and privacy needs to be taken seriously.',\n    slug: 'importance-of-digital-security',\n    markdown: 'https://raw.githubusercontent.com/Lissy93/personal-security-checklist/old-version/0_Why_It_Matters.md',\n  },\n  {\n    title: 'Security List: Short Version',\n    description: 'Main lists too long? Here\\'s the TL;DR',\n    slug: 'short-list',\n    markdown: 'https://raw.githubusercontent.com/Lissy93/personal-security-checklist/old-version/2_TLDR_Short_List.md',\n  },\n  {\n    title: 'Helpful Links',\n    description: 'Directory of links to additional tools, resources and information.',\n    slug: 'helpful-links',\n    markdown: 'https://raw.githubusercontent.com/Lissy93/personal-security-checklist/old-version/4_Privacy_And_Security_Links.md',\n    warningMessage: 'This article was written in 2020, and needs updating.',\n  },\n  {\n    title: 'Security Gadgets',\n    description: 'Handy hardware devices that can help protect your privacy and security.',\n    slug: 'privacy-gadgets',\n    markdown: 'https://raw.githubusercontent.com/Lissy93/personal-security-checklist/old-version/6_Privacy_and-Security_Gadgets.md',\n    warningMessage: 'This article is outdated and may contain incorrect information. '\n      +'It is recommended to verify the information before using any of the products listed.',\n  },\n  {\n    title: 'Privacy-Respecting Software',\n    description: 'The ultimate list of privacy-respecting software alternatives to popular apps and services.',\n    slug: 'awesome-privacy',\n    markdown: 'https://raw.githubusercontent.com/Lissy93/awesome-privacy/main/README.md',\n    warningMessage: 'This resource has moved! You can now access it at github.com/Lissy93/awesome-privacy',\n  },\n];\n\nexport default articles;\n"
  },
  {
    "path": "web/src/entry.dev.tsx",
    "content": "/*\n * WHAT IS THIS FILE?\n *\n * Development entry point using only client-side modules:\n * - Do not use this mode in production!\n * - No SSR\n * - No portion of the application is pre-rendered on the server.\n * - All of the application is running eagerly in the browser.\n * - More code is transferred to the browser than in SSR mode.\n * - Optimizer/Serialization/Deserialization code is not exercised!\n */\nimport { render, type RenderOptions } from \"@builder.io/qwik\";\nimport Root from \"./root\";\n\nexport default function (opts: RenderOptions) {\n  return render(document, <Root />, opts);\n}\n"
  },
  {
    "path": "web/src/entry.preview.tsx",
    "content": "/*\n * WHAT IS THIS FILE?\n *\n * It's the bundle entry point for `npm run preview`.\n * That is, serving your app built in production mode.\n *\n * Feel free to modify this file, but don't remove it!\n *\n * Learn more about Vite's preview command:\n * - https://vitejs.dev/config/preview-options.html#preview-options\n *\n */\nimport { createQwikCity } from \"@builder.io/qwik-city/middleware/node\";\nimport qwikCityPlan from \"@qwik-city-plan\";\nimport render from \"./entry.ssr\";\n\n/**\n * The default export is the QwikCity adapter used by Vite preview.\n */\nexport default createQwikCity({ render, qwikCityPlan });\n"
  },
  {
    "path": "web/src/entry.ssr.tsx",
    "content": "/**\n * WHAT IS THIS FILE?\n *\n * SSR entry point, in all cases the application is rendered outside the browser, this\n * entry point will be the common one.\n *\n * - Server (express, cloudflare...)\n * - npm run start\n * - npm run preview\n * - npm run build\n *\n */\nimport {\n  renderToStream,\n  type RenderToStreamOptions,\n} from \"@builder.io/qwik/server\";\nimport { manifest } from \"@qwik-client-manifest\";\nimport Root from \"./root\";\n\nexport default function (opts: RenderToStreamOptions) {\n  return renderToStream(<Root />, {\n    manifest,\n    ...opts,\n    // Use container attributes to set attributes on the html tag.\n    containerAttributes: {\n      lang: \"en-us\",\n      ...opts.containerAttributes,\n    },\n  });\n}\n"
  },
  {
    "path": "web/src/entry.vercel-edge.tsx",
    "content": "/*\n * WHAT IS THIS FILE?\n *\n * It's the entry point for Vercel Edge when building for production.\n *\n * Learn more about the Vercel Edge integration here:\n * - https://qwik.builder.io/docs/deployments/vercel-edge/\n *\n */\nimport {\n  createQwikCity,\n  type PlatformVercel,\n} from \"@builder.io/qwik-city/middleware/vercel-edge\";\nimport qwikCityPlan from \"@qwik-city-plan\";\nimport { manifest } from \"@qwik-client-manifest\";\nimport render from \"./entry.ssr\";\n\ndeclare global {\n  interface QwikCityPlatform extends PlatformVercel {}\n}\n\nexport default createQwikCity({ render, qwikCityPlan, manifest });\n"
  },
  {
    "path": "web/src/hooks/useLocalStorage.ts",
    "content": "import { $, type QRL, useOnWindow, useStore } from \"@builder.io/qwik\";\n\nexport function useLocalStorage(key: string, initialState: any): [any, QRL<(value: any) => void>]  {\n  const store = useStore({ value: initialState });\n\n  useOnWindow('load', $(() => {\n    try {\n      const item = window.localStorage.getItem(key);\n      if (!item) {\n        window.localStorage.setItem(key, JSON.stringify(initialState));\n      }\n      store.value = item ? JSON.parse(item) : initialState;\n    } catch (error) {\n      console.log(error);\n      store.value = initialState;\n    }\n  }));\n\n  const setValue$ = $((value: any) => {\n    try {\n      store.value = value;\n      if (typeof window !== \"undefined\") {\n        window.localStorage.setItem(key, JSON.stringify(value));\n      }\n    } catch (error) {\n      console.log(error);\n    }\n  });\n\n  return [store, setValue$];\n}\n"
  },
  {
    "path": "web/src/root.tsx",
    "content": "import { component$, useStyles$ } from \"@builder.io/qwik\";\nimport {\n  QwikCityProvider,\n  RouterOutlet,\n  ServiceWorkerRegister,\n} from \"@builder.io/qwik-city\";\nimport { RouterHead } from \"./components/router-head/router-head\";\n\nimport tailwind from './styles/tailwind.css?inline';\n\nimport \"./styles/global.css\";\n\nexport default component$(() => {\n\n  useStyles$(tailwind);\n  /**\n   * The root of a QwikCity site always start with the <QwikCityProvider> component,\n   * immediately followed by the document's <head> and <body>.\n   *\n   * Don't remove the `<head>` and `<body>` elements.\n   */\n\n  return (\n    <QwikCityProvider>\n      <head>\n        <meta charSet=\"utf-8\" />\n        <link rel=\"manifest\" href=\"/manifest.json\" />\n        <RouterHead />\n        <ServiceWorkerRegister />\n      </head>\n      <body lang=\"en\" data-theme=\"dark\" class=\"flex flex-col justify-between min-h-screen\">\n        <RouterOutlet />\n      </body>\n    </QwikCityProvider>\n  );\n});\n"
  },
  {
    "path": "web/src/routes/_404.tsx",
    "content": "// src/routes/_404.tsx\nimport { component$ } from '@builder.io/qwik';\n\nexport default component$(() => {\n  return (\n    <div>\n      <h1>404 Not Found</h1>\n      <p>The page you're looking for doesn't exist.</p>\n      <a href=\"/\">Go back to the homepage</a>\n    </div>\n  );\n});\n"
  },
  {
    "path": "web/src/routes/about/about-content.ts",
    "content": "export const intro = [\n  `The objective of this project is to give you practical guidance on how to improve your digital security, and protect your privacy online.`,\n  `\n  The checklist is a living document, and will be updated regularly to reflect the latest threats and best practices.\n  This is made possible by open sourcing the content, and making it a community maintained resource,\n  meaning that anyone can suggest changes, make additions or update the guidance.\n  All edits are then reviewed by maintainers before being merged and going live.\n  `];\n\nexport const contributing = [\n  `This project is only possible thanks to contributors like you!`,\n  `You can make changes to any of the checklist content, by editing `\n  + `[\\`personal-security-checklist.yml\\`](https://github.com/Lissy93/personal-security-checklist/blob/master/personal-security-checklist.yml)`,\n];\n\nexport const projects = [\n  {\n    title: 'Web-Check',\n    description: 'OSINT tool for analysing any website',\n    icon: 'https://icon.horse/icon/web-check.xyz',\n    link: 'https://github.com/lissy93/web-check',\n  },\n  {\n    title: 'Dashy',\n    description: 'Dashboard app, for organising your self-hosted services',\n    icon: 'https://dashy.to/img/dashy.png',\n    link: 'https://github.com/lissy93/dashy',\n  },\n  {\n    title: 'Email Comparison',\n    description: 'Objective comparison of private/secure mail providers',\n    icon: 'https://email-comparison.as93.net/favicon.png',\n    link: 'https://github.com/lissy93/email-comparison',\n  },\n  {\n    title: 'Awesome Privacy',\n    description: 'A list of privacy-respscting software and services',\n    icon: 'https://awesome-privacy.xyz/awesome-privacy.png',\n    link: 'https://github.com/lissy93/awesome-privacy',\n  },\n  {\n    title: 'Portainer-Templates',\n    description: 'Compiled repository of 1-click Docker apps for self-hosting',\n    icon: 'https://portainer-templates.as93.net/favicon.png',\n    link: 'https://github.com/lissy93/portainer-templates',\n  },\n  {\n    title: 'AdGuardian',\n    description: 'CLI tool for monitoring your networks traffic and AdGuard DNS stats',\n    icon: 'https://adguardian.as93.net/favicon.png',\n    link: 'https://github.com/lissy93/adguardian-term',\n  },\n  {\n    title: 'Bug-Bounties',\n    description: 'Database of websites which accept responsible vulnerability discolsure',\n    icon: 'https://bug-bounties.as93.net/favicon.png',\n    link: 'https://github.com/lissy93/bug-bounties',\n  },\n  {\n    title: 'Git-In',\n    description: 'Tools and resources to help beginners get into open source',\n    icon: 'https://www.git-in.to/favicon.png',\n    link: 'https://github.com/lissy93/git-in',\n  },\n];\n\nexport const socials = [\n  {\n    title: 'GitHub',\n    icon: 'hub',\n    link: 'https://github.com/lissy93',\n  },\n  {\n    title: 'Twitter',\n    icon: 'twitter',\n    link: 'https://x.com/lissy_sykes',\n  },\n  {\n    title: 'Mastodon',\n    icon: 'mastodon',\n    link: 'https://mastodon.social/@lissy93',\n  },\n  {\n    title: 'Dev',\n    icon: 'dev',\n    link: 'https://dev.to/lissy93',\n  },\n  {\n    title: 'LinkedIn',\n    icon: 'linkedin',\n    link: 'https://linkedin.com/in/aliciasykes',\n  },\n];\n\nexport const license = `\nThe MIT License (MIT)\nCopyright (c) Alicia Sykes <alicia@aliciasykes.com> \n\nPermission is hereby granted, free of charge, to any person obtaining a copy \nof this software and associated documentation files (the \"Software\"), to deal \nin the Software without restriction, including without limitation the rights \nto use, copy, modify, merge, publish, distribute, sub-license, and/or sell \ncopies of the Software, and to permit persons to whom the Software is furnished \nto do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included install \ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANT ABILITY, \nFITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL \nTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, \nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n`;\n"
  },
  {
    "path": "web/src/routes/about/index.tsx",
    "content": "import { component$, useResource$, Resource } from \"@builder.io/qwik\";\nimport type { DocumentHead } from \"@builder.io/qwik-city\";\n\nimport Icon from \"~/components/core/icon\";\nimport { projects, socials, intro, contributing, license } from './about-content';\nimport { marked } from \"marked\";\n\nexport default component$(() => {\n\n  interface Contributor {\n    login: string;\n    avatar_url: string;\n    avatarUrl: string;\n    html_url: string;\n    contributions: number;\n    name: string;\n  }\n\n  const parseMarkdown = (text: string | undefined): string => {\n    return marked.parse(text || '', { async: false }) as string || '';\n  };\n\n  const contributorsResource = useResource$<Contributor[]>(async () => {\n    const url = 'https://api.github.com/repos/lissy93/personal-security-checklist/contributors?per_page=100';\n    const response = await fetch(url);\n    if (!response.ok) {\n      throw new Error('Failed to fetch contributors');\n    }\n    return await response.json();\n  });\n\n  const sponsorsResource = useResource$<Contributor[]>(async () => {\n    const url = 'https://github-sponsors.as93.workers.dev/lissy93';\n    const response = await fetch(url);\n    if (!response.ok) {\n      throw new Error('Failed to fetch sponsors');\n    }\n    return await response.json();\n  });\n\n\n  return (\n    <div class=\"m-4 md:mx-16\">\n      <article class=\"bg-back p-8 mx-auto max-w-[1200px] m-8 rounded-lg shadow-md\">\n        <h2 class=\"text-3xl mb-2\">About the Security Checklist</h2>\n        {intro.map((paragraph, index) => (\n          <p class=\"mb-2\" key={index}>{paragraph}</p>\n        ))}        \n      </article>\n      <div class=\"divider\"></div>\n\n      <article class=\"bg-back p-8 mx-auto max-w-[1200px] m-8 rounded-lg shadow-md\">\n        <h2 class=\"text-3xl mb-2\">Contributing</h2>\n        {contributing.map((paragraph, index) => (\n          <p class=\"mb-2\" key={index} dangerouslySetInnerHTML={parseMarkdown(paragraph)}></p>\n        ))}        \n      </article>\n      <div class=\"divider\"></div>\n\n      <article class=\"bg-back p-8 mx-auto max-w-[1200px] m-8 rounded-lg shadow-md\">\n        <h2 class=\"text-3xl mb-2\">Acknowledgments</h2>\n\n\n        <h3 class=\"text-2xl mb-2\">Sponsors</h3>\n\n        <p>\n          Huge thanks to the following sponsors, for their ongoing support 💖\n        </p>\n\n        <div class=\"flex flex-wrap gap-4 my-4 mx-auto\">\n          <Resource\n              value={sponsorsResource}\n              onPending={() => <p>Loading...</p>}\n              onResolved={(contributors: Contributor[]) => (\n                contributors.map((contributor: Contributor) => (\n                  <a\n                    class=\"w-16 tooltip tooltip-bottom\"\n                    href={contributor.html_url || `https://github.com/${contributor.login}`}\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                    key={contributor.login}\n                    data-tip={`Thank you @${contributor.login}`}\n                  >\n                    <img\n                      class=\"avatar rounded\"\n                      width=\"64\" height=\"64\"\n                      src={contributor.avatar_url || contributor.avatarUrl}\n                      alt={contributor.login}\n                    />\n                    <p\n                      class=\"text-ellipsis overflow-hidden w-max-16 mx-auto line-clamp-2\"\n                    >{contributor.name || contributor.login}</p>\n                  </a>\n                ))\n              )}\n            />\n          </div>\n\n        <div class=\"divider\"></div>\n\n        <h3 class=\"text-2xl mb-2\">Contributors</h3>\n        <p>\n          This project exists thanks to all the people who've helped build and maintain it.<br />\n          Special thanks to the below, top-100 contributors 🌟\n        </p>\n        <div class=\"flex flex-wrap gap-4 my-4 mx-auto\">\n          <Resource\n            value={contributorsResource}\n            onPending={() => <p>Loading...</p>}\n            onResolved={(contributors: Contributor[]) => (\n              contributors.map((contributor: Contributor) => (\n                <a\n                  class=\"w-16 tooltip tooltip-bottom\"\n                  href={contributor.html_url}\n                  target=\"_blank\"\n                  rel=\"noopener noreferrer\"\n                  key={contributor.login}\n                  data-tip={`@${contributor.login} has contributed ${contributor.contributions} times\\n\\nClick to view their profile`}\n                >\n                  <img\n                    class=\"avatar rounded\"\n                    width=\"64\" height=\"64\"\n                    src={contributor.avatar_url}\n                    alt={contributor.login}\n                  />\n                  <p\n                    class=\"text-ellipsis overflow-hidden w-max-16 mx-auto\"\n                  >{contributor.login}</p>\n                </a>\n              ))\n            )}\n          />\n        </div>\n\n      </article>\n      <div class=\"divider\"></div>\n\n      <article class=\"bg-back p-8 mx-auto max-w-[1200px] my-8 rounded-lg shadow-md\">\n        <h2 class=\"text-3xl mb-2\" id=\"author\">About the Author</h2>\n          <p>\n            This project was originally started by\n            me, <a href=\"https://aliciasykes.com\" class=\"link link-primary\">Alicia Sykes</a>\n            - with a lot of help from the community.\n          </p>\n          <br />\n          <div class=\"ml-4 float-right\">\n            <img class=\"rounded-lg\" width=\"180\" height=\"240\" alt=\"Alicia Sykes\" src=\"https://i.ibb.co/fq10qhL/DSC-0597.jpg\" />\n            <div class=\"flex gap-2 my-2 justify-between\">\n              {\n                socials.map((social, index) => (\n                  <a key={index} href={social.link}>\n                    <Icon icon={social.icon} width={24} height={24} />\n                  </a>\n                ))\n              }\n            </div>\n          </div>\n          <p class=\"text-lg italic font-thin\">\n            I write apps which aim to help people <b>escape big tech, secure their data, and protect their privacy</b>.\n          </p>\n          <br />\n          <p>\n            I have a particular interest in self-hosting, Linux, security and OSINT.<br />\n            So if this type of stuff interests you, check out these other projects:\n          </p>\n          <ul class=\"list-disc pl-8\">\n            {\n              projects.map((project, index) => (\n                <li key={index}>\n                  <img class=\"rounded inline mr-1\" width=\"20\" height=\"20\" alt={project.title} src={project.icon} />\n                  <a href={project.link} class=\"link link-secondary\" target=\"_blank\" rel=\"noreferrer\">\n                    {project.title}\n                  </a> - {project.description}\n                </li>\n              ))\n            }\n          </ul>\n          <br />\n          <p>\n            For a more open source apps I've published,\n            see <a href=\"https://apps.aliciasykes.com/\" class=\"link link-primary\">apps.aliciasykes.com</a>,\n            or <a href=\"https://github.com/lissy93\" class=\"link link-primary\">follow me on GitHub</a>\n          </p>\n\n      </article>\n\n      <div class=\"divider\"></div>\n\n      <article class=\"bg-back p-8 mx-auto max-w-[1200px] m-8 rounded-lg shadow-md\">\n        <h2 class=\"text-3xl mb-2\">License</h2>\n        <p>\n          This project is split-licensed, with the checklist content (located\n          in <a class=\"link\" href=\"https://github.com/Lissy93/personal-security-checklist/blob/HEAD/personal-security-checklist.yml\">\n            <code>personal-security-checklist.yml</code>\n          </a>) being licensed\n          under <b><a href=\"https://creativecommons.org/licenses/by-nc-sa/4.0/\">CC BY-NC-SA 4.0</a></b>.\n          And everything else (including all the code), licensed\n          under <b><a href=\"https://gist.github.com/Lissy93/143d2ee01ccc5c052a17\">MIT</a></b>.\n        </p>\n        <pre class=\"bg-front whitespace-break-spaces rounded text-xs my-2 mx-auto p-2\">\n          {license}\n        </pre>\n        <details class=\"collapse\">\n          <summary class=\"collapse-title\">\n            <h3 class=\"mt-2\">What does this means for you?</h3>\n          </summary>\n          <div class=\"collapse-content\">\n            <p class=\"mb-2\">\n              This means that for everything (except the checklist YAML file), you have almost unlimited freedom to\n              use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of this software.\n              All that we ask is that you include the original copyright notice and permission notice in any copies of the software\n            </p>\n            <p class=\"mb-2\">\n              And for the security-list content you can share and adapt this content as long as you give appropriate credit,\n              don't use it for commercial purposes, and distribute your contributions under the same license.\n            </p>\n          </div>\n        </details>\n\n      </article>\n\n    </div>\n  );\n});\n\nexport const head: DocumentHead = {\n  title: \"About | Digital Defense\",\n  meta: [\n    {\n      name: \"description\",\n      content: \"This project aims to give you practical guidance on how to improve your digital security, and protect your privacy online\",\n    },\n  ],\n};\n"
  },
  {
    "path": "web/src/routes/article/[slug]/article.module.css",
    "content": ".psc_article {\n  img {\n    display: inline;\n    margin: 0 auto;\n    border-radius: 4px;\n  }\n}\n"
  },
  {
    "path": "web/src/routes/article/[slug]/index.tsx",
    "content": "// src/routes/articles/[slug].tsx\nimport { component$, Resource, useResource$, useStore } from '@builder.io/qwik';\nimport { type DocumentHead, useLocation } from '@builder.io/qwik-city';\nimport { marked } from \"marked\";\n\nimport articles from '~/data/articles';\n\nimport styles from './article.module.css';\n\nexport default component$(() => {\n  const location = useLocation();\n  const store = useStore({ article: null, notFound: false });\n\n  const slug = location.params.slug;\n  const article = articles.find(a => a.slug === slug);\n\n  // useDocumentHead(() => {\n  //   if (!article) {\n  //     return {\n  //       title: '404 Not Found | Your Site Name',\n  //       meta: [{ name: 'description', content: 'The requested article was not found.' }],\n  //     };\n  //   }\n\n  //   return {\n  //     title: `${article.title} | Your Site Name`,\n  //     meta: [{ name: 'description', content: article.description }],\n  //   };\n  // });\n\n  const parseMarkdown = (text: string | undefined): string => {\n    if (!text) return '';\n\n    // Custom renderer\n    const renderer = new marked.Renderer();\n\n    // Override function to handle headings\n    renderer.heading = (text, level) => {\n      const escapedText = text.toLowerCase().replace(/[^\\w]+/g, '-');\n      return `<h${level} id=\"${escapedText}\">${text}</h${level}>`;\n    };\n\n    // Override function to handle links\n    renderer.link = (href, title, text) => {\n      if (href.startsWith('/')) {\n        href = `https://github.com/Lissy93/personal-security-checklist/blob/old-version/${href}`;\n      }\n      title = title ? `title=\"${title}\"` : '';\n      return `<a href=\"${href}\" ${title} target=\"_blank\" rel=\"noopener noreferrer\">${text}</a>`;\n    };\n\n    // Sanitize the input to remove <script> tags\n    const sanitizeHtml = (html: string): string => {\n      return html.replace(/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi, '');\n    };\n\n    // Configure marked with the custom renderer\n    marked.use({ renderer });\n\n    // Parse the markdown, then sanitize the HTML to remove <script> tags\n    const rawHtml = marked.parse(text, { async: false}) as string;\n    const sanitizedHtml = sanitizeHtml(rawHtml);\n\n    return sanitizedHtml;\n  };\n\n\n  const articleResource = useResource$<string>(async () => {\n    if (!article) {\n      store.notFound = true;\n      return '';\n    }\n\n    const response = await fetch(article.markdown);\n    if (!response.ok) {\n      store.notFound = true;\n      return '';\n    }\n    return response.text();\n  });\n\n  if (store.notFound) {\n    return <div>404 Article Not Found</div>;\n  }\n\n  return (\n\n\n    <Resource\n      value={articleResource}\n      onResolved={(content) => (\n        <article class={[\n          'prose bg-back my-4 mx-auto rounded-lg shadow-lg p-8',\n          'max-w-max sm:w-11/12 md:w-4/5 xl:w-3/4 2xl:2/4',\n          styles.psc_article\n          ]}>\n\n          {article?.warningMessage && (\n          <div role=\"alert\" class=\"alert alert-warning opacity-75 mb-4\">\n            <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"stroke-current shrink-0 h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\">\n              <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n              d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\" />\n            </svg>\n            <span><b>Warning</b>: {article.warningMessage}</span>\n          </div>\n          )}\n\n          <div dangerouslySetInnerHTML={parseMarkdown(content)}></div>\n        </article>\n      )}\n    />\n  );\n});\n\nexport const head: DocumentHead = {\n  title: \"Article | Digital Defense\",\n  meta: [\n    {\n      name: \"description\",\n      content: \"\",\n    },\n  ],\n};\n\n"
  },
  {
    "path": "web/src/routes/article/index.tsx",
    "content": "// src/routes/articles/index.tsx\nimport { component$ } from '@builder.io/qwik';\nimport articles from '~/data/articles';\n\nexport default component$(() => {\n\n  return (\n    <div class=\"px-8 py-4\">\n      <div class=\"bg-back shadow-md rounded-box min-h-96 px-4 py-8\">\n        \n      <h2 class=\"text-4xl mb-4\">Articles</h2>\n      <ul class=\"flex flex-col gap-4\">\n        {articles.map(article => (\n          <li key={article.slug}\n            class=\"rounded-box bg-front shadow-md p-4 max-w-96 drop-shadow-md\n            transition hover:drop-shadow-xl hover:scale-105\"\n            >\n            <a href={`/article/${article.slug}`}>\n              <h3 class=\"text-2xl mb-2\">{article.title}</h3>\n              <p class=\"text-lg\">{article.description}</p>\n            </a>\n          </li>\n        ))}\n      </ul>\n\n      </div>\n    </div>\n  );\n});\n"
  },
  {
    "path": "web/src/routes/checklist/[title]/index.tsx",
    "content": "import { component$, useContext } from '@builder.io/qwik';\nimport { useLocation } from '@builder.io/qwik-city';\nimport { marked } from 'marked';\n\nimport Icon from '~/components/core/icon';\nimport { ChecklistContext } from '~/store/checklist-context';\nimport type { Section } from \"~/types/PSC\";\nimport Table from '~/components/psc/checklist-table';\n\nexport default component$(() => {\n\n  const checklists = useContext(ChecklistContext);\n\n  const loc = useLocation();\n  const slug = loc.params.title;\n\n  const section: Section | undefined = (checklists.value)\n    .find((item: Section) => item.slug === slug);\n\n  const parseMarkdown = (text: string | undefined): string => {\n    return marked.parse(text || '', { async: false }) as string || '';\n  };\n  \n  return (\n    <div class=\"md:my-8 md:px-16 sm:px-2 rounded-md\">\n    <article class=\"bg-back p-8 mx-auto w-full max-w-[1200px] rounded-lg shadow-md\">\n      <h1 class={['gap-2 text-5xl font-bold capitalize flex']}>\n        <Icon height={36} width={36} icon={section?.icon || 'star'}  />\n        {section?.title}\n      </h1>\n      <p class=\"py-2\" dangerouslySetInnerHTML={parseMarkdown(section?.intro)}></p>\n\n      <div class=\"overflow-x-auto\">\n        {section && (<Table section={section} />)}\n      </div>\n\n      {section && section.softwareLinks && (\n        <>\n        <div class=\"divider my-4\">Useful Links</div>\n        <h3 class=\"text-xl my-2\">Recommended Software</h3>\n          <ul class=\"list-disc pl-4\">\n          {section.softwareLinks.map((link, index) => (\n            <li key={index}>\n              <a class=\"link link-primary\" href={link.url} title={link.description}>{link.title}</a>\n            </li>\n          ))}\n          </ul>\n        </>\n      )}\n\n    </article>\n    </div>\n  );\n});\n\n"
  },
  {
    "path": "web/src/routes/checklist/index.tsx",
    "content": "import { component$, useContext } from \"@builder.io/qwik\";\n\nimport { ChecklistContext } from '~/store/checklist-context';\nimport { useLocalStorage } from \"~/hooks/useLocalStorage\";\nimport { useChecklist } from '~/store/local-checklist-store';\nimport type { Section } from \"~/types/PSC\";\n\nexport default component$(() => {\n  const checklists = useContext(ChecklistContext);\n  const localChecklist = useChecklist();\n\n  const [completed, setCompleted] = useLocalStorage('PSC_PROGRESS', {});\n\n  return (\n    <main class=\"p-8\">\n      <div class=\"join join-vertical w-full\">\n        {(localChecklist.checklist.checklist || checklists.value).map((section: Section, index: number) => (\n          <div key={index} class={['collapse collapse-plus bg-base-200 my-4', `border-double border-2 border-${section.color}-400`]}>\n            <input type=\"radio\" name=\"my-accordion-3\" /> \n            <div class={['collapse-title text-xl font-medium']}>\n              <h3>{section.title}</h3>\n            </div>\n            <div class=\"collapse-content\"> \n              {\n                section.checklist.map((item, index) => {\n                  const pointId = item.point.toLowerCase().replace(/ /g, '-');\n                  return (\n                  <div key={index} class=\"flex justify-between\">\n                    <label class=\"flex items gap-2\" for={`check-${index}`}>\n                      <input\n                        class=\"checkbox checkbox-sm\"\n                        id={`check-${index}`}\n                        type=\"checkbox\"\n                        checked={completed.value[pointId] || false}\n                        onClick$={() => {\n                          const data = completed.value;\n                          data[pointId] = !data[pointId];\n                          setCompleted(data);\n                        }}\n                      />\n                      <span class=\"tooltip tooltip-bottom\" data-tip={item.details}>{item.point}</span>\n                    </label>\n                  </div>\n                )\n              })\n              }\n              <div class=\"card-actions justify-end\">\n                <a href={`/checklist/${section.slug}`}>\n                  <button class={`btn text-base-100 bg-${section.color}-400 hover:bg-${section.color}-600`}>\n                    View Full Checklist ➜\n                  </button>\n                </a>\n              </div>\n            </div>\n          </div>\n        ))}\n      </div>\n    </main>\n  );\n});\n"
  },
  {
    "path": "web/src/routes/index.tsx",
    "content": "import { component$, useContext } from '@builder.io/qwik';\nimport { type DocumentHead } from \"@builder.io/qwik-city\";\n\nimport Hero from \"~/components/furniture/hero\";\nimport SectionLinkGrid from \"~/components/psc/section-link-grid\";\nimport Progress from \"~/components/psc/progress\";\n\nimport { ChecklistContext } from '~/store/checklist-context';\n\nimport { useChecklist } from '~/store/local-checklist-store';\n\nexport default component$(() => { \n  const checklists = useContext(ChecklistContext);\n\n  const localChecklist = useChecklist();\n\n  return (\n    <>\n      <Hero />\n      <Progress />\n      <SectionLinkGrid sections={localChecklist.checklist.checklist || checklists.value} />\n    </>\n  );\n});\n\nexport const head: DocumentHead = {\n  title: \"Digital Defense\",\n  meta: [\n    {\n      name: \"description\",\n      content: \"The ultimate personal security checklist, for securing your digital life.\",\n    },\n  ],\n};\n"
  },
  {
    "path": "web/src/routes/layout.tsx",
    "content": "import { component$, useContextProvider, Slot } from \"@builder.io/qwik\";\nimport { routeLoader$, type RequestHandler } from \"@builder.io/qwik-city\";\nimport jsyaml from \"js-yaml\";\n\nimport Navbar from \"~/components/furniture/nav\";\nimport Footer from \"~/components/furniture/footer\";\nimport { ChecklistContext } from \"~/store/checklist-context\";\nimport type { Sections } from \"~/types/PSC\";\n\nexport const useChecklists = routeLoader$(async () => {\n  const remoteUrl = 'https://raw.githubusercontent.com/Lissy93/personal-security-checklist/HEAD/personal-security-checklist.yml';\n  return fetch(remoteUrl)\n    .then((res) => res.text())\n    .then((res) => jsyaml.load(res) as Sections)\n    .catch(() => []);\n});\n\nexport const onGet: RequestHandler = async ({ cacheControl }) => {\n  cacheControl({\n    staleWhileRevalidate: 60 * 60 * 24 * 7,\n    maxAge: 5,\n  });\n};\n\nexport default component$(() => {\n  const checklists = useChecklists();\n  useContextProvider(ChecklistContext, checklists);\n\n  return (\n    <>\n      <Navbar />\n      <main class=\"bg-base-100 min-h-full\">\n        <Slot />\n      </main>\n      <Footer />\n    </>\n  );\n});\n"
  },
  {
    "path": "web/src/routes/service-worker.ts",
    "content": "/*\n * WHAT IS THIS FILE?\n *\n * The service-worker.ts file is used to have state of the art prefetching.\n * https://qwik.builder.io/qwikcity/prefetching/overview/\n *\n * Qwik uses a service worker to speed up your site and reduce latency, ie, not used in the traditional way of offline.\n * You can also use this file to add more functionality that runs in the service worker.\n */\nimport { setupServiceWorker } from \"@builder.io/qwik-city/service-worker\";\n\nsetupServiceWorker();\n\naddEventListener(\"install\", () => self.skipWaiting());\n\naddEventListener(\"activate\", () => self.clients.claim());\n\ndeclare const self: ServiceWorkerGlobalScope;\n"
  },
  {
    "path": "web/src/store/checklist-context.ts",
    "content": "import { type Signal } from '@builder.io/qwik';\nimport { createContextId } from '@builder.io/qwik';\n\nimport type { Sections } from '../types/PSC';\n\nexport const ChecklistContext = createContextId<Signal<Sections>>(\n  'psc.ChecklistContext'\n);\n"
  },
  {
    "path": "web/src/store/local-checklist-store.ts",
    "content": "\nimport { $, useStore, useOnWindow } from '@builder.io/qwik';\nimport jsyaml from 'js-yaml';\nimport type { Sections } from '~/types/PSC';\n\nexport const useChecklist = () => {\n  const state = useStore<{ checklist: Sections | null }>({ checklist: null });\n\n  const fetchChecklist = $(async () => {\n    const localUrl = '/personal-security-checklist.yml';\n    return fetch(localUrl)\n      .then((res) => res.text())\n      .then((yamlText) => {\n        return jsyaml.load(yamlText);\n      });\n  });\n\n  useOnWindow('load', $(() => {\n    fetchChecklist().then((checklist) => {\n      state.checklist = checklist as Sections;\n    });\n  }));\n\n  const setChecklist = $((newChecklist: Sections) => {\n    state.checklist = newChecklist;\n  });\n\n  return { checklist: state, setChecklist };\n};\n"
  },
  {
    "path": "web/src/store/theme-store.ts",
    "content": "import { useStore, useOnWindow, $ } from '@builder.io/qwik';\n\nimport { useLocalStorage } from '~/hooks/useLocalStorage';\n\nconst STORAGE_KEY = 'PSC_THEME';\nconst defaultTheme = 'dark';\n\nexport const useTheme = () => {\n  const [theme, saveTheme] = useLocalStorage(STORAGE_KEY, defaultTheme);\n  const state = useStore({ theme: theme.value });\n\n  useOnWindow('load', $(() => {\n    const storedTheme = theme.value || defaultTheme;\n    state.theme = storedTheme;\n    document.getElementsByTagName('body')[0].setAttribute('data-theme', storedTheme);\n  }));\n\n  const setTheme = $((newTheme: string) => {\n    saveTheme(newTheme);\n    state.theme = newTheme;\n    document.getElementsByTagName('body')[0].setAttribute('data-theme', newTheme);\n  });\n\n  return { theme: state, setTheme };\n};\n\n"
  },
  {
    "path": "web/src/styles/global.css",
    "content": "@import url('https://fonts.googleapis.com/css2?family=Catamaran:wght@900&family=Poppins&display=swap');\n\nh1, h2, h3, h4, h5, h6 {\n  font-family: 'Catamaran', sans-serif;\n}\n\np, a, li, span {\n  font-family: 'Poppins', sans-serif;\n}\n"
  },
  {
    "path": "web/src/styles/tailwind.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n"
  },
  {
    "path": "web/src/types/PSC.ts",
    "content": "\nexport interface PersonalSecurityChecklist {\n  sections: Section[],\n}\n\nexport type Sections = Section[];\n\nexport interface Section {\n  title: string,\n  slug: string,\n  description: string,\n  intro: string,\n  icon: string,\n  color: string,\n  checklist: Checklist[],\n  softwareLinks?: Link[],\n  helpfulTools?: Link[],\n  furtherResources?: Link[],\n}\n\nexport type Priority = 'essential' | 'optional' | 'advanced';\n\nexport interface Checklist {\n  point: string,\n  priority: Priority,\n  details: string,\n}\n\nexport interface Link {\n  title: string,\n  url: string,\n  description?: string,\n}\n"
  },
  {
    "path": "web/src/types/progressbar.d.ts",
    "content": "declare module 'progressbar.js';\n"
  },
  {
    "path": "web/src/types/vite-plugin-copy.d.ts",
    "content": "declare module 'vite-plugin-copy';\n"
  },
  {
    "path": "web/tailwind.config.js",
    "content": "\n\nconst applyCustomColors = (theme, front, back) => {\n  return {\n    ...require(\"daisyui/src/theming/themes\")[`[data-theme=${theme}]`],\n    \"--front\":front,\n    \"--back\": back || `${front} /0.75`,\n  };\n};\n\nmodule.exports = {\n  content: ['./src/**/*.{js,ts,jsx,tsx,mdx}'],\n  plugins: [require('daisyui'), require(\"@tailwindcss/typography\")],\n  theme: {\n    extend: {\n      colors: {\n        \"front\": \"hsl(var(--front, 0deg 0% 60% / 10%))\",\n        \"back\": \"hsl(var(--back, 212 14% 10% / 1))\",\n      },\n    },\n  },\n  daisyui: {\n    themes: [\n      { light: applyCustomColors(\"light\", \"237 9% 86% / 0.75\", \"237 9% 86% / 1\") },\n      { dark: applyCustomColors(\"dark\", \"217 14% 17%\", \"212 14% 10%\") },\n      { night: applyCustomColors(\"night\", \"220deg 44.68% 9.22%\", \"219.2, 38.2%, 13.3%\") },\n\n      { cupcake: applyCustomColors(\"cupcake\", \"297deg 77% 90%\", \"303.33deg 60% 94.12%\") },\n      { bumblebee: applyCustomColors(\"bumblebee\", \"75.5deg 40% 87%\", \"60deg 23.08% 92.35%\") },\n      { corporate: applyCustomColors(\"corporate\", \"211.67deg 43.9% 83.92%\", \"212.3, 25.5%, 90%\") },\n      { synthwave: applyCustomColors(\"synthwave\", \"253.3, 58.1%, 12.2%\", \"253.5, 47.6%, 16.5%\") },\n      { retro: applyCustomColors(\"retro\", \"41.9, 37.1%, 72%\", \"42.5, 36.4%, 87.1%\") },\n      { valentine: applyCustomColors(\"valentine\", \"320.4, 70.7%, 85.3%\", \"322.1, 61.3%, 93.9%\") },\n      { halloween: applyCustomColors(\"halloween\", \"0, 0%, 9%\", \"0, 0%, 16.9%\") },\n      { aqua: applyCustomColors(\"aqua\", \"230.5, 41%, 27.3%\", \"230.8, 33.9%, 22.5%\") },\n      { lofi: applyCustomColors(\"lofi\", \"228, 11.6%, 91.6%\") },\n      { fantasy: applyCustomColors(\"fantasy\", \"230.8, 33.9%, 22.5%\", \"210, 2.3%, 83.1%\") },\n      { dracula: applyCustomColors(\"dracula\", \"210, 2.3%, 83.1%, 0.03\", \"228, 20%, 14.7%\") },\n    ],\n  },\n  safelist: [\n    { // TODO: This adds a lot of overhead. Go through code, and remove any un-needed variants.\n      pattern: /(bg|outline|text|tw-color|border)-(yellow|lime|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|red)-(200|300|400|500|600)/,\n      variants: ['light', 'dark', 'hover', 'focus'],\n    },\n    {\n      pattern: /(badge|bg|checkbox|toggle)-(success|warning|error|info|neutral)/,\n      variants: ['light', 'dark', 'hover', 'focus', 'checked'],\n    }\n  ],\n};\n"
  },
  {
    "path": "web/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"allowJs\": true,\n    \"target\": \"ES2017\",\n    \"module\": \"ES2022\",\n    \"lib\": [\"es2022\", \"DOM\", \"WebWorker\", \"DOM.Iterable\"],\n    \"jsx\": \"react-jsx\",\n    \"jsxImportSource\": \"@builder.io/qwik\",\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"resolveJsonModule\": true,\n    \"moduleResolution\": \"node\",\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"incremental\": true,\n    \"isolatedModules\": true,\n    \"outDir\": \"tmp\",\n    \"noEmit\": true,\n    \"types\": [\"node\", \"vite/client\"],\n    \"paths\": {\n      \"~/*\": [\"./src/*\"],\n    },\n  },\n  \"files\": [\"./.eslintrc.cjs\"],\n  \"include\": [\"src\", \"./*.d.ts\", \"./*.config.ts\"],\n}\n"
  },
  {
    "path": "web/vercel.json",
    "content": "{\n  \"headers\": [\n    {\n      \"source\": \"/build/(.*)\",\n      \"headers\": [\n        {\n          \"key\": \"Cache-Control\",\n          \"value\": \"public, max-age=31536000, s-maxage=31536000, immutable\"\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "web/vite.config.mts",
    "content": "import { defineConfig, type UserConfig } from \"vite\";\nimport { qwikVite } from \"@builder.io/qwik/optimizer\";\nimport { qwikCity } from \"@builder.io/qwik-city/vite\";\nimport tsconfigPaths from \"vite-tsconfig-paths\";\nimport { viteStaticCopy } from 'vite-plugin-static-copy'\n\nexport default defineConfig((): UserConfig => {\n  return {\n    plugins: [\n      qwikCity(),\n      qwikVite(),\n      tsconfigPaths(),\n      viteStaticCopy({\n        targets: [\n          {\n            src: '../personal-security-checklist.yml',\n            dest: 'public'\n          }\n        ]\n      })\n    ],\n    server: {\n      headers: {\n        \"Cache-Control\": \"public, max-age=0\",\n      },\n    },\n    preview: {\n      headers: {\n        \"Cache-Control\": \"public, max-age=600\",\n      },\n    },\n  };\n});\n"
  }
]