Scan report

Zero Breach Toolkit, version 0.1.6, run on this Mac 2026-10-28

One address, twenty-three saved records: what a spyware check found on this Mac

This page stands up one finished scan of a MacBook. It is the tool's own report, read back in plain words. It does not say the machine is clean and it does not say the machine is infected: it says what was looked at, what matched, and what could not be checked at all. The small raised numbers point at the sources table at the end.

The result

23 saved records matched one address from a list of 428 published spyware indicators. The address sits in the list under the family name Paragon Graphite (the name the indicator list gives that network), which has 23 indicators, and the tool describes it as advertising and tracking infrastructure belonging to that network.

The tool's own summary line is: RESULT: 1 indicator to review, recorded in 23 places; start with the saved context. Read that as one thing to look at, found 23 times.

23 records matched
one address
428published indicators compared against
34checks that could not run
0matches in the 149,186 files hashed and in the host checks
12 min 38 stime in the four modules' own timers

What “contacted” means here

All 23 matches carry the evidence grade contacted. The tool defines that grade as: the device demonstrably talked to it (a cookie it set, a secure-connection record, a download from it). In this case the record is a cookie: each match is a cookie named server_tracking_bdsp_uid (the name the advertising network gave it) that the address set in a browser profile on this Mac.

A match is evidence that needs interpretation by a qualified person. Read each finding's evidence grade: only a match of a known spyware file on disk is conclusive.

Advertising-network records alone do not show that you were selected for an exploit or infected. A connection can result from an ordinary ad.

Zero Breach Toolkit, in its required relay text and its human report

The tool's reporting code says the same thing in one line: The verdict for a hit is “investigate”, never “you are compromised” — an ad impression is not proof of infection. So the honest reading of this page is: something on this Mac contacted infrastructure a published investigation lists as spyware delivery, and that is worth a person looking into. It is not a finding that spyware is installed.

The five things the tool requires anyone to pass on

The report carries five statements it says must be relayed in full. They are copied here without editing.

  1. This tool only looks for publicly documented indicators of known spyware. It cannot detect new or unpublished spyware, and the traces this spyware leaves usually expire within weeks.
  2. Do not delete, move, open or 'clean' the matched files or records. Keep the device and this report as evidence.
  3. A match is evidence that needs interpretation by a qualified person. Read each finding's evidence grade: only a match of a known spyware file on disk is conclusive.
  4. Some checks could not run (listed under not_checked). Nothing was cleared in those places.
  5. Only the small built-in indicator set was used. The larger published sets were unavailable for this scan (missing, unreadable or refused). Run --update, review the source status, then scan again.

Two terms in those statements: not_checked, the report's own name for the list of checks that could not run, is the list in the gaps section below; and --update, a switch the toolkit is started with, downloads fresh indicator lists from the published sources before a scan.

What the scan actually looked at

The scan started 28 Oct 2026, 02:21 and the report was closed on 2026-10-28. Four modules ran on this Mac: browser records, file hashes, the hosts file, and Unix startup and log files. Each module reports how much it read and how long it took.

Each row is one module of the scan; the count is what that module reports it checked.
ModuleStatusWhat it readTime
Browser recordsdone56,969 records: 54,534 cache and storage files, 309 database files (SQLite, a single-file database), 47 desktop apps found, 22 secure-connection entries 678.7 s
File hashespartial149,186 files, 30,178,287,159 bytes (28.1 GiB); 12,324 links not followed 79.3 s
Hosts fileclean1 check: the hosts file, with 3 entries 0 s
Unix startup and logspartial1,036 places across 31 checks: shell history, shell profiles, launch items, system logs 0.4 s

How far back the records reach

The browser module found the oldest surviving web trace dated 2025-01-25, which is 640 days before the scan. Cookies reach back the same 640 days across 105 cookie stores. That is the oldest record that survived, not a continuous log: the tool's own note says the web cache is recycled within weeks, and that this date is often much older than the cache alone. That is why a date from 2025 can sit in a cookie found in 2026.

The honest oddity of browser evidence: page history reaches back further than the cache, but history records only page visits, and an ad loads inside a page. The tool puts it plainly: the long record cannot see ads, and the record that sees ads is not long. The 23 matches come from the short, ad-seeing record.

