GithubHelp home page GithubHelp logo

isabella232 / paf Goto Github PK

View Code? Open in Web Editor NEW

This project forked from arm-software/paf

0.0 0.0 0.0 4.51 MB

PAF (the Physical Attack Framework) is a framework for analyzing physical attacks: fault injection and side channels

License: Apache License 2.0

C++ 99.17% Python 0.63% C 0.03% Makefile 0.04% CMake 0.13%

paf's Introduction

PAF licence Last build status on Ubuntu 20.04 with gcc Last build status on Ubuntu 20.04 with clang

PAF, the Physical Attack Framework

Welcome to PAF ! PAF is a suite of tools and libraries to learn about physical attacks, such as fault injection and side channels, and hopefully help harden code bases against those threats.

Requirements

To build PAF from source, you will need a C++ compiler compatible with C++14, and CMake.

A significant number of the PAF tools assumes that you at least have access to Tarmac traces. These are detailled traces of a program's execution, and they are generated by a number of Arm products, like software models of CPUs (e.g. FastModel).

PAF has the capability to directly drive a FastModel and perform a number of analysis. In order to use this capability, you will need to have access to a FastModel

Building

The simplest way to build PAF is:

$ cmake .
$ cmake --build .

A slightly more evolved way of building and testing PAF, in release mode with debug info, using the clang compiler, Ninja build system and producing a compile_commands.json file looks like:

$ CC=clang CXX=clang++ cmake -S . -B build -G Ninja \
       -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
       -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON
$ ln -s build/compile_commands.json .
$ ninja -C build/
$ ninja -C build/ test

Testing

PAF contains both unit testing and application level testing. Unit testing can be performed using the test target, whith no external dependencies. Application level testing is a different story as it requires access to a cross-compiler and a FastModel. If you have access to those, CMake can setup a test environment for you with:

$ CC=clang CXX=clang++ cmake -S . -B build -G Ninja \
       -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
       -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON \
       -DFVP_MODEL_DIR:PATH=/opt/FastModels/11.12/FVP_MPS2_Cortex-M3_CC312/models/Linux64_GCC-6.4/FVP_MPS2_Cortex-M3_CC312 \
       -DFVP_PLUGINS_DIR:PATH=/opt/FastModels/11.12/FastModelsPortfolio_11.12/plugins/Linux64_GCC-6.4 \
       -DARM_GCC_INSTALL_DIR:PATH=/opt/gcc-arm-none-eabi-10-2020-q4-major

Usage and documentation

For more information on PAF, the tools it provides and how to use them, see the main documentation.

License

PAF is distributed under the Apache v2.0 License.

Third party software

PAF requires third party software that is not included in PAF's source code repository. PAF's configure and build system, CMake, will automatically download, configure and build this third party software. As each of those third party software comes with its own specific license, you have to check their licenses complie with your own specific requirements.

The third party software used by PAF is:

Feedback, contributions and support

Please use the GitHub issue tracker associated with this repository for feedback.

Code contributions are most welcomed. Please make sure they stick to the style used in the rest of the PAF code and submit them via GitHub pull requests.

paf's People

Contributors

arnaud-de-grandmaison-arm avatar

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.