Facebook Messenger

Facebook Messenger Desktop

Overview

Application Discontinued — December 15, 2025

Meta pulled Facebook Messenger Desktop from the Mac App Store on December 15, 2025. The app can no longer be installed, but residual data persists on millions of Macs in the sandboxed container at ~/Library/Containers/com.facebook.archon/. For investigations covering the 2020–2025 timeframe, these artifacts remain forensically significant.

Facebook Messenger Desktop was a Mac Catalyst application (bundle ID com.facebook.archon) available from approximately 2020 through December 2025. The app is a direct port of the iOS Messenger client to macOS using Apple's Catalyst framework. It stores all conversation data in Facebook's Lightspeed/MSYS SQLite database — a cross-platform C library that uses SQLite as the universal data management layer, with hundreds of tables covering messages, threads, contacts, calls, payments, and application activity.

Two critical facts define the forensic posture of this artifact:

Encryption uncertainty. Meta rolled out default end-to-end encryption for all personal Messenger chats on December 6, 2023. Post-E2EE databases are likely encrypted at the SQLite page level. Pre-2023 databases were likely stored as plaintext SQLite. The collector determines encryption status at runtime by checking the SQLite header magic bytes. If the database is encrypted, full message parsing is not possible; the raw file is collected for offline analysis and metadata is extracted from unencrypted supporting files.

Server-primary cache model. Unlike WhatsApp (which stores complete message history locally), Messenger operates on a server-primary model. The local database is a sync cache containing only recently viewed messages. Older conversations exist only on Meta's servers. The local cache is still forensically valuable as evidence of what the user recently accessed, but investigators must not assume they have a complete message history.

File Locations

ArtifactPathFormatNotes
Primary container~/Library/Containers/com.facebook.archon/DirectoryMain sandbox container
Lightspeed database~/Library/Containers/com.facebook.archon/Data/Library/Application Support/Messenger/Partitions/<id>/lightspeed-<fbid>.dbSQLitePrimary forensic artifact
Database WAL...lightspeed-<fbid>.db-walSQLite WALAlways collect alongside database
Database SHM...lightspeed-<fbid>.db-shmSQLite SHMShared memory file
Preferences~/Library/Containers/com.facebook.archon/Data/Library/Preferences/com.facebook.archon.plistBinary plistAccount metadata
Preferences (residual)~/Library/Preferences/com.facebook.archon.plistBinary plistSurvives container deletion
Cookies~/Library/Containers/com.facebook.archon/Data/Library/Cookies/Cookies.binarycookiesBinary cookiesAuthentication cookies
Media cache (container)~/Library/Containers/com.facebook.archon/Data/Library/Caches/com.facebook.archon/FilesCached images, thumbnails
Media cache (user)~/Library/Caches/com.facebook.archon/FilesResidual — survives container deletion
Saved application state~/Library/Containers/com.facebook.archon/Data/Library/Saved Application State/com.facebook.archon.savedState/BinaryWindow and UI state
Container metadata~/Library/Containers/com.facebook.archon/Container.plistBinary plistSandbox entitlements

Developer ID Variant

A developer ID variant exists under a separate bundle ID. If the standard container is absent, check:

~/Library/Containers/com.facebook.archon.developerID/

Residual Artifacts After App Removal

The Mac App Store uninstaller removes the application bundle but does not automatically delete the sandbox container or user-domain caches. These paths may persist long after the app was removed from the App Store or uninstalled by the user:

  • ~/Library/Caches/com.facebook.archon/ — residual media cache
  • ~/Library/Preferences/com.facebook.archon.plist — residual preferences
  • ~/Library/Caches/14c12d71.com.facebook.archon/ — auxiliary WebKit/system cache

Facebook User ID (FBID) Attribution

The Facebook User ID (FBID) is a large integer (e.g., 100012345678901) that serves as the primary account identifier throughout all Messenger artifacts.

LocationFormatExample
Database filenamelightspeed-<fbid>.dblightspeed-100098765432101.db
Thread keysfbid_from_thread_key field100012345678901
Message sender/receiverNumeric FBID fields100012345678901
Contact recordsFBID per contact100012345678901
Payment recordsRequester and recipient FBID100012345678901
Preferences plistLogged-in user state