The records, grouped

Read the 23 matches together and they are one thing, seen nine times: one address, tracookiepixel[.]xyz, saved as cookies in 3 browser apps across 9 moments between 2025-08-22 and 2026-09-03. The tool counts 14 distinct artifacts behind those 23 records: the same cookie turns up in more than one profile, and repeated copies do not strengthen the result.

Each bar is one moment at which the address set a cookie on this Mac; the number above each bar is how many saved records carry that moment. Nine moments, 23 records in all.
The nine moments, oldest first. “Records” counts saved cookies stamped with that moment.
WhenRecordsApps
22 Aug 2025, 11:564Chrome, ego lite, Dia
5 Oct 2025, 15:363Chrome, ego lite, Dia
24 Dec 2025, 09:044Chrome, ego lite, Dia
13 Jan 2026, 11:383Chrome, ego lite, Dia
22 Jan 2026, 19:483Chrome, ego lite, Dia
27 Mar 2026, 15:002Chrome, ego lite
21 Apr 2026, 08:252Chrome, ego lite
17 Aug 2026, 18:421ego lite
3 Sep 2026, 18:461Chrome
Which browser app saved the records. Profile numbers are left out of this table on purpose; the report has them.
AppRecordsShare
Chrome835%
ego lite1043%
Dia522%

Every row, as the report lists them

Timestamp, address, evidence type and module are the report's own fields. The last column is the app and profile the record was saved in, shortened from the report's file path; the path itself is not published here because it names this Mac's home folder.

WhenAddressEvidenceModuleSaved in
22 Aug 2025, 11:56tracookiepixel[.]xyzcontactedbrowserChrome, profile 11, cookies
22 Aug 2025, 11:56tracookiepixel[.]xyzcontactedbrowserego lite, profile 16, cookies
22 Aug 2025, 11:56tracookiepixel[.]xyzcontactedbrowserego lite, profile 1, cookies
22 Aug 2025, 11:56tracookiepixel[.]xyzcontactedbrowserDia, profile 4, cookies
5 Oct 2025, 15:36tracookiepixel[.]xyzcontactedbrowserChrome, profile 14, cookies
5 Oct 2025, 15:36tracookiepixel[.]xyzcontactedbrowserego lite, profile 17, cookies
5 Oct 2025, 15:36tracookiepixel[.]xyzcontactedbrowserDia, profile 5, cookies
24 Dec 2025, 09:04tracookiepixel[.]xyzcontactedbrowserChrome, profile 11, cookies
24 Dec 2025, 09:04tracookiepixel[.]xyzcontactedbrowserego lite, profile 16, cookies
24 Dec 2025, 09:04tracookiepixel[.]xyzcontactedbrowserego lite, profile 1, cookies
24 Dec 2025, 09:04tracookiepixel[.]xyzcontactedbrowserDia, profile 4, cookies
13 Jan 2026, 11:38tracookiepixel[.]xyzcontactedbrowserChrome, profile 2, cookies
13 Jan 2026, 11:38tracookiepixel[.]xyzcontactedbrowserego lite, profile 8, cookies
13 Jan 2026, 11:38tracookiepixel[.]xyzcontactedbrowserDia, profile 11, cookies
22 Jan 2026, 19:48tracookiepixel[.]xyzcontactedbrowserChrome, default profile, cookies
22 Jan 2026, 19:48tracookiepixel[.]xyzcontactedbrowserego lite, profile 6, cookies
22 Jan 2026, 19:48tracookiepixel[.]xyzcontactedbrowserDia, default profile, cookies
27 Mar 2026, 15:00tracookiepixel[.]xyzcontactedbrowserChrome, default profile, cookies
27 Mar 2026, 15:00tracookiepixel[.]xyzcontactedbrowserego lite, profile 6, cookies
21 Apr 2026, 08:25tracookiepixel[.]xyzcontactedbrowserChrome, default profile, cookies
21 Apr 2026, 08:25tracookiepixel[.]xyzcontactedbrowserego lite, profile 6, cookies
17 Aug 2026, 18:42tracookiepixel[.]xyzcontactedbrowserego lite, default profile, cookies
3 Sep 2026, 18:46tracookiepixel[.]xyzcontactedbrowserChrome, default profile, cookies

