【python】找呀找呀找webshell

写了一个py脚本,用来找服务器被人留下的webshell。

之前是递归列举文件,现在用walk函数,快了些。

改动最大的就是正则了,看上去像样不少。

(
		'[_ ]{,1}[pP][aA][sS][sS][\w ]{,20}= {,3}[\'\"]{1,4}.{,33}',
		'[_ ]{,1}[pP][Ww][\w ]{,20}= {,3}[\'\"]{1,4}.{,33}',
		'[mM][mM] {,20}= {,3}[\'\"]{1,4}.{,33}',
		'[mM][iI][mM][aA] {,20}= {,3}[\'\"]{1,4}.{,33}',
		'<[pP][aA][sS][sS].{,33}</[pP][aA][sS][sS]'
		)

地址,路过的一定要star哦:

https://github.com/donghouhe/find_horse_finished/blob/master/horse.py
#!/usr/bin/env python
# encoding: utf-8
# 2015-2-5
'''
      ___           ___           ___           ___
     /\  \         /\  \         /\__\         /\  \
    /::\  \       /::\  \       /::|  |       /::\  \
   /:/\:\  \     /:/\:\  \     /:|:|  |      /:/\:\  \
  /:/  \:\__\   /:/  \:\  \   /:/|:|  |__   /:/  \:\  \
 /:/__/ \:|__| /:/__/ \:\__\ /:/ |:| /\__\ /:/__/_\:\__ \:\  \ /:/  / \:\  \ /:/  / \/__|:|/:/  / \:\  /\ \/__/
  \:\  /:/  /   \:\  /:/  /      |:/:/  /   \:\ \:\__\
   \:\/:/  /     \:\/:/  /       |::/  /     \:\/:/  /
    \::/__/       \::/  /        /:/  /       \::/  /
     ~~            \/__/         \/__/         \/__/
'''

import os
import sys
import re
import time

rulelist = (
		'[_ ]{,1}[pP][aA][sS][sS][\w ]{,20}= {,3}[\'\"]{1,4}.{,33}',
		'[_ ]{,1}[pP][Ww][\w ]{,20}= {,3}[\'\"]{1,4}.{,33}',
		'[mM][mM] {,20}= {,3}[\'\"]{1,4}.{,33}',
		'[mM][iI][mM][aA] {,20}= {,3}[\'\"]{1,4}.{,33}',
		'<[pP][aA][sS][sS].{,33}</[pP][aA][sS][sS]'
		)

def scan(path):
	for root,dirs,files in os.walk(path):
		for filespath in files:
			realfile = os.path.join(root,filespath)
			if os.path.getsize(realfile) < 1024 * 1024 and all(map(lambda x: not realfile.endswith(x),  ('.java', '.jar', '.css', '.class', '.bin', '.exe', '.jpg', '.png', '.pdf', '.doc', '.JPG', 'gif'))):
				filen = open(realfile)
				filestr = filen.read()
				filen.close()
				for rule in rulelist[:]:
					result = re.compile(rule).search(filestr)
					if result:
						print 'File: ', os.path.join(root,filespath ), result.group(0)
						print ('Modifed time: ', time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(os.path.getmtime(realfile))))
						break

if __name__=='__main__':

	if len(sys.argv)!=2:
		print "Usage:", sys.argv[0], '/dir'
		sys.exit(1)
	if not os.path.lexists(sys.argv[1]):
		print "wrong path"
		sys.exit(1)
	print "going"
	scan(sys.argv[1])
时间: 2024-10-14 12:32:38

【python】找呀找呀找webshell的相关文章

命令行执行python模块时提示包找不到的问题

庄稼人不是专职python开发的道友,虽然与python相识已多年,可惜相识不相知,只是偶尔借助pydev写一些简单的小工具. 多年来,一直困惑于这样一个问题:同样的工程,同样的代码,使用pydev可以运行任意一个python脚本,而使用命令行运行却不行?命令行下(或者双击执行)总是提示"ImportError: No module named xxx"?pydev究竟做了什么魔术呢? 长话短说,以上面工程为例,如果是在命令行中直接执行 python c.py , 都会提示"

