分享

php小偷程序原理分析

 最初九月雪 2014-10-18
第一天,不讲任何编程知识.把小偷程序原理讲给大家听.
拿华军软件开刀,经过今天的教程以后,我相信大家都能偷.
当然,你想偷别的站也是一个道理.关键是方法.
我们打开华军软件园主站地址:
http://www.onlinedown.net/index.htm

当打开完成以后,点 查看--查看源文件
系统会用记事本显示出来首页的HTML代码.

/*
<title>华军软件园——共享软件发布-下载-学习-研究-交流之园(推荐用1024*768)</title>
*/
看见这一行没?这就是标题.
---------------------------------------------
写小偷需要能看懂HTML才行哦?如果你一点HTML都看不懂的话,那就学起来有难度.
现在大家从HTML中,找出华军软件园首页的
--------------------
软件总数:30738 更新:287
国产软件:160国外软件:113
汉化补丁:13 数码软件:1
杀毒快报:10 资讯中心:42
---------------------------------
以上信息从HTML代码从 哪里开始.
是单独表格还是在表格内的行,或者列.
不会也没关系,看多了就会了.如果你不会以后想成为神偷就有难度,所以现在开始就得学习了.

好了,讲了这么多,就是告诉大家,小偷就是用ASP,PHP或者其他语言在程序中打开并且处理这些HTML
拿PHP讲
<?php
$files="http://www.onlinedown.net/index.htm";
$fp=fopen($files,"a");
.....
......
?>
把打开的HTML代码进行切割,更换.
比如刚才叫大家找的.下面的信息
-----------------
软件总数:30738 更新:287
国产软件:160国外软件:113
汉化补丁:13 数码软件:1
杀毒快报:10 资讯中心:42
--------------
PHP就是处理这个index.htm
把你要的信息切割处理.简单的这么讲
--
首页更新 = 从index.htm中切割出首页更新内容
--
然后在你要显示的地方输出,就显示了上面内容.

其他内容也是一样处理.
处理原理就是这样.所以说是一直自动更新.
按照你的办法切割着首页.它首页内容变新了,当访问你小偷的时候,你切割出来的内容是他的内容,所以是同步时时的内容.

今天就讲这么多,就弄明白原理,知道怎么回事就可以,别往深处想.如果你看不懂HTML的话,应该花几个小时看看了.以后要用.
对自己要有信心,其实每个人都很聪明的.知识是慢慢积累的.
我相信经过我几天的教程,到最后你能写出你自己的小偷来!





____________________________________________________________________________________________

