MCPcopy Create free account
hub / github.com/TheRook/subbrute / parse

Method parse

dnslib/digparser.py:145–195  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

143 return self.parse()
144
145 def parse(self):
146 dns = None
147 section = None
148 paren = False
149 rr = []
150 try:
151 while True:
152 tok,val = next(self.i)
153 if tok == 'COMMENT':
154 if 'Sending:' in val or 'Got answer:' in val:
155 if dns:
156 self.parseQuestions(q,dns)
157 self.parseAnswers(a,auth,ar,dns)
158 yield(dns)
159 dns = DNSRecord()
160 q,a,auth,ar = [],[],[],[]
161 elif val.startswith('; ->>HEADER<<-'):
162 self.expect('NL')
163 val2 = self.expect('COMMENT')
164 dns.header = self.parseHeader(val,val2)
165 elif val.startswith('; QUESTION'):
166 section = q
167 elif val.startswith('; ANSWER'):
168 section = a
169 elif val.startswith('; AUTHORITY'):
170 section = auth
171 elif val.startswith('; ADDITIONAL'):
172 section = ar
173 elif val.startswith(';') or tok[1].startswith('<<>>'):
174 pass
175 elif dns and section == q:
176 q.append(val.split())
177 elif tok == 'ATOM':
178 if val == '(':
179 paren = True
180 elif val == ')':
181 paren = False
182 else:
183 rr.append(val)
184 elif tok == 'NL' and not paren and rr:
185 if self.debug:
186 print(">>",rr)
187 section.append(rr)
188 rr = []
189 except StopIteration:
190 if rr:
191 self.section.append(rr)
192 if dns:
193 self.parseQuestions(q,dns)
194 self.parseAnswers(a,auth,ar,dns)
195 yield(dns)
196
197if __name__ == '__main__':
198

Callers 1

__iter__Method · 0.95

Calls 6

parseQuestionsMethod · 0.95
parseAnswersMethod · 0.95
expectMethod · 0.95
parseHeaderMethod · 0.95
DNSRecordClass · 0.90
appendMethod · 0.80

Tested by

no test coverage detected