рдлреНрд▓рд╛рд╕реНрдХрдорд╛ рд╕рд╛рдиреЛ рдмреНрдпрд╛рдХрдбреЛрд░ рд╡рд╛ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдХрдореНрдкреНрдпреБрдЯрд░ рдХрд╕рд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреЗ

рд╣реЗ рд╣рд╛рдмрд░!

рдореИрд▓реЗ рднрд░реНрдЦрд░реИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рд╕реНрдЯреНрд░рд┐рдордХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рд╕рдВрд╕реНрдХрд░рдг рд╣реЗрд░реЗрдБ рдХрд╕рд░реА рдЖрдлреНрдиреЛ рдЖрдлреНрдиреИ рдлреНрд▓рд╛рд╕реНрдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреЗред рд░ рдореИрд▓реЗ рдореЗрд░реЛ рдЬреНрдЮрд╛рдирд▓рд╛рдИ рдХреЗрд╣рд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛтАЛтАЛрд╕рдореЗрдХрди рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВред рдорд▓рд╛рдИ рд▓рд╛рдореЛ рд╕рдордпрд╕рдореНрдо рдХреЗ рд▓реЗрдЦреНрдиреЗ рдерд╛рд╣рд╛ рдерд┐рдПрди рд░ рдорд▓рд╛рдИ рдпреЛ рд╡рд┐рдЪрд╛рд░ рдЖрдпреЛ: "рдлреНрд▓рд╛рд╕реНрдХрдорд╛ рдорд┐рдиреА рдмреНрдпрд╛рдХрдбреЛрд░ рдХрд┐рди рдирдмрдирд╛рдЙрдиреЗ?"ред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдкрд╣рд┐рд▓реЛ рд╕рдВрд╕реНрдХрд░рдг рд░ рдмреНрдпрд╛рдХрдбреЛрд░рдХреЛ рд╕рдореНрднрд╛рд╡рдирд╛рд╣рд░реВ рддреБрд░реБрдиреНрддреИ рдореЗрд░реЛ рдЯрд╛рдЙрдХреЛрдорд╛ рджреЗрдЦрд╛ рдкрд░реНтАНрдпреЛред рддрд░ рдореИрд▓реЗ рддреБрд░реБрдиреНрддреИ рдмреНрдпрд╛рдХрдбреЛрд░ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВрдХреЛ рд╕реВрдЪреА рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВ:

  1. рд╡реЗрдмрд╕рд╛рдЗрдЯрд╣рд░реВ рдХрд╕рд░реА рдЦреЛрд▓реНрдиреЗ рдЬрд╛рдиреНрдиреБрд╣реЛрд╕реН
  2. рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд╣реБрдБрдЪ рдЫ
  3. рдХрд╛рд░реНрдпрдХреНрд░рдо, рдлреЛрдЯреЛ, рднрд┐рдбрд┐рдпреЛ рдЦреЛрд▓реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрд╣реЛрд╕реН

рддреНрдпрд╕реЛрднрдП, рдкрд╣рд┐рд▓реЛ рдмрд┐рдиреНрджреБ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд░ рдореЛрдбреНрдпреБрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рдЕрддреНрдпрдиреНрддреИ рд╕рдЬрд┐рд▓реЛ рдЫред рдореИрд▓реЗ рдУрдПрд╕ рдореЛрдбреНрдпреБрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рджреЛрд╕реНрд░реЛ рдмрд┐рдиреНрджреБ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВред рд░ рддреЗрд╕реНрд░реЛ рдПрдХ рдУрдПрд╕ рдореЛрдбреНрдпреБрд▓ рдорд╛рд░реНрдлрдд рдкрдирд┐ рдЫ, рддрд░ рдо "рд▓рд┐рдЩреНрдХрд╣рд░реВ" рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреБ (рддреНрдпрд╕ рдкрдЫрд┐ рдердк)ред

рд╕рд░реНрднрд░ рд▓реЗрдЦрди

рддреНрдпрд╕реИрд▓реЗ, *рдбреНрд░рдорд░реЛрд▓* рд╕рдмреИ рд╕рд░реНрднрд░ рдХреЛрдб:

from flask import Flask, request
import webbrowser
import os
import re

app = Flask(__name__)
@app.route('/mycomp', methods=['POST'])
def hell():
    json_string = request.json
    if json_string['command'] == 'test':
        return 'The server is running and waiting for commands...'
    if json_string['command'] == 'openweb':
        webbrowser.open(url='https://www.'+json_string['data'], new=0)
        return 'Site opening ' + json_string['data'] + '...'
    if json_string['command'] == 'shell':
        os.system(json_string['data'])
        return 'Command execution ' + json_string['data'] + '...'
    if json_string['command'] == 'link':
        links = open('links.txt', 'r')
        for i in range(int(json_string['data'])):
            link = links.readline()
        os.system(link.split('>')[0])
        return 'Launch ' + link.split('>')[1]
