Ejemplo n.º 1
0
def osintIndividualScan():
    global numberObj
    global number
    global internationalNumber
    global numberCountryCode
    global customFormatting

    info('---- Phone books footprints ----')

    if numberCountryCode == '+1':
        info("Generating URL on True People... ")
        plus('https://www.truepeoplesearch.com/results?phoneno={}'.format(
            internationalNumber.replace(' ', '')))

    dorks = json.load(open('osint/individuals.json'))

    for dork in dorks:
        if dork['dialCode'] is None or dork['dialCode'] == numberCountryCode:
            if customFormatting:
                dorkRequest = replaceVariables(
                    dork['request'],
                    numberObj) + ' OR "{}"'.format(customFormatting)
            else:
                dorkRequest = replaceVariables(dork['request'], numberObj)

            info("Searching for footprints on {}...".format(dork['site']))

            for result in search(dorkRequest, stop=dork['stop']):
                plus("URL: " + result)
        else:
            return -1
Ejemplo n.º 2
0
def osintDisposableNumScan():
    global numberObj
    global number

    info('---- Temporary number providers footprints ----')

    try:
        info("Searching for phone number on tempophone.com...")
        response = send("GET", "https://tempophone.com/api/v1/phones")
        data = json.loads(response.content.decode('utf-8'))
        for voip_number in data['objects']:
            if voip_number['phone'] == formatNumber(number):
                plus("Found a temporary number provider: tempophone.com")
                askForExit()
    except Exception as e:
        error("Unable to reach tempophone.com API. Skipping.")

    dorks = json.load(open('osint/disposable_num_providers.json'))

    for dork in dorks:
        dorkRequest = replaceVariables(dork['request'], numberObj)

        info("Searching for footprints on {}...".format(dork['site']))

        for result in search(dorkRequest, stop=dork['stop']):
            plus("Result found: {}".format(dork['site']))
            plus("URL: " + result)
            askForExit()
Ejemplo n.º 3
0
def osintReputationScan():
    global numberObj
    global number
    global internationalNumber
    global customFormatting

    info('---- Reputation footprints ----')

    dorks = json.load(open('osint/reputation.json'))

    for dork in dorks:
        if customFormatting:
            dorkRequest = replaceVariables(
                dork['request'], numberObj) + ' OR "{}"'.format(customFormatting)
        else:
            dorkRequest = replaceVariables(dork['request'], numberObj)

        info("Searching for {}...".format(dork['title']))
        for result in search(dorkRequest, stop=dork['stop']):
            plus("URL: " + result)
Ejemplo n.º 4
0
def osintSocialMediaScan():
    global numberObj
    global number
    global internationalNumber
    global customFormatting

    info('---- Social media footprints ----')

    dorks = json.load(open('osint/social_medias.json'))

    for dork in dorks:
        if customFormatting:
            dorkRequest = replaceVariables(
                dork['request'], numberObj) + ' OR "{}"'.format(customFormatting)
        else:
            dorkRequest = replaceVariables(dork['request'], numberObj)

        test("Searching for footprints on {}...".format(dork['site']))

        for result in search(dorkRequest, stop=dork['stop']):
            info("URL: " + result)
Ejemplo n.º 5
0
def osintSocialMediaScan():
    global numberObj
    global number
    global internationalNumber
    global customFormatting

    info("---- Social media footprints ----")

    dorks = json.load(open("osint/social_medias.json"))

    for dork in dorks:
        if customFormatting:
            dorkRequest = replaceVariables(
                dork["request"], numberObj
            ) + ' OR "{}"'.format(customFormatting)
        else:
            dorkRequest = replaceVariables(dork["request"], numberObj)

        info("Searching for footprints on {}...".format(dork["site"]))

        for result in search(dorkRequest, stop=dork["stop"]):
            plus("URL: " + result)
