$data php,data.php

function this_sAlt_add_PrE(&$value,$key,$pre)

{

$value = "0_".$value."_".$pre;

//echo $value;

//echo "aa".$value;

}

function this_sAlt_order_B_coUnt(&$value,$key,$pre)

{

$val = explode("_", $value);

$count = $val[2];

//str_pad($str,30,".",STR_PAD_LEFT);

$value = str_pad($count,32,"0",STR_PAD_LEFT)."_".$value."_".$pre;

}

function this_sAlt_order_B_iD(&$value,$key,$pre)

{

$val = explode("_", $value);

$id = $val[1];

$value = str_pad($id,32,"0",STR_PAD_LEFT)."_".$value."_".$pre;

}

function this_sAlt_get_baSe_nAme(&$value,$key)

{

$value = basename($value);

}

date_default_timezone_set('PRC');

Class SaLt_Classsssss_LogDb_HHHHhhhhh{

public $data_root_dir;

public $path=null;

private $fp = null;

private $eAccelerator = false;

private $salt;

function __construct()

{

$this->eAccelerator = function_exists("eaccelerator_lock");

$this->salt = "wupco123";

}

public function readfile($path,$type)

{

$file = fopen($this->data_root_dir.$path,"r");

if(!$file)

return 0;

if (flock($file,1))

{

switch ($type) {

case 'JSONA':

$filearr = array();

while(!feof($file))

{

$line = fgets($file);

if($line === false)

break;

else

array_push($filearr,$line);

}

$filestr = json_encode($filearr);

break;

case 'JSONCSV':

$filearr = array();

while(! feof($file))

{

$line = fgetcsv($file,0,chr(0));

if($line === false)

break;

else

array_push($filearr,$line);

}

$filestr = json_encode($filearr);

break;

default:

//echo $this->data_root_dir.$path;

$filestr = fread($file,filesize($this->data_root_dir.$path));

break;

}

flock($file,3);

fclose($file);

return $filestr;

}

else

{

fclose($file);

return -1;

}

}

public function writefile($path,$action,$type,$content)

{

$file = fopen($this->data_root_dir.$path,$action);

if(!$file)

return 0;

if (flock($file,2))

{

switch ($type) {

case 'CSV':

fputcsv($file,$content,chr(0));

//var_dump($content);

break;

default:

fwrite($file,$content);

break;

}

flock($file,3);

fclose($file);

}

else

{

fclose($file);

return -1;

}

}

private function getindex()

{

if($i_data = $this->readfile('dataindex.exe','JSONCSV'))

{

$i_data = json_decode($i_data);

$alldata = array();

foreach($i_data as $line)

{

//var_dump($line);

$data = array("IP"=>$line[0],"DIR"=>$line[1],"LAST_TIME"=>$line[2],"IS_DANGER"=>$line[3],"LAST_ID"=>$line[4]);

//array_push($alldata,$data);

$alldata[$line[0]] = $data;

}

return json_encode($alldata);

}

else

{

return 0;

}

}

private function writeindex($indexjson)

{

$index = json_decode($indexjson);

$this->writefile('dataindex.exe','w','','');

foreach($index as $ip=>$data)

{

$data = $data;

$arr = array($data->IP,$data->DIR,$data->LAST_TIME,$data->IS_DANGER,$data->LAST_ID);

// var_dump($arr);

//$a->writefile('dataindex','a','CSV',$b);

$this->writefile('dataindex.exe','a','CSV',$arr);

}

//var_dump($this->getindex());

return 0;

}

private function lock($name)

{

if(!$this->eAccelerator)

{

$this->fp = fopen($this->path.$name, 'w+');

if($this->fp === false)

{

return false;

}

return flock($this->fp, LOCK_EX);

}

else

{

return eaccelerator_lock($name);

}

}

private function unlock($name)

{

if(!$this->eAccelerator)

{

if($this->fp !== false)

{

flock($this->fp, LOCK_UN);

clearstatcache();

}

fclose($this->fp);

}

else

{

return eaccelerator_unlock($name);

}

}

public function create()

{

if (!file_exists($this->data_root_dir))

{

echo "Please first Create data-dir";

return -1;

}

else

{

file_put_contents($this->data_root_dir."dataindex.exe","");

file_put_contents($this->data_root_dir."id.jpg","-1");

mkdir($this->data_root_dir."lock/", 0777, true);

return 1;

}

}

public function insert($data)

{

$this->lock('index');

$index = json_decode($this->getindex(),true);

$data = json_decode($data,true);

//var_dump($index);

//var_dump($this->getindex());

$lastid = (int)($this->readfile('id.jpg',''));

//echo $lastid;

if(!array_key_exists($data['ip'],(array)$index))

{

$ipdir = md5($data['ip'].$this->salt.((string)time()));

mkdir($this->data_root_dir.$ipdir."/", 0777, true);

mkdir($this->data_root_dir.$ipdir."/payload/", 0777, true);

mkdir($this->data_root_dir.$ipdir."/danger/", 0777, true);

$dir = $ipdir;

$lasttime = (string)time();

$is_danger = $data['risk'];

@$index[$data['ip']]['DIR']= $dir;

@$index[$data['ip']]['LAST_ID'] = 0;

@$index[$data['ip']]['LAST_TIME'] = $lasttime;

@$index[$data['ip']]['IS_DANGER'] = $is_danger;

@$index[$data['ip']]['IP'] = $data['ip'];

}

else

{

$dir = $index[$data['ip']]['DIR'];

$lasttime = $index[$data['ip']]['LAST_TIME'];

$is_danger = $index[$data['ip']]['IS_DANGER'];

}

if(file_exists($this->data_root_dir.$dir."/payload/".bin2hex($data['file'])."/".md5($data['payload'])))

{

$filename = $this->readfile($dir."/payload/".bin2hex($data['file'])."/".md5($data['payload']),'');

if($filename)

{

$file = $this->readfile($dir."/".$filename,'JSONCSV');

if($file)

{

$file = json_decode($file);

foreach($file as $line)

{

$id = $line[0];

$risk = $line[8];

$count = $line[11]+1;

$f_link = $line[10];

}

unlink($this->data_root_dir.$dir."/".$filename);

$id = explode("_", $filename);

$id = $id[1];

$newname = (string)time()."_".(string)$id."_".(string)$count;

$wd = array($id,$data['url'],$data['poststr'],$data['getstr'],$data['cookie'],$data['time'],$data['headers'],$data['ip'],$risk,$data['type'],$f_link,$count);

$this->writefile($dir."/".$newname,'w','CSV',$wd);

$this->writefile($dir."/payload/".bin2hex($data['file'])."/".md5($data['payload']),'w','',$newname);

if((int)$risk == 1)

{

unlink($this->data_root_dir.$dir."/danger/".$filename);

$this->writefile($dir."/danger/".$newname,'w','','');

}

$baknum = -1;

}

else

$baknum = -2;

}

else

$baknum = -3;

//$payloads = $this->readfile($this->data_root_dir.$dir."/payload/".$data['file']),'JSONA');

}

else

{

if(!file_exists($this->data_root_dir.$dir."/payload/".bin2hex($data['file'])."/"))

mkdir($this->data_root_dir.$dir."/payload/".bin2hex($data['file'])."/", 0777, true);

$newid = ((int)$lastid) + 1;

//echo $newid;

$newfile = (string)time() . "_" . (string)$newid."_0";

$f_link = $this->data_root_dir.$dir."/payload/".bin2hex($data['file'])."/".md5($data['payload']);

$wd = array($newid,$data['url'],$data['poststr'],$data['getstr'],$data['cookie'],$data['time'],$data['headers'],$data['ip'],$data['risk'],$data['type'],$f_link,0);

$this->writefile($dir."/".$newfile,'w','CSV',$wd);

$this->writefile($dir."/payload/".bin2hex($data['file'])."/".md5($data['payload']),'w','',$newfile);

$this->writefile('id.jpg','w','',(string)$newid);

@$index[$data['ip']]['LAST_ID'] = (string)$newid;

$baknum = $newid;

//$index[$data['ip']]['LAST_TIME'] = (string)time();

}

$this->writeindex(json_encode($index));

//var_dump($index);

//echo $this->getindex();

$this->unlock('index');

return $baknum;

}

public function ip_list()

{

$index = json_decode($this->getindex());

if(is_array($index))

{

if(size($index)==0)

return 0;

else

return -1;

}

else

{

$ip_list = json_encode(array_keys(get_object_vars($index)));

return $ip_list;

}

}

public function select_by_ip($ip,$limit,$desc,$start,$getnum,$time)

{

$index = json_decode($this->getindex());

//print_r( $index;

if(is_array($index))

{

if(sizeof($index)==0)

return 0;

else

return -1;

}

else

{

//$dir_list = array();

$index = json_decode(json_encode($index),true);

$dir = $index[$ip]['DIR'];

if($time===0){

$filenames = scandir($this->data_root_dir.$dir);

array_splice($filenames, 0, 2);

array_splice($filenames, -2, 2);

}

else{

$filenames = glob($this->data_root_dir.$dir.'/'.$time.'*');

array_walk($filenames,"this_sAlt_get_baSe_nAme");

}

if($getnum)

{

return sizeof($filenames);

}

if($limit == -1)

{

$limit = sizeof($filenames);

}

if(sizeof($filenames)

{

$limit = sizeof($filenames) -$start;

}

if($desc === 1)

rsort($filenames);

else

sort($filenames);

//var_dump($filenames);

$mess = array();

for($i=$start;$i

{

$c = json_decode($this->readfile($dir."/".$filenames[$i],"JSONCSV"));

array_push($mess,$c);

}

return json_encode($mess);

}

}

private function dir_list()

{

$index = json_decode($this->getindex());

//print_r( $index);

if(is_array($index))

{

if(sizeof($index)==0)

return 0;

else

return -1;

}

else

{

$dir_list = array();

foreach($index as $ip=>$data)

{

array_push($dir_list,$data->DIR);

}

return json_encode($dir_list);

}

}

public function select_list($order,$limit,$jback,$desc,$getnum,$start,$time)

{

$dir_list = $this->dir_list();

//print $dir_list;

if($dir_list)

{

$dir_list = json_decode($dir_list);

$filename = array();

//var_dump($dir_list);

foreach($dir_list as $dir)

{

//echo $this->data_root_dir;

if($time===0){

$filenames = scandir($this->data_root_dir.$dir);

array_splice($filenames, 0, 2);

array_splice($filenames, -2, 2);

}

else{

$filenames = glob($this->data_root_dir.$dir.'/'.$time.'*');

array_walk($filenames,"this_sAlt_get_baSe_nAme");

}

//echo $this->data_root_dir.$dir."
";

//echo $dir;

//var_dump($filenames);

//$key = array_search('.', $filenames);

//if ($key !== false)

switch ($order) {

case 'count':

array_walk($filenames,"this_sAlt_order_B_coUnt",$dir);

break;

case 'id':

array_walk($filenames,"this_sAlt_order_B_iD",$dir);

break;

default:

array_walk($filenames,"this_sAlt_add_PrE",$dir);

break;

}

//array_push($filename,$filenames);

$filename = array_merge($filename,$filenames);

//$key = array_search('.', $filenames);

}

if($getnum)

{

return sizeof($filename);

}

if($limit == -1)

{

$limit = sizeof($filename);

}

if(sizeof($filename)

{

$limit = sizeof($filename) - $start;

}

if($desc === 1)

rsort($filename);

else

sort($filename);

//var_dump($filename);

if($jback === 'content')

{

$mess = array();

//var_dump($filename);

//print $limit;

//print sizeof($filename);

//

//echo $start;

for($i=$start;$i

{

//echo $filename[$i];

$tmp = explode("_",$filename[$i]);

//var_dump($tmp);

$d = $tmp[4];

$f = $tmp[1]."_".$tmp[2]."_".$tmp[3];

$c = json_decode($this->readfile($d."/".$f,"JSONCSV"));

array_push($mess,$c);

}

return json_encode($mess);

}

elseif($jback === 'count_suff')

{

return json_encode($filename);

}

else

{

$limitfile = array();

for($i=$start;$i

{

$tmp = explode("_",$filename[$i]);

$d = $tmp[4];

$f = $tmp[1]."_".$tmp[2]."_".$tmp[3];

array_push($limitfile,$d."/".$f);

}

return json_encode($limitfile);

}

}

else

{

return -2;

}

//echo $this->dir_list();

}

public function get_num($mod,$group,$time)

{

$time = $time;

switch ($mod) {

case 'all':

return $this->select_list('',-1,'',1,1,0,$time);

break;

case 'risk':

return $this->prob_payload(-1,1,1,0);

break;

case 'more':

return $this->prob_payload(-1,1,0,0);

break;

case 'ip':

return $this->select_by_ip($group,-1,1,0,1,$time);

default:

return 0;

break;

}

}

public function select_by_id($id)

{

//print $id;

$bak = $this->select_list('id',$id+1,'1',0,0,0,0);

// print $bak;

if($bak)

{

$bak = json_decode($bak,true);

if(sizeof($bak)>0)

{

return $bak[sizeof($bak)-1];

//var_dump($bak);

}

else

return -1;

}

else

return 0;

}

public function danger_list()

{

$dir_list = $this->dir_list();

if($dir_list)

{

$dir_list = json_decode($dir_list);

$filename = array();

foreach($dir_list as $dir)

{

$filenames = scandir($this->data_root_dir.$dir.'/danger');

array_splice($filenames, 0, 2);

array_walk($filenames,"this_sAlt_order_B_coUnt",$dir);

$filename = array_merge($filename,$filenames);

}

rsort($filename);

return json_encode($filename);

}

else

return -1;

}

public function prob_payload($limit,$getnum,$onlydanger,$start)

{

$danger = $this->danger_list();

if($danger)

{

$danger = json_decode($danger,true);

if($onlydanger)

$count = json_encode(array());

else

$count = $this->select_list('count',-1,'count_suff',1,0,0,0);

if($count)

{

$count = json_decode($count,true);

$all = array_merge($danger,$count);

$alllist = array();

$alllist = array_values(array_unique($all));

if($getnum)

return sizeof($alllist);

if(sizeof($alllist)

{

$limit = sizeof($alllist) - $start;

}

$mess = array();

for($i=$start;$i

{

$tmp = explode("_",$alllist[$i]);

$d = $tmp[4];

$f = $tmp[1]."_".$tmp[2]."_".$tmp[3];

$c = json_decode($this->readfile($d."/".$f,"JSONCSV"),true);

array_push($mess,$c);

}

// $bjson = array("allnum"=>$num,$mess);

return json_encode($mess);

}

else

return -1;

}

else

return -2;

}

public function get_content_by_id($id)

{

$filename = $this->select_by_id($id);

if($filename)

{

$content = $this->readfile($filename,'JSONCSV');

if($content)

{

return $content;

}

else

{

return 0;

}

}

else

return -1;

}

public function del_by_id($id)

{

$filename = $this->select_by_id($id);

if($filename)

{

$content = $this->readfile($filename,'JSONCSV');

if($content)

{

$content = json_decode($content, true);

$f_link = $content[0][10];

if($f_link)

{

$f_link = explode(' ', $f_link);

foreach ($f_link as $file_l)

{

if(file_exists($file_l)){

file_put_contents($this->data_root_dir.'../tarlog.sh','tar -rvf '.$this->data_root_dir.'/logbak.tar.bz2 '.$file_l."\n");

file_put_contents($this->data_root_dir.'../tarlog.sh','rm '.$file_l."\n",FILE_APPEND);

file_put_contents($this->data_root_dir.'../tarlog.sh','chmod 777 '.$this->data_root_dir.'/logbak.tar.bz2',FILE_APPEND);

}

}

if(file_exists($this->data_root_dir.$filename)) {

file_put_contents($this->data_root_dir.'../tarlog.sh','tar -rvf '.$this->data_root_dir.'/logbak.tar.bz2 '.$this->data_root_dir.$filename."\n",FILE_APPEND);

file_put_contents($this->data_root_dir.'../tarlog.sh','rm '.$this->data_root_dir.$filename."\n",FILE_APPEND);

file_put_contents($this->data_root_dir.'../tarlog.sh','chmod 777 '.$this->data_root_dir.'/logbak.tar.bz2',FILE_APPEND);

system('bash '.$this->data_root_dir.'../tarlog.sh');

}

return 1;

}

else

{

if(file_exists($this->data_root_dir.$filename)){

file_put_contents($this->data_root_dir.'../tarlog.sh','tar -rvf '.$this->data_root_dir.'/logbak.tar.bz2 '.$this->data_root_dir.$filename."\n");

file_put_contents($this->data_root_dir.'../tarlog.sh','rm '.$this->data_root_dir.$filename."\n",FILE_APPEND);

file_put_contents($this->data_root_dir.'../tarlog.sh','chmod 777 '.$this->data_root_dir.'/logbak.tar.bz2',FILE_APPEND);

system('bash '.$this->data_root_dir.'../tarlog.sh');

}

return 1;

}

}

else

{

return 0;

}

}

else

return -1;

}

public function upadate_risk($id)

{

$filename = $this->select_by_id($id);

//echo $filename;

echo "\n".$id."\n";

if($filename)

{

$content = $this->readfile($filename,'JSONCSV');

if($content)

{

$content = json_decode($content,true);

$content[0][8] = 1;

$risk_ip = $content[0][7];

$this->writefile($filename,'w',"CSV",$content[0]);

$index = $this->getindex();

if($index)

{

$tmp = explode("/",$filename);

$index = json_decode($index,true);

//var_dump($index);

$index[$risk_ip]['IS_DANGER'] = 1;

$dir = $index[$risk_ip]['DIR'];

$this->writeindex(json_encode($index));

$content[0][11] = $content[0][11].' '.$this->data_root_dir.$dir."/danger/".$tmp[1];

$this->writefile($filename,'w',"CSV",$content[0]);

$this->writefile($dir."/danger/".$tmp[1],'w','','');

return 1;

}

else

{

return $index;

}

}

else

{

return $content;

}

}

else

{

//echo "sss";

return 0;

}

}

}

//$a = new SaLt_Classsssss_LogDb_HHHHhhhhh();

//$a->create();

// $wd = array($data['url'],$data['poststr'],$data['getstr'],$data['cookie'],$data['time'],$data['headers'],$data['ip'],$risk,$data['type'],$count);

//$payload = $_GET['id'];

//$b = array("url"=>"www.baidu.com","poststr"=>"t=post","getstr"=>"t=get","cookie"=>"t=cookie","time"=>"2014-2-10","headers"=>"asdasd\ndasdsdas","ip"=>"127.0.0.8","risk"=>"0","type"=>"0","file"=>"index.php","payload"=>$payload);

//print $a->('id',5,'content',0);

//$a->insert(json_encode($b));

//echo $a->upadate_risk(3);

//var_dump($a->readfile('7d968c105afd8c49b52ef42266675f2d/1494994152_5_0','JSONCSV'));

?>

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值