sticker-convert 2.9.0__py3-none-any.whl → 2.9.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sticker_convert/gui_components/windows/viber_get_auth_window.py +8 -2
- sticker_convert/resources/memdump_windows.ps1 +8 -0
- sticker_convert/utils/auth/get_viber_auth.py +266 -140
- sticker_convert/version.py +1 -1
- {sticker_convert-2.9.0.dist-info → sticker_convert-2.9.1.dist-info}/METADATA +3 -3
- {sticker_convert-2.9.0.dist-info → sticker_convert-2.9.1.dist-info}/RECORD +11 -10
- /sticker_convert/resources/{memdump.sh → memdump_linux.sh} +0 -0
- {sticker_convert-2.9.0.dist-info → sticker_convert-2.9.1.dist-info}/LICENSE +0 -0
- {sticker_convert-2.9.0.dist-info → sticker_convert-2.9.1.dist-info}/WHEEL +0 -0
- {sticker_convert-2.9.0.dist-info → sticker_convert-2.9.1.dist-info}/entry_points.txt +0 -0
- {sticker_convert-2.9.0.dist-info → sticker_convert-2.9.1.dist-info}/top_level.txt +0 -0
@@ -51,11 +51,17 @@ class ViberGetAuthWindow(BaseWindow):
|
|
51
51
|
justify="left",
|
52
52
|
anchor="w",
|
53
53
|
)
|
54
|
+
else:
|
55
|
+
self.explanation_lbl2 = Label(
|
56
|
+
self.frame_info,
|
57
|
+
text="You may be asked for admin password.",
|
58
|
+
justify="left",
|
59
|
+
anchor="w",
|
60
|
+
)
|
54
61
|
|
55
62
|
self.explanation_lbl0.grid(column=0, row=0, sticky="w", padx=3, pady=3)
|
56
63
|
self.explanation_lbl1.grid(column=0, row=1, sticky="w", padx=3, pady=3)
|
57
|
-
|
58
|
-
self.explanation_lbl2.grid(column=0, row=2, sticky="w", padx=3, pady=3)
|
64
|
+
self.explanation_lbl2.grid(column=0, row=2, sticky="w", padx=3, pady=3)
|
59
65
|
|
60
66
|
# Start button frame
|
61
67
|
self.launch_btn = Button(
|
@@ -0,0 +1,8 @@
|
|
1
|
+
param($processId)
|
2
|
+
$dumpFilePath = "$Env:TEMP\memdump.bin.$processId"
|
3
|
+
|
4
|
+
Powershell -c rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump $processId $dumpFilePath full
|
5
|
+
|
6
|
+
icacls $dumpFilePath /remove "Everyone"
|
7
|
+
icacls $dumpFilePath /grant "Everyone:(r)"
|
8
|
+
icacls $dumpFilePath /grant "Everyone:(w)"
|
@@ -1,137 +1,183 @@
|
|
1
1
|
#!/usr/bin/env python3
|
2
|
+
import importlib.util
|
2
3
|
import os
|
3
4
|
import platform
|
4
5
|
import shutil
|
6
|
+
import signal
|
5
7
|
import subprocess
|
6
8
|
import time
|
7
9
|
from getpass import getpass
|
8
10
|
from pathlib import Path
|
9
|
-
from typing import Callable, Optional, Tuple, cast
|
11
|
+
from typing import Callable, List, Optional, Tuple, cast
|
10
12
|
|
11
13
|
from sticker_convert.definitions import ROOT_DIR
|
12
14
|
|
13
|
-
# psutil is missing on arm64 linux appimage
|
14
|
-
# Note: There is no Viber Desktop on arm64 linux anyway
|
15
|
-
try:
|
16
|
-
import psutil
|
17
|
-
|
18
|
-
PSUTIL_LOADED = True
|
19
|
-
except ModuleNotFoundError:
|
20
|
-
PSUTIL_LOADED = False # type: ignore
|
21
|
-
|
22
15
|
MSG_NO_BIN = """Viber Desktop not detected.
|
23
16
|
Download and install Viber Desktop,
|
24
17
|
then login to Viber Desktop and try again."""
|
25
|
-
|
26
18
|
MSG_NO_AUTH = """Viber Desktop installed,
|
27
19
|
but viber_auth not found.
|
28
20
|
Please login to Viber Desktop and try again."""
|
29
|
-
|
30
21
|
MSG_SIP_ENABLED = """You need to disable SIP:
|
31
22
|
1. Restart computer in Recovery mode
|
32
23
|
2. Launch Terminal from the Utilities menu
|
33
24
|
3. Run the command `csrutil disable`
|
34
25
|
4. Restart your computer"""
|
26
|
+
MSG_NO_PGREP = "pgrep command or psutil python package is necessary"
|
27
|
+
MSG_LAUNCH_FAIL = "Failed to launch Viber"
|
28
|
+
MSG_PERMISSION_ERROR = "Failed to read Viber process memory"
|
35
29
|
|
36
|
-
MSG_NO_PSUTIL = "Python package psutil is necessary"
|
37
30
|
|
38
|
-
|
39
|
-
|
40
|
-
if
|
31
|
+
def check_admin_windows() -> bool:
|
32
|
+
username = os.getenv("username")
|
33
|
+
if username is None:
|
41
34
|
return False
|
42
35
|
|
36
|
+
s = subprocess.run(
|
37
|
+
["net", "user", username],
|
38
|
+
capture_output=True,
|
39
|
+
text=True,
|
40
|
+
).stdout
|
41
|
+
|
42
|
+
return True if "*Administrators" in s else False
|
43
|
+
|
44
|
+
|
45
|
+
def check_admin_linux() -> bool:
|
46
|
+
s = subprocess.run(
|
47
|
+
["sudo", "-l"],
|
48
|
+
capture_output=True,
|
49
|
+
text=True,
|
50
|
+
).stdout
|
51
|
+
|
52
|
+
return True if "may run the following commands" in s else False
|
53
|
+
|
54
|
+
|
55
|
+
def killall(name: str) -> bool:
|
43
56
|
result = False
|
44
57
|
|
45
|
-
|
46
|
-
|
47
|
-
|
58
|
+
while True:
|
59
|
+
pid = find_pid_by_name(name)
|
60
|
+
if pid is not None:
|
61
|
+
os.kill(pid, signal.SIGTERM)
|
48
62
|
result = True
|
63
|
+
else:
|
64
|
+
break
|
49
65
|
|
50
66
|
return result
|
51
67
|
|
52
68
|
|
53
69
|
def find_pid_by_name(name: str) -> Optional[int]:
|
54
|
-
if
|
70
|
+
if platform.system() == "Windows":
|
71
|
+
s = subprocess.run(
|
72
|
+
["powershell", "-c", "Get-Process", f"*{name}*"],
|
73
|
+
capture_output=True,
|
74
|
+
text=True,
|
75
|
+
).stdout
|
76
|
+
|
77
|
+
for line in s.split("\n"):
|
78
|
+
if name in line.lower():
|
79
|
+
info = name.split()
|
80
|
+
pid = info[5]
|
81
|
+
if pid.isnumeric():
|
82
|
+
return int(pid)
|
83
|
+
|
55
84
|
return None
|
85
|
+
else:
|
86
|
+
if platform.system() == "Darwin":
|
87
|
+
pattern = "Viber"
|
88
|
+
else:
|
89
|
+
pattern = ".*[Vv]iber.*"
|
90
|
+
pid = (
|
91
|
+
subprocess.run(["pgrep", pattern], capture_output=True, text=True)
|
92
|
+
.stdout.split("\n")[0]
|
93
|
+
.strip()
|
94
|
+
)
|
95
|
+
if pid == "" or pid.isnumeric() is False:
|
96
|
+
return None
|
97
|
+
else:
|
98
|
+
return int(pid)
|
99
|
+
|
100
|
+
|
101
|
+
if importlib.util.find_spec("psutil"):
|
102
|
+
import psutil
|
103
|
+
|
104
|
+
def killall(name: str) -> bool:
|
105
|
+
result = False
|
56
106
|
|
57
|
-
|
58
|
-
|
59
|
-
|
107
|
+
for proc in psutil.process_iter(): # type: ignore
|
108
|
+
if name in proc.name().lower():
|
109
|
+
proc.kill()
|
110
|
+
result = True
|
60
111
|
|
61
|
-
|
112
|
+
return result
|
113
|
+
|
114
|
+
def find_pid_by_name(name: str) -> Optional[int]:
|
115
|
+
for proc in psutil.process_iter(): # type: ignore
|
116
|
+
if name in proc.name().lower():
|
117
|
+
return proc.pid
|
118
|
+
|
119
|
+
return None
|
62
120
|
|
63
121
|
|
64
122
|
class GetViberAuth:
|
65
123
|
def __init__(self, cb_ask_str: Callable[..., str] = input):
|
66
124
|
self.cb_ask_str = cb_ask_str
|
67
125
|
|
68
|
-
def
|
69
|
-
if not PSUTIL_LOADED:
|
70
|
-
return None, MSG_NO_PSUTIL
|
71
|
-
|
72
|
-
member_id = None
|
73
|
-
m_token = None
|
74
|
-
m_ts = None
|
75
|
-
|
126
|
+
def relaunch_viber(self, viber_bin_path: str) -> Optional[int]:
|
76
127
|
killed = killall("viber")
|
77
128
|
if killed:
|
78
129
|
time.sleep(5)
|
79
|
-
|
130
|
+
|
131
|
+
if platform.system() == "Darwin":
|
132
|
+
cmd = ["open", "-n", viber_bin_path]
|
133
|
+
else:
|
134
|
+
cmd = [viber_bin_path]
|
135
|
+
subprocess.Popen(cmd)
|
80
136
|
time.sleep(10)
|
81
137
|
|
82
|
-
|
138
|
+
return find_pid_by_name("viber")
|
83
139
|
|
84
|
-
|
85
|
-
|
86
|
-
for address in process.search_by_value(str, 18, "X-Viber-Auth-Mid: "): # type: ignore
|
87
|
-
member_id_addr = cast(int, address) + 18
|
88
|
-
member_id_bytes = process.read_process_memory(member_id_addr, bytes, 20)
|
89
|
-
member_id_term = member_id_bytes.find(b"\x0d\x0a")
|
90
|
-
if member_id_term == -1:
|
91
|
-
continue
|
92
|
-
member_id = member_id_bytes[:member_id_term].decode(encoding="ascii")
|
93
|
-
break
|
94
|
-
if member_id is None:
|
95
|
-
return None, MSG_NO_AUTH
|
140
|
+
def get_mem_windows(self, viber_pid: int) -> Tuple[Optional[bytes], str]:
|
141
|
+
from pathlib import WindowsPath
|
96
142
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
143
|
+
memdump_ps_path = str(WindowsPath(ROOT_DIR / "resources/memdump_windows.ps1"))
|
144
|
+
arglist = (
|
145
|
+
f'-NoProfile -ExecutionPolicy Bypass -File "{memdump_ps_path}" {viber_pid}'
|
146
|
+
)
|
147
|
+
dump_fpath = os.path.expandvars(f"%temp%/memdump.bin.{viber_pid}")
|
148
|
+
|
149
|
+
cmd = [
|
150
|
+
"powershell",
|
151
|
+
"-NoProfile",
|
152
|
+
"-ExecutionPolicy",
|
153
|
+
"Bypass",
|
154
|
+
"-Command",
|
155
|
+
f"Start-Process -Verb RunAs powershell -ArgumentList '{arglist}'",
|
156
|
+
]
|
157
|
+
|
158
|
+
subprocess.run(cmd, capture_output=True, text=True)
|
159
|
+
|
160
|
+
while True:
|
161
|
+
try:
|
162
|
+
with open(dump_fpath, "rb") as f:
|
163
|
+
s = f.read()
|
164
|
+
if len(s) != 0:
|
165
|
+
break
|
166
|
+
time.sleep(1)
|
167
|
+
except (FileNotFoundError, PermissionError):
|
168
|
+
pass
|
169
|
+
|
170
|
+
while True:
|
171
|
+
try:
|
172
|
+
os.remove(dump_fpath)
|
107
173
|
break
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
killall("viber")
|
112
|
-
|
113
|
-
viber_auth = f"member_id:{member_id};m_token:{m_token};m_ts:{m_ts}"
|
114
|
-
msg = "Got viber_auth successfully:\n"
|
115
|
-
msg += f"{viber_auth=}\n"
|
116
|
-
|
117
|
-
return viber_auth, msg
|
118
|
-
|
119
|
-
def get_auth_linux(self, viber_bin_path: str) -> Tuple[Optional[str], str]:
|
120
|
-
if not PSUTIL_LOADED:
|
121
|
-
return None, MSG_NO_PSUTIL
|
122
|
-
|
123
|
-
member_id = None
|
124
|
-
m_token = None
|
125
|
-
m_ts = None
|
174
|
+
except PermissionError:
|
175
|
+
pass
|
126
176
|
|
127
|
-
|
128
|
-
if killed:
|
129
|
-
time.sleep(5)
|
130
|
-
subprocess.Popen([viber_bin_path])
|
131
|
-
time.sleep(10)
|
177
|
+
return s, ""
|
132
178
|
|
133
|
-
|
134
|
-
memdump_sh_path = (ROOT_DIR / "resources/
|
179
|
+
def get_mem_linux(self, viber_pid: int) -> Tuple[Optional[bytes], str]:
|
180
|
+
memdump_sh_path = (ROOT_DIR / "resources/memdump_linux.sh").as_posix()
|
135
181
|
|
136
182
|
s = subprocess.run(
|
137
183
|
[
|
@@ -141,7 +187,7 @@ class GetViberAuth:
|
|
141
187
|
capture_output=True,
|
142
188
|
).stdout
|
143
189
|
|
144
|
-
if s
|
190
|
+
if len(s) > 1000:
|
145
191
|
pass
|
146
192
|
elif shutil.which("pkexec") and os.getenv("DISPLAY"):
|
147
193
|
s = subprocess.run(
|
@@ -174,27 +220,80 @@ class GetViberAuth:
|
|
174
220
|
stdin=sudo_password_pipe.stdout,
|
175
221
|
).stdout
|
176
222
|
|
177
|
-
|
178
|
-
m_token_addr = s.find(b"X-Viber-Auth-Token: ")
|
179
|
-
m_ts_addr = s.find(b"X-Viber-Auth-Timestamp: ")
|
223
|
+
return s, ""
|
180
224
|
|
181
|
-
|
182
|
-
|
225
|
+
def get_mem_darwin(self, viber_pid: int) -> Tuple[Optional[bytes], str]:
|
226
|
+
subprocess.run(
|
227
|
+
[
|
228
|
+
"lldb",
|
229
|
+
"--attach-pid",
|
230
|
+
str(viber_pid),
|
231
|
+
"-o",
|
232
|
+
"process save-core /tmp/viber.dmp",
|
233
|
+
"-o",
|
234
|
+
"quit",
|
235
|
+
],
|
236
|
+
stdout=subprocess.DEVNULL,
|
237
|
+
stderr=subprocess.DEVNULL,
|
238
|
+
)
|
183
239
|
|
184
|
-
|
185
|
-
|
186
|
-
m_ts_addr += 24
|
240
|
+
with open("/tmp/viber.dmp", "rb") as f:
|
241
|
+
s = f.read()
|
187
242
|
|
188
|
-
|
189
|
-
member_id_term = member_id_bytes.find(b"\x0d\x0a")
|
190
|
-
if member_id_term == -1:
|
191
|
-
return None, MSG_NO_AUTH
|
192
|
-
member_id = member_id_bytes[:member_id_term].decode(encoding="ascii")
|
243
|
+
os.remove("/tmp/viber.dmp")
|
193
244
|
|
194
|
-
|
195
|
-
m_ts = s[m_ts_addr : m_ts_addr + 13].decode(encoding="ascii")
|
245
|
+
return s, ""
|
196
246
|
|
197
|
-
|
247
|
+
def get_auth_by_pme(
|
248
|
+
self, viber_bin_path: str, relaunch: bool = True
|
249
|
+
) -> Tuple[Optional[str], str]:
|
250
|
+
from PyMemoryEditor import OpenProcess # type: ignore
|
251
|
+
|
252
|
+
member_id = None
|
253
|
+
m_token = None
|
254
|
+
m_ts = None
|
255
|
+
|
256
|
+
if relaunch:
|
257
|
+
viber_pid = self.relaunch_viber(viber_bin_path)
|
258
|
+
else:
|
259
|
+
viber_pid = find_pid_by_name("viber")
|
260
|
+
if viber_pid is None:
|
261
|
+
return None, MSG_LAUNCH_FAIL
|
262
|
+
|
263
|
+
try:
|
264
|
+
with OpenProcess(pid=int(viber_pid)) as process:
|
265
|
+
for address in process.search_by_value(str, 18, "X-Viber-Auth-Mid: "): # type: ignore
|
266
|
+
member_id_addr = cast(int, address) + 18
|
267
|
+
member_id_bytes = process.read_process_memory(
|
268
|
+
member_id_addr, bytes, 20
|
269
|
+
)
|
270
|
+
member_id_term = member_id_bytes.find(b"\x0d\x0a")
|
271
|
+
if member_id_term == -1:
|
272
|
+
continue
|
273
|
+
member_id = member_id_bytes[:member_id_term].decode(
|
274
|
+
encoding="ascii"
|
275
|
+
)
|
276
|
+
break
|
277
|
+
if member_id is None:
|
278
|
+
return None, MSG_NO_AUTH
|
279
|
+
|
280
|
+
for address in process.search_by_value(str, 20, "X-Viber-Auth-Token: "): # type: ignore
|
281
|
+
m_token_addr = cast(int, address) + 20
|
282
|
+
m_token = process.read_process_memory(m_token_addr, str, 64)
|
283
|
+
break
|
284
|
+
if m_token is None:
|
285
|
+
return None, MSG_NO_AUTH
|
286
|
+
|
287
|
+
for address in process.search_by_value( # type: ignore
|
288
|
+
str, 24, "X-Viber-Auth-Timestamp: "
|
289
|
+
):
|
290
|
+
m_ts_addr = cast(int, address) + 24
|
291
|
+
m_ts = process.read_process_memory(m_ts_addr, str, 13)
|
292
|
+
break
|
293
|
+
if m_ts is None:
|
294
|
+
return None, MSG_NO_AUTH
|
295
|
+
except PermissionError:
|
296
|
+
return None, MSG_PERMISSION_ERROR
|
198
297
|
|
199
298
|
viber_auth = f"member_id:{member_id};m_token:{m_token};m_ts:{m_ts}"
|
200
299
|
msg = "Got viber_auth successfully:\n"
|
@@ -202,50 +301,43 @@ class GetViberAuth:
|
|
202
301
|
|
203
302
|
return viber_auth, msg
|
204
303
|
|
205
|
-
def
|
304
|
+
def get_auth_by_dump(
|
305
|
+
self, viber_bin_path: str, relaunch: bool = True
|
306
|
+
) -> Tuple[Optional[str], str]:
|
206
307
|
member_id = None
|
207
308
|
m_token = None
|
208
309
|
m_ts = None
|
209
310
|
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
if "enabled" in csrutil_status:
|
215
|
-
return None, MSG_SIP_ENABLED
|
216
|
-
|
217
|
-
killed = killall("viber")
|
218
|
-
if killed:
|
219
|
-
time.sleep(5)
|
220
|
-
subprocess.run(
|
221
|
-
["open", "-n", viber_bin_path],
|
222
|
-
stdout=subprocess.DEVNULL,
|
223
|
-
stderr=subprocess.DEVNULL,
|
224
|
-
)
|
225
|
-
time.sleep(10)
|
311
|
+
if platform.system() == "Darwin":
|
312
|
+
csrutil_status = subprocess.run(
|
313
|
+
["csrutil", "status"], capture_output=True, text=True
|
314
|
+
).stdout
|
226
315
|
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
)
|
316
|
+
if "enabled" in csrutil_status:
|
317
|
+
return None, MSG_SIP_ENABLED
|
318
|
+
elif (
|
319
|
+
platform.system() != "Windows"
|
320
|
+
and shutil.which("pgrep") is None
|
321
|
+
and importlib.find_loader("psutil") is None
|
322
|
+
):
|
323
|
+
return None, MSG_NO_PGREP
|
324
|
+
|
325
|
+
if relaunch:
|
326
|
+
viber_pid = self.relaunch_viber(viber_bin_path)
|
327
|
+
else:
|
328
|
+
viber_pid = find_pid_by_name("viber")
|
329
|
+
if viber_pid is None:
|
330
|
+
return None, MSG_LAUNCH_FAIL
|
243
331
|
|
244
|
-
|
245
|
-
s =
|
332
|
+
if platform.system() == "Windows":
|
333
|
+
s, msg = self.get_mem_windows(viber_pid)
|
334
|
+
elif platform.system() == "Darwin":
|
335
|
+
s, msg = self.get_mem_darwin(viber_pid)
|
336
|
+
else:
|
337
|
+
s, msg = self.get_mem_linux(viber_pid)
|
246
338
|
|
247
|
-
|
248
|
-
|
339
|
+
if s is None:
|
340
|
+
return None, msg
|
249
341
|
|
250
342
|
member_id_addr = s.find(b"X-Viber-Auth-Mid: ")
|
251
343
|
m_token_addr = s.find(b"X-Viber-Auth-Token: ")
|
@@ -307,9 +399,43 @@ class GetViberAuth:
|
|
307
399
|
if not viber_bin_path:
|
308
400
|
return None, MSG_NO_BIN
|
309
401
|
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
402
|
+
# get_auth_by_dump()
|
403
|
+
# + Fast
|
404
|
+
# - Requires admin
|
405
|
+
|
406
|
+
# get_auth_by_pme()
|
407
|
+
# + No admin (If have permission to read process)
|
408
|
+
# - Slow
|
409
|
+
# - Cannot run on macOS
|
410
|
+
|
411
|
+
# If admin, prefer get_auth_by_dump() over get_auth_by_pme(), vice versa
|
412
|
+
methods: List[Callable[[str, bool], Tuple[Optional[str], str]]] = []
|
413
|
+
relaunch = True
|
414
|
+
viber_auth = None
|
415
|
+
msg = ""
|
416
|
+
|
417
|
+
pme_present = importlib.util.find_spec("PyMemoryEditor") is not None
|
418
|
+
if platform.system() == "Darwin":
|
419
|
+
methods.append(self.get_auth_by_dump)
|
420
|
+
elif platform.system() == "Windows":
|
421
|
+
methods.append(self.get_auth_by_dump)
|
422
|
+
if pme_present:
|
423
|
+
methods.append(self.get_auth_by_pme)
|
424
|
+
if check_admin_windows() is False:
|
425
|
+
methods.reverse()
|
314
426
|
else:
|
315
|
-
|
427
|
+
if not os.path.isfile("/.dockerenv"):
|
428
|
+
methods.append(self.get_auth_by_dump)
|
429
|
+
if pme_present:
|
430
|
+
methods.append(self.get_auth_by_pme)
|
431
|
+
if check_admin_linux() is False:
|
432
|
+
methods.reverse()
|
433
|
+
|
434
|
+
for method in methods:
|
435
|
+
viber_auth, msg = method(viber_bin_path, relaunch)
|
436
|
+
relaunch = False
|
437
|
+
if viber_auth is not None:
|
438
|
+
break
|
439
|
+
|
440
|
+
killall("viber")
|
441
|
+
return viber_auth, msg
|
sticker_convert/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: sticker-convert
|
3
|
-
Version: 2.9.
|
3
|
+
Version: 2.9.1
|
4
4
|
Summary: Convert (animated) stickers to/from WhatsApp, Telegram, Signal, Line, Kakao, Viber, iMessage. Written in Python.
|
5
5
|
Author-email: laggykiller <chaudominic2@gmail.com>
|
6
6
|
Maintainer-email: laggykiller <chaudominic2@gmail.com>
|
@@ -376,11 +376,11 @@ Requires-Dist: mergedeep ~=1.3.4
|
|
376
376
|
Requires-Dist: numpy >=1.22.4
|
377
377
|
Requires-Dist: Pillow ~=10.3.0
|
378
378
|
Requires-Dist: pyoxipng ~=9.0.0
|
379
|
-
Requires-Dist: python-telegram-bot ~=21.
|
379
|
+
Requires-Dist: python-telegram-bot ~=21.3
|
380
380
|
Requires-Dist: psutil ~=5.9.8
|
381
381
|
Requires-Dist: PyMemoryEditor ~=1.5.22
|
382
382
|
Requires-Dist: requests ~=2.32.3
|
383
|
-
Requires-Dist: rlottie-python ~=1.3.
|
383
|
+
Requires-Dist: rlottie-python ~=1.3.6
|
384
384
|
Requires-Dist: signalstickers-client-fork-laggykiller ~=3.3.0.post2
|
385
385
|
Requires-Dist: sqlcipher3-wheels ~=0.5.2.post1
|
386
386
|
Requires-Dist: tqdm ~=4.66.4
|
@@ -6,7 +6,7 @@ sticker_convert/definitions.py,sha256=ZhP2ALCEud-w9ZZD4c3TDG9eHGPZyaAL7zPUsJAbjt
|
|
6
6
|
sticker_convert/gui.py,sha256=hZOp2SyEYKbCRm9SRTItBqEk724SHtSqK_Txo0wpL8Q,31194
|
7
7
|
sticker_convert/job.py,sha256=4C2WwB3PFldacqI8UPnM10thM087VLEl9wn6P9_LtS0,26128
|
8
8
|
sticker_convert/job_option.py,sha256=yFwHEhW8Gzp9dfiXakkCREfejAIJhiOxwD4Wlg9jcPk,7805
|
9
|
-
sticker_convert/version.py,sha256=
|
9
|
+
sticker_convert/version.py,sha256=baBhLdXSz6WrhsijOG00KYOzp3-KSIDIG59dfAQPMrQ,46
|
10
10
|
sticker_convert/downloaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
11
|
sticker_convert/downloaders/download_base.py,sha256=x18bI2mPpbXRnSmStBHEb1IvN-VPCilOHLQUs6YPUEU,4041
|
12
12
|
sticker_convert/downloaders/download_kakao.py,sha256=TCygK-LiSkk3yEYZymZsHVwtW5JmQX6JeIneh25XxFA,14984
|
@@ -31,7 +31,7 @@ sticker_convert/gui_components/windows/base_window.py,sha256=xBE1peGMPvWsdrFej0C
|
|
31
31
|
sticker_convert/gui_components/windows/kakao_get_auth_window.py,sha256=AvXB2Q8pAPkKILHTvlLGV9jfBcvskCA4arko4nvBTdo,7115
|
32
32
|
sticker_convert/gui_components/windows/line_get_auth_window.py,sha256=S4ES_lk2-GDvPokZtYALnUc5zW1VbS4WulNqO9K1aSs,3375
|
33
33
|
sticker_convert/gui_components/windows/signal_get_auth_window.py,sha256=kbJPe558lLP4PbPT2mCw4Xgh06FX5mBEZXoW-Q1LvWY,4584
|
34
|
-
sticker_convert/gui_components/windows/viber_get_auth_window.py,sha256=
|
34
|
+
sticker_convert/gui_components/windows/viber_get_auth_window.py,sha256=Ne0DG4wog7Pzw-fPsbr7HX40okFFo1INusVCSwSAQdQ,5051
|
35
35
|
sticker_convert/ios-message-stickers-template/.gitignore,sha256=4uuTph_9eHfqXHUavLOmGOji6aIHOif2bUEU_hCBn4Y,9
|
36
36
|
sticker_convert/ios-message-stickers-template/README.md,sha256=oN0FvJkCWWjSZ3PMrCvY3T1zCsdkZYFgGHAoFh0Kmt8,467
|
37
37
|
sticker_convert/ios-message-stickers-template/.github/FUNDING.yml,sha256=3LlmdSAGDsBA2o_C1iBYTNLwkABnyZuN0zxgPPyd-f8,70
|
@@ -72,7 +72,8 @@ sticker_convert/resources/compression.json,sha256=tNBGCmFqZ4Bsik1-xtvkOSlRu1uF6K
|
|
72
72
|
sticker_convert/resources/emoji.json,sha256=sXSuKusyG1L2Stuf9BL5ZqfzOIOdeAeE3RXcrXAsLdY,413367
|
73
73
|
sticker_convert/resources/help.json,sha256=VgRYw5iNQGn_CDA4pTnk5QUO21lsx0JIvWgUV2kHPvY,6906
|
74
74
|
sticker_convert/resources/input.json,sha256=S3CkInBMLrk5OS9aJfuTCDsf_64NOjNT3IKQr7d1hM0,2665
|
75
|
-
sticker_convert/resources/
|
75
|
+
sticker_convert/resources/memdump_linux.sh,sha256=YbdX5C5RyCnoeDUE6JgTo8nQXKhrUw5-kFDx5bQp9tY,651
|
76
|
+
sticker_convert/resources/memdump_windows.ps1,sha256=CfyNSSEW3HJOkTu-mKrP3qh5aprN-1VCBfj-R1fELA0,302
|
76
77
|
sticker_convert/resources/output.json,sha256=V4OseXEm3O16cAjHDVZRq8-SY-0_7cFFR_cyF-0Y_eQ,1570
|
77
78
|
sticker_convert/uploaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
78
79
|
sticker_convert/uploaders/compress_wastickers.py,sha256=SMPf1_ir30ZKO2ChHspDFuyaufx0XeVBVLOlHmawEdY,6021
|
@@ -86,7 +87,7 @@ sticker_convert/utils/url_detect.py,sha256=L2QwE2jwN85MoyYsW_4GvBHuoedrlhoIdAmzw
|
|
86
87
|
sticker_convert/utils/auth/get_kakao_auth.py,sha256=ipAZ1DUd5CMTpUoxRXHVOFC3DKIpxwxpTYAfrOJ6UZ8,9829
|
87
88
|
sticker_convert/utils/auth/get_line_auth.py,sha256=8l8ha2vQmk3rHGvDE7PkcxQXbH3oe62LKbI3qVUtvqc,2196
|
88
89
|
sticker_convert/utils/auth/get_signal_auth.py,sha256=6Sx-lMuyBHeX1RpjAWI8u03qnRu9fmO4p89pd7fowOE,4925
|
89
|
-
sticker_convert/utils/auth/get_viber_auth.py,sha256=
|
90
|
+
sticker_convert/utils/auth/get_viber_auth.py,sha256=UUdnESATVGj-mrDuM_5wq75ouQFqPvFtdyqjGDqxi5Y,13734
|
90
91
|
sticker_convert/utils/files/cache_store.py,sha256=etfe614OAhAyrnM5fGeESKq6R88YLNqkqkxSzEmZ0V0,1047
|
91
92
|
sticker_convert/utils/files/json_manager.py,sha256=Vr6pZJdLMkrJJWN99210aduVHb0ILyf0SSTaw4TZqgc,541
|
92
93
|
sticker_convert/utils/files/json_resources_loader.py,sha256=flZFixUXRTrOAhvRQpuSQgmJ69yXL94sxukcowLT1JQ,1049
|
@@ -97,9 +98,9 @@ sticker_convert/utils/media/apple_png_normalize.py,sha256=LbrQhc7LlYX4I9ek4XJsZE
|
|
97
98
|
sticker_convert/utils/media/codec_info.py,sha256=1QfW3wgZ5vOk7T4XtLHYvJK1x8RbASRPSvhKEPkcu9A,15747
|
98
99
|
sticker_convert/utils/media/decrypt_kakao.py,sha256=4wq9ZDRnFkx1WmFZnyEogBofiLGsWQM_X69HlA36578,1947
|
99
100
|
sticker_convert/utils/media/format_verify.py,sha256=MH68GLJfXeL8WFT8emtj355K5BLAtUX64tQ59nugx2c,5673
|
100
|
-
sticker_convert-2.9.
|
101
|
-
sticker_convert-2.9.
|
102
|
-
sticker_convert-2.9.
|
103
|
-
sticker_convert-2.9.
|
104
|
-
sticker_convert-2.9.
|
105
|
-
sticker_convert-2.9.
|
101
|
+
sticker_convert-2.9.1.dist-info/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
|
102
|
+
sticker_convert-2.9.1.dist-info/METADATA,sha256=Sim5kcFjuwRWedkvQhuAIyCMmpYRQ-bA3cAIqQiZuFw,51091
|
103
|
+
sticker_convert-2.9.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
104
|
+
sticker_convert-2.9.1.dist-info/entry_points.txt,sha256=MNJ7XyC--ugxi5jS1nzjDLGnxCyLuaGdsVLnJhDHCqs,66
|
105
|
+
sticker_convert-2.9.1.dist-info/top_level.txt,sha256=r9vfnB0l1ZnH5pTH5RvkobnK3Ow9m0RsncaOMAtiAtk,16
|
106
|
+
sticker_convert-2.9.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|