Minor refactor & v0.4-dev

This commit is contained in:
sundowndev 2018-11-15 14:12:27 +01:00
parent be56f69e91
commit 390c0f6d43
1 changed files with 20 additions and 47 deletions

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
__version__ = '0.3-dev' __version__ = '0.4-dev'
print "\n \033[92m" print "\n \033[92m"
print " ___ _ _____ __ " print " ___ _ _____ __ "
@ -57,7 +57,7 @@ if args.update:
print 'update' print 'update'
sys.exit() sys.exit()
scanners = ['any', 'all', 'numverify', 'ovh', 'whosenumber', 'freecarrier', '411'] scanners = ['any', 'all', 'numverify', 'ovh', 'voiplist']
code_info = '\033[97m[*] ' code_info = '\033[97m[*] '
code_warning = '\033[93m(!) ' code_warning = '\033[93m(!) '
@ -67,12 +67,15 @@ code_error = '\033[91m[!] '
def saveToOutput(output): def saveToOutput(output):
print 'save' print 'save'
def formatNumber(number):
return re.sub("(?:\+)?(?:[^[0-9]*)", "", number)
def localScan(number): def localScan(number):
print code_info + 'Running local scan...' print code_info + 'Running local scan...'
PhoneNumber = dict(); PhoneNumber = dict();
FormattedPhoneNumber = number.replace("\n", "").replace("-", "").replace(" ", "") FormattedPhoneNumber = "+" + formatNumber(number)
try: try:
PhoneNumberObject = phonenumbers.parse(FormattedPhoneNumber, None) PhoneNumberObject = phonenumbers.parse(FormattedPhoneNumber, None)
@ -92,7 +95,6 @@ def localScan(number):
print code_result + 'Carrier: %s' % carrier.name_for_number(PhoneNumberObject, 'en') print code_result + 'Carrier: %s' % carrier.name_for_number(PhoneNumberObject, 'en')
print code_result + 'Area: %s' % geocoder.description_for_number(PhoneNumberObject, 'en') print code_result + 'Area: %s' % geocoder.description_for_number(PhoneNumberObject, 'en')
#print '\033[1;32m[+] Timezone: %s, %s' % (timezone.time_zones_for_number(PhoneNumberObject)[0],timezone.time_zones_for_number(PhoneNumberObject)[1]) #print '\033[1;32m[+] Timezone: %s, %s' % (timezone.time_zones_for_number(PhoneNumberObject)[0],timezone.time_zones_for_number(PhoneNumberObject)[1])
#print code_info + 'This is most likely a landline, or a fixed VoIP.'
if phonenumbers.is_possible_number(PhoneNumberObject): if phonenumbers.is_possible_number(PhoneNumberObject):
print code_info + 'The number is valid and possible.' print code_info + 'The number is valid and possible.'
@ -154,6 +156,9 @@ def numverifyScan(PhoneNumber):
print(code_result + "Carrier: %s") % data["carrier"] print(code_result + "Carrier: %s") % data["carrier"]
print(code_result + "Line type: %s") % data["line_type"] print(code_result + "Line type: %s") % data["line_type"]
if data["line_type"] == 'landline':
print(code_warning + "This is most likely a landline, or a fixed VoIP.")
def ovhScan(country, number): def ovhScan(country, number):
if not args.scanner == 'ovh' and not args.scanner == 'all': if not args.scanner == 'ovh' and not args.scanner == 'all':
return -1 return -1
@ -185,54 +190,21 @@ def repScan(countryCode, number):
print code_info + 'Running 411.com scan...' print code_info + 'Running 411.com scan...'
print 'https://www.411.com/phone/%s-%s' % (countryCode,number) print 'https://www.411.com/phone/%s-%s' % (countryCode,number)
def freecarrierlookupScan(countryCode, number): def voiplistScan(number):
if not args.scanner == 'freecarrier' and not args.scanner == 'all': print code_info + 'Running VoIP list scan...'
return -1 # voip search
print code_info + 'Running freecarrierlookup.com scan...' def osintScan(countryCode, number):
print code_info + 'Running OSINT scan...'
# OSINT recon
payload = "phonenum=%s&cc=%s" % (number,countryCode) # social profiles
headers = { # websites
'host': "freecarrierlookup.com", # emails
'connection': "keep-alive",
'content-length': "48",
'accept': "application/json, text/javascript, */*; q=0.01",
'origin': "https://freecarrierlookup.com",
'x-requested-with': "XMLHttpRequest",
'user-agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
'content-type': "application/x-www-form-urlencoded",
'referer': "https://freecarrierlookup.com/",
'accept-encoding': "gzip, deflate, br",
'accept-language': "en-US,en;q=0.9,fr;q=0.8,la;q=0.7,es;q=0.6,zh-CN;q=0.5,zh;q=0.4",
'cookie': "PHPSESSID=cdifm9u3ch2mqscdnj2pjqjfuq",
'cache-control': "no-cache",
'postman-token': "c81a7bb0-f338-c2e5-5f32-e1b94726cce5"
}
response = requests.request("POST", "https://freecarrierlookup.com/getcarrier.php", data=payload, headers=headers)
print response.content
data = json.loads(response.content)
if not data["status"] == "success":
print code_error + '0 result found.'
return -1
soup = BeautifulSoup(response.content, "html5lib")
tags = soup.find_all("p")
print code_result + 'Phone Number: ' + tags[0].string.replace('<\/p>\\n <\/div>\\n', '')
print code_result + 'Carrier: ' + tags[1].string.replace('<\/p>\\n <\/div>\\n', '')
print code_result + 'Is Wireless:'
print code_result + 'SMS Gateway Address: '
print code_result + 'MMS Gateway Address: '
def scanNumber(number): def scanNumber(number):
print "\033[1m\033[93m[!] ---- Fetching informations for %s ---- [!]" % number print "\033[1m\033[93m[!] ---- Fetching informations for %s ---- [!]" % number
print code_info + 'Parsing informations...'
PhoneNumber = localScan(number) PhoneNumber = localScan(number)
if not PhoneNumber: if not PhoneNumber:
@ -241,9 +213,10 @@ def scanNumber(number):
numverifyScan(PhoneNumber['full']) numverifyScan(PhoneNumber['full'])
ovhScan('fr', PhoneNumber['full']) # TODO: replace 1st parameter to be dynamic ovhScan('fr', PhoneNumber['full']) # TODO: replace 1st parameter to be dynamic
#freecarrierlookupScan(PhoneNumber['countryCode'], PhoneNumber['number'])
#whosenumberScan(PhoneNumber['countryCode'], PhoneNumber['number']) #whosenumberScan(PhoneNumber['countryCode'], PhoneNumber['number'])
#repScan(PhoneNumber['countryCode'], PhoneNumber['number']) #repScan(PhoneNumber['countryCode'], PhoneNumber['number'])
voiplistScan(PhoneNumber['full'])
osintScan(PhoneNumber['countryCode'], PhoneNumber['full'])
print '\n' print '\n'