As of August 2020 the site you are on (wiki.newae.com) is deprecated, and content is now at rtfm.newae.com. |
Difference between revisions of "Installing ChipWhisperer"
(→Windows XP/7) |
|||
Line 1: | Line 1: | ||
− | + | This page describes how to install the ChipWhisperer software. There are a number of ways to set this up: you can use a pre-prepared virtual machine, or you can run the software on your own environment. | |
− | == Windows (XP or later) | + | = Using VMWare Virtual Machine = |
+ | If this is your first time using the ChipWhisperer toolchain, the easiest way to start is to use a virtual machine with everything already set up for you. | ||
+ | |||
+ | The ChipWhisperer virtual machine image is made to run on the free VMWare Player. You can download VMWare 7.1.4 [https://my.vmware.com/web/vmware/free#desktop_end_user_computing/vmware_player/7_0 here]. Note that this program is available for Windows and Linux - if you're running a Mac, you're out of luck. | ||
+ | |||
+ | Once you've downloaded VMWare, you can get the ChipWhisperer Ubuntu image from the [https://app.assembla.com/wiki/show/chipwhisperer/ChipWhisperer_Software_Firmware_Releases Releases Page]. Download and unzip the VMWare image. Then, you can open the file <code>ChipWhisperer Lubuntu 32-bit.vmdk</code> in VMWare Player, and you're ready to go. | ||
+ | |||
+ | There's a [https://www.youtube.com/watch?v=UrtsWAJa0m4&hd=1 Youtube tutorial] of this setup available online. | ||
+ | |||
+ | = Windows (XP or later) = | ||
This section describes how to install the ChipWhisperer software for Windows. Note it is recommended to use the VMWare image if possible, since it includes all required tools out of the box! | This section describes how to install the ChipWhisperer software for Windows. Note it is recommended to use the VMWare image if possible, since it includes all required tools out of the box! | ||
− | + | == Python Setup == | |
The first step is to install Python 2. If you already a recent version of Python installed (2.7.x), you can skip this step. Note that Python 3.x will not work with this codebase. | The first step is to install Python 2. If you already a recent version of Python installed (2.7.x), you can skip this step. Note that Python 3.x will not work with this codebase. | ||
Line 38: | Line 47: | ||
− | + | == Getting & Installing ChipWhisperer == | |
Assuming you've got a working Python installation, the next step is to install & run ChipWhisperer itself. This requires you to get a copy of ChipWhisperer, you should download the [https://www.assembla.com/wiki/show/chipwhisperer/ChipWhisperer_Software_Firmware_Releases Latest Release]. Download & unzip the file somewhere. Note if you are adventurous you can clone the GIT Repository <code>git://git.assembla.com/chipwhisperer.git</code> instead, but this '''may be broken''' so you should start with the latest release instead. | Assuming you've got a working Python installation, the next step is to install & run ChipWhisperer itself. This requires you to get a copy of ChipWhisperer, you should download the [https://www.assembla.com/wiki/show/chipwhisperer/ChipWhisperer_Software_Firmware_Releases Latest Release]. Download & unzip the file somewhere. Note if you are adventurous you can clone the GIT Repository <code>git://git.assembla.com/chipwhisperer.git</code> instead, but this '''may be broken''' so you should start with the latest release instead. | ||
Line 60: | Line 69: | ||
[[File:Youtube-win7-install.png|YouTubeWin7Install]]_ | [[File:Youtube-win7-install.png|YouTubeWin7Install]]_ | ||
− | + | == Installing Hardware Drivers == | |
Details of driver installation are on specific pages for supported hardware (such as hwcapturerev2 and naecw1173_cwlite). Drivers are available from [http://chipwhisperer.com ChipWhisperer] release section. | Details of driver installation are on specific pages for supported hardware (such as hwcapturerev2 and naecw1173_cwlite). Drivers are available from [http://chipwhisperer.com ChipWhisperer] release section. | ||
− | + | == Getting AVR Compiler Toolchain == | |
The following section is '''NOT REQUIRED''' for your first attack - you can jump right to the tutorial if you wish. However you'll ultimately wish to modify the code of the device under test, and these instructions tell you how. You should first follow the tutorial to confirm your system is working before modifying the code however! | The following section is '''NOT REQUIRED''' for your first attack - you can jump right to the tutorial if you wish. However you'll ultimately wish to modify the code of the device under test, and these instructions tell you how. You should first follow the tutorial to confirm your system is working before modifying the code however! | ||
Line 81: | Line 90: | ||
<li>Programming the target AVR is accomplished in one of two methods depending on your hardware. The ChipWhisperer Capture Rev 2 uses the external "AVR Studio" program, whereas the CW1173 and CW1200 use a programmer menu from the ChipWhisperer-Capture software. To see details refer to either [[CW1002_ChipWhisperer_Capture-Rev2#CWCR2:_Using_the_AVR_Programmer]] or [[CW1173_ChipWhisperer-Lite#CW-Lite:_Programming_AVR.2FXMEGA_Device]].</li></ol> | <li>Programming the target AVR is accomplished in one of two methods depending on your hardware. The ChipWhisperer Capture Rev 2 uses the external "AVR Studio" program, whereas the CW1173 and CW1200 use a programmer menu from the ChipWhisperer-Capture software. To see details refer to either [[CW1002_ChipWhisperer_Capture-Rev2#CWCR2:_Using_the_AVR_Programmer]] or [[CW1173_ChipWhisperer-Lite#CW-Lite:_Programming_AVR.2FXMEGA_Device]].</li></ol> | ||
− | + | = Linux = | |
− | + | == Python Setup == | |
On Linux, installing Python & all the associated packages is much easier than on Windows. Typically you can install them from a package manager, if you are using Fedora Core or similar, just type: | On Linux, installing Python & all the associated packages is much easier than on Windows. Typically you can install them from a package manager, if you are using Fedora Core or similar, just type: | ||
Line 96: | Line 105: | ||
</pre> | </pre> | ||
− | + | == Getting ChipWhisperer == | |
As in the Windows release, you can download a complete ChipWhisperer software release. Alternatively you can clone the ChipWhisperer repository with git, which is very simple on Linux: | As in the Windows release, you can download a complete ChipWhisperer software release. Alternatively you can clone the ChipWhisperer repository with git, which is very simple on Linux: | ||
Line 111: | Line 120: | ||
'''NB''': This assumes the python command links to Python-2.7, and not Python-3.x. You may need to specify either python2.7 or python27 as the command instead of python to force this. | '''NB''': This assumes the python command links to Python-2.7, and not Python-3.x. You may need to specify either python2.7 or python27 as the command instead of python to force this. | ||
− | + | == Hardware Drivers == | |
The ''driver'' for Linux is built in, however you need to allow your user account to access the peripheral. To do so, you'll have to make a file called <code>/etc/udev/rules.d/99-newae.rules</code> . The contents of this file should be: | The ''driver'' for Linux is built in, however you need to allow your user account to access the peripheral. To do so, you'll have to make a file called <code>/etc/udev/rules.d/99-newae.rules</code> . The contents of this file should be: | ||
Line 139: | Line 148: | ||
− | + | == FTDI Hardware Driver (SASEBO-W, SAKURA-G, SASEBO-GII) == | |
'''This is only required for supporting FTDI-connected hardware''' such as the SASEBO-W, SAKURA-G, SASEBO-GII. This is NOT required for the ChipWhisperer Capture Rev2. | '''This is only required for supporting FTDI-connected hardware''' such as the SASEBO-W, SAKURA-G, SASEBO-GII. This is NOT required for the ChipWhisperer Capture Rev2. | ||
Line 157: | Line 166: | ||
Finally log out & in again for the group change to take effect. | Finally log out & in again for the group change to take effect. | ||
− | + | = MAC OS X = | |
The following have been tested on Mac OS X Yosemite (10.10) - earlier versions may not have a recent enough Python installation (recommended 2.7.6 or later). It's possible to install other Python versions on your Mac OS X via the 'homebrew' system, we will use this for installing a few additional required tools. | The following have been tested on Mac OS X Yosemite (10.10) - earlier versions may not have a recent enough Python installation (recommended 2.7.6 or later). It's possible to install other Python versions on your Mac OS X via the 'homebrew' system, we will use this for installing a few additional required tools. | ||
− | + | == Python Setup == | |
<ol style="list-style-type: decimal;"> | <ol style="list-style-type: decimal;"> | ||
Line 175: | Line 184: | ||
$ echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/macmini/Library/Python/2.7/lib/python/site-packages/homebrew.pth</pre></li></ol> | $ echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/macmini/Library/Python/2.7/lib/python/site-packages/homebrew.pth</pre></li></ol> | ||
− | + | == Working SciPy Distribution == | |
You may need to upgrade your scipy from the base install, if you wish to do template attacks. This is not needed for other attacks, so please only proceed with the following if you receive an error that your version of scipy is too old. | You may need to upgrade your scipy from the base install, if you wish to do template attacks. This is not needed for other attacks, so please only proceed with the following if you receive an error that your version of scipy is too old. | ||
Line 187: | Line 196: | ||
brew link --overwrite numpy | brew link --overwrite numpy | ||
− | + | == AVR-GCC Install == | |
You can easily use brew to install avr-gcc, as decribed at [https://github.com/osx-cross/homebrew-avr/ OSX-Cross Project]: | You can easily use brew to install avr-gcc, as decribed at [https://github.com/osx-cross/homebrew-avr/ OSX-Cross Project]: | ||
Line 195: | Line 204: | ||
$ brew install avr-libc | $ brew install avr-libc | ||
− | + | = Making sure that everything works = | |
Try running the automated test scripts at chipwhisperer/software/chipwhisperer/tests/. Example: | Try running the automated test scripts at chipwhisperer/software/chipwhisperer/tests/. Example: | ||
$ python chipwhisperer/software/chipwhisperer/tests/aescpaeattackscript.py | $ python chipwhisperer/software/chipwhisperer/tests/aescpaeattackscript.py |
Revision as of 08:48, 25 January 2017
This page describes how to install the ChipWhisperer software. There are a number of ways to set this up: you can use a pre-prepared virtual machine, or you can run the software on your own environment.
Contents
Using VMWare Virtual Machine
If this is your first time using the ChipWhisperer toolchain, the easiest way to start is to use a virtual machine with everything already set up for you.
The ChipWhisperer virtual machine image is made to run on the free VMWare Player. You can download VMWare 7.1.4 here. Note that this program is available for Windows and Linux - if you're running a Mac, you're out of luck.
Once you've downloaded VMWare, you can get the ChipWhisperer Ubuntu image from the Releases Page. Download and unzip the VMWare image. Then, you can open the file ChipWhisperer Lubuntu 32-bit.vmdk
in VMWare Player, and you're ready to go.
There's a Youtube tutorial of this setup available online.
Windows (XP or later)
This section describes how to install the ChipWhisperer software for Windows. Note it is recommended to use the VMWare image if possible, since it includes all required tools out of the box!
Python Setup
The first step is to install Python 2. If you already a recent version of Python installed (2.7.x), you can skip this step. Note that Python 3.x will not work with this codebase.
The recommend method of installing Python is to use a distribution called WinPython. This setup avoids installing Python globally, and includes most of the software you will need. In addition it makes it possible to install 32-bit and 64-bit Python on the same system with minimal problems. This can be very useful as the 64-bit version is handy for doing analysis on large data sets.
- Install WinPython 2.7.x. Download the latest release in the 2.7.x branch from the WinPython site. It's recommended to use the 32-bit version, but you can also use the 64-bit version. Note that certain drivers (such as the SmartCard driver) do not work on the 64-bit version. Choose a reasonable location to install this to - note the default is simply in the download directory. Instead it's recommended to find a directory such as
c:\WinPython32bit-2.7.10.3
, or into your local directory such asc:\Users\yourname\WinPython-32bit-2.7.10.3
. - Go to your installation directory for WinPython, and run the shortcut called WinPython Command Prompt.exe. This will give you a command prompt which is setup to run Python along with associated scripts.
Run the following commands to get needed packages:
pip install pyqtgraph pip install configobj
Assuming you are planning on using the ChipWhisperer Capture Rev2 hardware, you also require PyUSB. The easiest method is to again use pip:
pip install pyusb
If that command fails, you may need to specify a version. Note the latest version printed by the command, and try:
pip install pyusb==1.0.0b1
Optional: You can add the python.exe you just installed to your path. To do so navigate to your installation folder, and run the WinPython Control Panel.exe program. Then select Advanced -> Register distribution.... If you do not do this, you will have to run all commands in this document via the WinPython Command Prompt.exe.
If you plan on running both 32-bit and 64-bit Python, you should not register them. Instead explicitly call the correct Python by always running the WinPython Command Prompt.exe, and then calling specific programs (such as CW Capture or Analyzer) from that command prompt.
- Jump to #Getting_.26_Installing_ChipWhisperer to install ChipWhisperer software.
Note there are some optional packages you may want. Generally you can avoid them unless you have specific need of the features they enable:
FTD2XX: ftd2xx is required for SASEBO-W, SAKURA-G, and SASEBO-GII Support. To install this package, download a copy of the ftd2xx repository and unzip it somewhere. Then run the following where you unzipped it:
python setup.py install
This package will also require you to install the FTDI D2XX Drivers. In the preceeding link simply find the correct driver for your OS Version & install that.
MYSQL: If you want to use the MySQL trace format (not used by default), you'll need to install umysql:
pip install umysql
PYSCARD: If planning on using a PS/SC smartcard reader (i.e. standard USB-connected reader), you will need to install pyscard.
Getting & Installing ChipWhisperer
Assuming you've got a working Python installation, the next step is to install & run ChipWhisperer itself. This requires you to get a copy of ChipWhisperer, you should download the Latest Release. Download & unzip the file somewhere. Note if you are adventurous you can clone the GIT Repository git://git.assembla.com/chipwhisperer.git
instead, but this may be broken so you should start with the latest release instead.
Generally 'somewhere' will become your ChipWhisperer working directory. These examples assume you've chosen C:\chipwhisperer
as your working directory.
Once you've got the file, we run the Python install procedure again (setup.py). We slightly modify it to use the develop command to reflect that the files will probably be changing frequently. Again open a terminal and run the following, adjusting paths as needed:
cd c:\chipwhisperer\openadc\controlsw\python python setup.py develop cd c:\chipwhisperer\software python setup.py develop
If you wish to confirm the installation worked, you can run ChipWhispererAnalyzer in the same terminal:
cd c:\chipwhisperer\software\chipwhisperer\ python CWAnalyzer.pyw
Alternatively you can just double-click on CWAnalyzer.py
from Windows explorer, which should run the file using Python, provided you've registered Python to execute the .py extension.
You can see a Video of the Installation Procedure:
Installing Hardware Drivers
Details of driver installation are on specific pages for supported hardware (such as hwcapturerev2 and naecw1173_cwlite). Drivers are available from ChipWhisperer release section.
Getting AVR Compiler Toolchain
The following section is NOT REQUIRED for your first attack - you can jump right to the tutorial if you wish. However you'll ultimately wish to modify the code of the device under test, and these instructions tell you how. You should first follow the tutorial to confirm your system is working before modifying the code however!
To build the code, you'll need to install WinAVR on Windows (if using the Virtual Machine, the following is not required, as the VM comes setup with the AVR compiler already).
Note that the default codebase does not include the cryptographic code we attack. Instead you are required to add this code into the system -- if the external code changes, this may eventually be instead rolled into the main codebase. To setup the code, follow the following steps:
cd
to the directory with the avr-serial example, and runmake
:cd c:\chipwhisperer\hardware\victims\firmware\simpleserial-aes make
If this is successful, you'll see an output like the following:
If instead you get an error something like
make: *** No rule to make target `simpleserial.elf', needed by `elf'. Stop.
, this means a required file was missing.- Programming the target AVR is accomplished in one of two methods depending on your hardware. The ChipWhisperer Capture Rev 2 uses the external "AVR Studio" program, whereas the CW1173 and CW1200 use a programmer menu from the ChipWhisperer-Capture software. To see details refer to either CW1002_ChipWhisperer_Capture-Rev2#CWCR2:_Using_the_AVR_Programmer or CW1173_ChipWhisperer-Lite#CW-Lite:_Programming_AVR.2FXMEGA_Device.
Linux
Python Setup
On Linux, installing Python & all the associated packages is much easier than on Windows. Typically you can install them from a package manager, if you are using Fedora Core or similar, just type:
$ sudo yum install python27 python27-devel python27-libs python-pyside numpy scipy python-configobj pyusb $ sudo pip install pyqtgraph
On Ubuntu or similar:
$ sudo apt-get install python2.7 python2.7-dev python2.7-libs python-numpy python-scipy python-pyside python-configobj python-setuptools python-pip $ sudo pip install pyusb $ sudo pip install pyqtgraph
Getting ChipWhisperer
As in the Windows release, you can download a complete ChipWhisperer software release. Alternatively you can clone the ChipWhisperer repository with git, which is very simple on Linux:
$ git clone git://git.assembla.com/chipwhisperer.git
$ cd chipwhisperer
$ git clone git://git.assembla.com/openadc.git
Be aware that the git code may be broken, although we try not to commit completely untested code to the master branch. Either way once you have the chipwhisperer directory somewhere, do the following from within that directory:
$ cd software
$ sudo python setup.py develop
$ cd ../openadc/controlsw/python
$ sudo python setup.py develop
NB: This assumes the python command links to Python-2.7, and not Python-3.x. You may need to specify either python2.7 or python27 as the command instead of python to force this.
Hardware Drivers
The driver for Linux is built in, however you need to allow your user account to access the peripheral. To do so, you'll have to make a file called /etc/udev/rules.d/99-newae.rules
. The contents of this file should be:
# CW-Lite SUBSYSTEM=="usb", ATTRS{idVendor}=="2b3e", ATTRS{idProduct}=="ace2", MODE="0664", GROUP="plugdev" # CW-1200 SUBSYSTEM=="usb", ATTRS{idVendor}=="2b3e", ATTRS{idProduct}=="ace3", MODE="0664", GROUP="plugdev" # CW-305 (Artix Target) SUBSYSTEM=="usb", ATTRS{idVendor}=="2b3e", ATTRS{idProduct}=="c305", MODE="0664", GROUP="plugdev" # CW-CR2 SUBSYSTEM=="usb", ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="8613", MODE="0664", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="221a", ATTRS{idProduct}=="0100", MODE="0664", GROUP="plugdev"
Then add your username to the plugdev group:
$ sudo usermod -a -G plugdev YOUR-USERNAME
And reset the udev system:
$ sudo udevadm control --reload-rules
Finally log out & in again for the group change to take effect.
You can always find the latest version of this file in GIT.
FTDI Hardware Driver (SASEBO-W, SAKURA-G, SASEBO-GII)
This is only required for supporting FTDI-connected hardware such as the SASEBO-W, SAKURA-G, SASEBO-GII. This is NOT required for the ChipWhisperer Capture Rev2.
First, you need to install the D2XX drivers & python module. See the section #Optional_Packages.
Currently, there is a bit of a hack needed. You have to create (or modify if it exists) the file /etc/udev/rules.d/99-libftdi.rules
. The following modifications will cause any FTDI-serial device to stop working, so backup the existing file! The contents of this file should be:
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="0664", GROUP="plugdev" ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", RUN+="/bin/sh -c 'echo $kernel > /sys/bus/usb/drivers/ftdi_sio/unbind'"
Then add your username to the plugdev group (if not already done):
$ sudo usermod -a -G plugdev YOUR-USERNAME
And reset the udev system:
$ sudo udevadm control --reload-rules
Finally log out & in again for the group change to take effect.
MAC OS X
The following have been tested on Mac OS X Yosemite (10.10) - earlier versions may not have a recent enough Python installation (recommended 2.7.6 or later). It's possible to install other Python versions on your Mac OS X via the 'homebrew' system, we will use this for installing a few additional required tools.
Python Setup
- Ensure your user account has a password. In order for the 'sudo' command to work it requires you to type your password, so if you don't have one enabled be sure to set a temporary password now.
Install the 'homebrew' system, see brew.sh for details. Briefly, you can install it by pasting the following in a terminal:
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Install PySide using homebrew:
$ brew install pyside
The install will probably print a message like this:
Note you must run that command in order to successfully import the modules, in this example it would be:
$ mkdir -p /Users/macmini/Library/Python/2.7/lib/python/site-packages $ echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/macmini/Library/Python/2.7/lib/python/site-packages/homebrew.pth
Working SciPy Distribution
You may need to upgrade your scipy from the base install, if you wish to do template attacks. This is not needed for other attacks, so please only proceed with the following if you receive an error that your version of scipy is too old.
The easiest method is to use brew again:
brew install scipy
You will also need to follow the instructions as above (inserting the link to the brew site-packages location). You will finally need to run the following:
brew link --overwrite numpy
AVR-GCC Install
You can easily use brew to install avr-gcc, as decribed at OSX-Cross Project:
$ brew tap osx-cross/avr $ brew install avr-libc
Making sure that everything works
Try running the automated test scripts at chipwhisperer/software/chipwhisperer/tests/. Example:
$ python chipwhisperer/software/chipwhisperer/tests/aescpaeattackscript.py $ python chipwhisperer/software/chipwhisperer/tests/descpaeattackscript.py $ python chipwhisperer/software/chipwhisperer/tests/glitchscript.py $ python chipwhisperer/software/chipwhisperer/tests/templateattackscript.py
They should all work out of the box with the Chipwhisper Lite hardware.