最近 有好多用户中了 “蠕虫”类病毒,所以应该对局域网 做下 监听,如对445 端口的扫描或访问记录。
说下思路:
- 监听本机所有网卡的 445 端口(本机不向外发送snmp)。
- 记录下访问本机445端口的IP,访问次数,访问时间。
- 按访问次数进行降序排序,访问本机次数有记录的,可以手动去查杀下。
因该脚本与Windows 共享冲突,可以在 服务里关闭 445 端口,再打开 该脚本。
结果 如下图所示。
输出的 记录如下。
代码如下
import os import socket # 导入 socket 模块 from threading import Thread import time import operator ADDRESS = ('', 445) # IP地址,端口 g_socket_server = None g_conn_pool = [] # 连接池 bad_list = [] # 记录访问的IP # 格式化时间 def TimeStampToTime(timestamp): timeStruct = time.localtime(timestamp) return time.strftime('%Y-%m-%d %H:%M:%S',timeStruct) # 访问本机IP 的类 class Bad_gay(object): def __init__(self, addr, time=1,visitTime = str(TimeStampToTime(time.time()))): self.addr = addr self.time = time self.visitTime = visitTime # 输出文本信息 def showInfo(): print("""-------------------------- 输入1:导出到 Export_IP.csv. 输入2:退出 """) # 输出记录的IP def show(): global bad_list bad_list.sort(key=operator.attrgetter('time'),reverse=True) x = os.system('cls') print("IP Address --num --time" ) for j in bad_list: if j.addr != "": print("{} --{} --{}".format(j.addr, j.time, j.visitTime)) # 判断新访问的IP,是否被记录 def has_name(new_bad): result = False for k in bad_list: if k.addr == new_bad: result = True break return result # 把记录的IP加入被访问的数组 def add_list(new_bad): global bad_list if new_bad =="": return if has_name(new_bad): for i in bad_list: if i.addr == new_bad: i.time = i.time + 1 i.visitTime = str(TimeStampToTime(time.time())) break else: bad_list.append(Bad_gay(new_bad)) # 初始化 socket def init(): global g_socket_server g_socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) g_socket_server.bind(ADDRESS) g_socket_server.listen(5) print(".....已开始记录.....") # 从连接里 截图访问都IP def accept_client(): global bad_list while True: client, addr = g_socket_server.accept() add_list(str(addr[0])) client.close() show() showInfo() # 主方法 if __name__ == '__main__': x = os.system('cls') init() # 新开一个线程,用于接收新连接 thread = Thread(target=accept_client) thread.setDaemon(True) thread.start() print("IP Address --num --time" ) # 主线程逻辑 while True: cmd = input("""-------------------------- 输入1:导出到 Export_IP.csv. 输入2:退出 """) if cmd == '1': x = os.system('cls') ipStr="IP,time,visitTime"+" " for badGay in bad_list: # print(badGay.addr) ipStr=ipStr+badGay.addr+","+ str(badGay.time)+","+badGay.visitTime+" " with open(r".Export_IP.csv","w") as f: f.write(ipStr) show() # showInfo() elif cmd == '2': exit()
---
关闭 445 端口.计算机需要重启.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesNetBTParameters]
"SMBDeviceEnabled"=dword:00000000