最近 有好多用戶中了 「蠕蟲」類病毒,因此應該對局域網 作下 監聽,如對445 端口的掃描或訪問記錄。數組
說下思路:app
- 監聽本機全部網卡的 445 端口(本機不向外發送snmp)。
- 記錄下訪問本機445端口的IP,訪問次數,訪問時間。
- 按訪問次數進行降序排序,訪問本機次數有記錄的,能夠手動去查殺下。
因該腳本與Windows 共享衝突,能夠在 服務裏關閉 445 端口,再打開 該腳本。socket
結果 以下圖所示。spa
輸出的 記錄以下。線程
代碼以下code
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"+"\n" for badGay in bad_list: # print(badGay.addr) ipStr=ipStr+badGay.addr+","+ str(badGay.time)+","+badGay.visitTime+"\n" with open(r".\Export_IP.csv","w") as f: f.write(ipStr) show() # showInfo() elif cmd == '2': exit()
---
關閉 445 端口.計算機須要重啓.orm
Windows Registry Editor Version 5.00server
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\NetBT\Parameters]blog
"SMBDeviceEnabled"=dword:00000000排序