├── main.py └── requirements.txt /main.py: -------------------------------------------------------------------------------- 1 | import requests 2 | from pyfiglet import Figlet 3 | import folium 4 | 5 | 6 | def get_info_by_ip(ip='127.0.0.1'): 7 | try: 8 | response = requests.get(url=f'http://ip-api.com/json/{ip}').json() 9 | # print(response) 10 | 11 | data = { 12 | '[IP]': response.get('query'), 13 | '[Int prov]': response.get('isp'), 14 | '[Org]': response.get('org'), 15 | '[Country]': response.get('country'), 16 | '[Region Name]': response.get('regionName'), 17 | '[City]': response.get('city'), 18 | '[ZIP]': response.get('zip'), 19 | '[Lat]': response.get('lat'), 20 | '[Lon]': response.get('lon'), 21 | } 22 | 23 | for k, v in data.items(): 24 | print(f'{k} : {v}') 25 | 26 | area = folium.Map(location=[response.get('lat'), response.get('lon')]) 27 | area.save(f'{response.get("query")}_{response.get("city")}.html') 28 | 29 | except requests.exceptions.ConnectionError: 30 | print('[!] Please check your connection!') 31 | 32 | 33 | def main(): 34 | preview_text = Figlet(font='slant') 35 | print(preview_text.renderText('IP INFO')) 36 | ip = input('Please enter a target IP: ') 37 | 38 | get_info_by_ip(ip=ip) 39 | 40 | 41 | if __name__ == '__main__': 42 | main() 43 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | folium==0.12.1.post1 2 | pyfiglet==0.8.post1 3 | requests==2.27.1 --------------------------------------------------------------------------------