The tool asks that indicator addresses be shared with the dot in brackets, as written here, so a reader cannot click through to them by accident. Do not visit or look up the address to investigate it.

The checks the browser module ran

The browser module lists 159 named checks: 158 ran and 1 could not. This is the tool's own list, searchable here in your browser, and nothing is added to it. Checks marked cookie store are the 44 checks that read the kind of record all 23 matches came from. Checks marked hit app are the 18 checks that read one of the three apps where those matches were saved: Chrome, ego lite and Dia (the tool lists ego lite as citro labs). The tool does not mark a single check as the one that produced a match, so these are its own check names, grouped, and nothing else is claimed.

Loading the check list.

  1. The list needs JavaScript, which this page runs entirely in your browser.

The list shows one page of matching checks at a time, which keeps the page small on a phone; the search box narrows the rest from the whole list. A check name ending in :cookies means that app's cookie store was read.

What could not be checked

The scan is marked partial, and it ends with exit code 2, which means matches were found. But the 34 listed gaps below are why a reader must not read this page as a clean bill of health. Nothing was cleared in the places listed below.

The gaps by kind. Every line is quoted from the report's own gap list.
KindCountWhat it means
Indicator sources not downloaded29The larger published sets from MVT (the Mobile Verification Toolkit, a published phone-forensics tool), Citizen Lab, Amnesty and Echap were missing from this scan, so only the built-in 428 indicators were used. Run the tool's update step, review the source status, then scan again.
Partial file-hash roots368 candidate files were never compared against the known hashes: 3 permission denied, 65 larger than the tool's 120 MB per-file limit.
Desktop-app web caches not searched1The raw web caches of 10 desktop apps (0.9 GB) were skipped; the full scan type would include them.
Unreadable startup item1Two launch-item property lists could not be read, so their contents are unknown.
Every gap, line by line (34)
  1. browser/desktop-app web caches: the raw web caches of 10 desktop app(s) (0.9 GB) were not searched; use the full scan (--scan-type full) to include them. Supported cookies, history, connection records and storage are checked separately; see their individual gaps
  2. hash/root:~/Library/Application Support (partial): 18 of 67027 candidate file(s) under this root were not compared against the known hashes (2 permission denied, 16 over 120 MB; macOS privacy protection blocks some folders: give Terminal Full Disk Access (System Settings > Privacy & Security > Full Disk Access) and run again)
  3. hash/root:/Applications (partial): 47 of 21378 candidate file(s) under this root were not compared against the known hashes (47 over 120 MB)
  4. hash/root:/private/tmp (partial): 3 of 28001 candidate file(s) under this root were not compared against the known hashes (1 permission denied, 2 over 120 MB; macOS privacy protection blocks some folders: give Terminal Full Disk Access (System Settings > Privacy & Security > Full Disk Access) and run again)
  5. unix-host/macos-launch-items: 2 files under ~/Library/LaunchAgents, for example ~/Library/LaunchAgents/space.berkle.gk-session-ended.plist could not be used: not well-formed (invalid token): line 4, column 60
  6. indicators/indicator-sources: amnesty-android-campaign-2023: indicator source missing
  7. indicators/indicator-sources: amnesty-cytrox-2021: indicator source missing
  8. indicators/indicator-sources: amnesty-finfisher-2020: indicator source missing
  9. indicators/indicator-sources: amnesty-novispy-2024: indicator source missing
  10. indicators/indicator-sources: amnesty-nso-2018: indicator source missing
  11. indicators/indicator-sources: amnesty-nso-morocco-2019: indicator source missing
  12. indicators/indicator-sources: amnesty-pegasus-2021: indicator source missing
  13. indicators/indicator-sources: amnesty-wintego-helios-2024: indicator source missing
  14. indicators/indicator-sources: citizenlab-cyberbit-2017: indicator source missing
  15. indicators/indicator-sources: citizenlab-kingdom-2018: indicator source missing
  16. indicators/indicator-sources: citizenlab-nso-2016: indicator source missing
  17. indicators/indicator-sources: citizenlab-nso-insider-2017: indicator source missing
  18. indicators/indicator-sources: citizenlab-nso-mexico-exploit-2017: indicator source missing
  19. indicators/indicator-sources: citizenlab-nso-mexico-redux-2017: indicator source missing
  20. indicators/indicator-sources: echap-stalkerware: indicator source missing
  21. indicators/indicator-sources: mvt-btmob: indicator source missing
  22. indicators/indicator-sources: mvt-candiru: indicator source missing
  23. indicators/indicator-sources: mvt-cellebrite: indicator source missing
  24. indicators/indicator-sources: mvt-coruna: indicator source missing
  25. indicators/indicator-sources: mvt-darksword: indicator source missing
  26. indicators/indicator-sources: mvt-eaglemsgspy: indicator source missing
  27. indicators/indicator-sources: mvt-morpheus: indicator source missing
  28. indicators/indicator-sources: mvt-operation-triangulation: indicator source missing
  29. indicators/indicator-sources: mvt-predator: indicator source missing
  30. indicators/indicator-sources: mvt-quadream-kingspawn: indicator source missing
  31. indicators/indicator-sources: mvt-rcs-lab: indicator source missing
  32. indicators/indicator-sources: mvt-residentbat: indicator source missing
  33. indicators/indicator-sources: mvt-spyrtacus: indicator source missing
  34. indicators/indicator-sources: mvt-wyrmspy-dragonegg: indicator source missing

