JSShell:一个基于python的交互式Shell

时间:2022-04-28
本文章向大家介绍JSShell:一个基于python的交互式Shell,主要内容包括JSShell、工具安装、virtualenv、一键配置环境、JSShell的特点、工具运行、工具使用、工作流程、数据库管理、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

JSShell

本文将给大家介绍一款基于Web的多用户交互式Shell,该工具采用Python语言编写,服务器端使用的是Flask框架,而客户端当然就是JavaScript和HTML组成的了。我当初在开发JSShell的时候只是想在测试和研究的过程中用它来远程调试浏览器的网络通信和信息处理等活动,但是我现在意识到了这款工具的作用远远不止于此,所以请各位不要将其用于恶意目的,作者Daniel Abeles对此一概不负责。

工具安装

话不多说,先上GitHub传送门【点击文末阅读原文】。

我们建议使用虚拟环境来安装JSShell,作者使用的是Python3.6,但JSShell也支持3.6之前的Python版本。

Pyenv

pyenv virtualenv -p python3.6 venv
pyenv activate venv

virtualenv

virtualenv -p python3.6 venv
source venv/bin/activate

一键配置环境

pip install -r requirements.txt

JSShell的特点

-支持多客户端; -支持循环DOM对象; -预生成脚本; -命令队列;

工具运行

创建数据库:

python db_handler.py create

开启服务器(后台):

python run.py

通过浏览器访问服务器地址:

如果你的服务器在本地,那么你可以直接用浏览器访问http://localhost:5000(端口可能会不同)

打开交互式Shell:

python shell.py

可选项:预生成脚本

每当新的客户端进行注册时,这些脚本都将会运行,不过你也可以根据你的需要来进行修改,一切都取决于你自己:)

工具使用

这个Shell接口给我们提供了多种可用的操作指令,你可以使用‘help’命令来查看所有命令,终端界面如下所示:

你可以使用命令队列来申请执行多个命令,客户端将会一个一个执行这些命令。所有的命令都会在相同的环境(context)中执行,所以你可以一次性执行多个相关命令。

如果你想查看发送给客户端的命令,首先你需要选择一个客户端:

>> select 1

然后使用‘coms’命令来查看所有发送给该客户端的命令:

(Client 1) >> coms

查看所有的命令以及相应的输出结果:

(Client 1) >> com 1

工作流程

当所有的安装和配置都已完成之后,JSShell的工作流程如下:

1. 客户端访问主页http://localhost:5000/; 2. 然后向服务器端发送一个‘register’请求; 3. 等待用户输入命令; 4. 与此同时,你可以使用shell.py脚本并在服务器端执行命令; 5. 客户端从服务器端获取命令,当其得到了新的命令之后,会立刻将其加入队列并依次执行; 6. 命令执行完成之后,会将执行结果返回给服务器端; 7. 现在,我们可以使用‘coms’命令来查看输出结果了;

数据库管理

我们在这里给大家提供了一个名为db.handler.py的脚本,这个脚本包含多种数据库管理功能,你可以用它来管理和测试你的数据库。