CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
rapid7

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

GitHub Repository: rapid7/metasploit-framework
Path: blob/master/spec/lib/rex/proto/x11/extensions.rb
Views: 16006
1
# -*- coding: binary -*-
2
3
require 'spec_helper'
4
5
RSpec.describe Rex::Proto::X11::Extension do
6
subject do
7
mod = ::Msf::Exploit.new
8
mod.extend described_class
9
10
mod.send(:initialize)
11
mod
12
end
13
14
let(:query_extension) do
15
"\x62\x00\x05\x00\f\x00\x00\x00BIG-REQUESTS"
16
end
17
18
let(:query_extension2) do
19
"\x62\x00\x05\x00\t\x00\x00\x00XKEYBOARD\x00\x00\x00"
20
end
21
22
let(:query_extension_resp) do
23
"\x01\x00\x01\x00\x00\x00\x00\x00\x01\x86\x00\x00\x00\x00\x00\x00" \
24
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
25
end
26
27
let(:enable_134) do
28
"\x86\x00\x01\x00"
29
end
30
31
let(:enable_resp) do
32
"\x01\x00\x02\x00\x00\x00\x00\x00\xff\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
33
end
34
35
describe 'X11QueryExtensionRequest' do
36
context '#read long length' do
37
it do
38
request = Rex::Proto::X11::Extension::X11QueryExtensionRequest.read(query_extension)
39
expect(request.extension).to eq('BIG-REQUESTS')
40
end
41
end
42
context '#initialize long length' do
43
it do
44
request = Rex::Proto::X11::Extension::X11QueryExtensionRequest.new(extension: 'BIG-REQUESTS')
45
expect(request.to_binary_s).to eq(query_extension)
46
end
47
end
48
context '#read short length' do
49
it do
50
request = Rex::Proto::X11::Extension::X11QueryExtensionRequest.read(query_extension2)
51
expect(request.extension).to eq('XKEYBOARD')
52
end
53
end
54
context '#initialize short length' do
55
it do
56
request = Rex::Proto::X11::Extension::X11QueryExtensionRequest.new(extension: 'XKEYBOARD')
57
expect(request.to_binary_s).to eq(query_extension2)
58
end
59
end
60
end
61
62
describe 'X11QueryExtensionResponse' do
63
context '#read' do
64
it do
65
response = Rex::Proto::X11::Extension::X11QueryExtensionResponse.read(query_extension_resp)
66
expect(response.major_opcode).to eq(134)
67
expect(response.present).to eq(1)
68
end
69
end
70
end
71
72
describe 'X11ExtensionToggleRequest' do
73
context '#read' do
74
it do
75
request = Rex::Proto::X11::Extension::X11ExtensionToggleRequest.read(enable_134)
76
expect(request.opcode).to eq(134)
77
expect(request.wanted_major).to eq(0)
78
expect(request.wanted_major).to eq(0)
79
expect(request.request_length).to eq(1)
80
end
81
end
82
context '#initialize' do
83
it do
84
request = Rex::Proto::X11::Extension::X11ExtensionToggleRequest.new(opcode: 134)
85
expect(request.to_binary_s).to eq(enable_134)
86
end
87
end
88
end
89
90
describe 'X11ExtensionToggleReply' do
91
context '#read' do
92
it do
93
request = Rex::Proto::X11::Extension::X11ExtensionToggleReply.read(enable_resp)
94
expect(request.reply_sequence_number).to eq(2)
95
expect(request.maximum_request_length).to eq(4194303)
96
end
97
end
98
end
99
end
100
101