吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2499|回复: 7
上一主题 下一主题
收起左侧

[Python 转载] 一个简陋的监控文件夹内容变化的python小程序

[复制链接]
跳转到指定楼层
楼主
basfan 发表于 2020-7-10 09:19 回帖奖励
本帖最后由 basfan 于 2020-7-10 09:21 编辑

因为以前有所管理的网站被黑经历,所以现在管理网站战战兢兢,总害怕被黑,网页内容被篡改,而用第三方工具又不放心,所以自己写了一个小程序,监控网站目录文件夹,看看有没有文件或上的变化,比较简陋,供大家参考。

顺便问一下各位高手,有没有好的文件比对方法?谢谢!

[Python] 纯文本查看 复制代码

import os,pickle,operator

class Mypickle:

    def __init__(self, path, file):
        self.path=path
        self.file=file

        
    def getsave(self):
        oldlist=[]
        if os.path.isfile(self.file) and os.path.getsize(self.file)>0:
            with open (self.file,'rb') as f:
              oldlist=pickle.load(f)
        return oldlist


    def getdata(self):
        list=[]
        for path,folder,file in os.walk(self.path):
            for i in range(len(file)):
                size=str(os.path.getsize(os.path.join(path,file[i])))
                list.append([path+'\\'+file[i]+size])
        return list



    def savedata(self,data):
        with open(self.file,'wb+') as f:
            pickle.dump(data,f)


    def comparison(self,data1,data2):
        list3=[]
        for i in range(len(data1)):
            if data1[i] not in data2:
                list3.append(data1[i])
        
        return list3



if __name__ == '__main__':
    path='D:\www'
    file=r'C:\Users\Administrator\Desktop\data.pickle'
    tmp2=[]
    tmp1=[]
    dif={}
   
    a=Mypickle(path,file)

    tmp2=a.getdata()

    if os.path.isfile(file):
        tmp1=a.getsave()

    if tmp1 is None or len(tmp1)==0:
        print('第一次运行,存储当前路径下所有文件名和文件大小:')
        a.savedata(tmp2)

    if tmp1 is not None and len(tmp1)>0:
        if operator.ne(tmp1,tmp2):
            dif=a.comparison(tmp1,tmp2)
            print('有变化的文件:',dif)
        else:
            print('未发现有变化文件')


下面是程序源代码,在python3.8.3上调试通过
监控文件夹内容变化.zip (861 Bytes, 下载次数: 32)

免费评分

参与人数 5吾爱币 +4 热心值 +5 收起 理由
ykcbf + 1 + 1 谢谢@Thanks!
233 + 1 + 1 热心回复!
胡萝卜炒鲨鱼 + 1 + 1 热心回复!
sheyong + 1 热心回复!
hj170520 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
sheyong 发表于 2020-7-10 09:45
666第一名   学习了
3#
 楼主| basfan 发表于 2020-7-10 09:59 |楼主
sheyong 发表于 2020-7-10 09:45
666第一名   学习了

这个好用不好用,关键取决于文件比对和比对结果的记录,在我个人看,文件比对这块我没做成功,只能实现基本功能。

只要代码被增删任何地方,文件大小就会发生改变,所以这个实现原理是以字节为单位记录每个文件大小存储到一个list里面,然后对比以前的list和现在的list,找不同,列出来。

同时因为这个程序是在服务器端执行,除非对方拿到了系统权限,并成功黑了进来。否则服务器端执行的代码,他们看不到。

我后面想的是把这个程序作成日志,就是每天如果有变化则记录到文件,没有变化就不做记录,跟iis日志结合方便调取系统日志,查看网站被攻击原因(代码层面)。
4#
Voyage 发表于 2020-7-10 10:25
起始只是比较文件大小的话并不能保证内容是否被篡改把,有可能改了文件大小没有发生变化。建议使用md5
5#
 楼主| basfan 发表于 2020-7-10 10:31 |楼主
Voyage 发表于 2020-7-10 10:25
起始只是比较文件大小的话并不能保证内容是否被篡改把,有可能改了文件大小没有发生变化。建议使用md5

确实不能,只能基于某一时期的版本而言后面未篡改,所以特定时期特定版本很重要。

用md5还需要用第三方库,一开始确实这么想了,后来我觉得,服务器端东西,能少装就少装了,不知道是不是我这个思想作怪。再说网站一旦被入侵,代码层面肯定会被篡改以确保实现更多功能(譬如在某个页面添加调用,或者上传另外一套文件管理系统来访问所有文件),只要能检测出来文件存在变化和文件内容变化,我觉得也可以达到安全目的。因此就没用md5,但从理论上讲,确实md5比较高大上些
6#
boxer 发表于 2020-7-10 11:07
windows的话,有相关的API,很方便
7#
 楼主| basfan 发表于 2020-7-10 18:06 |楼主
boxer 发表于 2020-7-10 11:07
windows的话,有相关的API,很方便

譬如?如果是按修改时间来判断,我觉得最不靠谱,因为现在好多黑客网站都有修改文件修改时间和访问时间的工具。。。。都已经属于基本技能了。。。如果系统自带的功能,能否告知?谢谢!!
8#
boxer 发表于 2020-7-10 20:25
本帖最后由 boxer 于 2020-7-13 10:04 编辑
basfan 发表于 2020-7-10 18:06
譬如?如果是按修改时间来判断,我觉得最不靠谱,因为现在好多黑客网站都有修改文件修改时间和访问时间的 ...

是实时监控啊,一有变化马上通知,不需要判断
-------------------------------------------------
附件已删除

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 02:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表