Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/scapy/layers/msrpce/raw/ms_wkst.py: 98%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

48 statements  

1# SPDX-License-Identifier: GPL-2.0-only 

2# This file is part of Scapy RPC 

3# See https://scapy.net/ for more information 

4# Copyright (C) Gabriel Potter 

5 

6# ms-wkst.idl compiled on 06/07/2025 

7# This file is a stripped version ! Use scapy-rpc for the full. 

8""" 

9RPC definitions for the following interfaces: 

10- wkssvc (v1.0): 6BFFD098-A112-3610-9833-46C3F87E345A 

11This file is auto-generated by midl-to-scapy, do not modify. 

12""" 

13 

14from enum import IntEnum 

15import uuid 

16 

17from scapy.fields import StrFixedLenField 

18from scapy.layers.dcerpc import ( 

19 NDRPacket, 

20 DceRpcOp, 

21 NDRConfPacketListField, 

22 NDRConfVarStrLenField, 

23 NDRConfVarStrLenFieldUtf16, 

24 NDRConfVarStrNullField, 

25 NDRConfVarStrNullFieldUtf16, 

26 NDRFullEmbPointerField, 

27 NDRFullPointerField, 

28 NDRInt3264EnumField, 

29 NDRIntField, 

30 NDRPacketField, 

31 NDRShortField, 

32 NDRSignedIntField, 

33 NDRUnionField, 

34 register_dcerpc_interface, 

35) 

36 

37 

38class LPWKSTA_INFO_100(NDRPacket): 

39 ALIGNMENT = (4, 8) 

40 fields_desc = [ 

41 NDRIntField("wki100_platform_id", 0), 

42 NDRFullEmbPointerField(NDRConfVarStrNullFieldUtf16("wki100_computername", "")), 

43 NDRFullEmbPointerField(NDRConfVarStrNullFieldUtf16("wki100_langroup", "")), 

44 NDRIntField("wki100_ver_major", 0), 

45 NDRIntField("wki100_ver_minor", 0), 

46 ] 

47 

48 

49class LPWKSTA_INFO_101(NDRPacket): 

50 ALIGNMENT = (4, 8) 

51 fields_desc = [ 

52 NDRIntField("wki101_platform_id", 0), 

53 NDRFullEmbPointerField(NDRConfVarStrNullFieldUtf16("wki101_computername", "")), 

54 NDRFullEmbPointerField(NDRConfVarStrNullFieldUtf16("wki101_langroup", "")), 

55 NDRIntField("wki101_ver_major", 0), 

56 NDRIntField("wki101_ver_minor", 0), 

57 NDRFullEmbPointerField(NDRConfVarStrNullFieldUtf16("wki101_lanroot", "")), 

58 ] 

59 

60 

61class LPWKSTA_INFO_102(NDRPacket): 

62 ALIGNMENT = (4, 8) 

63 fields_desc = [ 

64 NDRIntField("wki102_platform_id", 0), 

65 NDRFullEmbPointerField(NDRConfVarStrNullFieldUtf16("wki102_computername", "")), 

66 NDRFullEmbPointerField(NDRConfVarStrNullFieldUtf16("wki102_langroup", "")), 

67 NDRIntField("wki102_ver_major", 0), 

68 NDRIntField("wki102_ver_minor", 0), 

69 NDRFullEmbPointerField(NDRConfVarStrNullFieldUtf16("wki102_lanroot", "")), 

70 NDRIntField("wki102_logged_on_users", 0), 

71 ] 

72 

73 

74class LPWKSTA_INFO_502(NDRPacket): 

75 ALIGNMENT = (4, 4) 

