当前位置: 首页 > news >正文

windows网站篡改脚本编制

✅ 功能简介

该监控系统具备如下主要功能:

功能点说明
📁 目录监控实时监听指定主目录及其所有子目录内文件的变动情况。
🔒 文件哈希校验对文件内容生成 SHA256 哈希,确保变更检测基于内容而非时间戳。
🚫 排除机制支持设置需排除的子目录或特定文件,避免频繁改动目录带来的干扰。
🧾 日志记录所有非排除目录中的新增或被篡改的文件将自动写入 update.txt 日志文件中。
🧠 基线建立系统首次运行时自动建立哈希基线作为“可信状态”,便于后续变更比对。


📋 应用场景示例

  • 监控业务系统配置文件:防止配置被恶意或误操作修改;

  • 跟踪重要文档目录:如合同、方案等文档被非法修改或替换;

  • 代码安全检测:辅助识别可能被植入恶意代码的敏感代码文件夹。


🔧 使用方法(示意)

  1. 配置监控路径
    修改 MONITOR_FOLDER = "C:/YourFolder" 指定你需要监控的文件夹;

  2. 可选:配置排除路径

    python

    复制编辑

    EXCLUDE_PATHS = [ "logs", # 忽略日志文件夹 "temp/cache.txt" # 忽略某个具体文件 ]

  3. 运行程序(建议后台运行或注册为服务):

    bash

    复制编辑

    python monitor.py

  4. 查看变更日志:
    所有被篡改或新增的文件信息将写入 update.txt,格式如下:

    bash

    复制编辑

    [2025-05-15 21:40:15] 🚨 文件被篡改:docs/readme.md [2025-05-15 21:41:03] 🆕 新增或未知文件被修改:uploads/newfile.txt


🔐 安全建议

  • 建议将 update.txt 设为只读,仅安全管理员可查看;

  • 建议每次系统更新或目录内容变动后手动重建一次哈希基线;

  • 可配合企业文件服务器策略,加强操作权限管理。

实战

代码

import os
import hashlib
import json
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler# === 配置路径 ===
MONITOR_FOLDER = "C:/MySecureFolder"
HASH_DB_FILE = "hash_baseline.json"
LOG_FILE = "update.txt"# ❗ 要排除监控的子目录(相对于 MONITOR_FOLDER 的路径)
EXCLUDE_PATHS = ["temp","logs","secret/ignore.txt"
]def is_excluded(path):rel_path = os.path.relpath(path, MONITOR_FOLDER)for ex in EXCLUDE_PATHS:if rel_path == ex or rel_path.startswith(ex + os.sep):return Truereturn Falsedef calculate_hash(file_path):hasher = hashlib.sha256()try:with open(file_path, 'rb') as f:while chunk := f.read(8192):hasher.update(chunk)return hasher.hexdigest()except Exception:return Nonedef log_change(message):timestamp = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())with open(LOG_FILE, 'a', encoding='utf-8') as f:f.write(f"[{timestamp}] {message}\n")def build_baseline():hash_dict = {}for root, _, files in os.walk(MONITOR_FOLDER):for file in files:full_path = os.path.join(root, file)if is_excluded(full_path):continuerel_path = os.path.relpath(full_path, MONITOR_FOLDER)file_hash = calculate_hash(full_path)if file_hash:hash_dict[rel_path] = file_hashwith open(HASH_DB_FILE, 'w') as f:json.dump(hash_dict, f, indent=4)print("✅ 哈希基线已建立")def load_baseline():if not os.path.exists(HASH_DB_FILE):return {}with open(HASH_DB_FILE, 'r') as f:return json.load(f)class TamperAlertHandler(FileSystemEventHandler):def on_modified(self, event):if event.is_directory:returnif is_excluded(event.src_path):returnrel_path = os.path.relpath(event.src_path, MONITOR_FOLDER)current_hash = calculate_hash(event.src_path)baseline = load_baseline()if rel_path in baseline:if current_hash and current_hash != baseline[rel_path]:message = f"🚨 文件被篡改:{rel_path}"print(message)log_change(message)else:message = f"🆕 新增或未知文件被修改:{rel_path}"print(message)log_change(message)def start_monitor():print(f"🚀 正在监控文件夹:{MONITOR_FOLDER}")print(f"🚫 排除路径:{EXCLUDE_PATHS}")event_handler = TamperAlertHandler()observer = Observer()observer.schedule(event_handler, MONITOR_FOLDER, recursive=True)observer.start()try:while True:time.sleep(1)except KeyboardInterrupt:observer.stop()observer.join()if __name__ == "__main__":if not os.path.exists(HASH_DB_FILE):build_baseline()start_monitor()

相关文章:

  • 若依框架二次开发——若依微服务整合RocketMQ
  • 三轴云台之高精度传感器与测距技术篇
  • java集合详细讲解
  • 《垒球百科全书》垒球是什么·棒球1号位
  • anythingLLM支持本地大模型嵌入知识库后进行api调用
  • VSCode 安装教程
  • pyspark测试样例
  • Pytest自动化测试详解
  • GPT/Claude3国内免费镜像站更新 亲测可用
  • uniapp 微信小程序 获取openId
  • 软件架构之-论高并发下的可用性技术
  • React学习———Immer 和 use-immer
  • DDoS与CC攻击:谁才是服务器的终极威胁?
  • 如何快速隔离被攻击的服务器以防止横向渗透
  • ES6详解
  • CSS实现过多的文本进行省略号显示
  • DAY30
  • Spring_Boot(一)Hello spring boot!
  • TDengine 2025年产品路线图
  • 掌握Python编程:从C++/C#/Java开发者到AI与医学影像开发专家
  • 中纪报:强化监督推动过紧日子要求落到实处
  • 山西晋城一网红徒步野游线路据传发生驴友坠崖,当地已宣布封路
  • 周慧芳任上海交通大学医学院附属上海儿童医学中心党委书记
  • 习近平向第三十四届阿拉伯国家联盟首脑理事会会议致贺信
  • 福州一宋代古墓被指沦为露天厕所,仓山区博物馆:已设置围挡
  • 全国省市县国土空间总体规划已基本批复完成,进入全面实施阶段