当前位置:首页 » 编程软件 » wsl脚本

wsl脚本

发布时间: 2022-09-03 16:04:38

‘壹’ 网址是指的什么

网址通常指因特网上网页的地址。企事业单位或个人通过技术处理,将一些信息以逐页的方式储存在因特网上,每一页都有一个相应的地址,以便其他用户访询而获取信息资料,这样的地址叫做网址。

网址在因特网中,如果要从一台计算机访问网上另一台计算机,就必须知道对方的网址。在网络世界中,为了准确地找到目的计算机,每一台计算机都必须标有唯一的一个地址。就像打电话必须知道对方的电话号码,这一号码也必须是唯一的一样。

(1)wsl脚本扩展阅读:

1、计算机网络的性能指标

性能指标从不同的方面来度量计算机网络的性能。

(1)速率

计算机发送出的信号都是数字形式的。比特是计算机中数据量的单位,也是信息论中使用的信息量的单位。英文字bit来源于binary digit,意思是一个“二进制数字”,因此一个比特就是二进制数字中的一个1或0。

网络技术中的速率指的是连接在计算机网络上的主机在数字信道上传送数据的速率,它也称为数据率(data rate)或比特率(bit rate)。速率是计算机网络中最重要的一个性能指标。速率的单位是bit/s(比特每秒)(即bit per second)。

(2)带宽

“带宽”有以下两种不同的意义。

① 带宽本来是指某个信号具有的频带宽度。信号的带宽是指该信号所包含的各种不同频率成分所占据的频率范围。

例如,在传统的通信线路上传送的电话信号的标准带宽是3.1kHz(从300Hz到3.4kHz,即话音的主要成分的频率范围)。这种意义的带宽的单位是赫(或千赫,兆赫,吉赫等)。

② 在计算机网络中,带宽用来表示网络的通信线路所能传送数据的能力,因此网络带宽表示在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”。这里一般说到的“带宽”就是指这个意思。这种意义的带宽的单位是“比特每秒”,记为bit/s。

(3)吞吐量

吞吐量表示在单位时间内通过某个网络(或信道、接口)的数据量。吞吐量更经常地用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。显然,吞吐量受网络的带宽或网络的额定速率的限制。

例如,对于一个100Mbit/s的以太网,其额定速率是100Mbit/s,那么这个数值也是该以太网的吞吐量的绝对上限值。因此,对100Mbit/s的以太网,其典型的吞吐量可能也只有70Mbit/s。有时吞吐量还可用每秒传送的字节数或帧数来表示。

(4)时延

时延是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。时延是个很重要的性能指标,它有时也称为延迟或迟延。网络中的时延是由以下几个不同的部分组成的。

① 发送时延。

发送时延是主机或路由器发送数据帧所需要的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。

因此发送时延也叫做传输时延。发送时延的计算公式是:发送时延=数据帧长度(bit/s)/信道带宽(bit/s)

由此可见,对于一定的网络,发送时延并非固定不变,而是与发送的帧长(单位是比特)成正比,与信道带宽成反比。

② 传播时延。

传播时延是电磁波在信道中传播一定的距离需要花费的时间。传播时延的计算公式是:传播时延=信道长度(m)/电磁波在信道上的传播速率(m/s)

电磁波在自由空间的传播速率是光速,即300000km/s。电磁波在网络传输媒体中的传播速率比在自由空间要略低一些。

③ 处理时延。

主机或路由器在收到分组时要花费一定的时间进行处理,例如分析分组的首部,从分组中提取数据部分,进行差错检验或查找适当的路由等,这就产生了处理时延。

④ 排队时延。

分组在经过网络传输时,要经过许多的路由器。但分组在进入路由器后要先在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发。这就产生了排队时延。

这样,数据在网络中经历的总时延就是以上四种时延之和: 总时延=发送时延+传播时延+处理时延+排队时延 。

参考资料来源:网络-计算机网络

‘贰’ 微软linux子系统能干啥

在今年的 Build 2016 上,微软向全世界介绍了他们还处于 Beta 阶段的 Windows 下的 Linux 子系统Windows Subsystem for Linux(WSL),它可以让开发者们在 Windows 10 下通过 Bash shell 运行原生的 Ubuntu 用户态二进制程序。如果你参与了 Windows Insider 计划,你就可以在最新的 Windows 10 年度升级版的 Insider 构建版中体验这个功能了。
Web 开发人员们不用再苦恼所用的 Windows 开发平台上没有合适的 Linux 工具和库了。WSL 是由 Windows 内核团队与 Canonical 合作设计和开发的,可以让 Windows 10 下的开发者们在拥有 Windows 中那些强力支持之外,还能使用 Linux 下丰富的开发环境与工具,而不用启动到另外的操作系统或者使用虚拟机。这绝对是一个“来自开发者,服务开发者”的 Windows 10 特色,它的目的是让开发者们每天的开发工作都变得顺畅而便捷。

‘叁’ 如何在Windows下运行linux shell脚本

你好,
Windows里面有个PowerShell,本质和Linux的shell是一样的,所以可以用PowerShell运行sh脚本,但是PowerShell的语法和Linux的shell语法并不完全一样,所以可能会有出错的可能。
Windows10内置了一个Linux on Windows,也是可以用来运行sh脚本的。
希望对你有所帮助!
不懂请追问!
望采纳!

‘肆’ WEP和WAP是什么

