From d984f21a55127284146542aefe589527cb6b9f7e Mon Sep 17 00:00:00 2001 From: Mazet Laurent Date: Thu, 24 Apr 2025 16:40:57 +0200 Subject: [PATCH] POC message sequence --- crypto/decrypt.py | 22 +++++++++++++++++++++ crypto/encrypt.py | 22 +++++++++++++++++++++ crypto/key.txt | 1 + crypto/makefile | 16 ++++++++++++++++ crypto/plaintext.txt | 3 +++ crypto/script-black.eth | 17 +++++++++++++++++ crypto/script-red.eth | 20 +++++++++++++++++++ crypto/script-secu.eth | 25 ++++++++++++++++++++++++ crypto/script-simulator.sh | 39 ++++++++++++++++++++++++++++++++++++++ 9 files changed, 165 insertions(+) create mode 100755 crypto/decrypt.py create mode 100755 crypto/encrypt.py create mode 100644 crypto/key.txt create mode 100644 crypto/makefile create mode 100644 crypto/plaintext.txt create mode 100644 crypto/script-black.eth create mode 100644 crypto/script-red.eth create mode 100644 crypto/script-secu.eth create mode 100755 crypto/script-simulator.sh diff --git a/crypto/decrypt.py b/crypto/decrypt.py new file mode 100755 index 0000000..3e5fa0d --- /dev/null +++ b/crypto/decrypt.py @@ -0,0 +1,22 @@ +#!/bin/env python3 + +#import os +from cryptography.hazmat.primitives.ciphers.aead import AESGCM + +# Read file +with open('key.txt', 'rb') as infile: + key = infile.read() +with open('iv.txt', 'rb') as infile: + nonce = infile.read() +with open('encrypted.txt', 'rb') as infile: + data = infile.read() + +# Encryption +aad = None +aesgcm = AESGCM(key) +plaintxt = aesgcm.decrypt(nonce, data, aad) + +# Writing + +with open('decrypted.txt', 'wb+') as outfile: + outfile.write(plaintxt) diff --git a/crypto/encrypt.py b/crypto/encrypt.py new file mode 100755 index 0000000..d8170dd --- /dev/null +++ b/crypto/encrypt.py @@ -0,0 +1,22 @@ +#!/bin/env python3 + +import os +from cryptography.hazmat.primitives.ciphers.aead import AESGCM + +# Read file +with open('key.txt', 'rb') as infile: + key = infile.read() +with open('plaintext.txt', 'rb') as infile: + data = infile.read() + +# Encryption +aad = None +aesgcm = AESGCM(key) +nonce = os.urandom(12); +ciphertxt = aesgcm.encrypt(nonce, data, aad) + +# Writing +with open('encrypted.txt', 'wb+') as outfile: + outfile.write(ciphertxt) +with open('iv.txt', 'wb+') as outfile: + outfile.write(nonce) diff --git a/crypto/key.txt b/crypto/key.txt new file mode 100644 index 0000000..97eee9a --- /dev/null +++ b/crypto/key.txt @@ -0,0 +1 @@ +This is a very smart pass phrase \ No newline at end of file diff --git a/crypto/makefile b/crypto/makefile new file mode 100644 index 0000000..ebe1fb2 --- /dev/null +++ b/crypto/makefile @@ -0,0 +1,16 @@ +# -*- Makefile -*- + +PYTHON = python3 +SHELL = bash + +compare: decrypted.txt plaintext.txt + cmp $+ && echo -e "\033[1;32mOK\033[0;0m" || echo -e "\033[1;31mKO\033[0;0m" + +encrypted.txt iv.txt: encrypt.py key.txt plaintext.txt + $(PYTHON) $< + +decrypted.txt: decrypt.py key.txt iv.txt encrypted.txt + $(PYTHON) $< + +clean: + rm encrypted.txt iv.txt decrypted.txt diff --git a/crypto/plaintext.txt b/crypto/plaintext.txt new file mode 100644 index 0000000..8a1ef7c --- /dev/null +++ b/crypto/plaintext.txt @@ -0,0 +1,3 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque maximus euismod condimentum. Duis tempus elit sit amet justo molestie sodales. Quisque malesuada sodales tortor. Nunc a ornare justo. Vestibulum eu bibendum erat, at rutrum justo. Quisque pretium luctus pellentesque. Maecenas lectus nibh, dignissim sit amet justo non, sagittis auctor orci. + +Integer fringilla ipsum in sodales auctor. Phasellus magna quam, aliquet vitae nisl sit amet, gravida venenatis diam. Quisque at metus ornare, consectetur enim in, luctus neque. Quisque dignissim diam sit amet massa eleifend euismod. Phasellus nulla sem, feugiat ut bibendum nec, bibendum non odio. In pharetra, nibh vitae porta pharetra, dolor nunc fermentum neque, et lacinia tellus metus a ligula. Quisque aliquet ac leo a fringilla. Nunc porttitor vehicula ullamcorper. Ut vehicula lectus convallis neque mollis, et malesuada libero porta. diff --git a/crypto/script-black.eth b/crypto/script-black.eth new file mode 100644 index 0000000..8d370b7 --- /dev/null +++ b/crypto/script-black.eth @@ -0,0 +1,17 @@ +# Black test script + +# key provisioning + +# radio configuration +R:BYPASS BYPASSED_CROSS_ASYNC DATA="Radio\ Configuration" + +# send data +#R:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 AAD=00:00:00 IV=@iv.txt DATA=@encryptred.txt +R:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 IV=@iv.txt DATA=@encrypted.txt + +# wait +SLEEP 1000 + +# receive data +T:CROSS_CRYPTO DECRYPT_CROSS_ASYNC CHANNELID=0 IV=@iv.txt DATA=@encrypted.txt + diff --git a/crypto/script-red.eth b/crypto/script-red.eth new file mode 100644 index 0000000..d9e23bf --- /dev/null +++ b/crypto/script-red.eth @@ -0,0 +1,20 @@ +# Red test script + +# key provisioning +T:PROVISIONING LOAD_KEY_REQ KEYID=0 KEY=@key.txt +R:PROVISIONING LOAD_KEY_RESP STATUS=0 + +# radio configuration +T:BYPASS BYPASS_CROSS_ASYNC DATA="Radio\ Configuration" +T:CONTROL STATUS_REQ +R:CONTROL STATUS_RESP STATUS=4 + +# send data +T:CROSS_CRYPTO ENCRYPT_CROSS_ASYNC CHANNELID=0 DATA=@plaintext.txt + +# wait +SLEEP 1000 + +# receive data +R:CROSS_CRYPTO DECRYPTED_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 DATA=@decrypted.txt + diff --git a/crypto/script-secu.eth b/crypto/script-secu.eth new file mode 100644 index 0000000..bfd6ef0 --- /dev/null +++ b/crypto/script-secu.eth @@ -0,0 +1,25 @@ +# Secu test script + +# key provisioning +R:PROVISIONING LOAD_KEY_REQ KEYID=0 KEY=@key.txt +T:PROVISIONING LOAD_KEY_RESP STATUS=0 + +# radio configuration +R:BYPASS_RED BYPASS_CROSS_ASYNC DATA="Radio\ Configuration" +T:BYPASS_BLACK BYPASSED_CROSS_ASYNC DATA="Radio\ Configuration" +R:CONTROL STATUS_REQ +T:CONTROL STATUS_RESP STATUS=4 + +# send data +#R:CROSS_CRYPTO_RED ENCRYPT_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 AAD=00:00:00:00 DATA=@plaintext.txt +R:CROSS_CRYPTO_RED ENCRYPT_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 DATA=@plaintext.txt +T:CROSS_CRYPTO_BLACK ENCRYPTED_CROSS_ASYNC CHANNELID=0 IV=@iv.txt DATA=@encrypted.txt + +# wait +#SLEEP 1000 + +# receive data +#R:CROSS_CRYPTO_BLACK DECRYPT_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 ADD=00:00:00:00 IV=@iv.txt DATA=@encrypted.txt +R:CROSS_CRYPTO_BLACK DECRYPT_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 IV=@iv.txt DATA=@encrypted.txt +T:CROSS_CRYPTO_RED DECRYPTED_CROSS_ASYNC CHANNELID=0 DATA=@decrypted.txt + diff --git a/crypto/script-simulator.sh b/crypto/script-simulator.sh new file mode 100755 index 0000000..28c5895 --- /dev/null +++ b/crypto/script-simulator.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +[ "$SIMULATOR" ] || SIMULATOR=./morep_simulator.exe + +ETH_RADIORED=enp0s4://52:54:00:12:34:57 +ETH_SECRED=enp0s4://52:54:00:12:34:59 +ETH_SECBLACK=enp0s4://52:54:00:12:34:59 +ETH_RADIOBLACK=enp0s4://52:54:00:12:34:57 + +case "$1" in +red) + $SIMULATOR -l script-red.log \ + -s BYPASS -t $ETH_SECRED/080D -r $ETH_RADIORED/080D \ + -s CONTROL -t $ETH_SECRED/080E -r $ETH_RADIORED/080E \ + -s CROSS_CRYPTO -t $ETH_SECRED/0809 -r $ETH_RADIORED/0809 \ + -s PROVISIONING -t $ETH_SECRED/080B -r $ETH_RADIORED/080B \ + script-red.eth -v 3 -V 3 + ;; +secu) + $SIMULATOR -l script-secu.log \ + -s BYPASS_BLACK -t $ETH_RADIOBLACK/081D -r $ETH_SECBLACK/081D \ + -s BYPASS_RED -t $ETH_RADIORED/080D -r $ETH_SECRED/080D \ + -s CONTROL -t $ETH_RADIORED/080E -r $ETH_SECRED/080E \ + -s CROSS_CRYPTO_BLACK -t $ETH_RADIOBLACK/0819 -r $ETH_SECBLACK/0819 \ + -s CROSS_CRYPTO_RED -t $ETH_RADIORED/0809 -r $ETH_SECRED/0809 \ + -s PROVISIONING -t $ETH_RADIORED/080B -r $ETH_SECRED/080B \ + script-secu.eth -v 3 -V 3 + ;; +black) + $SIMULATOR -l script-black.log \ + -s BYPASS -t $ETH_SECBLACK/081D -r $ETH_RADIOBLACK/081D \ + -s CROSS_CRYPTO -t $ETH_SECBLACK/0819 -r $ETH_RADIOBLACK/0819 \ + script-black.eth -v 3 -V 3 + ;; +*) + echo "usage: $(basename $0) [red|secu|black]" +esac + +# vim: set ts=4 sw=4 si et: -- 2.30.2