ΠΡΠΈΠ²Π΅Ρ, Π₯Π°Π±Ρ!
ΠΠ΅Π΄Π°Π²Π½ΠΎ Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π» ΡΠΊΠ°ΡΠ°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΡΡΡΠΈΠΌΠ° ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Β«ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° FlaskΒ». Π ΡΠ΅ΡΠΈΠ» Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°Π½ΠΈΡ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ΅. ΠΠΎΠ»Π³ΠΎ Π½Π΅ Π·Π½Π°Π», ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈ ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»Π° ΠΈΠ΄Π΅Ρ: Β«Π ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠΈΠ½ΠΈ-Π±ΡΠΊΠ΄ΠΎΡ Π½Π° Flask?Β».
Π Π³ΠΎΠ»ΠΎΠ²Π΅ ΡΡΡ ΠΆΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π±ΡΠΊΠ΄ΠΎΡΠ°. ΠΠΎ Ρ ΡΠ΅ΡΠΈΠ» ΡΡΠ°Π·Ρ ΡΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π±ΡΠΊΠ΄ΠΎΡΠ°:
- Π£ΠΌΠ΅ΡΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΡΡ
- ΠΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅
- Π£ΠΌΠ΅ΡΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎΡΠΎ, Π²ΠΈΠ΄Π΅ΠΎ
ΠΡΠ°ΠΊ, ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠ½ΠΊΡ ΠΊΡΠ°ΠΉΠ½Π΅ Π»Π΅Π³ΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ webbrowser. ΠΡΠΎΡΠΎΠΉ ΠΏΡΠ½ΠΊΡ Ρ ΡΠ΅ΡΠΈΠ» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ 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β}
ΠΡ, Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, ΡΡΠΎ βcommandβ β ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ. Π βdataβ β Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ JSON Π·Π°ΠΏΡΠΎΡΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΡΡΡΠΊΠ°ΠΌΠΈ(Π²Π°ΠΌ Π² ΠΏΠΎΠΌΠΎΡΡ requests). Π ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ.
ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
ΠΠΎΠ΄:
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
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ:
ΠΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ requests(Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ). ΠΠ°Π»ΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ start ΠΈ test. Π Π΄Π°Π»ΡΡΠ΅ ΡΠΈΠΊΠ» Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΠΎΠ»ΡΠ΅Π±ΡΡΠ²ΠΎ. Π§ΠΈΡΠ°Π»ΠΈ ΠΊΠΎΠ΄? ΠΠ½Π°ΡΠΈΡ Π²Π°ΠΌ ΡΡΠ΅Π½ ΡΠΌΡΡΠ» Π²ΠΎΠ»ΡΠ΅Π±ΡΡΠ²Π°, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π² ΡΠΈΠΊΠ»Π΅. ΠΠ²ΠΎΠ΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ β ΠΎΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ. Shell β ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ(Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π°ΡΠΊΠ°Π»ΠΈΠ²Π°Π΅Ρ).
Test β ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ(Π±ΡΠΊΠ΄ΠΎΡ)
Link β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Β«ΡΡΠ»ΡΠΊΠ°Β»
Openweb β ΠΎΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΡΠ°
Quit β Π²ΡΡ
ΠΎΠ΄ ΠΈΠ· ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
Set β Π·Π°Π΄Π°Π½ΠΈΠ΅ ip Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ
Π ΡΠ΅ΠΉΡΠ°Ρ ΠΏΠΎΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ link.
Π ΡΠ΄ΠΎΠΌ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π»Π΅ΠΆΠΈΡ ΡΠ°ΠΉΠ» link.txt. Π Π½ΡΠΌ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΡΡΡΠ»ΠΊΠΈ(ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ) ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ(Π²ΠΈΠ΄Π΅ΠΎ, ΡΠΎΡΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ).
Π‘ΡΡΡΠΊΡΡΡΠ° ΡΠ°ΠΊΠ°Ρ:
ΠΏΠΎΠ»Π½ΡΠΉ_ΠΏΡΡΡ>ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΏΠΎΠ»Π½ΡΠΉ_ΠΏΡΡΡ>ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΡΠΎΠ³
ΠΡ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠ΅ΡΠ²Π΅Ρ-Π±ΡΠΊΠ΄ΠΎΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ(Π²Π½ΡΡΡΠΈ wi-fi ΡΠ΅ΡΠΈ). Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ python.
P.S. ΠΠΎΠΌΠ°Π½Π΄Ρ set Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ ΠΏΡΠΈΡΠ²ΠΎΡΡ Π΄ΡΡΠ³ΠΎΠΉ ip, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΡΡΠΌΠΎ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com