agent-messenger 1.8.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "1.8.1",
3
+ "version": "1.9.0",
4
4
  "description": "Messaging platform interaction skills for AI agents. Interact with Slack, Discord, and Microsoft Teams - send messages, read channels, manage reactions, upload files, and more through simple CLI interfaces.",
5
5
  "author": {
6
6
  "name": "devxoul",
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "1.8.1",
3
+ "version": "1.9.0",
4
4
  "description": "Multi-platform messaging CLI for AI agents (Slack, Discord, Teams)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -23,8 +23,11 @@ export declare class TokenExtractor {
23
23
  private parseTokenData;
24
24
  private extractCookieFromSQLite;
25
25
  private readCookieFromDB;
26
- private tryDecryptCookie;
26
+ tryDecryptCookie(encrypted: Buffer): string | null;
27
27
  private decryptV10Cookie;
28
+ decryptV10CookieWindows(encrypted: Buffer): string | null;
29
+ getWindowsMasterKey(): Buffer | null;
30
+ decryptDPAPI(encrypted: Buffer): Buffer | null;
28
31
  private cachedKey;
29
32
  private usedCachedKey;
30
33
  private getDerivedKeyAsync;
@@ -1 +1 @@
1
- {"version":3,"file":"token-extractor.d.ts","sourceRoot":"","sources":["../../../../src/platforms/slack/token-extractor.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAIlE,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAQD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAiB;gBAErB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe;IAWrF,WAAW,IAAI,MAAM;IAkCf,OAAO,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAqChC,wBAAwB;IA8BtC,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,YAAY;YASN,kBAAkB;IAkChC,OAAO,CAAC,yBAAyB;IA8BjC,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,sBAAsB;IA4F9B,OAAO,CAAC,cAAc;YA6BR,uBAAuB;IAYrC,OAAO,CAAC,gBAAgB;IA0DxB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,aAAa,CAAQ;YAEf,kBAAkB;IAqBhC,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,yBAAyB;IAwB3B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAIrC"}
1
+ {"version":3,"file":"token-extractor.d.ts","sourceRoot":"","sources":["../../../../src/platforms/slack/token-extractor.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAIlE,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAQD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAiB;gBAErB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe;IAWrF,WAAW,IAAI,MAAM;IAkCf,OAAO,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAqChC,wBAAwB;IA8BtC,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,YAAY;YASN,kBAAkB;IAkChC,OAAO,CAAC,yBAAyB;IA8BjC,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,sBAAsB;IA4F9B,OAAO,CAAC,cAAc;YA6BR,uBAAuB;IAYrC,OAAO,CAAC,gBAAgB;IA0DxB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA0BlD,OAAO,CAAC,gBAAgB;IAuBxB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA2BzD,mBAAmB,IAAI,MAAM,GAAG,IAAI;IA0BpC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAyB9C,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,aAAa,CAAQ;YAEf,kBAAkB;IAqBhC,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,yBAAyB;IAwB3B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAIrC"}
@@ -392,10 +392,21 @@ export class TokenExtractor {
392
392
  if (str.startsWith('xoxd-')) {
393
393
  return str;
394
394
  }
395
- // Check for v10 encryption (macOS Keychain)
396
395
  if (encrypted.length > 3 && encrypted.subarray(0, 3).toString() === 'v10') {
396
+ if (this.platform === 'win32') {
397
+ return this.decryptV10CookieWindows(encrypted);
398
+ }
397
399
  return this.decryptV10Cookie(encrypted);
398
400
  }
401
+ // Windows pre-v80: DPAPI applied directly (no version prefix)
402
+ if (this.platform === 'win32' && encrypted.length > 0) {
403
+ const decrypted = this.decryptDPAPI(encrypted);
404
+ if (decrypted) {
405
+ const text = decrypted.toString('utf8');
406
+ const match = text.match(/xoxd-[A-Za-z0-9%]+/);
407
+ return match ? match[0] : null;
408
+ }
409
+ }
399
410
  return null;
400
411
  }
401
412
  decryptV10Cookie(encrypted) {
@@ -418,6 +429,74 @@ export class TokenExtractor {
418
429
  return null;
419
430
  }
420
431
  }
432
+ decryptV10CookieWindows(encrypted) {
433
+ try {
434
+ const masterKey = this.getWindowsMasterKey();
435
+ if (!masterKey) {
436
+ const decrypted = this.decryptDPAPI(encrypted.subarray(3));
437
+ if (!decrypted)
438
+ return null;
439
+ const text = decrypted.toString('utf8');
440
+ const match = text.match(/xoxd-[A-Za-z0-9%]+/);
441
+ return match ? match[0] : null;
442
+ }
443
+ const nonce = encrypted.subarray(3, 3 + 12);
444
+ const ciphertextWithTag = encrypted.subarray(3 + 12);
445
+ const tag = ciphertextWithTag.subarray(ciphertextWithTag.length - 16);
446
+ const ciphertext = ciphertextWithTag.subarray(0, ciphertextWithTag.length - 16);
447
+ const decipher = createDecipheriv('aes-256-gcm', masterKey, nonce);
448
+ decipher.setAuthTag(tag);
449
+ const decrypted = Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString('utf8');
450
+ const match = decrypted.match(/xoxd-[A-Za-z0-9%]+/);
451
+ return match ? match[0] : null;
452
+ }
453
+ catch {
454
+ return null;
455
+ }
456
+ }
457
+ getWindowsMasterKey() {
458
+ try {
459
+ const localStatePath = join(this.slackDir, 'Local State');
460
+ if (!existsSync(localStatePath)) {
461
+ return null;
462
+ }
463
+ const localState = JSON.parse(readFileSync(localStatePath, 'utf8'));
464
+ const encryptedKeyB64 = localState?.os_crypt?.encrypted_key;
465
+ if (!encryptedKeyB64) {
466
+ return null;
467
+ }
468
+ const encryptedKey = Buffer.from(encryptedKeyB64, 'base64');
469
+ if (encryptedKey.subarray(0, 5).toString() !== 'DPAPI') {
470
+ return null;
471
+ }
472
+ return this.decryptDPAPI(encryptedKey.subarray(5));
473
+ }
474
+ catch {
475
+ return null;
476
+ }
477
+ }
478
+ decryptDPAPI(encrypted) {
479
+ if (this.platform !== 'win32') {
480
+ return null;
481
+ }
482
+ try {
483
+ const b64Input = encrypted.toString('base64');
484
+ const script = [
485
+ 'Add-Type -AssemblyName System.Security',
486
+ `$d=[System.Security.Cryptography.ProtectedData]::Unprotect([Convert]::FromBase64String("${b64Input}"),$null,[System.Security.Cryptography.DataProtectionScope]::CurrentUser)`,
487
+ '[Convert]::ToBase64String($d)',
488
+ ].join(';');
489
+ const encodedCommand = Buffer.from(script, 'utf16le').toString('base64');
490
+ const result = execSync(`powershell -NoProfile -NonInteractive -EncodedCommand ${encodedCommand}`, {
491
+ encoding: 'utf8',
492
+ timeout: 10000,
493
+ }).trim();
494
+ return Buffer.from(result, 'base64');
495
+ }
496
+ catch {
497
+ return null;
498
+ }
499
+ }
421
500
  cachedKey = null;
422
501
  usedCachedKey = false;
423
502
  async getDerivedKeyAsync() {
@@ -1 +1 @@
1
- {"version":3,"file":"token-extractor.js","sourceRoot":"","sources":["../../../../src/platforms/slack/token-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-extractor.js","sourceRoot":"","sources":["../../../../src/platforms/slack/token-extractor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "1.8.1",
3
+ "version": "1.9.0",
4
4
  "description": "Multi-platform messaging CLI for AI agents (Slack, Discord, Teams)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-discord
3
3
  description: Interact with Discord servers - send messages, read channels, manage reactions
4
- version: 1.8.1
4
+ version: 1.9.0
5
5
  allowed-tools: Bash(agent-discord:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-discordbot
3
3
  description: Interact with Discord servers using bot tokens - send messages, read channels, manage reactions
4
- version: 1.8.1
4
+ version: 1.9.0
5
5
  allowed-tools: Bash(agent-discordbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-slack
3
3
  description: Interact with Slack workspaces - send messages, read channels, manage reactions
4
- version: 1.8.1
4
+ version: 1.9.0
5
5
  allowed-tools: Bash(agent-slack:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-slackbot
3
3
  description: Interact with Slack workspaces using bot tokens - send messages, read channels, manage reactions
4
- version: 1.8.1
4
+ version: 1.9.0
5
5
  allowed-tools: Bash(agent-slackbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-teams
3
3
  description: Interact with Microsoft Teams - send messages, read channels, manage reactions
4
- version: 1.8.1
4
+ version: 1.9.0
5
5
  allowed-tools: Bash(agent-teams:*)
6
6
  metadata:
7
7
  openclaw:
@@ -0,0 +1,192 @@
1
+ import { Database } from 'bun:sqlite'
2
+ import { afterEach, describe, expect, test } from 'bun:test'
3
+ import { createCipheriv, randomBytes } from 'node:crypto'
4
+ import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs'
5
+ import { tmpdir } from 'node:os'
6
+ import { join } from 'node:path'
7
+ import { TokenExtractor } from './token-extractor'
8
+
9
+ const tempDirs: string[] = []
10
+
11
+ afterEach(() => {
12
+ for (const dir of tempDirs) {
13
+ rmSync(dir, { recursive: true, force: true })
14
+ }
15
+ tempDirs.length = 0
16
+ })
17
+
18
+ function createCookiesDb(
19
+ dbPath: string,
20
+ cookies: { name: string; value: string; encrypted_value: Uint8Array; host_key: string; last_access_utc: number }[],
21
+ ) {
22
+ const db = new Database(dbPath)
23
+ db.exec('CREATE TABLE cookies (name TEXT, value TEXT, encrypted_value BLOB, host_key TEXT, last_access_utc INTEGER)')
24
+ const stmt = db.prepare(
25
+ 'INSERT INTO cookies (name, value, encrypted_value, host_key, last_access_utc) VALUES (?, ?, ?, ?, ?)',
26
+ )
27
+ for (const cookie of cookies) {
28
+ stmt.run(cookie.name, cookie.value, cookie.encrypted_value, cookie.host_key, cookie.last_access_utc)
29
+ }
30
+ db.close()
31
+ }
32
+
33
+ describe('TokenExtractor Windows DPAPI', () => {
34
+ test('decryptDPAPI returns null on non-win32 platform', () => {
35
+ const extractor = new TokenExtractor('darwin', '/tmp/slack-test')
36
+ expect(extractor.decryptDPAPI(Buffer.from('test'))).toBeNull()
37
+ })
38
+
39
+ test('decryptV10CookieWindows decrypts AES-256-GCM with master key from Local State', () => {
40
+ // given — known master key and AES-256-GCM encrypted cookie
41
+ const masterKey = randomBytes(32)
42
+
43
+ class TestTokenExtractor extends TokenExtractor {
44
+ override getWindowsMasterKey(): Buffer {
45
+ return masterKey
46
+ }
47
+ }
48
+
49
+ const extractor = new TestTokenExtractor('win32', '/tmp/slack-test')
50
+ const plaintext = 'xoxd-windowsCookieValue%2Btest'
51
+ const nonce = randomBytes(12)
52
+
53
+ const cipher = createCipheriv('aes-256-gcm', masterKey, nonce)
54
+ const ciphertext = Buffer.concat([cipher.update(plaintext, 'utf8'), cipher.final()])
55
+ const tag = cipher.getAuthTag()
56
+
57
+ const encrypted = Buffer.concat([Buffer.from('v10'), nonce, ciphertext, tag])
58
+
59
+ // when — then
60
+ expect(extractor.tryDecryptCookie(encrypted)).toBe(plaintext)
61
+ })
62
+
63
+ test('decryptV10CookieWindows falls back to direct DPAPI when no Local State', () => {
64
+ class TestTokenExtractor extends TokenExtractor {
65
+ override getWindowsMasterKey(): null {
66
+ return null
67
+ }
68
+ override decryptDPAPI(_encrypted: Buffer): Buffer | null {
69
+ return Buffer.from('xoxd-dpapiDirectCookie%2B')
70
+ }
71
+ }
72
+
73
+ const extractor = new TestTokenExtractor('win32', '/tmp/slack-test')
74
+ const encrypted = Buffer.concat([Buffer.from('v10'), Buffer.from('encrypted-data')])
75
+
76
+ expect(extractor.tryDecryptCookie(encrypted)).toBe('xoxd-dpapiDirectCookie%2B')
77
+ })
78
+
79
+ test('tryDecryptCookie handles Windows pre-v80 cookies without version prefix', () => {
80
+ class TestTokenExtractor extends TokenExtractor {
81
+ override decryptDPAPI(_encrypted: Buffer): Buffer | null {
82
+ return Buffer.from('xoxd-preV80Cookie%2B')
83
+ }
84
+ }
85
+
86
+ const extractor = new TestTokenExtractor('win32', '/tmp/slack-test')
87
+ const encrypted = Buffer.from([0x01, 0x00, 0x00, 0x00, 0xaa, 0xbb, 0xcc])
88
+
89
+ expect(extractor.tryDecryptCookie(encrypted)).toBe('xoxd-preV80Cookie%2B')
90
+ })
91
+
92
+ test('getWindowsMasterKey reads and decrypts key from Local State file', () => {
93
+ // given
94
+ const slackDir = mkdtempSync(join(tmpdir(), 'slack-win-'))
95
+ tempDirs.push(slackDir)
96
+
97
+ const fakeDecryptedKey = randomBytes(32)
98
+ const dpapiPayload = Buffer.from('fake-dpapi-encrypted-key')
99
+ const encryptedKeyWithPrefix = Buffer.concat([Buffer.from('DPAPI'), dpapiPayload])
100
+ const localState = { os_crypt: { encrypted_key: encryptedKeyWithPrefix.toString('base64') } }
101
+ writeFileSync(join(slackDir, 'Local State'), JSON.stringify(localState))
102
+
103
+ class TestTokenExtractor extends TokenExtractor {
104
+ override decryptDPAPI(encrypted: Buffer): Buffer | null {
105
+ if (encrypted.equals(dpapiPayload)) {
106
+ return fakeDecryptedKey
107
+ }
108
+ return null
109
+ }
110
+ }
111
+
112
+ // when — then
113
+ const extractor = new TestTokenExtractor('win32', slackDir)
114
+ expect(extractor.getWindowsMasterKey()).toEqual(fakeDecryptedKey)
115
+ })
116
+
117
+ test('getWindowsMasterKey returns null when Local State is missing', () => {
118
+ const slackDir = mkdtempSync(join(tmpdir(), 'slack-no-ls-'))
119
+ tempDirs.push(slackDir)
120
+
121
+ const extractor = new TokenExtractor('win32', slackDir)
122
+ expect(extractor.getWindowsMasterKey()).toBeNull()
123
+ })
124
+
125
+ test('getWindowsMasterKey returns null when encrypted_key has no DPAPI prefix', () => {
126
+ const slackDir = mkdtempSync(join(tmpdir(), 'slack-bad-ls-'))
127
+ tempDirs.push(slackDir)
128
+
129
+ const localState = { os_crypt: { encrypted_key: Buffer.from('NOTDPAPIdata').toString('base64') } }
130
+ writeFileSync(join(slackDir, 'Local State'), JSON.stringify(localState))
131
+
132
+ const extractor = new TokenExtractor('win32', slackDir)
133
+ expect(extractor.getWindowsMasterKey()).toBeNull()
134
+ })
135
+
136
+ test('extract decrypts Windows v10 cookies end-to-end with mocked DPAPI', async () => {
137
+ // given — SQLite DB with v10-encrypted cookie, Local State with master key, LevelDB with token
138
+ const slackDir = mkdtempSync(join(tmpdir(), 'slack-win-e2e-'))
139
+ tempDirs.push(slackDir)
140
+
141
+ const masterKey = randomBytes(32)
142
+ const dpapiPayload = Buffer.from('dpapi-encrypted-master-key')
143
+ const encryptedKeyWithPrefix = Buffer.concat([Buffer.from('DPAPI'), dpapiPayload])
144
+ const localState = { os_crypt: { encrypted_key: encryptedKeyWithPrefix.toString('base64') } }
145
+ writeFileSync(join(slackDir, 'Local State'), JSON.stringify(localState))
146
+
147
+ const cookiePlaintext = 'xoxd-winExtractedCookie%2B'
148
+ const nonce = randomBytes(12)
149
+ const cipher = createCipheriv('aes-256-gcm', masterKey, nonce)
150
+ const ciphertext = Buffer.concat([cipher.update(cookiePlaintext, 'utf8'), cipher.final()])
151
+ const tag = cipher.getAuthTag()
152
+ const encryptedCookie = Buffer.concat([Buffer.from('v10'), nonce, ciphertext, tag])
153
+
154
+ createCookiesDb(join(slackDir, 'Cookies'), [
155
+ {
156
+ name: 'd',
157
+ value: '',
158
+ encrypted_value: new Uint8Array(encryptedCookie),
159
+ host_key: '.slack.com',
160
+ last_access_utc: 1,
161
+ },
162
+ ])
163
+
164
+ const token = `xoxc-1111111111-2222222222-3333333333-${'a'.repeat(64)}`
165
+ const leveldbDir = join(slackDir, 'Local Storage', 'leveldb')
166
+ mkdirSync(leveldbDir, { recursive: true })
167
+ writeFileSync(join(leveldbDir, '000001.log'), `"${token}"T12345678"name":"test-workspace"`)
168
+
169
+ class TestTokenExtractor extends TokenExtractor {
170
+ override decryptDPAPI(encrypted: Buffer): Buffer | null {
171
+ if (encrypted.equals(dpapiPayload)) {
172
+ return masterKey
173
+ }
174
+ return null
175
+ }
176
+ }
177
+
178
+ // when
179
+ const extractor = new TestTokenExtractor('win32', slackDir)
180
+ const result = await extractor.extract()
181
+
182
+ // then
183
+ expect(result).toEqual([
184
+ {
185
+ workspace_id: 'T12345678',
186
+ workspace_name: 'test-workspace',
187
+ token,
188
+ cookie: 'xoxd-winExtractedCookie%2B',
189
+ },
190
+ ])
191
+ })
192
+ })
@@ -469,17 +469,29 @@ export class TokenExtractor {
469
469
  }
470
470
  }
471
471
 
472
- private tryDecryptCookie(encrypted: Buffer): string | null {
472
+ tryDecryptCookie(encrypted: Buffer): string | null {
473
473
  const str = encrypted.toString('utf8')
474
474
  if (str.startsWith('xoxd-')) {
475
475
  return str
476
476
  }
477
477
 
478
- // Check for v10 encryption (macOS Keychain)
479
478
  if (encrypted.length > 3 && encrypted.subarray(0, 3).toString() === 'v10') {
479
+ if (this.platform === 'win32') {
480
+ return this.decryptV10CookieWindows(encrypted)
481
+ }
480
482
  return this.decryptV10Cookie(encrypted)
481
483
  }
482
484
 
485
+ // Windows pre-v80: DPAPI applied directly (no version prefix)
486
+ if (this.platform === 'win32' && encrypted.length > 0) {
487
+ const decrypted = this.decryptDPAPI(encrypted)
488
+ if (decrypted) {
489
+ const text = decrypted.toString('utf8')
490
+ const match = text.match(/xoxd-[A-Za-z0-9%]+/)
491
+ return match ? match[0] : null
492
+ }
493
+ }
494
+
483
495
  return null
484
496
  }
485
497
 
@@ -506,6 +518,84 @@ export class TokenExtractor {
506
518
  }
507
519
  }
508
520
 
521
+ decryptV10CookieWindows(encrypted: Buffer): string | null {
522
+ try {
523
+ const masterKey = this.getWindowsMasterKey()
524
+ if (!masterKey) {
525
+ const decrypted = this.decryptDPAPI(encrypted.subarray(3))
526
+ if (!decrypted) return null
527
+ const text = decrypted.toString('utf8')
528
+ const match = text.match(/xoxd-[A-Za-z0-9%]+/)
529
+ return match ? match[0] : null
530
+ }
531
+
532
+ const nonce = encrypted.subarray(3, 3 + 12)
533
+ const ciphertextWithTag = encrypted.subarray(3 + 12)
534
+ const tag = ciphertextWithTag.subarray(ciphertextWithTag.length - 16)
535
+ const ciphertext = ciphertextWithTag.subarray(0, ciphertextWithTag.length - 16)
536
+
537
+ const decipher = createDecipheriv('aes-256-gcm', masterKey, nonce)
538
+ decipher.setAuthTag(tag)
539
+ const decrypted = Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString('utf8')
540
+
541
+ const match = decrypted.match(/xoxd-[A-Za-z0-9%]+/)
542
+ return match ? match[0] : null
543
+ } catch {
544
+ return null
545
+ }
546
+ }
547
+
548
+ getWindowsMasterKey(): Buffer | null {
549
+ try {
550
+ const localStatePath = join(this.slackDir, 'Local State')
551
+ if (!existsSync(localStatePath)) {
552
+ return null
553
+ }
554
+
555
+ const localState = JSON.parse(readFileSync(localStatePath, 'utf8')) as {
556
+ os_crypt?: { encrypted_key?: string }
557
+ }
558
+ const encryptedKeyB64 = localState?.os_crypt?.encrypted_key
559
+ if (!encryptedKeyB64) {
560
+ return null
561
+ }
562
+
563
+ const encryptedKey = Buffer.from(encryptedKeyB64, 'base64')
564
+ if (encryptedKey.subarray(0, 5).toString() !== 'DPAPI') {
565
+ return null
566
+ }
567
+
568
+ return this.decryptDPAPI(encryptedKey.subarray(5))
569
+ } catch {
570
+ return null
571
+ }
572
+ }
573
+
574
+ decryptDPAPI(encrypted: Buffer): Buffer | null {
575
+ if (this.platform !== 'win32') {
576
+ return null
577
+ }
578
+
579
+ try {
580
+ const b64Input = encrypted.toString('base64')
581
+ const script = [
582
+ 'Add-Type -AssemblyName System.Security',
583
+ `$d=[System.Security.Cryptography.ProtectedData]::Unprotect([Convert]::FromBase64String("${b64Input}"),$null,[System.Security.Cryptography.DataProtectionScope]::CurrentUser)`,
584
+ '[Convert]::ToBase64String($d)',
585
+ ].join(';')
586
+
587
+ const encodedCommand = Buffer.from(script, 'utf16le').toString('base64')
588
+ const result = execSync(`powershell -NoProfile -NonInteractive -EncodedCommand ${encodedCommand}`, {
589
+ encoding: 'utf8',
590
+ timeout: 10000,
591
+ }).trim()
592
+
593
+ return Buffer.from(result, 'base64')
594
+ } catch {
595
+ return null
596
+ }
597
+ }
598
+
509
599
  private cachedKey: Buffer | null = null
510
600
  private usedCachedKey = false
511
601