full

full

by Инкогнито

Пишем свой ботнет в Termux на python. 1 часть. Что такое сокеты и их применение на яп python. Практика + Теория. Убиваем школохацкеров.

.

Перед прочтением, я создал отдельный канал где буду проводить вебинар и это твой шанс попасть ко мне в команду и начать зарабатывать - ТЫК

Хеллоу инкогнито! Если читаете эту статью, вам нужно сначала прочитать

https://telegra.ph/full-06-27-2

Чтобы понять, как все будет работать.



Итак начнем с теории.

Представим себе большой зал с множеством окошек, за которыми стоят девушки. Есть и пустые окна, за которыми никого нет. Те самые окна — это закрытые порты. Там, где окно открыто и за ним стоит девушка — это открытый порт, за которым стоит какое-то приложение, которое его прослушивает. То есть, если, вы подойдете к окошку с номером 9090, то вас поприветствуют и спросят, чем могут помочь. Так же и с сокетами. Создается приложение, которое прослушивает свой порт. Когда клиент устанавливает соединение с сервером на этом порту именно данное приложение будет ответственно за работу этим клиентом. Вы же не подойдете к одному окошку, а кричать вам будут из соседнего :)


После успешной установки соединения сервер и клиент начинают обмениваться информацией. Например, сервер посылает приветствие и предложение ввести какую-либо команду. Клиент в свою очередь вводит команду, сервер ее анализирует, выполняет необходимые операции и отдает клиенту результат.

Сервер

Сейчас создайте два файла — один для сервера, а другой для клиента.

Давайте рассмотрим это в python

Импортируем библиотеку socket


import socket


Теперь создадим сам сокет


sock = socket.socket()


Теперь выберем хост и порт. Чтобы не морать себе и вам мозги я возьму локальник (localhost). Однако мы оставим строку пустой, чтобы наш сервер был доступен для всех интерфейсов. А порт выберем любой от нуля до 65535. Однако на Android (песочнице linux) исспользование портов 0 — 1023 требует особых прав (root). Я выбрал порт 2222. Теперь свяжем наш сокет с данными хостом и портом с помощью метода bind, которому передается кортеж, первый элемент (или нулевой, если считать от нуля) которого — хост, а второй — порт:


sock.bind(('', 9090))


Отлично, теперь осталось принять соединения.

Обязательно указываем кол-во макс подключений(я указал 10000)

sock.listen(10000)


Теперь код для принятия подключений.


conn, addr = sock.accept()


Конн это параметры конекшена к серваку, а адрес это айпи и порт клиента.


Все! Теперь давайте примем данные, которые в будущем отошлет нам клиент.

Чтобы получить данные нужно воспользоваться методом recv, который в качестве аргумента принимает количество байт для чтения. Мы будем читать порциями по 1024 байт (или ~ 1 кб)

while True:
data = conn.recv(1024).decode()
if not data:
break
conn.send(data.upper())

(по умолчанию кодировка стоит на UTF-8)

Последнее исключение мы сделали для того, чтобы если клиент отослал нам больше байтов чем надо, мы послали его куда подальше, чтобы не напрягать сервер.


Ну и закроем соединение

conn.close()


Сервер готов, покажу что добавил я.

import socket
from colorama import Fore, Back, Style

sock = socket.socket()

sock.bind(('', 2222))
sock.listen(10000)

while True:

  conn, addr = sock.accept()

  print(Fore.GREEN + ' [!] Connection:' + Fore.BLUE , addr)

  f = open("bot_list.txt", 'r')
  text = f.read()
  f.close()

  comaddr = str(addr)
  con = comaddr.split()

  if con[1] == "('127.0.0.1',":

    print(Fore.CYAN + " [•] " + Fore.YELLOW + "Admin")
    try:
      data = conn.recv(1024).decode()

print(data)

    except:
      pass

      if not data:
        conn.send(data.upper())
        conn.close()


  if con[0] in text:
    print(Fore.CYAN + " [+] " + Fore.MAGENTA + "Old bot")
    print("")
  else:
    f = open("bot_list.txt", 'w')
    f.write(con[0] + '\n')

    f.close()
    print(Fore.CYAN + " [+] " + Fore.BLUE + "New bot!!!")
    print("")
data = conn.recv(10240)
print(data)
    if not data:
      conn.send(data.upper())
      conn.close()


Теперь рассмотрим клиента.

import socket

sock = socket.socket()

sock.connect(('localhost', 2222))
data = sock.send('привет, я твой клиент'.encode())

sock.close

print(data)

Вот и все, мы сделали сервер на половину, и клиента на 1/3

Ждите 2 части.

ОБЯЗАТЕЛЬНО ПОСЕЩЕНИЕ НАШЕГО ВЕБИНАРА - ТЫК

Incognito | Soft - не забываем подписываться на наш второй канал!

Chatex - лучший обменник в телеграмме

World of Dogs клановые бои, рейды, более 1000 вещей, которые можно продать за реальные деньги.

BLACK - место, где ты заработаешь 100.000 уже через месяц

Report Page