if __name__ == '__main__':
    app.run(host='0.0.0.0')

рдореИрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рдмреИ рдХреЛрдб рдлреНрдпрд╛рдБрдХрд┐рд╕рдХреЗрдХреЛ рдЫреБ, рдпреЛ рд╕рд╛рд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрдиреЗ рд╕рдордп рд╣реЛред

рд╕рдмреИ рдХреЛрдб рдкреЛрд░реНрдЯ 5000 рдорд╛ рд╕реНрдерд╛рдиреАрдп рдореЗрд╕рд┐рдирдорд╛ рдЪрд▓рд╛рдЗрдПрдХреЛ рдЫред рд╕рд░реНрднрд░рд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди, рд╣рд╛рдореАрд▓реЗ JSON POST рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрдиреБ рдкрд░реНрдЫред

JSON рд╕рдВрд░рдЪрдирд╛ рдЕрдиреБрд░реЛрдз рдЧрд░реНрдиреБрд╣реЛрд╕реН:

{тАШcommandтАЩ:  тАШcomecommandтАЩ, тАШdataтАЩ: тАШsomedataтАЩ}

рдард┐рдХ рдЫ, рдпрд╕рд▓реЗ 'рдХрдорд╛рдгреНрдб' рднрдиреЗрдХреЛ рд╣рд╛рдореАрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рдЪрд╛рд╣реЗрдХреЛ рдЖрджреЗрд╢ рд╣реЛ рднрдиреНрдиреЗ рдмреБрдЭрд┐рдиреНрдЫред рд░ 'рдбреЗрдЯрд╛' рдЖрджреЗрд╢ рдЖрд░реНрдЧреБрдореЗрдиреНрдЯрд╣рд░реВ рд╣реБрдиреНред

рддрдкрд╛рдИрдВрд▓реЗ рд╕рд░реНрднрд░рд╕рдБрдЧ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди JSON рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд▓реЗрдЦреНрди рд░ рдкрдард╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рдЕрдиреБрд░реЛрдзрд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ)ред рд░ рдпреЛ рдХрдиреНрд╕реЛрд▓ рдЧреНрд░рд╛рд╣рдХ рд▓реЗрдЦреНрди рд╕рдореНрднрд╡ рдЫред

рдЧреНрд░рд╛рд╣рдХ рд▓реЗрдЦреНрджреИ

рдХреЛрдб:

import requests

logo = ['nn',
        '******      ********',
        '*******     *********',
        '**    **    **     **',
        '**    **    **     **      Written on Python',
        '*******     **     **',
        '********    **     **',
        '**     **   **     **      Author: ROBOTD4',
        '**     **   **     **',
        '**     **   **     **',
        '********    *********',
        '*******     ********',
        'nn']

p = ''
iport = '192.168.1.2:5000'
host = 'http://' + iport + '/mycomp'

def test():
    dict = {'command': 'test', 'data': 0}
    r = requests.post(host, json=dict)
    if r.status_code == 200:
        print (r.content.decode('utf-8'))

def start():
    for i in logo:
        print(i)

start()
test()

while True:
    command = input('>')
    if command == '':
        continue
    a = command.split()
    if command == 'test':
        dict = {'command': 'test', 'data': 0}
        r = requests.post(host, json=dict)
        if r.status_code == 200:
            print (r.content.decode('utf-8'))
    if a[0] == 'shell':
        for i in range(1, len(a)):
            p = p + a[i] + ' '
        dict = {'command': 'shell', 'data': p}
        r = requests.post(host, json=dict)
        if r.status_code == 200:
            print (r.content.decode('utf-8'))
        p = ''
    if a[0] == 'link':
        if len(a) > 1:
            dict = {'command': 'link', 'data': int(a[1])}
            r = requests.post(host, json=dict)
            if r.status_code == 200:
                print (r.content.decode('utf-8'))
        else:
            print('╨Ъ╨╛╨╝╨╝╨░╨╜╨┤╨░ ╨╜╨╡ ╤Б╨╛╨┤╨╡╤А╨╢╨╕╤В ╨░╤А╨│╤Г╨╝╨╡╨╜╤В╨╛╨▓!')
    if a[0] == 'openweb':
            if len(a) > 1:
                dict = {'command': 'openweb', 'data': a[1]}
                r = requests.post(host, json=dict)
                if r.status_code == 200:
                    print (r.content.decode('utf-8'))
            else:
                print('╨Ъ╨╛╨╝╨╝╨░╨╜╨┤╨░ ╨╜╨╡ ╤Б╨╛╨┤╨╡╤А╨╢╨╕╤В ╨░╤А╨│╤Г╨╝╨╡╨╜╤В╨╛╨▓!')
    if a[0] == 'set':
        if a[1] == 'host':
            ip = a[2] + ':5000'
    if command == 'quit':
        break

