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/lib/rex/proto/ms_nrtp/ms_nrtp_header.rb
Views: 18092
1
require 'rex/proto/ms_nrtp/ms_nrtp_counted_string'
2
3
module Rex::Proto::MsNrtp::MsNrtpHeader
4
class MsNrtpHeaderEnd < BinData::Record
5
# see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nrtp/32803cc9-e5d2-4d76-8852-b2eba3af25ca
6
TOKEN = 0
7
endian :little
8
end
9
10
class MsNrtpHeaderCustom < BinData::Record
11
# see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nrtp/709beed5-da49-45b0-bf1b-836da17352c3
12
TOKEN = 1
13
endian :little
14
15
ms_nrtp_counted_string :header_name
16
ms_nrtp_counted_string :header_value
17
end
18
19
class MsNrtpHeaderStatusCode < BinData::Record
20
# see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nrtp/70cdb0d8-6a58-46ae-8cb0-6976a9c3720e
21
TOKEN = 2
22
endian :little
23
24
uint8 :data_type, value: 2
25
uint16 :status_code_value
26
end
27
28
class MsNrtpHeaderStatusPhrase < BinData::Record
29
# see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nrtp/a9a0e845-56ba-4b4a-9561-93940f039150
30
TOKEN = 3
31
endian :little
32
33
uint8 :data_type, value: 1
34
ms_nrtp_counted_string :status_phrase_value
35
end
36
37
class MsNrtpHeaderUri < BinData::Record
38
# see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nrtp/2b1b47f7-4fed-4515-a0f9-e0688664c728
39
TOKEN = 4
40
endian :little
41
42
uint8 :data_type, value: 1
43
ms_nrtp_counted_string :uri_value
44
end
45
46
class MsNrtpHeaderCloseConnection < BinData::Record
47
# see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nrtp/f94572e8-c821-42a2-8b0f-dabe1cbc7e02
48
TOKEN = 5
49
endian :little
50
51
uint8 :data_type, value: 0
52
end
53
54
class MsNrtpHeaderContentType < BinData::Record
55
# see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nrtp/d128389c-7cf6-4f09-9928-287324836344
56
TOKEN = 6
57
endian :little
58
59
uint8 :data_type, value: 1
60
ms_nrtp_counted_string :content_type_value
61
end
62
63
class MsNrtpHeaderUnknown < BinData::Record
64
# see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nrtp/1cb3cf86-2a42-4f38-bfda-f4f546c629f5
65
endian :little
66
67
uint8 :data_type
68
choice :data_value, selection: :data_type, onlyif: -> { data_type != 0 } do
69
ms_nrtp_counted_string 1
70
uint8 2
71
uint16 3
72
int32 4
73
end
74
end
75
76
class MsNrtpHeader < BinData::Record
77
# see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nrtp/c9a3ae3b-f50f-4b02-8540-964b59918291
78
endian :little
79
80
uint16 :token
81
choice :header, selection: :token do
82
ms_nrtp_header_end MsNrtpHeaderEnd::TOKEN
83
ms_nrtp_header_custom MsNrtpHeaderCustom::TOKEN
84
ms_nrtp_header_status_code MsNrtpHeaderStatusCode::TOKEN
85
ms_nrtp_header_status_phrase MsNrtpHeaderStatusPhrase::TOKEN
86
ms_nrtp_header_uri MsNrtpHeaderUri::TOKEN
87
ms_nrtp_header_close_connection MsNrtpHeaderCloseConnection::TOKEN
88
ms_nrtp_header_content_type MsNrtpHeaderContentType::TOKEN
89
ms_nrtp_header_unknown :default
90
end
91
end
92
end
93
94