暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python 定位IP位置

生有可恋 2022-02-11
750

昨天挂了一个简易版蜜罐到公网IP上,第二天去检查收获,发现程序挂了。原因是会话提前终止,向对方发数据时失败。于是在调用send方法时加了个异常捕获。把“蜜罐”在外网挂了一天,收获了不少IP的“攻击”。


#!/usr/bin/python
# -*- coding: UTF-8 -*-


import socket
import time
import datetime


s = socket.socket()
port = 12345 # 设置端口
s.bind(('', port)) # 绑定端口


s.listen(20)
while True:
c,addr = s.accept()
day = datetime.datetime.now()
sday = datetime.datetime.strftime(day, '%Y-%m-%d %H:%M:%S')
print(sday, "\t", addr[0], flush=True)
try:
c.send('\n'.encode())
except:
pass
time.sleep(30)
c.close()



对收集到的IP做了去重处理,发现还是有不少。

bash$ cat *.log| awk '{print $3}' | sort | uniq


下一步,就是分析这些 IP 的地址位置了。网上有不少收费方案,这里选用的是免费方案。为了防止接口调用太频繁被封,人工加了个30秒的延时,反正数量不多,有时间等。


执行效果如下:



程序执行前,需要提前准备好一个文本文件存IP列表,程序执行时会读取IP,一行一个,代码如下:

import sys
import requests
import time


url = 'http://ip-api.com/json/'


f = open('ip.txt')


ip = f.readline()


while ip:
ss = url + ip.strip() + '?lang=zh-CN'
response = requests.get(ss)
d = {}
d = response.json()
if not d:
ip = f.readline()
time.sleep(30)
continue
print("%s, %s, %s, %s" % (d.get('query'), d.get('country'), d.get('regionName'), d.get('city')))
ip = f.readline()
time.sleep(30)


f.close()


文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论