/RFCrack

A Software Defined Radio Attack Tool

Primary LanguagePythonOtherNOASSERTION

                   ___                  _        ___            _
  / __|___ _ _  ___ ___| |___   / __|_____ __ _| |__  ___ _  _ ___
 | (__/ _ \ ' \(_-</ _ \ / -_) | (__/ _ \ V  V / '_ \/ _ \ || (_-<
  \___\___/_||_/__/\___/_\___|  \___\___/\_/\_/|_.__/\___/\_, /__/
                                                          |__/
            ___ ___ ___             _
      ___  | _ \ __/ __|_ _ __ _ __| |__
     |___| |   / _| (__| '_/ _` / _| / /
           |_|_\_| \___|_| \__,_\__|_\_\


    Welcome to RFCrack - A Software Defined Radio Attack Tool

    Developer: @Ficti0n - http://ConsoleCowboys.com
    CCLabs: http://cclabs.io
    Blog: console-cowboys.blogspot.com
    Release Tutorial: https://www.youtube.com/watch?v=H7-g15YZBiI
    Reversing Signals With RFCrack: https://www.youtube.com/watch?v=XqKoVFyOst0
    Release: 1.4 (Check Wiki for Version Updates)

    Hardware Needed: (1 Yardstick or 2 for RollingCode)
    YardStick: https://goo.gl/wd88sr

    RFCrack is my personal RF test bench, it was developed for testing RF communications
    between any physical device that communicates over sub Ghz frequencies. IoT devices,
    Cars, Alarm Systems etc... Testing was done with the Yardstick One on OSX, but
    RFCrack should work fine in linux. Support for other RF related testing will be
    added as needed in my testing. I am currently researching keyless Entry bypasses and
    other signal analysis functionality. New functionality will be added in the future with
    additional hardware requirements for some advanced attacks.

    Feel free to use this software as is for personal use only. Do not use this code
    in other projects or in commercial products. I hold no liability for your actions
    with this code. Your life choices are your own.


    Current supported Functionality:
    ---------------------------------
    - Replay attacks -i -F
    - Send Saved Payloads -s -u
    - Rolling code bypass attacks -r -F -M
    - Targeted -t -F
    - Jamming -j -F
    - Scanning incrementally through frequencies -b -v -F
    - Scanning common frequencies -k
    - Compare Live incoming signals to previous signal -k -c -f -u
    - Graph Signal -n -g -u


    Usage Examples / Attacks:
    -------------------------
    Live Replay:         python RFCrack.py -i
    Rolling Code:        python RFCrack.py -r -M MOD_2FSK -F 314350000
    Adjust RSSI Values:  python RFCrack.py -r -M MOD_2FSK -F 314350000 -U -100 -L -10
    Jamming:             python RFCrack.py -j -F 314000000
    Scan common freq:    python RFCrack.py -k
    Scan with your list: python RFCrack.py -k -f 433000000 314000000 390000000
    Incremental Scan:    python RFCrack.py -b -v 5000000
    Send Saved Payload:  python RFCrack.py -s -u ./captures/test.cap -F 315000000 -M MOD_ASK_OOK
    With Loaded Config:  python RFCrack.py -l ./device_templates/doorbell.config -r
    Graph a Signal:      python RFCrack.py -n -g -u 1f0fffe0fffc01ff803ff007fe0fffc1fff83fff07

    Live Signal Identification and Comparison (Use 2 Console Windows):
    -----------------------------------------------------------------
    Setup sniffer:      python RFCrack.py -k -c -f 390000000
    Setup Analysis:     python RFCrack.py -c -u 1f0fffe0fffc01ff803ff007fe0fffc1fff83fff07f -n


    Useful arguments:
    ------------------------
    -M Change modulation, usually MOD_2FSK or MOD_ASK_OOK
    -F Change the frequency used in attacks
    -U upper_rssi signal strength value for rolling Code
    -L lower.rssi signal strength value for rolling code
    -S Change Channel Spacing
    -V Change Deviation of modulation
    -a Jamming frequency variance from sniffer
    -s Send packet from a file source
    -d Save your current device settings into a loadable template after attack completes
    -l Load previously saved device configuration with attack
    -n Your using functionality that does not require a yardstick plugged in
    -u Use saved data in your attack

    Directories Explained:
    ----------------------
    Saved captures get saved to ./captures directory by default!
    Live signal identification captures also saved to ./captures directory in capturedClicks.log
    Device templates are saved and loaded to ./device_templates by default
    Scanning logs are saved to ./scanning_logs named based on date and time of scanning start
    Graph comparison images are saved to imageOutput in 2 formats
     - Live: LiveComparison.png will just be written over on each signal Analysis
     - Log analysis: Comparison1 Comparison2 format is used and written over on each log analysis

    Other Notes:
    ------------------------
    Understand that Rolling code is hit or miss due to its nature with jamming and sniffing
    at the same time, but it works. Just use the keyfob near the yardsticks as if you were
    stalking your target. It will also require 2 yardsticks, one for sniffing while the other
    one is jamming. Yardsticks do not send and receive at the same time.

    And a final note, this is my own test bench for doing research and dev, if you have ideas
    to make RFCrack better based on realistic use case scenarios, feel free to reach out to me If
    the ideas are realistic, well thought out, and re-useable use cases I will implement them.