WAP是Wireless Application Protocol(即无线应用协议)的缩写。 这是一个使用户借助无线手持设备,如掌上电脑,手机,呼机,双向广播,智能电话等,获取信息的安全标准。 WAP支持绝大多数无线网络,包括GSM, CDMA, CDPD, PDC, PHS, TDMA, FLEX, ReFLEX, iDen, TETEA, DECT, DataTAC, 和Mobitex。 所有操作系统都支持WAP,其中专门为手持设备设计的有PalmOS, EPOC, Windows CE, FLEXOS, OS/9及JavaOS。 一些手持设备,如掌上电脑,安装微型浏览器后,可借助WAP接入Internet。 微型浏览器文件很小,可较好的解决手持设备内存小和无线网络带宽不宽的限制。 虽然WAP能支持HTHL和XML,但WML才是专门为小屏幕和无键盘手持设备 服务的语言。WAP也支持WMLScript。这种脚本语言类似与JavaScript,但 对内存和CPU的要求更低,因为它基本上没有其他脚本语言所包含的无用功能。

WAP(Wireless Application Protocol)

是一种向移动终端提供互联网内容和先进增值服务的全球统一的开放式协议标准, 是简化了的无线Internet 协议。WAP 将Internet和移动电话技术结合起来,使随时随地访问丰富的互联网络资源成为现实。WAP 服务是一种手机直接上网,通过手机WAP“浏览器”浏览wap 站点的服务,可享受新闻浏览、股票查询、邮件收发、在线游戏、聊天等多种应用服务。通过GPRS 网络接入WAP,可充分发挥接入时延短(2 秒接入)速率高、永远在线、切换方便等优点

WAP 1.2 是基于WML的

WAP 2.0 是以面向WAP的XHTML作为编程与WEB更加接近

WAP(无线应用协议)是详细描述如何进行通讯传输、信息编码及将之应用于无线设备的全球性开放标准,这一标准获得了超过200家公司的支持,Ericsson,Nokia及Motorola公司等都是WAP的发起者。相对而言,从理解的含义来讲,WAP也许该为无线访问协议或是直接称之为无线上网协议,它规范化了网页的浏览格式及通讯协议,如TCP/IP等。而BlueTooth也是无线通讯协定,但BlueTooth规范化了更为具体的硬件及频率应用等内容。

WAP(无线通讯协议)是在数字移动电话、因特网或其他个人数字助理机(PDA)、计算机应用之间进行通讯的开放全球标准。这一标准的诞生是WAP论坛成员努力的结果,WAP论坛是在1997年6月,由诺基亚、爱立信、摩托罗拉和无线星球(Unwired Planet)就共同组成的。WAP的目标就是

通过WAP这种技术,就可以将Internet的大量信息及各种各样的业务引入到移动电话、PALM等无线终端之中。无论你在何地、何时只要你需要信息,你就可以打开你的WAP手机,享受无穷无尽的网上信息或者网上资源。如:综合新闻、天气预报、股市动态、商业报道、当前汇率等。电子商务、网上银行也将逐一实现。

你还可以随时随地获得体育比赛结果、娱乐圈趣闻以及幽默故事,为生活增添情趣,也可以利用网上预定功能,把生活安排的有条不紊。 WAP协议包括以下几层: 1、 Wireless Application Environment (WAE) 2、Wireless Session Layer (WSL) 3、Wireless Transport Layer Security (WTLS) 4、Wireless Transport Layer (WTP) 其中,WAE层含有微型浏览器、WML 、WMLSCRIPT的解释器等等功能。WTLS层为无线电子商务及无线加密传输数据时提供安全方面的基本功能。

WAP的基本原理

AP标准是一套协议

WDP:WAP数据报协议层,是发送和接收消息的传输层。

WTLS:无线传输安全层,是为像电子商务这样的应用提供安全服务。

WTP:WAP传输协议层,提供传输支持,增加由WDP提供的数据报服务的可*性。

WSP:WAP会话协议层,提供不同应用间的有效数据交换。

HTTP接口:支持移动终端的信息检索请求。

WAP的发展

WAP目前已成为通过移动电话或其他无线终端访问无线信息服务的全球事实标准。它的发展与应用是无可限量的,可以说唯一的限制就是你的想象力,WAP不但使现有的许多应用得到了突飞猛进的改变,同时也催生出更多崭新的增值业务。

WEP--Wired Equivalent Privacy加密技术,WEP安全技术源自于名为RC4的RSA数据加密技术,以满足用户更高层次的网络安全需求。
WEP是Wired Equivalent Privacy的简称,有线等效保密(WEP)协议是对在两台设备间无线传输的数据进行加密的方式,用以防止非法用户窃听或侵入无线网络。
802.11b标准里定义的一个用于无线局域网(WLAN)的安全性协议。WEP被用来提供和有线lan同级的安全性。LAN天生比WLAN安全,因为LAN的物理结构对其有所保护,部分或全部网络埋在建筑物里面也可以防止未授权的访问。
经由无线电波的WLAN没有同样的物理结构,因此容易受到攻击、干扰。WEP的目标就是通过对无线电波里的数据加密提供安全性,如同端-端发送一样。 WEP特性里使用了rsa数据安全性公司开发的rc4 prng算法。如果你的无线基站支持MAC过滤,推荐你连同WEP一起使用这个特性(MAC过滤比加密安全得多)。

