Skip to content
Displays a partially-hidden trace of a network protocol that will be completed by students
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
inginious-problems-network-trace
.gitignore
LICENSE
MANIFEST.in
README.md
setup.py

README.md

INGInious-problems-network-trace

Installing

pip3 install --upgrade git+https://github.com/CNP3/INGInious-problems-network-trace

Activating

In your configuration.yaml file, add the following plugin entry:

plugins:
  - plugin_module: "inginious-problems-network-trace"

How to create a network-trace problem

1. Create a PDML file

First, create a PDML file containing the network packets used for the problem. This can be done conveniently using tshark. tshark -T pdml -r file.pcap -J "tcp" converts file.pcap to PDML. One can use Wireshark options, e.g. -o tcp.relative_sequence_numbers:FALSE to disable the relative sequence numbers computation. Upload the resulting file to the task files and fill in its name in the problem configuration. At this stage, the captured packets should be displayed when viewing the task.

2. Fill in the fields that should be excluded

The Exclude fields parameter takes a list of field names that should be completely excluded from the packet trace. E.g.:

- tcp.flags.str
- tcp.window_size
- tcp.window_size_scalefactor
- tcp.len
- tcp.checksum
3. Fill in the fields that should be redacted

Some fields are useful to understand the protocol wire format, but can reveal information that interfere with the exercise. The Redact fields parameter takes a list of fields names that will be redacted from the packet trace, in the same format as Exclude fields.

4. Fill in the fields for which their value will be hidden

For each packet, one can choose the packets and the fields that need to be filled in for the exercise. E.g.

1:
  - tcp.ack
  - tcp.flags.ack

This will hide the value of the Acknowledgment Number and the ACK flags to students. Completing the exercise requires filling in these values.

5. Write up the feedback for each hidden field

For each field that were chosen to be hidden in the previous step, one can write up a dedicated feedback that will be displayed when an erroneous value is submitted for a particular field. E.g.

tcp.ack: The Acknowledgement Number is defined in `Section 3.1 of RFC793 <https://tools.ietf.org/html/rfc793>`_
tcp.flags.ack: The ACK flag is set whenever the Acknowledgment Number field is to be considered signficant.

One can use reStructuredText to format the feedback.

6. Choose whether the exercise involves reordering the packets

Click the Shuffle packets checkbox to enable packet reordering for this exercise. The students then must fill in the correct values for hidden fields as well as reorder the packets correctly. Use the last configuration field to write up the feedback that will be displayed when the wrong order is submitted.

You can’t perform that action at this time.