【问题标题】:How can I send a file with the DNS protocol? [closed]如何使用 DNS 协议发送文件? [关闭]
【发布时间】:2017-07-24 21:48:19
【问题描述】:

如何在 C# 中使用 DNS 协议发送文件?这可能吗?

【问题讨论】:

    标签: c# sockets dns


    【解决方案1】:

    是的,这是可能的,但不实际。

    由于 DNS 请求包含易于操作的文本部分,因此通过 DNS 请求压缩文件只需将数据切成足够小的块并将请求发送到您自己的知道如何提取数据的 DNS 服务器。例如发送 Base64 数据作为子域的一部分。

    工具:

    • 阅读DNS protocol的规范或至少一些细节
    • C#DNS class.
    • 为您自己的域自定义 DNS 服务器。
    • 为所有指向同一服务器的子域配置DNS记录

    步骤:

    • 将文件切成小块并将每个块编码为 url 安全的 Base64 或 Base32/Base16 字符串。使用块作为子域名向您的服务器发送 DNS 请求。可能在数据中包含块索引。
    • 服务器应提取子域并放回文件中。

    由编码为 2 个块 "BAAA", "CAAA"[04 00 00 08 00 00] 字节组成的文件的示例交换:

    • 客户端发送解析 BAAA.mydomain.com
    • DNS 服务器接收到请求将BAAA 部分放入文件中(解码后)
    • DNS 服务器响应一些 IP(无关紧要)
    • 客户端收到并忽略响应
    • 客户端发送解析 CAAA.mydomain.com
    • DNS 服务器接收到请求获取CAAA 部分并将其附加到文件中(解码后)
    • DNS 服务器响应一些 IP(无关紧要)
    • 客户端收到并忽略响应

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多