Awesome
<div align="center"> <img src=".github/images/logo.png" width="600" alt="logo" longdesc="https://github.com/T145/black-mirror/master/README.md" /> <h3>๐ Reflection | ๐ฟ Redundancy | โ Reliability</h3> <hr> <p>Aiming to promote privacy, security, and safety across the internet!</p> <hr> <a href="https://github.com/humanetech-community/awesome-humane-tech#awesome-humane-tech--"> <img src="https://raw.githubusercontent.com/humanetech-community/awesome-humane-tech/main/humane-tech-badge.svg?sanitize=true" alt="humane-tech" longdesc="https://raw.githubusercontent.com/humanetech-community/awesome-humane-tech/main/humane-tech-badge.svg" crossorigin="anonymous" referrerpolicy="no-referrer" /> </a> <a href="https://github.com/T145/black-mirror/commits/master.atom"> <img src="https://img.shields.io/static/v1?logo=rss&label=RSS&message=feed&color=FFA500" alt="release" longdesc="https://github.com/badges/shields/" crossorigin="anonymous" referrerpolicy="no-referrer" /> </a> <a href="https://bestpractices.coreinfrastructure.org/projects/6372"> <img src="https://bestpractices.coreinfrastructure.org/projects/6372/badge"> </a> </div> <div align="center"> <a href="https://github.com/T145/black-mirror"> <img src="https://img.shields.io/github/repo-size/T145/black-mirror?logo=adblock&style=flat&label=Repo%20Size" alt="repo-size" longdesc="https://shields.io/" crossorigin="anonymous" referrerpolicy="no-referrer" /> </a> <a href="https://github.com/T145/black-mirror"> <img src="https://img.shields.io/github/commit-activity/w/T145/black-mirror?logo=adblock&style=flat&label=Commit%20Activity" alt="commit-activity" longdesc="https://shields.io/" crossorigin="anonymous" referrerpolicy="no-referrer" /> </a> <a href="https://hits.seeyoufarm.com/#history"> <img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FT145%2Fblack-mirror&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=Traffic+%28Daily%2FTotal%29&edge_flat=false" alt="traffic" longdesc="https://hits.seeyoufarm.com" crossorigin="anonymous" referrerpolicy="no-referrer" /> </a> </div> <div align="center"> <img src="https://img.shields.io/github/actions/workflow/status/T145/black-mirror/publish_lists.yml?branch=master&label=Release&logo=github" alt="release" longdesc="https://github.com/badges/shields/" crossorigin="anonymous" referrerpolicy="no-referrer" /> <a href="https://www.dropbox.com/sh/lg4i0sjexubhcz6/AABO35HOVeK7Z0VHXN9MTp_ya?dl=0"> <img src="https://img.shields.io/static/v1?logo=dropbox&label=Dropbox&message=builds&color=0061FF" alt="release" longdesc="https://github.com/badges/shields/" crossorigin="anonymous" referrerpolicy="no-referrer" /> </a> <a href="https://github.com/T145/black-mirror/pkgs/container/black-mirror"> <img src="https://img.shields.io/github/actions/workflow/status/T145/black-mirror/publish_docker.yml?branch=master&color=%232496ED&label=Docker&logo=docker" alt="docker" longdesc="https://github.com/badges/shields/" crossorigin="anonymous" referrerpolicy="no-referrer" /> </a> </div> <div align="center"> <sub> <em>Made with ๐ by</em> </sub> </div> <div align="center"> <a href="https://github.com/T145" target="_blank"> <img width=200px height=75px src="https://glitch-image.vercel.app/api?text=T145" /> </a> </div>๐ Deliverables
<table> <thead> <tr> <th>List Name</th> <th>File Content</th> <th>Unique Entries</th> <th>File Size</th> <th>Mirror</th> </tr> </thead> <tbody> <tr> <td>BLOCK_DOMAIN</td> <td>Punycode domains</td> <td id="BLOCK-DOMAIN-line-count">8,277,438</td> <td id="BLOCK-DOMAIN-file-size">176M</td> <td align="center"><a href="https://github.com/T145/black-mirror/releases/download/latest/BLOCK_DOMAIN.txt">๐</a></td> </tr> <tr> <td>BLOCK_IPV4</td> <td>IPv4 addresses</td> <td id="BLOCK-IPV4-line-count">1,288,183</td> <td id="BLOCK-IPV4-file-size">18M</td> <td align="center"><a href="https://github.com/T145/black-mirror/releases/download/latest/BLOCK_IPV4.txt">๐</a></td> </tr> <tr> <td>BLOCK_IPV6</td> <td>IPv6 addresses</td> <td id="BLOCK-IPV6-line-count">648</td> <td id="BLOCK-IPV6-file-size">20K</td> <td align="center"><a href="https://github.com/T145/black-mirror/releases/download/latest/BLOCK_IPV6.txt">๐</a></td> </tr> <tr> <td>BLOCK_CIDR4</td> <td>IPv4 CIDR blocks</td> <td id="BLOCK-CIDR4-line-count">10,302</td> <td id="BLOCK-CIDR4-file-size">169K</td> <td align="center"><a href="https://github.com/T145/black-mirror/releases/download/latest/BLOCK_CIDR4.txt">๐</a></td> </tr> <tr> <td>BLOCK_CIDR6</td> <td>IPv6 CIDR blocks</td> <td id="BLOCK-CIDR6-line-count">211</td> <td id="BLOCK-CIDR6-file-size">3.5K</td> <td align="center"><a href="https://github.com/T145/black-mirror/releases/download/latest/BLOCK_CIDR6.txt">๐</a></td> </tr> <tr> <td>ALLOW_DOMAIN</td> <td>Punycode domains</td> <td id="ALLOW-DOMAIN-line-count">706,441</td> <td id="ALLOW-DOMAIN-file-size">14M</td> <td align="center"><a href="https://github.com/T145/black-mirror/releases/download/latest/ALLOW_DOMAIN.txt">๐</a></td> </tr> <tr> <td>ALLOW_IPV4</td> <td>IPv4 addresses</td> <td id="ALLOW-IPV4-line-count">75,472</td> <td id="ALLOW-IPV4-file-size">1.1M</td> <td align="center"><a href="https://github.com/T145/black-mirror/releases/download/latest/ALLOW_IPV4.txt">๐</a></td> </tr> <tr> <td>ALLOW_IPV6</td> <td>IPv6 addresses</td> <td id="ALLOW-IPV6-line-count">2,953</td> <td id="ALLOW-IPV6-file-size">112K</td> <td align="center"><a href="https://github.com/T145/black-mirror/releases/download/latest/ALLOW_IPV6.txt">๐</a></td> </tr> <tr> <td>ALLOW_CIDR4</td> <td>IPv4 CIDR blocks</td> <td id="ALLOW-CIDR4-line-count">6,980</td> <td id="ALLOW-CIDR4-file-size">108K</td> <td align="center"><a href="https://github.com/T145/black-mirror/releases/download/latest/ALLOW_CIDR4.txt">๐</a></td> </tr> <tr> <td>ALLOW_CIDR6</td> <td>IPv6 CIDR blocks</td> <td id="ALLOW-CIDR6-line-count">148,885</td> <td id="ALLOW-CIDR6-file-size">2.4M</td> <td align="center"><a href="https://github.com/T145/black-mirror/releases/download/latest/ALLOW_CIDR6.txt">๐</a></td> </tr> </tbody> </table>The whitelists are applied to all the blacklists!
Source Code
๐งฎ Checksum Evaluation
sha256sum CHECKSUMS.txt --strict
The output will print OK
if the check was successful. Be sure to run the command in the same directory as the lists!
๐ Fetching GitHub Releases
Provided below are some examples to fetch release artifacts leveraging the GitHub API.
Get all build artifacts
curl --proto '=https' --tlsv1.3 -H 'Accept: application/vnd.github.v3+json' -sSf https://api.github.com/repos/T145/black-mirror/releases/latest | jq -r '.assets[].browser_download_url'
Get a build artifact & its checksum
curl --proto '=https' --tlsv1.3 -H 'Accept: application/vnd.github.v3+json' -sSf https://api.github.com/repos/T145/black-mirror/releases/latest | jq -r '.assets[] | select(.name | startswith("BLOCK_DOMAIN")).browser_download_url'
Get a single build artifact
curl --proto '=https' --tlsv1.3 -H 'Accept: application/vnd.github.v3+json' -sSf https://api.github.com/repos/T145/black-mirror/releases/latest | jq -r '.assets[] | select(.name | startswith("BLOCK_DOMAIN")) | select(.name | endswith(".txt")).browser_download_url'
๐๏ธ Manifesto
Please report any hosts or lists that do not align in an issue.
Black Mirror
stands on three pillars: privacy, security, and safety.
- Privacy:
- Whitelist services like trusted torrenting providers, VPNs, and Tor.
- Blacklist deanonymized telemetry, data brokers, ad redirects, and stalkerware.
- Security:
- Whitelist services that promote security AND privacy.
- Blacklist illegal or sketchy sites and known malicious actors.
- Blacklist advertising to avoid the risks of malvertising.
- Safety:
- Blacklist deliberate misinformation, irreputable news sources, propaganda, etc.
- Blacklist vices such as vaping and smoking that cause individual harm.
- Use GitHub's non-allowance policies at-scale where possible.
- Acknowledge technological harm, and do what can be done in this project to prevent it.
While Black Mirror
censors content beyond privacy and security, it does not seek to do so irresponsibly.
Many other popular blacklists say they block specific hosts for certain reasoning, and when combed through turn out to have many false positives, or blocks that fall outside that reasoning. Black Mirror
aims to be different by being as transparent as possible. It's open to critique, and encourages community feedback and involvement.
The real power behind the freedom of speech is the ability to hear many opinions to quickly deduce those that are correct or reasonable.
โBefore you become too entranced with gorgeous gadgets and mesmerizing video displays, let me remind you that information is not knowledge, knowledge is not wisdom, and wisdom is not foresight. Each grows out of the other, and we need them all.โ
โ Arthur C. Clarke
Table of contents
On Spyware/Stalkerware
<p align="center"> <a href="https://www.youtube.com/watch?v=I5WjTTi67BE"><img src="https://res.cloudinary.com/marcomontalbano/image/upload/v1633709643/video_to_markdown/images/youtube--I5WjTTi67BE-c05b58ac6eb4c4700831b2b3070cd403.jpg" alt="GitHub Top Languages" longdesc="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md" crossorigin="anonymous" referrerpolicy="no-referrer" width="500" /></a> <a href="https://www.ted.com/talks/eva_galperin_what_you_need_to_know_about_stalkerware/transcript?language=en&utm_campaign=black_mirror&utm_medium=referral&utm_source=github_com_T145/black-mirror"><img src="https://pi.tedcdn.com/r/s3.amazonaws.com/talkstar-photos/uploads/43595f89-1962-4904-8034-ee2d26971f7b/EvaGalperin_2019W-embed.jpg?op=%5E&c=1280%2C720&gravity=t&u%5Br%5D=2&u%5Bs%5D=0.5&u%5Ba%5D=0.8&u%5Bt%5D=0.03&quality=82&w=1280&h=720" alt="GitHub Top Languages" longdesc="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md" crossorigin="anonymous" referrerpolicy="no-referrer" width="500" /></a> </p>These services intrude on privacy, are usually malware, and compromise individual safety. Therefore any known parties are blocked.
โThere will come a time when it isn't 'They're spying on me through my phone' anymore. Eventually, it will be 'My phone is spying on me'.โ
โ Philip K. Dick
On Propaganda
<p align="center"> <a href="https://www.ted.com/talks/andrew_marantz_inside_the_bizarre_world_of_internet_trolls_and_propagandists/transcript?language=en&utm_campaign=black_mirror&utm_medium=referral&utm_source=github_com_T145/black-mirror"><img src="https://pi.tedcdn.com/r/s3.amazonaws.com/talkstar-photos/uploads/db5bcc6b-ea54-4c76-a43a-1d0a5b5e5adc/AndrewMarantz_2019-embed.jpg?op=%5E&c=1280%2C720&gravity=t&u%5Br%5D=2&u%5Bs%5D=0.5&u%5Ba%5D=0.8&u%5Bt%5D=0.03&quality=82&w=1280&h=720" alt="GitHub Top Languages" longdesc="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md" crossorigin="anonymous" referrerpolicy="no-referrer" width="500" /></a> </p>If it promotes any "knee-jerk contrarian" viewpoints, a website will only be blocked if they are a majority (>50%) of its content. As an example, because we have conclusive evidence on the fact that the Earth is round from the time of Eratosthenes, sites that feature contradictory viewpoints as an opinion majority get blocked.
โTrue liberty consists only in the power of doing what we ought to will, and in not being constrained to do what we ought not to will.โ
โ Jonathan Edwards
โMake decency cool again.โ
โ Andrew Marantz
On Social Media
The Zuckerburg Institute of Virology
Facebook/Meta
Due to consistent privacy and security concerns, this platform will be blocked.
References
Owned by Facebook, but does not have majority support on issues that would get the site blocked. Its trackers and such will be blocked.
Owned and heavily monitored by Facebook. Communications may be secure between users, but are monitored by Facebook. It also has a track record of significant security concerns. All services will be blocked.
References
Though the cause of most internet drama, this platform is also where many cybersecurity community members communicate and collaborate. While it has compromised privacy and serves personalized ads, the platform itself will remain unblocked to promote cybersecurity communities. Its trackers and such will be blocked.
While there are harmful subreddits, they are not in the majority. Many have actually been banned, so this will remain unblocked. Its trackers and such will be blocked.
Snapchat
Largely supports privacy, even though there are some security concerns. It will remain unblocked.
References
Tumblr
Blocked due to being largely marginalized with the potential of any subdomain to breach any pillar.
TikTok
Blocked due to countless privacy concerns, regardless of its Chinese affiliations.
References
- Times: TikTok Privacy Concerns
- Forbes: American Surveilance (Referenced by the above article)
- Forbes: Spying on Forbes Journalists
๐ Attributes
- Produced in builds specific to each host's syntax.
- Updates at 1:27 AM UTC.
- No excess or trailing whitespace.
- No lingering webscraper garbage.
- Lines are terminated with
lf
. - No blank lines.
- No comments.
๐ ๏ธ List Usage
Hosts File
mawk '{print "0.0.0.0 " $0}' BLOCK_DOMAIN.txt >>hosts
# mawk '{print ":: " $0}' BLOCK_DOMAIN.txt >>hosts
mawk '{print "0.0.0.0 " $0}' BLOCK_IPV4.txt >>hosts
mawk '{print ":: " $0}' BLOCK_IPV6.txt >>hosts
Dnsmasq
Many popular platforms such as OpenWRT, DDWRT, and Pi-hole use Dnsmasq as their choice TCP powerhouse. After inspecting many domain blocklists you'll inevitably run across a list in the dnsmasq.conf
format. This list doesn't support it because you can use the addn-hosts
parameter to add hosts in the list.
Target a file that has the hosts in a format similar to the Hosts File format.
If you're using the RADVD
daemon, prepend any listed hosts with ::
. Otherwise, even if you have IPv6 support set up, prepend hosts with 0.0.0.0
.
This has been tested across all the mentioned platforms using dig{6}
on a small sample size and had each host null-routed successfully. DNSmasq's man page discusses configuration further, and DDWRT's ad blocking wiki page provides some examples.
Amazon EC2 DNS Resolver
Follow this guide to create a DNS server on an Amazon EC2 instance.
Pi-hole / personalDNSfilter
Domain list usage is recommended.
Unbound
Similar to dnsmasq, but requires more manual configuration. Name any products as a *.conf file. Then follow Steffinstanly's instructions on how to apply blocklists.
AdGuard
Leverage the ADGUARD_SOURCES.txt
list or the domain list.
๐ Docker Usage
Temporary Container
docker container run -u 0 -it --rm -h black-mirror ghcr.io/t145/black-mirror
Persistant Container
docker container run -u 0 -it --name black-mirror -h black-mirror ghcr.io/t145/black-mirror
Then to access the container at a later date, run:
docker start black-mirror
docker exec -u 0 -it black-mirror /bin/bash
Building the Image
docker build --no-cache --progress=plain -t black-mirror .
๐จโ๐ป Development
Workspace Setup
Install Docker, PNPM, and NodeJS. These can usually be installed with a popular package manager.
The specific Node version used in this project is provided in .node-version
, but any version over 16
should work.
With Docker running in the background, execute pnpm lint
to debug any changes.
๐ก๏ธ Privacy Protectors
Good causes that help secure your digital life.
- Stop using Cloudflare!
- Keep up with Chinese activity!
- Use a pcWRT to easily secure your internet!
- Test your browser's tracking resilience with CoverYourTracks!
- Support LetsBlockIt to consolidate and simplify uBlock filters!
- Explore PrivacyGuides and Prism Break to discover services that respect your privacy!
- Use BypassPaywalls to access restricted and useful information, such as the WSJ's Facebook Files.
- Skip over URL shortener links by using FastForward, which is a better alternative to outright domain blocking.
๐ถ Notes
Need for speed
- https://fossies.org/linux/parallel/src/parsort
- https://unix.stackexchange.com/questions/579251/how-to-use-parallel-to-speed-up-sort-for-big-files-fitting-in-ram#579252
- https://askubuntu.com/questions/1006377/check-the-max-allowed-threads-count-for-sure#1006384
- https://stackoverflow.com/questions/9066609/fastest-possible-grep
Some List References
- https://www.covert.io/threat-intelligence/
- https://filterlists.com/
- https://firebog.net/
- https://grimore.org/assets/databases/blocklist-ipsets
Lamers Unwelcome
Big Data Lists
Typically used by other blacklist projects as whitelists.
IP Block Providers
Simply provide IP blocks for entire geographic regions.