ΠΡ Π₯Π°Π±Ρ!
ΠΠ΅ΠΎΠ΄Π°ΠΌΠ½Π° Π³Π»Π΅Π΄Π°Π² ΠΏΡΠ΅Π·Π΅ΠΌΠ΅Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΠΎΡ ΠΏΠΎΡΠΎΠΊ βΠΠ°ΠΊΠΎ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½Π° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π²ΠΎ Flaskβ. Π ΡΠ΅ΡΠΈΠ² Π΄Π° Π³ΠΎ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈΠ΄ΠΈΡΠ°ΠΌ ΠΌΠΎΠ΅ΡΠΎ Π·Π½Π°Π΅ΡΠ΅ Π²ΠΎ Π½Π΅ΠΊΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠΎΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π΅ Π·Π½Π°Π΅Π² ΡΡΠΎ Π΄Π° Π½Π°ΠΏΠΈΡΠ°ΠΌ ΠΈ ΠΌΠΈ Π΄ΠΎΡΠ΄Π΅ ΠΈΠ΄Π΅ΡΠ°ΡΠ°: βΠΠΎΡΡΠΎ Π΄Π° Π½Π΅ Π½Π°ΠΏΡΠ°Π²Π°ΠΌ ΠΌΠΈΠ½ΠΈ-Π·Π°Π΄Π½Π° Π²ΡΠ°ΡΠ° Π²ΠΎ Flask?β
ΠΠΎ ΠΌΠΎΡΠ°ΡΠ° Π³Π»Π°Π²Π° Π²Π΅Π΄Π½Π°Ρ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈΡΠ° ΠΏΡΠ²ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° Π·Π°Π΄Π½Π° Π²ΡΠ°ΡΠ°. ΠΠΎ, ΡΠ΅ΡΠΈΠ² Π²Π΅Π΄Π½Π°Ρ Π΄Π° Π½Π°ΠΏΡΠ°Π²Π°ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π·Π°Π΄Π½Π° Π²ΡΠ°ΡΠ°:
- ΠΠ½Π°ΡΡΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΎΡΠ²ΠΎΡΠ°ΡΠ΅ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠΈ
- ΠΠΌΠ°ΡΡΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ°
- ΠΠΈΠ΄Π΅ΡΠ΅ Π²ΠΎ ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΠΎΡΠ²ΠΎΡΠ°ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ, Π²ΠΈΠ΄Π΅Π°
ΠΠ½Π°ΡΠΈ, ΠΏΡΠ²Π°ΡΠ° ΡΠΎΡΠΊΠ° Π΅ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π»Π΅ΡΠ½Π° Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΎΡ Π·Π° Π²Π΅Π±-ΠΏΡΠ΅Π»ΠΈΡΡΡΠ²Π°Ρ. Π Π΅ΡΠΈΠ² Π΄Π° ΡΠ° ΡΠΏΡΠΎΠ²Π΅Π΄Π°ΠΌ Π²ΡΠΎΡΠ°ΡΠ° ΡΠΎΡΠΊΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»ΠΎΡ OS. Π ΡΡΠ΅ΡΠΈΠΎΡ Π΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΡΠ΅ΠΊΡ OS ΠΌΠΎΠ΄ΡΠ»ΠΎΡ, Π½ΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°ΠΌ βΠ»ΠΈΠ½ΠΊΠΎΠ²ΠΈβ (ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠΎΠ° ΠΏΠΎΠ΄ΠΎΡΠ½Π°).
ΠΠΈΡΡΠ²Π°ΡΠ΅ ΡΠ΅ΡΠ²Π΅Ρ
ΠΠ½Π°ΡΠΈ, *drumroll* ΡΠ΅Π»ΠΈΠΎΡ ΠΊΠΎΠ΄ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ:
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
ΠΠ±ΡΠ°ΡΠ½ΡΠ²Π°ΡΠ°:
ΠΡΠ΅Π΄ ΡΓ¨, ΠΌΠΎΠ΄ΡΠ»ΠΎΡ Π·Π° Π±Π°ΡΠ°ΡΠ° ΡΠ΅ ΡΠ²Π΅Π·ΡΠ²Π° (Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ° ΡΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ). ΠΠΎΠ΄ΠΎΠ»Ρ ΡΠ΅ Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΠΏΠΈΡΠΈ Π½Π° ΡΡΠ°ΡΡΠ½ΠΈΡΠ΅ ΠΈ ΡΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅. Π ΠΏΠΎΡΠΎΠ° ΡΠΈΠΊΠ»ΡΡΠΎΡ Π²ΠΎ ΠΊΠΎΡ ΡΠ΅ ΡΠ»ΡΡΡΠ²Π° ΠΌΠ°Π³ΠΈΡΠ°ΡΠ°. ΠΠ°Π»ΠΈ Π³ΠΎ ΠΏΡΠΎΡΠΈΡΠ°Π²ΡΠ΅ ΠΊΠΎΠ΄ΠΎΡ? Π’Π°ΠΊΠ° Π³ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅ Π·Π½Π°ΡΠ΅ΡΠ΅ΡΠΎ Π½Π° ΠΌΠ°Π³ΠΈΡΠ°ΡΠ° ΡΡΠΎ ΡΠ΅ ΡΠ»ΡΡΡΠ²Π° Π²ΠΎ ΡΠΈΠΊΠ»ΡΡΠΎΡ. ΠΠ½Π΅ΡΠ΅ΡΠ΅ ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° - ΡΠ°Π° Π΅ ΠΈΠ·Π²ΡΡΠ΅Π½Π°. Shell β ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° (Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½Π° ΠΎΠ΄ ΡΠΊΠ°Π»Π°ΡΠ°).
Π’Π΅ΡΡ - ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΠ°Π±ΠΎΡΠΈ (Π·Π°Π΄Π½Π° Π²ΡΠ°ΡΠ°)
ΠΡΡΠΊΠ° - ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° βΠΊΡΠ°ΡΠ΅Π½ΠΊΠ°β
Openweb β ΠΎΡΠ²ΠΎΡΠ°ΡΠ΅ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°
ΠΠ·Π»Π΅Π·Π΅ΡΠ΅ - ΠΈΠ·Π»Π΅Π·Π΅ΡΠ΅ ΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ
ΠΠΎΡΡΠ°Π²ΠΈ β ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° IP Π½Π° Π²Π°ΡΠΈΠΎΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ°
Π ΡΠ΅Π³Π° ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° Π²ΡΡΠΊΠ°ΡΠ°.
ΠΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΈΠΌΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° link.txt. Π‘ΠΎΠ΄ΡΠΆΠΈ Π²ΡΡΠΊΠΈ (ΡΠ΅Π»ΠΎΡΠ½Π° ΠΏΠ°ΡΠ΅ΠΊΠ°) Π΄ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ (Π²ΠΈΠ΄Π΅Π°, ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ).
Π‘ΡΡΡΠΊΡΡΡΠ°ΡΠ° Π΅ Π²Π°ΠΊΠ°:
ΠΏΠΎΠ»Π½ΡΠΉ_ΠΏΡΡΡ>ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΏΠΎΠ»Π½ΡΠΉ_ΠΏΡΡΡ>ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΠΊΡΠΏΠ½ΠΎ
ΠΠΌΠ°ΠΌΠ΅ ΡΠ΅ΡΠ²Π΅Ρ Π·Π° Π·Π°Π΄Π½Π° Π²ΡΠ°ΡΠ° Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π° ΠΌΡΠ΅ΠΆΠ° (Π²ΠΎ Wi-Fi ΠΌΡΠ΅ΠΆΠ°). Π’Π΅Ρ Π½ΠΈΡΠΊΠΈ, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·Π²ΡΡΠΈΠΌΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΎΠ΄ ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ ΡΡΠ΅Π΄ ΡΡΠΎ ΠΈΠΌΠ° ΡΠΎΠ»ΠΊΡΠ²Π°Ρ Π½Π° python.
Π.Π‘. ΠΠ° Π΄ΠΎΠ΄Π°Π΄ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° set ΡΠ°ΠΊΠ° ΡΡΠΎ Π°ΠΊΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΡ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ° ΠΌΡ Π΅ Π΄ΠΎΠ΄Π΅Π»Π΅Π½Π° Π΄ΡΡΠ³Π° IP Π°Π΄ΡΠ΅ΡΠ°, ΡΠ°Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΌΠ΅Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ.
ΠΠ·Π²ΠΎΡ: www.habr.com