diff --git a/README.md b/README.md index 6922ac6..431bc34 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,22 @@ # PhoneInfoga -Advanced information gathering & OSINT reconnaissance tool for phone numbers. Designed for Social Engineering and red teaming. - -### Hello, friend. Next time cover your tracks. - - +Information gathering & OSINT reconnaissance tool for phone numbers. Designed for Social Engineering and red teaming. ## The project -Building the most advanced tool to scan phone numbers using only free resources. The goal is to first identify basic informations such as country, area, carrier and line type on any international phone numbers with a very good accuracy, and then detect the VoIP provider or search for footprints on search engines to try identify the owner. +Building one of the most advanced tools to scan phone numbers using only free resources. The goal is to first gather basic information such as country, area, carrier and line type on any international phone numbers with a very good accuracy. Then try to determine the VoIP provider or search for footprints on search engines to try identify the owner. **This tool requires python 2.x** ## Features -- Check if phone number exists +- Check if phone number exists and is possible - Gather standard informations such as country, line type and carrier - Check several numbers at once -- Set an output for result(s) -- Check if number is from a VoIP provider - OSINT reconnaissance using external APIs, Google Hacking, phone books & search engines +- Use custom formatting for more effective OSINT reconnaissance + +![](https://i.imgur.com/bWx79dy.png) ## Formats @@ -70,10 +67,16 @@ optional arguments: -u, --update Update the tool & databases ``` -Example : +Example (quotes are optional, use it when typing special formats) : ``` -python phoneinfoga.py -n +42837544833 +python phoneinfoga.py -n "(+42)837544833" +``` + +Check for a number range on OVH : + +``` +python phoneinfoga.py -n +42837544833 -s ovh ``` Check several numbers at once : @@ -82,10 +85,12 @@ Check several numbers at once : python ./phoneinfoga.py -i numbers.txt -o results.txt ``` -Check for a number range on OVH (just put some zeros) : +**Note: `--osint` is not compatible with `--output` option.** + +Use all scanners and run OSINT reconnaissance : ``` -python phoneinfoga.py -n +42837544833 -s ovh +python phoneinfoga.py -n +42837544833 -s all --osint ``` ## Formatting @@ -109,16 +114,35 @@ In the UK, and many other countries internationally, local dialing may require t For example, here’s a UK-based number in standard local formatting: 020 7183 8750 -![](https://i.imgur.com/WdXKSZY.png) - Here’s the same phone number in E.164 formatting: +442071838750 -![](https://i.imgur.com/Ovso0w2.png) +## Dealing with Google captcha + +PhoneInfo use a workaround to handle Google bot detection. When running OSINT scan, you will usually be blacklisted very easily by Google, which will ask the tool to complete a captcha. + +>When you search on Google using custom requests (Google Dorks), you get very easily blacklisted. So Google shows up a page where you have to complete a captcha to continue. As soon as the captcha is completed, Google create a cookie named "GOOGLE_ABUSE_EXEMPTION" which is used to whitelist your browser and IP address for some minutes. This temporary whitelist is enough to let you gather a lot of information from many sources. So I decided to add a simple user manipulation to bypass this bot detection. [...] So I'll just try make requests and wait until I get a 503 error, which means I got blacklisted. Then I ask the user to follow an URL to manually complete the captcha and copy the whitelist token to paste it in the CLI. The tool is now able to continue to scan! + +![](https://i.imgur.com/qbFZa1m.png) + +### Steps + +- Follow the URL +- Open the dev tool (F12 on most browsers) +- Go to **Storage**, then **Cookies** +- Copy the value of the *GOOGLE_ABUSE_EXEMPTION* cookie and paste it in the CLI + +![](https://i.imgur.com/KkE1EM5.png) + +## Custom formatting + +... ## License This tool is licensed under the GNU General Public License v3.0. +---- + ## Resources Regular expression : `^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$` diff --git a/data/area_codes.json b/data/area_codes.json deleted file mode 100644 index fb300c5..0000000 --- a/data/area_codes.json +++ /dev/null @@ -1,1647 +0,0 @@ -[ - { - "CountryCode": "FR", - "AreaCodes": [ - { - "area": "Bordeaux", - "code": "5" - }, - { - "area": "Boulogne", - "code": "3" - }, - { - "area": "Brest", - "code": "2" - }, - { - "area": "Calais", - "code": "3" - }, - { - "area": "Cannes", - "code": "4" - }, - { - "area": "Corsica", - "code": "495" - }, - { - "area": "Dijon", - "code": "3" - }, - { - "area": "Grenoble", - "code": "4" - }, - { - "area": "Cherbourg", - "code": "2" - }, - { - "area": "Le Havre", - "code": "2" - }, - { - "area": "Lille", - "code": "3" - }, - { - "area": "Limoges", - "code": "5" - }, - { - "area": "Lourdes", - "code": "5" - }, - { - "area": "Lyon", - "code": "4" - }, - { - "area": "Marseille", - "code": "4" - }, - { - "area": "Nancy", - "code": "3" - }, - { - "area": "Nantes", - "code": "2" - }, - { - "area": "Nice", - "code": "4" - }, - { - "area": "Orleans", - "code": "2" - }, - { - "area": "Paris", - "code": "1" - }, - { - "area": "Reims", - "code": "3" - }, - { - "area": "Rouen", - "code": "2" - }, - { - "area": "St. Etienne", - "code": "4" - }, - { - "area": "Strasbourg", - "code": "3" - }, - { - "area": "Toulon", - "code": "4" - }, - { - "area": "Toulouse", - "code": "5" - }, - { - "area": "Troyes", - "code": "3" - }, - { - "area": "Valence", - "code": "4" - } - ] - }, - { - "CountryCode": "CN", - "AreaCodes": [ - { - "area": "Anshan", - "code": "412" - }, - { - "area": "Beijing", - "code": "10" - }, - { - "area": "Dalian", - "code": "411" - }, - { - "area": "Guangzhou", - "code": "20" - }, - { - "area": "Hangzhou", - "code": "571" - }, - { - "area": "Harbin", - "code": "451" - }, - { - "area": "Huaian", - "code": "517" - }, - { - "area": "Huaibei", - "code": "561" - }, - { - "area": "Changchun", - "code": "431" - }, - { - "area": "Chengdu", - "code": "28" - }, - { - "area": "Chongqing", - "code": "23" - }, - { - "area": "Jilin", - "code": "432" - }, - { - "area": "Jinan", - "code": "531" - }, - { - "area": "Nanjing", - "code": "25" - }, - { - "area": "Ningbo", - "code": "574" - }, - { - "area": "Qingdao", - "code": "532" - }, - { - "area": "Shanghai", - "code": "21" - }, - { - "area": "Shenyang", - "code": "24" - }, - { - "area": "Suizhou", - "code": "722" - }, - { - "area": "Tianjin", - "code": "22" - }, - { - "area": "Weifang", - "code": "536" - }, - { - "area": "Wuhan", - "code": "27" - }, - { - "area": "Wuxi", - "code": "510" - }, - { - "area": "Xiangfan", - "code": "710" - }, - { - "area": "Yangzhou", - "code": "514" - }, - { - "area": "Yantai", - "code": "535" - }, - { - "area": "Zaozhuang", - "code": "632" - }, - { - "area": "Zibo", - "code": "533" - } - ] - }, - { - "CountryCode": "DE", - "AreaCodes": [ - { - "area": "Aachen", - "code": "241" - }, - { - "area": "Augsburg", - "code": "821" - }, - { - "area": "Berlin", - "code": "30" - }, - { - "area": "Bielefeld", - "code": "521" - }, - { - "area": "Bochum", - "code": "234" - }, - { - "area": "Bonn", - "code": "228" - }, - { - "area": "Brandenburg", - "code": "3381" - }, - { - "area": "Bremen", - "code": "421" - }, - { - "area": "Dortmund", - "code": "231" - }, - { - "area": "Dresden", - "code": "351" - }, - { - "area": "Duisburg", - "code": "203" - }, - { - "area": "Dusseldorf", - "code": "211" - }, - { - "area": "Essen", - "code": "201" - }, - { - "area": "Frankfurt", - "code": "69" - }, - { - "area": "Gelsenkirchen", - "code": "209" - }, - { - "area": "Hamburg", - "code": "40" - }, - { - "area": "Hannover", - "code": "511" - }, - { - "area": "Chemnitz", - "code": "371" - }, - { - "area": "Karlsruhe", - "code": "721" - }, - { - "area": "Koln", - "code": "221" - }, - { - "area": "Krefeld", - "code": "2151" - }, - { - "area": "Leipzig", - "code": "341" - }, - { - "area": "Mainz", - "code": "6131" - }, - { - "area": "Mannheim", - "code": "621" - }, - { - "area": "Munchen", - "code": "89" - }, - { - "area": "Munster", - "code": "6071" - }, - { - "area": "Nurnberg", - "code": "911" - }, - { - "area": "Stuttgart", - "code": "711" - }, - { - "area": "Wiesbaden", - "code": "611" - }, - { - "area": "Wuppertal", - "code": "202" - } - ] - }, - { - "CountryCode": "US", - "AreaCodes": [ - { - "code": "201", - "area": "New Jersey" - }, - { - "code": "202", - "area": "District of Columbia" - }, - { - "code": "203", - "area": "Connecticut" - }, - { - "code": "204", - "area": "Manitoba" - }, - { - "code": "205", - "area": "Alabama" - }, - { - "code": "206", - "area": "Washington" - }, - { - "code": "207", - "area": "Maine" - }, - { - "code": "208", - "area": "Idaho" - }, - { - "code": "209", - "area": "California" - }, - { - "code": "210", - "area": "Texas" - }, - { - "code": "212", - "area": "New York" - }, - { - "code": "213", - "area": "California" - }, - { - "code": "214", - "area": "Texas" - }, - { - "code": "215", - "area": "Pennsylvania" - }, - { - "code": "216", - "area": "Ohio" - }, - { - "code": "217", - "area": "Illinois" - }, - { - "code": "218", - "area": "Minnesota" - }, - { - "code": "219", - "area": "Indiana" - }, - { - "code": "224", - "area": "Illinois" - }, - { - "code": "225", - "area": "Louisiana" - }, - { - "code": "228", - "area": "Mississippi" - }, - { - "code": "229", - "area": "Georgia" - }, - { - "code": "231", - "area": "Michigan" - }, - { - "code": "234", - "area": "Ohio" - }, - { - "code": "239", - "area": "Florida" - }, - { - "code": "240", - "area": "Maryland" - }, - { - "code": "242", - "area": "Bahamas" - }, - { - "code": "246", - "area": "Barbados" - }, - { - "code": "248", - "area": "Michigan" - }, - { - "code": "250", - "area": "British Columbia" - }, - { - "code": "251", - "area": "Alabama" - }, - { - "code": "252", - "area": "North Carolina" - }, - { - "code": "253", - "area": "Washington" - }, - { - "code": "254", - "area": "Texas" - }, - { - "code": "256", - "area": "Alabama" - }, - { - "code": "260", - "area": "Indiana" - }, - { - "code": "262", - "area": "Wisconsin" - }, - { - "code": "264", - "area": "Anguilla" - }, - { - "code": "267", - "area": "Pennsylvania" - }, - { - "code": "268", - "area": "Antigua\/Barbuda" - }, - { - "code": "269", - "area": "Michigan" - }, - { - "code": "270", - "area": "Kentucky" - }, - { - "code": "276", - "area": "Virginia" - }, - { - "code": "281", - "area": "Texas" - }, - { - "code": "284", - "area": "British Virgin Islands" - }, - { - "code": "289", - "area": "Ontario" - }, - { - "code": "301", - "area": "Maryland" - }, - { - "code": "302", - "area": "Delaware" - }, - { - "code": "303", - "area": "Colorado" - }, - { - "code": "304", - "area": "West Virginia" - }, - { - "code": "305", - "area": "Florida" - }, - { - "code": "306", - "area": "Saskatchewan" - }, - { - "code": "307", - "area": "Wyoming" - }, - { - "code": "308", - "area": "Nebraska" - }, - { - "code": "309", - "area": "Illinois" - }, - { - "code": "310", - "area": "California" - }, - { - "code": "312", - "area": "Illinois" - }, - { - "code": "313", - "area": "Michigan" - }, - { - "code": "314", - "area": "Missouri" - }, - { - "code": "315", - "area": "New York" - }, - { - "code": "316", - "area": "Kansas" - }, - { - "code": "317", - "area": "Indiana" - }, - { - "code": "318", - "area": "Louisiana" - }, - { - "code": "319", - "area": "Iowa" - }, - { - "code": "320", - "area": "Minnesota" - }, - { - "code": "321", - "area": "Florida" - }, - { - "code": "323", - "area": "California" - }, - { - "code": "325", - "area": "Texas" - }, - { - "code": "330", - "area": "Ohio" - }, - { - "code": "334", - "area": "Alabama" - }, - { - "code": "336", - "area": "North Carolina" - }, - { - "code": "337", - "area": "Louisiana" - }, - { - "code": "339", - "area": "Massachusetts" - }, - { - "code": "340", - "area": "US Virgin Islands" - }, - { - "code": "345", - "area": "Cayman Islands" - }, - { - "code": "347", - "area": "New York" - }, - { - "code": "351", - "area": "Massachusetts" - }, - { - "code": "352", - "area": "Florida" - }, - { - "code": "360", - "area": "Washington" - }, - { - "code": "361", - "area": "Texas" - }, - { - "code": "386", - "area": "Florida" - }, - { - "code": "401", - "area": "Rhode Island" - }, - { - "code": "402", - "area": "Nebraska" - }, - { - "code": "403", - "area": "Alberta" - }, - { - "code": "404", - "area": "Georgia" - }, - { - "code": "405", - "area": "Oklahoma" - }, - { - "code": "406", - "area": "Montana" - }, - { - "code": "407", - "area": "Florida" - }, - { - "code": "408", - "area": "California" - }, - { - "code": "409", - "area": "Texas" - }, - { - "code": "410", - "area": "Maryland" - }, - { - "code": "412", - "area": "Pennsylvania" - }, - { - "code": "413", - "area": "Massachusetts" - }, - { - "code": "414", - "area": "Wisconsin" - }, - { - "code": "415", - "area": "California" - }, - { - "code": "416", - "area": "Ontario" - }, - { - "code": "417", - "area": "Missouri" - }, - { - "code": "418", - "area": "Quebec" - }, - { - "code": "419", - "area": "Ohio" - }, - { - "code": "423", - "area": "Tennessee" - }, - { - "code": "425", - "area": "Washington" - }, - { - "code": "430", - "area": "Texas" - }, - { - "code": "432", - "area": "Texas" - }, - { - "code": "434", - "area": "Virginia" - }, - { - "code": "435", - "area": "Utah" - }, - { - "code": "440", - "area": "Ohio" - }, - { - "code": "441", - "area": "Bermuda" - }, - { - "code": "443", - "area": "Maryland" - }, - { - "code": "450", - "area": "Quebec" - }, - { - "code": "456", - "area": "NANP area" - }, - { - "code": "469", - "area": "Texas" - }, - { - "code": "473", - "area": "Grenada" - }, - { - "code": "478", - "area": "Georgia" - }, - { - "code": "479", - "area": "Arkansas" - }, - { - "code": "480", - "area": "Arizona" - }, - { - "code": "484", - "area": "Pennsylvania" - }, - { - "code": "501", - "area": "Arkansas" - }, - { - "code": "502", - "area": "Kentucky" - }, - { - "code": "503", - "area": "Oregon" - }, - { - "code": "504", - "area": "Louisiana" - }, - { - "code": "505", - "area": "New Mexico" - }, - { - "code": "506", - "area": "New Brunswick" - }, - { - "code": "507", - "area": "Minnesota" - }, - { - "code": "508", - "area": "Massachusetts" - }, - { - "code": "509", - "area": "Washington" - }, - { - "code": "510", - "area": "California" - }, - { - "code": "512", - "area": "Texas" - }, - { - "code": "513", - "area": "Ohio" - }, - { - "code": "514", - "area": "Quebec" - }, - { - "code": "515", - "area": "Iowa" - }, - { - "code": "516", - "area": "New York" - }, - { - "code": "517", - "area": "Michigan" - }, - { - "code": "518", - "area": "New York" - }, - { - "code": "519", - "area": "Ontario" - }, - { - "code": "520", - "area": "Arizona" - }, - { - "code": "530", - "area": "California" - }, - { - "code": "540", - "area": "Virginia" - }, - { - "code": "541", - "area": "Oregon" - }, - { - "code": "551", - "area": "New Jersey" - }, - { - "code": "559", - "area": "California" - }, - { - "code": "561", - "area": "Florida" - }, - { - "code": "562", - "area": "California" - }, - { - "code": "563", - "area": "Iowa" - }, - { - "code": "567", - "area": "Ohio" - }, - { - "code": "570", - "area": "Pennsylvania" - }, - { - "code": "571", - "area": "Virginia" - }, - { - "code": "573", - "area": "Missouri" - }, - { - "code": "574", - "area": "Indiana" - }, - { - "code": "580", - "area": "Oklahoma" - }, - { - "code": "585", - "area": "New York" - }, - { - "code": "586", - "area": "Michigan" - }, - { - "code": "601", - "area": "Mississippi" - }, - { - "code": "602", - "area": "Arizona" - }, - { - "code": "603", - "area": "New Hampshire" - }, - { - "code": "604", - "area": "British Columbia" - }, - { - "code": "605", - "area": "South Dakota" - }, - { - "code": "606", - "area": "Kentucky" - }, - { - "code": "607", - "area": "New York" - }, - { - "code": "608", - "area": "Wisconsin" - }, - { - "code": "609", - "area": "New Jersey" - }, - { - "code": "610", - "area": "Pennsylvania" - }, - { - "code": "612", - "area": "Minnesota" - }, - { - "code": "613", - "area": "Ontario" - }, - { - "code": "614", - "area": "Ohio" - }, - { - "code": "615", - "area": "Tennessee" - }, - { - "code": "616", - "area": "Michigan" - }, - { - "code": "617", - "area": "Massachusetts" - }, - { - "code": "618", - "area": "Illinois" - }, - { - "code": "619", - "area": "California" - }, - { - "code": "620", - "area": "Kansas" - }, - { - "code": "623", - "area": "Arizona" - }, - { - "code": "626", - "area": "California" - }, - { - "code": "630", - "area": "Illinois" - }, - { - "code": "631", - "area": "New York" - }, - { - "code": "636", - "area": "Missouri" - }, - { - "code": "641", - "area": "Iowa" - }, - { - "code": "646", - "area": "New York" - }, - { - "code": "647", - "area": "Ontario" - }, - { - "code": "649", - "area": "Turks & Caicos Islands" - }, - { - "code": "650", - "area": "California" - }, - { - "code": "651", - "area": "Minnesota" - }, - { - "code": "660", - "area": "Missouri" - }, - { - "code": "661", - "area": "California" - }, - { - "code": "662", - "area": "Mississippi" - }, - { - "code": "664", - "area": "Montserrat" - }, - { - "code": "670", - "area": "CNMI" - }, - { - "code": "671", - "area": "Guam" - }, - { - "code": "678", - "area": "Georgia" - }, - { - "code": "682", - "area": "Texas" - }, - { - "code": "701", - "area": "North Dakota" - }, - { - "code": "702", - "area": "Nevada" - }, - { - "code": "703", - "area": "Virginia" - }, - { - "code": "704", - "area": "North Carolina" - }, - { - "code": "705", - "area": "Ontario" - }, - { - "code": "706", - "area": "Georgia" - }, - { - "code": "707", - "area": "California" - }, - { - "code": "708", - "area": "Illinois" - }, - { - "code": "709", - "area": "Newfoundland" - }, - { - "code": "710", - "area": "US" - }, - { - "code": "712", - "area": "Iowa" - }, - { - "code": "713", - "area": "Texas" - }, - { - "code": "714", - "area": "California" - }, - { - "code": "715", - "area": "Wisconsin" - }, - { - "code": "716", - "area": "New York" - }, - { - "code": "717", - "area": "Pennsylvania" - }, - { - "code": "718", - "area": "New York" - }, - { - "code": "719", - "area": "Colorado" - }, - { - "code": "720", - "area": "Colorado" - }, - { - "code": "724", - "area": "Pennsylvania" - }, - { - "code": "727", - "area": "Florida" - }, - { - "code": "731", - "area": "Tennessee" - }, - { - "code": "732", - "area": "New Jersey" - }, - { - "code": "734", - "area": "Michigan" - }, - { - "code": "740", - "area": "Ohio" - }, - { - "code": "754", - "area": "Florida" - }, - { - "code": "757", - "area": "Virginia" - }, - { - "code": "758", - "area": "St. Lucia" - }, - { - "code": "760", - "area": "California" - }, - { - "code": "763", - "area": "Minnesota" - }, - { - "code": "765", - "area": "Indiana" - }, - { - "code": "767", - "area": "Dominica" - }, - { - "code": "770", - "area": "Georgia" - }, - { - "code": "772", - "area": "Florida" - }, - { - "code": "773", - "area": "Illinois" - }, - { - "code": "774", - "area": "Massachusetts" - }, - { - "code": "775", - "area": "Nevada" - }, - { - "code": "778", - "area": "British Columbia" - }, - { - "code": "780", - "area": "Alberta" - }, - { - "code": "781", - "area": "Massachusetts" - }, - { - "code": "784", - "area": "St. Vincent & Grenadines" - }, - { - "code": "785", - "area": "Kansas" - }, - { - "code": "786", - "area": "Florida" - }, - { - "code": "787", - "area": "Puerto Rico" - }, - { - "code": "801", - "area": "Utah" - }, - { - "code": "802", - "area": "Vermont" - }, - { - "code": "803", - "area": "South Carolina" - }, - { - "code": "804", - "area": "Virginia" - }, - { - "code": "805", - "area": "California" - }, - { - "code": "806", - "area": "Texas" - }, - { - "code": "807", - "area": "Ontario" - }, - { - "code": "808", - "area": "Hawaii" - }, - { - "code": "809", - "area": "Dominican Republic" - }, - { - "code": "810", - "area": "Michigan" - }, - { - "code": "812", - "area": "Indiana" - }, - { - "code": "813", - "area": "Florida" - }, - { - "code": "814", - "area": "Pennsylvania" - }, - { - "code": "815", - "area": "Illinois" - }, - { - "code": "816", - "area": "Missouri" - }, - { - "code": "817", - "area": "Texas" - }, - { - "code": "818", - "area": "California" - }, - { - "code": "819", - "area": "Quebec" - }, - { - "code": "828", - "area": "North Carolina" - }, - { - "code": "830", - "area": "Texas" - }, - { - "code": "831", - "area": "California" - }, - { - "code": "832", - "area": "Texas" - }, - { - "code": "843", - "area": "South Carolina" - }, - { - "code": "845", - "area": "New York" - }, - { - "code": "847", - "area": "Illinois" - }, - { - "code": "848", - "area": "New Jersey" - }, - { - "code": "850", - "area": "Florida" - }, - { - "code": "856", - "area": "New Jersey" - }, - { - "code": "857", - "area": "Massachusetts" - }, - { - "code": "858", - "area": "California" - }, - { - "code": "859", - "area": "Kentucky" - }, - { - "code": "860", - "area": "Connecticut" - }, - { - "code": "862", - "area": "New Jersey" - }, - { - "code": "863", - "area": "Florida" - }, - { - "code": "864", - "area": "South Carolina" - }, - { - "code": "865", - "area": "Tennessee" - }, - { - "code": "867", - "area": "Yukon, NW Terr., Nunavut" - }, - { - "code": "868", - "area": "Trinidad & Tobago" - }, - { - "code": "869", - "area": "St. Kitts & Nevis" - }, - { - "code": "870", - "area": "Arkansas" - }, - { - "code": "876", - "area": "Jamaica" - }, - { - "code": "878", - "area": "Pennsylvania" - }, - { - "code": "880", - "area": "NANP area" - }, - { - "code": "881", - "area": "NANP area" - }, - { - "code": "882", - "area": "NANP area" - }, - { - "code": "901", - "area": "Tennessee" - }, - { - "code": "902", - "area": "Nova Scotia" - }, - { - "code": "903", - "area": "Texas" - }, - { - "code": "904", - "area": "Florida" - }, - { - "code": "905", - "area": "Ontario" - }, - { - "code": "906", - "area": "Michigan" - }, - { - "code": "907", - "area": "Alaska" - }, - { - "code": "908", - "area": "New Jersey" - }, - { - "code": "909", - "area": "California" - }, - { - "code": "910", - "area": "North Carolina" - }, - { - "code": "912", - "area": "Georgia" - }, - { - "code": "913", - "area": "Kansas" - }, - { - "code": "914", - "area": "New York" - }, - { - "code": "915", - "area": "Texas" - }, - { - "code": "916", - "area": "California" - }, - { - "code": "917", - "area": "New York" - }, - { - "code": "918", - "area": "Oklahoma" - }, - { - "code": "919", - "area": "North Carolina" - }, - { - "code": "920", - "area": "Wisconsin" - }, - { - "code": "925", - "area": "California" - }, - { - "code": "928", - "area": "Arizona" - }, - { - "code": "931", - "area": "Tennessee" - }, - { - "code": "936", - "area": "Texas" - }, - { - "code": "937", - "area": "Ohio" - }, - { - "code": "939", - "area": "Puerto Rico" - }, - { - "code": "940", - "area": "Texas" - }, - { - "code": "941", - "area": "Florida" - }, - { - "code": "947", - "area": "Michigan" - }, - { - "code": "949", - "area": "California" - }, - { - "code": "952", - "area": "Minnesota" - }, - { - "code": "954", - "area": "Florida" - }, - { - "code": "956", - "area": "Texas" - }, - { - "code": "970", - "area": "Colorado" - }, - { - "code": "971", - "area": "Oregon" - }, - { - "code": "972", - "area": "Texas" - }, - { - "code": "973", - "area": "New Jersey" - }, - { - "code": "978", - "area": "Massachusetts" - }, - { - "code": "979", - "area": "Texas" - }, - { - "code": "980", - "area": "North Carolina" - }, - { - "code": "985", - "area": "Louisiana" - }, - { - "code": "989", - "area": "Michigan" - } - ] - }, - { - "CountryCode": "CN", - "AreaCodes": [] - } -] - diff --git a/data/carrier_codes.json b/data/carrier_codes.json deleted file mode 100644 index 20b95a5..0000000 --- a/data/carrier_codes.json +++ /dev/null @@ -1,2027 +0,0 @@ -[ - { - "country": "FR", - "carriers": [ - { - "area": { - "code": null, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Other", - "updated_at": null - } - }, - { - "area": { - "code": 6, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 7, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 9, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 17, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 36, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 61, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 62, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 66, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Bouygues Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 67, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 68, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 76, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Bouygues Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 77, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 78, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 79, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 87, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 148, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 149, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 180, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 181, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 182, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 183, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 214, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 218, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 222, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 230, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 234, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 236, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 244, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 245, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 246, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 249, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 250, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 252, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 253, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 256, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 261, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 272, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 276, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 277, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 278, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 285, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 290, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 310, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 345, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 351, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 352, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 354, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 355, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 357, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 358, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 359, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 370, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 371, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 372, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 373, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 411, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 413, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 415, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 420, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 422, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 426, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 427, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 430, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 434, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 443, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 456, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 457, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 463, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 469, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 480, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 481, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 482, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 483, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 484, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 486, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 487, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 488, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 489, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 516, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 517, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 519, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 524, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 531, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 533, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 535, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 540, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 547, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 564, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 567, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 579, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 581, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 582, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 587, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Clec", - "updated_at": null - } - }, - { - "area": { - "code": 601, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 603, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 605, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 607, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 608, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 609, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 630, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 631, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 632, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 633, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 634, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 635, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 637, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 642, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 643, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 645, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 646, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 647, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 648, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 650, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Bouygues Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 653, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Bouygues Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 654, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 655, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 658, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Bouygues Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 659, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Bouygues Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 698, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Bouygues Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 699, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Bouygues Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 780, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6001, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6002, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6003, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Bouygues Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6007, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6008, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6009, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Bouygues Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6020, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6021, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6022, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6023, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6040, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6041, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6044, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6045, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6046, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6047, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6048, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6049, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6064, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6065, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6066, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6067, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6068, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6069, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6360, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6361, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6362, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6363, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6364, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6365, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6366, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6367, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6368, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6369, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6381, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6382, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6383, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6384, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6385, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6386, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6387, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6388, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6389, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6401, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6402, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6403, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6404, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6405, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6406, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6407, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6408, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6409, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6417, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6444, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Bouygues Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6445, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Bouygues Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6446, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Bouygues Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6490, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6491, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6492, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6493, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6494, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 6495, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Bouygues Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 7705, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 7706, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 7707, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 7708, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 7709, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 60041, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 60042, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Bouygues Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 60051, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 60052, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 64160, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 64161, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Orange Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 64166, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 64167, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 64168, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 64169, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 64995, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 64998, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - }, - { - "area": { - "code": 64999, - "country_code": 33, - "country_id": 73, - "created_at": null, - "name": "France Sfr Mobile", - "updated_at": null - } - } - ] - } -] \ No newline at end of file diff --git a/data/country_codes.json b/data/country_codes.json deleted file mode 100644 index 116f43e..0000000 --- a/data/country_codes.json +++ /dev/null @@ -1,1212 +0,0 @@ -[ - { - "name":"Israel", - "dial_code":"+972", - "code":"IL" - }, - { - "name":"Afghanistan", - "dial_code":"+93", - "code":"AF" - }, - { - "name":"Albania", - "dial_code":"+355", - "code":"AL" - }, - { - "name":"Algeria", - "dial_code":"+213", - "code":"DZ" - }, - { - "name":"AmericanSamoa", - "dial_code":"+1684", - "code":"AS" - }, - { - "name":"Andorra", - "dial_code":"+376", - "code":"AD" - }, - { - "name":"Angola", - "dial_code":"+244", - "code":"AO" - }, - { - "name":"Anguilla", - "dial_code":"+1264", - "code":"AI" - }, - { - "name":"Antigua and Barbuda", - "dial_code":"+1268", - "code":"AG" - }, - { - "name":"Argentina", - "dial_code":"+54", - "code":"AR" - }, - { - "name":"Armenia", - "dial_code":"+374", - "code":"AM" - }, - { - "name":"Aruba", - "dial_code":"+297", - "code":"AW" - }, - { - "name":"Australia", - "dial_code":"+61", - "code":"AU" - }, - { - "name":"Austria", - "dial_code":"+43", - "code":"AT" - }, - { - "name":"Azerbaijan", - "dial_code":"+994", - "code":"AZ" - }, - { - "name":"Bahamas", - "dial_code":"+1242", - "code":"BS" - }, - { - "name":"Bahrain", - "dial_code":"+973", - "code":"BH" - }, - { - "name":"Bangladesh", - "dial_code":"+880", - "code":"BD" - }, - { - "name":"Barbados", - "dial_code":"+1246", - "code":"BB" - }, - { - "name":"Belarus", - "dial_code":"+375", - "code":"BY" - }, - { - "name":"Belgium", - "dial_code":"+32", - "code":"BE" - }, - { - "name":"Belize", - "dial_code":"+501", - "code":"BZ" - }, - { - "name":"Benin", - "dial_code":"+229", - "code":"BJ" - }, - { - "name":"Bermuda", - "dial_code":"+1441", - "code":"BM" - }, - { - "name":"Bhutan", - "dial_code":"+975", - "code":"BT" - }, - { - "name":"Bosnia and Herzegovina", - "dial_code":"+387", - "code":"BA" - }, - { - "name":"Botswana", - "dial_code":"+267", - "code":"BW" - }, - { - "name":"Brazil", - "dial_code":"+55", - "code":"BR" - }, - { - "name":"British Indian Ocean Territory", - "dial_code":"+246", - "code":"IO" - }, - { - "name":"Bulgaria", - "dial_code":"+359", - "code":"BG" - }, - { - "name":"Burkina Faso", - "dial_code":"+226", - "code":"BF" - }, - { - "name":"Burundi", - "dial_code":"+257", - "code":"BI" - }, - { - "name":"Cambodia", - "dial_code":"+855", - "code":"KH" - }, - { - "name":"Cameroon", - "dial_code":"+237", - "code":"CM" - }, - { - "name":"Canada", - "dial_code":"+1", - "code":"CA" - }, - { - "name":"Cape Verde", - "dial_code":"+238", - "code":"CV" - }, - { - "name":"Cayman Islands", - "dial_code":"+ 345", - "code":"KY" - }, - { - "name":"Central African Republic", - "dial_code":"+236", - "code":"CF" - }, - { - "name":"Chad", - "dial_code":"+235", - "code":"TD" - }, - { - "name":"Chile", - "dial_code":"+56", - "code":"CL" - }, - { - "name":"China", - "dial_code":"+86", - "code":"CN" - }, - { - "name":"Christmas Island", - "dial_code":"+61", - "code":"CX" - }, - { - "name":"Colombia", - "dial_code":"+57", - "code":"CO" - }, - { - "name":"Comoros", - "dial_code":"+269", - "code":"KM" - }, - { - "name":"Congo", - "dial_code":"+242", - "code":"CG" - }, - { - "name":"Cook Islands", - "dial_code":"+682", - "code":"CK" - }, - { - "name":"Costa Rica", - "dial_code":"+506", - "code":"CR" - }, - { - "name":"Croatia", - "dial_code":"+385", - "code":"HR" - }, - { - "name":"Cuba", - "dial_code":"+53", - "code":"CU" - }, - { - "name":"Cyprus", - "dial_code":"+537", - "code":"CY" - }, - { - "name":"Czech Republic", - "dial_code":"+420", - "code":"CZ" - }, - { - "name":"Denmark", - "dial_code":"+45", - "code":"DK" - }, - { - "name":"Djibouti", - "dial_code":"+253", - "code":"DJ" - }, - { - "name":"Dominica", - "dial_code":"+1767", - "code":"DM" - }, - { - "name":"Dominican Republic", - "dial_code":"+1849", - "code":"DO" - }, - { - "name":"Ecuador", - "dial_code":"+593", - "code":"EC" - }, - { - "name":"Egypt", - "dial_code":"+20", - "code":"EG" - }, - { - "name":"El Salvador", - "dial_code":"+503", - "code":"SV" - }, - { - "name":"Equatorial Guinea", - "dial_code":"+240", - "code":"GQ" - }, - { - "name":"Eritrea", - "dial_code":"+291", - "code":"ER" - }, - { - "name":"Estonia", - "dial_code":"+372", - "code":"EE" - }, - { - "name":"Ethiopia", - "dial_code":"+251", - "code":"ET" - }, - { - "name":"Faroe Islands", - "dial_code":"+298", - "code":"FO" - }, - { - "name":"Fiji", - "dial_code":"+679", - "code":"FJ" - }, - { - "name":"Finland", - "dial_code":"+358", - "code":"FI" - }, - { - "name":"France", - "dial_code":"+33", - "code":"FR" - }, - { - "name":"French Guiana", - "dial_code":"+594", - "code":"GF" - }, - { - "name":"French Polynesia", - "dial_code":"+689", - "code":"PF" - }, - { - "name":"Gabon", - "dial_code":"+241", - "code":"GA" - }, - { - "name":"Gambia", - "dial_code":"+220", - "code":"GM" - }, - { - "name":"Georgia", - "dial_code":"+995", - "code":"GE" - }, - { - "name":"Germany", - "dial_code":"+49", - "code":"DE" - }, - { - "name":"Ghana", - "dial_code":"+233", - "code":"GH" - }, - { - "name":"Gibraltar", - "dial_code":"+350", - "code":"GI" - }, - { - "name":"Greece", - "dial_code":"+30", - "code":"GR" - }, - { - "name":"Greenland", - "dial_code":"+299", - "code":"GL" - }, - { - "name":"Grenada", - "dial_code":"+1473", - "code":"GD" - }, - { - "name":"Guadeloupe", - "dial_code":"+590", - "code":"GP" - }, - { - "name":"Guam", - "dial_code":"+1671", - "code":"GU" - }, - { - "name":"Guatemala", - "dial_code":"+502", - "code":"GT" - }, - { - "name":"Guinea", - "dial_code":"+224", - "code":"GN" - }, - { - "name":"Guinea-Bissau", - "dial_code":"+245", - "code":"GW" - }, - { - "name":"Guyana", - "dial_code":"+595", - "code":"GY" - }, - { - "name":"Haiti", - "dial_code":"+509", - "code":"HT" - }, - { - "name":"Honduras", - "dial_code":"+504", - "code":"HN" - }, - { - "name":"Hungary", - "dial_code":"+36", - "code":"HU" - }, - { - "name":"Iceland", - "dial_code":"+354", - "code":"IS" - }, - { - "name":"India", - "dial_code":"+91", - "code":"IN" - }, - { - "name":"Indonesia", - "dial_code":"+62", - "code":"ID" - }, - { - "name":"Iraq", - "dial_code":"+964", - "code":"IQ" - }, - { - "name":"Ireland", - "dial_code":"+353", - "code":"IE" - }, - { - "name":"Israel", - "dial_code":"+972", - "code":"IL" - }, - { - "name":"Italy", - "dial_code":"+39", - "code":"IT" - }, - { - "name":"Jamaica", - "dial_code":"+1876", - "code":"JM" - }, - { - "name":"Japan", - "dial_code":"+81", - "code":"JP" - }, - { - "name":"Jordan", - "dial_code":"+962", - "code":"JO" - }, - { - "name":"Kazakhstan", - "dial_code":"+7 7", - "code":"KZ" - }, - { - "name":"Kenya", - "dial_code":"+254", - "code":"KE" - }, - { - "name":"Kiribati", - "dial_code":"+686", - "code":"KI" - }, - { - "name":"Kuwait", - "dial_code":"+965", - "code":"KW" - }, - { - "name":"Kyrgyzstan", - "dial_code":"+996", - "code":"KG" - }, - { - "name":"Latvia", - "dial_code":"+371", - "code":"LV" - }, - { - "name":"Lebanon", - "dial_code":"+961", - "code":"LB" - }, - { - "name":"Lesotho", - "dial_code":"+266", - "code":"LS" - }, - { - "name":"Liberia", - "dial_code":"+231", - "code":"LR" - }, - { - "name":"Liechtenstein", - "dial_code":"+423", - "code":"LI" - }, - { - "name":"Lithuania", - "dial_code":"+370", - "code":"LT" - }, - { - "name":"Luxembourg", - "dial_code":"+352", - "code":"LU" - }, - { - "name":"Madagascar", - "dial_code":"+261", - "code":"MG" - }, - { - "name":"Malawi", - "dial_code":"+265", - "code":"MW" - }, - { - "name":"Malaysia", - "dial_code":"+60", - "code":"MY" - }, - { - "name":"Maldives", - "dial_code":"+960", - "code":"MV" - }, - { - "name":"Mali", - "dial_code":"+223", - "code":"ML" - }, - { - "name":"Malta", - "dial_code":"+356", - "code":"MT" - }, - { - "name":"Marshall Islands", - "dial_code":"+692", - "code":"MH" - }, - { - "name":"Martinique", - "dial_code":"+596", - "code":"MQ" - }, - { - "name":"Mauritania", - "dial_code":"+222", - "code":"MR" - }, - { - "name":"Mauritius", - "dial_code":"+230", - "code":"MU" - }, - { - "name":"Mayotte", - "dial_code":"+262", - "code":"YT" - }, - { - "name":"Mexico", - "dial_code":"+52", - "code":"MX" - }, - { - "name":"Monaco", - "dial_code":"+377", - "code":"MC" - }, - { - "name":"Mongolia", - "dial_code":"+976", - "code":"MN" - }, - { - "name":"Montenegro", - "dial_code":"+382", - "code":"ME" - }, - { - "name":"Montserrat", - "dial_code":"+1664", - "code":"MS" - }, - { - "name":"Morocco", - "dial_code":"+212", - "code":"MA" - }, - { - "name":"Myanmar", - "dial_code":"+95", - "code":"MM" - }, - { - "name":"Namibia", - "dial_code":"+264", - "code":"NA" - }, - { - "name":"Nauru", - "dial_code":"+674", - "code":"NR" - }, - { - "name":"Nepal", - "dial_code":"+977", - "code":"NP" - }, - { - "name":"Netherlands", - "dial_code":"+31", - "code":"NL" - }, - { - "name":"Netherlands Antilles", - "dial_code":"+599", - "code":"AN" - }, - { - "name":"New Caledonia", - "dial_code":"+687", - "code":"NC" - }, - { - "name":"New Zealand", - "dial_code":"+64", - "code":"NZ" - }, - { - "name":"Nicaragua", - "dial_code":"+505", - "code":"NI" - }, - { - "name":"Niger", - "dial_code":"+227", - "code":"NE" - }, - { - "name":"Nigeria", - "dial_code":"+234", - "code":"NG" - }, - { - "name":"Niue", - "dial_code":"+683", - "code":"NU" - }, - { - "name":"Norfolk Island", - "dial_code":"+672", - "code":"NF" - }, - { - "name":"Northern Mariana Islands", - "dial_code":"+1670", - "code":"MP" - }, - { - "name":"Norway", - "dial_code":"+47", - "code":"NO" - }, - { - "name":"Oman", - "dial_code":"+968", - "code":"OM" - }, - { - "name":"Pakistan", - "dial_code":"+92", - "code":"PK" - }, - { - "name":"Palau", - "dial_code":"+680", - "code":"PW" - }, - { - "name":"Panama", - "dial_code":"+507", - "code":"PA" - }, - { - "name":"Papua New Guinea", - "dial_code":"+675", - "code":"PG" - }, - { - "name":"Paraguay", - "dial_code":"+595", - "code":"PY" - }, - { - "name":"Peru", - "dial_code":"+51", - "code":"PE" - }, - { - "name":"Philippines", - "dial_code":"+63", - "code":"PH" - }, - { - "name":"Poland", - "dial_code":"+48", - "code":"PL" - }, - { - "name":"Portugal", - "dial_code":"+351", - "code":"PT" - }, - { - "name":"Puerto Rico", - "dial_code":"+1939", - "code":"PR" - }, - { - "name":"Qatar", - "dial_code":"+974", - "code":"QA" - }, - { - "name":"Romania", - "dial_code":"+40", - "code":"RO" - }, - { - "name":"Rwanda", - "dial_code":"+250", - "code":"RW" - }, - { - "name":"Samoa", - "dial_code":"+685", - "code":"WS" - }, - { - "name":"San Marino", - "dial_code":"+378", - "code":"SM" - }, - { - "name":"Saudi Arabia", - "dial_code":"+966", - "code":"SA" - }, - { - "name":"Senegal", - "dial_code":"+221", - "code":"SN" - }, - { - "name":"Serbia", - "dial_code":"+381", - "code":"RS" - }, - { - "name":"Seychelles", - "dial_code":"+248", - "code":"SC" - }, - { - "name":"Sierra Leone", - "dial_code":"+232", - "code":"SL" - }, - { - "name":"Singapore", - "dial_code":"+65", - "code":"SG" - }, - { - "name":"Slovakia", - "dial_code":"+421", - "code":"SK" - }, - { - "name":"Slovenia", - "dial_code":"+386", - "code":"SI" - }, - { - "name":"Solomon Islands", - "dial_code":"+677", - "code":"SB" - }, - { - "name":"South Africa", - "dial_code":"+27", - "code":"ZA" - }, - { - "name":"South Georgia and the South Sandwich Islands", - "dial_code":"+500", - "code":"GS" - }, - { - "name":"Spain", - "dial_code":"+34", - "code":"ES" - }, - { - "name":"Sri Lanka", - "dial_code":"+94", - "code":"LK" - }, - { - "name":"Sudan", - "dial_code":"+249", - "code":"SD" - }, - { - "name":"Suriname", - "dial_code":"+597", - "code":"SR" - }, - { - "name":"Swaziland", - "dial_code":"+268", - "code":"SZ" - }, - { - "name":"Sweden", - "dial_code":"+46", - "code":"SE" - }, - { - "name":"Switzerland", - "dial_code":"+41", - "code":"CH" - }, - { - "name":"Tajikistan", - "dial_code":"+992", - "code":"TJ" - }, - { - "name":"Thailand", - "dial_code":"+66", - "code":"TH" - }, - { - "name":"Togo", - "dial_code":"+228", - "code":"TG" - }, - { - "name":"Tokelau", - "dial_code":"+690", - "code":"TK" - }, - { - "name":"Tonga", - "dial_code":"+676", - "code":"TO" - }, - { - "name":"Trinidad and Tobago", - "dial_code":"+1868", - "code":"TT" - }, - { - "name":"Tunisia", - "dial_code":"+216", - "code":"TN" - }, - { - "name":"Turkey", - "dial_code":"+90", - "code":"TR" - }, - { - "name":"Turkmenistan", - "dial_code":"+993", - "code":"TM" - }, - { - "name":"Turks and Caicos Islands", - "dial_code":"+1649", - "code":"TC" - }, - { - "name":"Tuvalu", - "dial_code":"+688", - "code":"TV" - }, - { - "name":"Uganda", - "dial_code":"+256", - "code":"UG" - }, - { - "name":"Ukraine", - "dial_code":"+380", - "code":"UA" - }, - { - "name":"United Arab Emirates", - "dial_code":"+971", - "code":"AE" - }, - { - "name":"United Kingdom", - "dial_code":"+44", - "code":"GB" - }, - { - "name":"United States", - "dial_code":"+1", - "code":"US" - }, - { - "name":"Uruguay", - "dial_code":"+598", - "code":"UY" - }, - { - "name":"Uzbekistan", - "dial_code":"+998", - "code":"UZ" - }, - { - "name":"Vanuatu", - "dial_code":"+678", - "code":"VU" - }, - { - "name":"Wallis and Futuna", - "dial_code":"+681", - "code":"WF" - }, - { - "name":"Yemen", - "dial_code":"+967", - "code":"YE" - }, - { - "name":"Zambia", - "dial_code":"+260", - "code":"ZM" - }, - { - "name":"Zimbabwe", - "dial_code":"+263", - "code":"ZW" - }, - { - "name":"land Islands", - "dial_code":"", - "code":"AX" - }, - { - "name":"Antarctica", - "dial_code":null, - "code":"AQ" - }, - { - "name":"Bolivia, Plurinational State of", - "dial_code":"+591", - "code":"BO" - }, - { - "name":"Brunei Darussalam", - "dial_code":"+673", - "code":"BN" - }, - { - "name":"Cocos (Keeling) Islands", - "dial_code":"+61", - "code":"CC" - }, - { - "name":"Congo, The Democratic Republic of the", - "dial_code":"+243", - "code":"CD" - }, - { - "name":"Cote d'Ivoire", - "dial_code":"+225", - "code":"CI" - }, - { - "name":"Falkland Islands (Malvinas)", - "dial_code":"+500", - "code":"FK" - }, - { - "name":"Guernsey", - "dial_code":"+44", - "code":"GG" - }, - { - "name":"Holy See (Vatican City State)", - "dial_code":"+379", - "code":"VA" - }, - { - "name":"Hong Kong", - "dial_code":"+852", - "code":"HK" - }, - { - "name":"Iran, Islamic Republic of", - "dial_code":"+98", - "code":"IR" - }, - { - "name":"Isle of Man", - "dial_code":"+44", - "code":"IM" - }, - { - "name":"Jersey", - "dial_code":"+44", - "code":"JE" - }, - { - "name":"Korea, Democratic People's Republic of", - "dial_code":"+850", - "code":"KP" - }, - { - "name":"Korea, Republic of", - "dial_code":"+82", - "code":"KR" - }, - { - "name":"Lao People's Democratic Republic", - "dial_code":"+856", - "code":"LA" - }, - { - "name":"Libyan Arab Jamahiriya", - "dial_code":"+218", - "code":"LY" - }, - { - "name":"Macao", - "dial_code":"+853", - "code":"MO" - }, - { - "name":"Macedonia, The Former Yugoslav Republic of", - "dial_code":"+389", - "code":"MK" - }, - { - "name":"Micronesia, Federated States of", - "dial_code":"+691", - "code":"FM" - }, - { - "name":"Moldova, Republic of", - "dial_code":"+373", - "code":"MD" - }, - { - "name":"Mozambique", - "dial_code":"+258", - "code":"MZ" - }, - { - "name":"Palestinian Territory, Occupied", - "dial_code":"+970", - "code":"PS" - }, - { - "name":"Pitcairn", - "dial_code":"+872", - "code":"PN" - }, - { - "name":"Réunion", - "dial_code":"+262", - "code":"RE" - }, - { - "name":"Russia", - "dial_code":"+7", - "code":"RU" - }, - { - "name":"Saint Barthélemy", - "dial_code":"+590", - "code":"BL" - }, - { - "name":"Saint Helena, Ascension and Tristan Da Cunha", - "dial_code":"+290", - "code":"SH" - }, - { - "name":"Saint Kitts and Nevis", - "dial_code":"+1869", - "code":"KN" - }, - { - "name":"Saint Lucia", - "dial_code":"+1758", - "code":"LC" - }, - { - "name":"Saint Martin", - "dial_code":"+590", - "code":"MF" - }, - { - "name":"Saint Pierre and Miquelon", - "dial_code":"+508", - "code":"PM" - }, - { - "name":"Saint Vincent and the Grenadines", - "dial_code":"+1784", - "code":"VC" - }, - { - "name":"Sao Tome and Principe", - "dial_code":"+239", - "code":"ST" - }, - { - "name":"Somalia", - "dial_code":"+252", - "code":"SO" - }, - { - "name":"Svalbard and Jan Mayen", - "dial_code":"+47", - "code":"SJ" - }, - { - "name":"Syrian Arab Republic", - "dial_code":"+963", - "code":"SY" - }, - { - "name":"Taiwan, Province of China", - "dial_code":"+886", - "code":"TW" - }, - { - "name":"Tanzania, United Republic of", - "dial_code":"+255", - "code":"TZ" - }, - { - "name":"Timor-Leste", - "dial_code":"+670", - "code":"TL" - }, - { - "name":"Venezuela, Bolivarian Republic of", - "dial_code":"+58", - "code":"VE" - }, - { - "name":"Viet Nam", - "dial_code":"+84", - "code":"VN" - }, - { - "name":"Virgin Islands, British", - "dial_code":"+1284", - "code":"VG" - }, - { - "name":"Virgin Islands, U.S.", - "dial_code":"+1340", - "code":"VI" - } -] \ No newline at end of file diff --git a/osint/disposable_num_providers.json b/osint/disposable_num_providers.json new file mode 100644 index 0000000..bb9f23a --- /dev/null +++ b/osint/disposable_num_providers.json @@ -0,0 +1,102 @@ +[ + { + "site": "hs3x.com", + "request": "site:\"hs3x.com\" intext:\"+$n\"", + "stop": 1 + }, + { + "site": "receive-sms-now.com", + "request": "site:\"receive-sms-now.com\" intext:\"$n\"", + "stop": 1 + }, + { + "site": "smslisten.com", + "request": "site:\"smslisten.com\" intext:\"$n\"", + "stop": 1 + }, + { + "site": "smsnumbersonline.com", + "request": "site:\"smsnumbersonline.com\" intext:\"+$n\"", + "stop": 1 + }, + { + "site": "freesmscode.com", + "request": "site:\"freesmscode.com\" intext:\"+$n\"", + "stop": 1 + }, + { + "site": "catchsms.com", + "request": "site:\"catchsms.com\" intext:\"+$n\"", + "stop": 1 + }, + { + "site": "smstibo.com", + "request": "site:\"smstibo.com\" intext:\"+$n\"", + "stop": 1 + }, + { + "site": "smsreceiving.com", + "request": "site:\"smsreceiving.com\" intext:\"+$n\"", + "stop": 1 + }, + { + "site": "getfreesmsnumber.com", + "request": "site:\"getfreesmsnumber.com\" intext:\"+$n\"", + "stop": 1 + }, + { + "site": "sellaite.com", + "request": "site:\"sellaite.com\" intext:\"+$n\"", + "stop": 1 + }, + { + "site": "receive-sms-online.info", + "request": "site:\"receive-sms-online.info\" intext:\"+$n\"", + "stop": 1 + }, + { + "site": "receivesmsonline.com", + "request": "site:\"receivesmsonline.com\" intext:\"+$n\"", + "stop": 1 + }, + { + "site": "receive-a-sms.com", + "request": "site:\"receive-a-sms.com\" intext:\"+$n\"", + "stop": 1 + }, + { + "site": "sms-receive.net", + "request": "site:\"sms-receive.net\" intext:\"+$n\"", + "stop": 1 + }, + { + "site": "receivefreesms.com", + "request": "site:\"receivefreesms.com\" intext:\"+$n\"", + "stop": 1 + }, + { + "site": "receive-sms.com", + "request": "site:\"receive-sms.com\" intext:\"+$n\"", + "stop": 1 + }, + { + "site": "receivetxt.com", + "request": "site:\"receivetxt.com\" $n", + "stop": 1 + }, + { + "site": "freephonenum.com", + "request": "site:\"freephonenum.com\" intext:\"$n\"", + "stop": 1 + }, + { + "site": "freesmsverification.com", + "request": "site:\"freesmsverification.com\" $n", + "stop": 1 + }, + { + "site": "receive-sms-online.com", + "request": "site:\"receive-sms-online.com\" intext:\"$n\"", + "stop": 1 + } +] diff --git a/osint/individuals.json b/osint/individuals.json new file mode 100644 index 0000000..abd159c --- /dev/null +++ b/osint/individuals.json @@ -0,0 +1,20 @@ +[ + { + "site": "numinfo.net", + "request": "site:\"numinfo.net\" intext:\"$n\" | $i", + "dialCode": null, + "stop": 2 + }, + { + "site": "sync.me", + "request": "site:\"sync.me\" intext:\"$n\" | $i", + "dialCode": null, + "stop": 1 + }, + { + "site": "whocallsyou.de", + "request": "site:\"whocallsyou.de\" intext:\"0$n\"", + "dialCode": null, + "stop": 1 + } +] diff --git a/osint/reputation.json b/osint/reputation.json new file mode 100644 index 0000000..47726f0 --- /dev/null +++ b/osint/reputation.json @@ -0,0 +1,12 @@ +[ + { + "title": "reputation report on whosenumber.info", + "request": "site:\"whosenumber.info\" intext:\"$n\" intitle:\"who called\"", + "stop": 1 + }, + { + "title": "phone fraud footprints", + "request": "intitle:\"Phone Fraud\" intext:\"$n\" | \"$n\"", + "stop": 5 + } +] diff --git a/osint/social_medias.json b/osint/social_medias.json new file mode 100644 index 0000000..f36adfb --- /dev/null +++ b/osint/social_medias.json @@ -0,0 +1,22 @@ +[ + { + "site": "facebook.com", + "request": "site:\"facebook.com\" intext:\"$i\" | intext:\"$n\"", + "stop": 5 + }, + { + "site": "twitter.com", + "request": "site:\"twitter.com\" intext:\"$i\" | intext:\"$n\"", + "stop": 5 + }, + { + "site": "linkedin.com", + "request": "site:\"linkedin.com\" intext:\"$i\" | intext:\"$n\"", + "stop": 5 + }, + { + "site": "instagram.com", + "request": "site:\"instagram.com\" intext:\"$i\" | intext:\"$n\"", + "stop": 5 + } +] diff --git a/phoneinfoga.py b/phoneinfoga.py index 1ccbaa7..4291ce6 100644 --- a/phoneinfoga.py +++ b/phoneinfoga.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -__version__ = '0.8-dev' +__version__ = '0.9-dev' def banner(): print " ___ _ _____ __ " @@ -15,10 +15,10 @@ def banner(): print "\n \033[92m" banner() -print "\033[94m" import sys import argparse +import random parser = argparse.ArgumentParser(description= "Advanced information gathering tool for phone numbers (https://github.com/sundowndev/PhoneInfoga) version %s" % __version__, @@ -53,12 +53,11 @@ if args.update: print 'update' sys.exit() -import time -import hashlib -import json -import re - try: + import time + import hashlib + import json + import re import requests from bs4 import BeautifulSoup import html5lib @@ -66,21 +65,103 @@ try: from phonenumbers import carrier from phonenumbers import geocoder from phonenumbers import timezone - from googlesearch import search +except KeyboardInterrupt: + print '\033[91m[!] Exiting.' + sys.exit() except: - print code_error + 'Missing requirements. Try running pip install -r requirements.txt' + print '\033[91m[!] Missing requirements. Try running pip install -r requirements.txt' + sys.exit() scanners = ['any', 'all', 'numverify', 'ovh'] -def formatNumber(number): - return re.sub("(?:\+)?(?:[^[0-9]*)", "", number) +uagent=[] +uagent.append("Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0) Opera 12.14") +uagent.append("Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:26.0) Gecko/20100101 Firefox/26.0") +uagent.append("Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3") +uagent.append("Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)") +uagent.append("Mozilla/5.0 (Windows NT 6.2) AppleWebKit/535.7 (KHTML, like Gecko) Comodo_Dragon/16.1.1.0 Chrome/16.0.912.63 Safari/535.7") +uagent.append("Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)") +uagent.append("Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1") +uagent.append("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0") + +number = '' # Full number format +localNumber = '' # Local number format +internationalNumber = '' # International numberformat +numberCountryCode = '' # Dial code; e.g:"+33" +numberCountry = '' # Country; e.g:France + +googleAbuseToken = '' +customFormatting = '' + +def search(req, stop): + global googleAbuseToken + global uagent + + chosenUserAgent = random.choice(uagent) + + s = requests.Session() + headers = { + 'User-Agent': chosenUserAgent, + 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', + 'Accept-Language': 'en-us,en;q=0.5', + 'Accept-Encoding': 'gzip,deflate', + 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', + 'Keep-Alive': '115', + 'Connection': 'keep-alive', + 'Cookie': 'Cookie: CGIC=Ij90ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjg; CONSENT=YES+RE.fr+20150809-08-0; 1P_JAR=2018-11-28-14; NID=148=aSdSHJz71rufCokaUC93nH3H7lOb8E7BNezDWV-PyyiHTXqWK5Y5hsvj7IAzhZAK04-QNTXjYoLXVu_eiAJkiE46DlNn6JjjgCtY-7Fr0I4JaH-PZRb7WFgSTjiFqh0fw2cCWyN69DeP92dzMd572tQW2Z1gPwno3xuPrYC1T64wOud1DjZDhVAZkpk6UkBrU0PBcnLWL7YdL6IbEaCQlAI9BwaxoH_eywPVyS9V; SID=uAYeu3gT23GCz-ktdGInQuOSf-5SSzl3Plw11-CwsEYY0mqJLSiv7tFKeRpB_5iz8SH5lg.; HSID=AZmH_ctAfs0XbWOCJ; SSID=A0PcRJSylWIxJYTq_; APISID=HHB2bKfJ-2ZUL5-R/Ac0GK3qtM8EHkloNw; SAPISID=wQoxetHBpyo4pJKE/A2P6DUM9zGnStpIVt; SIDCC=ABtHo-EhFAa2AJrJIUgRGtRooWyVK0bAwiQ4UgDmKamfe88xOYBXM47FoL5oZaTxR3H-eOp7-rE; OTZ=4671861_52_52_123900_48_436380; OGPC=873035776-8:; OGP=-873035776:;' + } + + try: + URL = 'https://www.google.com/search?tbs=li:1&q=%s&gws_rd=ssl' % (req) + r = s.get(URL + googleAbuseToken, headers=headers) + + while r.status_code == 503: + 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 : %s' % URL + print '\n' + code_info + 'Need help ? Read the doc at https://github.com/sundowndev/PhoneInfoga' + token = raw_input('\nGOOGLE_ABUSE_EXEMPTION=') + googleAbuseToken = '&google_abuse=' + token + r = s.get(URL + googleAbuseToken, headers=headers) + + soup = BeautifulSoup(r.content, 'html.parser') + results = soup.find("div", id="search").find_all("div", class_="g") + + links=[] + counter=0 + + for result in results: + counter += 1 + + if int(counter) > int(stop): + break + + url = result.find("a").get('href') + url = re.sub(r'(?:\/url\?q\=)', '', url) + url = re.sub(r'(?:\/url\?url\=)', '', url) + url = re.sub(r'(?:\&sa\=)(?:.*)', '', url) + url = re.sub(r'(?:\&rct\=)(?:.*)', '', url) + + if re.match(r"^(/search\?q=)", url) is not None: + url = 'https://google.com' + url + + links.append(url) + + return links + except: + print code_error + 'Request failed. Please retry or open an issue on GitHub.' + +def formatNumber(InputNumber): + return re.sub("(?:\+)?(?:[^[0-9]*)", "", InputNumber) + +def localScan(InputNumber): + global number + global localNumber + global internationalNumber + global numberCountryCode + global numberCountry -def localScan(number): print code_info + 'Running local scan...' - PhoneNumber = dict(); - - FormattedPhoneNumber = "+" + formatNumber(number) + FormattedPhoneNumber = "+" + formatNumber(InputNumber) try: PhoneNumberObject = phonenumbers.parse(FormattedPhoneNumber, None) @@ -90,15 +171,18 @@ def localScan(number): if not phonenumbers.is_valid_number(PhoneNumberObject): return False - PhoneNumber['full'] = phonenumbers.format_number(PhoneNumberObject, phonenumbers.PhoneNumberFormat.E164).replace('+', '') - PhoneNumber['country'] = 'FR' - PhoneNumber['countryCode'] = phonenumbers.format_number(PhoneNumberObject, phonenumbers.PhoneNumberFormat.INTERNATIONAL).split(' ')[0] - PhoneNumber['number'] = phonenumbers.format_number(PhoneNumberObject, phonenumbers.PhoneNumberFormat.E164).replace(PhoneNumber['countryCode'], '') - PhoneNumber['international'] = phonenumbers.format_number(PhoneNumberObject, phonenumbers.PhoneNumberFormat.INTERNATIONAL) + number = phonenumbers.format_number(PhoneNumberObject, phonenumbers.PhoneNumberFormat.E164).replace('+', '') + numberCountryCode = phonenumbers.format_number(PhoneNumberObject, phonenumbers.PhoneNumberFormat.INTERNATIONAL).split(' ')[0] - print code_result + 'International format: %s' % PhoneNumber['international'] - print code_result + 'Local format: 0%s' % PhoneNumber['number'] - print code_result + 'Country code: %s' % PhoneNumber['countryCode'] + countryRequest = json.loads(requests.request('GET', 'https://restcountries.eu/rest/v2/callingcode/%s' % numberCountryCode.replace('+', '')).content) + numberCountry = countryRequest[0]['alpha2Code'] + + localNumber = phonenumbers.format_number(PhoneNumberObject, phonenumbers.PhoneNumberFormat.E164).replace(numberCountryCode, '') + internationalNumber = phonenumbers.format_number(PhoneNumberObject, phonenumbers.PhoneNumberFormat.INTERNATIONAL) + + print code_result + 'International format: %s' % internationalNumber + print code_result + 'Local format: 0%s' % localNumber + print code_result + 'Country code: %s' % numberCountryCode print code_result + 'Location: %s' % geocoder.description_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') @@ -110,9 +194,9 @@ def localScan(number): else: print code_warning + 'The number is valid but might not be possible.' - return PhoneNumber +def numverifyScan(): + global number -def numverifyScan(PhoneNumber): if not args.scanner == 'numverify' and not args.scanner == 'all': return -1 @@ -127,14 +211,14 @@ def numverifyScan(PhoneNumber): break; apiKey = hashlib.md5() - apiKey.update(PhoneNumber + requestSecret) + apiKey.update(number + requestSecret) apiKey = apiKey.hexdigest() headers = { 'host': "numverify.com", 'connection': "keep-alive", 'content-length': "49", - 'accept': "application/json, text/javascript, */*; q=0.01", + 'accept': "application/json", 'origin': "https://numverify.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", @@ -145,7 +229,7 @@ def numverifyScan(PhoneNumber): 'cache-control': "no-cache" } - response = requests.request("GET", "https://numverify.com/php_helper_scripts/phone_api.php?secret_key=" + apiKey + "&number=" + PhoneNumber, data="", headers=headers) + response = requests.request("GET", "https://numverify.com/php_helper_scripts/phone_api.php?secret_key=" + apiKey + "&number=" + number, data="", headers=headers) if response.content == "Unauthorized" or response.status_code != 200: print(code_error + "An error occured while calling the API (bad request or wrong api key).") @@ -170,13 +254,16 @@ def numverifyScan(PhoneNumber): elif data["line_type"] == 'mobile': print(code_warning + "This is most likely a mobile, but it can still be a VoIP.") -def ovhScan(country, number): +def ovhScan(): + global localNumber + global numberCountry + if not args.scanner == 'ovh' and not args.scanner == 'all': return -1 print code_info + 'Running OVH scan...' - querystring = { "country": country.lower() } + querystring = { "country": numberCountry.lower() } headers = { 'accept': "application/json", @@ -188,7 +275,7 @@ def ovhScan(country, number): data = json.loads(response.content) if isinstance(data, list): - askedNumber = "0" + number.replace(number[-4:], 'xxxx') + askedNumber = "0" + localNumber.replace(localNumber[-4:], 'xxxx') for voip_number in data: if voip_number['number'] == askedNumber: @@ -198,159 +285,223 @@ def ovhScan(country, number): print(code_result + "Zip code: " + voip_number['zipCode'] if voip_number['zipCode'] is not None else '') askForExit() -def osintScan(countryCode, number, internationalNumber): +def osintIndividualScan(): + global number + global internationalNumber + global numberCountryCode + global customFormatting + + dorks = json.load(open('osint/individuals.json')) + + for dork in dorks: + if dork['dialCode'] is None or dork['dialCode'] == numberCountryCode: + if customFormatting: + dorkRequest = dork['request'].replace('$n', number).replace('$i', internationalNumber) + ' | intext:"%s"' % (customFormatting) + else: + dorkRequest = dork['request'].replace('$n', number).replace('$i', internationalNumber) + + print(code_info + "Searching for footprints on %s..." % dork['site']) + for result in search(dorkRequest, stop=dork['stop']): + if result: + print(code_result + "URL: " + result) + else: + return -1 + +def osintReputationScan(): + global number + global internationalNumber + global customFormatting + + dorks = json.load(open('osint/reputation.json')) + + for dork in dorks: + if customFormatting: + dorkRequest = dork['request'].replace('$n', number).replace('$i', internationalNumber) + ' | intext:"%s"' % (customFormatting) + else: + dorkRequest = dork['request'].replace('$n', number).replace('$i', internationalNumber) + + print(code_info + "Searching for %s..." % dork['title']) + for result in search(dorkRequest, stop=dork['stop']): + if result: + print(code_result + "URL: " + result) + +def osintSocialMediaScan(): + global number + global internationalNumber + global customFormatting + + dorks = json.load(open('osint/social_medias.json')) + + for dork in dorks: + if customFormatting: + dorkRequest = dork['request'].replace('$n', number).replace('$i', internationalNumber) + ' | intext:"%s"' % (customFormatting) + else: + dorkRequest = dork['request'].replace('$n', number).replace('$i', internationalNumber) + + print(code_info + "Searching for footprints on %s..." % dork['site']) + for result in search(dorkRequest, stop=dork['stop']): + if result: + print(code_result + "URL: " + result) + +def osintDisposableNumScan(): + global number + + dorks = json.load(open('osint/disposable_num_providers.json')) + + for dork in dorks: + dorkRequest = dork['request'].replace('$n', number) + + print(code_info + "Searching for footprints on %s..." % dork['site']) + for result in search(dorkRequest, stop=dork['stop']): + if result: + print(code_result + "Result found: %s" % dork['site']) + print(code_result + "URL: " + result) + askForExit() + +def osintScan(): + global number + global localNumber + global internationalNumber + global numberCountryCode + global numberCountry + global customFormatting + if not args.osint: return -1 - print code_info + 'Running OSINT footprint reconnaissance...' # Whitepages print(code_info + "Generating scan URL on 411.com...") print code_result + "Scan URL: https://www.411.com/phone/%s" % internationalNumber.replace('+', '').replace(' ', '-') - try: - # Social profiles: facebook, twitter, linkedin, instagram - print(code_info + "Searching for footprints on facebook.com... (limit=5)") - for result in search('site:facebook.com intext:"%s" | "%s"' % (number,number), stop=5): - if result: - print(code_result + "Result found: " + result) + askingCustomPayload = raw_input(code_info + 'Would you like to use an additional format for this number ? (y/N) ') - print(code_info + "Searching for footprints on twitter.com... (limit=5)") - for result in search('site:twitter.com intext:"%s" | "%s"' % (number,number), stop=5): - if result: - print(code_result + "Result found: " + result) + if askingCustomPayload == 'y' or askingCustomPayload == 'yes': + customFormatting = raw_input(code_info + 'Custom format: ') - print(code_info + "Searching for footprints on linkedin.com... (limit=5)") - for result in search('site:linkedin.com intext:"%s" | "%s"' % (number,number), stop=5): - if result: - print(code_result + "Result found: " + result) + print(code_info + '---- Web pages footprints ----') - print(code_info + "Searching for footprints on instagram.com... (limit=5)") - for result in search('site:instagram.com intext:"%s" | "%s"' % (number,number), stop=5): - if result: - print(code_result + "Result found: " + result) + print(code_info + "Searching for footprints on web pages... (limit=5)") + if customFormatting: + req = '%s | intext:"%s" | intext:"%s" | intext:"%s"' % (number,number,internationalNumber,customFormatting) + else: + req = '%s | intext:"%s" | intext:"%s"' % (number,number,internationalNumber) + for result in search(req, stop=5): + if result: + print(code_result + "Result found: " + result) - print code_warning + "Waiting 10 sec before sending new requests to avoid being blacklisted..." - time.sleep(10) + # Documents + print(code_info + "Searching for documents... (limit=10)") + if customFormatting: + req = 'intext:"%s" | intext:"%s" | intext:"%s" ext:doc | ext:docx | ext:odt | ext:pdf | ext:rtf | ext:sxw | ext:psw | ext:ppt | ext:pptx | ext:pps | ext:csv | ext:txt' % (number,internationalNumber,customFormatting) + else: + req = 'intext:"%s" | intext:"%s" ext:doc | ext:docx | ext:odt | ext:pdf | ext:rtf | ext:sxw | ext:psw | ext:ppt | ext:pptx | ext:pps | ext:csv | ext:txt' % (number,internationalNumber) + for result in search('intext:"%s" | intext:"%s" ext:doc | ext:docx | ext:odt | ext:pdf | ext:rtf | ext:sxw | ext:psw | ext:ppt | ext:pptx | ext:pps | ext:csv | ext:txt' % (number,internationalNumber), stop=10): + if result: + print(code_result + "Result found: " + result) - # Websites - # + print(code_info + '---- Reputation footprints ----') - # Documents - print(code_info + "Searching for documents... (limit=5)") - for result in search('intext:"%s" | intext:"%s" 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:html' % (number,number), stop=5): - if result: - print(code_result + "Result found: " + result) + osintReputationScan() - print code_warning + "Waiting 10 sec before sending new requests to avoid being blacklisted..." - time.sleep(10) + print(code_info + "Generating URL on scamcallfighters.com...") + print code_result + 'http://www.scamcallfighters.com/search-phone-%s.html' % number - print(code_info + "Searching for documents on washington.edu... (limit=5)") - UWReq = search('site:washington.edu intext:"%s" | "%s"' % (number,number), stop=5) - if len(list(UWReq)) > 0: - print code_info + 'Found %s results' % len(list(UWReq)) - for result in UWReq: - if result: - print(code_result + "Result found: " + result) + tmpNumAsk = raw_input(code_info + "Would you like to search for temporary number providers footprints ? (Y/n) ") - # Reputation - print(code_info + "Searching for reputation report on whosenumber.info... (limit=1)") - for result in search('site:whosenumber.info intext:"%s" intitle:"who called"' % number, stop=1): - if result: - print(code_result + "Found 1 result on whosenumber.info.") - print(code_info + "This usually mean you are not the first to search about this number. Check the URL for eventual comments.") - print(code_result + "URL: " + result) + if tmpNumAsk.lower() != 'n' and tmpNumAsk.lower() != 'no': + print(code_info + '---- Temporary number providers footprints ----') - print(code_info + "Searching for Phone Fraud footprints... (limit=5)") - for result in search('intitle:"Phone Fraud" intext:"%s" | "%s"' % (number,number), stop=5): - if result: - print(code_result + "Result found: " + result) - print(code_info + "This usually mean you are not the first to search about this number. Check the URL for eventual comments.") - - # Temporary number providers - print(code_info + "Searching for results on hs3x.com... (limit=1)") - for result in search('site:"hs3x.com" intext:"+%s"' % number, stop=1): - if result: - print(code_result + "Found a temporary number provider: hs3x.com") - print(code_result + "URL: " + result) + print(code_info + "Searching for phone number on tempophone.com...") + response = requests.request("GET", "https://tempophone.com/api/v1/phones") + data = json.loads(response.content) + for voip_number in data['objects']: + if voip_number['phone'] == formatNumber(number): + print(code_result + "Found a temporary number provider: tempophone.com") askForExit() - print(code_info + "Searching for results on receive-sms-now.com... (limit=1)") - for result in search('site:"receive-sms-now.com" intext:"+%s"' % number, stop=1): - if result: - print(code_result + "Found a temporary number provider: receive-sms-now.com") - print(code_result + "URL: " + result) - askForExit() + osintDisposableNumScan() - print(code_info + "Searching for results on receive-sms-online.com... (limit=1)") - for result in search('site:"receive-sms-online.com" intext:"+%s"' % number, stop=1): - if result: - print(code_result + "Found a temporary number provider: receive-sms-online.com") - print(code_result + "URL: " + result) - askForExit() - except: - print code_error + 'Impossible to fetch Google search API. This usually mean you\'re temporary blacklisted.' + print(code_info + '---- Social media footprints ----') - print(code_info + "Searching for phone number on tempophone.com...") - response = requests.request("GET", "https://tempophone.com/api/v1/phones") - data = json.loads(response.content) - for voip_number in data['objects']: - if voip_number['phone'] == formatNumber(number): - print(code_result + "Found a temporary number provider: tempophone.com") - askForExit() + osintSocialMediaScan() + + print(code_info + '---- Phone books footprints ----') + + if numberCountryCode == '+1': + print(code_info + "Generating URL on True People... ") + print code_result + 'https://www.truepeoplesearch.com/results?phoneno=%s' % internationalNumber.replace(' ', '') + + osintIndividualScan() def askForExit(): if not args.output: - user_input = raw_input(code_info + "Continue scanning ? (Y/n): ") + user_input = raw_input(code_info + "Continue scanning ? (y/N) ") - if user_input.lower() == 'n': + if user_input.lower() == 'y' or user_input.lower() == 'yes': + return -1 + else: print code_info + "Good bye!" sys.exit() - else: - return -1 -def scanNumber(number): - print code_title + "[!] ---- Fetching informations for %s ---- [!]" % formatNumber(number) +def scanNumber(InputNumber): + print code_title + "[!] ---- Fetching informations for %s ---- [!]" % formatNumber(InputNumber) - PhoneNumber = localScan(number) + localScan(InputNumber) - if not PhoneNumber: - print(code_error + "Error: number " + formatNumber(number) + " is not valid. Skipping.") + global number + global localNumber + global internationalNumber + global numberCountryCode + global numberCountry + + if not number: + print(code_error + "Error: number " + formatNumber(InputNumber) + " is not valid. Skipping.") sys.exit() - numverifyScan(PhoneNumber['full']) - ovhScan(PhoneNumber['country'], PhoneNumber['number']) - osintScan(PhoneNumber['countryCode'], PhoneNumber['full'], PhoneNumber['international']) + numverifyScan() + ovhScan() + osintScan() + + print code_info + "Scan finished." print '\n' -# Verify scanner option -if not args.scanner in scanners: - print(code_error + "Error: scanner doesn't exists.") +try: + if args.output: + code_info = '[*] ' + code_warning = '(!) ' + code_result = '[+] ' + code_error = '[!] ' + code_title = '' + + if args.osint: + print '\033[91m[!] OSINT scanner is not available using output option (sorry).' + sys.exit() + + sys.stdout = args.output + banner() + else: + code_info = '\033[97m[*] ' + code_warning = '\033[93m(!) ' + code_result = '\033[1;32m[+] ' + code_error = '\033[91m[!] ' + code_title = '\033[1m\033[93m' + + # Verify scanner option + if not args.scanner in scanners: + print(code_error + "Error: scanner doesn't exists.") + sys.exit() + + if args.number: + scanNumber(args.number) + elif args.input: + for line in args.input.readlines(): + scanNumber(line) + + if args.output: + args.output.close() +except KeyboardInterrupt: + print(code_error + "Scan interrupted. Good bye!") sys.exit() - -if args.output: - code_info = '[*] ' - code_warning = '(!) ' - code_result = '[+] ' - code_error = '[!] ' - code_title = '' - - sys.stdout = args.output - banner() -else: - code_info = '\033[97m[*] ' - code_warning = '\033[93m(!) ' - code_result = '\033[1;32m[+] ' - code_error = '\033[91m[!] ' - code_title = '\033[1m\033[93m' - -if args.number: - scanNumber(args.number) -elif args.input: - for line in args.input.readlines(): - scanNumber(line) - -if args.output: - args.output.close() diff --git a/requirements.txt b/requirements.txt index 02ae170..ada83e1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,3 @@ requests bs4 html5lib phonenumbers -google diff --git a/tests/test.txt b/tests/list.txt similarity index 87% rename from tests/test.txt rename to tests/list.txt index 794367b..cc802f8 100644 --- a/tests/test.txt +++ b/tests/list.txt @@ -1,6 +1,6 @@ +856 20 99 453 217 +59172768361 -+33679368233 ++32474123456 +1 (541) 754-3010 +86 591 2284 8571 +7 496 4819375 diff --git a/todo.md b/todo.md deleted file mode 100644 index 085a378..0000000 --- a/todo.md +++ /dev/null @@ -1,15 +0,0 @@ -# Todo list - -- **Input feature: Done** -- **Output feature: Done** -- **OVH scanner (search for number range): Done** -- Update feature -- **Offline scan: Done** -- OSINT recon - - Search for social profiles (facebook, twitter, linkedin, instagram) - - Search for documents - - Search for websites - - Search for emails - - Search on 411 - - Search on hs3x - - Search on whosenumber