- Notifications
You must be signed in to change notification settings - Fork22
Transfer files from Air gapped machines using QR codes
License
leonjza/qrxfer
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Transfer files from Air gapped machines using QR codes
QRXfer is one of those "I had to give it a try" ideas. The basic idea is that it is possible to play back QR code encoded data to a receiver that may be able to reconstruct the data and reproduce the file that was originally sent.
Think about an airgapped machine being able to generate the QR codes, you recording it with your phone, and playing it back to the receiver later.
Silly, I know.
I tested 2 main scenarios.
The first was starting the listener on my laptop with the webcam, and the emitter on another pc (so 2 screens facing each other, not connected inany way). This method was the least error prone as both the sender and receiver were standing still.
The second was recording the emitter with my phone, and then placing my phone in front of the webcam with the receiver running. This was obviously much more error prone with me not being able to hold the phone still ;)
I used aKali Rolling virtual machine with my laptops builtin Webcam added to the VMs hardware to build and test this.
Installation on Kali is relatively simple. QRXfer usesOpenCV python bindings andZbar python bindings for most of the magic.
- Install
click
withpip install click
- Install
opencv
withapt-get install python-opencv
- Install
zbar
withapt-get install python-zbar
git clone https://github.com/leonjza/qrxfer.git
or just grab a copy of theqrxfer.py
script.
# python qrxfer.py --helpUsage: qrxfer.py [OPTIONS] COMMAND [ARGS]...Options: --help Show this message and exit.Commands: preview receive send
The below asciicast shows how to send a file usingqrxfer.py
.
The command used in this case waspython qrxfer.py send -s 20 -i /tmp/test_file
:
The below asciicast shows how to receive a file usingqrxfer.py
.
The command used in this case waspython qrxfer.py receive -d incoming
: