🔍 NQ DHCP сервер и tcpdump
#netquiz_open #netquiz_dhcp #netquiz_tcpdump
Вопрос предложен и составлен экспертом канала Sergey Masharov (@Masharov).
#netquiz_open #netquiz_dhcp #netquiz_tcpdump
Вопрос предложен и составлен экспертом канала Sergey Masharov (@Masharov).
✍️ Разбор квиза: NQ DHCP сервер и tcpdump
Объяснение от эксперта канала Surgeon:
Так как MAC-адрес источника DHCP relay запроса - это MAC-адрес устройства, где агент настроен, то мы не можем использовать eth.addr для фильтрации специфического потока.
Для однозначной идентификации потока можно использовать значение chaddr, которое равно значению MAC-адреса абонента и должно передаваться как сервером, так и клиентом до завершения сеанса присваивания IP-адреса. Его и можно использовать. Остался вопрос - как это можно сделать.
Для этого можно использовать функцию offset. Будем искать конкретное значение конкретного бита в пакете.
Wireshark может использовать длину, максимум, в 4 байта. Длина MAC-адреса - 6 байт, поэтому можно использовать части длиной - либо 2 и 4 байта, либо 4 и 2 байта.
Offset можно использовать не для всех протоколов. Использует его, например, на UDP.
Объяснение на примере:
Поле chaddr начинается после 36-го бита (offset) от начала заголовка UDP. Возьмём значение 4-х байтов: udp[36:4].
От MAC-адреса осталось еще два байта - offset 40 бит: udp[40:2].
Дополнение от автора вопроса Sergey Masharov (@Masharov):
Протокол DHCP является расширением протокола BOOTP, где все поля имели фиксированную длину и порядок. Одно из этих полей мы и берём в данном случае.
Для краткости можно указывать только последние 4 байта MAC-адреса со смещения 38. Крайне редко встречаются устройства с совпадающими последними четырьмя октетами.
#netquiz_explanation #netquiz_dhcp #netquiz_tcpdump
Объяснение от эксперта канала Surgeon:
Так как MAC-адрес источника DHCP relay запроса - это MAC-адрес устройства, где агент настроен, то мы не можем использовать eth.addr для фильтрации специфического потока.
Для однозначной идентификации потока можно использовать значение chaddr, которое равно значению MAC-адреса абонента и должно передаваться как сервером, так и клиентом до завершения сеанса присваивания IP-адреса. Его и можно использовать. Остался вопрос - как это можно сделать.
Для этого можно использовать функцию offset. Будем искать конкретное значение конкретного бита в пакете.
Wireshark может использовать длину, максимум, в 4 байта. Длина MAC-адреса - 6 байт, поэтому можно использовать части длиной - либо 2 и 4 байта, либо 4 и 2 байта.
Offset можно использовать не для всех протоколов. Использует его, например, на UDP.
Объяснение на примере:
MAC-адрес компьютера: 8c:16:45:e6:6e:11
tcpdump -vvvnn -s0 udp[36:4]=0x8c1645e6 and udp[40:2]=0x6e11 -w tcpdump.pcap
Поле chaddr начинается после 36-го бита (offset) от начала заголовка UDP. Возьмём значение 4-х байтов: udp[36:4].
От MAC-адреса осталось еще два байта - offset 40 бит: udp[40:2].
Дополнение от автора вопроса Sergey Masharov (@Masharov):
Протокол DHCP является расширением протокола BOOTP, где все поля имели фиксированную длину и порядок. Одно из этих полей мы и берём в данном случае.
Для краткости можно указывать только последние 4 байта MAC-адреса со смещения 38. Крайне редко встречаются устройства с совпадающими последними четырьмя октетами.
#netquiz_explanation #netquiz_dhcp #netquiz_tcpdump
🔥7👍4