445端口訪問記錄

最近 有好多用戶中了 「蠕蟲」類病毒,因此應該對局域網 作下 監聽,如對445 端口的掃描或訪問記錄。數組

說下思路:app

  1. 監聽本機全部網卡的 445 端口(本機不向外發送snmp)。
  2. 記錄下訪問本機445端口的IP,訪問次數,訪問時間。
  3. 按訪問次數進行降序排序,訪問本機次數有記錄的,能夠手動去查殺下。

 

 

因該腳本與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排序

相關文章
相關標籤/搜索