项目作者: ymarcus93

项目描述 :
Ethereum UDP packet dissector for discovery protocol v4.
高级语言: Go
项目地址: git://github.com/ymarcus93/ethpd.git
创建时间: 2017-08-19T16:07:13Z
项目社区:https://github.com/ymarcus93/ethpd

开源协议:

下载


ethpd

Ethereum UDP packet dissector for discovery protocol v4.

ethpd decodes a pcap file of captured Ethereum packets into a readable format.
The decoded packets will be printed to the standard output. Pipe the output to a text file for larger pcap files.

Usage

ethpd [pcapFile] — Prints to standard output

ethpd [pcapFile] > file.txt — Prints to text file file.txt

Install

With a correctly configured Go installation:

  1. go get -u github.com/ymarcus93/ethpd

Version 4 Packet Structure

See RLPx protocol page for more information

  • All packets are signed with ECDSA-secp256k1 keys (represents a node’s ID)
    • For authenticity
    • Signature: sign(privkey, sha3(packet-type || packet-data))
      • 65-byte compact ECDSA signature containing the recovery id as the last element.
      • See the code for more information on how NodeID is recovered from the signature.
  • All packets are prepended with SHA3-256 hash of the underlying data of the packet
    • For integrity
    • Hash: sha3(signature || packet-type || packet-data)
    • 32 bytes
  • Packet Type: Single byte < 2**7 // valid values are [1,4]

Full UDP Packet Payload: hash || signature || packet-type || packet-data

Packet Data

RLPx encoded list. Packet properties are serialized in the order in which they’re defined.

Ping

  • Version
  • From, To (IP, UDP, TCP)
  • Expiration

Pong

  • To (IP, UDP, TCP)
  • ReplyTok
  • Expiration

Findnode

  • Target
  • Expiration

Neighbors

  • Nodes:
    • IP
    • UDP
    • TCP
    • ID
  • Expiration