You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add support for multiple wordlist files via -w flag
Implemented:
- Changed Wordlist (string) to Wordlists ([]string) to support multiple -w flags
- Created loadWordlist() helper function to load individual wordlist files
* Detects format (rainbow table vs plain text)
* Auto-generates 8.3 filenames for plain text using Gen8dot3()
* Returns records and format flag
- Created mergeWordlists() helper function for smart deduplication
* Uses filename+extension as key for uniqueness
* Prioritizes rainbow table entries over plain text
* Tracks duplicate count for logging
- Updated main wordlist loading logic to:
* Loop through multiple wordlist files
* Merge with deduplication
* Enable rainbow mode if ANY wordlist is rainbow format
* Log informative messages (entries, files, duplicates)
- Updated README with usage examples and documentation
Features:
✅ Multiple wordlist files supported (-w file1 -w file2 -w file3)
✅ Smart deduplication (rainbow entries override plain text)
✅ Mix plain text and rainbow table formats
✅ Auto-generate 8.3 names for plain text wordlists
✅ Backward compatible (single -w still works)
✅ Informative logging at INFO level
Testing:
✅ Multiple wordlists: Works, deduplication confirmed
✅ Single wordlist: Works, backward compatible
✅ No wordlist: Default embedded wordlist works
✅ Build successful, no compilation errors
Copy file name to clipboardExpand all lines: README.md
+13Lines changed: 13 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,6 +25,7 @@ Additional features implemented in this fork:
25
25
26
26
| Feature | Description |
27
27
|---------|-------------|
28
+
| Multiple Wordlists (`-w`) | Support for specifying multiple wordlist files using multiple `-w` flags. Wordlists are merged with automatic deduplication. Supports mixing plain text and rainbow table formats. Rainbow table entries take priority when duplicates are found. |
28
29
| Relaxed Match Mode (`-R`) | Enables detection of tentative matches where the final status matches the negative marker. Useful for Jakarta/CFM files that can be loaded via their 8.3 short filenames. Tentative matches are marked with yellow color in human output and `"tentative": true` in JSON output. |
29
30
| Case-insensitive `INDEX_ALLOCATION`| The `replaceBinALLOCATION()` function now uses case-insensitive matching for `bin::$INDEX_ALLOCATION` paths. |
30
31
| WAF Evasion | Changed session identifier from `(S(x))` to `(S(d))` to avoid detection by sensitive WAFs. |
@@ -143,7 +143,7 @@ var requestDelay time.Duration
143
143
// Command-line arguments and help
144
144
typeargumentsstruct {
145
145
Urls []string`arg:"positional,required" help:"url to scan (multiple URLs can be provided; a file containing URLs can be specified with an «at» prefix, for example: @urls.txt)" placeholder:"URL"`
146
-
Wordliststring`arg:"-w" help:"combined wordlist + rainbow table generated with shortutil" placeholder:"FILE"`
146
+
Wordlists[]string`arg:"--wordlist,-w,separate" help:"combined wordlist + rainbow table generated with shortutil (can be specified multiple times)" placeholder:"FILE"`
147
147
Headers []string`arg:"--header,-H,separate" help:"header to send with each request (use multiple times for multiple headers)"`
148
148
Concurrencyint`arg:"-c" help:"number of requests to make at once" default:"20"`
149
149
Timeoutint`arg:"-t" help:"per-request timeout in seconds" placeholder:"SECONDS" default:"10"`
@@ -1121,6 +1121,122 @@ func Scan(urls []string, hc *http.Client, st *httpStats, wc wordlistConfig, mk m
1121
1121
1122
1122
}
1123
1123
1124
+
// loadWordlist loads a single wordlist file and returns its records and format type
0 commit comments