Skip to content

Commit bdc992e

Browse files
committed
base64 labels
- `input.xml`: Try to decode base64 labels
1 parent 0ba28a4 commit bdc992e

File tree

4 files changed

+423
-1
lines changed

4 files changed

+423
-1
lines changed

dsc_datatool/input/xml.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import logging
1111
from xml.dom import minidom
12+
import base64
1213

1314
from dsc_datatool import Input, Dataset, Dimension, process_dataset
1415

@@ -42,12 +43,23 @@ def process(self, file):
4243
for node1 in array.getElementsByTagName(dimensions[0]):
4344
d1 = Dimension(dimensions[0])
4445
d1.value = node1.getAttribute('val')
46+
try:
47+
if node1.getAttribute('base64'):
48+
d1.value = base64.b64decode(d1.value).decode('utf-8')
49+
except Exception as e:
50+
pass
4551
dataset.dimensions.append(d1)
4652

4753
d2 = Dimension(dimensions[1])
4854
d1.dimensions.append(d2)
4955
for node2 in node1.getElementsByTagName(dimensions[1]):
50-
d2.values[node2.getAttribute('val')] = int(node2.getAttribute('count'))
56+
val = node2.getAttribute('val')
57+
try:
58+
if node2.getAttribute('base64'):
59+
val = base64.b64decode(val).decode('utf-8')
60+
except Exception as e:
61+
pass
62+
d2.values[val] = int(node2.getAttribute('count'))
5163

5264
datasets.append(dataset)
5365

tests/1458044657.xml

