ื ืงืœื™ื™ืŸ ื‘ืึทืงื“ืึธืจ ืื•ื™ืฃ ืคืœืึทืกืง ืึธื“ืขืจ ื•ื•ื™ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึท ืงืึธืžืคึผื™ื•ื˜ืขืจ ืื•ื™ืฃ ืึท ื”ื™ื’ืข ื ืขืฅ

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

ืื™ืš ืœืขืฆื˜ื ืก ื•ื•ืึธื˜ืฉื˜ ืึท ื“ืึทื•ื ืœืึธื•ื“ื™ื“ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ื˜ื™ื™ึทืš "ื•ื•ื™ ืฆื• ืฉืึทืคึฟืŸ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ ืคืœืึทืฉ." ืื•ืŸ ืื™ืš ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืงืึธื ืกืึธืœื™ื“ื™ืจืŸ ืžื™ื™ืŸ ื•ื•ื™ืกืŸ ืื™ืŸ ืขื˜ืœืขื›ืข ืคึผืจื•ื™ืขืงื˜. ืคึฟืึทืจ ืึท ืœืึทื ื’ ืฆื™ื™ึทื˜ ืื™ืš ื”ืื˜ ื ื™ื˜ ื•ื•ื™ืกืŸ ื•ื•ืึธืก ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืื•ืŸ ื“ืขืจ ื’ืขื“ืึทื ืง ื’ืขืงื•ืžืขืŸ ืฆื• ืžื™ืจ: "ืคืืจื•ื•ืืก ื ื™ืฉื˜ ืžืึทื›ืŸ ืึท ืžื™ื ื™-ื‘ืึทืงืงื“ืึธืจ ืื™ืŸ ืคืœืึทืฉ?"

ื“ืขืจ ืขืจืฉื˜ืขืจ ืึธืคึผืฆื™ืขืก ืคึฟืึทืจ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืื•ืŸ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– ืคื•ืŸ ื“ื™ ื‘ืึทืงื“ืึธืจ ืžื™ื“ ืืจื•ื™ืก ืื™ืŸ ืžื™ื™ืŸ ืงืึธืคึผ. ืึธื‘ืขืจ ืื™ืš ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืžื™ื“ ืžืึทื›ืŸ ืึท ืจืฉื™ืžื” ืคื•ืŸ ื‘ืึทืงื“ืึธืจ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื–:

  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

ื“ืขืจืงืœืขืจื•ื ื’ืขืŸ:

ืขืจืฉื˜ืขืจ ืคื•ืŸ ืึทืœืข, ื“ื™ ืจื™ืงื•ื•ืขืก ืžืึธื“ื•ืœืข ืื™ื– ื™ืžืคึผืึธืจื˜ื™ื“ (ืคึฟืึทืจ ื™ื ื˜ืขืจืึทืงื˜ื™ื ื’ ืžื™ื˜ ื“ื™ ืกืขืจื•ื•ืขืจ). ื•ื ื˜ืขืจ ื–ืขื ืขืŸ ื“ื™ืกืงืจื™ืคึผืฉืึทื ื– ืคื•ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘ ืื•ืŸ ืคึผืจื•ื‘ื™ืจืŸ ืคืึทื ื’ืงืฉืึทื ื–. ืื•ืŸ ื“ืขืžืึธืœื˜ ื“ืขืจ ืฆื™ืงืœ ืื™ืŸ ื•ื•ืึธืก ื“ื™ ืžืึทื’ื™ืฉ ื›ืึทืคึผืึทื ื–. ื”ืึธื‘ืŸ ืื™ืจ ืœื™ื™ืขื ืขืŸ ื“ืขื ืงืึธื“? ืึทื–ื•ื™ ืื™ืจ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ื™ ื˜ื™ื™ึทื˜ืฉ ืคื•ืŸ ื“ื™ ืžืึทื’ื™ืฉ ื•ื•ืึธืก ื›ืึทืคึผืึทื ื– ืื™ืŸ ื“ืขื ืฆื™ืงืœ. ืึทืจื™ื™ึทืŸ ื“ื™ ื‘ืึทืคึฟืขืœ - ืขืก ืื™ื– ืขืงืกืึทืงื™ื•ื˜ืึทื“. ืฉืขืœ - ืงืึทืžืึทื ื“ื– ืคึฟืึทืจ ื“ื™ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” (ื“ื™ ืœืึธื’ื™ืง ืื™ื– ืึทื•ื•ืขืง ื•ื•ืึธื’).