‘伍’ Windows未成功关闭。如果这是由于系统无响应,或者是为保护数据而关闭系统...这怎么办

适用于 Linux 的 Windows 子系统中的 Visual Studio Code 服务器使用本地 WebSocket WebSocket 连接与远程 WSL 扩展进行通信。网站中的 JavaScript 可以连接到该服务器并在目标系统上执行任意命令。目前该漏洞被命名为CVE-2021-43907。

这些漏洞可以被用于:
本地 WebSocket 服务器正在监控所有接口。如果允许通过 Windows 防火墙,外部应用程序可能会连接到此服务器。
本地 WebSocket 服务器不检查 WebSocket 握手中的 Origin 标头或具有任何身份验证模式。浏览器中的 JavaScript 可以连接到该服务器。即使服务器正在监控本地主机,也是如此。
我们可以在特定端口上生成一个Node Inspector示例,它还监控所有接口。外部应用程序可以连接到它。
如果外部应用程序或本地网站可以连接到这些服务器中的任何一个,它们就可以在目标计算机上运行任意代码。
Visual Studio Code 库是不断更新的。我将使用一个特定的提交 ()。
$ git clone https://github.com/microsoft/vscode $ git reset --hard
我们可以使用 Code (lol) 来导航源代码。事实上,我已经在 WSL 中为这个漏洞创建了具有相同扩展名的概念验证。
Visual Studio Code在 WSL 内以服务器模式运行,并与 Windows 上的代码示例对话(我称之为代码客户端)。这使我们可以在 WSL 中编辑文件和运行应用程序,而不需要运行其中的所有内容。
远程开发架构
可以通过 SSH 和容器在远程计算机上进行远程开发。GitHub Codespaces 使用相同的技术(很可能通过容器)。
在 Windows 上使用它的方法:
1.打开一个WSL终端示例,在Windows上的代码中应该可以看到远程WSL扩展;
2.在 WSL 中运行code /path/to/something;
3.如果未安装代码服务器或已过时,则会下载它;
4.VS Code 在 Windows 上运行;
5.你可能会收到一个 Windows 防火墙弹出窗口,用于执行如下所示的可执行文件:
服务器的防火墙对话框
这个防火墙对话框是我执行失败的原因。出现该对话框是因为 VS Code 服务器想要监控所有接口。
从我信任的Process Monitor开始:
1.运行进程监控器;
2.在WSL中运行code .;
3.Tools > Process Tree;
4.我运行代码(例如,Windows Terminal.exe)的终端示例中运行Add process and children to Include filte。
Procmon 的进程树
经过一番挖掘,我发现了 VSCODE_WSL_DEBUG_INFO 环境变量。我只是在 WSL 中将 export VSCODE_WSL_DEBUG_INFO=true 添加到 ~/.profile 。运行服务器后我们会得到额外的信息。
VSCODE_WSL_DEBUG_INFO=true
输出被清理。
检查命令行参数。
可以看到出现了WebSocket词汇。
运行 Wireshark 并捕获loopback接口上的流量。然后我再次在 WSL 中运行代码。这次可以看到两个 WebSocket 握手。
在 Wireshark 中捕获的 WebSocket 连接
该运行中的服务器端口是63574,我们也可以从日志中看到。在 Windows 上的代码客户端中打开命令面板 (ctrl+shift+p) 并运行 > Remote-WSL: Show Log。
远程 WSL:显示日志
最后一行有端口:在 http://127.0.0.1:63574/version 上打开本地浏览器。我们还可以看到从 Windows 上的 Code 客户端到服务器的两个单独的 WebSocket 连接。
服务器是位于 /src/vs/server/.ts#L207 的 的一个示例。
它被 createServer 在同一个文件中使用,我们可以使用 Code (lol) 找到它的引用并追踪到 remoteExtensionHostAgent.ts(同一目录)。
可以根据注释查看 main.js 内部。
打开文件,看到服务器可以从传递给main.js的参数中获得主机和端口。
main.js 被 server.sh 调用:
没有 IP 地址传递给脚本,我认为这就是为什么服务器监控所有有趣的事情。port=0 可能告诉服务器使用临时端口,此信息来自同一目录中的 wslServer.sh。
每次看到本地 WebSocket 服务器时,都应该检查谁可以连接到它。
WebSocket 连接不受同源策略约束,浏览器中的 JavaScript 可以连接到本地服务器。
WebSockets 从握手开始,在跨源资源共享或 CORS 的上下文中它始终是一个“简单”的GET 请求,因此浏览器不需要预先请求就可以发送它。
可以快速创建一个尝试连接到特定端口上的本地WebSocket服务器的测试页面,将它托管在某个远程位置(例如,S3 存储桶)并在计算机上打开它。如果连接成功,就可以继续操作了。
我还检查了 Burp,在 Burp Repeater 中创建了 WebSocket 握手。将 Origin 标头修改为 https://example.net。如果响应具有 HTTP/1.1 101 交换协议,那么就可以继续了。
在 Burp 中测试
注意,这只对本地主机服务器有影响。这里的服务器也对外公开,攻击者不受浏览器约束。它们可以直接连接到服务器并提供任何 Origin 标头。
接下来是查看 Wireshark 中的流量,右键点击之前的WebSocket握手GET请求,然后选择 Follow > TCP Stream。我们将看到一个带有一些可读文本的屏幕。关闭它,只会看到这个进程的数据包,这允许我们只关注这个进程。
你可能会问为什么我关闭了仅包含消息内容的弹出窗口,因为没有用。根据 RFC6455,从客户端到服务器的消息必须被屏蔽。这意味着它们与一个 4 字节的密钥(也随消息一起提供)进行了异或运算。Wireshark 在选择时取消屏蔽每个数据包,但有效载荷在初始进程弹出窗口中显示为屏蔽。所以我们将看到纯文本的服务器消息,而客户端消息被屏蔽并出现乱码。如果你点击单个消息,Wireshark 就会显示有效载荷。
我花了几天时间对协议进行逆向工程。后来,我意识到只能在/src/vs/base/parts/ipc/common/ipc.net.ts 中看到协议的源代码。
来自服务器的第一条消息是 KeepAlive 消息。
在协议定义中,我们可以看到不同的消息类型。
在 /src/vs/platform/remote/common/remoteAgentConnection.ts 中,它在代码的其他部分被称为 OKMessage 和heartbeat。
客户端在/src/vs/platform/remote/common/remoteAgentConnection.ts的中处理此问题。客户端(Windows上的代码)发送这个包,它是一个KeepAlive和一个单独的认证消息。
最初,我认为长度字段是 12 个字节而不是 4 个字节,因为其余的字节总是空的。然后我意识到只有常规消息使用消息 ID 和 ACK 字段,而且我只看到了不规则的握手消息。
在修复之前,没有勾选此选项。
注意:在 2021-11-09 更新之前(commit )客户端没有发送数据。但是,使用此提交,我们仍然可以在没有此密钥的情况下发送消息并且它会起作用。这是我们给服务器签名的内容,以检查连接到正确的服务器。
服务器响应一个签名请求。
另一个 JSON 对象:
服务器已经签名了我们在前一条消息中发送的数据,并用它自己的数据请求进行了响应。
客户端验证签名的数据,以检查它是否是受支持的服务器。当创建我们的客户端时,可以简单地跳过。
使用options.signService.validate 方法,然后就会得到/src/vs/platform/sign/node/signService.ts。
vsda 是一个用 C++ 编写的 Node 原生插件,将 Node 原生插件视为共享库或 DLL。该插件位于 https://github.com/microsoft/vsda 的私有存储库中,根据https://libraries.io/npm/vsda/的说法,直到2019年左右,它都是一个NPM包。
它与 VS Code 客户端和服务器捆绑在一起:
Windows系统:
C:\Program Files\Microsoft VS Code\resources\app\node_moles.asar.unpacked\vsda\build\Release\vsda.node
服务器(WSL):~/.vscode-server/bin/{commit}/node_moles/vsda/build/Release/vsda.node。
我找到了https://github.com/kieferrm/vsda-example,并通过一些实验找到了如何使用它创建和签名消息。
1.用msg1 = validator.createNewMessage("1234")创建一个新消息,输入至少4个字符。
2.使用signed1 = signer.sign(msg1)进行签名。
3.使用 validator.validate(signed1) 对其进行验证,响应为“ok”。
需要注意的是,如果你创建了新消息,则无法再验证旧消息。在源代码中,每条消息都有自己的验证器。
Linux 版本有符号,大小约为 40 KB。把它放到 IDA/Ghidra 中,应该就可以开始了。
我花了一些时间,想出了这个伪代码。可能不太正确,但可以让你大致了解此签名的工作原理。
1.用当前时间 + 2*(msg[0]) 初始化 srand,它只会创建 0 到 9(含)之间的随机数;
2.从许可证数组中附加两个随机字符;
3.从 salt 数组中附加一个随机字符;
4.SHA256;
5.Base64;
6.???;
7.Profit。
仅从许可证数组中选择前 10 个位置的字符,它总是 rand() % 10 ,但salt 数组翻了一番。
许可证数组的字符串如下所示:
salt 数组的前 32 个字节(查找 Handshake::CHandshakeImpl::s_saltArray)是:
我从来没有真正检查过我的分析是否正确,不过这无关紧要,知道如何使用插件签名消息,这就足够了。
接下来,客户端需要签名来自服务器的数据并将其发送回来,以显示它是一个“合法”的代码客户端。
服务器响应如下:
客户端发送了如下消息:
提交应该匹配服务器的提交哈希。这不是秘密。这可能是最后一个稳定版本提交(或最后几个之一)。这只是检查客户端和服务器是否在同一版本上。它也可以在 http://localhost:{port}/version 上找到,你的浏览器 JavaScript 可能无法看到它,但外部客户端没有这样的限制。
signedData是对我们在前面消息中从服务器获得的数据进行签名的结果。
Args是此消息中最重要的部分,它可以告诉服务器在特定端口上启动一个 Node Inspector 示例。
break: 启动 Inspector 示例后中断。
端口:检查器示例的端口。
Env:传递给检查器示例进程的环境变量及其值的列表。
Node Inspector 示例可用于调试 Node 应用程序。如果攻击者可以连接到你计算机上的此类示例,那么攻击就成功了。2019 年,Tavis 发现 VS Code 默认启用了远程调试器。
整个设置旨在允许 Windows 上的代码客户端在 WSL、容器或 GitHub 代码空间中进行远程开发。这意味着它可以在远程计算机上做任何想做的事情。
因此,如果网站可以连接到你本地的 WebSocket 服务器并绕过 DRM,它就可以模拟代码客户端。它可以在你的系统上远程执行代码,并且不需要 Node Inspector 示例。
到目前为止,我们已经找到了两种利用该系统的方法:
生成并连接到 Node Inspector 示例;
模拟代码客户端并使用自定义协议与远程计算机交互;
Node Inspector示例
让我们看看前面消息中的参数, /src/vs/server/.ts 在服务器上处理它们。
接口类似于我们之前看到的 JSON 对象:
_updateWithFreeDebugPort检查端口是否空闲,如果没有,它将尝试接下来的10个端口。最后一个空闲端口存储在startParams.port中。
选择的端口被发送回客户端,所以我们知道去哪里:
最后,它在 /src/vs/server/extensionHostConnection.ts 中调用con.start(startParams);。
这看起来很复杂,让我们来分析一下:
1.Node Inspector 示例将监听 0.0.0.0:debugPort,这很危险,如果用户接受 Windows 防火墙对话框,它将在外部可用;
2.我们也可以注入 Inspector 的环境变量;
3.removeDangerousEnvVariables 方法不是安全过滤器,只是删除 DEBUG、DYLD_LIBRARY_PATH 和 LD_PRELOAD 环境变量(如果存在)以防止崩溃。
什么是Node Inspector?
它可以用来调试Node进程。有一些客户端和库支持这一点,但通常,我使用Chromium内置的专用节点DevTools (chrome|edge://inspect)。
连接到 Inspector 示例后,我们可以打开控制台并运行 require('child_process').exec('calc.exe');。尽管我们使用的是wsdl,但它仍然有效。
浏览器中的 JavaScript 无法连接到 Inspector 示例,客户端使用另一个 WebSocket 连接与示例对话。但是,我们需要知道调试器会话 ID。
/json/列表
浏览器中的 JavaScript 可以发送此 GET 请求,但由于 SOP(响应没有 Access-Control-Allow-Origin 标头)而无法看到响应。其他客户端则没有这个限制,因为检查器在外部可用,我们可以从外部连接到它。
现在,我创建了一个简单的概念验证:
1.打开一个网站并输入端口(我们可以扫描它,但手动输入它会更快)。
2.网站中的 JavaScript 完成握手。
3.我使用 /sign API 创建了一个 Node 应用程序,这样就可以使用 vsda 插件。
4.一旦生成Node Inspector 示例,第二个 API 就会被 debugPort 调用。
5.使用 chrome-remote-interface 库的 Node 应用程序连接到 Inspector 示例并运行 calc。
你可以通过以下链接看到源代码:
https://github.com/parsiya/code-wsl-rce https://github.com/parsiya/Parsia-Code/tree/master/code-wsl-rce
模拟代码客户端
创建客户端并使用协议连接到服务器的代码位于 VS Code GitHub 存储库中,这需要大量的复制/粘贴和解析,我只花了几个小时。
如果要创建一个快速的概念验证,应该满足一些假设:
1.找到本地的 WebSocket 端口;
2.从外部连接到Node Inspector示例;
查找本地 WebSocket 端口并不难,从浏览器扫描本地服务器并不是什么新鲜事。服务器也可以从外部使用,因此我们不受那里的浏览器约束。
Chrome 限制不起作用,因为 WebSocket 服务器需要一个网络服务器来处理握手。我也很好奇 WebSocket 节流是 Chrome 特定的保护还是 Chromium 的一部分。
有趣的是,Chrome 浏览器有一个保护机制,可以防止恶意行为者暴力破解 WebSocket 端口,它在第 10 次尝试后开始节流。不幸的是,这种保护很容易被绕过,因为扩展的 HTTP 和 WebSocket 服务器都在同一个端口上启动。这可用于通过向 img 标签添加 onload 处理程序来检查特定本地主机端口上的图片是否存在来强制所有可能的本地端口。
也就是说,这是一个开发环境,用户可能整天都在 WSL 中开发并且从不关闭他们的浏览器选项卡,因此如果他们打开我们的网站,我们就有可能找到它。
连接到Node Inspector示例是另一回事,我们无法从浏览器执行此操作,因此我们需要我们的服务器可以访问受害者的计算机。
第二种利用方法(模拟代码客户端)没有这些限制,因为浏览器可以与本地服务器通信并执行所有操作。它只需要我们对协议进行逆向工程并找出要发送的正确消息。
当你收到 WebSocket 升级请求时,请根据许可名单检查 Origin 标头。代码客户端在该标头中发送 vscode-file://vscode-app,以便我们可以使用它来操作。
参考及来源:https://parsiya.net/blog/2021-12-20-rce-in-visual-studio-codes-remote-wsl-for-fun-and-negative-profit/

‘陆’ 最详尽教程完整介绍-Windows 的 Linux 子系统-WSL1&WSL2

必须启用“适用于 Linux 的 Windows 子系统”可选功能并重启,然后才能在 Windows 上运行 Linux 发行版。

以管理员运行Powershell(开启WSL,如已开启可跳过)

WSL 1 和 WSL 2 之间的主要区别在于,在托管 VM 内使用实际的 Linux 内核、支持完整的系统调用兼容性以及跨 Linux 和 Windows 操作系统的性能。

WSL2相比WSL1来说可以完美支持Docker。与WSL1的模拟Linux API不同的是,WSL2采用在Hyper-V虚拟机中运行的方案。可以说WSL2和原汁原味的Linux已经十分接近

不支持Docker的守护进程,但您可以使用 Docker CLI 连接到通过 Docker for Windows 或您创建的任何其他VM 运行的远程Docker守护进程

不能完全兼容systemctl, systemd等等,IO速度相对原生Linux也是大打折扣,在编译解压方面可以很深体会到。毕竟不是真正的Linux,而是挂在Windows NT内核之上的仿Linux 系统

由于WSL 还不是原生的Linux,所以需要借助 Docker for Windows 来实现Docker(Docker for Windows 是基于Hyper-V 技术)

另外一种方式是,在WSL1中安装docker 客户端,连接 docker server, 来解决在WSL1上使用docker 的问题。(PS: Win10 的Linux 子系统是装不了 docker (服务端)的,但是可以安装客户端)

参考

WSL2 是第二代 WSL,包含在2020年5月正式发布 Windows 10 v2004 版中。相比第一代,新的 WSL2 重新设计了架构,使用真正的 Linux 内核,几乎具有 Linux 的所有完整功能。启用WSL2的 Linux 系统启动时间非常快,内存占用很少,并且,WSL 2 还可以直接原生运行 Docker,VS Code 编辑器还有 Remote-WSL 插件,相对于完整的 linux 虚拟机只是不支持 systemctl、systemd,不能直接运行图形桌面。Windows 也越来越向虚拟平台靠拢,Windows NT 内核和 Linux 内核都是运行在虚拟平台之上的,是平级的

如果发现VERSION为1,说明Ubuntu运行在WSL1下,可以升级到 WSL2。同样,WSL2也可以降级到WSL1。
wsl -l -v #查看已安装Linux版本和名称,完整命令格式:wsl --list --verbose

具体步骤参考 : https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package

安装 WSL 2 之前,必须启用“虚拟机平台”可选功能

wsl --set-version Ubuntu 2 #升级到WSL2,其中 Ubuntu 是已经安装的Linux名称,命令格式:wsl --set-version <Distro> <Version>

启用WSL后,通过 wsl$ 可以访问WSL文件

最初的WSL是在Windows之上模拟Linux内核,但是Windows和Linux之间存在如此基本的差异,以至于某些事情不可能以与本机Linux相同的行为实现,这意味着不可能直接在 WSL中运行 Docker Engine 和Kubernetes
在WSL1中,Docker Desktop通过Hyper-V虚拟机去运行docker环境的

升级到WSL2 之后, Docker Desktop 可以直接用 WSL2,直接运行在Linux 内核上了

通过如下设置,Docker Desktop就和WSL2分发版本进行了集成,无需在WSL中安装docker; 当然,也可以选择不与Docker Desktop集成,直接在WSL 中运行docker 容器。

启用WSL后,docker运行数据都在WSL发行版中,文件位置都只能由WSL管理

安装docker后,docker会自动创建2个发行版:

WSL发行版默认都是安装在C盘,在%LOCALAPPDATA%/Docker/wsl目录
docker的运行数据、镜像文件都存在%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx中

通过 WSL 2 集成,您仍然可以体验到与 Windows 的无缝集成,但在 WSL 中运行的 Linux 程序也可以执行相同的操作。这对于从事面向 Linux 环境的项目或为 Linux 量身定制的构建过程的开发人员产生了巨大影响。不再需要维护 Linux 和 Windows 构建脚本!例如,Docker 的开发人员现在可以在 Windows 上的 Linux Docker 守护程序上工作,使用与 Linux 计算机上的开发人员相同的工具和脚本集:

注:WSL2 Docker最爽的地方是和宿主机Win10共享network,我们在宿主机Win10使用localhost加端口号就可以访问Docker中对应container中的服务,十分方便

wsl #启动
wsl --shutdown #关闭所有正在运行的 Linux 和 WSL 2

启动 WSL2 之后,会在任务管理器中发现多了一个 虚拟机工作线程

访问wsl 文件

卸载发行版
有时候某个Linux发行版不再使用,或者是环境被搞坏需要重装,这时候我们可以卸载掉这个Linux发行版。方法如下。

‘柒’ 如何在windows下使用linux的shell脚本

如果你是win10系统,可以通过 wsl 即windows subsystem linux子系统来执行。
如果不是win10系统,考虑安装vmware、virtualpc等虚拟机,安装linux来执行。
另外也可能考虑使用cygwin来模拟linux系统从而实现脚本执行。

‘捌’ win10 virtualbox wsl比较

要完整的linux环境当然virtualbox
wsl2不如VMware、virtualbox
wsl1很好,比如你只想用一下git,或写个脚本之类,wsl1起码比cygwin、msys2更快更稳更好用吧。。。(私货,wsl1下的debian很好)

‘玖’ 我把下面的脚本保存为sleep.vbs脚本后,运行错误: Set wsl = CreateObject("WScript.Shell") wsl.Sleep

Set wsl = CreateObject("WScript.Shell")
WScript.Shell 对象没有Sleep成员
Sleep 延迟时间
或者
WScript.Sleep 延迟时间

‘拾’ 服务器的配置

WebLogic Server Scripting Tool(WLST)是一种命令行脚本工具,BEA公司计划在WebLogic Server 9.0版本中包含它。现在,该工具及所有的服务包(service packs)都可以从BEA公司的dev2dev站点下载得到,并在WebLogic Server 7.0和8.0下运行。

背景知识
人们一直希望WebLogic Server支持一个脚本解决方案,以允许开发人员和系统管理员可靠地、交互式地对WebLogic Server配置执行简单和复杂的更改。当前,WebLogic Server 支持三个命令行工具:weblogic.Admin、weblogic.Deployer和WLConfig Ant 任务工具。
这三个工具都需要一个运行的Weblogic Server实例。其中Weblogic.Admin和WLConfig用来修改配置和查询MBean,weblogic.Deployer则严格用于部署应用程序。还有一些工具WebLogic Server不支持,但是用户很熟悉,例如WLShell、Config2Admin和MBeanExplorer等。
许多用例如果使用一个简单的脚本工具将会非常容易处理。例如,开发人员和管理员可能需要编写脚本来配置服务器,并且想要通过循环和其他流程控制结构来为服务器增加配置元素。类似这样的用例使人们迫切希望有一种可以读取用户脚本并且在WebLogic Server上运行的脚本语言解释器。
WLST试图解决一些当前WebLogic Server开发人员和管理员者所面临的难题。这包括捕捉那些可重复的配置和部署工作,其中配置工作主要是将环境(应用程序和依赖性)准备为大环境的一部分);在生命周期的某一级别或各个级别之间(例如开发和分段级别之间)的用户间共享复杂的配置更改;以及跨一个拓扑结构的多个节点或者在一些其他范围,迭代地应用相同的更改。向WebLogic Server增加对用户定义脚本编程的支持,可以极大地增强可用性,从而提高用户满意度。使用WLST,用户可以定制WebLogic Server,以满足自己的需要,简化日常任务,扩展其他功能。通过提供脚本来处理,重复的任务和复杂的过程现在可以被简化。脚本语言扩展了Java语言,提高了开发速度。

