Science Score: 57.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (8.6%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: NIoSaT
  • Language: Python
  • Default Branch: main
  • Size: 3.38 MB
Statistics
  • Stars: 1
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created about 3 years ago · Last pushed 11 months ago
Metadata Files
Readme Citation

README.md

DYST (Did You See That?) – A Covert Channel Exploiting Recent Legitimate Traffic

This repository contains the proof-of-concept implementation of the DYST covert channel introduced in the following article:

| Steffen Wendzel, Tobias Schmidbauer, Sebastian Zillien, Jörg Keller: DYST (Did You See That?): An Amplified Covert Channel That Points To Previously Seen Data, in: IEEE Transactions on Dependable and Secure Computing (TDSC), Vol. 22(1), 2025. |----|

Live Mode

Live mode of DYST. This mode will send a covert message via the DYST covert channel.

Usage

sudo python3 DYST.py <Covert Message File> <# of Chars> <interface> <logfile binaries> <[cr|cs]> <[trivial_single|trivial_multiple|ECC]> <CS and CR! :Broadcast Target IP> <Signal Source IP (=CS IP)> <CR:Message Log>

  • Covert Message File
    • Path to a text file containing the covert message to be sent
  • # of Chars
    • How many characters to sent at once
  • interface
    • What netwotk interface to use for the covert channel
  • logfile binaries
    • Path to the logfile for statistics (seen hashes, match percentages, timestamps, etc.)
  • cr|cs
    • What mode to use? Covert Sender or Covert Receiver
  • trivial|trivial_robust|ext|ext_robust|ECC
    • What encoding mode to use?
    • trivial: DYST-Basic, waits for 100% matches for each signal, no robustness measures
    • trivial_robust: Same as trivial, added robustness measures
    • ext: DYST-Ext, uses checksums for faster trnsmission, no robustness measures
    • ext_robust: Same as ext, added robustness measures
    • ECC: Experimental DYST-ECC mode.
  • Broadcast Target IP (CR and CS)
    • Target IP that the CS will use in its signal-ARP-requests.
    • CR will watch for this IP to filter signals
  • Signal Source IP (CR only)
    • The IP of the covert sender, is used to filter signals
  • Message Log (CR only)
    • Path to logfile which will contain teh recieved message

CS Example

sudo python3 scripts/DYST.py config/The_Shadow_Out_of_Time.txt 2 wlan0 log/CS/HomeLANcs trivial_single 192.168.2.254 2>/dev/null

CR Example

sudo python3 scripts/DYST.py config/The_Shadow_Out_of_Time.txt 2 wlan0 log/CR/HomeLan cr trivial_single 192.168.2.254 192.168.2.146 log/CR/HomeLan_msg 2>/dev/null

Offline Mode

Offline Mode to analyse pcap files for matches. Reads pcap files packet by packet and looks for matches.

For each PacketOfInterest, the match (true/false), number of PacketOfInterest, total number of packets, match percentage/count and match time is recorded.

With this we can do statistics on how often we would send out an ARP packet, either based on time or on packet count.

The tool needs the broadcast IP of the subnet from the recording to know wich packets can be seen by CS and CR.

offlineMode.py contains robustness measures while offlineMode_nonrobust.py does not.

Example call - Basic

python scripts/offlineMode.py /config/The_Shadow_Out_of_Time.txt 3 test.pcapng basic 192.168.200.255 test.out The basic mode uses no checksums and waitss for a 100% match between hash and message

Example call - Extended

python scripts/offlineMode.py /config/The_Shadow_Out_of_Time.txt 2 test.pcapng ext 192.168.200.255 test.out 21 The extended mode uses a basic 8 bit checksum (byte alignment). The checksum contains the number of 1s in the original message, binary encoded.

Usage

python offlineMode.py <Message Input File> <Bytes per Pkt> <Pcap Input> <Mode> <Broadcast IP of Recording> <Output File> [<Match Target>]

  • Message Input File
    • Path to a text file containing the covert message to be sent
  • Bytes per Pkt
    • How many bytes/characters to be sent at once
  • Pcap Input
    • Path to a pcap file, which will be used as a base for the simulation
  • Mode
    • basic: DYST-Basic mode
    • ext: DYST-Ext mode
  • Broadcast IP of Recording
    • What is the broadcast IP of the network present in the input pcap (is used to filter packets of interest)
  • Output File
    • Path to the logfile for statistics (seen hashes, match percentages, timestamps, etc.)
  • Match Target(ext Mode only)
    • How many bits to match in DYST-Ext mode before sendign a signal

Log Folder

The log folder contains some extracted example inter-packet delays (IPDs) in the CSV format.

Owner

  • Name: Sebastian Zillien
  • Login: NIoSaT
  • Kind: user
  • Location: Worms

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite the related paper as below."
authors:
- family-names: "Wendzel"
  given-names: "Steffen"
  orcid: "https://orcid.org/0000-0002-1913-5912"
- family-names: "Schmidbauer"
  given-names: "Tobias"
  orcid: "https://orcid.org/0000-0001-5912-0857"
- family-names: "Zillien"
  given-names: "Sebastian"
  orcid: "https://orcid.org/0000-0003-3360-1251"
- family-names: "Keller"
  given-names: "Jörg"
  orcid: "https://orcid.org/0000-0003-0303-6140"
title: "Did You See That?: A Covert Channel Exploiting Recent Legitimate Traffic"
version: 1.0.0
date-released: 2022-12-22
url: "https://github.com/NIoSaT/DYST/"
preferred-citation:
  type: article
  authors:
  - family-names: "Wendzel"
    given-names: "Steffen"
    orcid: "https://orcid.org/0000-0002-1913-5912"
  - family-names: "Schmidbauer"
    given-names: "Tobias"
    orcid: "https://orcid.org/0000-0001-5912-0857"
  - family-names: "Zillien"
    given-names: "Sebastian"
    orcid: "https://orcid.org/0000-0003-3360-1251"
  - family-names: "Keller"
    given-names: "Jörg"
    orcid: "https://orcid.org/0000-0003-0303-6140"
  journal: "Journal Title"
  title: "Did You See That?: A Covert Channel Exploiting Recent Legitimate Traffic"
  year: 2022

GitHub Events

Total
  • Push event: 2
Last Year
  • Push event: 2

Dependencies

requirements.txt pypi
  • bchlib ==0.14.0
  • bitstring ==3.1.9
  • netaddr ==0.8.0
  • netifaces ==0.11.0
  • numpy ==1.21.5
  • scapy ==2.4.5