рд╡реНрдпрд╛рдЦреНрдпрд╛рд╣рд░реВ:

рдкрд╣рд┐рд▓реЛ рдЪрд░рдг рдЕрдиреБрд░реЛрдз рдореЛрдбреНрдпреБрд▓ рдЖрдпрд╛рдд рдЧрд░реНрди рд╣реЛ (рд╕рд░реНрднрд░рд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди)ред рд╕реБрд░реБ рд░ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдердк рд╡рд┐рд╡рд░рдгред рд░ рддреНрдпрд╕рдкрдЫрд┐ рдЪрдХреНрд░ рдЬрд╕рдорд╛ рдЬрд╛рджреВ рд╣реБрдиреНрдЫред рдХреЗ рддрдкрд╛рдИрдВрд▓реЗ рдХреЛрдб рдкрдвреНрдиреБрднрдпреЛ? рддреНрдпрд╕реИрд▓реЗ рдЪрдХреНрд░рдорд╛ рд╣реБрдиреЗ рдЬрд╛рджреВрдХреЛ рдЕрд░реНрде рдмреБрдЭреНрдиреБрд╣реБрдиреНрдЫред рдЖрджреЗрд╢ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН - рдпреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдПрдХреЛ рдЫред рд╢реЗрд▓ - рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЖрджреЗрд╢рд╣рд░реВ (рддрд░реНрдХ рд╕реНрдХреЗрд▓ рдмрдиреНрдж рд╣реБрдиреНрдЫ)ред

рдкрд░реАрдХреНрд╖рдг - рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдпрджрд┐ рд╕рд░реНрднрд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ (рдмреНрдпрд╛рдХрдбреЛрд░)
рд▓рд┐рдЩреНрдХ - "рд╕рд░реНрдЯрдХрдЯ" рдХреЛ рдкреНрд░рдпреЛрдЧ
Openweb - рд╕рд╛рдЗрдЯ рдЦреЛрд▓реНрдиреЗ
рдЫреЛрдбреНрдиреБрд╣реЛрд╕реН - рдЧреНрд░рд╛рд╣рдХрдмрд╛рдЯ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреБрд╣реЛрд╕реН
рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН - рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рддрдкрд╛рдИрдВрдХреЛ рдХрдореНрдкреНрдпреБрдЯрд░рдХреЛ рдЖрдИрдкреА рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рд░ рдЕрдм рд▓рд┐рдЩреНрдХрдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рд╡рд┐рд╡рд░рдгрдорд╛ред

рд╕рд░реНрднрд░рдХреЛ рдЫреЗрдЙрдорд╛ link.txt рдлрд╛рдЗрд▓ рдЫред рдпрд╕рд▓реЗ рдлрд╛рдЗрд▓рд╣рд░реВ (рднрд┐рдбрд┐рдпреЛ, рдлреЛрдЯреЛрд╣рд░реВ, рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВ) рдорд╛ рд▓рд┐рдЩреНрдХрд╣рд░реВ (рдкреВрд░реНрдг рдорд╛рд░реНрдЧ) рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред

рд╕рдВрд░рдЪрдирд╛ рдпрд╕реНрддреЛ рдЫ:

╨┐╨╛╨╗╨╜╤Л╨╣_╨┐╤Г╤В╤М>╨╛╨┐╨╕╤Б╨░╨╜╨╕╨╡
╨┐╨╛╨╗╨╜╤Л╨╣_╨┐╤Г╤В╤М>╨╛╨┐╨╕╤Б╨░╨╜╨╕╨╡

рдкрд░рд┐рдгрд╛рдо

рд╣рд╛рдореАрд╕рдБрдЧ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХрдорд╛ (рд╡рд╛рдЗрдлрд╛рдЗ рдиреЗрдЯрд╡рд░реНрдХ рднрд┐рддреНрд░) рдХрдореНрдкреНрдпреБрдЯрд░ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрди рдмреНрдпрд╛рдХрдбреЛрд░ рд╕рд░реНрднрд░ рдЫред рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд░реВрдкрдорд╛, рд╣рд╛рдореА рдкрд╛рдЗрдерди рджреЛрднрд╛рд╖реЗ рднрдПрдХреЛ рдХреБрдиреИ рдкрдирд┐ рдЙрдкрдХрд░рдгрдмрд╛рдЯ рдХреНрд▓рд╛рдЗрдиреНрдЯ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдЫреМрдВред

PS рдореИрд▓реЗ рд╕реЗрдЯ рдХрдорд╛рдгреНрдб рдердкреЗ рддрд╛рдХрд┐ рдпрджрд┐ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдХрдореНрдкреНрдпреБрдЯрд░рд▓рд╛рдИ рдлрд░рдХ рдЖрдИрдкреА рддреЛрдХрд┐рдПрдХреЛ рдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рд╕реАрдзрд╛ рдЧреНрд░рд╛рд╣рдХрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди