What it detects

The fingerprint used to censor packet.


  • A sample packet that is known to be blocked
  • A backend to which the packet is sent


  • A TCP Connection is opened with the backend and the packet is mutated byte by byte
  • When the packet is no longer being blocked it means that censorship is no longer happening with the particular packet and the last shifted byte contains the fingerprint of the censor.


  • On which bytes the censor didn't block the packet -- which packet bytes are included in the DPI fingerprint.

This needs to be ported to OONI. There is a sample implementation in go here:

Last modified 7 years ago Last modified on Jun 17, 2012, 1:24:59 PM