简介
WLST是WebLogic Server的一个命令行脚本接口。WLST脚本环境基于Java脚本解释器(Jython)。WLST使您能够利用所提供的WebLogic Server脚本功能,以及解释型语言的共同特性。这些特性包括局部变量、条件变量和流程控制语句。WebLogic Server开发人员和管理员可以根据Jython语法,扩展WebLogic Server脚本语言来适应自己的需要。
Jython是高级、动态、面向对象语言Python的一个与Java平台无缝集成的实现。Jython是100%纯Java的,由于它清晰简单的语法,使得Jython非常容易学习。Jython的一个主要优点是您可以通过Jython解释器调用任何Java对象。这就意味着用户可以重用自己编写的任何Java代码或者Java工具。本文我们对Jython不做太多深究。关于Jython的更多信息,请访问www.jython.org。

WLST 介绍
WLST有两种版本,脱机版和联机版。脱机版用来在用户没有连接到任何一个WebLogic Server实例的情况下,通过与域文件和配置模板交互来配置域。该功能类似于WebLogic Server 9.0中反对的配置向导(Configuration Wizard)静寂模式脚本编程。联机版用来在用户连接到一个运行的WebLogic Server实例的情况下,更改配置工件或者监视运行时数据。现在两个版本作为两个独立的JAR包提供下载。在WebLogic Server 9.0发布的时候,这两个版本将会整合成为一个工具。

