v1.7 updates:
- Phonebook is moving to a paywall, so I've removed it. Depending on the pricing of the new model, I may add it back.
- USStaff has shut down, so I've removed it.
- Implemented python logging for better readability and to make troubleshooting easier.
This tool is designed to create a list of employees for the company of your choice. It pulls from your choices of LinkedIn and Hunter.io. Also can pull and mangle a list of 250k statistically likely names.
-
The LinkedIn functionality pulls employees from the company LinkedIn page based on your LinkedIn account's connections. The more connections you have the better.
-
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 statistically like names. (CAUTION: Long List) (Thanks to #AchocolatechipPancake for this one)
-
The script also cleans up the names, removes duplicates, removes accents, changes capitalization for uniformity, and can mangle to the output you want (10 options built-in).
-
YAML files are supported. I recommend against putting your LinkedIn password in a YAML file, therefore if you leave that blank, the script will ask for it after it's run.
-
There is a DEBUG mode to help with troubleshooting issues.
-
NameSpi now has the function to attempt a bypass with the LinkedIn Security Captcha. This is set by the '-lir' option and is at a default of 10 attempts. I generally noticed after about 30 attempts you're lost for about an hour.
-
LinkedIn can sometimes have an issue with logging in, so a loop has been added to try again if it fails.
-
Another measure has been implemented to ensure the output is all lowercase, limiting the number of times a duplicate might appear.
- LinkedIn module needs to be ran from an IP address that has previously logged into the account you are using, otherwise LinkedIn will send a security code, and this script does not support that.
- LinkedIn module can have rate limiting, I implemented a loop to 'bypass' the captcha (-lir) but there can still be issues.
- 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.
$ python3 NameSpi.py -h
_ _ ____ _
| \ | | __ _ _ __ ___ ___/ ___| _ __ (_)
| \| |/ _` | '_ ` _ \ / _ \___ \| '_ \| |
| |\ | (_| | | | | | | __/___) | |_) | |
|_| \_|\__,_|_| |_| |_|\___|____/| .__/|_|
|_| v1.7
Author: #Waffl3ss
usage: NameSpi.py [-h] [-li] [-hio] [-sl] [-o OUTPUTFILE] [-pn] [-c COMPANY] [-id COMPANYID] [-s SLEEP] [-t TIMEOUT] [-user LINKEDIN_USERNAME] [-pass LINKEDIN_PASSWORD] [-hapi HUNTERAPIKEY] [-hdom HUNTERDOMAIN] [-m MANGLEMODE] [-mo] [-yaml USEYAMLFILE] [-debug] [-lir]
options:
-h, --help show this help message and exit
-li Run the LinkedIn module
-hio Pull Emails from Hunter.io
-sl Use Statistically Likely Usernames in output (CAUTION: Creates a VERY long list) Special Thanks: AchocolatechipPancake
-o OUTPUTFILE Write output to file
-pn Print found names to screen
-c COMPANY Company to search for
-id COMPANYID Company ID to search for
-s SLEEP Time to sleep between requests
-t TIMEOUT HTTP Request timeout
-user LINKEDIN_USERNAME
LinkedIn.com Authenticated Username
-pass LINKEDIN_PASSWORD
LinkedIn.com Authenticated Password
-hapi HUNTERAPIKEY Hunter.io API Key
-hdom HUNTERDOMAIN Domain to query in Hunter.io
-m MANGLEMODE Mangle Mode (use '-mo' to list mangle options). Only works with an output file (-o)
-mo List Mangle Mode Options
-yaml USEYAMLFILE Use YAML input file with options
-debug Turn on debug mode for error output
-lir Amount of times to attempt the LinkedIn Security bypass
./NameSpi.py -o MyOutput -li
./NameSpi.py -o MyOutput -li -hio -yaml Sample.yaml
./NameSpi.py -o MyOutput -li -hio -pn
./NameSpi.py -o MyOutput -li -hio
./NameSpi.py -o MyOutput -li -hio -sl
./NameSpi.py -pn -li
Options like the LinkedIn credentials, Hunter.io API Key, Hunter.io Domain Name, and Company name do not need to be in the command itself. The script will ask for those if you have selected the options to run those modules. These can also be thrown into the YAML file. I dont recommend putting your LinkedIn password in the file, and therefore if you leave it blank in the YAML file, the script will ask for it during execution.
Example:
$ ./NameSpi.py -li -hio
_ _ ____ _
| \ | | __ _ _ __ ___ ___/ ___| _ __ (_)
| \| |/ _` | '_ ` _ \ / _ \___ \| '_ \| |
| |\ | (_| | | | | | | __/___) | |_) | |
|_| \_|\__,_|_| |_| |_|\___|____/| .__/|_|
|_| v1.7
Author: #Waffl3ss
Company Name: <input here>
LinkedIn Username: <input here>
LinkedIn Password: <input here>
Hunter.io Domain to Query: <input here>
Hunter.io API Key: <input here>
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>