SpiSuite - v0.9

December 12, 2025 ยท View on GitHub

Please make sure to read the README before using SpiSuite.

v0.9 - QoL and Success fixes

  • Implemented progress bars throughout for better tracking of current status in modules
  • Fixed the Hunter.io scraping module, now outputs correctly ("First Last" if default mangle (mode 0) or the email value if any other mode)
  • Fixed LinkedIn and JobSpi to use the same Company information, as well as the same login session, so that its not asking for things twice or creating too many login attempts.
  • LinkedIn has some heavy rate limiting when going through the expierence enumeration. Its not something I have found a way around currently. So you'll only get back a select number of users job inforamtion from the JobSpi function...
  • No longer providing release binaries... if you cant build it, dont use it...
  • Other QoL fixes for speed and reliability.
  • NOTE: If you run SpiSuite or any LinkedIn enumeration to often (like more than twice), you will get drastically reduced results.

v0.4 - Initial Release in Go

  • This is a combination of NameSpi and JobSpi in a single tool.

This tool is designed to create a list of employees for a company of your choice. It pulls from LinkedIn and/or Hunter.io, as well as the options to include statistically likely names (250k) and then mangle the output. The inclusion of JobSpi now allows the script to include employee information from LinkedIn about the employees current job, job role, length at job, location, and full name.

  • The LinkedIn functionality pulls employees from the company LinkedIn page based on your LinkedIn account's connections. The more connections the better the results.
  • The Hunter.io functionality pulls employee names based on your subscription level. The free version only allows 10. This will also identify the email format if you plan on mangling names for password guessing.
  • The statistically likely functionality pulls 250k stat likely names. CAUTION: Its a really long list...
  • The script also cleans up the names, removes duplicates, removes accents, changes capitalization for uniformity, and can mangle the output to however you want (10 options built in)
  • YAML files are supported, I recommend against putting your LinkedIn password in the YAML file, therefore if you leave that option blank, the script will ask you for it after you run it.
  • There is a DEBUG mode to help with troubleshooting issues.
  • The script needs to be ran from a system that has previously logged into the LinkedIn account via web browser.
  • LinkedIn does throttle things, so any excessive login attempts may get you blocked from non-interactive login for 24 hours
  • LinkedIn module can pull the CompanyID based on the CompanyName provided. It will supply a list of potential ID's to select from.
  • You do not need to supply EVERY option in the command itself. If you supply any collection methods (-li, -hio) and nothing else, the script will ask for the information required to complete the function. This is also mentioned below in the Scraping Options header.

Installation:

go mod init SpiSuite
go mod tidy
go build

Usage

./SpiSuite -h

.d88888b           oo .d88888b           oo   dP
88.    "'             88.    "'               88
`Y88888b. 88d888b. dP `Y88888b. dP    dP dP d8888P .d8888b.
      `8b 88'  `88 88       `8b 88    88 88   88   88ooood8
d8'   .8P 88.  .88 88 d8'   .8P 88.  .88 88   88   88.  ...
 Y88888P  88Y888P' dP  Y88888P  `88888P' dP   dP   `88888P'
          88
          dP       #Waffl3ss                  v0.9

  -c string
        Company to search for
  -debug
        Turn on debug mode for error output
  -hapi string
        Hunter.io API Key
  -hdom string
        Domain to query in Hunter.io
  -hio
        Pull Emails from Hunter.io
  -id string
        Company ID to search for
  -js
        Run Job enumeration and output detailed employment information to CSV
  -li
        Run the LinkedIn module
  -lir int
        Amount of times to attempt the LinkedIn Security bypass (default 5)
  -m int
        Mangle Mode (use '-mo' to list mangle options). Only works with an output file (-o)
  -mo
        List Mangle Mode Options
  -o string
        Write output to file
  -pass string
        LinkedIn.com Authenticated Password
  -pn
        Print found names to screen
  -s int
        Time to sleep between requests (default 5)
  -sl
        Use Statistically Likely Usernames in output (CAUTION: Creates a VERY long list)
  -t int
        HTTP Request timeout (default 5)
  -user string
        LinkedIn.com Authenticated Username
  -yaml string
        Use YAML input file with options

Examples

./SpiSuite -o MyOutput -li
./SpiSuite -o MyOutput -li -hio -yaml Sample.yaml
./SpiSuite -o MyOutput -li -hio -pn
./SpiSuite -o MyOutput -li -hio
./SpiSuite -o MyOutput -li -hio -sl
./SpiSuite -o MyOutput -li -hio -sl -js
./SpiSuite -pn -li 

Mangle Modes

If you want something else, use mode 0 and mangle it yourself.
Mangle Modes included:

     0 = <First> <LAST>    (Default)
     1 = <FIRST>.<LAST>
     2 = <F>.<LAST>
     3 = <FIRST>.<L>
     4 = <FIRST><LAST>
     5 = <F><LAST>
     6 = <FIRST><L>
     7 = <LAST><F>
     8 = <FIRST>_<LAST>
     9 = <LAST>_<FIRST>
     10 = <LAST>.<F>