Home-folder paths in the quotes above are shortened to ~; the wording is otherwise the report's own.

Sources and the tool's own limits

Every figure on this page was read from the machine report of one finished scan. The table names, for each source, where it comes from and what it backs. The report also carries a 64-character check code over its indicator set, starting ae4dcd5a66bf5fa1, so a copy of the report can be compared against this one.

The raised numbers on this page are these rows.
#SourceWhat it backs
1The scan's machine report, zb-m3.json, written 2026-10-28Every count, duration, module status, hit row, gap and quote of the report on this page
2The scan's human report, zb-m3.mdThe quoted RESULT line
3Zero Breach Toolkit, version 0.1.6, github.com/interplains/Zero-Breach-ToolkitThe evidence-grade wording, the reporting rule for a hit, the five relay statements, and the advice not to delete or visit anything
4The indicator set used: 428 indicators, 3 days old, not stale; 2 curated filesThe indicator count, the family name and how current the list was
5The toolkit's docs/METHODOLOGY.md, evidence grades tableThe definition of the “contacted” grade quoted above
6The toolkit's PRIVACY.md and README.mdThe privacy limit quoted below
The indicator files behind the 428 indicators.
FileUsable indicatorsDated
adfection_iocs.txt4052026-10-28
curated_mercenary.txt232026-10-25

The limits, in the tool's words

This tool only looks for publicly documented indicators of known spyware. It cannot detect new or unpublished spyware, and the traces this spyware leaves usually expire within weeks.

A scan makes no intentional network requests and has no upload feature.

Zero Breach Toolkit, required relay text and PRIVACY.md

Those three lines are the report's own scope limits, copied unchanged.

What this page does not say

It does not say the Mac is clean: 34 gaps and a partial scan rule that out. It does not say the Mac is infected: a contacted match is a weak grade, and the tool's own words are that only a known spyware file on disk is conclusive. It reports what was found, what was read to find it, and what was left unread.

Words used here

DNS record
A saved name lookup: the record that a name was asked for, which does not show whether anything answered.
MVT
The Mobile Verification Toolkit, a published phone-forensics tool that keeps lists of spyware addresses.
POSIX
The standard interface that Unix-like systems such as macOS share.
SQLite
A database kept in one file; browsers use it for cookies, history and saved site data.

Built from the finished report at /tmp/scan/zb-m3.json on 2026-10-28. The page is one file with no outside requests: the styles, the font and the check list are all inside it. Numbers are copied by scripts/build.ts from named fields, never typed by hand; SOURCES.md beside this page lists the field behind each headline figure.

Addresses appear with the dot in brackets, as the tool asks. Do not visit them.