pwnlib.constants
— Easy access to header file constants
Module containing constants extracted from header files.
The purpose of this module is to provide quick access to constants from different architectures and operating systems.
The constants are wrapped by a convenience class that allows accessing the name of the constant, while performing all normal mathematical operations on it.
Example
>>> str(constants.freebsd.SYS_stat)
'SYS_stat'
>>> int(constants.freebsd.SYS_stat)
188
>>> hex(constants.freebsd.SYS_stat)
'0xbc'
>>> 0 | constants.linux.i386.SYS_stat
106
>>> 0 + constants.linux.amd64.SYS_stat
4
The submodule freebsd
contains all constants for FreeBSD, while the
constants for Linux have been split up by architecture.
The variables of the submodules will be “lifted up” by setting the
pwnlib.context.arch
or pwnlib.context.os
in a manner similar to
what happens in pwnlib.shellcraft
.
Example
>>> with context.local(os = 'freebsd'):
... print(int(constants.SYS_stat))
188
>>> with context.local(os = 'linux', arch = 'i386'):
... print(int(constants.SYS_stat))
106
>>> with context.local(os = 'linux', arch = 'amd64'):
... print(int(constants.SYS_stat))
4
>>> with context.local(arch = 'i386', os = 'linux'):
... print(constants.SYS_execve + constants.PROT_WRITE)
13
>>> with context.local(arch = 'amd64', os = 'linux'):
... print(constants.SYS_execve + constants.PROT_WRITE)
61
>>> with context.local(arch = 'amd64', os = 'linux'):
... print(constants.SYS_execve + constants.PROT_WRITE)
61