เชซเซเชฒเชพเชธเซเช• เชชเชฐ เชเช• เชจเชพเชจเซ‹ เชฌเซ‡เช•เชกเซ‹เชฐ เช…เชฅเชตเชพ เชธเซเชฅเชพเชจเชฟเช• เชจเซ‡เชŸเชตเชฐเซเช• เชชเชฐ เช•เชฎเซเชชเซเชฏเซเชŸเชฐเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเชตเซเช‚

เชนเซ‡ เชนเชฌเชฐ!

เชฎเซ‡เช‚ เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชธเซเชŸเซเชฐเซ€เชฎเชจเซเช‚ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‡เชฒ เชตเชฐเซเชเชจ เชœเซ‹เชฏเซเช‚ "เชซเซเชฒเชพเชธเซเช•เชฎเชพเช‚ เชคเชฎเชพเชฐเซ€ เชชเซ‹เชคเชพเชจเซ€ เชตเซ‡เชฌ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซ€." เช…เชจเซ‡ เชฎเซ‡เช‚ เช•เซ‡เชŸเชฒเชพเช• เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชฎเชพเชฐเชพ เชœเซเชžเชพเชจเชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชธเซเชงเซ€ เชฎเชจเซ‡ เช–เชฌเชฐ เชจ เชนเชคเซ€ เช•เซ‡ เชถเซเช‚ เชฒเช–เชตเซเช‚ เช…เชจเซ‡ เชฎเชจเซ‡ เชตเชฟเชšเชพเชฐ เช†เชตเซเชฏเซ‹: "เชถเชพ เชฎเชพเชŸเซ‡ เชซเซเชฒเชพเชธเซเช•เชฎเชพเช‚ เชฎเซ€เชจเซ€-เชฌเซ‡เช•เชกเซ‹เชฐ เชฌเชจเชพเชตเชคเชพ เชจเชฅเซ€?"

เชฌเซ‡เช•เชกเซ‹เชฐเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเซ‹ เช…เชจเซ‡ เช•เซเชทเชฎเชคเชพเช“ เชฎเชพเชŸเซ‡เชจเชพ เชชเซเชฐเชฅเชฎ เชตเชฟเช•เชฒเซเชชเซ‹ เชคเชฐเชค เชœ เชฎเชพเชฐเชพ เชฎเช—เชœเชฎเชพเช‚ เชฆเซ‡เช–เชพเชฏเชพ. เชชเชฐเช‚เชคเซ เชฎเซ‡เช‚ เชคเชฐเชค เชœ เชฌเซ‡เช•เชกเซ‹เชฐ เช•เซเชทเชฎเชคเชพเช“เชจเซ€ เชธเซ‚เชšเชฟ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚:

  1. เชตเซ‡เชฌเชธเชพเช‡เชŸเซเชธ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช–เซ‹เชฒเชตเซ€ เชคเซ‡ เชœเชพเชฃเซ‹
  2. เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจ เชเช•เซเชธเซ‡เชธ เช›เซ‡
  3. เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ, เชซเซ‹เชŸเชพ, เชตเชฟเชกเชฟเช“เช เช–เซ‹เชฒเชตเชพเชฎเชพเช‚ เชธเชฎเชฐเซเชฅ เชฅเชพเช“

เชคเซ‡เชฅเซ€, เชชเซเชฐเชฅเชฎ เชฎเซเชฆเซเชฆเซ‹ เชตเซ‡เชฌเชฌเซเชฐเชพเช‰เชเชฐ เชฎเซ‹เชกเซเชฏเซเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเซ‹ เช…เชคเซเชฏเช‚เชค เชธเชฐเชณ เช›เซ‡. เชฎเซ‡เช‚ 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

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