Skip to main content

Checksec tool implemented in Python

Project description


checksec.py

Checksec tool in Python, Rich output, based on LIEF

Demo

CI badge PyPI package badge Python version badge

Table of Contents

Overview

A simple tool to verify the security properties of your binaries.

These properties can be enabled by your compiler to enforce the security of your executables, and mitigate exploits. However it can be challenging to apply them on a whole system.

Check the level of security your Linux distro / Windows release is providing you !

Supported formats:

  • ELF
  • PE
  • Mach-O

Based on:

  • Rich: Beautiful terminal output formatting
  • LIEF: Cross-platform library to parse, modify and abstract ELF, PE and Mach-O formats

Requirements

Setup

Windows

You find the checksec.exe on the latest Github releases:

Linux

python3 -m venv venv
source venv/bin/activate
(venv) pip install checksec.py

Usage

(venv) checksec <file_or_directory>...

Check --help for more options (JSON output, recursive walk, workers count)

FAQ

1️⃣ What's the difference between checksec.py and checksec.sh ?

checksec.py checksec.sh
Cross-Platform support
Distributed workload
Scan file
Scan directory
Scan directory recursively
Specify libc path
Scan process
Scan process libs
Scan kernel config
Output Cli
Output JSON
Output CSV
Output XML
ELF: Relro
ELF: Canary
ELF: NX
ELF: PIE
ELF: RPATH
ELF: RUNPATH
ELF: Symbols
ELF: Fortify
ELF: Fortified
ELF: Fortifable
ELF: Fortify Score

2️⃣ What's the difference between checksec.py and winchecksec ?

checksec.py winchecksec
Cross-Platform support
Distributed workload
Scan file
Scan directory
Scan directory recursively
Output CLI
Output JSON
PE: ASLR - DYNAMIC_BASE
PE: ASLR - HIGHENTROPYVA
PE: INTEGRITYCHECK
PE: Authenticode signed
PE: DEP
PE: Manifest Isolation
PE: SEH
PE: SafeSEH
PE: Control Flow Guard
PE: Return Flow Guard
PE: Stack Cookie

3️⃣ checksec is slow on some huge binaries ! What's happening ?!

checksec.py relies on the LIEF library to parse PE/ELF/MachO formats.

➡️The library doesn't offer at this point on-demand parsing, so it will parse and fetch unnecessary data.

➡️Retrieving symbols can be slow (ex: pandoc, 118M, +300 000 symbols, +2m 20sec). See this issue

4️⃣ I sent a CTRL-C to cancel checksec.py processing, the app doesn't want to quit

checksec.py is working with multiple process workers to parallelize its execution and binary processing. When a CRTL-C is received, checksec.py will wait for them to stop.

Sometimes, this is not working, and I don't know why at this point. You can kill the remaining Python workers afterwards.

References

License

License: GPL v3

Contributors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

checksec_py-0.7.4.tar.gz (27.2 kB view details)

Uploaded Source

Built Distribution

checksec_py-0.7.4-py3-none-any.whl (27.6 kB view details)

Uploaded Python 3

File details

Details for the file checksec_py-0.7.4.tar.gz.

File metadata

  • Download URL: checksec_py-0.7.4.tar.gz
  • Upload date:
  • Size: 27.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.10.14 Linux/6.5.0-1025-azure

File hashes

Hashes for checksec_py-0.7.4.tar.gz
Algorithm Hash digest
SHA256 22ca4edb5431b4c37f674668a0c4b659ce992ef035f56f54a9b1d60495b46ae5
MD5 c85b09ee16aa07cb1fde58cd522d79ff
BLAKE2b-256 7785b337eddbcc34a57f288d553d9744df649ee3cb0660d7e31bb612c744e5b0

See more details on using hashes here.

File details

Details for the file checksec_py-0.7.4-py3-none-any.whl.

File metadata

  • Download URL: checksec_py-0.7.4-py3-none-any.whl
  • Upload date:
  • Size: 27.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.10.14 Linux/6.5.0-1025-azure

File hashes

Hashes for checksec_py-0.7.4-py3-none-any.whl
Algorithm Hash digest
SHA256 412f703f6978f5f456ca1aa196891ab09ee144c8c5ab8adc161703f94e24bfc9
MD5 42522cd46e15787fd99f0e9c8ba1172b
BLAKE2b-256 5822d18e26d71977ebcd94d7d1fc5fb45816e45c7adf0f78581f3af8b5ad87d2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page