Ejemplo n.º 6
0
def osintScan(numberObject, rerun=False):
    if not args.scanner == 'footprints' and not args.scanner == 'all':
        return -1

    global numberObj
    global number
    global localNumber
    global internationalNumber
    global numberCountryCode
    global customFormatting

    numberObj = numberObject
    number = numberObj['default']
    localNumber = numberObj['local']
    internationalNumber = numberObj['international']
    numberCountryCode = numberObj['countryCode']

    test('Running OSINT footprint reconnaissance...')

    if not rerun:
        # Whitepages
        info("Generating scan URL on 411.com...")
        plus("Scan URL: https://www.411.com/phone/{}".format(
            internationalNumber.replace('+', '').replace(' ', '-')))

        askingCustomPayload = ask(
            'Would you like to use an additional format for this number ? (y/N) '
        )

    if rerun or askingCustomPayload == 'y' or askingCustomPayload == 'yes':
        info('We recommand: {} or {}'.format(
            internationalNumber,
            internationalNumber.replace(numberCountryCode + ' ', '')))
        customFormatting = ask('Custom format: ')

    info('---- Web pages footprints ----')

    info("Searching for footprints on web pages... (limit=10)")
    if customFormatting:
        req = '{} OR "{}" OR "{}" OR "{}"'.format(number, number,
                                                  internationalNumber,
                                                  customFormatting)
    else:
        req = '{} OR "{}" OR "{}"'.format(number, number, internationalNumber)

    for result in search(req, stop=10):
        plus("Result found: " + result)

    # Documents
    info("Searching for documents... (limit=10)")
    if customFormatting:
        req = '(ext:doc OR ext:docx OR ext:odt OR ext:pdf OR ext:rtf OR ext:sxw OR ext:psw OR ext:ppt OR ext:pptx OR ext:pps OR ext:csv OR ext:txt OR ext:xls) AND ("{}")'.format(
            customFormatting)
    else:
        req = '(ext:doc OR ext:docx OR ext:odt OR ext:pdf OR ext:rtf OR ext:sxw OR ext:psw OR ext:ppt OR ext:pptx OR ext:pps OR ext:csv OR ext:txt OR ext:xls) AND ("{}" OR "{}")'.format(
            internationalNumber, localNumber)
    for result in search(req, stop=10):
        plus("Result found: " + result)

    osintReputationScan()

    info("Generating URL on scamcallfighters.com...")
    plus('http://www.scamcallfighters.com/search-phone-{}.html'.format(number))

    tmpNumAsk = ask(
        "Would you like to search for temporary number providers footprints ? (Y/n) "
    )

    if tmpNumAsk.lower() != 'n' and tmpNumAsk.lower() != 'no':
        osintDisposableNumScan()

    osintSocialMediaScan()

    osintIndividualScan()

    retry_input = ask(
        "Would you like to rerun OSINT scan ? (e.g to use a different format) (y/N) "
    )

    if retry_input.lower() == 'y' or retry_input.lower() == 'yes':
        osintScan(numberObj, True)
    else:
        return -1
