一个简陋的监控文件夹内容变化的python小程序
本帖最后由 basfan 于 2020-7-10 09:21 编辑因为以前有所管理的网站被黑经历,所以现在管理网站战战兢兢,总害怕被黑,网页内容被篡改,而用第三方工具又不放心,所以自己写了一个小程序,监控网站目录文件夹,看看有没有文件或上的变化,比较简陋,供大家参考。
顺便问一下各位高手,有没有好的文件比对方法?谢谢!
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)))
list.append(+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 not in data2:
list3.append(data1)
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上调试通过
666第一名 学习了 sheyong 发表于 2020-7-10 09:45
666第一名 学习了
这个好用不好用,关键取决于文件比对和比对结果的记录,在我个人看,文件比对这块我没做成功,只能实现基本功能。
只要代码被增删任何地方,文件大小就会发生改变,所以这个实现原理是以字节为单位记录每个文件大小存储到一个list里面,然后对比以前的list和现在的list,找不同,列出来。
同时因为这个程序是在服务器端执行,除非对方拿到了系统权限,并成功黑了进来。否则服务器端执行的代码,他们看不到。
我后面想的是把这个程序作成日志,就是每天如果有变化则记录到文件,没有变化就不做记录,跟iis日志结合方便调取系统日志,查看网站被攻击原因(代码层面)。 起始只是比较文件大小的话并不能保证内容是否被篡改把,有可能改了文件大小没有发生变化。建议使用md5 Voyage 发表于 2020-7-10 10:25
起始只是比较文件大小的话并不能保证内容是否被篡改把,有可能改了文件大小没有发生变化。建议使用md5
确实不能,只能基于某一时期的版本而言后面未篡改,所以特定时期特定版本很重要。
用md5还需要用第三方库,一开始确实这么想了,后来我觉得,服务器端东西,能少装就少装了,不知道是不是我这个思想作怪。再说网站一旦被入侵,代码层面肯定会被篡改以确保实现更多功能(譬如在某个页面添加调用,或者上传另外一套文件管理系统来访问所有文件),只要能检测出来文件存在变化和文件内容变化,我觉得也可以达到安全目的。因此就没用md5,但从理论上讲,确实md5比较高大上些 windows的话,有相关的API,很方便 boxer 发表于 2020-7-10 11:07
windows的话,有相关的API,很方便
譬如?如果是按修改时间来判断,我觉得最不靠谱,因为现在好多黑客网站都有修改文件修改时间和访问时间的工具。。。。都已经属于基本技能了。。。如果系统自带的功能,能否告知?谢谢!! 本帖最后由 boxer 于 2020-7-13 10:04 编辑
basfan 发表于 2020-7-10 18:06
譬如?如果是按修改时间来判断,我觉得最不靠谱,因为现在好多黑客网站都有修改文件修改时间和访问时间的 ...
是实时监控啊,一有变化马上通知,不需要判断
-------------------------------------------------
附件已删除
页:
[1]