操作模式
WLST提供三种操作模式:交互模式、脚本模式和嵌入模式。在交互模式下,用户在命令提示符下键入命令并查看响应。这种模式对于学习脚本工具及其功能是有用的。另外,对于原型设计命令语法以在编译较大的脚本之前验证选项,也是有用的。清单1中展示了一个交互式会话的例子。在脚本模式下,用户可以把许多脚本命令写在一个文件中,工具将该文件作为程序执行。清单2展示了一个可以在WLST上作为程序执行的简单脚本。在嵌入模式下,用户把WLST解释器嵌入Java应用程序中(参见清单3)。

特性
WebLogic Server实现了JMX 1.0,并且所有子系统(JMS、JDBC、Security等)都被作为相应的MBean并包含属性,可以按这些属性来配置、监视和管理子系统。所有的MBean被组织为层次结构,DomainMBean是所有Configuration MBean的父节点,DomainRuntimeMBean是所有Runtime MBean的父节点。用户可以通过调用不同的WLST命令定位任何MBean。为了简单,定位大致相当于任何操作系统中的文件表示方法。

定位
按照操作系统的说法,WLST有三个驱动:config、runtime和custom。config驱动管理所有的Configuration MBean(DomainMBean是它们的父节点)。runtime驱动管理所有的Runtime MBean(DomainRuntimeMBean是它们的父节点)。custom驱动管理所有的Custom Mbean(非WebLogic的,而是用户在WebLogic Server上注册的)。MBean的类型或者实例就像目录,用户可以“cd”或者定位到这些MBean,以查看属性名和值或操作(即文件)。清单4中的例子展示了一个用户定位到不同的驱动和MBean然后列出其属性和值。