ื˜ืขืกื˜ - ื˜ืฉืขืง ืื•ื™ื‘ ื“ืขืจ ืกืขืจื•ื•ืขืจ ืื™ื– ืคืœื™ืกื ื“ื™ืง (ื‘ืึทืงื“ืึธืจ)
ืœื™ื ืง - ื ื™ืฆืŸ ืึท "ื“ื•ืจื›ื•ื•ืขื’"
Openweb - ืขืคืŸ ืึท ื•ื•ืขื‘ื–ื™ื™ื˜ืœ
ืคืึทืจืœืึธื–ืŸ - ืึทืจื•ื™ืกื’ืึทื ื’ ื“ืขื ืงืœื™ืขื ื˜
ืฉื˜ืขืœืŸ - ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ื™ IP ืคื•ืŸ ื“ื™ื™ืŸ ืงืึธืžืคึผื™ื•ื˜ืขืจ ืื•ื™ืฃ ื“ื™ ื”ื™ื’ืข ื ืขืฅ

ืื•ืŸ ืื™ืฆื˜ ืžืขืจ ื•ื•ืขื’ืŸ ืœื™ื ืง.

ืขืก ืื™ื– ืึท ืœื™ื ืง.ื˜ืงืกื˜ ื˜ืขืงืข ื•ื•ื™ื™ึทื˜ืขืจ ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ. ืขืก ื›ึผื•ืœืœ ืœื™ื ืงืก (ืคื•ืœ ื“ืจืš) ืฆื• ื˜ืขืงืขืก (ื•ื•ื™ื“ื™ืึธื•ื–, ืคืึธื˜ืึธืก, ืžื’ื™ืœื”).

ื“ื™ ืกื˜ืจื•ืงื˜ื•ืจ ืื™ื– ื•ื•ื™ ื“ืึธืก:

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

ื’ืึทื ืฅ

ืžื™ืจ ื”ืึธื‘ืŸ ืึท ื‘ืึทืงื“ืึธืจ ืกืขืจื•ื•ืขืจ ืคึฟืึทืจ ืงืึทื ื˜ืจืึธื•ืœื™ื ื’ ืึท ืงืึธืžืคึผื™ื•ื˜ืขืจ ืื•ื™ืฃ ืึท ื”ื™ื’ืข ื ืขืฅ (ื™ืŸ ืึท ื•ื•ื™-ืคื™ ื ืขืฅ). ื˜ืขืงื ื™ืงืœื™, ืžื™ืจ ืงืขื ืขืŸ ืœื•ื™ืคืŸ ื“ืขื ืงืœื™ืขื ื˜ ืคึฟื•ืŸ ืงื™ื™ืŸ ืžื™ื˜ืœ ื•ื•ืึธืก ื”ืื˜ ืึท ืคึผื™ื˜ื”ืึธืŸ ื™ื‘ืขืจื–ืขืฆืขืจ.

ืคึผืก ืื™ืš ืฆื•ื’ืขื’ืขื‘ืŸ ื“ื™ ืฉื˜ืขืœืŸ ื‘ืึทืคึฟืขืœ ืึทื–ื•ื™ ืึทื– ืื•ื™ื‘ ืึท ืงืึธืžืคึผื™ื•ื˜ืขืจ ืื•ื™ืฃ ื“ื™ ื”ื™ื’ืข ื ืขืฅ ืื™ื– ืึทืกื™ื™ื ื“ ืึท ืึทื ื“ืขืจืฉ IP, ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื˜ืฉื™ื™ื ื“ื–ืฉื“ ื’ืœื™ื™ึทืš ืื™ืŸ ื“ืขื ืงืœื™ืขื ื˜.

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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’