Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BOUNTY] Community Improvement Bounty - libp2p - Wireshark libp2p Lua dissectors #20

Open
raulk opened this issue Aug 18, 2019 · 8 comments

Comments

@raulk
Copy link

commented Aug 18, 2019

Wireshark libp2p Lua dissectors

We need to x-ray into the wire. Help us build mature Wireshark dissectors and get 2750 EUR! 馃

See devgrant 16 in the libp2p/devgrants tracker: libp2p/devgrants#16

The brief for this bounty can be found here: https://github.com/libp2p/devgrants/blob/master/016-wireshark-lua-dissectors.md.

How to qualify

We know you are an amazingly talented hacker, but also recognise that developing a Wireshark dissectors for all of libp2p protocols is not feasible in 2-3 hackathon days! For that reason, we're going to tightly scope this to what we believe is ambitious, but possible.

There has been a previous attempt, but our road block has always been decryption. We'd like you to focus on that. Without decryption, the dissector has limited usability as it won't support debugging live networks.

You'd earn the reward if you:

  1. Fork go-libp2p-secio to dump its symmetric keys when a build tag (e.g. dumpkeys) and an environment variable are both activated (LIBP2P_SECIO_KEYLOG=<path>).
  2. Build a SecIO Wireshark dissector that dissects the SecIO protocol itself.
  3. That dissector should tail the keylog file, and use the symmetric key associated with a peer at an ip:port to decrypt that connection.
  4. Build an mplex dissector (mplex framing is super simple) that operates on a decrypted payload.

Main challenges we expect you to encounter:

  • Parsing Protobuf messages. There is no native protobuf library in Lua. You might want to call out to C. See: this post and Swig.
  • Crypto operations. You can probably use OpenSSL and get inspiration from secio.lua.

Read the devgrant brief referenced above, and review all the past work referenced in resources.

Resources

Feel free to use @raulk as a walking encyclopedia for all things libp2p.

Judging Criteria

  1. Completeness, correctness, cleanliness and maintainability of code.
  2. Documentation / code comments.
  3. It actually works, and you can demo it.

Prizes

  1. 1000 EUR via Community Improvement Bounties fund.
  2. 1000 EUR via Protocol Labs.
  3. 750 EUR via the Ethereum Foundation.
@raulk raulk changed the title [BOUNTY] Community Improvement Fund - libp2p - Wireshark libp2p Lua dissectors [BOUNTY] Community Improvement Bounty - libp2p - Wireshark libp2p Lua dissectors Aug 18, 2019
@mariapaulafn

This comment has been minimized.

Copy link

commented Aug 18, 2019

Note - The Community Improvement Bounties are funded by the ETHBerlin fundraising efforts - if your project needs these bounties to work better with libp2p - consider helping out. High incentives make happy hackers.

@raulk

This comment has been minimized.

Copy link
Author

commented Aug 22, 2019

Protocol Labs will be chipping in an extra 1000 EUR towards this bounty for submissions that cover the requirements. 2000 EUR total in the pot so far!

@djrtwo

This comment has been minimized.

Copy link

commented Aug 22, 2019

The Ethereum Foundation is chipping in 750 EUR to this bounty!

@michaelvoronov

This comment has been minimized.

Copy link

commented Aug 23, 2019

I would like to chose this bounty to work on.

@raulk

This comment has been minimized.

Copy link
Author

commented Aug 23, 2019

@michaelvonorov find me! I鈥檓 at the venue.

@raulk

This comment has been minimized.

Copy link
Author

commented Aug 24, 2019

This one has been claimed by @michaelvoronov and is underway! 馃檶

@raulk

This comment has been minimized.

@michaelvoronov

This comment has been minimized.

Copy link

commented Sep 7, 2019

The repo has been renamed to libp2p-dissector, since it supports not only secio now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants
You can鈥檛 perform that action at this time.