Пример #1
0
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"]
Пример #2
0
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
Пример #3
0
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"]
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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"]
Пример #7
0
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"]
Пример #8
0
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
Пример #9
0
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
Пример #10
0
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"]
Пример #11
0
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
Пример #12
0
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"]
Пример #14
0
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"]
Пример #15
0
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))
Пример #16
0
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))
Пример #17
0
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')
Пример #18
0
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')
        ]
Пример #19
0
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') ]
Пример #21
0
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') ]
Пример #22
0
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"]
Пример #23
0
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
Пример #24
0
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"]
Пример #25
0
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"]
Пример #26
0
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"]
Пример #27
0
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
Пример #28
0
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"]
Пример #29
0
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
Пример #30
0
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
Пример #31
0
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
Пример #32
0
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
Пример #33
0
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
Пример #34
0
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"]
Пример #35
0
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"]
Пример #36
0
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"]
Пример #37
0
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
Пример #39
0
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
Пример #40
0
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"
Пример #41
0
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"
Пример #42
0
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
Пример #44
0
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
Пример #45
0
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
Пример #46
0
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)
Пример #47
0
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') ]
Пример #49
0
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 = []
Пример #50
0
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))
Пример #51
0
def main(domain):
    if vault.get_key('shodan_api') != None:
        return json.loads(shodandomainsearch(domain))
    else:
        return [False, "INVALID_API"]
Пример #52
0
def main(domain):
    if vault.get_key('emailhunter') != None:
        return emailhunter(domain)
    else:
        return [False, "INVALID_API"]
Пример #53
0
def main(domain):
    if vault.get_key('github_access_token') != None:
        count, results = github_search(domain)
        return [count, results]
    else:
        return [False, "INVALID_API"]
Пример #54
0
def main(domain):
    if vault.get_key('emailhunter') != None:
        return emailhunter(domain)
    else:
        return [False, "INVALID_API"]
Пример #55
0
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"]
Пример #56
0
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
Пример #57
0
def build_headers(user_agent='', referer=''):
    headers = {}
    headers['Content-Type'] = 'application/json'
    headers['API-key'] = vault.get_key('urlscanio_api')
    return headers
Пример #58
0
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')
Пример #59
0
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