配置
通过“configToScript”命令,用户可以很方便地把资源从一个域移动到另一个域。这个命令以config.xml作参数,并将之转换为相应的WSLT脚本,该脚本被应用于另一个域,以创建一个类似的配置。这个命令也可以创建一个包含名称-值对的属性文件。这些名称-值对可以被修改,以创建具有不同域名、服务器名等的配置。清单5演示了一个简单的例子,其中config.xml被转换为WSLT脚本。用户也可以创建新的配置信息,以及检索和更改存储在域config.xml文件中或者是使用Template Builder创建的域模板JAR中的现有配置值。清单6展示了一个简单的例子,用户读取一个现有的medrec模板,以创建一个medrec域。

当前托管对象(cmo)
每当用户定位到一个MBean实例,他就具有通过cmo变量对这个MBean对象的访问权。这个变量保存MBean的代理对象,所以用户可以调用该MBean接口支持的所有方法或操作。清单7展示了一个可以使用这个变量的例子。

从WLST调用Java程序
如果您用Java编写了命令行工具,并且想要在WLST中重用,这是完全可以做到的。例如,我编写了一个简单的Java程序,用来查询MBeanServer并检索注册在这台服务器上的所有MBean,然后打印它们的对象名称。好处是我不必抛开这些有用的代码或者用Jython重新进行编写,只要从WLST中调用这个程序就行了。清单8显示了这个用Java编写的程序,以及用户如何从WLST中调用该程序。

