首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替罪羊:如何手动编码rdata

替罪羊:如何手动编码rdata
EN

Stack Overflow用户
提问于 2018-06-30 05:22:28
回答 2查看 220关注 0票数 0

作为替罪羊,

代码语言:javascript
复制
rdata     = '\x00\n\x0cmxb-000c6b02\x04gslb\x08pphosted\x03com\x00'

真正的意思是:

代码语言:javascript
复制
10 mxb-000c6b02.gslb.pphosted.com.

我们怎么编码

代码语言:javascript
复制
"10 mxb-000c6b02.gslb.pphosted.com." 

代码语言:javascript
复制
'\x00\n\x0cmxb-000c6b02\x04gslb\x08pphosted\x03com\x00' using Python3?

谢谢!

更新:

在仔细观察rdata字符串之后,我找到了一个解决方案:

代码语言:javascript
复制
import struct

def encode_mx_rdata(MXHOST, MX=10):
    _start = struct.pack("!h", int(MX)).decode()

    b = ""
    for i in MXHOST.split("."):
        b += struct.pack("h", len(i) ).decode().rstrip("\x00") + i
    if b and _start:
        return(_start + b + "\x00")
    else: 
        return False

在行动中:

代码语言:javascript
复制
In [2]: mxrdata = encode_mx_rdata("mxb-000c6b02.gslb.pphosted.com.", 10)

In [3]: mxrdata 
Out[3]: '\x00\n\x0cmxb-000c6b02\x04gslb\x08pphosted\x03com\x00'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-06 05:35:51

我破解了一个解决方案:

代码语言:javascript
复制
import struct

def encode_mx_rdata(MXHOST, MX=10):
    _start = struct.pack("!h", int(MX)).decode()

    b = ""
    for i in MXHOST.split("."):
        b += struct.pack("h", len(i) ).decode().rstrip("\x00") + i
    if b and _start:
        return(_start + b + "\x00")
    else: 
        return False

在行动中:

代码语言:javascript
复制
In [2]: mxrdata = encode_mx_rdata("mxb-000c6b02.gslb.pphosted.com.", 10)

In [3]: mxrdata 
Out[3]: '\x00\n\x0cmxb-000c6b02\x04gslb\x08pphosted\x03com\x00'
票数 0
EN

Stack Overflow用户

发布于 2018-07-09 22:05:53

你可以看看https://github.com/secdev/scapy/pull/1511

它做一些基本的压缩,可以在DNScompress(packet)中使用。

但是,如果当前不支持部分压缩(在同一rdata/rrname中同时有指针和字符串)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51111983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档