Git Product home page Git Product logo

pawn's Introduction

Pawn BIOS Dumping Tool

Copyright 2014-2023 Google LLC.

Linux Build Status

Disclaimer: This is not an official Google product (experimental or otherwise), it is just code that happens to be owned by Google.

What is it?

Pawn is a tool to extract the BIOS firmware from Intel-based workstations and laptops. The name is a play on an internal tool that is also named after a chess piece.

How to Build

Dependencies:

  • Linux on x86_64 (uses /dev/mem). FreeBSD might also work.
  • GCC >= 7 or Clang >= 7
  • CMake >= 3.14
  • Ninja or GNU Make

To build:

mkdir -p build && cmake -S . -B build
cmake --build build/

The resulting binary can be found in build/pawn/pawn.

Usage

The following command will extract the BIOS firmware and save the image to bios_image.bin:

sudo build/pawn/pawn bios_image.bin

Note: When running a Linux kernel > 4.8.4, make sure that either CONFIG_IO_DEVMEM=n is set or that you've booted with the iomem=relaxed boot option.

After extraction, you can then use other tools like UEFITool to process the firmware image further.

pawn's People

Contributors

cblichmann 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  avatar  avatar

Watchers

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

pawn's Issues

Unsupported Intel ChipSet v2.0

After finally got this version of pawn to work on Ubuntu 18.0 I still get this message:

pawn 0.2 (@internal, Jan 24 2023, debug build), (c)2014-2022 Google LLC.
Acquiring I/O port read permissions, this may fail...
Reading chipset LPC device identification: VID: 0x8086 DID: 0xA150 RID: 0x31 (49)
F /home/ubuntu/Downloads/pawn-main/pawn/pawn.cc:80] Unsupported Intel chipset, check hardware id.Aborted

Is there any chance to get this error fixed?

Thanks in advance

build errors

Hi, I encountered the following errors when running mkdir build & cd build & cmake .. & make

[snip]
/home/user/opt/pawn/pawn/pci.cc: In static member function ‘static absl::StatusOr<security::pawn::Pci> security::pawn::Pci::Create()’:
/home/user/opt/pawn/pawn/pci.cc:53:10: error: could not convert ‘pci’ from ‘security::pawn::Pci’ to ‘absl::StatusOr<security::pawn::Pci>’
   return pci;
          ^~~
/home/user/opt/pawn/pawn/physical_memory.cc: In static member function ‘static absl::StatusOr<std::unique_ptr<security::pawn::PhysicalMemory> > security::pawn::PhysicalMemory::Create(uintptr_t, size_t)’:
/home/user/opt/pawn/pawn/physical_memory.cc:45:10: error: could not convert ‘mem’ from ‘std::unique_ptr<security::pawn::PhysicalMemory>’ to ‘absl::StatusOr<std::unique_ptr<security::pawn::PhysicalMemory> >’
   return mem;

[snip]

My gcc version meets the requirements laid out in the README

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) 

failed build on ubuntu 21.10

build error:

/home/raf/repo/pawn/build/_deps/absl-src/absl/debugging/failure_signal_handler.cc:139:32: error: no matching function for call to ‘max(long int, int)’
139 | size_t stack_size = (std::max(SIGSTKSZ, 65536) + page_mask) & ~page_mask;

SMM_BWP result hardcoded?

It appears that the SMM_BWP will always show up as 0. The ich8 chipset definition hardcodes this to 0, and the others appear to inherit their definition of the BIOS Control Register without change.

0, // Reserved, SMM_BWP on PCH platforms.

Checked with lspci and chipsec to confirm discrepancy.

Unsupported Intel chipset

Not working on LG_gram 2018

Reading chipset LPC device identification: VID: 0x8086 DID: 0x9D4E RID: 0x21 (33)

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.