meshcore-hashtag-cracker 1.2.0 → 1.3.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.
package/README.md CHANGED
@@ -11,8 +11,8 @@ This is an LLM-developed library and has borne out its correctness in various ap
11
11
  ## Features
12
12
 
13
13
  - WebGPU-accelerated brute force (100M+ keys/second on modern GPUs)
14
- - Dictionary attack support with external wordlist
15
- - Configurable timestamp and UTF-8 filters
14
+ - Dictionary attack support with built-in English wordlist (370k words)
15
+ - Configurable timestamp and UTF-8 filters to handle very-possible MAC collisions with sanity checks
16
16
  - Progress callbacks with ETA
17
17
  - Resume support for interrupted searches
18
18
 
@@ -33,6 +33,9 @@ For direct browser usage without a bundler, download [`browser/meshcore_cracker.
33
33
  <script>
34
34
  const cracker = new MeshCoreCracker.GroupTextCracker();
35
35
 
36
+ // Optional: load a wordlist for dictionary attack (tried before GPU brute force)
37
+ // await cracker.loadWordlist('https://example.com/words.txt');
38
+
36
39
  cracker.crack('150013752F15A1BF3C018EB1FC4F26B5FAEB417BB0F1AE8FF07655484EBAA05CB9A927D689', {
37
40
  maxLength: 4
38
41
  }).then(result => {
@@ -45,14 +48,17 @@ For direct browser usage without a bundler, download [`browser/meshcore_cracker.
45
48
  </script>
46
49
  ```
47
50
 
48
- The bundle exposes all exports under the `MeshCoreCracker` global object.
49
-
50
51
  ## Usage
51
52
 
52
53
  ```typescript
53
54
  import { GroupTextCracker } from 'meshcore-hashtag-cracker';
55
+ // Built-in 370k word English dictionary (tree-shakeable, ~4MB)
56
+ // Dictionary is checked BEFORE GPU brute force - a room like #football
57
+ // takes hours to brute force but milliseconds via dictionary lookup
58
+ import { ENGLISH_WORDLIST } from 'meshcore-hashtag-cracker/wordlist';
54
59
 
55
60
  const cracker = new GroupTextCracker();
61
+ cracker.setWordlist(ENGLISH_WORDLIST);
56
62
 
57
63
  // Example GroupText packet (hex string, no spaces or 0x prefix)
58
64
  const packetHex = '150013752F15A1BF3C018EB1FC4F26B5FAEB417BB0F1AE8FF07655484EBAA05CB9A927D689';
@@ -83,12 +89,13 @@ Message: foo
83
89
  const result = await cracker.crack(packetHex, {
84
90
  maxLength: 8, // Max room name length to try (default: 8)
85
91
  startingLength: 1, // Min room name length to try (default: 1)
86
- useDictionary: true, // Try dictionary words first (default: true)
92
+ useDictionary: true, // Try dictionary words first (default: true); needs cracker.setWordlist() called first
87
93
  useTimestampFilter: true, // Reject old timestamps (default: true)
88
94
  validSeconds: 2592000, // Timestamp window in seconds (default: 30 days)
89
95
  useUtf8Filter: true, // Reject invalid UTF-8 (default: true)
90
96
  forceCpu: false, // Force CPU mode, skip GPU (default: false)
91
- startFrom: 'abc', // Resume from position (optional)
97
+ startFrom: 'abc', // Resume after this position (optional)
98
+ startFromType: 'bruteforce', // 'dictionary' or 'bruteforce' (default: 'bruteforce')
92
99
  });
93
100
  ```
94
101