JSShell:一个基于python的交互式Shell
2017-11-27 17:10
591 查看
JSShell
本文将给大家介绍一款基于Web的多用户交互式Shell,该工具采用Python语言编写,服务器端使用的是Flask框架,而客户端当然就是JavaScript和HTML组成的了。我当初在开发JSShell的时候只是想在测试和研究的过程中用它来远程调试浏览器的网络通信和信息处理等活动,但是我现在意识到了这款工具的作用远远不止于此,所以请各位不要将其用于恶意目的,作者Daniel Abeles对此一概不负责。
工具安装
话不多说,先上GitHub传送门【点我】。
我们建议使用虚拟环境来安装JSShell,作者使用的是Python3.6,但JSShell也支持3.6之前的Python版本。
Pyenv
一键配置环境
JSShell的特点
-支持多客户端;
-支持循环DOM对象;
-预生成脚本;
-命令队列;
工具运行
创建数据库:
开启服务器(后台):
通过浏览器访问服务器地址:
如果你的服务器在本地,那么你可以直接用浏览器访问http://localhost:5000(端口可能会不同)
打开交互式Shell:
可选项:预生成脚本
每当新的客户端进行注册时,这些脚本都将会运行,不过你也可以根据你的需要来进行修改,一切都取决于你自己:)
工具使用
这个Shell接口给我们提供了多种可用的操作指令,你可以使用‘help’命令来查看所有命令,终端界面如下所示:
你可以使用命令队列来申请执行多个命令,客户端将会一个一个执行这些命令。所有的命令都会在相同的环境(context)中执行,所以你可以一次性执行多个相关命令。
如果你想查看发送给客户端的命令,首先你需要选择一个客户端:
然后使用‘coms’命令来查看所有发送给该客户端的命令:
查看所有的命令以及相应的输出结果:
工作流程
当所有的安装和配置都已完成之后,JSShell的工作流程如下:
1. 客户端访问主页http://localhost:5000/;
2. 然后向服务器端发送一个‘register’请求;
3. 等待用户输入命令;
4. 与此同时,你可以使用shell.py脚本并在服务器端执行命令;
5. 客户端从服务器端获取命令,当其得到了新的命令之后,会立刻将其加入队列并依次执行;
6. 命令执行完成之后,会将执行结果返回给服务器端;
7. 现在,我们可以使用‘coms’命令来查看输出结果了;
数据库管理
我们在这里给大家提供了一个名为db.handler.py的脚本,这个脚本包含多种数据库管理功能,你可以用它来管理和测试你的数据库。
本文将给大家介绍一款基于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的脚本,这个脚本包含多种数据库管理功能,你可以用它来管理和测试你的数据库。
相关文章推荐
- ipython, 一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数
- 一个基于Python的shell自动化框架ShutIt
- 一个基于Python的插入排序
- 基于Django1.11和Python3开发一个简单的投票系统
- 交互式python shell
- 基于Python、PyQuery实现的一个网络爬虫实例
- 基于Python实现一个简单的银行转账操作
- Python之Fabric模块 Fabric是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括:
- 请问Python适合用来开发一个基于B/S的信息管理系统吗?
- 基于Python实现matplotlib中动态更新图片(交互式绘图)
- 用python -i写交互式shell
- 如何基于Python写一个TCP反向连接后门
- 如何开发一个基于 Docker 的 Python 应用
- 用python编写一个仿路由器命令的交互式脚本
- 从零开始学Python(九):搭建一个基于SMTP的简单邮件预警系统
- Keras - 一个基于 Theano 的深度学习 Python 库
- Spark RDD编程(Python和Scala版本)----Spark中的RDD就是一个不可变的分布式对象集合,是一种具有兼容性的基于内存的集群计算抽象方法,Spark则是这个方法的抽象。 Spa
- 基于python的一个大规模爬虫遇到的一些问题总结
- 设计思路.Thinking.基于Python构建一个可扩展的运维自动化平台?