Lines changed: 336 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,336 @@
1+
<dscdata>
2+
<array name="pcap_stats" dimensions="2" start_time="1458044655" stop_time="1458044657">
3+
<dimension number="1" type="ifname"/>
4+
<dimension number="2" type="pcap_stat"/>
5+
<data>
6+
<ifname val="Li8xNDU4MDQ0NjU3LnBjYXAuZGlzdA==" base64="1">
7+
<pcap_stat val="pkts_captured" count="8"/>
8+
</ifname>
9+
</data>
10+
</array>
11+
<array name="label_count" dimensions="2" start_time="1458044655" stop_time="1458044657">
12+
<dimension number="1" type="All"/>
13+
<dimension number="2" type="LabelCount"/>
14+
<data>
15+
<All val="ALL">
16+
<LabelCount val="3" count="4"/>
17+
<LabelCount val="6" count="4"/>
18+
</All>
19+
</data>
20+
</array>
21+
<array name="third_ld_vs_rcode" dimensions="2" start_time="1458044655" stop_time="1458044657">
22+
<dimension number="1" type="Rcode"/>
23+
<dimension number="2" type="ThirdLD"/>
24+
<data>
25+
<Rcode val="0">
26+
<ThirdLD val="216.in-addr.arpa" count="2"/>
27+
<ThirdLD val="www.google.se" count="1"/>
28+
<ThirdLD val="www.google.com" count="1"/>
29+
</Rcode>
30+
</data>
31+
</array>
32+
<array name="second_ld_vs_rcode" dimensions="2" start_time="1458044655" stop_time="1458044657">
33+
<dimension number="1" type="Rcode"/>
34+
<dimension number="2" type="SecondLD"/>
35+
<data>
36+
<Rcode val="0">
37+
<SecondLD val="in-addr.arpa" count="2"/>
38+
<SecondLD val="google.com" count="1"/>
39+
<SecondLD val="www.google.se" count="1"/>
40+
</Rcode>
41+
</data>
42+
</array>
43+
<array name="server" dimensions="2" start_time="1458044655" stop_time="1458044657">
44+
<dimension number="1" type="All"/>
45+
<dimension number="2" type="IP"/>
46+
<data>
47+
<All val="ALL">
48+
<IP val="8.8.8.8" count="8"/>
49+
</All>
50+
</data>
51+
</array>
52+
<array name="qr_aa_bits" dimensions="2" start_time="1458044655" stop_time="1458044657">
53+
<dimension number="1" type="Direction"/>
54+
<dimension number="2" type="QRAABits"/>
55+
<data>
56+
<Direction val="sent">
57+
</Direction>
58+
<Direction val="recv">
59+
</Direction>
60+
<Direction val="else">
61+
<QRAABits val="cXI9MCxhYT0w" base64="1" count="4"/>
62+
<QRAABits val="cXI9MSxhYT0w" base64="1" count="4"/>
63+
</Direction>
64+
</data>
65+
</array>
66+
<array name="qname" dimensions="2" start_time="1458044655" stop_time="1458044657">
67+
<dimension number="1" type="All"/>
68+
<dimension number="2" type="Name"/>
69+
<data>
70+
<All val="ALL">
71+
<Name val="100.209.58.216.in-addr.arpa" count="2"/>
72+
<Name val="www.google.se" count="2"/>
73+
<Name val="131.209.58.216.in-addr.arpa" count="2"/>
74+
<Name val="www.google.com" count="2"/>
75+
</All>
76+
</data>
77+
</array>
78+
<array name="qclass" dimensions="2" start_time="1458044655" stop_time="1458044657">
79+
<dimension number="1" type="All"/>
80+
<dimension number="2" type="Class"/>
81+
<data>
82+
<All val="ALL">
83+
<Class val="1" count="8"/>
84+
</All>
85+
</data>
86+
</array>
87+
<array name="dns_ip_version" dimensions="2" start_time="1458044655" stop_time="1458044657">
88+
<dimension number="1" type="All"/>
89+
<dimension number="2" type="Version"/>
90+
<data>
91+
<All val="ALL">
92+
<Version val="IPv4" count="8"/>
93+
</All>
94+
</data>
95+
</array>
96+
<array name="ip_version" dimensions="2" start_time="1458044655" stop_time="1458044657">
97+
<dimension number="1" type="All"/>
98+
<dimension number="2" type="Version"/>
99+
<data>
100+
<All val="ALL">
101+
<Version val="IPv4" count="8"/>
102+
</All>
103+
</data>
104+
</array>
105+
<array name="direction_vs_ipproto" dimensions="2" start_time="1458044655" stop_time="1458044657">
106+
<dimension number="1" type="Direction"/>
107+
<dimension number="2" type="IPProto"/>
108+
<data>
109+
<Direction val="sent">
110+
</Direction>
111+
<Direction val="recv">
112+
</Direction>
113+
<Direction val="else">
114+
<IPProto val="udp" count="8"/>
115+
</Direction>
116+
</data>
117+
</array>
118+
<array name="client_port" dimensions="2" start_time="1458044655" stop_time="1458044657">
119+
<dimension number="1" type="All"/>
120+
<dimension number="2" type="Port"/>
121+
<data>
122+
<All val="ALL">
123+
<Port val="59978" count="4"/>
124+
<Port val="0" count="1"/>
125+
<Port val="53" count="1"/>
126+
<Port val="44275" count="1"/>
127+
<Port val="57483" count="1"/>
128+
</All>
129+
</data>
130+
</array>
131+
<array name="client_port_range" dimensions="2" start_time="1458044655" stop_time="1458044657">
132+
<dimension number="1" type="All"/>
133+
<dimension number="2" type="PortRange"/>
134+
<data>
135+
<All val="ALL">
136+
<PortRange val="43008-44031" count="1"/>
137+
<PortRange val="56320-57343" count="1"/>
138+
<PortRange val="57344-58367" count="1"/>
139+
<PortRange val="58368-59391" count="1"/>
140+
</All>
141+
</data>
142+
</array>
143+
<array name="transport_vs_qtype" dimensions="2" start_time="1458044655" stop_time="1458044657">
144+
<dimension number="1" type="Transport"/>
145+
<dimension number="2" type="Qtype"/>
146+
<data>
147+
<Transport val="udp">
148+
<Qtype val="1" count="2"/>
149+
<Qtype val="12" count="2"/>
150+
</Transport>
151+
<Transport val="tcp">
152+
</Transport>
153+
</data>
154+
</array>
155+
<array name="ipv6_rsn_abusers" dimensions="2" start_time="1458044655" stop_time="1458044657">
156+
<dimension number="1" type="All"/>
157+
<dimension number="2" type="ClientAddr"/>
158+
<data>
159+
</data>
160+
</array>
161+
<array name="idn_vs_tld" dimensions="2" start_time="1458044655" stop_time="1458044657">
162+
<dimension number="1" type="All"/>
163+
<dimension number="2" type="TLD"/>
164+
<data>
165+
</data>
166+
</array>
167+
<array name="tc_bit" dimensions="2" start_time="1458044655" stop_time="1458044657">
168+
<dimension number="1" type="All"/>
169+
<dimension number="2" type="TC"/>
170+
<data>
171+
<All val="ALL">
172+
<TC val="clr" count="8"/>
173+
</All>
174+
</data>
175+
</array>
176+
<array name="rd_bit" dimensions="2" start_time="1458044655" stop_time="1458044657">
177+
<dimension number="1" type="All"/>
178+
<dimension number="2" type="RD"/>
179+
<data>
180+
<All val="ALL">
181+
<RD val="set" count="4"/>
182+
</All>
183+
</data>
184+
</array>
185+
<array name="do_bit" dimensions="2" start_time="1458044655" stop_time="1458044657">
186+
<dimension number="1" type="All"/>
187+
<dimension number="2" type="D0"/>
188+
<data>
189+
<All val="ALL">
190+
<D0 val="clr" count="4"/>
191+
</All>
192+
</data>
193+
</array>
194+
<array name="edns_bufsiz" dimensions="2" start_time="1458044655" stop_time="1458044657">
195+
<dimension number="1" type="All"/>
196+
<dimension number="2" type="EDNSBufSiz"/>
197+
<data>
198+
<All val="ALL">
199+
<EDNSBufSiz val="None" count="4"/>
200+
</All>
201+
</data>
202+
</array>
203+
<array name="edns_version" dimensions="2" start_time="1458044655" stop_time="1458044657">
204+
<dimension number="1" type="All"/>
205+
<dimension number="2" type="EDNSVersion"/>
206+
<data>
207+
<All val="ALL">
208+
<EDNSVersion val="none" count="4"/>
209+
</All>
210+
</data>
211+
</array>
212+
<array name="idn_qname" dimensions="2" start_time="1458044655" stop_time="1458044657">
213+
<dimension number="1" type="All"/>
214+
<dimension number="2" type="IDNQname"/>
215+
<data>
216+
<All val="ALL">
217+
<IDNQname val="normal" count="4"/>
218+
</All>
219+
</data>
220+
</array>
221+
<array name="chaos_types_and_names" dimensions="2" start_time="1458044655" stop_time="1458044657">
222+
<dimension number="1" type="Qtype"/>
223+
<dimension number="2" type="Qname"/>
224+
<data>
225+
</data>
226+
</array>
227+
<array name="client_addr_vs_rcode" dimensions="2" start_time="1458044655" stop_time="1458044657">
228+
<dimension number="1" type="Rcode"/>
229+
<dimension number="2" type="ClientAddr"/>
230+
<data>
231+
<Rcode val="0">
232+
<ClientAddr val="172.17.0.16" count="4"/>
233+
</Rcode>
234+
</data>
235+
</array>
236+
<array name="client_subnet2" dimensions="2" start_time="1458044655" stop_time="1458044657">
237+
<dimension number="1" type="Class"/>
238+
<dimension number="2" type="ClientSubnet"/>
239+
<data>
240+
<Class val="ok">
241+
<ClientSubnet val="172.17.0.0" count="3"/>
242+
</Class>
243+
<Class val="non-auth-tld">
244+
<ClientSubnet val="172.17.0.0" count="1"/>
245+
</Class>
246+
</data>
247+
</array>
248+
<array name="certain_qnames_vs_qtype" dimensions="2" start_time="1458044655" stop_time="1458044657">
249+
<dimension number="1" type="CertainQnames"/>
250+
<dimension number="2" type="Qtype"/>
251+
<data>
252+
<CertainQnames val="localhost">
253+
</CertainQnames>
254+
<CertainQnames val="X.root-servers.net">
255+
</CertainQnames>
256+
<CertainQnames val="else">
257+
<Qtype val="1" count="2"/>
258+
<Qtype val="12" count="2"/>
259+
</CertainQnames>
260+
</data>
261+
</array>
262+
<array name="qtype_vs_tld" dimensions="2" start_time="1458044655" stop_time="1458044657">
263+
<dimension number="1" type="Qtype"/>
264+
<dimension number="2" type="TLD"/>
265+
<data>
266+
<Qtype val="1">
267+
<TLD val="com" count="1"/>
268+
<TLD val="google.se" count="1"/>
269+
</Qtype>
270+
<Qtype val="12">
271+
<TLD val="arpa" count="2"/>
272+
</Qtype>
273+
</data>
274+
</array>
275+
<array name="qtype_vs_qnamelen" dimensions="2" start_time="1458044655" stop_time="1458044657">
276+
<dimension number="1" type="Qtype"/>
277+
<dimension number="2" type="QnameLen"/>
278+
<data>
279+
<Qtype val="1">
280+
<QnameLen val="13" count="1"/>
281+
<QnameLen val="14" count="1"/>
282+
</Qtype>
283+
<Qtype val="12">
284+
<QnameLen val="27" count="2"/>
285+
</Qtype>
286+
</data>
287+
</array>
288+
<array name="client_subnet" dimensions="2" start_time="1458044655" stop_time="1458044657">
289+
<dimension number="1" type="All"/>
290+
<dimension number="2" type="ClientSubnet"/>
291+
<data>
292+
<All val="ALL">
293+
<ClientSubnet val="172.17.0.0" count="4"/>
294+
</All>
295+
</data>
296+
</array>
297+
<array name="rcode_vs_replylen" dimensions="2" start_time="1458044655" stop_time="1458044657">
298+
<dimension number="1" type="Rcode"/>
299+
<dimension number="2" type="ReplyLen"/>
300+
<data>
301+
<Rcode val="0">
302+
<ReplyLen val="142" count="2"/>
303+
<ReplyLen val="47" count="1"/>
304+
<ReplyLen val="48" count="1"/>
305+
</Rcode>
306+
</data>
307+
</array>
308+
<array name="opcode" dimensions="2" start_time="1458044655" stop_time="1458044657">
309+
<dimension number="1" type="All"/>
310+
<dimension number="2" type="Opcode"/>
311+
<data>
312+
<All val="ALL">
313+
<Opcode val="0" count="4"/>
314+
</All>
315+
</data>
316+
</array>
317+
<array name="rcode" dimensions="2" start_time="1458044655" stop_time="1458044657">
318+
<dimension number="1" type="All"/>
319+
<dimension number="2" type="Rcode"/>
320+
<data>
321+
<All val="ALL">
322+
<Rcode val="0" count="4"/>
323+
</All>
324+
</data>
325+
</array>
326+
<array name="qtype" dimensions="2" start_time="1458044655" stop_time="1458044657">
327+
<dimension number="1" type="All"/>
328+
<dimension number="2" type="Qtype"/>
329+
<data>
330+
<All val="ALL">
331+
<Qtype val="1" count="2"/>
332+
<Qtype val="12" count="2"/>
333+
</All>
334+
</data>
335+
</array>
336+
</dscdata>

0 commit comments

Comments
 (0)