-
Notifications
You must be signed in to change notification settings - Fork 4
/
LASEr.py
101 lines (90 loc) · 2.94 KB
/
LASEr.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
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
import datetime
import time
import requests
import threading
import platform
import argparse
import random
writing = []
sys = platform.system()
mac="4a"
email='null'
header={
'Range': 'bytes=0-0',
'user-agent': "okhttp/3.10.0"
}
class downloadThread (threading.Thread):
def __init__(self, id):
threading.Thread.__init__(self)
self.id = id
def run(self):
try:
download(self.id)
except Exception:
log(self.id, "ERROR")
raise Exception
def download(id):
url = "https://cloud.linspirer.com:883/download.php?email="+email+"&appid="+str(id)+"&swdid="+mac+"&version="+str(random.randint(1,9000000))
realurl="Null"
res = requests.head(url, stream=True,headers=header)
try:
url=res.headers['Location']
print(url)
realurl=url
except:
print("id:",str(id),"null")
return
res = requests.get(url,timeout=None)
with open("./packages/"+str(id)+".apk", "wb") as f:
f.write(res.content)
text = os.popen("java -jar GetAPKInfo_EN.jar ./packages/" +
str(id)+".apk").read()
packageName = text[text.find(
"PackageName: ")+13:text.find("\n", text.find("PackageName: ")+13)]
versionName = text[text.find(
"Version: ")+8:text.find("\n", text.find("Version: ")+8)]
log(id, "PackageName "+packageName+' '+versionName)
f.close()
output(str(id), realurl ,packageName+','+versionName[1:])
if sys == "Windows":
os.system("del packages\\"+str(id)+".apk")
else :
os.system("rm ./packages/"+str(id)+".apk")
def log(id, message):
print("["+datetime.datetime.now().strftime("%H:%M:%S")+"]" +
"["+str(id)+"]:", message)
def output(id, link,package):
global writing
writing.append([id,link, package])
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Please run with at least 3 integers.')
parser.add_argument('begin_id', type=int, help='Start_id')
parser.add_argument('end_id', type=int, help='End_id')
parser.add_argument('threads', type=int, help='Threads Count')
parser.add_argument('run_time', nargs='?', type=int, help='Run_Time (sec)',default=None)
args = parser.parse_args()
beg = args.begin_id
end = args.end_id
threads = args.threads
now = beg-1
run_time = args.run_time
if not os.path.exists("./packages"):
os.mkdir("./packages")
while now < end:
if threading.activeCount() <= threads:
downloadThread(now+1).start()
now = now+1
if len(writing):
f = open("./result.csv", "a")
f.write(writing[0][0]+","+writing[0][1]+","+writing[0][2]+"\n")
writing.pop(0)
f.close()
if run_time is None:
while threading.activeCount() != 0:
pass
else:
time.sleep(run_time)
exit(0)