This search engine does not index child sexual abuse material. We do not want to be the only index that recognises it either, so we publish what we have confirmed: an md5 hash for every image we blacklisted, on the Tor and I2P sides together, and an md5 hash for every onion service and every eepsite that served one of them. Another search engine can use the same hashes to filter the same material out of its results. The lists are identical on both of our mirrors.
This page in other languages: English · 日本語 · 繁體中文 · 简体中文 · Русский · Español · Español (México) · Português · Português (Brasil) · Deutsch · Italiano · Polski
The lists come from our own moderation, not from a third party: an image is blacklisted when our review tools or a vetted, human-confirmed signature identify it as child sexual abuse material or as related illegal material, and every onion service and eepsite we found serving one of those images is recorded with it. Nothing in these lists is a guess, and nothing is listed because of the name of a site or because of a keyword.
A hash is a one-way value. It identifies content, and it cannot be turned back into the content. We publish hashes and not images, an address is published only as a hash, and neither list can be used to find the material. They are made to recognise it and to leave it out.
Each line of the image list is the md5 hash of the bytes of one image our moderation blacklisted, on either network, exactly as the md5sum utility computes it for the same file:
md5sum <file>
Because the hash follows the bytes, the same image has the same hash wherever it is served from, whatever it is called and however it was re-encoded. That is the property that makes the list useful, and it is also why a hash identifies content and never a person.
Each line of the onion list is the md5 hash of one onion hostname, taken over the lowercase address including its .onion suffix. This is the same recipe ahmia.fi publishes:
echo -n "abcdefghijklmnopqrstuvwxyz234567abcdefghijklmnopqrstuvab.onion" | md5sum
For the example address abcdefghijklmnopqrstuvwxyz234567abcdefghijklmnopqrstuvab.onion the result is d8604171b8f0441a72a574c3661d9d58.
The address itself is never published in this list. A service appears here when one of the images we blacklisted was actually served from it, not because it links to something, not because of what it is called, and not because the host is blocked for another reason.
The I2P list follows the same rule for eepsites. Each line is the md5 hash of one I2P hostname, taken over the lowercase address including its suffix: a b32 address with its .b32.i2p ending, a named eepsite with its .i2p one:
echo -n "abcdefghijklmnopqrstuvwxyz234567abcdefghijklmnopqrst.b32.i2p" | md5sum
For the example address abcdefghijklmnopqrstuvwxyz234567abcdefghijklmnopqrst.b32.i2p the result is 4c5e146a233d1c32593e385bbd27c355.
As on the Tor side, the address itself is never published. An eepsite appears here when one of the images we blacklisted was actually served from it.
All three lists are plain text: one 32-character lowercase md5 hash per line, nothing else, no header and no comments. They are rebuilt and republished regularly and served with a twelve-hour cache.
A hash in these lists is a record of what we found and blacklisted, not proof that whoever served it still does.
Hash what you serve with the same rule, an image file or a hostname, and compare the result against these lists. A match means we hold a moderation verdict for it: for an image, that a reviewer or a confirmed signature marked it as child sexual abuse material; for a host, that it served such an image. Neither list is complete, and a host can start serving blacklisted material after the last time we looked at it.