76 fields_desc = [ 

77 NDRIntField("wki502_char_wait", 0), 

78 NDRIntField("wki502_collection_time", 0), 

79 NDRIntField("wki502_maximum_collection_count", 0), 

80 NDRIntField("wki502_keep_conn", 0), 

81 NDRIntField("wki502_max_cmds", 0), 

82 NDRIntField("wki502_sess_timeout", 0), 

83 NDRIntField("wki502_siz_char_buf", 0), 

84 NDRIntField("wki502_max_threads", 0), 

85 NDRIntField("wki502_lock_quota", 0), 

86 NDRIntField("wki502_lock_increment", 0), 

87 NDRIntField("wki502_lock_maximum", 0), 

88 NDRIntField("wki502_pipe_increment", 0), 

89 NDRIntField("wki502_pipe_maximum", 0), 

90 NDRIntField("wki502_cache_file_timeout", 0), 

91 NDRIntField("wki502_dormant_file_limit", 0), 

92 NDRIntField("wki502_read_ahead_throughput", 0), 

93 NDRIntField("wki502_num_mailslot_buffers", 0), 

94 NDRIntField("wki502_num_srv_announce_buffers", 0), 

95 NDRIntField("wki502_max_illegal_datagram_events", 0), 

96 NDRIntField("wki502_illegal_datagram_event_reset_frequency", 0), 

97 NDRSignedIntField("wki502_log_election_packets", 0), 

98 NDRSignedIntField("wki502_use_opportunistic_locking", 0), 

99 NDRSignedIntField("wki502_use_unlock_behind", 0), 

100 NDRSignedIntField("wki502_use_close_behind", 0), 

101 NDRSignedIntField("wki502_buf_named_pipes", 0), 

102 NDRSignedIntField("wki502_use_lock_read_unlock", 0), 

103 NDRSignedIntField("wki502_utilize_nt_caching", 0), 

104 NDRSignedIntField("wki502_use_raw_read", 0), 

105 NDRSignedIntField("wki502_use_raw_write", 0), 

106 NDRSignedIntField("wki502_use_write_raw_data", 0), 

107 NDRSignedIntField("wki502_use_encryption", 0), 

108 NDRSignedIntField("wki502_buf_files_deny_write", 0), 

109 NDRSignedIntField("wki502_buf_read_only_files", 0), 

110 NDRSignedIntField("wki502_force_core_create_mode", 0), 

111 NDRSignedIntField("wki502_use_512_byte_max_transfer", 0), 

112 ] 

113 

114 

115class LPWKSTA_INFO_1013(NDRPacket): 

116 ALIGNMENT = (4, 4) 

117 fields_desc = [NDRIntField("wki1013_keep_conn", 0)] 

118 

119 

120class LPWKSTA_INFO_1018(NDRPacket): 

121 ALIGNMENT = (4, 4) 

122 fields_desc = [NDRIntField("wki1018_sess_timeout", 0)] 

123 

124 

125class LPWKSTA_INFO_1046(NDRPacket): 

126 ALIGNMENT = (4, 4) 

127 fields_desc = [NDRIntField("wki1046_dormant_file_limit", 0)] 

128 

129 

130class NetrWkstaGetInfo_Request(NDRPacket): 

131 fields_desc = [ 

132 NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ServerName", "")), 

133 NDRIntField("Level", 0), 

134 ] 

135 

136 

137class NetrWkstaGetInfo_Response(NDRPacket): 

138 fields_desc = [ 

139 NDRUnionField( 

140 [ 

141 ( 

142 NDRFullPointerField( 

143 NDRPacketField( 

144 "WkstaInfo", LPWKSTA_INFO_100(), LPWKSTA_INFO_100 

145 ) 

146 ), 

147 ( 

148 (lambda pkt: getattr(pkt, "Level", None) == 100), 

149 (lambda _, val: val.tag == 100), 

150 ), 

151 ), 

152 ( 

153 NDRFullPointerField( 

154 NDRPacketField( 

155 "WkstaInfo", LPWKSTA_INFO_101(), LPWKSTA_INFO_101 

156 ) 

157 ), 

158 ( 

159 (lambda pkt: getattr(pkt, "Level", None) == 101), 

160 (lambda _, val: val.tag == 101), 

161 ), 

162 ), 

163 ( 

164 NDRFullPointerField( 

165 NDRPacketField( 

166 "WkstaInfo", LPWKSTA_INFO_102(), LPWKSTA_INFO_102 

167 ) 

168 ), 

169 ( 

170 (lambda pkt: getattr(pkt, "Level", None) == 102), 

171 (lambda _, val: val.tag == 102), 

172 ), 

173 ), 

174 ( 

175 NDRFullPointerField( 

176 NDRPacketField( 

177 "WkstaInfo", LPWKSTA_INFO_502(), LPWKSTA_INFO_502 

178 ) 

179 ), 

180 ( 

181 (lambda pkt: getattr(pkt, "Level", None) == 502), 

182 (lambda _, val: val.tag == 502), 

183 ), 

184 ), 

185 ( 

186 NDRFullPointerField( 

187 NDRPacketField( 

188 "WkstaInfo", LPWKSTA_INFO_1013(), LPWKSTA_INFO_1013 

189 ) 

190 ), 

191 ( 

192 (lambda pkt: getattr(pkt, "Level", None) == 1013), 

193 (lambda _, val: val.tag == 1013), 

194 ), 

195 ), 

196 ( 

197 NDRFullPointerField( 

198 NDRPacketField( 

199 "WkstaInfo", LPWKSTA_INFO_1018(), LPWKSTA_INFO_1018 

200 ) 

201 ), 

202 ( 

203 (lambda pkt: getattr(pkt, "Level", None) == 1018), 

204 (lambda _, val: val.tag == 1018), 

205 ), 

206 ), 

207 ( 

208 NDRFullPointerField( 

209 NDRPacketField( 

210 "WkstaInfo", LPWKSTA_INFO_1046(), LPWKSTA_INFO_1046 

211 ) 

212 ), 

213 ( 

214 (lambda pkt: getattr(pkt, "Level", None) == 1046), 

215 (lambda _, val: val.tag == 1046), 

216 ), 

217 ), 

218 ], 

219 StrFixedLenField("WkstaInfo", "", length=0), 

220 align=(4, 8), 

221 switch_fmt=("L", "L"), 

222 ), 

223 NDRIntField("status", 0), 

224 ] 

