昨天挂了一个简易版蜜罐到公网IP上,第二天去检查收获,发现程序挂了。原因是会话提前终止,向对方发数据时失败。于是在调用send方法时加了个异常捕获。把“蜜罐”在外网挂了一天,收获了不少IP的“攻击”。
#!/usr/bin/python# -*- coding: UTF-8 -*-import socketimport timeimport datetimes = 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:passtime.sleep(30)c.close()

对收集到的IP做了去重处理,发现还是有不少。
bash$ cat *.log| awk '{print $3}' | sort | uniq

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

程序执行前,需要提前准备好一个文本文件存IP列表,程序执行时会读取IP,一行一个,代码如下:
import sysimport requestsimport timeurl = '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)continueprint("%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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