Jenkins部署python项目时,提示找不到自己定义的模块包的问题

今天尝试在Jenkins上部署我们的自动化项目,用简单的登录用例来配置,然后我们项目(我自己随意写的)使用的是python+selenium, 在搭建好环境之后,构建的时候碰到了一个问题,就是一直提示找不到我自己定义的模块包,提示错误 ModuleNotFoundError: No module named 'common',截图如下: 但是我在pycharm中的IDE中运行又是正常的,不死心在cmd中运行了一下,发现跟Jenkins上面一样的问题,然后就百度了一下总算发现了问题的所在了 产生原

Python每日一练(2):找出html中的所有链接(Xpath、正则两个版本)

要在hrml文件中找出特定的内容,首先需要观察该内容是什么东西,在什么位置,这样才能找出来. 假设html的文件名称是:"1.html".href属性全都在a标签里. 正则版: #coding:utf-8 import re with open('1.html','r') as f: data = f.read() result = re.findall(r'href="(.*?)"',data) for each in result: print each Xpa

Sublime Text 3 插件SublimeCodeIntel for Python 安装步骤拆解及 找不到的.codeintel文件夹的解决方法

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ step1 打开sublime text 3主界面P1 step2 ctrl+shift+pP2 step3 在输入框内输入install后, P3 选择第一个敲击回车P4 step4 在输入框内输入SublimeCodeIntelP5 敲击回车P6 step5 在等待之后

Python强化训练笔记(五)——找出多个字典中的公共键

在这个问题中,我们期望得到的结果是找到这三轮比赛中,每轮都进球的球员都有谁.下面用python来模拟一下,先生成一批数据: >>> from random import randint, sample >>> # sample是取样的意思,例如sample('abcde', 2),会在'abcde'这个字符串中随机抽样2个字符出来 >>> {x: randint(1,3) for x in sample('abcdef', randint(3, 6))

python 【winerror2】系统找不到指定的路径

# _*_ coding:utf-8_*_from selenium import webdriver driver = webdriver.Firefox()driver.get("http://www.baidu.com")driver.find_element_by_id("kw").send_keys("Selenium2")driver.find_element_by_id("su").click() 解决办法,安装

python的自省函数, 快速找出BUG的良器

python内置的好多自省函数,  合理使用可快速查找相关提示, 快速找到问题点, 以下开始具体说明 1. dir()  列出对象的所有属性和方法 如:  dir(list)  可以列出列表的所有属性和方法 ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',

找工作-第一篇找工作杂谈

1.找工作前的准备工作 1>要对自己的一个长远的规划. 比如我现在的状态是什么样子,工作多久之后我又要变成什么样子,技术要提升到什么程度,技术最新发展方向是什么样子的,几年之后,现在我不关心的技术会不会成为我到时候找工作的绊脚石. 2>决定找工作了,要做足准备.起嘛你要回想起你上一份工作做了什么实在的内容,有哪些实在的干货可以拿出来晾晒. 还有就是了解自己将要投递哪些公司.哪些职位.一般公司为了让人投递简历,除了基本的要求写在了招聘信息上之外,往往还需要应聘者去了解它可能还需要哪些技能知识储备

快 三 输 了 想 要 回 血 找 谁,找 我 包 回 血 计 划

[寇:573.03.287]邀请[2796_9999]网hct97.c0m最重要还是要找对一个能引领你的人!我是这么认为的:心态只能让我们锦上添花,但是并不能给我们雪中送炭,一个玩家光有心态,肯定是赚不到钱的,只不过良好的心态可能让你亏损的比较少而已,但是你也是在亏,因为心态根本解决不了概率的问题,概率问题是只有技术才能解决举个例子,一个玩家如果技术够好,那么他挂的可 能性就比较小,一个玩家之所以心态不好,很多时候是因为连挂,所以技术如果足够好,很多时候可以弥补我们心态的一些缺陷,所以技术远远要

免费兼职找我免费兼职找我免费兼职找我

免费兼职找我不需要任何会费一单一结 原文地址:https://www.cnblogs.com/qq97889181/p/12438838.html