从Ant中调用WLST
许多用户使用Ant自动完成Weblogic域的配置,如果您愿意把您的WLST配置脚本嵌入Ant编译文件(build file),那么您也可以这样做。清单9展示了编译文件的一个片断,它调用WLST来运行脚本。

扩展WLST命令
WLST定义了一些常用的命令,但这并不限制用户去定义自定义的命令或者模块,然后把它们导入WLST以满足他们的需要。清单10定义了两个自定义的命令:“creatServer”和“deleteServer”。它们创建和删除具有指定名称的服务器。这些命令将会对于WLST会话是活跃的。用户也可以编写一些定义几个有用功能并能导入WLST中的模块。清单11展示的例子中,用户定义了一个安全类,这个类包括创建用户、更改密码等实用功能。

WLST模块
用户常常想将WLST与其他Jython模块一起使用。这只要把WLST模块写入一个文件,并把这个文件导入到您的Jython模块中就可以了。清单12展示了如何编写WLST模块并在Jython模块中使用。有关更多信息,请访问http://dev2dev.bea.com/codelibrary/code/posample.jsp。

WLST 工作方式
让我们完成一个简单的用例,其中展示了使用WLST的端到端场景。假设一个管理员打算为开发人员配置一个域。本质上,他会从头开始创建一个域(一个admin 服务器),启动服务器,配置托管服务器,并群集和部署应用程序。他也会通过一个简单的脚本监视这些服务器的状况。步骤如下:
根据模板创建一个简单的域(一个admin服务器),并启动服务器(见清单13)。
配置两个托管服务器和一个群集。在连接到正在运行的admin服务器之后,添加这两个托管服务器到这个集群,并启动该群集。另外,部署一个简单的应用程序到该群集(见清单14)。
使用一个简单的监视脚本,监视服务器的状态(见清单15)。
前瞻
WLST可以在BEA公司的dev2dev站点上下载。这个工具可以与WebLogic Server 7.0和8.1(以及所有的服务包)一起工作。BEA公司的Management新闻组提供对这个工具的支持。这个工具可以在明年发布的WebLogic Server 9.0中正式得到并受到支持。BEA公司也打算在WebLogic Server 7.1和8.1两个版本中直接支持WLST。