FBIDs can be correlated with Facebook.com profile URLs at facebook.com/profile.php?id=<fbid>, with WhatsApp via the shared group.com.facebook.family container (Meta family apps), and with Instagram user mappings.

Encryption Detection

The collector checks whether the Lightspeed database is plaintext or encrypted by reading the first 16 bytes of the file:

Plaintext SQLite:  53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00
                   "SQLite format 3\000"

Encrypted:         <random bytes — no recognisable header>

This detection is performed before any SQL operation. If the header is not the standard SQLite magic string, the database is treated as encrypted and the collector falls back to raw file collection.

To manually check encryption status:

# Read the first 15 bytes and print as ASCII
head -c 15 lightspeed-100098765432101.db

A plaintext database prints SQLite format 3. An encrypted database produces unreadable output.

E2EE Timeline

DateEvent
2016"Secret Conversations" feature introduced (opt-in E2EE)
October 2023Testing of default E2EE begun for some users
December 6, 2023Default E2EE rolled out globally for all personal 1:1 chats and calls
November 2025Key Transparency verification launched
December 15, 2025Desktop app discontinued

Databases from installations active before December 2023 may be plaintext. Databases from post-2023 installations are likely encrypted. The transition is not a hard cutoff — the rollout was gradual, and a database that was plaintext before December 2023 may or may not have been re-encrypted on update.

Key Artifacts

Lightspeed Database (lightspeed-<fbid>.db)

The primary forensic artifact. Contains messages, conversation threads, contacts, calls, payments, search history, and application activity. See Lightspeed Database for schema documentation and SQL queries.

The database name encodes the logged-in user's FBID directly, enabling account attribution without opening the database.

Preferences Plist (com.facebook.archon.plist)

Binary plist containing application settings, logged-in account state, and potentially the last-used FBID. Remains accessible even if the database is encrypted. Useful for confirming which account was active on a given machine.

Authentication Cookies (Cookies.binarycookies)

Apple binary cookies format containing session cookies for facebook.com and messenger.com. May include long-lived session tokens that can be used for legal process identification. These cookies persist after app discontinuation.

Media Cache

The cache directories contain cached profile pictures, image thumbnails, video thumbnails, sticker packs, and GIF previews. Files are often stored with hash-based names and no extension. MIME type identification from magic bytes is required. The cache may survive container deletion.

Application Architecture History

PeriodArchitectureNotes
Pre-2020No native Mac appUsers relied on messenger.com or third-party web wrappers
2020–2022Electron + MSYSFull MSYS sync database; data in Application Support
2022–2025Mac Catalyst (UIKit)Ported from iOS; data in Containers/com.facebook.archon
December 15, 2025DiscontinuedRedirects to web; no standalone desktop app

macOS Version Support

macOS VersionMessenger AvailabilityNotes
10.15 CatalinaAvailableFirst Mac Catalyst support
11 Big SurAvailableStable Catalyst support
12 MontereyAvailable
13 VenturaAvailableE2EE default rollout (December 2023)
14 SonomaAvailable
15 SequoiaAvailable until December 2025Last supported macOS version
16 and laterNot availableResidual data only

Forensic Analysis Notes

Encryption status drives analysis strategy. The first question for any Messenger artifact is whether the database is plaintext or encrypted. If encrypted, focus on: the preferences plist for account identification, the media cache for visual evidence, TCC database entries for permission grants, and KnowledgeC for usage patterns.

Cache-only message history. The presence of a conversation thread in the database does not mean all messages are available. The local cache reflects what was visible to the user at the time of last sync. Threads with high unread counts may have very few locally cached messages. Complete message history requires legal process to Meta.

Search tokens are unaffected by message encryption. The search_tokens table records names and FBIDs of users the account owner searched for. This table may be stored separately from the main message data or in an unencrypted table within the same database. It provides evidence of deliberate searches for specific people regardless of whether messages are encrypted.