今天教第二天.
有个朋友说的好,其实教功夫也是变相的教你怎么杀人,可是不说出来.
所以这个教程从下一篇开始就改个名字
叫<远程操作对方数据程序>有点土比小偷好听
第二天.
教几个函数给大家.
1 读取判断函数
2 更新cache函数
3 写入文件函数
4 切割字符函数
5 读取字符函数
---------------------------------------------------
在我们想写之前我们先要做好准备,构思一下怎么去写.
制作前构思1
我们打开华军首页
http://www.onlinedown.net/
经过我们统计,是不是发现它的连接有个很相同的规则?
1 根目录的index.htm文件
2 soft文件夹的 1.htm .......30000.htm
3 sort文件夹的 1_1.htm   200_1.htm
4 a-z文件夹 1.htm ....200.htm
到此我们可以想好一个打开函数,不是根目录 就是文件夹/名字
只有2中可能.
制作前构思2
为了让速度更快,我们最好把内容读过来存储起来.
1 减少了对对方站点的请求.
2 提供了速度.
这里我们判断这个文件写入的时间为准 我们自己设置一个时间
当写入时间 和现在的时间比一下,如果在我们的设置时间内的话.就是可以.
如果不在比如
文件写入时间 2004年5月18好 06:00 我们现在时间是2004年5月19号 18:00
我们设置时间是1个小时
当再次请求这个文件的时候 他发现已经过期了.就会重新向对方请求一次并且存入.
制作前构思3
为了以后频繁的操作简单话,把固定的操作写进一个函数.
切割字符.
一般切割就是 从第一个位置   切割到第二个位置 然后取中间部分
比如:
<html>
<head>
<title>演示站点</title>
</head>
<body>
</body>
</html>
从<title>开始切割到</title>
那切割出来的 就是 "演示站点"4个字
如果说,可以找到   几个 <title>怎么办?程序会从第一处开始切割
到这里构思差不多..
程序要干净明了才行,不要这一个文件不知道什么,那一个文件不知道哪来.
所以,如果你以后有做大站的机会的话,文件夹,文件一定要写的清楚,分的清楚.
既然明白了构思,我们就开始动手做了.
建立我们第一个PHP文件:
你可以用记事本,可以用Dreamweaver也可以用专用PHP编辑软件
取名字为 commom.php
内容为
------------------------
<?php
include './config.php';
include './global.php';
?>-----------------------
这个文件有什么用?就是在以后操作中直接 inclue 这个文件就可以用到所有的函数啊什么的
然后config.php是设置 URL 刷新时间 等等
global.php是 所有函数的文件
也就是今天要给教给大家的!
第一个个函数 open
-------------
function open($file,$type=''){
         global $fromurl,$referer;
         $cachename=$file;
                 if($type){
                         $file=$fromurl.'/'.$type.'/'.$file;
                 }else{
                         $file=$fromurl.$file;
                 }

                
                
                
                         if($open=file($file)){
                                         $count=count($open);
                                         for($i=0;$i<$count;$i++){
                                                 $theget.=$open[$i];

                                         }
                                        
                                 }else{
                                         die('请求过多,超时,请刷新');
                                 }
                
                
         return $theget;

}
----------------
解释过了,连接地址就2中请求,根目录,和 文件夹/名字
函数怎么用法等等,不多说了.建议大家下载译本PHP中文手册看看.
第二个函数
根据设置时间更新cache目录文件函数 update
---------------
function update($file,$type=''){
         global $timestamp,$flush;
         if(!file_exists("cache/$file")){
                 if($type){
                         $data=open($file,$type);
                 }else{
                         $data=open($file);
                 }
                
                 writetofile("cache/$file",$data);
         }else{
                 $lastflesh=@filemtime("cache/$file");
                
        
        
                 if($lastflesh + ($flush * 60) < $timestamp ){
                         if($type){
                                 $data=open($file,$type);
                         }else{
                                 $data=open($file);
                         }
                         writetofile("cache/$file",$data);
                 }
         }

}
--------
简单解释
$data=open($file,$type);就是用到上面的 open函数了
如果我们用 udate("index.htm");
那不就是用到了 update函数吗? 明白吗?
上面出现了writetofile函数 下面是代码
------------------------------
function writetofile($file_name,$data,$method="w") {
         if($filenum=fopen($file_name,$method)){
                 flock($filenum,LOCK_EX);
                 $file_data=fwrite($filenum,$data);
                 fclose($filenum);
                 return $file_data;
         }else{
                 return false;
         }
}---------------------------------
切割字符函数
------------------------
function cut($file,$from,$end){

         $message=explode($from,$file);
         $message=explode($end,$message[1]);
return         $message[0];
}
----------------------------
读取函数
---------------------
function readfromfile($file_name) {
         if($filenum=fopen($file_name,"r")){
                 flock($filenum,LOCK_SH);
                 $file_data=fread($filenum,filesize($file_name));
                 fclose($filenum);
                 return $file_data;
         }else{
                 return false;
         }
        
}
-------------------------------------
把所有函数写成一个文件 保存起来 取名字叫 global.php
内容如下:
------------------------------------------------------------------------------------------------
<?php
function open($file,$type=''){
         global $fromurl,$referer;
         $cachename=$file;
                 if($type){
                         $file=$fromurl.'/'.$type.'/'.$file;
                 }else{
                         $file=$fromurl.$file;
                 }

                
                
                
                         if($open=file($file)){
                                         $count=count($open);
                                         for($i=0;$i<$count;$i++){
                                                 $theget.=$open[$i];

                                         }
                                        
                                 }else{
                                         die('请求过多,超时,请刷新');
                                 }
                
                
         return $theget;

}

function update($file,$type=''){
//更新cache中的文件
         global $timestamp,$flush;
         if(!file_exists("cache/$file")){
                 if($type){
                         $data=open($file,$type);
                 }else{
                         $data=open($file);
                 }
                
                 writetofile("cache/$file",$data);
         }else{
                 $lastflesh=@filemtime("cache/$file");
                
        
        
                 if($lastflesh + ($flush * 60) < $timestamp ){
                         if($type){
                                 $data=open($file,$type);
                         }else{
                                 $data=open($file);
                         }
                         writetofile("cache/$file",$data);
                 }
         }

}
function readfromfile($file_name) {
         if($filenum=fopen($file_name,"r")){
                 flock($filenum,LOCK_SH);
                 $file_data=fread($filenum,filesize($file_name));
                 fclose($filenum);
                 return $file_data;
         }else{
                 return false;
         }
        
}


