浏览模式: 标准 | 列表Tag:zendstudio
Submitted by gouki on 2010, October 12, 1:57 PM
上午某群内好友中了木马,目录名中都是小数点,无法删除。找了一下资料,以做备份吧。。
----start--
这些有小数点的文件夹其实是windows系统存在的一个bug,因为不容易被删除而且很隐蔽,因此经常为一些入侵者利用存放一些木马之类的文件。虽然我们不能像删除普通文件一样删除这种文件夹,但总归有删除办法的。懂得了这种文件的创建原理,删除自然就好办了。有关该原理的介绍具体可以看《建一个别人进不了删不掉的绝密文件夹》这篇文章。
删除办法为:在CMD下通过rd命令+文件名+"./"来删除,如果文件夹下有文件需要先删掉内部的文件(一般为木马文件),那么如何进入这个文件夹呢?可以通过“start+目录的绝对路径”命令进入,如:start d:\web\sites\1..\。
----eof---
后来,朋友是删除了这个目录了。。HOHO,想不到,还有Start这个命令。(百万宝贝告诉我,Start命令失败。。。)
原文:http://www.aspxhome.com/security/20092/760121.htm
Misc | 评论:0
| 阅读:15363
Submitted by gouki on 2010, August 2, 4:50 PM
对于一些几乎没有变型的图片来说,下面这个方法或者会减轻你的工作量。
事实上,我也是从http://fr.cc0311.com/php-telephone-number-ocr.html看的代码,再想想,walkerlee在05年就写过了关于bmp图片的识别。不过BMP可能会相对简单一点吧?
看了这个法月博客的代码。脑子一热,花了半小时,重写了一遍。。。没有优化。因为大部分方法还是参考的他的,只是对法月的这篇文章中的代码,我做了简单的改动。版权,还是算他的吧。。。去年的时候,也写过类似的。。只是因为图片变形,最终识别率超低,因此对于这种不变形的,还是写下代码做个笔记吧。
PHP代码
- <?php
-
- $imgfile = 'http://bj.ganji.com/tel/5463013757650d6c5e31093e563c51315b6c5c6c5237.png';
-
- interface imagedatas {
- public function setimagedata();
- public function getimagedata();
- }
-
- class GanjiImage implements imagedatas{
- public $imagedata;
- public function __construct(){
- $this->setimagedata();
- }
- public function setimagedata(){
- $this->imagedata = array(
- 0=>'000011111000001111111110011000000011110000000001110000000001110000000001110000000001011000000011011100000111000111111100000001110000',
- 1=>'011000000000011000000000111111111111111111111111',
- 2=>'001000000011011000000111110000001101110000011001110000011001110000110001111001100001011111100001000110000001',
- 3=>'001000000010011000000011110000000001110000000001110000110001110000110001011001110011011111011111000110001100',
- 4=>'000000001100000000111100000001111100000011101100000111001100001100001100011000001100111111111111111111111111000000001100000000000100',
- 5=>'111111000001111111000001110001000001110001000001110001100001110001100001110000110011110000111111000000001100',
- 6=>'000011111000001111111110011000110011110001100001110001100001110001100001110001100001010001110011010000111111000000001100',
- 7=>'110000000000110000000111110000111111110001110000110111000000111100000000111000000000111000000000',
- 8=>'000100011110011111111111110011100001110001100001110001100001110001100001110011100001011111111111000100011110',
- 9=>'001111000000011111100001110000110001110000110001110000110001110000110001011000100001011111100111000111111110000001110000',
- );
- }
- public function getimagedata(){
- return $this->imagedata;
- }
- }
-
- class imageValidation
- {
- protected $imgfile;
- protected $imgsize;
-
- protected $imgdata;
- protected $hordata;
- protected $verdata;
-
- protected $imgfunc;
-
- function __construct( $imgfile , $imgsource = ''){
- $this->imgfile = $imgfile;
- $this->imgsize = getimagesize($imgfile);
- $this->imgfunc = $this->getImageFunc();
- if($this->imgfunc == 'imagecreatefromstring'){
- $this->imgfile = file_get_contents($this->imgfile);
- }
- $this->imgsource = new $imgsource();
- }
-
- function getImageData(){
- $func = $this->imgfunc;
- $resource = $func( $this->imgfile );
- for( $i=0 ; $i < $this->imgsize[1] ; $i++){
- for( $j=0 ; $j<$this->imgsize[0] ; $j++){
- $rgbcolor = imagecolorat( $resource , $j , $i);
- $rgbarray = imagecolorsforindex( $resource , $rgbcolor );
- if($rgbarray['red'] < 125 || $rgbarray['green']<125 || $rgbarray['blue'] < 125){
- $data[$i][$j]=1;
- }else{
- $data[$i][$j]=0;
- }
- }
- }
- $this->imgdata = $data;
- }
-
- function getHorData(){
- $z = 0;
- for($i=0; $i<$this->imgsize[1]; $i++){
- if(in_array('1',$this->imgdata[$i])){
- for($j=0; $j<$this->imgsize[0]; $j++){
- if($this->imgdata[$i][$j] == '1'){
- $newdata[$z][$j] = 1;
- }else{
- $newdata[$z][$j] = 0;
- }
- }
- $z++;
- }
- }
- $this->hordata = $newdata;
- return $newdata;
- }
-
- function getVerData(){
-
- for( $i=0; $i< count($this->hordata[0]) ; ++$i){
- for( $j=0;$j<count($this->hordata);$j++){
- $newdata[$i][$j] = $this->hordata[$j][$i];
- }
- }
- $i = 0;
- foreach($newdata as $k=> $v){
- if( in_array(1 , $v ) || (isset($newdata[$k+1]) && in_array(1,$newdata[$k+1]) )){
- $newdatas[$i] = $v;
- $i++;
- }
- }
- $this->verdata = $newdatas;
- return $newdatas;
- }
- function get(){
- $i = 0;
- foreach( $this->verdata as $val){
- if(in_array(1,$val)){
- $datas[$i] .= join("",$val);
- }else{
- $i++;
- }
- }
- foreach( $datas as $k => $val ){
- $number[$k] = $this->check($val);
- }
- return $number;
- }
- function check($str){
- $imgsourcesdata = $this->imgsource->getimagedata();
- foreach( $imgsourcesdata as $k => $val){
- similar_text($str,$val,$percent);
- $ret[$k]=$percent;
- }
- return array_search(max($ret),$ret);
- }
-
- function draw( $data ){
- $str = '';
- if(is_array($data)){
- foreach ($data as $key => $val){
- foreach ($val as $k => $v){
- if($v == 0){
- $str .= "<font color='#FFFFFF'>".$v."</font>";
- }else{
- $str .= $v;
- }
- }
- $str.= "<br/>";
- }
- }
- echo $str;
- }
-
- function getImageFunc(){
- switch($this->imgsize[2]){
- case IMAGETYPE_PNG :
- $this->imgfunc = 'imagecreatefrompng';
- break;
- case IMAGETYPE_JPEG :
- case IMAGETYPE_JPG :
- $this->imgfunc = 'imagecreatefromjpeg';
- break;
- case IMAGETYPE_GIF :
- $this->imgfunc = 'imagecreatefromgif';
- break;
- default:
- $this->imgfunc = 'imagecreatefromstring';
- break;
- }
- return $this->imgfunc;
- }
-
- }
-
- $img = new imageValidation($imgfile,'GanjiImage');
- $img->getImageData();
- $img->getHorData();
- $img->getVerData();
- $phone = $img->get();
- dump($phone);
-
-
-
- function dump($data){
- print("<pre>");
- print_r($data);
- print("</pre>");
- }
对于该图片,识别率很高。
Tags: 图像识别
PHP | 评论:1
| 阅读:29189
Submitted by gouki on 2010, July 15, 8:52 AM
本文内容全部来自《集体智慧编程》一书,原书采用的是python,因为没有python编程环境,所以用PHP实现
PHP代码
- <?php
-
-
-
-
- $datalist = array(
- 'Lisa Rose' => array(
- 'Lady in the Water' => 2.5,
- 'Snake on a Plane' => 3.5,
- 'Just My Luck' => 3.0,
- 'Superman Returns' => 3.5,
- 'You, Me and Dupree' => 2.5,
- 'The Night Listener'=> 3.0
- ),
- 'Gene Seymour' => array(
- 'Lady in the Water' => 3.0,
- 'Snake on a Plane' => 3.5,
- 'Just My Luck' => 1.5,
- 'Superman Returns' => 5.0,
- 'You, Me and Dupree' => 3.5,
- 'The Night Listener'=> 3.0
- ),
- 'Michael Phillips' => array(
- 'Lady in the Water' => 2.5,
- 'Snake on a Plane' => 3.0,
- 'Superman Returns' => 3.5,
- 'The Night Listener'=> 4.0
- ),
- 'Claudia Puig' => array(
- 'Snake on a Plane' => 3.5,
- 'Just My Luck' =>3.0,
- 'Superman Returns' => 4.0,
- 'You, Me and Dupree' => 2.5,
- 'The Night Listener'=>4.5
- ),
- 'Mick LaSalle' => array(
- 'Lady in the Water' => 3.0,
- 'Snake on a Plane' => 4.0,
- 'Just My Luck' => 2.0,
- 'Superman Returns' => 3.0,
- 'You, Me and Dupree' => 2.0,
- 'The Night Listener'=> 3.0
- ),
- 'Jack Matthews' => array(
- 'Lady in the Water' => 3.0,
- 'Snake on a Plane' => 4.0,
- 'Superman Returns' => 5.0,
- 'You, Me and Dupree' => 3.5,
- 'The Night Listener'=> 3.0
- ),
- 'Toby' => array(
- 'Snake on a Plane' => 4.5,
- 'Superman Returns' => 4.0,
- 'You, Me and Dupree' => 1.0,
- ),
- );
-
-
-
-
-
- function sim_distance ( $datalist , $person1 , $person2)
- {
- $si = array();
- foreach ( $datalist[$person1] as $moviename => $grade ){
- if( array_key_exists( $moviename, $datalist[$person2] )){
- $si[$moviename] = 1;
- }
- }
- if( emptyempty( $si )){
- return 0;
- }
- $powers = 0;
- foreach ( $si as $moviename=>$val ){
- $powers += pow( ($datalist[$person1][$moviename] - $datalist[$person2][$moviename] ), 2 );
- }
- return 1 / (1+ sqrt($powers));
- }
-
-
- echo( sim_distance( $datalist , 'Lisa Rose' , 'Gene Seymour') );
- echo( '<br/>' );
-
-
-
-
-
-
- function sim_person ( $datalist ,$person1 , $person2)
- {
- $si = array();
- foreach ( $datalist[$person1] as $moviename => $grade ){
- if( array_key_exists( $moviename, $datalist[$person2] )){
- $si[$moviename] = 1;
- }
- }
- if( emptyempty( $si )){
- return 1;
- }
- $n = count( $si );
- $sum1 = $sum1Sq = $sum2 = $sum2Sq = $pSum = 0;
- foreach ( $si as $moviename => $val ){
- $sum1 += $datalist[$person1][$moviename];
- $sum1Sq += pow( $datalist[$person1][$moviename], 2 );
- $sum2 += $datalist[$person2][$moviename];
- $sum2Sq += pow( $datalist[$person2][$moviename], 2 );
- $pSum += ( $datalist[$person1][$moviename] * $datalist[$person2][$moviename]);
- }
-
- $num = $pSum - ( $sum1 * $sum2 / $n);
- $den = sqrt( ( $sum1Sq - pow( $sum1, 2 ) / $n) * ( $sum2Sq - pow( $sum2, 2 ) / $n) );
- if ( $den == 0 ){
- return 0;
- }
- return ($num / $den );
- }
-
-
- echo( sim_person( $datalist , 'Lisa Rose' , 'Gene Seymour') );
-
- ?>
有点长,随便看看吧
Tags: 算法
PHP | 评论:1
| 阅读:20299
Submitted by gouki on 2010, April 29, 10:55 PM
一直在犹豫,是否要重构sablog,还是说仅仅把前台的模版系统重构一下就完事。
曾经想过是采用thinkPHP或者fleaPHP(用不惯Qee),但后来有各种各样的原因,导致就没有重构。
现在,文章数据也多了,有2年的数据了,也因此想要增加一点新功能,所以就在想着是否要重构一下。否则新功能加起来就很繁琐。
同时还要考虑一下模版,因为现在的模版太挫了,很多广告位都无法设定好,不是在顶部就是在侧部,根本没有人想点,如果在中间,或许点击的次数会多一点?
当然,我需要考虑的是缓存,一直以来sablog都是用的自带的文件缓存,虽然文件数量不大,但总也占着资源,为什么不把APC开启并使用呢?呵呵。。。
可是我还要考虑的是我原先博客里的代码高亮,虽然有想过要换到synaxhilight上面,但原来的数据怎么办?我总不可能一个个的改吧?
再然后就是,如果是换系统,那又得考虑数据迁移了,现在这样的后台,我还能够接受。一旦换系统,后台我还不一定能够熟悉呢。
最后,同一文章存放多个分类。。。【被朋友说话打断了,郁闷】
反正,就是一想法。
Tags: yii, sablog, 前端, 重构
PHP | 评论:5
| 阅读:25364
Submitted by gouki on 2009, April 29, 10:49 AM
PHPOO.com目前纯粹是用作UCHOME,原本我的想法也是类似于当成一个多用户博客来运作的。
但事实上,效果并不明显。
所以,我现在在考虑,是否使用supesite之类的CMS,把它打造成一个PHP的资讯、学习站点。
征集一下意见。。。
我现在的博客上的一部分资料转移过去,同时,收集一些比较经典、常用的资料。
再进行细分,不知道是否可行。
Tags: phpoo
Misc | 评论:1
| 阅读:19473