Ƙaramar kofa a kan Flask ko yadda ake sarrafa kwamfuta akan hanyar sadarwar gida

Hai Habr!

Kwanan nan na kalli wani sigar da aka sauke na rafin shirye-shiryen "Yadda ake ƙirƙirar aikace-aikacen gidan yanar gizon ku a cikin Flask." Kuma na yanke shawarar ƙarfafa ilimina a cikin wani aiki. Na dade ban san abin da zan rubuta ba kuma ra'ayin ya zo gare ni: "Me ya sa ba za ku yi mini kofa a cikin Flask ba?"

Zaɓuɓɓukan farko don aiwatarwa da iyawar ƙofar baya nan da nan sun bayyana a cikin kaina. Amma na yanke shawarar nan da nan in yi jerin abubuwan iyawar bayan gida:

  1. Sanin yadda ake buɗe gidajen yanar gizo
  2. Samun damar layin umarni
  3. Iya buɗe shirye-shirye, hotuna, bidiyo

Don haka, batu na farko yana da sauƙin aiwatarwa ta amfani da tsarin mai binciken gidan yanar gizo. Na yanke shawarar aiwatar da batu na biyu ta amfani da os module. Kuma na uku ma ta hanyar os module ne, amma zan yi amfani da "hanyoyi" (ƙari akan wancan daga baya).

Rubuta uwar garken

Don haka, *drumroll* duk lambar uwar garken:

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')

Na riga na zubar da duk lambar, lokaci yayi da zan bayyana ainihin.

Duk lambar tana gudana akan kwamfutar gida akan tashar jiragen ruwa 5000. Don yin hulɗa tare da uwar garken, dole ne mu aika buƙatar JSON POST.

Tsarin buƙatar JSON:

{‘command’:  ‘comecommand’, ‘data’: ‘somedata’}

To, yana da ma'ana cewa 'umurni' shine umarnin da muke son aiwatarwa. Kuma 'bayanai' sune muhawarar umarni.

Kuna iya rubutawa da aika buƙatun JSON don yin hulɗa tare da uwar garken da hannu (buƙatun za su taimake ku). Ko za ku iya rubuta abokin ciniki na console.

Rubuta abokin ciniki

Lambar:

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

Bayani:

Da farko, ana shigo da tsarin buƙatun (don hulɗa da uwar garken). A ƙasa akwai bayanin farawa da ayyukan gwaji. Sannan kuma zagayowar da sihiri ke faruwa. Shin kun karanta lambar? Don haka ku fahimci ma'anar sihirin da ke faruwa a cikin zagayowar. Shigar da umarnin - an kashe shi. Shell - umarni don layin umarni (maganin an kashe sikelin).

Gwaji - duba idan uwar garken yana gudana (kofar baya)
Link - amfani da "gajeren hanya"
Openweb – bude gidan yanar gizo
Bar - fita abokin ciniki
Saita – saita ip na kwamfutarka akan cibiyar sadarwar gida

Kuma yanzu ƙarin game da mahada.

Akwai fayil link.txt kusa da uwar garken. Ya ƙunshi hanyoyin haɗi (cikakken hanya) zuwa fayiloli (bidiyo, hotuna, shirye-shirye).

Tsarin shine kamar haka:

полный_путь>описание
полный_путь>описание

Sakamakon

Muna da uwar garken bayan gida don sarrafa kwamfuta akan hanyar sadarwar gida (a cikin hanyar sadarwar wi-fi). A fasaha, za mu iya tafiyar da abokin ciniki daga kowace na'ura da ke da fassarar Python.

PS Na ƙara umarnin saitin don idan kwamfutar da ke kan hanyar sadarwar gida aka sanya IP daban-daban, ana iya canza ta kai tsaye a cikin abokin ciniki.

source: www.habr.com

Add a comment