Giter Club home page Giter Club logo

Comments (6)

yarrick avatar yarrick commented on May 11, 2024

The client automatically tests different encodings when logging in, to find the most efficient way to send data upstream.

See https://github.com/yarrick/iodine/blob/master/src/client.c#L1601

The -O flag controls downstream codec (server -> client). There is currently no flag for forcing a specific upstream codec.

What do you mean with "I've started the client to not run in binary format." ? I guess raw mode.

from iodine.

yarrick avatar yarrick commented on May 11, 2024

The query you see is still a valid DNS query (testing the limits of validation). If raw mode is used then it is just sending the raw packets instead, and the domain name you use will not be included anywhere.

from iodine.

Narzhan avatar Narzhan commented on May 11, 2024

Why do you think that the query is valid if the domain does not meet the domain name standard. To my knowledge characters like ? and @ are not permitted in a domain name.

from iodine.

yarrick avatar yarrick commented on May 11, 2024

Because if it works, transfers from the client to the server will be twice as fast. If you saw these domain names in the server, that means that it worked (or that you have no intermediate servers).

DNS server(s) between the client and the server only need to parse the end of the domain name - they just need enough to find the server to send it to. So the end of the domain name is still valid.

from iodine.

Narzhan avatar Narzhan commented on May 11, 2024

I understand this.

Would it be possible to disable this behaviour and decrease the performance in order to get domains that are "parseble". In the sense that tools like tcpdump might get those domains in a human readable domain names?

The reason I'm asking for this is that I'd like to build a dns tunneling classifier and I'd need some domains for that.

from iodine.

yarrick avatar yarrick commented on May 11, 2024

You can still parse domain names. They are encoded with length first, and then that many bytes, then repeat, following jumps for compression and ending when length is zero.

I will not change the code, but you can test with skipping parts of handshake_upenc_autodetect() in src/client.c

from iodine.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.