unixpickle / cbyge

Reverse engineering Cync (formerly "C by GE") WiFi devices
BSD 2-Clause "Simplified" License
128 stars 18 forks source link

Network Protocol Documentation #12

Open micromashor opened 2 years ago

micromashor commented 2 years ago

In the readme, you stated that you had pretty well figured out how the binary network protocol works. Would it be possible for you to provide any notes you have about how the network protocol works?

I'm currently trying to figure out how the bulbs communicate with the server, and it appears to use a very similar protocol to the one between the app and server, so any notes you have might be helpful. So far, all that I've been able to figure out is that the 5-byte message header is the same as the example you provided in the readme. The first byte seems to represent an opcode field, followed by a 32-bit message payload length field, which does not include the header in its length count.

Any information you have about the protocol would be greatly appreciated.

Thanks for all the work you've put into this!

micromashor commented 2 years ago

On second thought, beyond the overall structure, it's quite likely that they use different opcodes, meaning different message structures. I'm going to start a google doc to take notes on this in the short term, available here.

unixpickle commented 2 years ago

This is super cool! Yeah I don't know much aside from the specific packets I had reverse-engineered for this app, so it's likely very different on your end.

micromashor commented 2 years ago

Would you be willing to share the packet formats that you know? I'm not fluent with Go, so I'm not having an easy time interpreting the code. I wouldn't be surprised if the status info packets used the same format.