一些您所期待的WLST的新特性:

通过JSR 88 API进行的部署,包括通过WLST进行的部署计划的编辑。
通过WLST对所有诊断框架(WebLogic Server 9.0中新引入的)工件的访问。
脱机版WLST(现在可以单独下载)与现有联机版WLST的合并。
对新的 (WebLogic Server 9.0) 管理API的访问。
支持WebLogic Server 9.0中所有的新节点管理器特性。
结束语
在这篇文章中,我介绍了一个新工具——WLST,它使开发人员和系统管理员能更方便地管理WebLogic Server(联机或者脱机都可以),并能对WebLogic Server执行配置更改。WLST有三种使用模式:交互模式、脚本模式和嵌入模式。它提供了一个简单的方法访问WebLogic Server中的MBean,并且提供了一些方便的命令用于监视WebLogic Server实例的生命周期。WLST是用Jython(Jython是流行的Python语言的纯Java实现)语言编写的。

参考资料

Online WLST Tool: http://dev2dev.bea.com/codelibrary/code/wlst.jsp
Offline WLST Tool: http://dev2dev.bea.com/codelibrary/code/wlst_offline.jsp
Jython's Main Web Site: www.jython.org
PO Sample: http://dev2dev.bea.com/codelibrary/code/posample.jsp

热点内容
pow在c语言中什么 发布:2025-02-12 21:07:24 浏览:320
php查询mysql连接 发布:2025-02-12 21:05:45 浏览:632
linuxc当前时间 发布:2025-02-12 21:03:32 浏览:28
云锁神服务器 发布:2025-02-12 21:03:29 浏览:487
c语言int和float 发布:2025-02-12 21:03:24 浏览:20
我的世界有什么好玩的大服务器 发布:2025-02-12 21:01:59 浏览:98
方舟手游如何解锁自己的服务器 发布:2025-02-12 20:54:09 浏览:657
猫影视源码 发布:2025-02-12 20:42:05 浏览:923
局域网如何访问其他电脑 发布:2025-02-12 20:39:06 浏览:378
新平板电脑的数字密码如何知道 发布:2025-02-12 20:31:19 浏览:345