37 lines
No EOL
1.2 KiB
Markdown
37 lines
No EOL
1.2 KiB
Markdown
# Raw socket programming challenge
|
|
|
|
How to send a pure ethernet packet?
|
|
|
|
Let us know in your favorite programming language!
|
|
|
|
|
|
## What are we expecting?
|
|
|
|
A layer 2 ethernet frame is constructed in the following way.
|
|
|
|
```
|
|
[Destination MAC: 6 bytes][Source MAC: 6 bytes][Protocol: 2 bytes][Message: ZeusWPI is de max!]
|
|
```
|
|
For example
|
|
```python
|
|
\xff\xff\xff\xff\xff\xff \x12\xab\x34\xcd\x56 \x60\x00 \x5a\x45\x75\x53...
|
|
Broadcast Dest MAC | Source MAC | Protocol | Your binary message
|
|
```
|
|
|
|
Send that frame with the message `ZeusWPI is de max!` over the same network interface that the listener is listening on and it will confirm that you completed the challenge!
|
|
|
|
You can then put your code in a folder with the name of the programming language providing instructions on how to run it.
|
|
|
|
|
|
|
|
## How to
|
|
We are providing some code that will listen to any packets received. It will give you a confirmation if you completed the challenge.
|
|
|
|
The only python package requirement is `netifaces`.
|
|
Install with the command `pip install --user netifaces`
|
|
|
|
Create a file named `.env` with the following line `INTERFACE=YOUR_NETWORK_INTERFACE`
|
|
|
|
* Run the listener with `sudo make listener`
|
|
|
|
* We also provide an example client in python. Run it with `sudo make example-sender` |