Payment records persist independently. Messenger Pay transaction records (p2p_requests and p2p_transfers) may be stored in a standalone p2p_transfer.db file or within the main Lightspeed database. These tables contain financial transaction evidence — amounts, FBIDs, memos, timestamps — and may remain accessible even if the main message database is encrypted. See Messenger Pay for details.

Vanish mode traces. Messages sent in Vanish mode disappear after the recipient leaves the chat. However, forensic traces may persist in: the SQLite WAL file before the delete commits, SQLite free pages after deletion, FSEvents records showing database writes, KnowledgeC entries showing the app was in focus during the conversation, and Notification Center database entries.

TCC permissions persist after discontinuation. The TCC database retains permission grants for com.facebook.archon even after the app is removed. Camera, microphone, contacts, and photos permissions provide evidence of app capabilities and approximate usage periods.

Correlation Opportunities

ArtifactCorrelates With
Messenger FBIDSafari/Chrome history (FBID in Facebook URLs), browser cookies
Message timestampsKnowledgeC app usage (/app/inFocus for com.facebook.archon)
Contact FBIDsOther Meta apps via group.com.facebook.family group container
Call timestampsFaceTime call history (alibi comparison), network connection logs
Media cache filesQuick Look thumbnail database (if user previewed cached media)
Notification historyNotification Center database (com.facebook.archon entries)
TCC permissionsCamera/microphone grants for voice and video calls
Network activityWiFi known networks correlating with message sync times

Comparison with Other Messaging Apps

FeatureFB MessengerWhatsAppSignalTelegram
macOS app statusDiscontinued Dec 2025ActiveActiveActive
Local DB formatLightspeed/MSYS SQLiteCore Data SQLiteSQLCipher SQLiteTDLib binary (TDF$)
DB encryptionLikely encrypted (post-2023)PlaintextSQLCipher (key in config.json)Custom binary
Complete local historyNo (cache only)YesYesPartial (cloud-primary)
Forensic valueMedium-LowVery HighMediumMedium
Full Disk Access requiredNoNoNoNo

Tool Support

ToolSupport Level
macforAdaptive: full parse if unencrypted; raw collection + metadata if encrypted
AXIOMLimited Facebook Messenger Desktop support
CellebriteLimited support
DB Browser for SQLiteManual analysis when database is plaintext
sqlite3 CLIDirect query access when database is plaintext

macfor Collection

This artifact is collected by the messaging.fbmessenger plugin in the macfor-pro module.

macfor-pro collect --plugin messaging.fbmessenger --output ./evidence.zip

Collection Options

OptionDefaultDescription
skip_messagesfalseSkip message parsing (even if database is unencrypted)
skip_contactsfalseSkip contact extraction
skip_paymentsfalseSkip payment transaction extraction
skip_callsfalseSkip call history extraction
skip_searchesfalseSkip search token extraction
skip_mediafalseSkip media cache enumeration
include_media_filesfalseCopy actual media cache files to container
include_rawfalseCollect raw database files (always collected if encrypted)
metadata_onlyfalseOmit message body text from output records

Adaptive Collection Behavior

The plugin detects encryption at runtime and adjusts its behavior:

Unencrypted database: Full parsing of messages, threads, contacts, calls, payment records, search tokens, and activity log. Records emitted as fbmessenger_messages, fbmessenger_threads, fbmessenger_contacts, fbmessenger_calls, fbmessenger_payments, fbmessenger_searches, and fbmessenger_activity.

Encrypted database: Raw database files (lightspeed-<fbid>.db plus WAL and SHM companions) collected as fbmessenger_raw. Account record emitted as fbmessenger_accounts with database_encrypted: true. Metadata, preferences, cookies, and media cache collected regardless.

Account Record Output

An fbmessenger_accounts record is emitted for every discovered database, regardless of encryption status:

{
  "fbid": "100098765432101",
  "database_path": "/Users/jdoe/Library/Containers/com.facebook.archon/Data/Library/Application Support/Messenger/Partitions/default/lightspeed-100098765432101.db",
  "database_encrypted": false,
  "database_size": 52428800,
  "container_path": "/Users/jdoe/Library/Containers/com.facebook.archon",
  "user": "jdoe"
}

References

Previous
Deleted Messages