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排序

相关文章
相关标签/搜索