Official Project GitHub Repo: https://github.com/andrewdangelo/iRON.git
1) Build an iRON Packet
2) Encrypt/Decrypt Packets with AES encryption
3) DDOS an iRON node
4) Send an iRON Packet through multiple nodes
5) Send an iRON Packet through anonymous multiple nodes
To Build a packet we can use a few functions:
buildPacketFromString(payload string): builds an iRON packet with a string as a payload
addDestination(IP string): adds an IP address as a destination to an iRON packet and
sendPacket(destination string, packet []byte): sends the packet to the destination IP address
Code snippet of a function that generates a packet, adds 3 destinations, and sends it
The Information in the packet
When adding a new destination to the packet, we utilize the first byte in the packet to store the number of hops left in the network, followed by the destinations, and then finally the payload.
In the screenshot below we can follow the addition of multiple destinations to the packets and see the destinations update as well as the number of hops increase.
Key
Yellow = Number of hops left in the packet
Brown= Payload
Blue = Destination 1
Green= Destination 2
Red = Destination 3
To Build an anonymous packet we need an additional function:
encryptPacket(packet []byte, key []byte): encrypts an iRON packet with AES encryption
Due to the encryptPacket function only encrypting the payload and destination of the packet, our implementation is known as onion routing. In onion routing, the destinations and payload are encrypted multiple times and a layer is unlocked by each node after getting the key. This means that only a single node is able to unlock the payload and next destination. With this system, only the last node will be able to see the decrypted payload.