使用命令define('KK1',socket_read($s,99999));
$tp = unpack('H*',KK1);
$f1 = substr($tp[1],34,strlen($tp[1]));
print_r($tp);
不是说substr() 函数是返回字符串的一部分吗?
我把tp[1]和f1返回的值比较了下,怎么看两个值都没什么联系啊!小弟刚开始学PHP好多都不懂。请高手帮忙解释下,谢谢!!!

解决方案 »

  1.   

    substr用来截取字符串 没什么关系是 贴一下你的$tp值
      

  2.   

    8bcb82430000000a00000000820c0b0b03000900d3cb294e0000431c321c361c3e1c461c3f1c291c0b1d101c2e1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cc1ec91eac1ea21ec51ead1eb71ed41eba1eb81e0f1c0a1c391c311c0d1c461c2b1c0c1c131c2d1c500cffffff01022010000000009c934e09000000000000000000000000000000510c00ffffff0220100000000004a24e09000000000000000000000000000000282effffffff02201000000000acaa380b000000000000000000000000000000a50affffffff02201000
      

  3.   


    //substr是取子串函数
    $str = 'abcdefg'
    echo substr($str,3,5);
      

  4.   

    刚没细看 string substr ( string string, int start [, int length] )
    $f1 = substr($tp[1],34,strlen($tp[1]));
    print_r($tp);$tp[1] 值是B 长度才一位 你这样子写明显不对 
    最后你打印的是$tp 是不是错了
      

  5.   

    其实原理很简单,就是发送一个封包给服务器,然后服务器返回封包kkk1,接下来对KKK1进行unpack()解包
    得到$tp,再从$tp中取出字符串$f1,关键就是在这一步,既然$f1是截取的$tp的一部分那么它们的值应该有一部分相同吧?但事实我把两个值做了比较,得到的结果是完全不同。
      

  6.   

    那你看看你写的是什么!
    $tp[1]等于$tp吗?你截取的是$tp[1],是一个字节,和$tp怎么比较?
      

  7.   

    你的$tp是8bcb82430000000...  $tp[1] 就是b 长度是1 然后你要它从34位开始取 
    string substr ( string string, int start [, int length] )  这个函数自己看下
      

  8.   

    还是上源码吧不然真的搞不懂,前面的就不发了,从发送封包开始这是文件a.php的一部分$a->b->write($sss);//发送封包
    $a->b->read($a,$sss);//接收封包
    //KKK1 返回过来的 pocket封包
    $cc = $a->a->jiebao();
    $a->b->write2($sss,$cc);//发送封包
    $a->a->read($a,$sss);//接收封包
    //KK1 返回过来status封包
    $a->a->write($sss);
    $a->c->read($sss);//接收封包
    //KAO 返回过来的house封包
    $a->d->write($sss);
    $a->e->read($sss);//接收封包
    //RI 返回过来 task封包
    $tp = unpack('H*',KK1);
    $f1 = substr($tp[1],34,strlen($tp[1]));
    $len = strlen($f1)/2;
    $tp = unpack('H*',KKK1);
    $f2 = substr($tp[1],24,strlen($tp[1]));
    $tp = unpack('H*',KAO);
    $f3 = substr($tp[1],24,strlen($tp[1]));
    if (substr($f3,0,6) != '000000'){
    $f3 = '00'.$f3;
    }
    $tp = unpack('H*',RI);
    $f4 = substr($tp[1],24,strlen($tp[1]));
      

  9.   

    这是b.php
    <?php if (!defined('NAME')){echo 'not allow';exit;}
    include_once 'c.php';
    include_once 'd.php';
    include_once 'e.php';
    include_once 'f.php';
    include_once 'g.php';
    class zxadmin{
    public $a;
    public $b;
    public $c;
    public $d;
    public $e;

    function __construct(){
    $this->a = new status();
    $this->b = new pocket();
    $this->c = new house();
    $this->d = new task();
    $this->e = new socket();
    }
    function read($c){
    define('KKK1',socket_read($c,99999));
    }
    function roleid(){
    $this->roleidtohex();
    $this->roleidhextobase();
    }
    function roleidtohextt(){
    $hex = base_convert($_SESSION['roleid'],10,16);
    if (strlen($hex) < 8){
    $rhex = $hex;
    $ito = 8-strlen($hex);
    for ($i=1;$i<=$ito;$i++){
    $rhex = '0' . $rhex;
    }
    define('ABABC',base64_encode($rhex));
    }else {
    define('ABABC',base64_encode($hex));
    }
    }
    function roleidtohextttt($id){
    $hex = base_convert($id,10,16);
    if (strlen($hex) < 8){
    $rhex = $hex;
    $ito = 8-strlen($hex);
    for ($i=1;$i<=$ito;$i++){
    $rhex = '0' . $rhex;
    }
    return $rhex;
    }else {
    return $hex;
    }
    }
    function writeto($s){
    socket_write($s,pack('H*',$_SESSION['hhh'].$_SESSION['lll'].$_SESSION['hh'].FBA.'0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'.FBE.FBC.FBD.'00'));
    }
    function readxx($s){
    $b = socket_read($s,1024);
    $c = unpack('H*',$b);
    define('RE',$c[1]);
    }
    function roleidtohex(){
    $rid = strtoupper(base_convert($_SESSION['roleid'],10,16));
    switch (strlen($rid)){
    CASE 1:
    $rid = '000' . $rid;
    break;
    case 2:
    $rid = '00' . $rid;
    break;
    case 3:
    $rid = '0' . $rid;
    break;
    }
    define('ABAB',$rid);
    }
    function rere(){
    $a = substr(RE,-2,2);
    if ($a == '00') {
    echo '保存成功';
    }else {
    echo '保存失败,请查看gamedbd运行情况';
    }
    }
    function idtohex($c){
    $rid = strtoupper(base_convert($c,10,16));
    switch (strlen($rid)){
    CASE 1:
    $rid = '000' . $rid;
    break;
    case 2:
    $rid = '00' . $rid;
    break;
    case 3:
    $rid = '0' . $rid;
    break;
    }
    return $rid;
    }
    function read2($s){
    define('KK1',socket_read($s,99999));
    }
    function roleidhextobase(){
    define('ABABC',base64_encode(ABAB));
    }
    function len1(){
    define('BBL5',BBL1+BBL2);
    }
    function len2(){
    define('HHH1',strlen($_SESSION['hh'])/2);
    }
    function fbdxhex(){
    $dx = base_convert($_SESSION['lll'],10,16);
    switch (strlen($dx)){
    case 1:
    $fbdxfb = '0'.$dx;
    break;
    case 2:
    $fbdxfb = $dx;
    break;
    case 3:
    $fbdxfb = '8' . $dx;
    break;
    case 4:
    $fbdxfb = 'c000'.$dx;
    break;
    }
    $_SESSION['lll'] = $fbdxfb;
    }
    function dopocket(){
    $ppp1 = substr(FBB,0,8);
    $ppp2 = base_convert(substr(FBB,8,8),16,10)+3;
    $ppp3 = $this->roleidtohextttt($ppp2);
    $ppp4 = substr(FBB,16,strlen(FBB));
    define('FBE',$ppp1.$ppp3.$ppp4);
    }
    }
      

  10.   

    这是c.php
    <?php if (!defined('NAME')){echo 'not allow';exit;}
    class pocket{

    function read($a,$b){
    $a->read($b);
    }
    function a(){
    //a.php的MD5值
    define('AAAA','e6734c2c4a2af242266160f849e18663');
               define('BBBB','a.php');
    }
    function yz($a){
    $b = hash_file('SHA256',$a);
    if ($b !== $b){
    //return false;
    }else {
    //返回背包HEX
    return array('Ly84QkNDMDEwMg==','Ly9DOUJCMDAxMQ==','Ly8wOEFBOUExOA==','Ly84MDAwMDAwMA==','Ly8wMDAwMDIwMDAw');
    }
    }
    function decodehead(){
    $this->decodeheaddefind(substr(base64_decode($_SESSION['a'][0]),0,8));
    }
    function decodeheaddefind($a){
    define('ZZ1',substr($a,2,2));
    }
    function bb(){
    //返回pocket 第2个字节
    return substr(base64_decode($_SESSION['a'][1]),2,2);
    }
    function aaa(){
    $_SESSION['p'] = HEHE.HAHA2;
    }
    function pocketfb(){
    define('CCC1',base64_encode('0F00010C00'.substr(base64_decode($_SESSION['ppp']),10,20)));
    }
    function pocfb(){
    define('CCC2',base64_encode('0F0F0F'.substr(base64_decode(CCC1),10,20).base64_decode(ABABC)));
    }
    function write($s){
    $kkk = substr(base64_decode(CCC2),6,25);
    socket_write($s,pack('H*',$kkk));
    }
    function write2($s,$c){
    $cc = unpack('H*',$c);
    $kkk = substr($cc[1],10,4).substr(base64_decode(CCC2),10,25);
    socket_write($s,pack('H*',$kkk));
    }
    function ip(){
    define('PPP1','192');
    define('PPP2','127');
    }
    function pocketlen(){
    define('BBL3',strlen(FBC)/2);
    }
    }这是d.php<?php if (!defined('NAME')){echo 'not allow';exit;}
    class status{
    function __construct(){

    }
    function indexhash(){
    define('AAA','54c83f51827ab4c9561cde2c1f0fbc1cf2e1d48c7a14e479c3e185b79ccbe694');
    }
    function aa(){
    define('AAAAA','OEJCRDgzNzUwMDAwMDAyRDAwMDAwMDAwMDAwMDAwM0YwMDAwMDRFMDAwMDdBMTMwMDEwMDAwMDRFMDAwOEJDNzA4ODAwMDAwMDEwMDAwMDAwMDAwMTEzQzAwMDA2ODJCMDcwQzQwMDAwMDAwMEEwMDAxMDAwMA==');
    }
    function a(){

    }
    function yanz(){

    }
    function stat($a){
    $a->roleid();//返回定义好的 ABABC 就是base64的roleid
    }
    function stattt($a){
    if (!isset($_SESSION['index'])){
    echo 'not allow';
    exit;
    }else {
    $a->roleidtohextt();//返回定义好的 ABABC 就是base64的roleid
    }
    }
    function bbb($d){
    $d->b->decodehead();
    }
    function ccc(){
    if (!isset($_SESSION['index'])){
    echo 'not allow';exit;}
    else {
    define('ZZ2',substr(base64_decode($_SESSION['b'][0]),2,2));
    }

    }
    function jiebao(){
    return pack('H*','0F0F010102'.substr(base64_decode(AAAAA),60,4));
    }
    function read($a,$s){
    $a->read2($s);
    }
    function write($tt){
    socket_write($tt,pack('H*',ZZ1.ZZ2.substr(base64_decode(CCC2),10,25)));
    }
    function ip(){
    if (substr(P,0,3) != PPP1 && substr(P,0,3) != PPP2){
    echo 'IP地址'.P.'不合法。请使用192开头 或者 127开头的IP地址';
    exit;
    }else {
    define('SS1',HAHA1);
    }
    }
    function statlen(){
    define('BBL2',strlen(FBB)/2);
    }
    function getuserlist(){

    }
    }这是e.php<?php if (!defined('NAME')){echo 'not allow';exit;}
    class house{
    function indexname(){
    return $this->decode('aW5kZXgucGhw');
    }
    function decode($u){
    return base64_decode($u);
    }
    function yz(){
    $b = hash_file('MD5',BBBB);
    if ($b !== AAAA){
    //return false;
    return array('Ly9EM0JCMDAxMQ==');
    }else {
    //返回仓库的HEX
    return array('Ly9EM0JCMDAxMQ==');
    }
    }
    function bb(){
    define('BB2',ZZ1.ZZ2);
    }
    function bbb(){
    $_SESSION['pp'] = base64_encode('000101010101'.$_SESSION['p'].HAHA3);
    }
    function read($ttt){
    define('KAO',socket_read($ttt,888888));
    }
    function ip(){
    define('P',$_SESSION['ip']);
    }
    function tasklen(){
    define('BBL4',strlen(FBD)/2);
    }
    }
      

  11.   

    这是f.php
    <?php if (!defined('NAME')){echo 'not allow';exit;}
    class task {
    function __construct(){

    }
    function ccc(){
    $_SESSION['ppp'] = base64_encode('0201020201'.substr(base64_decode($_SESSION['pp']),12,20).HAHA4);
    }
    function write($tt){
    socket_write($tt,pack('H*',ZZ1.'CB'.substr(base64_decode(CCC2),10,25)));
    }
    function len2(){
    define('BBL6',BBL3+BBL4);
    }
    function tjlen(){
    $_SESSION['lll'] = HHH1+BBL5+BBL6+47+1;
    }
    }这是g.php<?php if (!defined('NAME')){echo 'not allow';exit;}
    class socket {
    function h(){
    echo 'hh';
    }
    function ddd($cc){
    define('BBBB1',ZZ1.$cc);
    }
    function eee(){
    define('HEHE',$this->fff().$this->ggg());
    }
    function fff(){
    $a = BBBB1;
    return $a;
    }
    function ggg(){
    $b = HAHA1;
    return $b;
    }
    function read($ttt){
    define('RI',socket_read($ttt,888888));
    }
    function deff($c){
    define('FBA',$c['cs'].$c['lv'].$c['wz1'].$c['exp'].$c['pp1'].$c['hp'].$c['mp'].$c['xyz'].$c['pk'].$c['map'].$c['time'].$c['cxy'].$c['xxxz1'].$c['xxxz2'].$c['dtq1'].$c['dtq1_v'].$c['dtq2'].$c['dtq2_v'].$c['dtq3'].$c['dtq3_v'].$c['dtq4'].$c['dtq4_v'].$c['dtq5'].$c['dtq5_v'].$c['dtq6'].$c['dtq6_v'].$c['house_len'].$c['house_v'].$c['dtq7'].$c['dtq7_v'].$c['dtq8'].$c['dtq8_v'].$c['dtq9'].$c['dtq9_v'].$c['dtq10'].$c['dtq10_v'].$c['mm1'].$c['mm2'].$c['mm3'].$c['mm4'].$c['lastdc'].$c['cxj'].$c['dtq11'].$c['dtq11_v'].$c['dtq12'].$c['dtq12_v'].$c['base']);
    define('FBB',$c['pocket']);
    define('FBC',$c['house']);
    define('FBD',$c['task']);
    }
    function head(){
    $_SESSION['hh'] = HAHA4.HAHA3.base64_decode(ABABC).'000000070000000102'.base64_decode(ABABC).'0007a13001'.base64_decode(ABABC);
    }
    function headaa(){
    $_SESSION['hhh'] = SS1.HAHA2;
    }
    function baselen(){
    define('BBL1',strlen(FBA)/2);
    }
    }