225 

226 

227class NET_COMPUTER_NAME_TYPE(IntEnum): 

228 NetPrimaryComputerName = 0 

229 NetAlternateComputerNames = 1 

230 NetAllComputerNames = 2 

231 NetComputerNameTypeMax = 3 

232 

233 

234class PUNICODE_STRING(NDRPacket): 

235 ALIGNMENT = (4, 8) 

236 fields_desc = [ 

237 NDRShortField("Length", None, size_of="Buffer", adjust=lambda _, x: (x * 2)), 

238 NDRShortField( 

239 "MaximumLength", None, size_of="Buffer", adjust=lambda _, x: (x * 2) 

240 ), 

241 NDRFullEmbPointerField( 

242 NDRConfVarStrLenFieldUtf16( 

243 "Buffer", 

244 "", 

245 size_is=lambda pkt: (pkt.MaximumLength // 2), 

246 length_is=lambda pkt: (pkt.Length // 2), 

247 ) 

248 ), 

249 ] 

250 

251 

252class PNET_COMPUTER_NAME_ARRAY(NDRPacket): 

253 ALIGNMENT = (4, 8) 

254 fields_desc = [ 

255 NDRIntField("EntryCount", None, size_of="ComputerNames"), 

256 NDRFullEmbPointerField( 

257 NDRConfPacketListField( 

258 "ComputerNames", 

259 [PUNICODE_STRING()], 

260 PUNICODE_STRING, 

261 size_is=lambda pkt: pkt.EntryCount, 

262 ) 

263 ), 

264 ] 

265 

266 

267class NetrEnumerateComputerNames_Request(NDRPacket): 

268 fields_desc = [ 

269 NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ServerName", "")), 

270 NDRInt3264EnumField("NameType", 0, NET_COMPUTER_NAME_TYPE), 

271 NDRIntField("Reserved", 0), 

272 ] 

273 

274 

275class NetrEnumerateComputerNames_Response(NDRPacket): 

276 fields_desc = [ 

277 NDRFullPointerField( 

278 NDRPacketField( 

279 "ComputerNames", PNET_COMPUTER_NAME_ARRAY(), PNET_COMPUTER_NAME_ARRAY 

280 ) 

281 ), 

282 NDRIntField("status", 0), 

283 ] 

284 

285 

286WKSSVC_OPNUMS = { 

287 0: DceRpcOp(NetrWkstaGetInfo_Request, NetrWkstaGetInfo_Response), 

288 # 3: Opnum3NotUsedOnWire, 

289 # 4: Opnum4NotUsedOnWire, 

290 # 12: Opnum12NotUsedOnWire, 

291 # 14: Opnum14NotUsedOnWire, 

292 # 15: Opnum15NotUsedOnWire, 

293 # 16: Opnum16NotUsedOnWire, 

294 # 17: Opnum17NotUsedOnWire, 

295 # 18: Opnum18NotUsedOnWire, 

296 # 19: Opnum19NotUsedOnWire, 

297 # 21: Opnum21NotUsedOnWire, 

298 30: DceRpcOp( 

299 NetrEnumerateComputerNames_Request, NetrEnumerateComputerNames_Response 

300 ), 

301} 

302register_dcerpc_interface( 

303 name="wkssvc", 

304 uuid=uuid.UUID("6BFFD098-A112-3610-9833-46C3F87E345A"), 

305 version="1.0", 

306 opnums=WKSSVC_OPNUMS, 

307)