Search the Community

Showing results for tags 'specs'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Resilio Sync
    • Sync General Discussion
    • Sync Troubleshooting
    • Sync for NAS (Network Attached Storage)
    • Sync Stories
    • Developers
    • Feature Requests

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start





Website URL







Found 3 results

  1. I've been spending some time recently trying to figure out some of the details of BitTorrent Sync's network protocol. I really liked the idea of a p2p alternative to other cloud storage providers like dropbox etc. So I tried to find out the technical details behind the project. The official Technology page was a little sparse in that regard so I figured I'd have to dig in myself. I managed to start this as a university project (at the Vienna University of Technoligy in Austria). The goals are: Analyze the network protocol (and documenting it as far as possible) Discuss possible security issues (The official page claims it's very secure and throws around with words like AES and SHA2, but ) Don't get me wrong, I don't expect to find anything serious here as the basic idea seems pretty solid, but I think this claim has to be proven Write an open source library that allows other apps to communicate with btsync (not a full-blown sync app, just the basics) So, now to the fun stuff, I'll explain what I've found out so far: Secrets: The read only secret is basically just a hashed version of the normal secret (all code is valid python code (after importing hashlib.* and base64.*)): roSecret='R'+(b32encode(sha256(b32decode(secret)).digest())[:32]) The roSecret is hashed again. That hash is transmitted in LAN announces as well as to the tracker at shareHash=sha256(b32decode(roSecret[1:])).digest() That's about all the magic that's in the share secrets. Tracker: The Tracker protocol uses bencoded data. The request format is (I've conveted it to JSON for readability): { "peer": /* 20 bytes of binary randomness identifying this app instance" */, "share": /* 32 bytes (=256bits) SHA256 hash, see the Secret wiki page linked below for more info */, "m": "get_peers", "la": /* local IP + port in binary form (4 bytes IP + 2 bytes for the port) */ } The tracker's answer looks like that: { "m": "peers", "peers": [ { "a": /* 6bytes external ip+port of peer*/, "p": /* 20bytes peer id (random) */, "la": /* 6 bytes local IP+port of the peer */ }, /* all the other peers */ ], "ea": /* 6 bytes, external IP+port of the local peer *, "share": /* 32bytes shareHash */, "time": /* integer, unix timestamp */ } P2P: The peers use µTP for communication. On top of that, they seem to do a key handshake and submit the actual data. The details about that are still a little unclear (and have changed since the early 1.0.* releases), but I'll keep you updated as soon as I know more. I'm currently working on some Qt code (Qt's just the framework I'm used to, this might change if there's a good reason to) that reflects these protocol details. It's mostly based on what I've found out analyzing v1.0.116's protocol. I'll update it soon to support the new protocol used by 1.1.27. It can be found on GitHub. All the above details also are in the repo's wiki (feel free to contribute). Also let me give huge thanks to the BitTorrent Sync Team. They're doing great work (both in writing the app and in working with the community here on the forums).
  2. Hello, I know that there othen thread of similar discussion BUT my question will be different. Do you open just main specification. I mean not the Developer API but the structured differences from usual BitTorrent protocol, how do you generate teh keys and find them through web. That things will be enough for creating the open-source analog COMPATIBLE with original design. As for BitTorrent and muTorrent there Azuresus, transmission and other, not so powerfull, but still usable. That desicion will not harm security, no one will have acess to source code to make malwares BUT you will make the community work much easier. If there will be enough people they will clone your algorithm using reversive ways of developing. So will there any well stucturized specs for BtSync as those as for usual bittorrent protocol?
  3. From what I've read in other posts it seems like you don't want to open-source the btsync app itself. But are there plans to provide a protocol specification (such that devs could write their own apps that communicate with the official clients)? This would enable an ecosystem to grow around your official app like it happened with bittorrent.