เจซเจฒเจพเจธเจ• 'เจคเฉ‡ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเจพ เจœเจฟเจนเจพ เจฌเฉˆเจ•เจกเฉ‹เจฐ เจœเจพเจ‚ เจธเจฅเจพเจจเจ• เจจเฉˆเฉฑเจŸเจตเจฐเจ• 'เจคเฉ‡ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจ•เจฐเจจเจพ เจนเฉˆ

เจนเฉ‡ เจนเจฌเจฐ!

เจฎเฉˆเจ‚ เจนเจพเจฒ เจนเฉ€ เจตเจฟเฉฑเจš เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจธเจŸเฉเจฐเฉ€เจฎ เจฆเจพ เจ‡เฉฑเจ• เจกเจพเจ‰เจจเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ‡เจ–เจฟเจ† "เจซเจฒเจพเจธเจ• เจตเจฟเฉฑเจš เจ†เจชเจฃเฉ€ เจ–เฉเจฆ เจฆเฉ€ เจตเฉˆเจฌ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจฃเจพเจˆเจเฅค" เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจ•เจฟเจธเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจ†เจชเจฃเฉ‡ เจ—เจฟเจ†เจจ เจจเฉ‚เฉฐ เจฎเจœเจผเจฌเฉ‚เจค โ€‹โ€‹เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ. เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจฒเจˆ เจฎเฉˆเจจเฉ‚เฉฐ เจจเจนเฉ€เจ‚ เจชเจคเจพ เจธเฉ€ เจ•เจฟ เจ•เฉ€ เจฒเจฟเจ–เจฃเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เจน เจตเจฟเจšเจพเจฐ เจ†เจ‡เจ†: "เจซเจฒเจพเจธเจ• เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฎเจฟเฉฐเจจเฉ€-เจฌเฉˆเจ•เจกเฉ‹เจฐ เจ•เจฟเจ‰เจ‚ เจจเจนเฉ€เจ‚ เจฌเจฃเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ?"

เจชเจฟเจ›เจฒเฉ‡ เจฆเจฐเจตเจพเจœเจผเฉ‡ เจฆเฉ‡ เจฒเจพเจ—เฉ‚เจ•เจฐเจจ เจ…เจคเฉ‡ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฒเจˆ เจชเจนเจฟเจฒเฉ‡ เจตเจฟเจ•เจฒเจช เจคเฉเจฐเฉฐเจค เจฎเฉ‡เจฐเฉ‡ เจธเจฟเจฐ เจตเจฟเฉฑเจš เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจ. เจชเจฐ เจฎเฉˆเจ‚ เจคเฉเจฐเฉฐเจค เจฌเฉˆเจ•เจกเฉ‹เจฐ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ:

  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 I เจจเฉ‡ เจธเฉˆเฉฑเจŸ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฟเจ† เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจœเฉ‡เจ•เจฐ เจธเจฅเจพเจจเจ• เจจเฉˆเฉฑเจŸเจตเจฐเจ• 'เจคเฉ‡ เจ‡เฉฑเจ• เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเจพ IP เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจคเจพเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฟเฉฑเจงเจพ เจ•เจฒเจพเจ‡เฉฐเจŸ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