写了个鸡肋脚本
用来检查网站文件是否被更改的脚本。
上次被挂马之后,就有想法写个小工具,不一定实用,就当写着玩了。
还缺一个本地的python或者php写的端,存储一次数据之后就可以链接这个文件检查文件是否被更改。
写这个还有个目的是想用用php的yield,yield这个写法,非常节省开销,节省内存。
当然要是真的被挂马了,发现了这个文件估计就直接给我存成json了,每次访问都是一样的233333,所以说并没有卵用
用法
GET参数:
- sign=密码
- wwwdir=待遍历目录
- file=文件类型
- config=time,len,md5
file_check.php
<?php
/**
* 检查文件是否被更改
*/
main();
function main()
{
//验证密码
if($_GET['sign']!='cc096507873b40f1eccf4e26150dc0e2')
{
header("HTTP/1.1 404 Not Found");exit;
}
//设置目录
if(isset($_GET['wwwdir']))
{
$wwwdir = $_GET['wwwdir'];
$wwwdir_len = strlen($wwwdir);
}else{
header("HTTP/1.1 404 Not Found");exit;
}
//设置文件
if(isset($_GET['file']))
{
$type_arr = explode(',',$_GET['file']);
}else{
$type_arr = ['php'];
}
//设置检查项
if(isset($_GET['config']))
{
$config = [];
$config_in = explode(',',$_GET['config']);
foreach($config_in as $item)
{
if(in_array($item,['time','len','md5']))
{
$config[$item] = true;
}else
{
$config[$item] = false;
}
}
if(empty($config))
{
header("HTTP/1.1 404 Not Found");exit;
}
}else
{
$config = [];
}
$file_list = [];
$count = 0;
foreach(tree($wwwdir,$type_arr) as $file)
{
$file_list[$count]['file'] = substr($file,$wwwdir_len);
if($config['time'])
{
$file_list[$count]['time'] = date('Y-m-d H:i:s',filemtime($file));
}
if($config['len'])
{
$file_list[$count]['len'] = filesize($file);
}
if($config['md5'])
{
$file_list[$count]['md5'] = md5_file($file);
}
$count++;
}
echo json_encode($file_list);
}
function tree($directory,$type_arr)
{
$all_dir = [$directory];
while($now_dir = current($all_dir))
{
$mydir = dir($now_dir);
while($file = $mydir->read())
{
if($file=='.' or $file=='..')
continue;
if(is_dir("$now_dir/$file"))
{
array_push($all_dir,"$now_dir/$file");
}else
{
if( in_array(substr($file, strrpos($file, '.')+1),$type_arr) )
{
yield "$now_dir/$file";
}else
{
continue;
}
}
}
$mydir->close();
next($all_dir);
}
}
提交:
file_check.php?sign=cc096507873b40f1eccf4e26150dc0e2&wwwdir=/home/yusen/backup&config=time,len,md5&file=conf
返回:
[
{
file: "/cpbackup-exclude.conf",
time: "2017-01-16 04:23:55",
len: 1,
md5: "68b329da9893e34099c7d8ad5cb9c940"
},
{
file: "/.gnupg/gpg.conf",
time: "2017-01-10 01:20:23",
len: 7856,
md5: "7a0a33ed6ad8ceba2a1cae8b0e9a7c99"
},
{
file: "/tmp/awstats/awstats.moozik.cn.conf",
time: "2017-04-29 20:14:53",
len: 23751,
md5: "ec44b97acc8f0787bf67ea655db430e3"
},
{
file: "/tmp/awstats/ssl/awstats.moozik.cn.conf",
time: "2017-04-29 20:14:53",
len: 23763,
md5: "e5040e7f77540f0a0cc9e594965fe507"
}
]
1 条评论
本来这个东西是打算跟本地python配合使用的,结果后来的没搞