Git Product home page Git Product logo

qrxfer's Introduction

QRXfer

Transfer files from Air gapped machines using QR codes

introduction

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 in any 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 ;)

installation

I used a Kali 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 uses OpenCV python bindings and Zbar python bindings for most of the magic.

  1. Install click with pip install click
  2. Install opencv with apt-get install python-opencv
  3. Install zbar with apt-get install python-zbar
  4. git clone https://github.com/leonjza/qrxfer.git or just grab a copy of the qrxfer.py script.

usage

# python qrxfer.py --help
Usage: qrxfer.py [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  preview
  receive
  send

demos

send

The below asciicast shows how to send a file using qrxfer.py.
The command used in this case was python qrxfer.py send -s 20 -i /tmp/test_file:

asciicast

receive

The below asciicast shows how to receive a file using qrxfer.py.
The command used in this case was python qrxfer.py receive -d incoming:

asciicast

contact

@leonjza

qrxfer's People

Contributors

leonjza avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qrxfer's Issues

PR: Port to Python 3

Hey there,

I've came across this awesome script and wanted to use it.
Unfortunately Python 2 is dead and out of support now.

To be able to still use this script, I've ported everything to Python 3.
Unfortunately I have not get any update on my pull request so I'm opening here a issue.

Changes have been made on opencv-calls. Also some decoding stuff due to the internal changes from Python 2 to 3.
The zbar-bindings seem to not work in Python 3 anymore, so I switched to pyzbar.
Besides I think there was a crash on the preview()-function. I've fixed it by checking if data exists and is not None.

Hope this is helpful.

Best Regards
Konstantin

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.