问题描述
我目前正在进行我的高级Capstone项目,我将在其中编写一个基本的程序,该程序允许我的iPhone6设备上的自定义界面远程控制或向家里RaspBerryPi上建立的NIDS(Suricata)发出关键命令。 (3B +)VPN。但是,我的问题是编写这样的程序是否可行,该程序可以对Pi的IDS上的基本功能/响应选项进行远程访问控制,因为我正在将其用作VPN网络中的设备。主要问题是每当出现异常时就向iOS设备建立远程信令,并使其能够响应并在NIDS上执行根级命令。
如果有什么用,我目前正在将Pythonista用作移动设备上的运行时环境,并将VPN的连接方法设置为UDP,但是我不确定启用SSH是否对我有帮助。我对如何在网络连接方面进行编程有基本的了解。我非常感谢您提供的所有帮助!
from tkinter import *
window=Tk()
window.geometry("450x450")
window.title("IDS Response Manager")
label1=Label(window,text="Intrusion Response Options",fg= 'black',bg ='white',relief="solid",font=("times new roman",12,"bold"))
label1.pack()
button1=Button(window,text="Terminate Session",fg='white',bg='brown',relief=RIDGE,font=("arial","bold"))
button1.place(x=50,y=110) #GROOVE,RIDGE,SUNKEN,RAISED
button2=Button(window,text="Packet Dump","bold"))
button2.place(x=220,RAISED
button3=Button(window,text="Block Port","bold"))
button3.place(x=110,y=170) #GROOVE,RAISED
这里显示了非常基本的选项。
解决方法
您可以将Flask服务器与API结合使用,并可以向其发送发布请求。然后,您可以发送获取请求以接收命令。要托管您的API,请查看Heroku(可用的免费层,并且功能非常强大,并且已经配置了app_name.herokuapp.com
)。
进行搜索以发送发布请求,其中包含您用于构建应用的技术。将带有命令的关键字命令连同密码“ password_here”(可更改为您想要的任何内容)一起发送到/ send_commands。
Python:
模块:烧瓶(服务器),请求(客户端)
服务器代码:
from flask import Flask
app = Flask(__name__)
commands = []
@app.route('/get_commands',methods=['GET'])
def get_commands():
tmp_commands = commands[::]
commands = []
return {'commands': tmp_commands}
@app.route('/send_commands',methods=['POST'])
def send_commands():
if request.json['password'] == "password_here":
commands.append(request.json['command'])
return {'worked': True}
else:
return {'worked': False}
if __name__ == '__main__':
app.run(debug=True)
客户代码:
import requests
URL = "url_here/get_commands"
commands = requests.get(url = URL)
for command in commands:
os.system(command)