diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..fe715984
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "python.linting.pylintEnabled": false
+}
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index 9cecc1d4..9d742475 100755
--- a/LICENSE
+++ b/LICENSE
@@ -1,7 +1,7 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -645,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see .
+ along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
@@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
-.
+.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
-.
+.
diff --git a/base.html b/base.html
index 75cb578b..b668c766 100644
--- a/base.html
+++ b/base.html
@@ -2,7 +2,7 @@
-
+
diff --git a/domain/domain_checkpunkspider.py b/domain/domain_checkpunkspider.py
index 8bf09b22..54a726ff 100755
--- a/domain/domain_checkpunkspider.py
+++ b/domain/domain_checkpunkspider.py
@@ -21,6 +21,8 @@ class style:
def checkpunkspider(reversed_domain):
time.sleep(0.5)
+
+ # Tried putting on HTTPS, but the CERT is broken on this website.
req = requests.post("http://www.punkspider.org/service/search/detail/" + reversed_domain, verify=False)
try:
return json.loads(req.content)
diff --git a/domain/domain_emailhunter.py b/domain/domain_emailhunter.py
index b746a65e..e6d8e657 100755
--- a/domain/domain_emailhunter.py
+++ b/domain/domain_emailhunter.py
@@ -45,7 +45,7 @@ def main(domain):
def output(data, domain=""):
if type(data) == list and data[1] == "INVALID_API":
print colored(
- style.BOLD + '\n[-] Emailhunter API key not configured, skipping Email Search.\nPlease refer to http://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
+ style.BOLD + '\n[-] Emailhunter API key not configured, skipping Email Search.\nPlease refer to https://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
else:
for x in data:
print str(x)
diff --git a/domain/domain_forumsearch.py b/domain/domain_forumsearch.py
index f2107ff6..bc22ebdc 100755
--- a/domain/domain_forumsearch.py
+++ b/domain/domain_forumsearch.py
@@ -19,7 +19,7 @@ class style:
def boardsearch_forumsearch(domain):
time.sleep(0.3)
req = requests.get(
- 'http://boardreader.com/index.php?a=l&q=%s&d=0&extended_search=1&q1=%s<ype=all&p=50' % (domain, domain))
+ 'https://boardreader.com/index.php?a=l&q=%s&d=0&extended_search=1&q1=%s<ype=all&p=50' % (domain, domain))
soup = BeautifulSoup(req.content, "lxml")
text = soup.findAll('bdo', {"dir": "ltr"})
links = {}
diff --git a/domain/domain_github.py b/domain/domain_github.py
index a7e15df9..8b5d10a8 100755
--- a/domain/domain_github.py
+++ b/domain/domain_github.py
@@ -38,7 +38,7 @@ def output(data, domain=""):
if type(data) == list and not data[0]:
if data[1] == "INVALID_API":
print colored(
- style.BOLD + '\n[-] Github Access Token not configured, skipping Github Search.\nPlease refer to http://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
+ style.BOLD + '\n[-] Github Access Token not configured, skipping Github Search.\nPlease refer to https://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
else:
print colored("Sad! Nothing found on github", 'red')
else:
diff --git a/domain/domain_googletracking.py b/domain/domain_googletracking.py
index 1d7c65c9..a91e5bd8 100755
--- a/domain/domain_googletracking.py
+++ b/domain/domain_googletracking.py
@@ -16,6 +16,7 @@
Original Idea: @jms_dot_py
Original article -
+# Tried putting on HTTPS, but the CERT is broken on this website.
http://www.automatingosint.com/blog/2017/07/osint-website-connections-tracking-codes/
Original code -
diff --git a/domain/domain_history.py b/domain/domain_history.py
index ff8fe69c..cc709ee0 100755
--- a/domain/domain_history.py
+++ b/domain/domain_history.py
@@ -19,7 +19,7 @@ class style:
def netcraft_domain_history(domain):
ip_history_dict = {}
time.sleep(0.3)
- endpoint = "http://toolbar.netcraft.com/site_report?url=%s" % (domain)
+ endpoint = "https://toolbar.netcraft.com/site_report?url=%s" % (domain)
req = requests.get(endpoint)
soup = BeautifulSoup(req.content, 'html.parser')
diff --git a/domain/domain_pagelinks.py b/domain/domain_pagelinks.py
index 62632935..240929db 100755
--- a/domain/domain_pagelinks.py
+++ b/domain/domain_pagelinks.py
@@ -17,7 +17,7 @@ class style:
def pagelinks(domain):
time.sleep(0.3)
try:
- req = requests.get('http://api.hackertarget.com/pagelinks/?q=%s' % (domain))
+ req = requests.get('https://api.hackertarget.com/pagelinks/?q=%s' % (domain))
page_links = req.content.split("\n")
return page_links
except:
diff --git a/domain/domain_pastes.py b/domain/domain_pastes.py
index 9e55f663..a803368e 100755
--- a/domain/domain_pastes.py
+++ b/domain/domain_pastes.py
@@ -73,7 +73,7 @@ def output(data, domain=""):
if not data[0]:
if type(data) == list and data[1] == "INVALID_API":
print colored(
- style.BOLD + '\n[-] google_cse_key and google_cse_cx not configured. Skipping paste(s) search.\nPlease refer to http://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
+ style.BOLD + '\n[-] google_cse_key and google_cse_cx not configured. Skipping paste(s) search.\nPlease refer to https://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
else:
print "Error Message: %s" % data[1]['error']['message']
print "Error Code: %s" % data[1]['error']['code']
diff --git a/domain/domain_shodan.py b/domain/domain_shodan.py
index 98770e18..60f65adf 100755
--- a/domain/domain_shodan.py
+++ b/domain/domain_shodan.py
@@ -38,7 +38,7 @@ def main(domain):
def output(data, domain=""):
if type(data) == list and data[1] == "INVALID_API":
print colored(
- style.BOLD + '\n[-] Shodan API Key not configured. Skipping Shodan search.\nPlease refer to http://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
+ style.BOLD + '\n[-] Shodan API Key not configured. Skipping Shodan search.\nPlease refer to https://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
else:
if 'matches' in data.keys():
for x in data['matches']:
diff --git a/domain/domain_subdomains.py b/domain/domain_subdomains.py
index 18cb4429..37993b34 100755
--- a/domain/domain_subdomains.py
+++ b/domain/domain_subdomains.py
@@ -54,7 +54,9 @@ def subdomains(domain, subdomain_list):
def subdomains_from_netcraft(domain, subdomain_list):
print colored(' [+] Extracting subdomains Netcraft\n', 'blue')
target_dom_name = domain.split(".")
- req1 = requests.get("http://searchdns.netcraft.com/?host=%s" % domain)
+ req1 = requests.get("https://searchdns.netcraft.com/?host=%s" % domain)
+
+ #The page still shows HTTP in the HTML body, so this regex needs to staty at HTTP.
link_regx = re.compile('')
links_list = link_regx.findall(req1.content)
for x in links_list:
@@ -76,7 +78,7 @@ def subdomains_from_netcraft(domain, subdomain_list):
next_page = 21
for x in range(2, num_pages):
- url = "http://searchdns.netcraft.com/?host=%s&last=%s&from=%s&restriction=site%%20contains" % (
+ url = "https://searchdns.netcraft.com/?host=%s&last=%s&from=%s&restriction=site%%20contains" % (
domain, last_item, next_page)
req2 = requests.get(url)
link_regx = re.compile('')
diff --git a/domain/domain_zoomeye.py b/domain/domain_zoomeye.py
index 426c7551..ef960da6 100755
--- a/domain/domain_zoomeye.py
+++ b/domain/domain_zoomeye.py
@@ -32,7 +32,7 @@ def search_zoomeye(domain):
time.sleep(0.3)
zoomeye_token = get_accesstoken_zoomeye(domain)
authData = {"Authorization": "JWT " + str(zoomeye_token)}
- req = requests.get('http://api.zoomeye.org/web/search/?query=site:%s&page=1' % domain, headers=authData)
+ req = requests.get('https://api.zoomeye.org/web/search/?query=site:%s&page=1' % domain, headers=authData)
return req.text
@@ -51,7 +51,7 @@ def main(domain):
def output(data, domain=""):
if type(data) == list and data[1] == "INVALID_API":
print colored(
- style.BOLD + '\n[-] ZoomEye username and password not configured. Skipping Zoomeye Search.\nPlease refer to http://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
+ style.BOLD + '\n[-] ZoomEye username and password not configured. Skipping Zoomeye Search.\nPlease refer to https://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
else:
if 'matches' in data.keys():
print len(data['matches'])
diff --git a/emails/email_basic_checks.py b/emails/email_basic_checks.py
index 64b2d740..401d96f4 100755
--- a/emails/email_basic_checks.py
+++ b/emails/email_basic_checks.py
@@ -19,7 +19,7 @@ class style:
def basic_checks(email):
if re.match('[^@]+@[^@]+\.[^@]+', email):
if cfg.mailboxlayer_api != "" and cfg.mailboxlayer_api != "XYZ" and cfg.mailboxlayer_api != "" and cfg.mailboxlayer_api != "XYZ":
- url = "http://apilayer.net/api/check?access_key=%s&email=%s&smtp=1&format=1" % (cfg.mailboxlayer_api, email)
+ url = "https://apilayer.net/api/check?access_key=%s&email=%s&smtp=1&format=1" % (cfg.mailboxlayer_api, email)
req = requests.get(url)
resp = json.loads(req.text)
return resp
@@ -33,7 +33,7 @@ def output(data, email=""):
if data == -1:
print colored(style.BOLD + '\n[-] Please pass a valid email ID.\n' + style.END, 'red')
elif data == -2:
- print colored(style.BOLD + '\n[-] MailBoxLayer_API Key not configured. Skipping basic checks.\nPlease refer to http://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
+ print colored(style.BOLD + '\n[-] MailBoxLayer_API Key not configured. Skipping basic checks.\nPlease refer to https://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
else:
print "Is it a free Email Address?:",
print "No" if not data['free'] else "Yes"
diff --git a/emails/email_clearbit.py b/emails/email_clearbit.py
index 5e726d7a..82a7b17e 100755
--- a/emails/email_clearbit.py
+++ b/emails/email_clearbit.py
@@ -37,7 +37,7 @@ def output(data, email=""):
print data
if type(data) == list and data[1] == "INVALID_API":
print colored(
- style.BOLD + '\n[-] Clearbit API Key not configured. Skipping Clearbit Search.\nPlease refer to http://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
+ style.BOLD + '\n[-] Clearbit API Key not configured. Skipping Clearbit Search.\nPlease refer to https://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
else:
for x in data.keys():
print '%s details:' % x
diff --git a/emails/email_fullcontact.py b/emails/email_fullcontact.py
index 30f2cf9b..a80cc9ea 100755
--- a/emails/email_fullcontact.py
+++ b/emails/email_fullcontact.py
@@ -32,7 +32,7 @@ def banner():
def output(data, email=""):
if type(data) == list and data[1] == "INVALID_API":
print colored(
- style.BOLD + '\n[-] Full-Contact API Key not configured. Skipping Fullcontact Search.\nPlease refer to http://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
+ style.BOLD + '\n[-] Full-Contact API Key not configured. Skipping Fullcontact Search.\nPlease refer to https://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
else:
if data.get("status", "") == 200:
if data.get("contactInfo", "") != "":
diff --git a/emails/email_pastes.py b/emails/email_pastes.py
index e6c474de..70eac22d 100755
--- a/emails/email_pastes.py
+++ b/emails/email_pastes.py
@@ -73,7 +73,7 @@ def output(data, email=""):
if type(data) == list and not data[0]:
if data[1] == "INVALID_API":
print colored(
- style.BOLD + '\n[-] google_cse_key and google_cse_cx not configured. Skipping paste(s) search.\nPlease refer to http://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
+ style.BOLD + '\n[-] google_cse_key and google_cse_cx not configured. Skipping paste(s) search.\nPlease refer to https://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
else:
print "Error Message: %s" % data[1]['error']['message']
print "Error Code: %s" % data[1]['error']['code']
diff --git a/emails/email_slideshare.py b/emails/email_slideshare.py
index 6bfb715b..7c0752c1 100755
--- a/emails/email_slideshare.py
+++ b/emails/email_slideshare.py
@@ -20,7 +20,7 @@ def banner():
def main(email):
- req = requests.get('http://www.slideshare.net/search/slideshow?q=%s' % (email))
+ req = requests.get('https://www.slideshare.net/search/slideshow?q=%s' % (email))
soup = BeautifulSoup(req.content, "lxml")
atag = soup.findAll('a', {'class': 'title title-link antialiased j-slideshow-title'})
slides = {}
@@ -33,7 +33,7 @@ def output(data, email=""):
if data:
print "Found %s published slides\n" % len(data)
for tl, lnk in data.items():
- print str(tl).strip() + " : http://www.slideshare.net" + str(lnk).strip()
+ print str(tl).strip() + " : https://www.slideshare.net" + str(lnk).strip()
else:
print colored('[-] No Associated Slides found.', 'red')
diff --git a/emails/email_whoismind.py b/emails/email_whoismind.py
index 88dc4aaf..807a3a37 100755
--- a/emails/email_whoismind.py
+++ b/emails/email_whoismind.py
@@ -20,7 +20,7 @@ def banner():
def main(email):
- req = requests.get('http://www.whoismind.com/email/%s.html' % (email))
+ req = requests.get('https://www.whoismind.com/email/%s.html' % (email))
soup = BeautifulSoup(req.content, "lxml")
atag = soup.findAll('a')
domains = []
diff --git a/ip/ip_shodan.py b/ip/ip_shodan.py
index eb939fb9..98e146e9 100755
--- a/ip/ip_shodan.py
+++ b/ip/ip_shodan.py
@@ -31,7 +31,7 @@ def main(ip):
def output(data, ip=""):
if type(data) == list and data[1] == "INVALID_API":
print colored(
- style.BOLD + '\n[-] Shodan API Key not configured. Skipping Shodan search.\nPlease refer to http://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
+ style.BOLD + '\n[-] Shodan API Key not configured. Skipping Shodan search.\nPlease refer to https://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
else:
if 'error' in data.keys():
print 'No information available for that IP.'
diff --git a/ip/ip_virustotal.py b/ip/ip_virustotal.py
index 84978e88..2ecce57d 100644
--- a/ip/ip_virustotal.py
+++ b/ip/ip_virustotal.py
@@ -26,7 +26,7 @@ def main(ip):
print ip
api = cfg.virustotal_public_api
params = "{'ip': '%s', 'apikey': '%s'}" % (ip, api)
- url = "http://www.virustotal.com/vtapi/v2/ip-address/report?ip=%s&apikey=%s" % (ip, api)
+ url = "https://www.virustotal.com/vtapi/v2/ip-address/report?ip=%s&apikey=%s" % (ip, api)
req = requests.get(url, params)
return req
else:
@@ -37,7 +37,7 @@ def output(data, ip=""):
# Use the data variable to print out to console as you like
if type(data) == list and data[1] == "INVALID_API":
print colored(
- style.BOLD + '\n[-] VirusTotal API Key not configured. Skipping VirusTotal Search.\nPlease refer to http://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
+ style.BOLD + '\n[-] VirusTotal API Key not configured. Skipping VirusTotal Search.\nPlease refer to https://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
else:
for i in data:
print i
diff --git a/mkdocs.yml b/mkdocs.yml
index 8d0f1ebf..c5c190a2 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -30,7 +30,7 @@ extra:
site_name: DataSploit
site_description: All about DataSploit.
site_author: Shubham Mittal
-site_url: http://datasploit.github.io/datasploit/
+site_url: https://datasploit.github.io/datasploit/
# Repository
repo_name: datasploit/datasploit
diff --git a/username/username_gitscrape.py b/username/username_gitscrape.py
index 3b6d32bc..b036a3c2 100755
--- a/username/username_gitscrape.py
+++ b/username/username_gitscrape.py
@@ -74,7 +74,7 @@ def output(data, username=""):
if type(data) == list:
if data[1] == "INVALID_API":
print colored(
- style.BOLD + '\n[-] Github Access Token not configured. Skipping Gi Search.\nPlease refer to http://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
+ style.BOLD + '\n[-] Github Access Token not configured. Skipping Gi Search.\nPlease refer to https://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
else:
print "[+] Found %s repos for username %s\n" % (len(data), username)
counter = 1
diff --git a/username/username_twitterdetails.py b/username/username_twitterdetails.py
index f3eeee44..7219ee11 100755
--- a/username/username_twitterdetails.py
+++ b/username/username_twitterdetails.py
@@ -77,7 +77,7 @@ def main(username):
def output(data, username=""):
if data[1] == "INVALID_API":
print colored(
- style.BOLD + '\n[-] Twitter API Keys not configured. Skipping Twitter search.\nPlease refer to http://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
+ style.BOLD + '\n[-] Twitter API Keys not configured. Skipping Twitter search.\nPlease refer to https://datasploit.readthedocs.io/en/latest/apiGeneration/.\n' + style.END, 'red')
else:
if data:
hashlist = data[0]