Skip to content

Commit f7e30de

Browse files
committed
Add MS-WMI tests
1 parent 5477d45 commit f7e30de

1 file changed

Lines changed: 49 additions & 0 deletions

File tree

test/scapy/layers/msrpce/mswmi.uts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
% MS-WMI Tests
2+
3+
+ [MS-WMI] build and dissection tests
4+
* To work scapy-rpc extension must be installed
5+
6+
= [MS-WMI] - Import [MS-WMI]
7+
8+
from scapy.config import conf
9+
conf.exts.load("scapy-rpc")
10+
from scapy.layers.msrpce.raw.ms_wmi import *
11+
12+
= [MS-WMI] - Build ExecQuery_Request
13+
14+
lang = "WQL\0"
15+
query = "SELECT Name FROM Win32_OperatingSystem\0"
16+
17+
pkt = ExecQuery_Request(
18+
strQueryLanguage=NDRPointer(
19+
referent_id=0x72657355,
20+
value=FLAGGED_WORD_BLOB(
21+
max_count=len(lang),
22+
cBytes=len(lang) * 2,
23+
clSize=len(lang),
24+
asData=lang.encode("utf-16le"),
25+
),
26+
),
27+
strQuery=NDRPointer(
28+
referent_id=0x72657356,
29+
value=FLAGGED_WORD_BLOB(
30+
max_count=len(query),
31+
cBytes=len(query) * 2,
32+
clSize=len(query),
33+
asData=query.encode("utf-16le"),
34+
),
35+
),
36+
ndr64=False
37+
)
38+
39+
assert bytes(pkt) == b"User\x04\x00\x00\x00\x08\x00\x00\x00\x04\x00\x00\x00W\x00Q\x00L\x00\x00\x00Vser'\x00\x00\x00N\x00\x00\x00'\x00\x00\x00S\x00E\x00L\x00E\x00C\x00T\x00 \x00N\x00a\x00m\x00e\x00 \x00F\x00R\x00O\x00M\x00 \x00W\x00i\x00n\x003\x002\x00_\x00O\x00p\x00e\x00r\x00a\x00t\x00i\x00n\x00g\x00S\x00y\x00s\x00t\x00e\x00m\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
40+
41+
= [MS-WMI] - Dissect ExecQuery_Response
42+
43+
pkt=ExecQuery_Response(
44+
b'\x00\x00\x02\x00\xb6\x00\x00\x00\xb6\x00\x00\x00MEOW\x01\x00\x00\x00\xe1Gy\x021\xd7\xce\x11\xa3W\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x05\x00\x00\x00\xe5M-e\x07^\xb40\xf9\xed\xa57\xb2\x97\x0e7\x03\xd8\x02\x00,\x01\x00\x00\x15\xfe\x86\xdf\x03\xd6o\x0f9\x00#\x00\x07\x00W\x00I\x00N\x00-\x008\x00K\x001\x005\x00V\x00K\x00V\x002\x004\x00S\x00G\x00\x00\x00\x07\x001\x009\x002\x00.\x001\x006\x008\x00.\x001\x000\x000\x00.\x001\x000\x000\x00\x00\x00\x00\x00\t\x00\xff\xff\x00\x00\x1e\x00\xff\xff\x00\x00\x10\x00\xff\xff\x00\x00\n\x00\xff\xff\x00\x00\x16\x00\xff\xff\x00\x00\x1f\x00\xff\xff\x00\x00\x0e\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
45+
ndr64=False
46+
)
47+
48+
status = pkt.valueof("status")
49+
assert status == 0x0

0 commit comments

Comments
 (0)