ื“ืœืช ืื—ื•ืจื™ืช ืงื˜ื ื” ืขืœ Flask ืื• ืื™ืš ืœืฉืœื•ื˜ ื‘ืžื—ืฉื‘ ื‘ืจืฉืช ืžืงื•ืžื™ืช

ื”ื™ื™ ื”ื‘ืจ!

ืœืื—ืจื•ื ื” ืฆืคื™ืชื™ ื‘ื’ืจืกื” ืฉื”ื•ืจื“ืช ืฉืœ ื–ืจื ื”ืชื›ื ื•ืช "ื›ื™ืฆื“ ืœื™ืฆื•ืจ ื™ื™ืฉื•ื ืื™ื ื˜ืจื ื˜ ืžืฉืœืš ื‘-Flask." ื•ื”ื—ืœื˜ืชื™ ืœื’ื‘ืฉ ืืช ื”ื™ื“ืข ืฉืœื™ ื‘ืคืจื•ื™ืงื˜ ื›ืœืฉื”ื•. ื”ืจื‘ื” ื–ืžืŸ ืœื ื™ื“ืขืชื™ ืžื” ืœื›ืชื•ื‘ ื•ื”ืจืขื™ื•ืŸ ืขืœื” ืœื™: "ืœืžื” ืœื ืœืขืฉื•ืช ืžื™ื ื™-ื“ืœืช ืื—ื•ืจื™ืช ื‘ืคืœืืกืง?"

ื”ืืคืฉืจื•ื™ื•ืช ื”ืจืืฉื•ื ื•ืช ืœืžื™ืžื•ืฉื™ื ื•ื™ื›ื•ืœื•ืช ืฉืœ ื”ื“ืœืช ื”ืื—ื•ืจื™ืช ื”ื•ืคื™ืขื• ืžื™ื“ ื‘ืจืืฉื™. ืื‘ืœ ื”ื—ืœื˜ืชื™ ืœื”ื›ื™ืŸ ืžื™ื“ ืจืฉื™ืžื” ืฉืœ ื™ื›ื•ืœื•ืช ื“ืœืช ืื—ื•ืจื™ืช:

  1. ืœื“ืขืช ืื™ืš ืœืคืชื•ื— ืืชืจื™ื
  2. ื™ืฉ ื’ื™ืฉื” ืœืฉื•ืจืช ื”ืคืงื•ื“ื”
  3. ืœื”ื™ื•ืช ืžืกื•ื’ืœ ืœืคืชื•ื— ืชื•ื›ื ื™ื•ืช, ืชืžื•ื ื•ืช, ืกืจื˜ื•ื ื™ื

ืœื›ืŸ, ื”ื ืงื•ื“ื” ื”ืจืืฉื•ื ื” ืงืœื” ืžืื•ื“ ืœื™ื™ืฉื•ื ื‘ืืžืฆืขื•ืช ืžื•ื“ื•ืœ ื“ืคื“ืคืŸ ื”ืื™ื ื˜ืจื ื˜. ื”ื—ืœื˜ืชื™ ืœื™ื™ืฉื ืืช ื”ื ืงื•ื“ื” ื”ืฉื ื™ื™ื” ื‘ืืžืฆืขื•ืช ืžื•ื“ื•ืœ ื”-OS. ื•ื”ืฉืœื™ืฉื™ ื”ื•ื ื’ื ื“ืจืš ืžื•ื“ื•ืœ ื”-OS, ืื‘ืœ ืื ื™ ืืฉืชืžืฉ ื‘"ืงื™ืฉื•ืจื™ื" (ืขื•ื“ ืขืœ ื›ืš ื‘ื”ืžืฉืš).

ื›ืชื™ื‘ืช ืฉืจืช

ืื–, *drumroll* ืืช ื›ืœ ืงื•ื“ ื”ืฉืจืช:

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 โ€“ ืคืชื™ื—ืช ืืชืจ ืื™ื ื˜ืจื ื˜
ืฆื - ืฆื ืžื”ืœืงื•ื—
ื”ื’ื“ืจ - ื”ื’ื“ืจืช ื”-IP ืฉืœ ื”ืžื—ืฉื‘ ืฉืœืš ื‘ืจืฉืช ื”ืžืงื•ืžื™ืช

ื•ืขื›ืฉื™ื• ืขื•ื“ ืขืœ ืงื™ืฉื•ืจ.

ื™ืฉ ืงื•ื‘ืฅ link.txt ืœื™ื“ ื”ืฉืจืช. ื”ื•ื ืžื›ื™ืœ ืงื™ืฉื•ืจื™ื (ื ืชื™ื‘ ืžืœื) ืœืงื‘ืฆื™ื (ืกืจื˜ื•ื ื™ื, ืชืžื•ื ื•ืช, ืชื•ื›ื ื™ื•ืช).

ื”ืžื‘ื ื” ื”ื•ื ื›ื–ื”:

ะฟะพะปะฝั‹ะน_ะฟัƒั‚ัŒ>ะพะฟะธัะฐะฝะธะต
ะฟะพะปะฝั‹ะน_ะฟัƒั‚ัŒ>ะพะฟะธัะฐะฝะธะต

ืกืš ื”ื›ืœ

ื™ืฉ ืœื ื• ืฉืจืช ื“ืœืช ืื—ื•ืจื™ืช ืœืฉืœื™ื˜ื” ืขืœ ืžื—ืฉื‘ ื‘ืจืฉืช ืžืงื•ืžื™ืช (ื‘ืชื•ืš ืจืฉืช Wi-Fi). ืžื‘ื—ื™ื ื” ื˜ื›ื ื™ืช, ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ืคืขื™ืœ ืืช ื”ืœืงื•ื— ืžื›ืœ ืžื›ืฉื™ืจ ืฉื™ืฉ ืœื• ืžืชื•ืจื’ืžืŸ ืคื™ืชื•ืŸ.

ื .ื‘. ื”ื•ืกืคืชื™ ืืช ื”ืคืงื•ื“ื” set ื›ืš ืฉืื ืœืžื—ืฉื‘ ื‘ืจืฉืช ื”ืžืงื•ืžื™ืช ืžื•ืงืฆื” IP ืื—ืจ, ื ื™ืชืŸ ืœืฉื ื•ืช ืื•ืชื• ื™ืฉื™ืจื•ืช ื‘ืœืงื•ื—.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”