рдлреНрд▓рд╛рд╕реНрдХрд╡рд░ рдПрдХ рд▓рд╣рд╛рди рдмреЕрдХрдбреЛрд░ рдХрд┐рдВрд╡рд╛ рд╕реНрдерд╛рдирд┐рдХ рдиреЗрдЯрд╡рд░реНрдХрд╡рд░ рд╕рдВрдЧрдгрдХ рдХрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛рд╡реЗ

рдЕрд╣реЛ рд╣рд╛рдмреНрд░!

рдореА рдЕрд▓реАрдХрдбреЗрдЪ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реНрдЯреНрд░реАрдордЪреА рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗрд▓реА рдЖрд╡реГрддреНрддреА рдкрд╛рд╣рд┐рд▓реА, рддреБрдордЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рдлреНрд▓рд╛рд╕реНрдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╕реЗ рддрдпрд╛рд░ рдХрд░рд╛рд╡реЗ. рдЖрдгрд┐ рдореА рдХрд╛рд╣реА рдкреНрд░рдХрд▓реНрдкрд╛рдд рдорд╛рдЭреЗ рдЬреНрдЮрд╛рди рдПрдХрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛. рдорд▓рд╛ рдмрд░реНрдпрд╛рдЪ рдХрд╛рд│рд╛рдкрд╛рд╕реВрди рдХрд╛рдп рд▓рд┐рд╣рд╛рд╡реЗ рд╣реЗ рдорд╛рд╣рд┐рдд рдирд╡реНрд╣рддреЗ рдЖрдгрд┐ рдорд▓рд╛ рдХрд▓реНрдкрдирд╛ рдЖрд▓реА: "рдлреНрд▓рд╛рд╕реНрдХрд╡рд░ рдорд┐рдиреА-рдмреЕрдХрдбреЛрдЕрд░ рдХрд╛ рдмрдирд╡реВ рдирдпреЗ?".

рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреЗ рдкрд╣рд┐рд▓реЗ рд░реВрдкреЗ рдЖрдгрд┐ рдмреЕрдХрдбреЛрдЕрд░рдЪреНрдпрд╛ рд╢рдХреНрдпрддрд╛ рдорд╛рдЭреНрдпрд╛ рдбреЛрдХреНрдпрд╛рдд рд▓рдЧреЗрдЪ рджрд┐рд╕реВ рд▓рд╛рдЧрд▓реНрдпрд╛. рдкрд░рдВрддреБ рдореА рддрд╛рдмрдбрддреЛрдм рдмреЕрдХрдбреЛрдЕрд░ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдЪреА рд╕реВрдЪреА рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛:

  1. рд╡реЗрдмрд╕рд╛рдЗрдЯреНрд╕ рдХрд╢реА рдЙрдШрдбрд╛рдпрдЪреА рддреЗ рдЬрд╛рдгреВрди рдШреНрдпрд╛
  2. рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдНрдХреНрд╕реЗрд╕ рдЖрд╣реЗ
  3. рдХрд╛рд░реНрдпрдХреНрд░рдо, рдлреЛрдЯреЛ, рд╡реНрд╣рд┐рдбрд┐рдУ рдЙрдШрдбрдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рд╡реНрд╣рд╛

рддрд░, рдкрд╣рд┐рд▓рд╛ рдореБрджреНрджрд╛ рд╡реЗрдмрдмреНрд░рд╛рдЙрдЭрд░ рдореЙрдбреНрдпреВрд▓ рд╡рд╛рдкрд░реВрди рдЕрдВрдорд▓рд╛рдд рдЖрдгрдгреЗ рдЕрддреНрдпрдВрдд рд╕реЛрдкреЗ рдЖрд╣реЗ. рдореА os рдореЙрдбреНрдпреВрд▓ рд╡рд╛рдкрд░реВрди рджреБрд╕рд░рд╛ рдореБрджреНрджрд╛ рдЕрдВрдорд▓рд╛рдд рдЖрдгрдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛. рдЖрдгрд┐ рддрд┐рд╕рд░рд╛ рджреЗрдЦреАрд▓ os рдореЙрдбреНрдпреВрд▓рджреНрд╡рд╛рд░реЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдореА "рд▓рд┐рдВрдХ" рд╡рд╛рдкрд░реЗрди (рддреНрдпрд╛рд╡рд░ рдирдВрддрд░ рдЕрдзрд┐рдХ).

