检索 DNS 标志信息(十六进制格式)
Retrieve DNS Flags information (in Hexadecimal format)
我已经尽可能地使用 scapy 检索 DNS 信息,但我想知道如何获取 DNS 标志信息。
以下是我从 Scapy 检索到的信息,但我不确定如何将其转换为十六进制格式,因为我不太熟悉 DNS 标志。
id = 1
qr = 0L
opcode = QUERY
aa = 0L
tc = 0L
rd = 0L
ra = 0L
z = 0L
rcode = ok
qdcount = 1
ancount = 0
nscount = 0
arcount = 0
在DNS protocol中,标志位被打包成一个16位的值,像这样:
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| qr | opcode | aa | tc | rd | ra | z | rcode |
有关更多信息,请参阅 here。
您可以像这样在 Python 中构造此值:
flags = (qr << 15) | (opcode << 11) | (aa << 10) | (tc << 9) | (rd << 8) | (ra << 7) | (z << 4) | rcode
DNS 标志对应于第 3 字节和第 4 字节。你可以得到那些使用:
bytes(packet[DNS])[2:4] # Use str if you are on scapy version < 3
如果你用它来手动输入图形工具,你可以很容易地通过打印字节来查看值。或者您可以使用 struct.unpack 将其转换为整数,您可以使用十六进制将其转换为十六进制。
我已经尽可能地使用 scapy 检索 DNS 信息,但我想知道如何获取 DNS 标志信息。
以下是我从 Scapy 检索到的信息,但我不确定如何将其转换为十六进制格式,因为我不太熟悉 DNS 标志。
id = 1
qr = 0L
opcode = QUERY
aa = 0L
tc = 0L
rd = 0L
ra = 0L
z = 0L
rcode = ok
qdcount = 1
ancount = 0
nscount = 0
arcount = 0
在DNS protocol中,标志位被打包成一个16位的值,像这样:
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| qr | opcode | aa | tc | rd | ra | z | rcode |
有关更多信息,请参阅 here。
您可以像这样在 Python 中构造此值:
flags = (qr << 15) | (opcode << 11) | (aa << 10) | (tc << 9) | (rd << 8) | (ra << 7) | (z << 4) | rcode
DNS 标志对应于第 3 字节和第 4 字节。你可以得到那些使用:
bytes(packet[DNS])[2:4] # Use str if you are on scapy version < 3
如果你用它来手动输入图形工具,你可以很容易地通过打印字节来查看值。或者您可以使用 struct.unpack 将其转换为整数,您可以使用十六进制将其转换为十六进制。