/
AuthLeech.py
129 lines (106 loc) · 3.65 KB
/
AuthLeech.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#This leeches auth codes from pastebin
#Uses some basic regex and other shit. Code checking is disabled (for now)
#Written by Contra
#Check Recoders.org for updates and more
from urlparse import urlparse
from xgoogle.search import GoogleSearch, SearchError
from datetime import date
import time
import urllib2
import time
import csv
import re
codewriter = csv.writer(open('all_codes.csv', 'w'), delimiter=',');
validwriter = csv.writer(open('valid_codes.csv', 'w'), delimiter=',');
scriptnames = csv.reader(open('scriptnames.csv', 'r'), delimiter=',');
auth = {};
for row in scriptnames:
auth[row[0]] = row[1];
def check_code(code):
request = urllib2.urlopen('https://impsoft.net/nexus/onstart.php?prodauth=%s&hash=9001'%code);
html = request.read();
splitsy = html.split("##");
#print splitsy[4];
if("1" in splitsy[4]):
return True
else:
return False
def mk_nice_domain(domain):
domain = re.sub("^www(\d+)?\.", "", domain)
return domain
def form_query(script):
query = 'site:pastebin.com "%s" %s' %(script, date);
return query;
def get_results(query):
gs = GoogleSearch(query);
gs.results_per_page = 9001;
results = gs.get_results();
ret = [];
for idx, res in enumerate(results):
domain = mk_nice_domain(res.url);
domain = domain.replace("pastebin.com/", "pastebin.com/raw.php?i=");
print 'Found codes at %s' % domain;
ret.append(domain);
return ret;
def get_name(auth_code):
auth_code = auth_code.lower().split("xz")[0];
name = auth.get(auth_code, 'SCRIPTNAME');
return name;
def grab_codes(results):
codes = [];
for url in results:
total = 0;
print 'Scanning %s' % url;
request = urllib2.urlopen(url);
html = request.read();
for rest in re.findall('[0-9][0-9]?[0-9][xX][zZ][A-Z0-9]{13}', html):
if (rest in old and new == 'y'):
print 'Old Code found %s' %rest;
else:
codes.append(rest);
total = total + 1;
print 'Found code %s' % rest;
print 'Found %s codes in scan' % total;
return codes;
def save_codes(allcodes, validcodes):
for code in allcodes:
codewriter.writerow([get_name(code), code]);
if(new == 'y'):
alreadyfound.writerow([code]);
for code in validcodes:
if(new == 'y'):
alreadyfound.writerow([code]);
validwriter.writerow([get_name(code), code]);
return;
print 'Beginning AuthLeech v0.2 by Contra';
print 'Visit Recoders.org for Updates and more';
date = raw_input('Date: ');
new = raw_input('Only find new auths?(y/n)');
old = {};
if(new == 'y'):
alreadyfound = csv.writer(open('already_found.csv', 'a'));
alreadyfound_reader = csv.reader(open('already_found.csv', 'r'));
if alreadyfound is not None:
for row in alreadyfound_reader:
old[row[0]] = '0';
print 'Finding only new Auths';
roots = ['perfecticus', 'autocookerpro', 'autofighterpro', 'autogdkpro', 'autosoulwarspro', 'autogdkpro', 'autoagilitypro'];
urls = [];
for i in roots:
main_query = form_query(i);
temp = get_results(main_query);
for d in temp:
urls.append(d);
urls = list(set(urls)); #Remove duplicates
allcodes = list(set(grab_codes(urls))); #Remove duplicates
#print 'Checking Codes...';
validcodes = [];
#for z in allcodes:
# if check_code(z):
# print 'Code %s is valid' % z;
# validcodes.append(z);
#print 'Found %s valid codes!' % len(validcodes);
print 'Found %s codes total!' % len(allcodes);
print 'Saving files...';
save_codes(allcodes, validcodes);
print 'Operation completed.';