рд╕рд░реНрд╡реНрд╣рд░ рд▓реЗрдЦрди

рддрд░, *рдбреНрд░рдореЛрд▓* рд╕рд░реНрд╡ рд╕рд░реНрд╡реНрд╣рд░ рдХреЛрдб:

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

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:

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

рдЪрд╛рдЪрдгреА - рд╕рд░реНрд╡реНрд╣рд░ рдЪрд╛рд▓реВ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рддреЗ рддрдкрд╛рд╕рд╛ (рдмреЕрдХрдбреЛрдЕрд░)
рд▓рд┐рдВрдХ - "рд╢реЙрд░реНрдЯрдХрдЯ" рдЪрд╛ рд╡рд╛рдкрд░
рдУрдкрдирд╡реЗрдм - рд╕рд╛рдЗрдЯ рдЙрдШрдбрдгреЗ
рд╕реЛрдбрд╛ - рдХреНрд▓рд╛рдпрдВрдЯрдордзреВрди рдмрд╛рд╣реЗрд░ рдкрдбрд╛
рд╕реЗрдЯ рдХрд░рд╛ - рд╕реНрдерд╛рдирд┐рдХ рдиреЗрдЯрд╡рд░реНрдХрд╡рд░ рдЖрдкрд▓реНрдпрд╛ рд╕рдВрдЧрдгрдХрд╛рдЪрд╛ рдЖрдпрдкреА рд╕реЗрдЯ рдХрд░рд╛

рдЖрдгрд┐ рдЖрддрд╛ рджреБрд╡реНрдпрд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░.

рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рдкреБрдвреЗ link.txt рдлрд╛рдЗрд▓ рдЖрд╣реЗ. рдпрд╛рдд рдлрд╛рдЗрд▓реНрд╕рдЪреЗ (рд╡реНрд╣рд┐рдбрд┐рдУ, рдлреЛрдЯреЛ, рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕) рд▓рд┐рдВрдХреНрд╕ (рдкреВрд░реНрдг рдорд╛рд░реНрдЧ) рдЖрд╣реЗрдд.

рд░рдЪрдирд╛ рдЕрд╢реА рдЖрд╣реЗ:

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

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

рдЖрдордЪреНрдпрд╛рдХрдбреЗ рд╕реНрдерд╛рдирд┐рдХ рдиреЗрдЯрд╡рд░реНрдХрд╡рд░ (рд╡рд╛рдп-рдлрд╛рдп рдиреЗрдЯрд╡рд░реНрдХрдордзреНрдпреЗ) рд╕рдВрдЧрдгрдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмреЕрдХрдбреЛрдЕрд░ рд╕рд░реНрд╡реНрд╣рд░ рдЖрд╣реЗ. рддрд╛рдВрддреНрд░рд┐рдХрджреГрд╖реНрдЯреНрдпрд╛, рдЖрдореНрд╣реА рдкрд╛рдпрдерди рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рд╡рд░реВрди рдХреНрд▓рд╛рдпрдВрдЯ рдЪрд╛рд▓рд╡реВ рд╢рдХрддреЛ.

PS рдореА рд╕реЗрдЯ рдХрдорд╛рдВрдб рдЬреЛрдбрд▓реА рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рд╕реНрдерд╛рдирд┐рдХ рдиреЗрдЯрд╡рд░реНрдХрд╡рд░реАрд▓ рд╕рдВрдЧрдгрдХрд╛рд▓рд╛ рджреБрд╕рд░рд╛ ip рдирд┐рдпреБрдХреНрдд рдХреЗрд▓рд╛ рдЕрд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА рддреЗ рдереЗрдЯ рдХреНрд▓рд╛рдпрдВрдЯрдордзреНрдпреЗ рдмрджрд▓реВ рд╢рдХрддрд╛.

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