Add Slack Workspaces and Client Sessions Artifacts for Windows - #67
Add Slack Workspaces and Client Sessions Artifacts for Windows#67Gear-I wants to merge 1 commit into
Conversation
Add Slack Client Sessions artifact (Local Storage activitySession_*)
|
Thanks for the contribution! This PR changes artifact modules without test data for them. A small fixture with each artifact change lets reviewers run the module against real data, and the committed case keeps guarding the module after merge.
Adding a fixture Generate it from your extraction with the helper (details in create_module_test_cases.md): It writes Size rules:
If your extraction cannot be shared:
If none of those fit, say so here and we will work it out. The PR can still be reviewed and merged with the gap recorded in the artifact's This is a request, not a gate. Nothing here blocks review. |
|
In the process of converting my personal data that I used to test this artifact parser into synthetic data, I will provide it once I have re-tested and made sure the output is the same. |
Summary
Adds two new artifacts for Slack desktop's Local Storage LevelDB
(
Local Storage/leveldb), following the existing Discord/Wire LocalStorage artifact conventions:
slackWorkspaces) — parses thelocalConfig_v2key into one row per signed-in workspace: team ID, name, URL,
per-workspace user ID, most-recently-used and version timestamps,
last-viewed channel/DM ID, and a masked session token.
slackSessions) — parsesactivitySession_<teamId>keys into a usage timeline: sessionstart, last-activity, and last-logged times, plus a computed
duration.
Local Storage does not hold Slack message content (that lives in
IndexedDB), so these focus on what it does reliably hold: workspace
enumeration and usage/session timing, independent of message content.
Design notes
are preserved on disk. Both artifacts read all recoverable versions
(not just the live/current one), so a workspace that was later
removed, or an earlier session, still shows up.
xoxc-/xoxb-/xoxp-/xoxs-/xoxr-/xoxd-prefixed) are masked to the first 8 and last 4 characters — a full
token is a live credential, not a normal artifact value.
localConfig_v2fields (theme colors, sidebar gradients)are filtered out of the "Other Fields" column; anything else Slack
stores per-team is preserved there since it varies by client
version.
dependencies beyond the existing
scripts.chromium.local_storagereader already used by Discord/Wire.
Testing
Verified against a real multi-workspace Slack desktop profile
(Slack 4.51.180.0, Windows). Confirmed correct output for 3 real
workspaces and their usage sessions, including token masking and
timestamp conversion from both ISO 8601 and epoch formats.
pylintclean (10/10) on both files, no
pylint: disablesuppressions.Sample data
Both artifacts declare a
sample_dataentry for corpusslack_win_multiworkspace(Slack 4.51.180.0, Windows):slackWorkspaces: 5 rowsslackSessions: 4 rows