Giter Club home page Giter Club logo

Comments (3)

thirtythreeforty avatar thirtythreeforty commented on May 26, 2024

Not yet - and I can totally understand how you'd have trouble reading the Rust, the Baichuan parser is really nasty - I don't like how the Nom parser works in practice.

At a high level the core packet format is:

  • header
  • body
  • extension data

The header is pretty easy. Magic bytes, message ID number, message length, and a couple of fields that aren't really used as far as I can tell.

Almost all messages are "modern" messages which have XML bodies, obfuscated by the Charlie Scrambler. There is one top-level XML tag per message ID number; you just have to know these. In Neolink, the message ID number is how messages are routed from the socket to the appropriate thread - which then matches against the deserialized structure.

The extension data is, depending on the message, possibly absent, binary data (video data stream chunked into 40KB packets), or more obfuscated XML. The presence of extension data is stateful, activated by the binaryData XML message. Overall, this is highly annoying.

If you want to get a feel for it, the best thing to do would be to drop into Wireshark and read the opening salvo of messages with the provided dissector. It's not perfect - especially when it hits video - but you can read the XML.

Let me ask you this: would you be more interested in protocol documents, or a C-compatible API for the existing Rust library that you could call from your new app?

from neolink.

hanetzer avatar hanetzer commented on May 26, 2024

To the last question: both, in the form of code that's self explanitory :P

from neolink.

QuantumEntangledAndy avatar QuantumEntangledAndy commented on May 26, 2024

For those that come across this issue: I just thought I would say that we now have some documentation here. It is not perfect but its a start. If you want to add to the docs about the protocol please do make a PR :)

from neolink.

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.