Ejemplo n.º 7
0
def scan(number):
    if not args.recon:
        return -1

    test('Running custom format reconnaissance...')

    cc = number['countryCode'].replace('+', '')
    nb = number['local']

    if number['countryIsoCode'] == 'US' or number['countryIsoCode'] == 'CA':
        segments = phone_us_format(cc + nb, ' ').split(' ')

        seg1 = segments[-3]
        seg2 = segments[-2]
        seg3 = segments[-1]

        formats = [
            '%s%s%s' % (seg1, seg2, seg3),
            '%s %s%s%s' % (cc, seg1, seg2, seg3),
            '%s %s %s%s' % (cc, seg1, seg2, seg3),
            '%s %s%s' % (seg1, seg2, seg3),
            '%s-%s%s' % (seg1, seg2, seg3),
            '%s-%s-%s' % (seg1, seg2, seg3),
            '+%s %s-%s-%s' % (cc, seg1, seg2, seg3),
            '(+%s)%s-%s-%s' % (cc, seg1, seg2, seg3),
            '+%s/%s-%s-%s' % (cc, seg1, seg2, seg3),
            '(%s) %s%s' % (seg1, seg2, seg3),
            '(%s) %s-%s' % (seg1, seg2, seg3),
            '(%s) %s.%s' % (seg1, seg2, seg3),
            '(%s)%s%s' % (seg1, seg2, seg3),
            '(%s)%s-%s' % (seg1, seg2, seg3),
            '(%s)%s.%s' % (seg1, seg2, seg3)
        ]
    else:
        formated_number = number['international'].replace(
            number['countryCode'] + ' ', '').split(' ')

        segments = []

        for seg in formated_number:
            segments.append(seg)

        formats = [
            '+%s0%s' % (cc, nb),
            '(00%s)0%s' % (cc, number['local']),
            '+%s/0%s' % (cc, nb),
            '+%s0%s' % (cc, '-'.join(segments)),
            '(+%s)0%s' % (cc, '-'.join(segments)),
            '(00%s)0%s' % (cc, '-'.join(segments)),
            '(00%s)0%s' % (cc, '-'.join(segments)),
            '+%s/0%s' % (cc, ' '.join(segments)),
            '+%s0%s' % (cc, ' '.join(segments)),
            '(00%s)0%s' % (cc, ' '.join(segments)),
            '(+%s)0%s' % (cc, ''.join(segments)),
            '(+%s)0%s' % (cc, ' '.join(segments)),
            '+%s/0%s' % (cc, '-'.join(segments)),
            '+%s/0%s' % (cc, ' '.join(segments)),
        ]

    for format in formats:
        info('Footprint reconnaissance for %s' % (format))
        for result in search('"%s"' % (format), stop=5):
            plus("URL: " + result)
Ejemplo n.º 8
0
def scan(number):
    if not args.recon:
        return -1

    test("Running custom format reconnaissance...")

    cc = number["countryCode"].replace("+", "")
    nb = number["local"]

    if number["countryIsoCode"] == "US" or number["countryIsoCode"] == "CA":
        segments = phone_us_format(cc + nb, " ").split(" ")

        seg1 = segments[-3]
        seg2 = segments[-2]
        seg3 = segments[-1]

        formats = [
            "%s%s%s" % (seg1, seg2, seg3),
            "%s %s%s%s" % (cc, seg1, seg2, seg3),
            "%s %s %s%s" % (cc, seg1, seg2, seg3),
            "%s %s%s" % (seg1, seg2, seg3),
            "%s-%s%s" % (seg1, seg2, seg3),
            "%s-%s-%s" % (seg1, seg2, seg3),
            "+%s %s-%s-%s" % (cc, seg1, seg2, seg3),
            "(+%s)%s-%s-%s" % (cc, seg1, seg2, seg3),
            "+%s/%s-%s-%s" % (cc, seg1, seg2, seg3),
            "(%s) %s%s" % (seg1, seg2, seg3),
            "(%s) %s-%s" % (seg1, seg2, seg3),
            "(%s) %s.%s" % (seg1, seg2, seg3),
            "(%s)%s%s" % (seg1, seg2, seg3),
            "(%s)%s-%s" % (seg1, seg2, seg3),
            "(%s)%s.%s" % (seg1, seg2, seg3),
        ]
    else:
        formated_number = (number["international"].replace(
            number["countryCode"] + " ", "").split(" "))

        segments = []

        for seg in formated_number:
            segments.append(seg)

        formats = [
            "+%s0%s" % (cc, nb),
            "(00%s)0%s" % (cc, number["local"]),
            "+%s/0%s" % (cc, nb),
            "+%s0%s" % (cc, "-".join(segments)),
            "(+%s)0%s" % (cc, "-".join(segments)),
            "(00%s)0%s" % (cc, "-".join(segments)),
            "(00%s)0%s" % (cc, "-".join(segments)),
            "+%s/0%s" % (cc, " ".join(segments)),
            "+%s0%s" % (cc, " ".join(segments)),
            "(00%s)0%s" % (cc, " ".join(segments)),
            "(+%s)0%s" % (cc, "".join(segments)),
            "(+%s)0%s" % (cc, " ".join(segments)),
            "+%s/0%s" % (cc, "-".join(segments)),
            "+%s/0%s" % (cc, " ".join(segments)),
        ]

    for format in formats:
        info("Footprint reconnaissance for %s" % (format))
        for result in search('"%s"' % (format), stop=5):
            plus("URL: " + result)