sticker-convert 2.9.0__py3-none-any.whl → 2.9.1__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- 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
|