function writetofile($file_name,$data,$method="w") {
         if($filenum=fopen($file_name,$method)){
                 flock($filenum,LOCK_EX);
                 $file_data=fwrite($filenum,$data);
                 fclose($filenum);
                 return $file_data;
         }else{
                 return false;
         }
}
function cut($file,$from,$end){

         $message=explode($from,$file);
         $message=explode($end,$message[1]);
return         $message[0];
}
function updatecache($file,$cache=''){
         global $timestamp,$flush;
         if(!file_exists($file)){
                 writetofile($file,$cache);
                 $return=$cache;
         }elseif(@filemtime($file) < $timestamp - ($flush * 60)){
                 writetofile($file,$cache);
                 $return=$cache;
         }else{
                 $return=readfromfile($file);        
         }
         return $return;
}
?>
-----------------------------------------------------------------------------------------------------
其中有几个变量在config.php中设置一下
我们建立config.php文件 内容如下:
<?php
$fromurl = "http://www.onlinedown.net/";
$flush="120";//update函数中自动同步更新时间
?>
------------------------
现在位置我们有了3个文件了 commom.php config.php global.php
有了3个文件 程序总体完成了.接下来如何去偷呢?
心急的人可以先试试
建立一个index.php文件 就是首页
你先做好模板 的样子
HTML先做好.
然后在
<html>
........
........
</html>
的上方插入PHP代码
如下:
<?php
require './commom.php';
update("index.htm");
$file=readfromfile("cache/index.htm");
$gwrj = cut($file,"<TD width=\"307\" height=\"118\">","</TD>");
?>
<html>
.......
......
.......
</html>
在你想要插入的地方插入<?php echo $gwrj; ?>
就是从首页中切割出来的国外软件
自己试试



___________________________________________________________________________________________

今天我们教,偷取首页.不同的首页需要不同的偷法,主要是分析HTML代码.函数以及方法前面2天介绍的很清楚了.今天我们在实践中讲解和使用.

还是拿华军软件园开刀.
http://www.onlinedown.net/index.htm
用Dreamweaver新建一个index.php的页子.
注意:
先做好你要的首页模板,然后开始偷首页.由于考虑到对初学者的教程.所以先把模板和PHP处理代码放在同一个网页中.
以后教大家HTML和PHP的分离.

模板建立好以后,我们就开偷.
在<html>
的上方插入PHP代码,如下形式:
<?
require './commom.php';
update("index.htm");
$file=readfromfile("cache/index.htm");

?>
解释
require './commom.php'//引入commom.php文件
update("index.htm")//读取写入index.htm网页
$file=readfromfile("cache/index.htm")//从本地文件夹cache中读取index.htm
这里的$file是一个变量,你可以随便取名.也可以叫它 $html
但是后面用到的时候要统一.

上面代码,没有处理任何东西,也没有输出任何的东西.如果说输出$file的话,那么就是index.htm的所有html代码.
下面就开始到index.htm中拿我们想要的东东.

1 拿国外软件更新的代码.
大家可以取一个变量名为 $gwrj    //国外软件 名字随便取
怎么从这个index.htm拿出这个我们想要的国外软件呢?这里拿出我们上一节讲过的cut函数
$gwrj = cut($file,"<TD width=\"307\" height=\"118\">","</TD>");
解释
$xxx = cut($file,"$first","$end");
如何工作的呢?就是把$file(index.htm)从$first处切割取下面部分,在切割$end取上面部分.
比如说:
$file = "111222333444";
$xxx = cut($file,"1","3");//结果是11222 这样的解释应该明白吧?
注意:
"<TD width=\"307\" height=\"118\">"
在" "内的内容 如果也有 " 的话,需要在前面加 \
例子
"<TD width="307" height="118">"
成为
"<TD width=\"307\" height=\"118\">"
下面这段代码就是成功偷取了国外软件:
<?
require './commom.php';
update("index.htm");
$file=readfromfile("cache/index.htm");
$gwrj = cut($file,"<TD width=\"307\" height=\"118\">","</TD>");
?>
然后在你的html模板中,在需要显示的地方插入代码
<? echo $gwrj; ?>

其他偷取也一样.
注意:
这里拿出来的HTML需要更换为自己的代码,可以总的更换,也可以一个一个更换.
我们讲单独更换代码就是:
$gwrj = cut($file,"<TD width=\"307\" height=\"118\">","</TD>");
$gwrj = str_replace("soft/","soft.php?id=",$gwrj);
$gwrj = str_replace(".htm","",$gwrj);
解释:
就是把偷过来的国外软件中的代码更换.
原来的
<a target=_blank href="soft/18204.htm">
变为了现在的
<a target=_blank href="soft.php?id=18204">

基本差不多了,多菜鸟讲来应该很详细咯.先做好首页模板,然后一个一个的挖出来你想要的东西.
想一个问题.
index.htm中,有很多分类资讯的,都是调用JS显示的内容,你怎么把它拿过来显示在你的首页中.
希望大家偷的都很顺利.
简单讲下分类的偷取.和偷取首页一样.代码如下:
<?
require './commom.php';

if($soft){
         update("${soft}.htm","soft");
         $file=readfromfile("cache/${soft}.htm");
}
?>
soft.php
其中$soft就是从前面传递过来的soft.php?id=1234
如果传递过来1234
那么就是更新读取update("1234.html","soft");

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多