Compare commits
13 Commits
Author | SHA1 | Date |
---|---|---|
|
dab7d35e02 | |
|
cb823066b4 | |
|
1c2ec491b5 | |
|
aaaf9304bd | |
|
937b3abe4f | |
|
3a63bd036d | |
|
2e17453143 | |
|
be44f64d58 | |
|
719135c4c3 | |
|
e02b4edaeb | |
|
f020a1ec85 | |
|
dc6c226252 | |
|
303c583201 |
|
@ -0,0 +1,5 @@
|
|||
1. Please DO NOT open pull request on the **master** branch. Use the **develop** branch instead!
|
||||
2. Explain your changes as much as possible
|
||||
3. If possible, use a well understanding title and use labels ! (e.g: "[Bug] Google Captcha", "[Feature] Footprinting on Bing")
|
||||
|
||||
Thank you for contributing ! :tada:
|
|
@ -1,13 +1,13 @@
|
|||
[
|
||||
{
|
||||
"site": "numinfo.net",
|
||||
"request": "site:\"numinfo.net\" intext:\"$n\" | intext:\"$i\"",
|
||||
"request": "site:\"numinfo.net\" intext:\"$i\" | intext:\"$n\" | intext:\"$l\"",
|
||||
"dialCode": null,
|
||||
"stop": 2
|
||||
},
|
||||
{
|
||||
"site": "sync.me",
|
||||
"request": "site:\"sync.me\" intext:\"$n\" | intext:\"$i\"",
|
||||
"request": "site:\"sync.me\" intext:\"$i\" | intext:\"$n\" | intext:\"$l\"",
|
||||
"dialCode": null,
|
||||
"stop": 1
|
||||
},
|
||||
|
@ -19,19 +19,19 @@
|
|||
},
|
||||
{
|
||||
"site": "pastebin.com",
|
||||
"request": "site:\"pastebin.com\" intext:\"$n\" | intext:\"$i\"",
|
||||
"request": "site:\"pastebin.com\" intext:\"$i\" | intext:\"$n\" | intext:\"$l\"",
|
||||
"dialCode": null,
|
||||
"stop": 5
|
||||
},
|
||||
{
|
||||
"site": "whycall.me",
|
||||
"request": "site:\"whycall.me\" intext:\"$n\" | intext:\"$l\"",
|
||||
"request": "site:\"whycall.me\" intext:\"$i\" | intext:\"$n\" | intext:\"$l\"",
|
||||
"dialCode": null,
|
||||
"stop": 1
|
||||
},
|
||||
{
|
||||
"site": "locatefamily.com",
|
||||
"request": "site:locatefamily.com intext:\"$n\" | intext:\"$l\"",
|
||||
"request": "site:locatefamily.com intext:\"$i\" | intext:\"$n\" | intext:\"$l\"",
|
||||
"dialCode": null,
|
||||
"stop": 1
|
||||
}
|
||||
|
|
|
@ -1,12 +1,17 @@
|
|||
[
|
||||
{
|
||||
"title": "reputation report on whosenumber.info",
|
||||
"request": "site:\"whosenumber.info\" intext:\"$n\" intitle:\"who called\"",
|
||||
"request": "site:whosenumber.info intext:\"$n\" intitle:\"who called\"",
|
||||
"stop": 1
|
||||
},
|
||||
{
|
||||
"title": "phone fraud footprints",
|
||||
"request": "intitle:\"Phone Fraud\" intext:\"$n\" | intext:\"$i\"",
|
||||
"request": "intitle:\"Phone Fraud\" intext:\"$i\" | intext:\"$n\" | intext:\"$l\"",
|
||||
"stop": 5
|
||||
},
|
||||
{
|
||||
"title": "reputation report on findwhocallsme.com",
|
||||
"request": "site:findwhocallsme.com intext:\"$n\" | intext:\"$i\"",
|
||||
"stop": 1
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
[
|
||||
{
|
||||
"site": "facebook.com",
|
||||
"request": "site:\"facebook.com\" intext:\"$i\" | intext:\"$n\"",
|
||||
"request": "site:\"facebook.com\" intext:\"$i\" | intext:\"$n\" | intext:\"$l\"",
|
||||
"stop": 5
|
||||
},
|
||||
{
|
||||
"site": "twitter.com",
|
||||
"request": "site:\"twitter.com\" intext:\"$i\" | intext:\"$n\"",
|
||||
"request": "site:\"twitter.com\" intext:\"$i\" | intext:\"$n\" | intext:\"$l\"",
|
||||
"stop": 5
|
||||
},
|
||||
{
|
||||
"site": "linkedin.com",
|
||||
"request": "site:\"linkedin.com\" intext:\"$i\" | intext:\"$n\"",
|
||||
"request": "site:\"linkedin.com\" intext:\"$i\" | intext:\"$n\" | intext:\"$l\"",
|
||||
"stop": 5
|
||||
},
|
||||
{
|
||||
"site": "instagram.com",
|
||||
"request": "site:\"instagram.com\" intext:\"$i\" | intext:\"$n\"",
|
||||
"request": "site:\"instagram.com\" intext:\"$i\" | intext:\"$n\" | intext:\"$l\"",
|
||||
"stop": 5
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
__version__ = 'v1.0.0'
|
||||
__version__ = 'v1.0.2'
|
||||
|
||||
try:
|
||||
import sys
|
||||
|
@ -119,7 +119,7 @@ def search(req, stop):
|
|||
|
||||
chosenUserAgent = random.choice(uagent)
|
||||
|
||||
s = requests.Session()
|
||||
reqSession = requests.Session()
|
||||
headers = {
|
||||
'User-Agent': chosenUserAgent,
|
||||
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
||||
|
@ -134,19 +134,20 @@ def search(req, stop):
|
|||
|
||||
try:
|
||||
REQ = urlencode({'q': req})
|
||||
URL = 'https://www.google.com/search?tbs=li:1&{}&gws_rd=ssl'.format(
|
||||
URL = 'https://www.google.com/search?tbs=li:1&{}&gws_rd=ssl&gl=us '.format(
|
||||
REQ)
|
||||
r = s.get(URL + googleAbuseToken, headers=headers)
|
||||
r = reqSession.get(URL + googleAbuseToken, headers=headers)
|
||||
|
||||
while r.status_code == 503:
|
||||
while r.status_code != 200:
|
||||
print(code_warning + 'You are temporary blacklisted from Google search. Complete the captcha at the following URL and copy/paste the content of GOOGLE_ABUSE_EXEMPTION cookie : {}'.format(URL))
|
||||
print('\n' + code_info +
|
||||
'Need help ? Read https://github.com/sundowndev/PhoneInfoga/wiki')
|
||||
token = input('\nGOOGLE_ABUSE_EXEMPTION=')
|
||||
googleAbuseToken = '&google_abuse=' + token
|
||||
r = s.get(URL + googleAbuseToken, headers=headers)
|
||||
r = reqSession.get(URL + googleAbuseToken, headers=headers)
|
||||
|
||||
soup = BeautifulSoup(r.text, 'html5lib')
|
||||
|
||||
soup = BeautifulSoup(r.content, 'html.parser')
|
||||
results = soup.find("div", id="search").find_all("div", class_="g")
|
||||
|
||||
links = []
|
||||
|
@ -167,12 +168,14 @@ def search(req, stop):
|
|||
if re.match(r"^(?:\/search\?q\=)", url) is not None:
|
||||
url = 'https://google.com' + url
|
||||
|
||||
if links is not None:
|
||||
return links
|
||||
else:
|
||||
return []
|
||||
if url is not None:
|
||||
links.append(url)
|
||||
|
||||
return links
|
||||
except Exception as e:
|
||||
print(code_error + 'Request failed. Please retry or open an issue on https://github.com/sundowndev/PhoneInfoga.')
|
||||
print(e)
|
||||
return []
|
||||
|
||||
|
||||
def formatNumber(InputNumber):
|
||||
|
@ -202,20 +205,23 @@ def localScan(InputNumber):
|
|||
PhoneNumberObject, phonenumbers.PhoneNumberFormat.E164).replace('+', '')
|
||||
numberCountryCode = phonenumbers.format_number(
|
||||
PhoneNumberObject, phonenumbers.PhoneNumberFormat.INTERNATIONAL).split(' ')[0]
|
||||
numberCountry = phonenumbers.region_code_for_country_code(
|
||||
int(numberCountryCode))
|
||||
|
||||
localNumber = phonenumbers.format_number(
|
||||
PhoneNumberObject, phonenumbers.PhoneNumberFormat.E164).replace(numberCountryCode, '')
|
||||
PhoneNumberObject, phonenumbers.PhoneNumberFormat.E164).replace(numberCountryCode, '0')
|
||||
internationalNumber = phonenumbers.format_number(
|
||||
PhoneNumberObject, phonenumbers.PhoneNumberFormat.INTERNATIONAL)
|
||||
|
||||
country = geocoder.country_name_for_number(PhoneNumberObject, "en")
|
||||
location = geocoder.description_for_number(PhoneNumberObject, "en")
|
||||
carrierName = carrier.name_for_number(PhoneNumberObject, 'en')
|
||||
|
||||
print(code_result + 'International format: {}'.format(internationalNumber))
|
||||
print(code_result + 'Local format: 0{}'.format(localNumber))
|
||||
print(code_result + 'Country found: {} ({})'.format(
|
||||
geocoder.country_name_for_number(PhoneNumberObject, "en"), numberCountryCode))
|
||||
print(code_result + 'City/Area: {}'.format(
|
||||
geocoder.description_for_number(PhoneNumberObject, "en")))
|
||||
print(code_result +
|
||||
'Carrier: {}'.format(carrier.name_for_number(PhoneNumberObject, 'en')))
|
||||
print(code_result + 'Country found: {} ({})'.format(country, numberCountryCode))
|
||||
print(code_result + 'City/Area: {}'.format(location))
|
||||
print(code_result + 'Carrier: {}'.format(carrierName))
|
||||
for timezoneResult in timezone.time_zones_for_number(PhoneNumberObject):
|
||||
print(code_result + 'Timezone: {}'.format(timezoneResult))
|
||||
|
||||
|
@ -366,8 +372,7 @@ def osintIndividualScan():
|
|||
(code_info + "Searching for footprints on {}...".format(dork['site'])))
|
||||
|
||||
for result in search(dorkRequest, stop=dork['stop']):
|
||||
if result:
|
||||
print((code_result + "URL: " + result))
|
||||
print((code_result + "URL: " + result))
|
||||
else:
|
||||
return -1
|
||||
|
||||
|
@ -388,8 +393,7 @@ def osintReputationScan():
|
|||
|
||||
print((code_info + "Searching for {}...".format(dork['title'])))
|
||||
for result in search(dorkRequest, stop=dork['stop']):
|
||||
if result:
|
||||
print((code_result + "URL: " + result))
|
||||
print((code_result + "URL: " + result))
|
||||
|
||||
|
||||
def osintSocialMediaScan():
|
||||
|
@ -410,8 +414,7 @@ def osintSocialMediaScan():
|
|||
(code_info + "Searching for footprints on {}...".format(dork['site'])))
|
||||
|
||||
for result in search(dorkRequest, stop=dork['stop']):
|
||||
if result:
|
||||
print((code_result + "URL: " + result))
|
||||
print((code_result + "URL: " + result))
|
||||
|
||||
|
||||
def osintDisposableNumScan():
|
||||
|
@ -426,10 +429,9 @@ def osintDisposableNumScan():
|
|||
(code_info + "Searching for footprints on {}...".format(dork['site'])))
|
||||
|
||||
for result in search(dorkRequest, stop=dork['stop']):
|
||||
if result:
|
||||
print((code_result + "Result found: {}".format(dork['site'])))
|
||||
print((code_result + "URL: " + result))
|
||||
askForExit()
|
||||
print((code_result + "Result found: {}".format(dork['site'])))
|
||||
print((code_result + "URL: " + result))
|
||||
askForExit()
|
||||
|
||||
|
||||
def osintScan(rerun=False):
|
||||
|
@ -458,16 +460,16 @@ def osintScan(rerun=False):
|
|||
|
||||
print((code_info + '---- Web pages footprints ----'))
|
||||
|
||||
print((code_info + "Searching for footprints on web pages... (limit=5)"))
|
||||
print((code_info + "Searching for footprints on web pages... (limit=10)"))
|
||||
if customFormatting:
|
||||
req = '{} | intext:"{}" | intext:"{}" | intext:"{}"'.format(
|
||||
number, number, internationalNumber, customFormatting)
|
||||
else:
|
||||
req = '{} | intext:"{}" | intext:"{}"'.format(
|
||||
number, number, internationalNumber)
|
||||
for result in search(req, stop=5):
|
||||
if result:
|
||||
print((code_result + "Result found: " + result))
|
||||
|
||||
for result in search(req, stop=10):
|
||||
print((code_result + "Result found: " + result))
|
||||
|
||||
# Documents
|
||||
print((code_info + "Searching for documents... (limit=10)"))
|
||||
|
@ -478,8 +480,7 @@ def osintScan(rerun=False):
|
|||
req = '[ext:doc | ext:docx | ext:odt | ext:pdf | ext:rtf | ext:sxw | ext:psw | ext:ppt | ext:pptx | ext:pps | ext:csv | ext:txt | ext:xls] && [intext:"{}" | intext:"{}"]'.format(
|
||||
internationalNumber, localNumber)
|
||||
for result in search(req, stop=10):
|
||||
if result:
|
||||
print((code_result + "Result found: " + result))
|
||||
print((code_result + "Result found: " + result))
|
||||
|
||||
print((code_info + '---- Reputation footprints ----'))
|
||||
|
||||
|
@ -544,17 +545,17 @@ def askForExit():
|
|||
|
||||
|
||||
def scanNumber(InputNumber):
|
||||
print(code_title +
|
||||
"[!] ---- Fetching informations for {} ---- [!]".format(formatNumber(InputNumber)))
|
||||
|
||||
localScan(InputNumber)
|
||||
|
||||
global number
|
||||
global localNumber
|
||||
global internationalNumber
|
||||
global numberCountryCode
|
||||
global numberCountry
|
||||
|
||||
print(code_title +
|
||||
"[!] ---- Fetching informations for {} ---- [!]".format(formatNumber(InputNumber)))
|
||||
|
||||
localScan(InputNumber)
|
||||
|
||||
if not number:
|
||||
print((code_error + "Error: number {} is not valid. Skipping.".format(formatNumber(InputNumber))))
|
||||
sys.exit()
|
||||
|
|
Loading…
Reference in New Issue