meshcore-hashtag-cracker 1.2.1 → 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 +11 -5
- package/browser/meshcore_cracker.min.js +6 -6
- package/browser/meshcore_cracker.min.js.map +3 -3
- package/browser/testbed.html +476 -0
- package/dist/cracker.d.ts.map +1 -1
- package/dist/cracker.js +3 -1
- package/dist/cracker.js.map +1 -1
- package/dist/wordlist.d.ts +12 -0
- package/dist/wordlist.d.ts.map +1 -0
- package/dist/wordlist.js +12 -0
- package/dist/wordlist.js.map +1 -0
- package/package.json +7 -2
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
|
|
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,7 +89,7 @@ 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)
|