def main(domain): if vault.get_key('google_cse_key') != None and vault.get_key( 'google_cse_cx') != None: status, data = google_search(domain) return [status, data] else: return [False, "INVALID_API"]
def check_api_keys(): try: if vault.get_key('censysio_id') != None and vault.get_key('censysio_secret') != None: return True else: return False except: return False
def main(domain): if vault.get_key('zoomeyepass') != "" and vault.get_key('zoomeyeuser') != "": zoomeye_results = search_zoomeye(domain) if zoomeye_results[0]: return True, json.loads(zoomeye_results) else: return zoomeye_results else: return [False, "INVALID_API"]
def check_api_keys(): try: if vault.get_key('censysio_id') != None and vault.get_key( 'censysio_secret') != None: return True else: return False except: return False
def check_api_keys(): try: if vault.get_key('censysio_id') and vault.get_key('censysio_secret'): return True else: return False except Exception as e: print("Censys Keys not setutp") return False
def main(domain): if vault.get_key('zoomeyepass') != "" and vault.get_key('zoomeyeuser') != "": zoomeye_results = search_zoomeye(domain) if zoomeye_results[0]: return True, json.loads(zoomeye_results[1]) else: return zoomeye_results else: return [False, "INVALID_API"]
def main(ip): # Use the ip variable to do some stuff and return the data if vault.get_key('virustotal_public_api') != None: print ip api = vault.get_key('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) req = requests.get(url, params) return req else: return [False, "INVALID_API"]
def get_accesstoken_zoomeye(domain): username = vault.get_key('zoomeyeuser') password = vault.get_key('zoomeyepass') headers = {'Content-type': 'application/json', 'Accept': 'text/plain'} datalogin = '******' % (username, password) s = requests.post("https://api.zoomeye.org/user/login", data=datalogin, headers=headers) responsedata = json.loads(s.text) if "error" in responsedata and responsedata['error'] == "bad_request": return False access_token1 = responsedata.get('access_token', "78c4a2dd70ddeffc5fc3c0639f86245a") return access_token1
def get_accesstoken_zoomeye(domain): username = vault.get_key('zoomeyeuser') password = vault.get_key('zoomeyepass') headers = {'Content-type': 'application/json', 'Accept': 'text/plain'} datalogin = '******' % (username, password) s = requests.post("https://api.zoomeye.org/user/login", data=datalogin, headers=headers) responsedata = json.loads(s.text) if "error" in responsedata and responsedata['error'] == "bad_request": return False access_token1 = responsedata.get('access_token', "78c4a2dd70ddeffc5fc3c0639f86245a") return access_token1
def main(ip): # Use the ip variable to do some stuff and return the data if vault.get_key('virustotal_public_api') != None: print(ip) api = vault.get_key('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) req = requests.get(url, params) return req else: return [False, "INVALID_API"]
def basic_checks(email): if re.match('[^@]+@[^@]+\.[^@]+', email): mailboxlayer_api = vault.get_key('mailboxlayer_api') if vault.get_key('mailboxlayer_api') != None: url = "http://apilayer.net/api/check?access_key=%s&email=%s&smtp=1&format=1" % (mailboxlayer_api, email) req = requests.get(url) resp = json.loads(req.text) return resp else: return -2 else: return -1
def basic_checks(email): if re.match('[^@]+@[^@]+\.[^@]+', email): mailboxlayer_api = vault.get_key('mailboxlayer_api') if vault.get_key('mailboxlayer_api') != None: url = "http://apilayer.net/api/check?access_key=%s&email=%s&smtp=1&format=1" % ( mailboxlayer_api, email) req = requests.get(url) resp = json.loads(req.text) return resp else: return -2 else: return -1
def main(username): twitter_consumer_key = vault.get_key('twitter_consumer_key') twitter_consumer_secret = vault.get_key('twitter_consumer_secret') twitter_access_token = vault.get_key('twitter_access_token') twitter_access_token_secret = vault.get_key('twitter_access_token_secret') if twitter_consumer_key != None and twitter_consumer_secret != None and twitter_access_token != None and twitter_access_token_secret != None: r = requests.get("https://twitter.com/%s" % username) if r.status_code == 200: activitydetails, userdetails = twitterdetails(username) return [activitydetails, userdetails] else: return None else: return [False, "INVALID_API"]
def main(username): twitter_consumer_key = vault.get_key('twitter_consumer_key') twitter_consumer_secret = vault.get_key('twitter_consumer_secret') twitter_access_token = vault.get_key('twitter_access_token') twitter_access_token_secret = vault.get_key('twitter_access_token_secret') if twitter_consumer_key != None and twitter_consumer_secret != None and twitter_access_token != None and twitter_access_token_secret != None: r = requests.get("https://twitter.com/%s" % username) if r.status_code == 200: activitydetails, userdetails = twitterdetails(username) return [activitydetails, userdetails] else: return None else: return [False, "INVALID_API"]
def main(email): ''' main functonality :param email: email to search for Yahoo account :return: dictionary with account information and error messages ''' accountstats = {} account_information = [] account_not_exists_info = [] account_error = [] url = "https://login.yahoo.com" testuser = email options = webdriver.FirefoxOptions() webdriver_headless = vault.get_key('webdriver_headless') if webdriver_headless != None and webdriver_headless.lower() == "true": options.set_headless(True) driver = webdriver.Firefox(options=options) driver.get(url) # fill login form and press the "further"-button try: #element = WebDriverWait(driver, 10).until(lambda driver: driver.execute_script('return document.readyState') == 'complete') with wait_for_page_load(driver): driver.find_element_by_id("login-username").send_keys(testuser) driver.find_element_by_id("login-signin").click() except Exception, e: account_error.append("error: %s" % repr(e))
def main(username): userstats = {} user_information = [] user_not_exists_info = [] user_error = [] facebook_access_token = vault.get_key('facebook_access_token') if facebook_access_token != None and len(facebook_access_token) > 0: try: graph_url = '%s/%s?access_token=%s' % (fb_api_url, username, facebook_access_token) req = requests.get(graph_url) data = json.loads(req.text) if 'error' in data and len(data['error']) > 0: errordict = data['error'] if 'message' in errordict and len(errordict['message']) > 0: errormessage = errordict['message'] # user exists ;-) if errormessage.find( 'query users by their username') != -1: user_information.append( "user alias '%s' exists on Facebook" % username) else: user_not_exists_info.append( "'%s' not found on Facebook" % username) else: user_error.append("no tag 'message'") else: user_error.append("no tag 'error'") except Exception, e: user_error.append("Error: %s" % repr(e))
def github_search(query): github_access_token = vault.get_key('github_access_token') endpoint_git = "https://api.github.com/search/code?q=\"%s\"&access_token=%s" % ( query, github_access_token) req = requests.get(endpoint_git) data = json.loads(req.content) return data.get('total_count'), data.get('items')
def main(username): github_access_token = vault.get_key('github_access_token') if github_access_token != None: # Use the username variable to do some stuff and return the data token = TravisPy.github_auth(github_access_token) q = urllib2.urlopen("https://api.travis-ci.org/repos/%s" % username) jsondata = json.loads(q.read()) details = [] if jsondata: for data in jsondata: builds = token.builds(slug=data["slug"]) for bd in builds: bid = token.build(bd.id) details.append( (bid.commit.author_name, bid.commit.author_email)) details.append((bid.commit.committer_name, bid.commit.committer_email)) details = list(set(details)) return details else: return [ colored( style.BOLD + '[!] Error: No github token for Travis CI found. Skipping' + style.END, 'red') ]
def main(domain): if vault.get_key('spyonweb_access_token') != None: connections = extract_tracking_codes(domain) if 'err' in connections: return [connections] else: if len(connections.keys()): common_domains = {} tracking_codes = {} tracking_codes['Tracking Codes'] = connections.keys() dirty_domains = spyonweb_analytics_codes(connections) for k, v in dirty_domains.items(): common_domains[k] = (sorted(set(v))) return [common_domains, tracking_codes] else: return [ colored( style.BOLD + '\n[!] No tracking codes found!\n' + style.END, 'red') ] else: return [ colored( style.BOLD + '[!] Error: No SpyOnWeb API token found. Skipping' + style.END, 'red') ]
def main(username): google_api = vault.get_key('google_api') if google_api != None: API_SERVICE_NAME = "youtube" API_VERSION = "v3" max_results = 50 video_ids = [] service = build(API_SERVICE_NAME, API_VERSION, developerKey=google_api) channel_id = find_channel_by_username(service, part='snippet', maxResults=max_results, q=username) if channel_id is not None: channel_details = get_channel_details(username, service, part='snippet,contentDetails,statistics', id=channel_id['Channel ID']) channel_analysis = analyze_activity(service, part='snippet,contentDetails', channelId=channel_id['Channel ID'], maxResults=max_results) return [ channel_id, channel_details, channel_analysis ] else: return [ colored(style.BOLD +'[!] Error: Channel not found for ' + username + '\n' + style.END, 'red') ] else: return [ colored(style.BOLD + '[!] Error: No Google API key found. Skipping' + style.END, 'red') ]
def main(username): google_api = vault.get_key('google_api') if google_api != None: API_SERVICE_NAME = "youtube" API_VERSION = "v3" max_results = 50 video_ids = [] service = build(API_SERVICE_NAME, API_VERSION, developerKey=google_api) channel_id = find_channel_by_username(service, part='snippet', maxResults=max_results, q=username) if channel_id is not None: channel_details = get_channel_details(username, service, part='snippet,contentDetails,statistics', id=channel_id['Channel ID']) channel_analysis = analyze_activity(service, part='snippet,contentDetails', channelId=channel_id['Channel ID'], maxResults=max_results) return [ channel_id, channel_details, channel_analysis ] else: return [ colored(style.BOLD +'[!] Error: Channel not found for ' + username + '\n' + style.END, 'red') ] else: return [ colored(style.BOLD + '[!] Error: No Google API key found. Skipping' + style.END, 'red') ]
def main(ip): shodan_api = vault.get_key('shodan_api') if shodan_api != None: endpoint = "https://api.shodan.io/shodan/host/" + str(ip) + "?key=" + shodan_api req = requests.get(endpoint) return json.loads(req.content) else: return [False, "INVALID_API"]
def censys_search(domain): censys_list = [] pages = float('inf') page = 1 censysio_id = vault.get_key('censysio_id') censysio_secret = vault.get_key('censysio_secret') while page <= pages: print "Parsed and collected results from page %s" % (str(page)) #time.sleep(0.5) params = {'query': domain, 'page': page} res = requests.post("https://www.censys.io/api/v1/search/ipv4", json=params, auth=(censysio_id, censysio_secret)) payload = res.json() if 'error' not in payload.keys(): if 'results' in payload.keys(): for r in payload['results']: temp_dict = {} ip = r["ip"] proto = r["protocols"] proto = [p.split("/")[0] for p in proto] proto.sort(key=float) protoList = ','.join(map(str, proto)) temp_dict["ip"] = ip temp_dict["protocols"] = protoList if '80' in protoList: new_dict = view(ip, temp_dict) censys_list.append(new_dict) else: censys_list.append(temp_dict) pages = payload['metadata']['pages'] page += 1 else: censys_list = None break if pages == float("inf"): break return censys_list
def main(email): fullcontact_api = vault.get_key('fullcontact_api') if fullcontact_api != None: req = requests.get("https://api.fullcontact.com/v2/person.json?email=%s" % email, headers={"X-FullContact-APIKey": fullcontact_api}) data = json.loads(req.content) return data else: return [False, "INVALID_API"]
def main(ip): shodan_api = vault.get_key('shodan_api') if shodan_api != None: endpoint = "https://api.shodan.io/shodan/host/" + str( ip) + "?key=" + shodan_api req = requests.get(endpoint) return json.loads(req.content) else: return [False, "INVALID_API"]
def main(username): if vault.get_key('github_access_token') != None: repo_list = find_repos(username) master_list = {} if not repo_list == "API_LIMIT": for i in repo_list: master_list[i] = find_commits(i) return master_list else: return [False, "INVALID_API"]
def view(server, temp_dict): censysio_id = vault.get_key('censysio_id') censysio_secret = vault.get_key('censysio_secret') res = requests.get("https://www.censys.io/api/v1/view/ipv4/%s" % (server), auth=(censysio_id, censysio_secret)) payload = res.json() try: if 'title' in payload['80']['http']['get'].keys(): # print "[+] Title: %s" % payload['80']['http']['get']['title'] title = payload['80']['http']['get']['title'] temp_dict['title'] = title if 'server' in payload['80']['http']['get']['headers'].keys(): header = "[+] Server: %s" % payload['80']['http']['get']['headers']['server'] temp_dict["server_header"] = payload['80']['http']['get']['headers']['server'] return temp_dict except Exception as error: print error
def main(username): if vault.get_key('github_access_token') != None: repo_list = find_repos(username) master_list = {} if not repo_list == "API_LIMIT": for i in repo_list: master_list[i] = find_commits(i) return master_list else: return [False, "INVALID_API"]
def censys_search(domain): censys_list = [] pages = float('inf') page = 1 censysio_id = vault.get_key('censysio_id') censysio_secret = vault.get_key('censysio_secret') while page <= pages: print "Parsed and collected results from page %s" % (str(page)) #time.sleep(0.5) params = {'query': domain, 'page': page} res = requests.post("https://www.censys.io/api/v1/search/ipv4", json=params, auth=(censysio_id, censysio_secret)) payload = res.json() if 'error' not in payload.keys(): if 'results' in payload.keys(): for r in payload['results']: temp_dict = {} ip = r["ip"] proto = r["protocols"] proto = [p.split("/")[0] for p in proto] proto.sort(key=float) protoList = ','.join(map(str, proto)) temp_dict["ip"] = ip temp_dict["protocols"] = protoList if '80' in protoList: new_dict = view(ip, temp_dict) censys_list.append(new_dict) else: censys_list.append(temp_dict) pages = payload['metadata']['pages'] page += 1 else: censys_list = None break return censys_list
def main(username): user_stats = {} reddit_id = vault.get_key('reddit_id') reddit_secret = vault.get_key('reddit_secret') user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11' reddit = praw.Reddit(client_id=reddit_id, client_secret=reddit_secret, user_agent=user_agent) redditor = reddit.redditor(username) try: user_stats['Redditor Stats'] = redditor_stats(redditor) user_stats['Top 10 Submitted to Subreddits'] = submission_stats(redditor) user_stats['Top 10 Commented in Subreddits'] = comment_stats(redditor) if EXTRA_VERBOSE: user_stats['Top Submissions'] = submissions_top(redditor) user_stats['Top Comments'] = comments_top(redditor) user_stats['Contriversial Posts'] = controversial_stats(redditor) except NotFound as e: user_stats['Error'] = str(e) pass return user_stats
def spyonweb_request(data,request_type="domain"): params = {} params['access_token'] = vault.get_key('spyonweb_access_token') response = requests.get('https://api.spyonweb.com/v1/' + request_type + '/' + data, params=params) if response.status_code == 200: result = response.json() if result['status'] != "not_found": return result return None
def spyonweb_request(data,request_type="domain"): params = {} params['access_token'] = vault.get_key('spyonweb_access_token') response = requests.get('https://api.spyonweb.com/v1/' + request_type + '/' + data, params=params) if response.status_code == 200: result = response.json() if result['status'] != "not_found": return result return None
def view(server, temp_dict): censysio_id = vault.get_key('censysio_id') censysio_secret = vault.get_key('censysio_secret') res = requests.get("https://www.censys.io/api/v1/view/ipv4/%s" % (server), auth=(censysio_id, censysio_secret)) payload = res.json() try: if 'title' in payload['80']['http']['get'].keys(): # print "[+] Title: %s" % payload['80']['http']['get']['title'] title = payload['80']['http']['get']['title'] temp_dict['title'] = title if 'server' in payload['80']['http']['get']['headers'].keys(): header = "[+] Server: %s" % payload['80']['http']['get'][ 'headers']['server'] temp_dict["server_header"] = payload['80']['http']['get'][ 'headers']['server'] return temp_dict except Exception as error: print error
def main(email): clearbit_apikey = vault.get_key('clearbit_apikey') if clearbit_apikey != None: headers = {"Authorization": "Bearer %s" % clearbit_apikey} req = requests.get("https://person.clearbit.com/v1/people/email/%s" % (email), headers=headers) person_details = json.loads(req.content) if "error" in req.content and "queued" in req.content: print "This might take some more time, Please run this script again, after 5 minutes." else: return person_details else: return [False, "INVALID_API"]
def main(email): clearbit_apikey = vault.get_key('clearbit_apikey') if clearbit_apikey != None: headers = {"Authorization": "Bearer %s" % clearbit_apikey} req = requests.get("https://person.clearbit.com/v1/people/email/%s" % (email), headers=headers) person_details = json.loads(req.content) if "error" in req.content and "queued" in req.content: print "This might take some more time, Please run this script again, after 5 minutes." else: return person_details else: return [False, "INVALID_API"]
def main(email): fullcontact_api = vault.get_key('fullcontact_api') if fullcontact_api is not None: obj = json.dumps({"email": email}, ) req = requests.post( "https://api.fullcontact.com/v3/person.enrich", headers={"Authorization": "Bearer " + fullcontact_api}, data=obj) data = json.loads(req.content) return data else: return [False, "INVALID_API"]
def google_search(domain): google_cse_key = vault.get_key('google_cse_key') google_cse_cx = vault.get_key('google_cse_cx') url = "https://www.googleapis.com/customsearch/v1?key=%s&cx=%s&q=\"%s\"&start=1" % ( google_cse_key, google_cse_cx, domain) all_results = [] r = requests.get(url, headers={'referer': 'www.datasploit.info/hello'}) data = json.loads(r.content) if 'error' in data: return False, data if int(data['searchInformation']['totalResults']) > 0: all_results += data['items'] while "nextPage" in data['queries']: next_index = data['queries']['nextPage'][0]['startIndex'] url = "https://www.googleapis.com/customsearch/v1?key=%s&cx=%s&q=\"%s\"&start=%s" % ( google_cse_key, google_cse_cx, domain, next_index) data = json.loads(requests.get(url).content) if 'error' in data: return True, all_results else: all_results += data['items'] return True, all_results
def main(username): user_stats = {} reddit_id = vault.get_key('reddit_id') reddit_secret = vault.get_key('reddit_secret') user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11' reddit = praw.Reddit(client_id=reddit_id, client_secret=reddit_secret, user_agent=user_agent) redditor = reddit.redditor(username) try: user_stats['Redditor Stats'] = redditor_stats(redditor) user_stats['Top 10 Submitted to Subreddits'] = submission_stats( redditor) user_stats['Top 10 Commented in Subreddits'] = comment_stats(redditor) if EXTRA_VERBOSE: user_stats['Top Submissions'] = submissions_top(redditor) user_stats['Top Comments'] = comments_top(redditor) user_stats['Contriversial Posts'] = controversial_stats(redditor) except NotFound as e: user_stats['Error'] = str(e) pass return user_stats
def google_search(email): google_cse_key = vault.get_key('google_cse_key') google_cse_cx = vault.get_key('google_cse_cx') url = "https://www.googleapis.com/customsearch/v1?key=%s&cx=%s&q=\"%s\"&start=1" % ( google_cse_key, google_cse_cx, email) all_results = [] r = requests.get(url, headers={'referer': 'www.datasploit.info/hello'}) data = json.loads(r.content) if 'error' in data: return False, data if int(data['searchInformation']['totalResults']) > 0: all_results += data['items'] while "nextPage" in data['queries']: next_index = data['queries']['nextPage'][0]['startIndex'] url = "https://www.googleapis.com/customsearch/v1?key=%s&cx=%s&q=\"%s\"&start=%s" % ( google_cse_key, google_cse_cx, email, next_index) data = json.loads(requests.get(url).content) if 'error' in data: return True, all_results else: all_results += data['items'] return True, all_results
def find_repos(username): access_token = vault.get_key('github_access_token') list_repos = [] url = "https://api.github.com/users/%s/repos?access_token=%s" % (username, access_token) req = requests.get(url) if 'API rate limit exceeded' not in req.text: data = json.loads(req.content) if "message" in data and data['message'] == "Not Found": return [] for repos in data: if not repos['fork']: list_repos.append(repos['full_name']) return list_repos else: return "API_LIMIT"
def find_repos(username): access_token = vault.get_key('github_access_token') list_repos = [] url = "https://api.github.com/users/%s/repos?access_token=%s" % (username, access_token) req = requests.get(url) if 'API rate limit exceeded' not in req.text: data = json.loads(req.content) if "message" in data and data['message'] == "Not Found": return [] for repos in data: if not repos['fork']: list_repos.append(repos['full_name']) return list_repos else: return "API_LIMIT"
def find_commits(repo_name): list_commits = [] access_token = vault.get_key('github_access_token') for x in xrange(1, 10): url = "https://api.github.com/repos/%s/commits?page=%s&access_token=%s" % (repo_name, x, access_token) req = requests.get(url) data = json.loads(req.content) for commits in data: try: list_commits.append(commits['sha']) except: pass if len(data) < 30: return list_commits time.sleep(1) return list_commits
def emailhunter(domain): collected_emails = [] time.sleep(0.3) emailhunter_api = vault.get_key('emailhunter') url = "https://api.emailhunter.co/v1/search?api_key=%s&domain=%s" % (emailhunter_api, domain) res = requests.get(url) try: parsed = json.loads(res.text) if 'emails' in parsed.keys(): for email in parsed['emails']: collected_emails.append(email['value']) elif json.loads(res.text).get('status') == "error": print colored(style.BOLD + '[-] %s\n' % json.loads(res.text).get('message') + style.END, 'red') except: print 'CAPTCHA has been implemented, skipping this for now.' return collected_emails
def emailhunter(domain): collected_emails = [] time.sleep(0.3) emailhunter_api = vault.get_key('emailhunter') url = "https://api.emailhunter.co/v1/search?api_key=%s&domain=%s" % (emailhunter_api, domain) res = requests.get(url) try: parsed = json.loads(res.text) if 'emails' in parsed.keys(): for email in parsed['emails']: collected_emails.append(email['value']) elif json.loads(res.text).get('status') == "error": print colored(style.BOLD + '[-] %s\n' % json.loads(res.text).get('message') + style.END, 'red') except: print 'CAPTCHA has been implemented, skipping this for now.' return collected_emails
def find_commits(repo_name): list_commits = [] access_token = vault.get_key('github_access_token') for x in xrange(1, 10): url = "https://api.github.com/repos/%s/commits?page=%s&access_token=%s" % (repo_name, x, access_token) req = requests.get(url) data = json.loads(req.content) for commits in data: try: list_commits.append(commits['sha']) except: pass if len(data) < 30: return list_commits time.sleep(1) return list_commits
def main(accountname): ''' main functonality :param email: email to search for Yahoo account :return: dictionary with account information and error messages ''' accountstats = {} account_information = [] account_not_exists_info = [] account_error = [] url = "https://meinkonto.telekom-dienste.de/wiederherstellung/passwort/index.xhtml" options = webdriver.FirefoxOptions() webdriver_headless = vault.get_key('webdriver_headless') if webdriver_headless != None and webdriver_headless.lower() == "true": options.set_headless(True) driver = webdriver.Firefox(options=options) driver.get(url) try: wait = WebDriverWait(driver, 10) userfield = wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@class='form-input'][@type='text']"))) userfield.send_keys(accountname) furtherbutton = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@type='submit']"))) furtherbutton.click() # worst case but no other possibility because it comes only xml back, # in case of success the client starts a new get request, in case the # account name doesn't exist, the client only shows the error message # beyond the input field time.sleep(3) try: errormessagediv = driver.find_element_by_xpath("//div[contains(@class,'decoration-negative')]") # here we go only without exception ;-) account_not_exists_info.append("No account %s on T-Online.de" % accountname) except NoSuchElementException, e: account_information.append("T-Online account %s exists" % accountname) except NoSuchElementException, e: account_error.append("NoSuchElementException: %s" % e)
def main(domain): if vault.get_key('spyonweb_access_token') != None: connections = extract_tracking_codes(domain) if 'err' in connections: return [ connections ] else: if len(connections.keys()): common_domains = {} tracking_codes = {} tracking_codes['Tracking Codes'] = connections.keys() dirty_domains = spyonweb_analytics_codes(connections) for k, v in dirty_domains.items(): common_domains[k] = (sorted(set(v))) return [ common_domains, tracking_codes ] else: return [ colored(style.BOLD + '\n[!] No tracking codes found!\n' + style.END, 'red') ] else: return [ colored(style.BOLD + '[!] Error: No SpyOnWeb API token found. Skipping' + style.END, 'red') ]
def main(username): github_access_token = vault.get_key('github_access_token') if github_access_token != None: # Use the username variable to do some stuff and return the data token = TravisPy.github_auth(github_access_token) q=urllib2.urlopen("https://api.travis-ci.org/repos/%s" % username) jsondata=json.loads(q.read()) details=[] if jsondata: for data in jsondata: builds=token.builds(slug=data["slug"]) for bd in builds: bid=token.build(bd.id) details.append((bid.commit.author_name,bid.commit.author_email)) details.append((bid.commit.committer_name,bid.commit.committer_email)) details=list(set(details)) return details else: return [ colored(style.BOLD + '[!] Error: No github token for Travis CI found. Skipping' + style.END, 'red') ]
import base import vault import sys import requests import json from termcolor import colored from collections import Counter # Control whether the module is enabled or not ENABLED = True WRITE_TEXT_FILE = True MODULE_NAME = "Git_Emails" GITHUB_BASE = "https://api.github.com" access_token = vault.get_key('github_access_token') def __boldtext(text, color = 'blue'): BOLD = '\033[1m' END = '\033[0m' return colored(BOLD + text + END, color) def banner(): print __boldtext("[+] Hunting for Emails from Git Repositories") def __get_username_repos(username): r = requests.get("%s/users/%s/repos?access_token=%s" % (GITHUB_BASE, username, access_token)) repos = []
import base import vault import sys import requests import json from termcolor import colored from collections import Counter # Control whether the module is enabled or not ENABLED = True WRITE_TEXT_FILE = True MODULE_NAME = "Git_Emails" GITHUB_BASE = "https://api.github.com" access_token = vault.get_key('github_access_token') def __boldtext(text, color='blue'): BOLD = '\033[1m' END = '\033[0m' return colored(BOLD + text + END, color) def banner(): print(__boldtext("[+] Hunting for Emails from Git Repositories")) def __get_username_repos(username): r = requests.get("%s/users/%s/repos?access_token=%s" % (GITHUB_BASE, username, access_token))
def main(domain): if vault.get_key('shodan_api') != None: return json.loads(shodandomainsearch(domain)) else: return [False, "INVALID_API"]
def main(domain): if vault.get_key('emailhunter') != None: return emailhunter(domain) else: return [False, "INVALID_API"]
def main(domain): if vault.get_key('github_access_token') != None: count, results = github_search(domain) return [count, results] else: return [False, "INVALID_API"]
def main(domain): if vault.get_key('emailhunter') != None: return emailhunter(domain) else: return [False, "INVALID_API"]
def main(email): if vault.get_key('google_cse_key') != None and vault.get_key('google_cse_cx') != None: status, data = google_search(email) return [status, data] else: return [False, "INVALID_API"]
def twitterdetails(username): twitter_consumer_key = vault.get_key('twitter_consumer_key') twitter_consumer_secret = vault.get_key('twitter_consumer_secret') twitter_access_token = vault.get_key('twitter_access_token') twitter_access_token_secret = vault.get_key('twitter_access_token_secret') auth = tweepy.OAuthHandler(twitter_consumer_key, twitter_consumer_secret) auth.set_access_token(twitter_access_token, twitter_access_token_secret) # preparing auth api = tweepy.API(auth) userinfo = api.get_user(screen_name=username) userdetails = {} userdetails['Followers'] = userinfo.followers_count userdetails['Following'] = userinfo.friends_count userdetails['Geolocation Enabled'] = userinfo.geo_enabled try: userdetails['Homepage'] = userinfo.entities['url']['urls'][0]['display_url'] except KeyError: pass userdetails['Language'] = userinfo.lang userdetails['Number of Tweets'] = userinfo.statuses_count userdetails['Profile Description'] = userinfo.description.encode('utf8') userdetails['Profile Set Location'] = userinfo.location userdetails['Time Zone'] = userinfo.time_zone userdetails['User ID'] = userinfo.id userdetails['UTC Offset'] = userinfo.utc_offset userdetails['Verified Account'] = userinfo.verified f = open("temptweets.txt", "w+") # writing tweets to temp file- last 1000 for tweet in tweepy.Cursor(api.user_timeline, id=username).items(1000): f.write(tweet.text.encode("utf-8")) f.write("\n") # extracting hashtags f = open('temptweets.txt', 'r') q = f.read() strings = re.findall(r'(?:\#+[\w_]+[\w\'_\-]*[\w_]+)', q) tusers = re.findall(r'(?:@[\w_]+)', q) f.close() os.remove("temptweets.txt") hashlist = [] userlist = [] for item in strings: item = item.strip('#') item = item.lower() hashlist.append(item) for itm in tusers: itm = itm.strip('@') itm = itm.lower() userlist.append(itm) activitydetails = { 'Hashtag Interactions': hashlist[:10], 'User Interactions': userlist[:10] } return activitydetails, userdetails
def build_headers(user_agent='', referer=''): headers = {} headers['Content-Type'] = 'application/json' headers['API-key'] = vault.get_key('urlscanio_api') return headers
def github_search(query): github_access_token = vault.get_key('github_access_token') endpoint_git = "https://api.github.com/search/code?q=\"%s\"&access_token=%s" % (query, github_access_token) req = requests.get(endpoint_git) data = json.loads(req.content) return data.get('total_count'), data.get('items')
def shodandomainsearch(domain): time.sleep(0.3) endpoint = "https://api.shodan.io/shodan/host/search?key=%s&query=hostname:%s&facets={facets}" % ( vault.get_key('shodan_api'), domain) req = requests.get(endpoint) return req.content