2016-07-22 2 views
1

Я анализирую пакеты DNS, используя scapy. Не все записи ответа DNS имеют все поля. Например, некоторые ответы не RDATA такПроверьте, существует ли поле в записи DNS с помощью scapy

answer = packet.an[0].rdata 

приводит к ошибке:

AttributeError: rdata 

Есть ли способ тестирования, чтобы увидеть, если RDATA поле существует в записи ответа? Я знаю, что вы можете проверить наличие слоев

if packet.haslayer(DNS): 
    <code> 

так что вы не запрашиваете слои, которых не существует. Есть ли параллель для полей внутри слоев?

ответ

1

Вы всегда можете попробовать. Однако, возможно, это не так гладко, как то, что вы ищете.

try: 
    answer = packet.an[0].rdata 
except AttributeError: 
    # do something 
Смежные вопросы