Compare commits

...
566 Commits
Author SHA1 Message Date
peace-maker 8bc6f6cd2b Merge pull request #2796 from peace-maker/stable_backports
Backport bugfixes from 5.0 to stable
2026-11-08 08:49:07 +01:00
peace-maker 455c8c02c3 Backport: Test on Python 3.15 (#2792)
* Test on Python 3.15

* Use `RLIM_INFINITY` instead of `-1` constant for rlimit modification

Python 3.15 warns against using negative values instead of the constant:

DeprecationWarning: Use RLIM_INFINITY instead of negative limit value.

It has been available since Python 2.

* Update CHANGELOG
2026-10-30 20:49:30 +01:00
Carlos Luna-Pena dbc618de0d Backport: fix #2737: pwnlib.shellcraft submodule imports on python 3.12+ (#2739)
* shellcraft: migrate lazy importer to find_spec for py3.12+

* shellcraft: changelog entry + mypy baseline sync for #2739
2026-10-30 20:49:06 +01:00
peace-maker 34b8345d1d Backport: Support paginated libc.rip API requests (#2767)
* Support paginated libc.rip API requests

libc.rip used to truncate the result set but supports pagination now. Fetch all results reliably now by requesting all pages.

Fixes #2651

* Update CHANGELOG
2026-10-30 20:49:05 +01:00
Peace-Maker 771c7f81ac Backport: Skip ssh.ibt doctest since some runners appear to support it now 2026-10-30 20:49:05 +01:00
Taran 8d69dc6142 Backport: fix(srop): correct amd64 SigreturnFrame uc_sigmask offset (#2762)
* fix(srop): correct amd64 SigreturnFrame uc_sigmask offset

* changelog: add entry for #2762
2026-10-30 20:49:05 +01:00
peace-maker 3911a6a12e Backport: Fix libcdb CI cache not forwarding URI path (#2749)
The nginx docs say that you have to specify the $request_uri manually when a variable is used in the `proxy_pass` value.
Since we just put `/` at the end, all requests were rewritten to `/` instead of the intended e.g. `/api/find` endpoints.

https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

This broke in #2718 but didn't manifest right away since the responses were still cached in CI. Now after the cache expired the fetch failed.
2026-10-30 20:49:05 +01:00
ChrisJr404andChris a5f3873194 Backport: safeeval: allow LIST_APPEND and SET_ADD opcodes (Python 3.14) (#2722)
* safeeval: allow LIST_APPEND and SET_ADD opcodes (Python 3.14)

* changelog: add entry for #2722 (safeeval Python 3.14 opcodes)

* ci: retrigger after transient libcdb network failure

---------

Co-authored-by: Chris (ChrisJr404) <[email protected]>
2026-10-30 20:49:05 +01:00
peace-maker 481704bfd8 Backport: ssh: Discard stderr of lsb_release for Distro lookup (#2704)
* ssh: Discard stderr of `lsb_release`

The "No LSB modules are available." spam interferes with parsing the output for the initial checksec distro parsing when connecting to a new host.

* Update CHANGELOG
2026-10-30 20:49:05 +01:00
zackary 5196a1a0f0 Backport: fix: delay upstream DNS resolution to prevent startup failures (#2718)
Use nginx variable pattern (set $upstream + proxy_pass https://$upstream)
to defer DNS resolution until first request instead of at config parse time.

This fixes the occasional 'host not found in upstream' error in CI when
nginx container starts before Docker DNS is fully available.

Fixes #2712
2026-10-30 20:49:05 +01:00
Peace-Maker be705326a7 Backport: libcdb CI cache: Resolve upstream hostnames on request
Instead of trying to resolve all of them when nginx starts and exit
if any of them fail to resolve.

[emerg] 1#1: host not found in upstream "debuginfod.elfutils.org" in /etc/nginx/nginx.conf:23
2026-10-30 20:49:05 +01:00
Peace-Maker c7e6ef37c8 Backport: Cache gitlab.com libcdb responses in CI
The reponses set a cloudflare `_cfuvid` cookie and had a cache time of 60 seconds.
nginx doesn't cache responses with a `Set-Cookie` header by default,
so ignore the cookie and override the cache time to 12 weeks.

Fixes #2494
2026-10-30 20:49:05 +01:00
Arusekk 210faac75b Backport: no atexit, OS will suffice 2026-10-30 20:49:05 +01:00
peace-maker 8e0e4c6c90 Backport: Close SSH client connection when authentication failed (#2688)
* Close SSH client when authentication failed

The TCP connection stayed open after an exception was thrown
during authentication, even when a `with`-statement guarding the call.
Close the connection before re-raising the exception.

Fixes #2678

* Update CHANGELOG
2026-10-30 20:49:05 +01:00
peace-maker bbac6660b2 Backport: Fix tty and raw arguments in ssh.process (#2699)
* Fix `tty` and `raw` arguments in ssh.process

The arguments were unused and not passed through to the underlying `ssh_process` class.

Fixes #2038

* Add tty tests

* Update CHANGELOG

* Fix buffered process environment output without tty
2026-10-30 20:49:05 +01:00
Rin 2a986f12c1 Backport: refactor: replace unsafe eval with ast.literal_eval in ROP cache loading (#2677)
* refactor: replace unsafe eval with ast.literal_eval in ROP cache loading

* docs: add PR link to CHANGELOG reference section

* docs: restore full CHANGELOG and correctly add PR #2677 reference
2026-10-30 20:49:05 +01:00
peace-maker b60ed9928d Backport: Fix typo causing doctests not getting skipped (#2681)
Downloading all those libcs slowed down the CI a lot.
2026-10-30 20:49:05 +01:00
peace-maker b1391984d1 Backport: asm: try native binutils before fallback architectures (#2669)
* asm: try native binutils before fallback architectures

Some binutils builds support multiple architectures,
like the x86_64 assembler supports i386 too in most
package builds and vice versa. We support this by trying
the other binutils as well when looking for the right tool.
That support is optional though and there are packages
that don't include the "cross" compilation.

When assembling for the host's native architecture, we
still prefer the explicitly named `x86_64-linux-gnu-as`
instead of the native `as` binary. That native binary is
tried as a last resort after looking for any other explictly
named binary. If the fallback package is installed but
compiled without the cross-compiler support, we'd still
find the `i386-as` binary while looking for `x86_64-as`
before trying the native `as` binary.
That would fail to assemble.

This patch moves the native `as` binary forward in the list
to try it before checking the other fallback architecture ones.

Fixes #2509

* Update CHANGELOG
2026-10-30 20:49:05 +01:00
Th3S dd747e1062 Backport: fix(libcdb-cli): return early if no matched libc found (#2646)
* Fix: return early if no matched libc found

* Update CHANGELOG
2026-10-30 20:49:05 +01:00
peace-maker 78fccc055f Backport: Remove "pip" as explicit dependency (#2642)
It looks like this was done to work around a bug in an old pip version years ago.
It caused problems when freezing dependencies which unnecessarily forced pip to the version used at freeze time when installing again.

Fixes #2625
2026-10-30 20:49:05 +01:00
OBarronCS 4f50b45586 Backport: Add aarch64_be qemu mapping (#2653) 2026-10-30 20:49:05 +01:00
a1c7d07db8 Backport: GitHub Actions: Test on Python 3.14 (#2627)
* GitHub Actions: Test on Python 3.14

Python v3.14 -- October 7th
* https://www.python.org/download/pre-releases
* https://www.python.org/downloads/release/python-3140rc3
* https://github.com/actions/setup-python/blob/main/docs/advanced-usage.md#allow-pre-releases

* Allow new LOAD_SMALL_INT opcode in safeeval

* Support lambdas in mbruteforce

* Drop pwnlib.util.iters.lookahead

---------

Co-authored-by: Peace-Maker <[email protected]>
Co-authored-by: Arusekk <[email protected]>
2026-10-30 20:49:05 +01:00
Arusekk 6691e8476a Backport: template: error message and fallback on no docker 2026-10-30 20:49:05 +01:00
peace-maker a8bcdf6f8d Backport: Fix log.progress ignoring context.log_console (#2610)
* Fix `log.progress` ignoring `context.log_console`

When setting `context.log_console` to something other than stdout, spinners while using `log.progress` would still be printed to stdout.
Redirect them to the stream specified by `context.log_console` and don't animate if it's not a tty.

Fixes #1702

* Update CHANGELOG
2026-10-30 20:49:05 +01:00
k4lizen bf5e4df220 Backport: Fix aarch64 ABI (#2598)
* upd aarch64 abi

* changelog
2026-10-30 20:49:05 +01:00
Shordenandpeace-maker 68b5bbf16b Backport: Support context.timeout in ~/.pwn.conf (#2592)
* Add float to supported config types

This change functionally just allows setting `context.timeout` in
~/.pwn.conf.

* update changelog

---------

Co-authored-by: peace-maker <[email protected]>
2026-10-30 20:49:05 +01:00
Arusekk 9a7e197754 Backport: Fix double exception on gaierror
Closes #2581
2026-10-30 20:49:05 +01:00
Zach Hanson 96c3ede156 Backport: Fix a bug that incorrectly reports GNU_STACK missing when its not. (#2493) 2026-10-30 20:49:05 +01:00
RocketDev f2eba7c8fd Backport: ROP: fix ROP(ELF(exe)).leave is None in some ELF (#2506)
* ROP: fix `self.leave is None` in some libc

When `pop rbp; pop rsp; ret;` exists in libc, it is chosen instead of
`leave`. Add a specific `order` to filter out the former one.

* add changelog for #2506

* ROP: add sp_move when `pop rsp`

* CHANGELOG: mv #2506 to `5.0.0`
2026-10-30 20:49:05 +01:00
peace-maker 1c7d917432 Backport: CI: Test on Python 3.13 (#2534) 2026-10-30 20:49:05 +01:00
tesujiandpeace-maker 1553670f9d Backport: checksec: Do NOT error when passing directory arguments to commandline tool (#2530)
I often use `checksec *` to lazily avoid typing filenames in a directory.
If the directory contains any other sub-dirs, the command fails.
With this patch, checksec will silently skip dir paths. There's still
TOCTOU issue but I don't think checksec do anything important enough
to explicitly use try/catch to account for that.

Co-authored-by: peace-maker <[email protected]>
2026-10-30 20:49:05 +01:00
peace-maker 8f67b7b7b5 Backport: Raise EOFError during process.recv when stdout closes on Windows (#2524)
* Windows: Raise EOFError during process.recv when stdout closes

If the receiving thread terminates while we're waiting for data to arrive we'd be waiting endlessly. Raise EOFError when .recv()ing on a process with stdout closed and no more data queued up from the receiver thread.

* Update CHANGELOG
2026-10-30 20:49:05 +01:00
Rahulandrahul05ranjan 459dfd7e35 fix(regsort): drop self-assignments through register aliases (#2795)
* fix(regsort): drop self-assignments through register aliases

The self-assignment drop compared register names only (k != v), so an
assignment through an alias (e.g. {'ax': 'eax'} with registers.native32)
was not recognized as a no-op.  It then surfaced as a spurious
1-register dependency cycle, which either raised PwnlibException with
xchg=False or emitted a useless 'mov' of a register into its own alias.

With xchg=False and other registers present, the bogus cycle also
forced the temporary-register code path, reordering unrelated moves and
silently leaving registers with wrong values (see the linked issue).

Compare the mapped names instead, like the rest of the function.

Fixes #2794

Co-authored-by: rahul05ranjan <[email protected]>

* docs(changelog): add regsort register-alias self-assignment fix entry

---------

Co-authored-by: Rahul Ranjan <[email protected]>
2026-10-30 16:20:25 +01:00
peace-maker d8d47977ac gdb.corefile: Run gdb directly to prevent detach race (#2787)
* gdb.corefile: Run gdb directly to prevent detach race

`attach()` waits for the debugger to attach by polling the `TracerPid` regularly. `corefile()` runs `detach` in gdb after dumping the core, so the debugger might attach and detach between two `TracerPid` polls and `wait_for_debugger()` thinks gdb exited before attaching and returns `None` as gdb's pid is no longer valid.

Later `corefile()` ran `psutil.Process(pid).wait()` with `pid = None` which effectively waited on the Python process itself to exit.
This caused a hang in the doctest CI sometimes, which was killed by the watchdog timer eventually.

Run `gdb` directly and just observe the exit code instead of relying on the more advanced `attach` logic for longer running debug sessions.

* Update CHANGELOG
2026-10-26 06:15:28 +00:00
Max Freedom Pollardandpeace-maker 3daf28b6be fix(packing): dd() raises TypeError on a bytearray destination (#2772)
* fix(packing): dd() raises TypeError on a bytearray destination

dd() documents bytearray as a supported destination type, but
dd(bytearray(b'Hello!'), b'?', skip=5) raises
"TypeError: 'bytes' object cannot be interpreted as an integer".

pwnlib/util/packing.py:1108 handled list and bytearray destinations in a
single branch and filled both with list(map(p8, bytearray(src))). p8()
returns a length-1 bytes object, which is what a list destination is
documented to hold (see the existing dd(list('Hello!'), (63,), skip=5)
doctest), but a bytearray slice assignment needs an iterable of int, so
every bytearray destination crashed.

Assign the byte string src directly when the destination is a bytearray.
Every src branch above the destination dispatch (packing.py:1039-1089)
has already reduced src to a byte string, so the slice assignment is
always valid. This also makes a bytearray destination agree with the
bytes and str destinations, which already copy src verbatim.

Add a doctest covering the returned value and the in-place update of the
caller's bytearray.

* Add changelog entry for #2772

---------

Co-authored-by: peace-maker <[email protected]>
2026-10-24 12:15:03 +02:00
h4kk4p4kk4andpeace-maker f4b3e6e1c4 fix(elf): prevent elf.libc returning the executable when its name starts with libc[.-] (#2781)
Co-authored-by: peace-maker <[email protected]>
2026-10-24 12:12:47 +02:00
Max Freedom PollardandPeace-Maker 2b39684912 Disable debuginfod doctests in libcdb.unstrip_libc on stable (#2773)
* Disable debuginfod tests in libcdb.unstrip_libc

The external debuginfod servers are really slow or won't respond at all like debuginfod.ubuntu.com.
The caching in CI doesn't help since we only cache it for 3 month and the query fails afterwards most of the time. We cache the negative response too which doesn't help if the service is flakey itself :D

(cherry picked from commit 86cafce196)

* Add changelog entry for #2773

---------

Co-authored-by: Peace-Maker <[email protected]>
2026-10-21 20:04:53 +02:00
peace-maker 7e5e79d00f Allow running with Unicorn 2.1.[34] but throw when emulating MIPS (#2721)
* Allow running with Unicorn 2.1.[34] but throw when emulating MIPS

Unicorn 2.1.5 wasn't released for a while and 2.1.2 doesn't have binary wheels for Python 3.14.
This made installing pwntools on newer Python versions more annoying since you had to build Unicorn yourself.

The only problem with the blocked versions is MIPS emulation, so only avoid that while allowing to use Unicorn 2.1.3 or 2.1.4 for other architectures.

Refs #2621

* Update CHANGELOG
2026-04-27 18:23:01 +02:00
0xDanielandpeace-maker e551b4ae56 fix: apply force_to_bytes to readline result in non-term_mode path (#2707)
Co-authored-by: peace-maker <[email protected]>
2026-04-07 11:28:48 +02:00
43ef1b494c Fix _build_date() crash on non-standard locale date strings (#2701)
* Fix _build_date() crash on non-standard locale date strings (#2513)

Some Android devices return locale-dependent strings in ro.build.date
(e.g. '2017年 11月 14日 星期二 09:55:07 CST' for Chinese locale) that
dateutil.parser.parse() cannot handle, causing wait_for_device() to
crash with a ParserError.

Fix: prefer ro.build.date.utc (integer epoch timestamp) which is
locale-independent and available on all Android devices. Fall back
to ro.build.date with error handling if the UTC property is missing.

* Add CHANGELOG entry for #2513 fix

* Simplify _build_date(): prefer ro.build.date.utc, keep minimal fallback

Address review: ro.build.date.utc is set by the AOSP build system
and available on all standard Android devices. Simplified comments
to reflect this is the primary path, with ro.build.date kept only
as a fallback for non-standard builds.

* Move CHANGELOG entry

* Fix Python 2.7 compatibility

* Disable intro doctest connecting to `ftp.ubuntu.com`

The FTP server is throttled in CI or just really slow. We already test the basic tcp tubes in the `remote` tests.

---------

Co-authored-by: coder999999999 <[email protected]>
Co-authored-by: peace-maker <[email protected]>
2026-04-07 11:09:01 +02:00
be92aa1b4c fix: pad bytes fields to correct field size in FileStructure (#2694)
* fix: pad bytes fields to correct field size in FileStructure

When setting bytes fields (e.g. _IO_save_base) on FileStructure, the
value was padded to context.bytes instead of the actual field size from
self.length[val]. This caused struct.pack errors for fields whose size
differs from the pointer size.

Fixes #2693

* Cleanup test and add CHANGELOG

---------

Co-authored-by: nightcityblade <[email protected]>
Co-authored-by: Peace-Maker <[email protected]>
2026-04-05 20:37:31 +00:00
Peace-Maker 07f3caadc4 Stay with pylint < 4.0 until recursion errors are fixed
https://github.com/pylint-dev/pylint/issues/9190
2025-10-16 16:17:08 +02:00
Peace-Maker 3ad86ec5ad Release 4.15.0 2025-10-12 16:48:05 +02:00
Arusekk b5076d9262 Merge branch 'stable' into beta 2025-09-26 09:54:54 +02:00
ArusekkandHackrrr 77b4f06b07 docs: warn that .libs/.libc/.maps are dangerous (#2626)
Co-authored-by: Hackrrr <[email protected]>
2025-09-26 07:36:34 +00:00
Arusekk 4968499d11 ffix: ugly ELF docs (whitespace only) 2025-09-26 09:20:53 +02:00
Peace-Maker f38991bc02 Merge branch 'stable' into beta 2025-09-16 21:41:00 +02:00
peace-maker d0e6ee4b37 Fix regression: gdbserver can't handle command-line argument containing whitespace (#2624)
* Fix regression: gdbserver can't handle command-line argument containing whitespace

The `--no-startup-with-shell` argument was passed in an attempt to
fix gdbserver startup with `SHELL=/bin/fish`. (#2377) It caused a regression
which disallowed passing arguments containing whitespace to the debuggee in `gdb.debug`.

gdbserver would exit with a message:
"can't handle command-line argument containing whitespace"

There is a 3 second timeout waiting for gdbserver to startup and
printing a message with a workaround already suggesting to set
`SHELL=/bin/bash` to allow gdbserver to launch. This has to be
our best effort to guide users of such shells until we find time
to investigate a better solution.

Fixes #2550

* Update CHANGELOG
2025-09-16 21:06:29 +02:00
peace-makerandArusekk 48ea09b27f Fix lookup of binutils for mipsel architecture (#2612)
* Fix lookup of binutils for `mipsel` architecture

The endianness is encoded in the architecture name for mips targets which wasn't respected while looking for the correct binutils binary.

Sync the CI and Dockerfile binutils packages while we're at it.

Fixes #2591

* Update CHANGELOG

* still fall back to the other endianness

---------

Co-authored-by: Arusekk <[email protected]>
2025-09-11 13:09:28 +00:00
Arusekk 9f22a2f202 Merge branch 'stable' into beta 2025-09-11 14:55:56 +02:00
Arusekk 7413a3da31 Exclude Unicorn versions segfaulting on MIPS PLT (#2621)
Fixes #2619
2025-09-11 12:55:51 +00:00
Peace-Maker 95aac6e367 Merge branch 'stable' into beta 2025-09-05 13:59:45 +02:00
Peace-Maker 9ed93a5281 Fix race condition in process mapping tests
We could try to lookup the mapped libraries before they are actually loaded in the process.
Wait until the program is up and running before trying to fetch the memory maps.
2025-09-05 13:14:57 +02:00
peace-maker 3579fb1384 Fix log level of child remotes of server tube (#2609)
* Fix log level of child remotes of `server` tube

The log level of the `server` tube wasn't passed
on to the `remote` wrappers created upon receiving
a new child connection. This caused the connection
closed message to be logged even when the server
object was created with `level='error'`.

* Update CHANGELOG
2025-09-05 12:25:49 +02:00
Peace-Maker 485bf0a0b7 Merge branch 'stable' into beta 2025-08-28 14:36:00 +02:00
William Tan b133b76b4e Allow setting debugger path via context.gdb_binary (#2602)
* Allow setting debugger path via context

* Update changelog
2025-08-19 10:30:05 +02:00
ffc46d277a Fix poll error in process.libs() and clean up maps parsing (#2579)
Co-authored-by: Raccoon <raccoon@42>
Co-authored-by: peace-maker <[email protected]>
2025-08-09 14:47:57 +00:00
Peace-Maker dd3a5f6974 libcdb: Fix cache handling of debuginfo
When trying multiple debuginfod servers, the first one to fail would save the failed attempt and block the remaining servers to be tried.

Only save that we couldn't find the debuginfo if we tried all the configured servers.
2025-08-06 14:32:08 +02:00
Peace-Maker 9a275b2db0 Fix libcdb cache in CI
Requests to debuginfod.elfutils.org had the wrong SNI in their request.

Cache requests to debuginfod.ubuntu.com too.
2025-08-06 12:16:10 +02:00
Peace-Maker 1c28222fe6 Merge remote-tracking branch 'stable' into beta-staging 2025-08-05 21:47:13 +02:00
peace-maker b93c5ace10 Ignore colored_traceback error when TERM is unset (#2596)
* Ignore colored_traceback error when TERM is unset

Fixes using pwntools in non-interactive sage scripts with newer colored_traceback versions.

Fixes #2594

* Update CHANGELOG
2025-08-05 21:25:21 +02:00
peace-maker da9797c1c2 Support longer function names in Windows getexport shellcode (#2587)
* Support longer function names in Windows getexport shellcode

Previously, an arbitrary name length limit of 8 characters was in place due to the lack of a proper strcmp loop. Implement a cheap strcmp for longer function names.
This trashes a bunch of registers and we might be able to optimize it further to reduce the damage.

Use a unique label too to avoid redefinition when using the shellcraft template twice in the same shellcode. Use the mov shellcraft template for the destination register to avoid an instruction if the result is already in the desired register.

* Update CHANGELOG
2025-08-05 14:55:35 +00:00
Shordenandpeace-maker 6dfe8b6f72 Use unicorn on macOS w/ SIP enabled (#2593)
* __ensure_memory_to_run_unicorn: don't request wx memory

macOS systems with SIP enabled prohibit mmaping WX memory.
unicorn doesn't run into this issue because it uses the MAP_JIT
protection flag.

See also:
https://github.com/unicorn-engine/unicorn/blob/803fe5a47770360d1942de72600d3b295b521e31/qemu/accel/tcg/translate-all.c#L1021-L1032
https://github.com/pwndbg/pwndbg/blob/2f6b5bbaea484391f55850a09a16efda161498f2/pwndbg/aglib/disasm/__init__.py#L305-L316

* update changelog

---------

Co-authored-by: peace-maker <[email protected]>
2025-08-05 11:39:28 +00:00
peace-maker 425221fb30 Add Ubuntu and Debian debuginfod servers (#2595)
* Add Ubuntu and Debian debuginfod servers

Most CTF challenges are hosted on Ubuntu or Debian [citation needed], so check their debuginfod servers before trying the federating one as a fallback.

This is required since the elfutils.org server seems down for maintenance occasionally.

* Update CHANGELOG
2025-08-05 13:02:00 +02:00
Chaitanya RahalkarandPeace-Maker 004a6dab88 Add automatic detection of statically linked binaries in detect_missing_binaries function. (#2570)
* Add automatic detection of statically linked binaries in `detect_missing_binaries` function.

* Add entry for PR #2570 to CHANGELOG.md: fix `pwn template` for statically linked binaries.

* Remove partial test implementation

The commands should be tested end-to-end instead of using doctests (later).

---------

Co-authored-by: Peace-Maker <[email protected]>
2025-07-11 13:10:40 +02:00
Arusekk 6098f28bfa Merge branch 'stable' into beta 2025-04-02 18:00:52 +02:00
Arusekk 1205b1aaa3 regsort: respect register aliases (#2576)
Closes #2481
2025-04-02 15:57:59 +00:00
tesujiandArusekk ce6d2ca847 Fix invalid parsing of loader error message in elf.libc (#2567)
For example, on my machine:

  > ./main_no_flag
  ./main_no_flag: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by ./main_no_flag)

Co-authored-by: Arusekk <[email protected]>
2025-04-02 14:17:30 +02:00
Peace-Maker 9e0ca3a415 Move changelog entry to stable log 2025-03-30 12:21:08 +02:00
Daniel Kilimnik b60b2e897f SSH: fix download/upload with -1 exit status (#2545)
* SSH: fix download/upload with -1 exit status

* Add Changelog
2025-03-30 10:19:42 +00:00
Arusekk 2c3e783f96 Release 4.15.0beta1 2025-03-24 13:21:16 +01:00
Arusekk 15bdd4a766 Release 4.14.1 2025-03-24 13:01:50 +01:00
Arusekk 7c95e838f4 Merge branch 'stable' into beta 2025-03-24 12:15:36 +01:00
Maxime Meignan 92aa64ce01 Fixed bound on memcpy loop in thumb,arm,aarch64 (#2552) 2025-03-24 10:30:14 +00:00
peace-maker ae4bb08c3e Fix syntax highlighting of multiline comments in ASM (#2562)
Enable DOT_ALL next to the default MULTILINE regex flags to match newlines too with the `.*?`.
```
/* this works */
/*
this is not highlighted as a comment
*/
```
2025-03-21 20:55:23 +00:00
6739525ebe Show ELF symbols defined to value 0 (#2451)
Lets say we have an ELF with the following symbols

```
Symbol table '.symtab' contains 5 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 0000000000000035     0 NOTYPE  LOCAL  DEFAULT    2 aaaa
     2: 0000000000000022     0 NOTYPE  LOCAL  DEFAULT    2 bbbb
     3: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT    2 cccc
     4: 0000000000000054     0 NOTYPE  GLOBAL DEFAULT    2 dddd
```

Then pwnlib's ELF(binary).symbols will be `{'aaaa': 53, 'bbbb': 34, 'dddd': 84}`.
This is missing the symbol `cccc`, because its value is 0.

This change checks the name instead of the value, because the value can
be 0 if the symbol points to the beginning.

The new and correct value of pwnlib's ELF(binary).symbols will be
`{'aaaa': 53, 'cccc': 0, 'bbbb': 34, 'dddd': 84}`.

* Do not unresolve zeros
* Do not add undefined symbols

Co-authored-by: peace-maker <[email protected]>
Co-authored-by: Arusekk <[email protected]>
2025-03-21 11:34:33 +01:00
Arusekk d10b7aee4c Exclude broken Unicorn version (#2565)
Closes #2560
2025-03-19 08:47:55 +00:00
Arusekk aeb4c26bf0 Fix parsing corefile with missing auxv (#2559)
Closes #2543
2025-03-03 16:01:05 +00:00
Peace-Maker ec6b8cd87c Merge branch 'stable' into beta 2025-01-26 23:47:08 +01:00
Meetesh SainiandPeace-Maker b2345f214e fix: update apport coredump path handling for CorefileFinder (#2518)
* fix: update apport coredump path handling for CorefileFinder

* chore: update comment on Apport core path handling

* Update CHANGELOG

---------

Co-authored-by: Peace-Maker <[email protected]>
2025-01-26 22:28:14 +00:00
peace-maker e9d9bd9ddb Fix installation on Python 3.5 and lower on stable (#2533)
* Fix installation on Python 3.5 and lower on stable

The unix-ar package requires Python 3.6. Only install it on Python 3.6 then and use the Python 2 fallback for Python <= 3.5 too.

* Update CHANGELOG
2025-01-26 23:18:16 +01:00
Peace-Maker d7a7376eca Merge branch 'stable' into beta 2025-01-15 20:34:56 +01:00
Peace-Maker 9472ec1e93 Fix building docs on stable
Pin to Python 3.12.
2025-01-15 16:49:27 +01:00
peace-maker e4b939dc1a Poll before reading /proc/maps in process.libs() (#2516)
Try to avoid race condition of reading memory maps before libraries are loaded.
2025-01-15 16:49:02 +01:00
Peace-Maker c02190b5d4 Release 4.15.0beta0 2025-01-15 08:48:06 +01:00
Peace-Maker e341e238ca Release 4.14.0 2025-01-15 08:46:49 +01:00
Luca Bancale 7741a187ea Ignore a warning with unused args in asm on NIX (#2508)
* Ignore a warning when compiling with asm

* Add pr to changelog
2025-01-14 22:50:23 +01:00
Findus 4ef3c16d09 ssh: replaced nonexistent key with str(e) in error handling (#2512) 2025-01-06 22:43:21 +01:00
fb2ee19b90 Deprecate direct commandline scripts invocation and exclude nonsense ones (#2364)
* deprecate direct commandline scripts invocation and exclude nonsense ones

* Don't deprecate all commandline tools

---------

Co-authored-by: Arusekk <[email protected]>
Co-authored-by: Peace-Maker <[email protected]>
2024-12-10 22:47:47 +01:00
Jakub Nowakandpeace-maker 74a300db6c Deprecate 'keepends' argument in favor of 'drop' (#2476)
* Replace 'keepends' with 'drop'

Add 'drop' argument in place of 'keepends' for tubes. 'keepends' still
works but raises depreciation warning.

* changelog

* Ignore line numbers in PyLint check

---------

Co-authored-by: peace-maker <[email protected]>
2024-12-10 22:31:29 +01:00
peace-maker 57b9eb9107 Fix loading ELF files without valid .dynamic section (#2502)
* Fix loading ELF files without valid .dynamic section

This allows to load separate debuginfo files and access their symbols.

* Update CHANGELOG
2024-12-10 21:36:33 +01:00
Peace-Maker b2d56fa37c Merge branch 'beta' into dev 2024-12-10 21:17:16 +01:00
Peace-Maker a0ddbf5e16 Tests: Revert timeout changes from gdb tests
There were additional `timeout=X` additions in #2382 which caused tests to fail randomly when a timeout was reached. The tests run through occationally, so it's not an infinite loop. But flakey tests are annoying and I don't see a reason for the timeout additions to the doctests for the core patch of that PR other than failing early during manual tests of new functionality. CI running smoothly is more important than fast failing during development on the gdb module imo.
2024-12-10 20:34:39 +01:00
Peace-Maker 1be8ad7770 Merge branch 'stable' into beta 2024-12-10 20:34:14 +01:00
Peace-Maker 24d217cfbd Docs: Fix link to source for class properties
The property has setters and getters. Link to the getter if it's available. This adds line numbers to the source link for properties.

Fixes #2401
2024-12-09 13:09:10 +01:00
peace-maker ec262d8d01 Update sphinx for Python 3.13 support (#2503)
* Fix sphinx warnings in docstrings

* Update sphinx for Python 3.13 support

Could not import extension sphinx.builders.epub3 (exception: No module named 'imghdr')

`imghdr` was removed in Python 3.13.
2024-12-08 21:16:39 +01:00
Justin ApplegateandPeace-Maker 55ac6e11fc Update documentation for format strings (#2501)
* Update fmtstr.py documentation

Clarified that the `value` in the `writes` dict (for `fmtstr_payload()`) should be a bytestring if the value to be written is shorter than a long

* Update fmtstr.py documentation for FmtStr class

Updated example and definition for `write()` function in `FmtStr` class to include bytes as the value.

* Fix code formatting

---------

Co-authored-by: Peace-Maker <[email protected]>
2024-12-08 19:33:32 +01:00
Leopold 96d98cf192 fix fromsocket to deal with ipv6 socket (#2497)
* fix fromsocket to deal with ipv6 socket

* add remote.fromsocket ipv6 test and update CHANGELOG.md

* skip fromsocket ipv6 test
2024-11-01 13:36:30 +00:00
peace-maker 6f0793eebc Add tube.upload_manually to upload files in chunks (#2410)
* Add `tube.upload_manually`

Upload data in chunks when having a tube connected to a shell.
This is useful when doing kernel or qemu challenges where you can't use the ssh tube's file upload features.

* Add tests and fix corner cases

* Update CHANGELOG

* Fix character escaping in tests

* Fix gzip compression on Python 2
2024-10-28 21:11:36 +01:00
ckxckxandPeace-Maker 51cbdb465d Fix attaching to a gdbserver with tuple gdb.attach(('0.0.0.0',12345)) (#2291)
* Patch for #issues/2290

* Return listening process on `pidof(("0.0.0.0", 1234))`

Instead of returning the process which is connected to port 1234,
return the process which is listening on that port.

* Update CHANGELOG

---------

Co-authored-by: Peace-Maker <[email protected]>
2024-10-28 21:06:56 +01:00
Peace-Maker 61804b169b Merge branch 'beta' into dev 2024-10-24 23:28:53 +02:00
Peace-Maker 04e90bc754 Merge branch 'stable' into beta 2024-10-24 23:28:20 +02:00
Peace-Maker 8926a3a2bc Fix checksec commandline output after Python 3.12 fixes
This reverts #2346 which apparently didn't do what was expected. The logger has to be initialized for the checksec output to show up, so some other file imported * from pwn before too.
With the double registration of subparsers removed in f28d3ebb6c this didn't happen anymore making checksec print nothing.
2024-10-24 23:24:43 +02:00
peace-maker bb7a85c8df Allow to disable caching (#2484)
* Allow to disable caching

By setting `context.cache_dir = None`. Generate default cache dir again by setting `context.cache_dir = True`.

* Disable cache in `asm` caching test

* Update CHANGELOG

* Fix asm cache test
2024-10-24 17:04:50 +02:00
Peace-Maker 3303ea949d Merge branch 'beta' into dev 2024-10-24 16:44:19 +02:00
Peace-Maker cef48f4085 Merge branch 'stable' into beta 2024-10-24 16:32:29 +02:00
Peace-Maker 2ce27dab0d CI: Install coveralls without --break-system-packages
ubuntu-latest doesn't seem to point to Ubuntu 24.04 anymore? Allow this to work on Ubuntu 22.04 too.
2024-10-24 16:20:50 +02:00
Th3Sandpeace-maker fa14663243 libcdb-cli: add --offline-only, refactor unstrip and add fetch parser for download libc-database (#2478)
* Add `return_raw` for `search_by_symbol_offsets`

* Add `--offline-only` and unstrip libc as default behavior

* Add short arg name for `--download-libc`

* Fix bugs

* Add fetch parser

* Fix bugs

* file parse not unstrip default

* Update function docs

* Update CHANGELOG

* Edit dest of `--no-strip`

* Update CHANGELOG

* Unstrip before `return cache`

* Revert `--unstrip` help

* Improve `libcdb fetch` default behavior

* Perf fetch command

* Fix fetch command `-u`

---------

Co-authored-by: peace-maker <[email protected]>
2024-10-24 16:11:07 +02:00
peace-maker d2253110bd Add caching proxy for libcdb debuginfod files to CI (#2487) 2024-10-24 15:59:24 +02:00
peace-maker a3b22b748d Throw error when using sni and setting server_hostname manually in remote (#2482)
* Throw error when using `sni` and setting `server_hostname` manually in `remote`

Prevents silently replacing the `server_hostname` that was provided in `ssl_args`.

Fixes #2425

* Update CHANGELOG
2024-10-24 15:56:47 +02:00
peace-maker 584eccaa33 Only print checksec output of ELF.libc when it was printed for the ELF already (#2483)
* Only print `checksec` output of `ELF.libc` when it was printed for the `ELF` already

* Update CHANGELOG
2024-10-24 15:55:37 +02:00
robbert1978 7dceeddca8 Stop using cmd.exe to keep current directory (#2488)
* Stop using cmd.exe to keep current directory

* Update misc.py

* Update misc.py, deal with cmd.exe

* Update misc.py
2024-10-24 15:51:07 +02:00
Peace-Maker 34da249779 Bump Ubuntu versions in README and bug report template 2024-10-12 18:04:01 +02:00
Peace-Maker c68c00c316 Merge branch 'beta' into dev 2024-10-12 18:01:08 +02:00
Peace-Maker 2e86d8afe2 Merge branch 'stable' into beta 2024-10-12 17:48:59 +02:00
peace-maker f28d3ebb6c Test Python version >= 3.10 in CI and fix tests on Python 3.12 (#2486)
* Bump tested python version to >= 3.10

Some workflows were using 3.8 still. Start testing on 3.12 too.

* Fix installing rpyc in CI on ubuntu 24.04

`ubuntu-latest` now points to 24.04 which requires the --break-system-packages dance.

* Test Python 2 on Ubuntu 22.04

Ubuntu 24.04 dropped the python2.7 packages.

* Test on android-34

* Fix ARM binutils disassembly output test expectation

It used to print "; 0x4" but changed to "@ 0x4" in some version.

* Skip QEMU LD_PREFIX path test

Ubuntu 24.04 seemed to have switched the qemu-user --help output to show `/usr/gnemul/qemu-$ARCH` instead of `/etc/qemu-binfmt`. Ignore the actual path in the test.

* Fix x86 ascii shellcode encoder test

The alphabet was using `\` escape sequences badly.

<stdin>:1: SyntaxWarning: invalid escape sequence '\]'

* Fix mips xor encoder unaligned memory access

qemu throws a SIGBUS error when the shellcode tries to access unaligned memory since some version. Align the "stack" properly.

* Fix util.lists.partition test output on Python 3.12

The __repr__ output of OrderedDict was changed to look like ordinary {} dicts.

* Fix safeeval test on Python 3.12

There is a 151 RESUME opcode in Python 3.12 now.

* Fix registering commandline subparsers multiple times for Python 3.11

Python 3.11 added a sanity check to argparse to prevent registering the same subparser multiple times.

argparse.ArgumentError: argument command: conflicting subparser: cyclic

Avoid importing the command twice.
`python -m pwnlib.commandline.cyclic` failed on Python 3.11 triggered in CI when running the commandline tools while collecting coverage.

* Fix pip cache in CI
2024-10-12 17:48:12 +02:00
Lorenzo Cian cfc021d88e Extract libraries from Docker image (#2479)
* feat: extract libraries from Docker image

* docs: update CHANGELOG.md

* fix: python2.7 compatibility

* address comments

* address linter
2024-10-07 11:46:05 +02:00
Peace-Maker 9f92ed04fc Fix docs of ELF.{libs,maps}
Fixes #2400
2024-10-03 12:17:06 +02:00
k4lizen b08f4b7bc8 redirect kitty kill command stderr to /dev/null (#2472) 2024-10-01 19:37:52 +02:00
Peace-Maker d664bb49d4 Merge branch 'beta' into dev 2024-09-30 00:45:22 +02:00
Peace-Maker c0d6e07f1c Release 4.14.0beta1 2024-09-30 00:34:36 +02:00
peace-maker fa5a288a69 Fix waiting for gdb under WSL2 (#2470)
* Fix returning wrong pid in WSL for run_in_new_terminal

We run cmd.exe which and other Windows processes before going back into WSL. The returned pid would be the one for the ephemeral cmd.exe process instead of the real command we wanted to launch.

I don't know how to properly trace the execution and get the command pid, so scan for newer pids matching the command for a while instead as a workaround.

We wrap the command in a script so psutil.Process.exe() returns the path to the shell instead of the real command. Look at psutil.Process.cmdline() too which contains the real program running right now.

* Make `proc.wait_for_debugger` return the debugger pid

If we fail to get the pid when launching gdb, grab it after tracing the debugger at least. gdb won't be closed when the exploit exits but at least we have the correct pid.

* Fix working directory of run_in_new_terminal in WSL

The process' cwd would be %WINDIR% due to cmd.exe not supporting WSL paths.

* Update CHANGELOG
2024-09-30 00:27:40 +02:00
peace-maker 69ab2054e8 Fix collecting coverage in CI (#2477)
The upload-artifact action v4.4.0 excluded hidden files from uploads by default. We want to upload only hidden `.coverage*` files though. Enable hidden files again using the `include-hidden-files` input.

https://github.com/actions/upload-artifact/releases/tag/v4.4.0
2024-09-30 00:20:59 +02:00
Peace-Maker 907e921043 Merge branch 'beta' into dev 2024-09-30 00:08:31 +02:00
Peace-Maker a3f14df14d Merge branch 'stable' into beta 2024-09-29 23:56:06 +02:00
Peace-Maker 78dd777735 Release 4.13.1 2024-09-29 23:41:04 +02:00
Th3Sandpeace-maker ee63072930 libcdb: improve the search speed of search_by_symbol_offsets (#2413)
* Add `hash_type` for `search_by_symbol_offsets`

* Add docs

* Update CHANGELOG

* Allow search `id` in search_by_hash

* Fix py2.7 test

* Rename `hash_type` to `search_type`

* Rename `TYPES['id']` to `TYPES['libs_id']`

* Rename part `hex_encoded_id` to `search_target`

* Turbofast extract build id

* Fix docs

* Add a map for types key

* Extract proper buildid

* Fix docs

* Fix E0606

* Simplify get `mapped_type`

* Add `search_by_libs_id` to `__all__`

* Modify docs

* Fix py2.7

* Fix reference

---------

Co-authored-by: peace-maker <[email protected]>
2024-09-29 01:53:06 +02:00
Arusekk 824d67d8f4 gdb: fix pid attach (#2474) 2024-09-28 07:32:15 +00:00
k4lizen 785ed9fdda Properly close spawned kitty window (#2471)
* properly close spawned kitty window

* python2 support

* changelog
2024-09-27 09:23:06 +02:00
Jordan ERNST 5c1fb1d11b Fix: GDB 15.1 rpyc detection (#2469)
* Fix: GDB 15 rpyc detection

* Update CHANGELOG.md

* Changelog on the right version

* Remove extra newline in CHANGELOG.md
2024-09-26 22:25:04 +02:00
peace-maker cdfd64f6de Install pwntools on Windows and import it once (#2450)
This is just a basic smoke test for now.
2024-09-26 13:44:52 +02:00
peace-maker 3727c93859 Add ELF.close() to release resources (#2444)
* Add ELF.close() to release resources

`ELFFile.close()` just closes the mmap'd file, but our own wrapper keeps the file handle open.

This is annoying when using a temporary file on Windows since they can't be deleted if there is
a dangling handle. This can be used together with the inherited context manager from ELFFile.

* Update CHANGELOG
2024-09-26 13:41:18 +02:00
Peace-Maker bc453b46c3 Merge branch 'beta' into dev 2024-09-26 01:57:52 +02:00
Peace-Maker f47e417e4e Merge branch 'stable' into beta 2024-09-26 01:29:24 +02:00
peace-maker 7c79c73a5f Backport: Fix typo for fallback to default number of console colors on windows (#2467)
* Fix typo for fallback to default number of console colors on windows

* Update CHANGELOG
2024-09-25 23:20:04 +00:00
peace-maker 3e9849f0ca Fix PLT emulation with Unicorn 2.1.0 (#2466)
* Fix PLT emulation with Unicorn 2.1.0

You cannot add multiple hooks at once anymore, so add them individually - still to the same callback.

https://github.com/unicorn-engine/unicorn/blob/f164769a9a973a3e981f279ed7aa90459ae68545/bindings/python/unicorn/unicorn_py3/unicorn.py#L970-L976

* Update CHANGELOG

* Switch to PyPi Simple API for update checks

Fault: <Fault -32500: 'RuntimeError: PyPI no longer supports the XMLRPC package_releases method. Use JSON or Simple API instead. See https://github.com/pypi/warehouse/issues/16642 and https://warehouse.pypa.io/api-reference/xml-rpc.html#deprecated-methods for more information.'>

* Update CHANGELOG

* Disable ssh.user_shstk test

Github Actions Runners have userland shadow stack enabled now apparently.
Don't test for this system state.
2024-09-25 23:01:08 +00:00
peace-maker 149ebe0c47 Fix parsing the PLT on Windows (#2445)
* Fix parsing the PLT on Windows

The Unicorn Engine 1GB workaround doesn't work since `mmap` has different semantics on Windows.

* Update CHANGELOG

* Catch ImportError instead

* Remove unused sys import
2024-09-25 23:14:58 +02:00
tesuji d7817a7eac Nicely handle non ELF files in checksec (#2457) 2024-09-11 11:22:13 +02:00
patryk4815 df620d7449 darwin: generate syscalls sdk 15.1 (#2448) 2024-08-25 12:59:14 +02:00
peace-maker 67678c2e1c Cache output of asm() (#2358)
* Cache output of `asm()`

To speed up repeated runs of an exploit, cache the assembled output.

Use a sha1 hash of the shellcode as well as relevant context values
like `context.arch` and `context.bits` to see if the exact same
shellcode was assembled for the same context before.

Fixes #2312

* Return path to cache file if `not extract`

* Update CHANGELOG

* Create temporary copy of cached file

* Add debug log about using the cache

* Include full assembler and linker commandlines in hash

This should catch any changes across pwntools updates and system environment changes.

* Include pwntools version in hash
2024-08-12 20:59:22 +02:00
Peace-Maker 734cb3bf82 Begin working on 4.15.0 2024-08-12 19:45:10 +02:00
Peace-Maker adaa6abc08 Release 4.14.0beta0 2024-08-12 19:27:23 +02:00
Peace-Maker dbb034a867 Pin colored_traceback < 0.4 for Python 2 2024-08-12 18:39:04 +02:00
Peace-Maker 997e51c709 Release 4.13.0 2024-08-12 18:33:09 +02:00
Peace-Maker 3e21808da9 Cleanup CHANGELOG order 2024-08-12 18:13:05 +02:00
k4lizen 405357c075 Add resolution_addr parameter to Ret2dlresolvePayload (#2436)
* add documentation for data_addr and resolution_addr

* add resolution_addr

* changelog

* changelog^2
2024-08-09 12:33:38 +02:00
peace-maker 248f4510c6 Support asm/disasm on Windows (#2437)
* Support asm/disasm on Windows

Find binutils toolchains like https://gnutoolchains.com/ if they exist in the PATH.

* Update CHANGELOG

* Update binutils install docs

* cpp reads from stdin when no infile is given

No need for a tempfile here.
2024-08-08 14:13:37 +02:00
Peace-Maker de67c86432 Fix tty_escape on Python 2 2024-08-07 23:52:33 +02:00
Peace-Maker 101f9bc76b Add documentation for tty_escape 2024-08-07 23:27:05 +02:00
Peace-Maker 4879590a37 Fix typo for fallback to default number of console colors on windows 2024-08-07 00:14:54 +02:00
dependabot[bot] 7194ced044 Bump docker/build-push-action from 5 to 6 (#2420) 2024-08-06 14:17:36 +00:00
k4lizenandpeace-maker 6a9deffbfb Add functions for retrieving process mappings (#2371)
* add to process mapping function, and stack, heap, vdso, vvar, libc _mapping properties

* better libc string mapping detection #2370

* return all mappings instead of just the first one

* add single/multiple option to every _mapping function

* undo @property tags

* added function doc comments

* added elf_mapping

* add get_mapping and refactor helpers to use it

* better doc

* add _location functions

* _location_from_mappings for libc and musl locations

* _location_from_mappings doc

* change comment

* fix executable -> path

* change comment

* python2.7 support

* changelog

* add address_mapping()

* get_mapping comment typo

* mention the path is an exact match

* add references to wrapped functions

* add missing 'the's, make sentences one line, fix 'exact' path description in get_mapping_location

* add private and shared fields to permissions object

* maps doctest

* get_mapping doctest

* stack_mapping doctest

* heap_mapping doctest

* improve stack_mapping and heap_mapping with address example

* vvar and vdso _mapping doctest

* libc_mapping doctest

* elf_mapping doctest

* _location_from_mappings doctest

* get_mapping_location doctest

* heap and stack _location doctest

* vdso vvar _location doctest

* improved vdso and vvar doctest

* elf_location doctest

* libc_location doctest

* address_mapping bugfix

* address_mapping doctest

* fix meow check

* fix len(mappings) check

* actually fix meow check

* why dont docs support format string?

* removed _location functions

* removed the rest of the _location related functions

* added lib_size()

* add lib_size() example

* replace f'' with correct syntax

* remove _location() from other doctests

* cleanup == in doctest

* change " to ' in doctests

---------

Co-authored-by: peace-maker <[email protected]>
2024-08-06 11:10:10 +02:00
mephi42 26e72f2b3e gdb.debug: avoid 2s timeout if possible (#2435)
On Ubuntu 22.04 gdb.debug() takes at least 2 seconds. This is because
it prints only "Remote debugging from host 127.0.0.1, port 33398", but
the code expects 2 lines.

It's very unclear what the second line is supposed to be; the only lead
is "* Handle extra newline printed by gdb" in commit 338fbeba ("Improve
pwnup template, gdbserver detection (#1148)"), but I could not trace it
back to the GDB source code, both historic and modern. Perhaps, there
is a non-upstreamed patch in some distro that introduces it.

It should still be safe to skip waiting for the second line if the
first one already starts with "Remote debugging ...", so do it.
2024-08-05 13:05:25 +02:00
00663aa1bf Add port, gdb_args, and gdbserver_args to gdb.debug() (#2382)
* added two arguments to gdb.debug:
+ port: specifies the port that should be used by the gdbserver (this is useful for alpine)
+ gdb_args: allows forwarding arguments to the gdb binary spawned by gdb.attach() (just a passthrough)

aslo downgraded "GDB Python API is supported only for local processes" to a warning, because it seems to work on some systems.

* added changelog entry and fixed python2.7 compatibility

* also added optional gdbserver_args parameter to gdb.debug()

* implemented requested fixes for #2382:
+ gdb.debug port is now also used for qemu
+ GDB Python API is now tested for tubes.process.process a warning for ssh.process and an error for everything else
+ updated docs to use mention that gdbserver ports are randomized by default
+ now using gdbserver_port to check if the correct port was set
+ fixed CHANGELOG.md structure

* implemented requested fixes for #2382:
+ gdb.debug port is now also used for qemu
+ GDB Python API is now tested for tubes.process.process a warning for ssh.process and an error for everything else
+ updated docs to use mention that gdbserver ports are randomized by default
+ now using gdbserver_port to check if the correct port was set
+ fixed CHANGELOG.md structure
+ added timeouts for recvline() gdb tests
+ also run gdb api tests for ssh runner

---------

Co-authored-by: gfelber <@users.noreply.github.com>
Co-authored-by: peace-maker <[email protected]>
2024-07-23 13:53:35 +02:00
Peace-Maker 18c8bfba3d Pin colored_traceback < 0.4 for Python 2 2024-07-23 13:37:26 +02:00
Jakub Nowak 4284c3fcdf Improve remote() documentation (#2427)
* Improve remote() documentation

* changelog
2024-07-09 09:23:46 +02:00
Arusekk a366e91038 Add TTY escape function for file transfer (#2422) 2024-07-02 07:04:14 +02:00
CocoaandArusekk 736cf9d112 feat: multi shellcraft cmd (#2398)
* added support for multiple shellcraft commands

* updated CHANGELOG.md

* fix `pwn shellcraft -l shellcode`

* fix `get_template`

* strip strings after spliting by the delimiter

* fix `pwn shellcraft --show shellcode`

* added some tests in ci

* better handling for splitting by delimiter

---------

Co-authored-by: Arusekk <[email protected]>
2024-06-23 16:51:23 +02:00
peace-maker 4dc8d60b9e Add "none" ssh authentication method (#2405)
* Add "none" ssh authentication method

Allow to "disable" ssh authentication if the remote server has it enabled.

Fixes #2380

* Add CHANGELOG
2024-06-17 10:03:55 +02:00
Dvorhack d5fffb6769 Shellcode socket IPV6 (#2415) 2024-06-15 18:56:45 +02:00
Th3Sandpeace-maker 51e8eb09ee libcdb: add offline_only to search_by_symbol_offsets (#2388)
* Add `offline_only` for `search_by_symbol_offsets`

* Fix bug

* Update CHANGELOG

* Remove redundant code

* Update

---------

Co-authored-by: peace-maker <[email protected]>
2024-05-23 16:57:19 +02:00
Sanjit Kumarandpeace-maker e92a30bbf7 Convert bytes-like object to string in apport_corefile() method (#2387)
* converting bytes-like object to string

* updated changelog

---------

Co-authored-by: peace-maker <[email protected]>
2024-05-12 13:26:08 +02:00
peace-maker fcec11784a Fix access of undefined ssh._tried_sftp in raw mode (#2396)
* Fix access of undefined `ssh._tried_sftp` in `raw` mode

The attribute was never set when setting `ssh(raw=True)` which caused the code to run `ssh.__getattr__` which raised an AttributeError due to `_tried_sftp` starting with an `_` on Python 3.12.

* Document all `ssh` attributes
2024-05-12 11:31:46 +02:00
qux-bbb fe560c9835 Add sudo for apt-get (#2395) 2024-04-24 12:46:07 +02:00
Peace-Maker 27366fdeb8 Merge branch 'beta' into dev 2024-04-22 00:05:28 +02:00
Peace-Maker 5f79e1dc51 ci: Install rpyc from pip instead of apt
The apt package appears outdated and incompatible with the latest version on pypi.

>>> ValueError: invalid message type: 18
2024-04-21 23:44:04 +02:00
Peace-Maker af6c8c8878 gdb.debug: gdbserver --wrapper requires startup-with-shell
Only add it when we don't want to manipulate the environment or argv[0].
This will cause the problem with fish shell to reappear in those cases, but
it's another step for compatibility at least.

#2378
2024-04-21 23:31:29 +02:00
Peace-Maker 55390f1bf6 Merge branch 'stable' into beta 2024-04-21 22:46:36 +02:00
peace-maker f2f55f3e1c Return buffered data on first EOF in tube.readline() (#2376)
* Return buffered data on first EOF in tube.readline()

When there is still data available in the tube buffer when an EOFError occurs in
`tube.recvline()`, return that data even though it doesn't contain a newline.
The next time `tube.recvline()` is called afterwards will raise EOFError normally.

This behavior is in line with the GNU readline implementation and avoids
loss of data. It allows `tube.stream()` to print everything that's received before
the receiving end terminates.

A new warning is logged when data is returned due to an EOF informing
about the lack of the trailing newline character.

Fixes #2366

* Update CHANGELOG

* Add context.throw_eof_on_incomplete_line

Allow to control the behavior of `tube.recvline` and
be able to suppress the new warning.

* Cleanup docs
2024-04-21 22:37:46 +02:00
peace-maker db98e5edfb Don't go through a shell in gdb.debug (#2378)
* Don't go though a shell in `gdb.debug`

gdbserver starts a shell and runs the target process through it.
This behavior was added in gdbserver 8.0 together with the
commandline flag --no-startup-with-shell to disable it.

* Update CHANGELOG
2024-04-21 20:33:34 +00:00
peace-maker 60072487f1 Fix displaying bright color variation in terminal output (#2373)
* Recompute text.has_bright when num_colors changes

The number of simultaneous colors in the current terminal are queried
later during initialization and the text.num_colors attribute is updated accordingly.
The text.has_bright attribute wasn't updated when that happened and always
remained set to False. Calculate those properties based on num_colors dynamically.

* Update CHANGELOG

* Enable bright colors on Windows too

Only get "colors" on Windows to avoid #1201 again.

* Fix support for old terminals on windows
2024-04-21 22:24:35 +02:00
7ac5a34a59 Change from pop to keys for reporting proper error message (#2391)
* Change from pop to keys for reporting proper error message

* update changelog

* add doctest for xor

* Add newline to run xor doctests

* Switch to `dict.popitem()`

---------

Co-authored-by: marinelay <[email protected]>
Co-authored-by: Peace-Maker <[email protected]>
2024-04-21 22:22:46 +02:00
eec3321ae9 Fix passing bytes to context.log_file and crc.BitPolynom (#2389)
* Fix incosistent usage of bytes/str

* update changelog

* Update CHANGELOG

---------

Co-authored-by: marinelay <[email protected]>
Co-authored-by: Peace-Maker <[email protected]>
2024-04-21 22:18:28 +02:00
Lewis Watson d2a02a7b37 Updated Mac OS Install Documentation (#2392)
* Added Missing MacOS Requirements

* Updated Binutils Install Docs

Due to security reasons Homebrew has removed direct formula references, this is the workaround.

* Updated changelog for #2392

* reverting changelog
2024-04-21 22:14:55 +02:00
peace-maker c1ce1897df Fix duplicate definition of ssh.sftp (#2394) 2024-04-21 22:13:56 +02:00
peace-maker 5981c7290d Change newline when setting context.os to "windows" (#2330)
* Change newline when setting `context.os`

Windows uses `b'\r\n'` for newlines while unix uses `b'\n'`. Change the expected newline to `b'\r\n'` when setting `context.os = "windows"` automatically for convenience.

* Update CHANGELOG

* Fix other tests setting os
2024-03-29 17:52:34 +01:00
peace-makerandLevitatingLion cb540857cc Add basic RISCV64 shellcraft support (#2322)
* Add basic RISCV64 shellcraft support

The `mov` template isn't 100% null-byte and newline free
for all inputs. Certain larger values are just emitted using
the `li` pseudo-instruction by the assembler which might
contain null-bytes.

Co-authored-by: LevitatingLion <[email protected]>

* Generate RISCV syscall constants from musl-libc

diet-libc doesn't support RISCV, so borrow from musl.
Need to consider their license.

* Update CHANGELOG

* Fix CHANGELOG

---------

Co-authored-by: LevitatingLion <[email protected]>
2024-03-29 17:28:50 +01:00
peace-maker 8ba1bdf0b6 Add basic support to debug processes on Windows (#2327)
* Add basic support to debug processes on Windows

Currently only `windbg.debug()` and `windbg.attach()` are implemented,
which open a WinDbg instance and attach to the process.

* Update CHANGELOG

* Cleanup CheckRemoteDebuggerPresent call

Only require PROCESS_QUERY_INFORMATION access and check for errors when opening the process.

* process.close: Move closing of std fds after kill

Windows processes would block on fd.close() when the main thread is suspended.
2024-03-29 16:04:56 +01:00
Th3S 4ac98cd11a Add offline parameter for libcdb.search_by_hash series function (#2360)
* Add offline parameter

* Add CHANGELOG

* Rename `offline` to `offline_only`
2024-03-29 15:27:38 +01:00
Swastik Sarkar 75cc3c3d5c libcdb.unstrip_libc: debug symbols are fetched only if not present (#2374)
* libcdb.unstrip_libc: debug symbols are fetched only if not present

* Usage of `ELF.debuginfo` to check if debug symbols exist

closes #2324

---------

Signed-off-by: sswastik02 <[email protected]>

* Add CHANGELOG

Signed-off-by: sswastik02 <[email protected]>

---------

Signed-off-by: sswastik02 <[email protected]>
2024-03-24 13:19:31 +01:00
Peace-Maker a2acdf9bd9 Pin pyelftools<0.30 for Python 2 in docs/requirements.txt
Docs only installs fail under python2 due to trying to install pyelftools>=0.30 which dropped py2 support.

Fixes #2372
2024-03-22 20:32:57 +01:00
Pratik Raj 14c0d73f89 feat : use --no-cache-dir flag to pip in dockerfiles to save space (#2357)
using the "--no-cache-dir" flag in pip install, make sure downloaded packages by pip don't cache on the system. This is a best practice that makes sure to fetch from a repo instead of using a local cached one. Further, in the case of Docker Containers, by restricting caching, we can reduce image size. In terms of stats, it depends upon the number of python packages multiplied by their respective size. e.g for heavy packages with a lot of dependencies it reduces a lot by don't cache pip packages.

Further, more detailed information can be found at

https://medium.com/sciforce/strategies-of-docker-images-optimization-2ca9cc5719b6

Signed-off-by: Pratik Raj <[email protected]>
2024-03-07 13:38:36 +01:00
Th3S 3b4b261b5a Add local libc database provider for libcdb (#2356)
* Add local libc database provider for libcdb

* Remove unnecessary assert

* Add docstring for local_libcdb

* Suppress warning output while `context.libdb` sets default

* Testing the local system's libc first

* Set falsely `context.lcoal_libcdb` to turn off local libc-database integration

* Fix docstring

* Make path check in validator

* Fix doctests

* Add CHANGELOG
2024-03-01 13:01:09 +01:00
Peace-Maker 000c31c155 ci: Install rpyc from pip instead of apt
The apt package appears outdated and incompatible with the latest version on pypi.

>>> ValueError: invalid message type: 18
2024-02-25 14:39:51 +01:00
Peace-Maker 197f00806e Merge branch 'beta' into dev 2024-02-22 23:08:02 +01:00
Peace-Maker a06d378e8c Merge branch 'stable' into beta 2024-02-22 23:05:43 +01:00
Peace-Maker e1770a3045 Begin working on 4.14.0 2024-02-22 22:49:41 +01:00
Peace-Maker c983f1c232 Release 4.13.0beta0 2024-02-22 22:43:33 +01:00
Peace-Maker f046fdd93e Release 4.12.0 2024-02-22 22:15:10 +01:00
Peace-Maker eb7e2c3568 Merge branch 'beta' into dev 2024-02-22 22:01:37 +01:00
Peace-Maker 4c0e08c2c8 Merge branch 'stable' into beta 2024-02-22 21:59:14 +01:00
peace-maker 2b7ec5e77a Fix gdb and other doctests (#2355)
* Fix gdb.debug doctests

* Accept bytes in ssh.which

But still return a `str` return for backwards-compatibility.

* CI: Make rpyc visible in gdb's python

* Fix not running all doctests

They appear to have to be a free standing block of `>>>` with an empty line above.

* Remove unnecessary text type check in ssh.which
2024-02-22 18:30:23 +01:00
peace-maker c17f835b3e pwn template: Don't search for challenge binary when already given (#2354) 2024-02-21 15:21:57 +01:00
eriklefflerandPeace-Maker 1b47ae1c20 Add RETURN_CONST as an allowed _const_code in safeeval (#2352)
* better error message when process creation fails in ssh.process

* add RETURN_CONST as an allowed _const_code in safeeval

* fix lint

* add to changelog

* fix changelog

* add couldn't find python warning

* Deduplicate error message code

---------

Co-authored-by: Peace-Maker <[email protected]>
2024-02-20 18:28:20 +00:00
peace-maker eb0043afc6 Enable UI tests on dev branch again (#2353)
They might be more stable now after the term changes.
Ref #1647
2024-02-19 12:25:20 +01:00
d9b3e17b66 gdb.debug: exe parameter now respected, allow empty argv (#2233)
* Bugfix gdb.debug: exe parameter now respected

This commit now properly supports the exe parameter in
`pwnlib/gdb.py:debug()`, allowing a different argv[0] than the
executable.

It achieves this by leveraging the gdbsever`--wrapper` argument
with a python script that calls execve with the specified args.

* Backintegration for python2

* Update Changelog.md

* pwnlib gdb.py, try to pass these tests...

* Encode script in ssh.process(run=False) for tests

* Re-trigger Pull request tests

* gdb.py: easier script if argv[0] == exe

* gdb.py: Add test case for LD_Preload

* Add check that "=" not in misc.normalize_argv_env

This check checks prevents the use of "=" in the
key of an environment variable, which is generally
impossible.

* gdb.py Correct handling of LD_ env-variables

* Update pwnlib/gdb.py

Co-authored-by: peace-maker <[email protected]>

* gdb.py address comments

1. explicit ctypes.CDLL('libc.so.6'), handle execve failing
2. consistent namedTempFile
3. drop packing._encode() since it's done earlier
4. testcases solve argv-args confusion

* gdb.py: Fix Namedtempfile-prefix + Bugfix

* Restore prefix for gdbscript

* Unify execve wrapper script under one function

* gdb.py, Remove leftover script

* Fix logging scope and ignore_environ argument

---------

Co-authored-by: Youheng Lü <[email protected]>
Co-authored-by: peace-maker <[email protected]>
Co-authored-by: peace-maker <[email protected]>
2024-02-17 00:47:56 +01:00
peace-maker 2114692513 Fix readline omitting a trailing \n (#2349)
* Fix readline omitting a trailing \n

This is a regression from #2129 which was based on a bogus test which mixed `input` and `readline` calls.

Only `input` (and `raw_input`) are documented to strip the newline, but `readline` itself should include it.

Fixes #2342

* Update CHANGELOG
2024-02-16 23:43:19 +01:00
Peace-Maker b5e4ff137a Android: Install emulator in CI and switch to x86_64 platform 2024-02-16 23:11:12 +01:00
Peace-Maker c049837c54 Update docs for running doctests locally 2024-02-14 21:08:06 +01:00
Disconnect3dandpeace-maker 9e4b11adb7 Fix Unicorn Engine 1GB limit that calls exit: raise OSError instead (Fixes #2343) (#2347)
* Fix Unicorn Engine 1GB limit exit(): raise OSError instead (Fixes #2343)

This commit fixes #2343: an issue where `pwn checksec <binary>` would fail with a bogus error of:

```
$ pwn checksec /root/x/bin/main
Could not allocate dynamic translator buffer
```

This actually comes from Unicorn Engine which tries to allocate a 1GB RWX mapping:
```
root@pwndbg:~# strace -e openat,mmap pwn checksec /root/x/bin/main 2>&1 | tail -n 10
openat(AT_FDCWD, "/usr/lib/python3/dist-packages/mpmath-0.0.0.egg-info/PKG-INFO", O_RDONLY|O_CLOEXEC) = 7
openat(AT_FDCWD, "/usr/local/lib/python3.10/dist-packages/unicorn/lib/libunicorn.so.2", O_RDONLY|O_CLOEXEC) = 7
mmap(NULL, 22447520, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 7, 0) = 0x7f2604f9d000
mmap(0x7f2605339000, 13496320, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 7, 0x39c000) = 0x7f2605339000
mmap(0x7f2606018000, 3039232, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 7, 0x107b000) = 0x7f2606018000
mmap(0x7f26062fe000, 1601536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 7, 0x1360000) = 0x7f26062fe000
mmap(0x7f2606485000, 525728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2606485000
mmap(NULL, 1073741824, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
Could not allocate dynamic translator buffer
+++ exited with 1 +++
```

...and if it fails, it calls `exit()`. This can be seen in Unicorn Engine code: https://github.com/unicorn-engine/unicorn/blob/56f3bdedb42d26bee1532cc01baf5eaf44a9aa23/qemu/accel/tcg/translate-all.c#L960-L963

This issue has been reported to Unicorn Engine in https://github.com/unicorn-engine/unicorn/issues/1766 but since it hasn't been fixed, this commit applies a workaround for it.

* CI: add test for pwn checksec with 500MB limit for UE 1GB limit

* Add changelog entry

* Update .github/workflows/ci.yml

---------

Co-authored-by: peace-maker <[email protected]>
2024-02-09 16:39:12 +01:00
47dfc57922 Add a flatten argument to ssh.libs (#2268)
* Add a `flatten` argument to `ssh.libs`

This option makes us able to avoid getting the file tree of the remote
server and just downloads the desired files in the output folder

* Update changelog

* Add a warning in ssh.libs for duplicate filenames

* Add documentation in ssh.libs for duplicate filenames fallback

* [ssh.libs] Fix flatten's duplicate check

Fix this: https://github.com/Gallopsled/pwntools/pull/2268#discussion_r1325404026

* [ssh.libs] Add better warning for flatten's duplicates

Fix this: https://github.com/Gallopsled/pwntools/pull/2268#discussion_r1325405234

* [ssh.libs] Add doctests

This commit adds:

- The `no_duplicate` binary that depends on
    - `a/lib.so`
    - `b/lib2.so`
- The `duplicate` binary that depends on
    - `a/lib.so`
    - `b/lib.so`

Then, the doctest tries to pull the libs from both binaries with
different `flatten` values.

* [ssh.libs] Add `remote` arg to documentation

* [ssh.libs] Remove fallback to unflattened when flatten fails

* [ssh.libs] Fix doctests

* [ssh.libs] Import pwnlib.data.elf.ssh_libs in pwnlib.data.elf

* [ssh.libs] Fix corrupted binaries

* [ssh.libs] We actually need to set the cwd since libs paths are relative

* [ssh.libs] Fix permission issues for CI

* [ssh.libs] Fix doctest

* Remove doctest attempts

---------

Co-authored-by: peace-maker <[email protected]>
Co-authored-by: Arusekk <[email protected]>
Co-authored-by: Peace-Maker <[email protected]>
2024-02-09 16:06:26 +01:00
Peace-Maker f5a119ffe5 Fix checksec commandline wrapper invocation 2024-02-09 10:56:14 +01:00
Peace-Maker 545d8f748a Remove f-string for Python 2 2024-02-08 10:41:47 +01:00
Stefan StefanovandBl4ckC4t a2b6771fe6 Improved DynELF address resolutions and symbol lookups (#2335)
* Optimized dynelf when using an ELF object

* Fixed minor bugs, added a new way to lookup symbols

Improved _rel_lookup and added Elf64_Rel datatype

Added support for _rel_lookup in x86 binaries

* Spelling fix

* Converted prints to python2 style

    + changelog entry

* Fixed a bug with real leaker not being resotred

---------

Co-authored-by: Bl4ckC4t <[email protected]>
2024-02-08 10:24:51 +01:00
teddavandpeace-maker 73f2a31d8b fix: split current iterm window during gdb.debug process (#2341)
* fix: split current iterm window during gdb.debug process

* add change to changelog

* escape cmd before writing osascript file

* use the previously sanitized command to run the osascript

---------

Co-authored-by: peace-maker <[email protected]>
2024-02-08 10:22:15 +01:00
Disconnect3d 604b98c035 Fix pwn constgrep when it matches a non-constant type (Fixes #2344) (#2345)
* Fix pwn constgrep when it matches a non-constant type

This commit fixes the following issue:

```
root@pwndbg:~# pwn constgrep a
Traceback (most recent call last):
  File "/usr/local/bin/pwn", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.10/dist-packages/pwnlib/commandline/main.py", line 58, in main
    commands[args.command](args)
  File "/usr/local/lib/python3.10/dist-packages/pwnlib/commandline/constgrep.py", line 110, in main
    for _, k in sorted(out):
TypeError: '<' not supported between instances of 'Constant' and 'type'
```

Note that it was caused because of the following type object being matched and fetched from the module object:

```
ipdb> out[25:27]
[(Constant('CS', 0xd), 'CS'), (<class 'pwnlib.constants.constant.Constant'>, 'Constant')]
ipdb> sorted(out[24:27])
*** TypeError: '<' not supported between instances of 'type' and 'Constant'
```

* Add test for `pwn constgrep C` to the CI

* Add changelog entry
2024-02-08 10:17:47 +01:00
Disconnect3d 3fbd21a6e4 checksec.py: import ELF instead of * (#2346) 2024-02-08 10:15:29 +01:00
Arusekk b2cba039d4 Merge pull request #2161 from patryk4815/basic-darwin
basic darwin support for shellcrafter
2024-02-04 16:34:56 +01:00
Arusekk 10d1c5a1ab Merge branch 'dev' into basic-darwin 2024-02-04 16:24:02 +01:00
psondej 954d54665f #2161 Add basic support for darwin shellcraft/asm/disasm/run_shellcode/run_assembly 2024-02-04 16:22:02 +01:00
psondej e78fb02b9e -macosx_version_min has been renamed to -macos_version_min 2024-02-04 03:15:02 +01:00
peace-maker bf7abc054a Add ELF.stripped and ELF.debuginfo properties (#2336)
* Add `ELF.stripped` and `ELF.debuginfo`

Show status in checksec output too.

* Update CHANGELOG

* Show stripped and debuginfo status in red in checksec
2024-01-30 12:40:28 +01:00
peace-maker 27bc31e978 Match against local system libc first in libcdb (#2325)
* Match against local system libc first in libcdb

Don't do any requests if the libc currently in use on the system
running the exploit matches already. This is a small short circuit
optimization when the remote target uses the same libc as the
local one.

This looks at the libc loaded by the local shell binary. This appears
more dynamic than hardcoding library paths.

Refs #983

* Update CHANGELOG

* Handle missing SHELL envvar

* Fix hash lookup
2024-01-30 12:20:20 +01:00
peace-maker 993f590ac2 Retry failed lookups after one week in libcdb (#2323)
* Retry failed lookups after one week in libcdb

The libc databases might be updated to include the searched version,
so a request that failed once might work in the future.

Refs #983

* Update CHANGELOG
2024-01-30 11:29:31 +01:00
peace-maker e466f5c2a6 Make sure TERM_PROGRAM points to a valid program (#2329)
Visual Studio Code sets the $TERM_PROGRAM environment variable to `"vscode"` in its terminal pane,
but doesn't support opening new panes from the command line and there is no "vscode" binary.

Make sure the target binary exists before trying to launch it.
2024-01-30 11:08:57 +01:00
Nils1729 171d9dfb39 Fix: Allow setting attributes on gdb Breakpoints (#2339)
* fix: Allow setting attributes on gdb Breakpoints

* Update CHANGELOG

* Add __getattr__ accidentally deleted from FinishBreakpoint
2024-01-29 17:20:31 +01:00
teddav cb3fda4a7e fix: follow symlink for libs() on ssh connection (#2338) 2024-01-23 00:24:58 +01:00
dependabot[bot] 4e11ee7d99 Bump actions/cache from 3 to 4 (#2337) 2024-01-22 12:17:27 +00:00
Arusekk f6bee59b46 elf.maps: Less nullbytes + update hardcoded shellcodes 2024-01-22 13:06:10 +01:00
peace-maker 6dc1c2f72f Explicitly define p64/u64 functions for IDE support (#2189)
* Explicitly define p64/u64 functions for IDE support

Instead of dynamically generating the packing and unpacking helper functions using `setattr(module, name, routine)` at runtime, unroll the loop and explicitly declare all 8 helpers.

This allows IDEs to know about the function statically without running the code.

Fixes  #1657

* Update CHANGELOG

* Fix u16 comment
2024-01-21 18:22:09 +01:00
Arusekk 14309dc111 elf.maps: Update hardcoded shellcodes 2024-01-21 12:14:53 +01:00
Arusekk b5253fa510 shellcraft.amd64.mov: fix logic once again 2024-01-21 05:19:41 +01:00
Arusekk ea22cc8cef shellcraft.amd64.mov: fix logic 2024-01-20 22:39:34 +01:00
peace-maker d427844465 Lookup using $PATHEXT file extensions in which on Windows (#2328)
* Lookup process executable using PATHEXT file extensions

Windows uses some file extensions to determine which file to run when given
a non-existing file.

This allows to run `calc` instead of `calc.exe`.

* Try PATHEXT in `which` directly

* Update CHANGELOG
2024-01-18 00:57:43 +01:00
Peace-Maker 7b78334ac4 Android: Install emulator in CI 2024-01-17 21:57:38 +01:00
vsylandPeace-Maker 5805f5e9d7 Speed up disasm with color (#2334)
* Speed up disasm with color

* Update CHANGELOG

---------

Co-authored-by: Peace-Maker <[email protected]>
2024-01-17 21:44:52 +01:00
vsylandArusekk 000ca1f637 Fix unhex for odd length bytes (#2333)
* Fix unhex for odd length bytes

* Update pwnlib/util/fiddling.py

---------

Co-authored-by: Arusekk <[email protected]>
2024-01-13 17:47:51 +01:00
Arusekk 0339b46450 Update pwnlib/elf/corefile.py 2024-01-03 21:26:12 +01:00
Arusekk ad6ef0e372 Update pwnlib/shellcraft/templates/aarch64/mov.asm 2024-01-03 21:25:42 +01:00
psondej a814be2604 refactor aarch64 pushstr_array, use "xzr" reg 2024-01-03 19:40:05 +01:00
psondej bc6228e8bc fix freebsd amd64 syscall arguments 2024-01-03 18:56:14 +01:00
psondej 976f7cc175 revert "powerpc64" typo 2024-01-03 18:37:38 +01:00
psondej 15748d082d fix aarch64: mov, pushstr, pushstr_array
fixes:
- https://github.com/Gallopsled/pwntools/issues/2160
- https://github.com/Gallopsled/pwntools/issues/2284
2024-01-03 18:34:26 +01:00
psondej 8b56039d88 add auto generated files for darwin (make generate_darwin) 2024-01-03 18:28:05 +01:00
psondej 5d32b24998 add darwin shellcrafter templates 2024-01-03 18:27:33 +01:00
psondej 43aef76a37 initial darwin support 2024-01-03 18:26:36 +01:00
dependabot[bot]andArusekk d289e177fe Bump actions/upload-artifact from 3 to 4 (#2318)
* Bump actions/upload-artifact from 3 to 4

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>

* ci: use separate coverage artifacts

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Arusekk <[email protected]>
2024-01-03 12:23:39 +01:00
peace-maker c4a3d349d6 Add support to start a process on Windows (#2310)
* Add support to start a process on Windows

This is heavily inspired by https://github.com/masthoon/pwintools

Allows to use the `process` tube on a Windows host running local
processes. I've tried to keep the changes at a minimum. Windows doesn't
support non-blocking reads, so I've opted to handle the reading in a
separate thread to simulate the non-blocking check.

* Fix `misc.which()` on Windows

`os.getuid()` is only supported on unix.

* Support [read|write]mem, libs and cwd

* Update CHANGELOG

* Don't cache loaded modules

* Wait output on stdout in `process.can_recv_raw`

Instead of handling the timeout for reading poorly in `process.recv_raw`,
wait for any bytes to be available in `process.can_recv_raw` like on linux.

This prevents a 100% spin of one core in `tube.interactive()` since it
expects the thread to block for `timeout` seconds while we would return
immediately previously.

* Remove PythonForWindows dependency

This loses the `readmem` and `writemem` feature, but that's not
necessary for this basic process startup support.

* Fix cyclic imports

* Ignore errors in reading thread

This could cause a deadlock / fastfail on shutdown when stdout is closed, thus read(1) fails
and the exception is tried to be printed to the console while stderr is in the process of getting
closed.
2024-01-02 21:11:57 +01:00
Lennard Hofmann 3bb756db45 Add timeout to gdbserver startup (#2321) 2024-01-02 15:40:09 +01:00
Florian Kothmeierandpeace-maker cd0c34a6ed Make pwn template always set context.binary (#2279)
* Make pwn template always set context.binary

* Update CHANGELOG.md

* Allow args.EXE override in all templates

* Fall back to old behavior for remote only challenges

---------

Co-authored-by: peace-maker <[email protected]>
2023-12-30 19:35:29 +01:00
Arusekk 5409174aed elf/corefile: Clean up pyelftools workarounds (#2319) 2023-12-30 00:01:07 +01:00
c7649c95e2 Make sure winexec shellcode is 16 byte aligned and add nCmdShow option (#2308)
* Make sure winexec is 16 byte aligned and add nCmdShow option

* fix typo and add changelog

* Update pwnlib/shellcraft/templates/amd64/windows/winexec.asm

Co-authored-by: peace-maker <[email protected]>

* tidied up winexec 16-byte alignment

* fix stack alignment on return

* Use stable alignment

* Avoid null-bytes in `add` instruction for long commands

---------

Co-authored-by: peace-maker <[email protected]>
Co-authored-by: Arusekk <[email protected]>
2023-12-14 16:39:36 +01:00
peace-maker 8367da6500 Bump unicorn dependency to >=2.0.1 (#2315)
* Bump unicorn dependency to >=2.0.1

We're using riscv constants now which were added in unicorn2.

Fixes #2303

* Add RISCV64 plt emulation test binaries
2023-12-14 16:29:46 +01:00
dependabot[bot] b9cece5526 Bump actions/setup-python from 4 to 5 (#2316) 2023-12-12 21:39:27 +00:00
Peace-Maker 95fd121e1f android: suppress filenotfound error when looking for partitions 2023-12-12 21:31:49 +01:00
Peace-Maker 8ec092522e android: fix tests for amd64 emulator 2023-12-12 21:11:30 +01:00
Peace-Maker 8baa27e7a6 android: switch to x86_64 emulator
armeabi-v7a crashes :(
2023-12-12 20:24:02 +01:00
Arusekk d094156606 android: disable accel 2023-12-12 19:57:58 +01:00
peace-makerandArusekk 5f5554fa1c Detect challenge binary and libc in pwn template (#2309)
* Detect challenge binary and libc in `pwn template`

When the `args.exe` or `args.libc` arguments are missing, look for the
files in the current working directory.
This allows to quickly get a template by just running `pwn template`
(and maybe --host --port for remote instances).

This is inspired by https://github.com/io12/pwninit

* Update CHANGELOG

* Add --no-auto argument to disable automatic detection

Allow to keep the old static template behavior.

* Add logging about detection outcome

Inform the user that we're looking for the binaries and if we found one.

* Be more strict about libc filename detection

Check about common name patterns instead of plainly the presence of "libc" in the name.

Co-authored-by: Arusekk <[email protected]>

* Change --no-auto argument to reduce double negation

Co-authored-by: Arusekk <[email protected]>

---------

Co-authored-by: Arusekk <[email protected]>
2023-12-12 19:02:13 +01:00
Peace-Maker 0c6d5f5e71 android: Disable emulator GPU
Android Emulator 33.1.23 received a Graphics backend upgrade
2023-12-11 23:35:55 +01:00
Peace-Maker fbce30675a Enable unprotected grpc in Android tests
WARNING | The emulator now requires a signed jwt token for gRPC access! Use the -grpc flag if you really want an open unprotected grpc port
2023-12-11 23:04:08 +01:00
Arusekk 6f4682a41a android: enable kvm 2023-12-11 20:00:50 +01:00
Arusekk 07ea0fa185 term: hotfix 2023-12-11 18:41:15 +01:00
Arusekk 84b6c82ff3 term: simplify even further 2023-12-11 18:10:21 +01:00
peace-maker b1e2b56445 Nicer error when running tmux exploit outside tmux (#2314)
When you set the `context.terminal` to be tmux related but then try
to run the exploit outside a tmux session, you'd get a cryptic ValueError
while trying to parse the pid of the new pane in tmux.

Print a nicer reminder to start tmux first.
2023-12-06 23:48:33 +01:00
peace-maker b3d40438fb Fix support for amd64 x32 ABI (#2305)
* Add back support for amd64 x32 ABI

Recognize x32 ELF files as amd64.

* Add x32 test binaries

Regressed in fbf2727ac6
2023-12-04 20:18:20 +01:00
Arusekk 43071cd6e5 Term rework (#2242)
* term rework

* towards floating cells

* redraw when screen clears

* term: working completion

* Display non-printable characters

* ui: fix options with new term

* term: Clean up and fix examples/spinners

* changelog and lint

* Fix SSH in NOTERM mode

* defer termios setup

* term: py2 compat

* py2: compat fixup

* appease pylint

* fix scroll on winch

* term: fix hang on winch during readline
2023-12-02 13:31:40 +01:00
Michal AmbrozandPeace-Maker a8f4093695 Fix pwn libcdb file crashing if "/bin/sh" string was not found (#2307)
* next fails if string is not found in binary

fixes #2306

* Only display "str_bin_sh" symbol if it's available

* Update CHANGELOG

---------

Co-authored-by: Peace-Maker <[email protected]>
2023-11-29 22:29:35 +01:00
peace-maker f03582fb92 Explicitly select readthedocs theme (#2311)
The `sphinx_rtd_theme` has to be selected manually and isn't the default
on RTD anymore. This seems to be part of a wave of deprecations in their
build system.

https://github.com/readthedocs/tutorial-template/blob/f594c40889a4d9949339bd4e0d64275fc99c22f5/docs/source/conf.py#L32
2023-11-29 16:08:55 +01:00
d10c70fb32 Allow to add to the existing environment in ssh instead of replacing it (#1764)
* Add env_add to the ssh module

* Use ignore_environ like process

---------

Co-authored-by: peace-maker <[email protected]>
Co-authored-by: Arusekk <[email protected]>
2023-11-25 17:08:48 +01:00
65f9d5761d Allow to add to the existing environment in process instead of replacing it (#1763)
* Add env_add to the process module

* Don't mutate passed `env` parameter dictionary

Co-authored-by: Arusekk <[email protected]>

* Update CHANGELOG

* Use a boolean flag instead of env_add

There should be preferably only one obvious way to pass env.

* Update CHANGELOG

---------

Co-authored-by: peace-maker <[email protected]>
Co-authored-by: peace-maker <[email protected]>
Co-authored-by: Arusekk <[email protected]>
2023-11-24 14:02:53 +01:00
Michal AmbrozandPeace-Maker 4ef4746243 Remove python2 shebang lines from commandline tools (#2301)
* remove python2 shabangs

* Remove execute bit from commandline implementation

---------

Co-authored-by: Peace-Maker <[email protected]>
2023-11-24 13:37:29 +01:00
Michal Ambrozandpeace-maker 77957b4b41 Fix SyntaxWarning in Python 3.12 (#2302)
* libcdb.py - python 3.12

Python 3.12 would complain if the \d atom is not escaped in the binary string.

/usr/lib/python3.12/site-packages/pwnlib/commandline/libcdb.py:224: SyntaxWarning: invalid escape sequence '\d'
  libc_version = re.search(b'libc[ -](\d+\.\d+)', exe.data)

* Use raw string

---------

Co-authored-by: peace-maker <[email protected]>
2023-11-24 13:32:08 +01:00
Arusekk bb1d16c3c6 rop: Make stack move faster (#2300)
This defers calculation of all 'add (e|r)sp, 0xHUGE' payload until the gadget
gets actually used in a chain.

Fixes #2253
2023-11-20 15:31:42 +01:00
Arusekk e4d3c82501 ssh: Fix unstable cpuinfo on dynscaled CPUs 2023-11-14 23:41:41 +01:00
ArusekkandMichał Radwański 2f2e0dc48c elf: Resolve more relocations into GOT entries (#2277)
So far only relocations pointing to external symbols were considered
when filling GOT.  Relocations in libc are a different thing, often
found in CTF challenges (libc with partial RELRO has many interesting
overridable function pointers, like strlen & strchrnul).

Co-authored-by: Michał Radwański <[email protected]>
2023-11-14 23:13:21 +01:00
peace-maker b53d476977 Add x86 CET status to checksec output (#2293)
* Add x86 CET status to checksec output

The ELF class now features two properties:
- ibt for indirect branch tracking `-fcf-protection=branch`
- shstk for shadow stack `-fcf-protection=return`

Both checking the presence of the respective feature bit in the
note property x86 feature segment.

* Check if user shadowstack is enabled on SSH target

Look for "user_shstk" in /proc/cpuinfo for ssh.checksec()

* Add ELF.iter_notes and ELF.iter_properties helpers

Allows to easily iterate the PT_NOTE segment and the properties in "GNU"
notes.

* Check for ibt on remote ssh machine

* Update CHANGELOG

* Suppress error when /proc/cpuinfo cannot be read
2023-11-14 21:08:55 +01:00
Arusekk 0bf914e9e2 Merge branch 'beta' into dev 2023-11-14 20:59:20 +01:00
Arusekk 1b21f7a043 Release 4.12.0beta1 2023-11-14 20:15:36 +01:00
Arusekk 2e09b7dd91 Release 4.11.1 2023-11-14 20:01:02 +01:00
Arusekk 89650ace0d Merge branch 'beta' into dev 2023-11-14 19:48:03 +01:00
Arusekk d643a33233 Merge branch 'stable' into beta 2023-11-14 19:47:35 +01:00
peace-maker 8d6dc0b121 Python 2: Fix installing from source (#2298)
* Python 2: Fix installing from source

`python2.7 -m pip install git+https://github.com...`  doesn't install
any packages.

The auto-discovery doesn't work for the old setuptools version used in
Python 2.
https://setuptools.pypa.io/en/latest/userguide/package_discovery.html#flat-layout

* Use Python 3 commandline tools in Docker images

Since the Python 2 version was installed first, the Python 3 install
didn't touch the existing shell script wrapper files.
2023-11-14 19:44:05 +01:00
Arusekk a7c03851fe Merge branch 'beta' into dev 2023-11-01 23:44:23 +01:00
Arusekk 2f58fe7ae5 Merge branch 'stable' into beta 2023-11-01 23:44:00 +01:00
Arusekk 64d52b09f3 shellcraft.aarch64: Fix atexit SEGV in loader (#2294)
Fixes #2289
2023-11-01 22:26:43 +00:00
Arusekk 5ff96409fc Merge branch 'beta' into dev 2023-10-29 16:30:25 +01:00
Arusekk 8cf3ecdc5b Merge branch 'stable' into beta 2023-10-29 16:30:08 +01:00
Kexuan Shen 0c1121d32c FIX: Generated shebang with path to python invalid if path contains spaces (#2285)
* modify script shebang to accept path with white space

* add changelog for 2271
2023-10-29 14:38:57 +00:00
peace-makerandArusekk dafd42b2c3 Fix tube.clean_and_log not logging buffered data (#2272)
* Fix tube.clean_and_log not logging buffered data

Only new data received after the `clean_and_log` call is printed while
data already received and buffered earlier is not.
Print the buffered data first before waiting for more so we don't miss
anything.

* Only show buffered data if DEBUG is off

* Update CHANGELOG.md

---------

Co-authored-by: Arusekk <[email protected]>
2023-10-29 14:05:16 +00:00
Tanix 3ff37a8b7e Fix _countdown_handler not invoking timeout_change; Fix value is value < 0 (#2287) 2023-10-29 11:23:31 +00:00
Arusekk 48fbffe449 Merge branch 'beta' into dev 2023-10-01 14:07:45 +02:00
Arusekk e9f73bf440 Merge branch 'stable' into beta 2023-10-01 13:48:12 +02:00
Gordiig 045b8c2186 FIX: Getting right amount of data for search fix (#2281) 2023-10-01 13:47:30 +02:00
Gordiig 32840ad806 FIX: Getting right amount of data for search fix (#2281)
* Getting right amount of data for search fix

* Add line to CHANGELOG.md
2023-10-01 13:39:11 +02:00
dependabot[bot] 81d17c701c Bump docker/login-action from 2 to 3 (#2274)
Bumps [docker/login-action](https://github.com/docker/login-action) from 2 to 3.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 18:48:47 +02:00
dependabot[bot] dd6b754453 Bump docker/setup-buildx-action from 2 to 3 (#2275)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 18:48:28 +02:00
dependabot[bot] 57d810acb1 Bump docker/build-push-action from 4 to 5 (#2273)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4 to 5.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-23 18:48:05 +02:00
Peace-Maker fd50d4c995 Begin working on 4.13.0 2023-09-16 00:44:57 +02:00
Peace-Maker 01e6970971 Release 4.12.0beta0 2023-09-16 00:20:18 +02:00
Peace-Maker 6aaaf84586 Release 4.11.0 2023-09-15 23:16:19 +02:00
92cd96999f Allow empty argv in ssh.process() (#2217) (#2234)
* Fix bug at ssh.py:process() - empty argv[0] Error

Before this, process.py relied on `os.execve` which disallows an empty
argv or argv[0] == "".
This commit replaces `os.execve` with  `ctypes.CDLL(None).execve` to
call the C-Library function directly which allows an empty argv.

* Add #2225 to stable changelog

* Better ctypes syntax

* Add error message if cytpes.execve fails.

* Updata CHANGELOG.md

* ssh.py: python2 compatibility for os.environb

* Add check that "=" not in misc.normalize_argv_env

This check checks prevents the use of "=" in the
key of an environment variable, which is generally
impossible.

* ssh.process: Seperate cases for empty argv[0]

This commit seperates the cases for an empty argv[0]
from normal cases.

* ssh.py delete leftover comment

---------

Co-authored-by: Youheng Lü <[email protected]>
Co-authored-by: Arusekk <[email protected]>
Co-authored-by: peace-maker <[email protected]>
2023-09-15 01:10:14 +02:00
Hannes WeissteinerandHannes Weissteiner 8b86cc3ba6 Allow creating custom templates in user-config directory (#2257)
* Allow creating custom templates in user-config directory

* Update changelog

* add cmdline parameter for template

* direct template file selection, added more help

* added template path to help string

* remove testing template

* allow crash on invalid template file

* python2 compatibility

* improved documentation for template

---------

Co-authored-by: Hannes Weissteiner <[email protected]>
2023-09-13 18:03:29 +02:00
dependabot[bot] 20f07795f0 Bump actions/checkout from 3 to 4 (#2265)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-12 19:00:26 +02:00
Peace-Maker d12d2ea78c Merge branch 'beta' into dev 2023-09-12 13:37:43 +02:00
Peace-Maker 2d998a4082 Merge branch 'stable' into beta 2023-09-12 13:15:04 +02:00
peace-maker 8be72238b0 Rename wd parameter to cwd in ssh.system and ssh.run_to_end (#2251)
The current working directory should be called the same everywhere.
The `wd` argument is deprecated and `cwd` takes precedence.
2023-09-12 09:37:27 +02:00
peace-maker d762fe0c31 Fix corefile module after pyelftools update (#2261)
* Fix corefile module after pyelftools update

The `bytes2str` internal method was moved while Python 2 support was
removed in pyelftools 0.3.0.
Just use our own python aware decoder wrapper.

Fixes #2260

* Pin pyelftools < 0.3 for Python 2

* Fix pyelftools version number scheme

* Update CHANGELOG
2023-09-12 09:27:40 +02:00
Arusekk e608a46490 Merge branch 'beta' into dev 2023-08-20 20:54:18 +02:00
Arusekk fa2d47753b Merge branch 'stable' into beta 2023-08-20 20:53:42 +02:00
Arusekk 6ff74256d8 plt: remove stale MIPS workaround (#2256)
Fixes #2042
2023-08-20 18:49:35 +00:00
peace-maker 340b0bf0bc Only run docker workflow on upstream repo (#2252)
Don't run it in forks which can't push to the dockerhub.
2023-08-02 01:34:17 +02:00
Furkan 2e5a33cfea Remove unused and broken rop.find_stack_adjustment (#2249)
* Added missing return to rop.find_stack_adjustment

* Removed ROP.find_stack_adjustment()
2023-07-31 21:44:37 +02:00
peace-maker b8b29e1cc7 Fix pushing docker images on manual workflow run (#2250)
* Fix pushing docker images on manual workflow run

Running the docker workflow manually would associate the run with the
`dev` branch. The generated tags would all point to the `dev` tag, so
tag the image manually to the correct branch.

* Fix building ci image

It's called `python2.7` instead of `python`.

* Add riscv64 binutils to base image
2023-07-30 17:49:54 +02:00
dependabot[bot] ff178aad6a Bump actions/download-artifact from 2 to 3 (#2247)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 2 to 3.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-30 15:34:24 +02:00
dependabot[bot] 8c8e49cc10 Bump actions/upload-artifact from 2 to 3 (#2246)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-30 15:33:47 +02:00
dependabot[bot] 0b0f786002 Bump actions/checkout from 2 to 3 (#2248)
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-30 09:38:24 +02:00
Arusekk 9ba65eb414 Merge branch 'beta' into dev 2023-07-29 22:31:37 +02:00
Arusekk cf53c4b219 Merge branch 'stable' into beta 2023-07-29 22:31:12 +02:00
peace-maker a0c9da07ac Fix ssh.process not setting ssh_process.cwd (#2241)
* Fix ssh.process not setting ssh_process.cwd

The cwd wasn't passed to the ssh_process created in ssh.process,
so the ssh_process.cwd attribute was never set.

This passes the cwd along now.
```
s = ssh(..)
io = s.process("pwd", cwd="/tmp")
io.cwd # "."
io.recvall() # b"/tmp\n"
```

* Update changelog
2023-07-29 22:29:21 +02:00
peace-maker 5b783feabd Keep Github Actions up-to-date with Dependabot (#2238)
Check every week if there are newer versions of the Github Actions we use.
2023-07-29 22:16:08 +02:00
Furkan 5589e15051 Decoded data from recv_all in packages to a string (#2237)
* Decoded data from recv_all in packages to a string

* Added sources for UTF-8 usage in Android

* Updated adb source
2023-07-29 21:23:27 +02:00
peace-maker 40c1ef5890 Do not overwrite global bytes in examples (#2240) 2023-07-28 15:50:18 +02:00
Arusekk e5af2bc3a3 Fix format string badbytes inconsistency (#1895)
* Fix format string badbytes inconsistency

Fixes #1888

* fmtstr: Make sure initial atom is considered
2023-07-28 15:49:00 +02:00
Furkan 6fa13de917 Added MAP_ADD opcode to list of opcodes in safeeval.py (#2243) 2023-07-28 14:45:22 +02:00
Arusekk 216e3edcde ci: stabilize coverage (#2235)
* ci: stabilize coverage

* fix cache dirs
2023-07-27 16:41:05 +02:00
peace-maker c334d46026 Publish Docker images through CI (#2236)
Rebuild the images on push to the respective branch.
2023-07-27 14:41:10 +02:00
peace-makerandArusekk 3e4e8b7055 Add --libc libc.so argument to pwn template (#2212)
* Add ELF.set_runpath()

Shells out to the `patchelf` tool to patch the ELF's RUNPATH. This lets the dynamic loader look for needed shared libraries in the given path first before the system libraries when running the binary.

* Add ELF.set_interpreter()

Shells out to the `patchelf` tool to patch the ELF's PT_INTERP segment. This allows to change the ld.so used when running the binary.

* Add convenience wrapper to set runpath & interpreter

A helper function to patch the ELF such that it uses the dynamic loader and other libraries in the given folder.

* Add method to download libraries matching a libc

Download the matching libraries for the given libc binary and cache them in a local directory using `libcdb.download_libraries()`. The libraries are looked up using libc.rip and fetched from the official package repositories if available.

Only .deb and .pkg.tar.* packages are currently supported (Debian/Ubuntu, Arch).

* Add --libc argument to pwnup template

This generates code into the template which allows you to run the binary using the given libc.

The foreign libc is used by default, but you can choose to run the binary against your system's local libc using the `LOCAL_LIBC` command line argument when executing the exploit script.

* Work around Python 2 tarfile not supporting xz

* Fix crash when libc wasn't found on libc.rip

* Update README

* Use subprocess.check_output instead of pwnlib.process

* Special case Python 2 instead of 3

* Only catch Exceptions instead of everything

Co-authored-by: Arusekk <[email protected]>

* Check launchpad.net for Ubuntu libcs

This mimics the way io12/pwninit obtains the ld.so.
If the download from libc.rip fails, try launchpad.net.

* Hide comment in template when --quiet

* Please confused pylint in PY2 context

Co-authored-by: Arusekk <[email protected]>

---------

Co-authored-by: Arusekk <[email protected]>
2023-07-26 13:58:32 +02:00
Arusekk 0696c5cb4f shellcraft/*/freebsd: match linux in switching cs (#2232)
* shellcraft/*/freebsd: match linux in switching cs

* shellcraft: note trashed registers in switching cs
2023-07-24 19:34:12 +02:00
Arusekk ac855ab179 shellcraft/i386: optimize stackhunter (#2231)
* shellcraft/i386: optimize stackhunter

* shellcraft/i386: add+opt long-gone stackhunter_helper

* shellcraft/i386: concise doctests
2023-07-24 19:33:26 +02:00
Arusekk 42c0798077 Merge branch 'beta' into dev 2023-07-17 19:26:41 +02:00
Arusekk cc3b28b23c Merge branch 'stable' into beta 2023-07-17 19:26:27 +02:00
Arusekk d69e294d54 py2: fix long hex in shellcraft etc. (#2230) 2023-07-17 17:10:15 +02:00
d679252ba9 Fix ret2csu with PIE binaries (#2158)
* fix indentation

* Allow ret2csu to find non-pie binaries

* ret2csu: fix detection logic

---------

Co-authored-by: peace-maker <[email protected]>
Co-authored-by: Arusekk <[email protected]>
2023-07-17 10:08:43 +00:00
whokilleddbandDebjeet Banerjee 94fc5d2769 Update ssh.py (#1946)
Two minor changes were made in the commit:
- `which` was replaced with `command -v`
- Minor bug fix

## Why bother with `which` ?
- `POSIX` compatible
-  `which` is an external process you're launching for doing very little (meaning builtins like hash, type or command are way cheaper), you can also rely on the builtins to actually do what you want, while the effects of external commands can easily vary from system to system.
- Many operating systems have a which that doesn't even set an exit status, meaning the if which foo won't even work there and will always report that foo exists, even if it doesn't (note that some POSIX shells appear to do this for hash too).
- Many operating systems make which do custom and evil stuff like change the output or even hook into the package manager.

Reference [here](https://stackoverflow.com/a/677212)

Co-authored-by: Debjeet Banerjee <[email protected]>
2023-07-16 20:44:59 +02:00
Furkan fbe88c06db Improve error handling of serial-tube constructor (#2228)
* Resolved issue #1411 abt serial-tube misbehaving.

* Removed redundant docstrings
2023-07-15 12:41:10 +02:00
Disconnect3d dd1edaa6c9 shellcraft: more explicit sleep.asm docstring (#2226)
This commit adds information that the sleep shellcraft function does not check if it returned as part of an interrupt and it does not retry the syscall if this occured.
2023-07-12 00:24:54 +02:00
peace-maker b23251d05b Fix Python 2 editable user install (#2224)
This appears to be fixed in setuptools 62, but Python 2 is stuck at
version 44. Use a workaround which overrides the disabled user installs
temporarily.

This fixes our develop Dockerfile too!
2023-07-10 08:53:15 +02:00
peace-maker 83e19216ab Don't change log level for Corefile._parse_stack() (#2222)
* Don't change log level for Corefile._parse_stack()

If we don't want to see the log, don't print it. There are no spammy
debug logs anymore.

Fixes #1666

* Fix doctest
2023-07-09 22:02:44 +02:00
ArusekkandPeace-Maker 1399c7a969 Shellcraft stackargs (#2219)
From: Peace-Maker <[email protected]>

* Shellcraft: Fix spilling syscall args to the stack

There was a typo in the generated syscall template causing only the last
stack argument to be generated.

$ shellcraft -f asm mips.linux.sendto 3 0x123456 0x100 0 0xabcdefff 0x10
The 0xabcdefff argument was missing.

* Shellcraft: Generate 6 syscall arguments for unknown functions

There are syscalls with 6 arguments like mmap and sendto which couldn't
be called with all 6 arguments set.

$ shellcraft -f asm mips.linux.mmap2 0 0x1000
'PROT_READ | PROT_WRITE | PROT_EXEC' 'MAP_PRIVATE | MAP_ANONYMOUS' -1 0

* Shellcraft: Fix typo in error message

The `syscalls` variable is only present in the generate.py, not the
generated template.

* Regenerate syscall templates

* MIPS shellcraft: Push last two syscall arguments to the stack

The mips.linux.syscall template was only handling 4 syscall arguments
and silently discarded the remaining ones. Push the arguments to the stack
instead.

$ shellcraft -f asm mips.linux.syscall SYS_sendto 3 0x123456 0x100 0 0xabcdefff 0x10

Fixes #2153

* Fix mips syscall doctest

* Update CHANGELOG

Co-authored-by: Peace-Maker <[email protected]>
2023-07-09 22:00:54 +02:00
peace-makerandArusekk 8d104851ad Add shellcraft.sleep template wrapping SYS_nanosleep (#2221)
* Add shellcraft.sleep template wrapping SYS_nanosleep

Accepts the time in seconds as a float argument and calls SYS_nanosleep.

Fixes #1428

* Update CHANGELOG

* Use nanosleep wrapper

Co-authored-by: Arusekk <[email protected]>
2023-07-09 21:27:53 +02:00
peace-maker 9c83fa1099 Remove Travis CI Badge (#2220)
We don't use Travis CI anymore.

Closes #1740
2023-07-09 20:36:26 +02:00
Arusekk f1d5afe328 Merge branch 'beta' into dev 2023-07-09 15:25:06 +02:00
LY 05783e98c9 Change temp path in binutils install script (#2097)
Use $TMPDIR first. If $TMPDIR is unset/empty, use /tmp
(AFAIK most distros don't set $TMPDIR by default)
2023-07-09 15:21:40 +02:00
Arusekk d90cfd8b50 Merge branch 'stable' into beta 2023-07-09 15:13:11 +02:00
Youheng Lü c397626530 Fix bug at ssh.py:get() with relative path (#2214)
* Fix bug at ssh.py:get() with relative path

* Add doctest for bug at ssh.py:get()

* doctest for download and download_file
* remove os.path.join, since _download_raw already seem
  handle remote paths

* Add #2214 to stable changelog

* Fix Doctest for ssh.py to not be dependent on user dir

* Update CHANGELOG.md
2023-07-09 12:57:17 +00:00
peace-maker 9f072e3d0b Fix BytesWarning in ssh.interactive() (#2218)
When the current working directory was changed, `interactive()` changes
into that directory using `cd X` which wasn't encoded.
2023-07-09 12:30:04 +00:00
Arusekk 7547518e7c Merge branch 'beta' into dev 2023-07-09 12:57:50 +02:00
Arusekk edb93986ef Merge branch 'stable' into beta 2023-07-09 12:57:04 +02:00
peace-maker 8c62a58a18 Add pathlib2 to install_requirements for python_version < 3.4 (#2205)
The dynamic addition of the dependency which was used previously wasn't
included in the published egg on pypi.
2023-07-09 10:50:20 +00:00
zt20xx 96a8db0243 Update elf.py (#2211) 2023-07-09 10:36:39 +02:00
peace-makerandArusekk 8b4cacf8b8 Fix typo in ssh trying to access non-existent log.Progress.error (#2200)
* Fix typo in ssh trying to access log.Progress.error

That function doesn't exist and .failure() is used everywhere else.

* Use log.error instead of manually raising

The log.Progress logger doesn't print the exception when exiting the scope.

---------

Co-authored-by: Arusekk <[email protected]>
2023-07-03 19:29:39 +02:00
Arusekk 5f15b53ee6 Merge branch 'beta' into dev 2023-07-02 22:16:47 +02:00
peace-maker 7d4b80fc48 Fix stable changelog in beta (#2213) 2023-07-02 19:59:07 +00:00
maple b73e74f1ff Replace isSet with is_set as the former is deprecated in 3.10+ (#2208)
`threading.Event.isSet` is deprecated here: https://github.com/python/cpython/commit/9825bdfbd5c966abf1f1b7264992d722a94c9613
2023-06-26 13:50:11 +02:00
Arusekk 909d5833cd Merge branch 'beta' into dev 2023-06-26 01:45:34 +02:00
Arusekk b9cc118a15 Clean up CI workflow 2023-06-26 01:44:54 +02:00
Arusekk 1f63615085 Merge branch 'stable' into beta 2023-06-24 02:20:19 +02:00
peace-maker 23ef84e45a Fix Python 2 CI (#2210)
* Fix Python 2 CI

* Fix python symlink related tests
2023-06-24 02:16:53 +02:00
91be8af121 Add -p (--prefix) and -s (--separator) arguments to hex command (#2117)
* Add formats for hex

* Add formats for hex coverage

Relates to #2117. Adding coverage as requested.

* Use util.lists.group

* Update CHANGELOG

* Fix Python 2 support

* Simplify hex formatting

Co-authored-by: Arusekk <[email protected]>

---------

Co-authored-by: marcan2020 <[email protected]>
Co-authored-by: carydrew <[email protected]>
Co-authored-by: Peace-Maker <[email protected]>
Co-authored-by: Arusekk <[email protected]>
2023-06-04 22:23:11 +02:00
peace-maker 61bce7f6cf Fix remote and listen in sagemath (#2202)
* Fix `remote` and `listen` in sagemath

sage's Integer doesn't seem to inherit from python's base int.

```
----> 1 listen(Integer(1337))
OSError: Int or String expected
```

Fixes #2201

* Update CHANGELOG
2023-06-02 16:57:00 +02:00
Arusekk c195c14b13 Merge branch 'beta' into dev 2023-06-01 11:40:37 +02:00
Arusekk 17fa832443 Merge branch 'stable' into beta 2023-06-01 11:40:03 +02:00
peace-maker c72886a9b9 Fix 4.11 beta changelog (#2198)
It included the changes in stable again.
2023-06-01 01:56:59 +02:00
Arusekk e09112b7d4 Merge branch 'beta' into dev 2023-05-21 16:38:42 +02:00
Arusekk f8fd03c2c2 Do not pollute PyPI with half-handed packages 2023-05-21 16:38:09 +02:00
Arusekk d590a0b77f Begin working on 4.12.0 2023-05-21 16:16:11 +02:00
Arusekk f0ffaee217 Release 4.11.0beta0 2023-05-21 15:56:09 +02:00
Arusekk 9dfc4d7ee4 Release 4.10.0 2023-05-21 15:46:14 +02:00
Arusekk cb5b8af5f3 Merge branch 'beta' into dev 2023-05-21 15:18:06 +02:00
Arusekk 78196db658 Merge branch 'stable' into beta 2023-05-21 15:07:18 +02:00
peace-maker d76c9fc704 Fix typo in mips mov shellcraft template (#2195) 2023-05-21 13:01:48 +00:00
Jonathan KellerandArusekk 8f122c3e00 Fix encoding & escaping in ssh.upload_dir (#2165)
remote_tar is a `bytes`, so the string interpolation resulted in the
command `cd ... && tar -xzf b'/tmp/...tar.gz`. It also would have failed
had either path contained spaces.

To fix this, make everything a bytes and use proper escaping.

Co-authored-by: Arusekk <[email protected]>
2023-05-21 12:51:03 +00:00
peace-makerandArusekk 123f68f096 Fix highlight of unaligned nullbyte in disasm cmd (#2182)
"1001" would highlight the "00" even though it's not a null byte in the
input. Group the bytes correctly to look for real null bytes and
newlines only ignoring accidental matches of adjacent bytes.

Co-authored-by: Arusekk <[email protected]>
2023-05-21 12:42:05 +00:00
James R T 5a84bbf775 Force ELF.path to be of type string (#2174)
This commit forces the `path` class variable of the `ELF` class to be of
type string, even if a byte string argument is passed. This also makes
the implementation consistent with the documentation, which states that
`ELF.path` is of type `str`.

Fixes #2166

Cherry-picked from 60af3a26d0

Signed-off-by: James Raphael Tiovalen <[email protected]>
2023-05-21 14:23:22 +02:00
James R T 60af3a26d0 Force ELF.path to be of type string (#2174)
This commit forces the `path` class variable of the `ELF` class to be of
type string, even if a byte string argument is passed. This also makes
the implementation consistent with the documentation, which states that
`ELF.path` is of type `str`.

Fixes #2166

Signed-off-by: James Raphael Tiovalen <[email protected]>
2023-05-21 14:20:38 +02:00
Arusekk 060746e274 pypi: Use trusted publishing (OIDC) (#2194)
Recently introduced [auth mechanism][1] makes it possible to not keep
any long-lived tokens in GH secrets, reducing attack surface.

[1]: https://blog.pypi.org/posts/2023-04-20-introducing-trusted-publishers/

Cherry-picked from 74c37037e2
2023-05-21 14:02:13 +02:00
peace-maker 0499631429 Fix failing libcdb.unstrip_libc tests (#2196)
* Fix libcdb.unstrip_libc tests

The old debugsymbols seem to have been pruned.
Update hashes to recent Ubuntu 22.04 libcs.

* Switch wget test to httpbingo.org

httpbin.org is very slow to respond.

Cherry-picked from 1998ff0920
2023-05-21 14:02:13 +02:00
Arusekk 74c37037e2 pypi: Use trusted publishing (OIDC) (#2194)
Recently introduced [auth mechanism][1] makes it possible to not keep
any long-lived tokens in GH secrets, reducing attack surface.

[1]: https://blog.pypi.org/posts/2023-04-20-introducing-trusted-publishers/
2023-05-21 13:39:01 +02:00
peace-maker 58222ccf8b Handle context.newline correctly in tube.interactive() (#2129)
* Handle `context.newline` correctly in `tube.interactive()`

The `context.newline` or `self.newline` variable isn't obeyed when typing in interactive mode. It is used when sending and receiving lines through `tube.sendline` though, causing a mismatch.

The receiving end of the `tube.interactive()` already has handling of newlines, but the sending side does not.

Example:
```python
from pwn import *
io = process('cat')
io.newline = b'\r\n'
io.sendline(b'auto')
io.interactive()
```

```
$ python testinteractive.py DEBUG
[x] Starting local process '/usr/bin/cat' argv=[b'cat']
[+] Starting local process '/usr/bin/cat' argv=[b'cat'] : pid 19060
[DEBUG] Sent 0x6 bytes:
    b'auto\r\n'
[*] Switching to interactive mode
[DEBUG] Received 0x6 bytes:
    b'auto\r\n'
auto
$ test
[DEBUG] Sent 0x5 bytes:
    b'test\n'
[DEBUG] Received 0x5 bytes:
    b'test\n'
test
```

The expected outcome would be to send `b'test\r\n'.

The same problem arises in non-term mode (`PWNLIB_NOTERM=1`), where stdin is read in binary mode causing the OS line seperators to come through. Correctly replacing them with the `context.newline` setting allows to use the interactive input on windows hosts as well, without constantly sending `\r\n`.

* Update CHANGELOG.md

* Only replace newlines in TTYs

Don't mess with the line endings when piping data through.

* Always send bytes immediately on receive

Only replace newlines in a tty if NOTERM wasn't explicitly set or
the `newline` setting was set.

* Don't return a newline after term.readline lines

The builtin `input()` doesn't include the newline.

* Remove bogous newline from CHANGELOG
2023-05-18 22:32:08 +02:00
peace-maker 1998ff0920 Fix failing libcdb.unstrip_libc tests (#2196)
* Fix libcdb.unstrip_libc tests

The old debugsymbols seem to have been pruned.
Update hashes to recent Ubuntu 22.04 libcs.

* Switch wget test to httpbingo.org

httpbin.org is very slow to respond.
2023-05-18 17:59:16 +02:00
yuvalpo ab60471266 ELF.nx and ELF.execstack enhancements (#2186)
* ELF.nx and ELF.execstack enhancements

* Update CHANGELOG.md

* Detect NX state whenever possible when GNU_STACK is missing
2023-05-15 14:16:19 +02:00
ElouanFiore d16da4f8a8 Fixing a typo (Procedure Linkate Table -> Procedure Linkage Table) (#2192) 2023-05-13 11:11:45 +02:00
Arusekk 731f4a9219 Fix readthedocs hopefully (#2191)
* Fix readthedocs hopefully

* Make colored_traceback an optional dep

* Add python-dateutil to docs req

* Add more docs reqs
2023-05-13 11:09:17 +02:00
mthangandArusekk 83e3b5bbaa Fmtstr no dollar payload (#2185)
* added feature to the fmtstr module, now able to generate payload without the dollar syntax.

* made some improvements in the no_dollar feature implemented

* reduced different lines

* removed some blank lines and debug stuff

* (fix) missing check for no_dollar option

* (fix) updatet argument type for documentation

* updated CHANGELOG.md

* (fix) typo in the CHANGELOG.md version

* Update pwnlib/fmtstr.py

suggested change, dont need comparison in calling the make_payload_dollar

Co-authored-by: Arusekk <[email protected]>

* Update pwnlib/fmtstr.py

suggestion; better use a non null byte thing to fill the values used by the %c to pad before writing.

Co-authored-by: Arusekk <[email protected]>

* (fix) minor fixes, typos on comments

* update pwnlib/fmtstr.py : suggestion from Arusekk, made improvements to save some bytes in the generation of the payload

* added tests to fmtstr_payload with no dollar flag

* update CHANGELOG.md with correct version

---------

Co-authored-by: Arusekk <[email protected]>
2023-04-30 21:01:14 +02:00
Arusekk c1ed0e6f10 Declarative setup (#2179)
* Move most settings to pyproject.toml

* py2 minimal compat

* Make it not crash nor include spurious files

* Use PEP517

* Update workflows

* Limit workflows

Closes #1587
2023-04-18 22:33:01 +02:00
Arusekk ef3bb56be9 ci: leverage stock Android SDK present on GHA (#2175)
* ci: leverage built-in Android SDK of GHA runners

* android: more robust NDK detection
2023-04-18 15:12:17 +02:00
peace-maker 1a1124cf46 Fix debugging and assembly for RISCV (#2180)
* Fix debugging and assembly for RISCV

They are broken since the riscv architecture was split into riscv32
and riscv64 internally in #2177.

* Always look for riscv32. riscv64 or riscv toolchains

* Look for riscv64 for riscv64 first
2023-04-11 16:40:33 +02:00
XeonacidandArusekk fbf2727ac6 Determine elf arch by e_machine and bits (#2177)
* Determine elf arch by e_machine and bits

Separate 32/64 for riscv and mips
Trim some trailing space

* Fix missing comma

Co-authored-by: Arusekk <[email protected]>

* Add CHANGELOG

* unicorn: Use fixed version

* Cosmetic enhancements

---------

Co-authored-by: Arusekk <[email protected]>
2023-04-09 02:18:59 +02:00
Arusekk a51a06a36f ci: Update CI workflow YAML devops engineering 2023-04-08 00:37:47 +02:00
peace-makerandArusekk aa48227781 Add search for libc binary by leaked function addresses (#2103)
* libcdb: Add option to search by function offsets

When you're able to leak addresses of the libc library, use `libcdb.search_by_symbol_offsets()` to find and download the matching libc library from https://libc.rip.

If there are multiple matches, the user is prompted to select one interactively. The selection can be saved in the code for future executions of the script.

Fixes #1867

* libcdb: Handle multiple results when looking up by hash

Sometimes the same library appears to be indexed multiple times (see 0b52d2e713d243f0f65d808fcd3fbe372bb3cd32). Handle that situation by selecting the first in the list, since they should all be identical given the same hash value.

* Update CHANGELOG

* Fix off-by-one when pre-selecting a libc

* Do .json() only once

---------

Co-authored-by: Arusekk <[email protected]>
2023-03-22 12:26:39 +01:00
Minei3oat 1461b486ab Fix documentation of tube.recvall (#2163) 2023-03-22 12:14:18 +01:00
Ivan Komarov 98778d2277 Fix a couple of typos in the comments for unpack*() functions (#2167) 2023-02-06 13:33:12 +01:00
Liam Siegel ba7c7e5545 Noticed a small typo and corrected the word "whith." (#2157)
This is only a cosmetic change to an incorrect word in the documentation.
2023-01-14 12:57:57 +01:00
Yulian 60e91b7fd6 Fix typo and comment consistency (#2115) 2023-01-12 15:12:10 +01:00
36ad53b4ff Fixes for download_dir (#2151)
* Fixes for download_dir.

* Adds support to use SFTP if available

* Update pwnlib/tubes/ssh.py

Co-authored-by: Arusekk <[email protected]>

* Removal of unnecessary parens after 'if' keyword

Co-authored-by: Juuso Käenmäki <[email protected]>
Co-authored-by: Arusekk <[email protected]>
2023-01-10 07:17:53 +01:00
peace-maker 44d514119e Add basic shellcode for Win64 to shellcraft (#2154)
* Add initial set of shellcode to run WinExec("cmd.exe")

* Remove nullbyte from getexport

* Generate docs for windows shellcode
2023-01-08 22:51:58 +01:00
Jusb3andJuuso Käenmäki 55c304328a Changes _get_fingerprint to accept variety of output formats (#2152)
Co-authored-by: Juuso Käenmäki <[email protected]>
2023-01-06 18:32:26 +01:00
Arusekk 39ef958bfe Begin working on 4.11.0 2022-12-29 14:42:14 +01:00
Arusekk 082c55dd78 Release 4.10.0beta0 2022-12-29 14:11:52 +01:00
Arusekk c45e92d78b Release 4.9.0 2022-12-29 14:08:51 +01:00
Tobias JostandArusekk 7673ce8ea2 Make template respect args.EXE (#2111)
* Make template respect args.EXE

To be able to execute a script using an executable with another name and/or location than specified at template generation, `args.EXE` will be used as path for ELF file loading, only using the preconfigured value when no arg was supplied

* Update CHANGELOG.md

* FIXUP: properly test for EXE arg

* Style fixes and revert changelog

Co-authored-by: Arusekk <[email protected]>
2022-12-29 13:16:04 +01:00
Patryk KrawaczyńskiandArusekk 6a9f78ac46 Upgrade to Ubuntu Focal 20.04 LTS (#2118)
* Update Dockerfile

* Move to Ubuntu Jammy 22.04 and keep python2.7

* Apparently Debian intentionally broke ensurepip

Co-authored-by: Arusekk <[email protected]>
2022-12-29 13:08:23 +01:00
peace-makerandArusekk 48d76ed0af Support adding lists in ROP.raw() (#2128)
* Support adding lists in `ROP.raw()`

Allow to add multiple raw entries on a rop chain using an array instead of multiple calls to `raw()`.

```py
rop = ROP('/bin/ls')
# before
rop.raw(1)
rop.raw(2)
rop.raw(rop.ret)

# after
rop.raw([1, 2, rop.ret])
```

Fixes #2017

* Update CHANGELOG.md

* Update pwnlib/rop/rop.py

Co-authored-by: Arusekk <[email protected]>
2022-12-29 02:19:50 +01:00
Johnson 838e9ec947 Support FinishBreakpoint for GDB API (#2114)
* Support FinishBreakpoint for GDB API

* Evaluate args outside FinishBreakpoint callbacks
2022-12-29 02:17:50 +01:00
Arusekk 826f4f39da Create SECURITY.md
Closes #2015
2022-12-29 01:58:19 +01:00
peace-maker 188632cd96 Fix docker image building and local testing (#2146)
The base image was missing the patchelf utility and the develop image
didn't update the apt cache. That caused building the image to fail when
pulling the outdated pwntools:base image from dockerhub.
The docker Makefile was using an invalid `-depth 1` argument which appear
to have been replaced by `-mindepth` and `-maxdepth` arguments recently.

The testing container is based on the develop image's Dockerfile which
copies new files into the container. Grab them from the appropriate folder.
pwndbg was installed twice when running the testing container for the
doctests.
2022-12-29 00:55:39 +01:00
Ian Laird e5407603f0 Added arch and bits specific flag to asm call from elf wrapper (#2137) 2022-12-29 00:21:34 +01:00
peace-maker f1693e3005 Support non-bytes argument in packing._need_text() (#2127)
* Support non-bytes argument to `packing._need_text()`

Allow to pass everything to `_need_text` and be sure to get a string back. This allows to log any object without the need for a format string by calling `repr` on it.

```py
# before:
log.info('%r', 5)
# now
log.info(5)
```

Fixes #2018
2022-12-29 00:19:35 +01:00
clubby789 4d81cb5d3f Reduce Pylint CI false positives (#2142) 2022-12-29 00:15:11 +01:00
Arusekk fa08f5a7bf Fix spurious AttributeError on None stdio
Fixes #2036
Closes #2102
2022-12-29 00:08:14 +01:00
Arusekk 69132c66e3 Fix CI after careless merging of #2144
This is why CI should always be green.
Make it green, dear contributor, because the maintainers might merge
something without checking if it is green.  Please.
2022-12-29 00:08:14 +01:00
Arusekk 74cf13eb58 Update README.md
The old API was a hack apparently, but it looks like GitHub Actions slowly gets less and less sketchy over time, and even goes as far as providing well-designed APIs.
Ref. https://github.com/badges/shields/issues/8671
2022-12-29 00:03:41 +01:00
PeterD1524 448914a5aa Fix logging in wait_for_debugger (#2143) 2022-12-28 23:14:58 +01:00
Disconnect3d 2f21f1bedb Fix PwntoolsLexer number matching (#2139)
This commit fixes a small bug with PwntoolsLexer where it matched negative numbers incorrectly in Arm assembly.

See https://github.com/pwndbg/pwndbg/pull/1367 for more information
2022-12-28 23:13:19 +01:00
BinSong 165452a0ab fix a bug in ret2dlresolve when pie is enabled. (#2136) 2022-12-28 23:12:46 +01:00
ThatOnePizzaandArusekk b771fc560b Fix asm() instruction consistency (#2144)
* sets p2align header to 0 for x86-32 x86-64 and thumb

* updates changelog

* adds PR link to changelog

* Update pwnlib/asm.py

Co-authored-by: Arusekk <[email protected]>

Co-authored-by: Arusekk <[email protected]>
2022-12-28 23:12:23 +01:00
Arusekk 21131bd5e8 Merge branch 'beta' into dev 2022-12-28 22:34:59 +01:00
Arusekk a76c7b0ca1 Defer import of optional dependency 2022-12-28 22:29:50 +01:00
Arusekk b8fad78d3e Fix binutils version checking and RWX warnings
Fixes #2140
Closes #2098
Closes #2141
2022-12-28 22:19:35 +01:00
Arusekk 8f42bef2b1 Use modern inspect.signature
While at it, drop the hard-to-maintain code.
We lose the signature in py2, but its support is second-class anyway.

Fixes #2145
Closes #2148
2022-12-28 22:13:55 +01:00
Arusekk 020143f0f9 Compatibility with python 3.11 (#2070)
Closes #2057
Closes #2052
2022-12-28 21:46:26 +01:00
Arusekk 416c33ed00 New toolchain, new doctests 2022-12-28 21:46:26 +01:00
Arusekk 3884d606b7 ci: Use default elfutils from 22.04 2022-12-28 21:19:42 +01:00
Arusekk 4628627943 Bump setup-python GH action 2022-12-28 20:15:06 +01:00
Arusekk d86ae5794a Merge branch 'stable' into beta 2022-12-28 19:43:01 +01:00
minaminao 9e065adae8 fix: str -> bytes in doc (#2133) 2022-12-02 23:04:40 +01:00
Arusekk 0a7c0b62a7 Make term resistant against SIGWINCH storm 2022-11-06 17:39:28 +01:00
peace-maker 67d49a693d Fix tube.recvpred() timout argument (#2124)
* Fix tube.recvpred() timout argument

The `timeout` argument wasn't implemented correctly causing the function to hang instead of timing out.

* Update CHANGELOG.md
2022-11-01 19:21:37 +01:00
peace-maker 4ddb702ba7 Mention need for listen.wait_for_connection() in docs (#2126)
You have to call `listen.wait_for_connection()` before using the listen socket or you face raceconditions with the thread accepting the client connection.

Fixes #2100
2022-10-27 14:39:25 +02:00
peace-maker 30f55d33f4 Allow tube.recvregex to return capture groups (#2125)
* Allow tube.recvregex to return capture groups

When wanting to extract a value from the received data, one had to receive up until the value and the value itself in two steps without carving the data out of a large blob like this:

```
io.recvuntil(b'The address is: ')
address = int(io.recvline(), 16)
```

or use a regex twice:

```
pattern = re.compile(rb'The address is: (0x[0-9a-fA-F]+)')
data = io.recvregex(pattern)
address = int(pattern.search(data).group(1), 16)
```

This patch allows to pass `capture=True` to `tube.recvregex()` to return a `re.Match` object instead of the raw bytes.

```
addr = int(io.recvregex(rb'The address is: (0x[0-9a-fA-F]+)', capture=True).group(1), 16)
```

This allows for slicker data extraction!

Fixes #1962

* Update CHANGELOG.md
2022-10-27 14:37:23 +02:00
peace-maker a7cb54931c Fix ROP without a writeable cache directory (#2123)
* Fix ROP without a writeable cache directory

`context.cache_dir` can be None, but the ROP class assumed it would always be a valid path and crash. Disable rop-cache if we can't save it.

Fixes #2072

* Update CHANGELOG.md
2022-10-27 14:33:54 +02:00
锋临 dc4108d6f2 Fix boundary judgment error (#2116) 2022-10-23 09:37:20 +02:00
peace-maker 7d1dae1071 Update libcdb debuginfod default URL to federating server (#2101)
* Switch to federated debuginfod service

elfutils.org offers a federating proxy server which forwards the requests to all other debuginfod servers of the different linux distributions.

https://sourceware.org/elfutils/Debuginfod.html

Use that instead by default to increase our successrate and potentially include new servers automatically once the distro sets one up.

* Use DEBUGINFOD_URLS envvar for server selection

The `DEBUGINFOD_URLS` environment variable is what you use for your normal debuginfod setup to tell it where to look for debug symbols.

Parse it as well and prepend it to the list of servers to try to allow for dynamic adjusting of the target servers.
2022-09-25 14:56:19 +02:00
锋临 302a4ef4ed Fix format string badbytes not working (#2113)
* Fix format string badbytes not working

* update boundary conditions
2022-09-24 12:10:24 +02:00
Aidan W 6457c33280 Spelling mistake fix (#2104) 2022-08-30 10:10:33 +02:00
Arusekk 87e37ee121 setresuid: generic implementation for all arches (#2093)
* setresuid: generic implementation for all arches

Closes #1324

* Update changelog
2022-08-15 12:41:25 +02:00
Arusekk e53c7f7350 shellcraft: consistently name dupio and optimize (#2092)
* shellcraft: consistently name dupio and optimize

* Update changelog
2022-08-08 23:10:10 +02:00
Gustaf Blomqvist a5c0809f38 Do not skip chars after non-printable characters
Closes #2094
2022-08-08 23:00:30 +02:00
01df19d360 Stable: ret2csu: fix a silent failure when rdx is populated from r14 (#2063)
* Fix for overwritten env when parsing core file

* warn_once message when dealing with overwritten pointer to env variable in core file

* Check for sha256 and sha256sum before trying openssl sha256 as "openssl sha256" doesn't return an error code in some old versions of openssl (OpenSSL 0.9.8g 19 Oct 2007 at least) that doesn't support sha256.

* ret2csu: fix a silent failure when rdx is populated from r14.
One such binary can be found at https://github.com/nobodyisnobody/write-ups/tree/main/FCSC.2022/pwn/Deflation

* Clean up the code a bit

Co-authored-by: Zach Riggle <[email protected]>
Co-authored-by: Arusekk <[email protected]>
2022-08-07 17:02:13 +02:00
Lasne OlivierandArusekk e63e685bc7 make pwn cyclic -l work with entry larger than 4 bytes (#2062)
* make pwn cyclic -l work with entry larger than 4 bytes

* Do not assume py3, do not assume little-endian

* Update changelog

* pack all bytes instead

Co-authored-by: Arusekk <[email protected]>
2022-08-07 16:47:37 +02:00
LYandArusekk 002ac9e03e Change prefix in install script to $PREFIX (#2079)
* Change prefix in install script to $PREFIX

On special envrionments like Termux, /usr/local is not the proper path.

* Change prefix in binutils install script to $PREFIX

* PREFIX not everywhere

Co-authored-by: Arusekk <[email protected]>
2022-08-07 12:41:29 +02:00
Arusekk b825e977f3 shellcraft: fix and optimize itoa
Fixes #2073
2022-08-07 10:56:17 +02:00
Arusekk 0533ba01c8 Make setRegisters more robust
Closes #1683
2022-08-07 10:31:33 +02:00
Carlos Silva f084699341 Don't pass basename to coredumpctl (#1879)
coredumpctl saves the coredumps with full path to the binary. Passing only the basename makes it fail to find the coredump when it is actually there.

Closes #1879
2022-08-06 19:47:49 +02:00
Florian Kothmeier 955b6d4cbd Enable sysroot parameter for native gdb.attach() (#2084) 2022-08-06 19:34:37 +02:00
Zhi-Qiang ZhouandArusekk 1b5a00cad9 code style (add abstractmethod) (#2069)
Co-authored-by: Arusekk <[email protected]>
2022-08-06 18:40:04 +02:00
aviyae a7b362e1c0 gdb: fix #1493 (#2083)
Fix wrong branch taken when trying to debug non native arch via ssh
(resulting qemu_port being referenced without being set).

This is done by setting the condition in line 571 to be the same
as in line 534

Signed-off-by: Aviya Erenfeld <[email protected]>
2022-08-06 18:25:44 +02:00
S1lv3rGh0st eb67d55f0d Fix typo (#2080)
For issue #2074
2022-08-06 17:44:44 +02:00
Arusekk 807f534c24 Compatibility with python 3.11 (#2070)
Closes #2057
Closes #2052
2022-06-17 21:50:47 +02:00
Arusekk 11f34c3bc5 Follow-up after #2061 which broke CI 2022-06-04 21:52:37 +02:00
u91o dbf066b89c Fix links (#2061) 2022-05-18 16:00:28 +02:00
u91o 45551f4bc4 Fix dash build (#2059) 2022-05-18 16:00:08 +02:00
Arusekk 7f5866ab8d Begin working on 4.10.0 2022-04-21 01:23:52 +02:00
Arusekk e450f6c247 Release 4.9.0beta0 2022-04-21 01:14:48 +02:00
Arusekk 493a3e3d92 Release 4.8.0 2022-04-21 01:05:15 +02:00
Arusekk 3e4d4a2115 Allow non-numeric ports with remote() 2022-04-21 00:51:54 +02:00
Arusekk b3b6d52bdd Clean up usages of getattr/__getattr__ (#2028) 2022-04-21 00:38:24 +02:00
sourqueandLMS57 6ba46d4eec Add the 'raw' option to SSH shell initialization (#2037)
* Add the 'raw' option to SSH shell initialization

This permits the use of the SSH shell as an arbitrary TCP tunnel by
bypassing the startup environmental checks.

Co-authored-by: LMS57 <[email protected]>

* Add changelog items

* Add assignment to self variable

Co-authored-by: LMS57 <[email protected]>
2022-04-21 00:37:25 +02:00
PaulandArusekk 5af2d92100 Quote file and core path in generated GDB script (#2033)
* Quote file and core path in generated GDB script

* Update changelog

Co-authored-by: Arusekk <[email protected]>
2022-04-21 00:36:03 +02:00
3fadc67327 clean ioerror (#2039)
* clean ioerror

* enforce stricter checks on broken pipe

* Apply suggestions from code review

Co-authored-by: caprinux <[email protected]>
Co-authored-by: Arusekk <[email protected]>
2022-04-21 00:32:40 +02:00
peace-maker 91c1b20c7b Detect Windows Terminal and split gdb into new pane (#2056)
Split the terminal window similar to tmux debugging experience when we're running in Windows Terminal instead of the plain old console host.
2022-04-20 23:46:42 +02:00
Justin StevenandArusekk 0351219903 Add js_escape and js_unescape (#1979)
* Add js_escape and js_unescape

* Add entry for js packing functions

* Use hardcoded data for doctest

* Fix js_escape data iteration for Python 2

* Move js packing functions to util.fiddling

* Apply suggestions from code review

Co-authored-by: Arusekk <[email protected]>
2022-04-20 17:49:00 +02:00
peace-makerandArusekk 4b067d2ec5 Add libcdb commandline tool (#1975)
* Add libcdb commandline tool

Allows to dump information about a local libc binary or lookup matching libc versions based on a build hash or symbol offsets (querying https://libc.rip).

It's possible to download and unstrip a matching libc binary from the command line.

* Fix Python 2 compatibility

* Remove main_arena heuristic

* Update CHANGELOG

Co-authored-by: Arusekk <[email protected]>
2022-04-20 16:35:36 +02:00
Heap Crash d9f9e7ca6f Add documentation on the rop.register=foo assignment option (#1924)
* Add documentation on the rop.register=foo assignment option

* Add looking up ROP gadgets by name as well, and manual ROP construction
2022-04-20 16:34:30 +02:00
Emanuel HauptandArusekk 9e55d8f4c8 Add badge packaging status badge (#2054)
* Add badge packaging status badge

Add a repology badge to show packaging status.

* Update README.md

Use shields.io everywhere

Co-authored-by: Arusekk <[email protected]>
2022-04-20 15:56:37 +02:00
Arusekk 97a760a0dd Merge branch 'beta' into dev 2022-04-20 15:47:08 +02:00
Arusekk f491bc6a22 Merge branch 'stable' into beta 2022-04-20 15:46:34 +02:00
Arusekk cde1b89615 Release 4.7.1 2022-04-20 15:37:20 +02:00
zup 17fc0aeaad fix double decoding of bytestring when logging (#2051) 2022-04-20 13:20:40 +00:00
maybe-sybr c93bdfeed8 fix: Fallback to temp dir if cache does not exist (#1784)
This fixes a misbehaviour in environments where `XDG_CACHE_DIR` is not
set and `~/.cache` does not exist, e.g. in the docker image. We simply
attempt to create a temporary directory which will be registered with
`atexit` to be deleted on exit using `shutil.rmtree()`. A Python 3
approach for future would be to use a `TemporaryDirectory` instead which
would get cleaned up when the held object gets dropped out of the TLS
stack.

It is still possible for the `context.cache_dir` to be `None` if the
default directory exists but is not writable, which means some code
which uses this property is liable to blow up in such a circumstance.
2022-04-20 12:09:41 +00:00
TestzeroandT3stzer0 4fd08b0b00 fix packing error (#2040)
Co-authored-by: T3stzer0 <[email protected]>
2022-04-20 12:00:35 +00:00
Spencer Pogorzelski 8dd566b9e9 Fix env command not found in gdb.debug (#2007) 2022-04-20 11:47:57 +00:00
Sebastiano MarianiandArusekk fca2929de0 Fix download_dir method when using an ssh tube (#1961)
Signed-off-by: Sebastiano Mariani <[email protected]>
Co-authored-by: Arusekk <[email protected]>
2022-04-20 10:51:21 +00:00
lucasg d67bdbc550 [asm] pwn.disam can return <text+0x0> instead of <text> (#1912)
Unit test:

```
(pwntools_mips_bug) lucasg@home:/tmp/pwntools$ git show
commit 78c6b8c2a9 (HEAD -> dev, origin/dev, origin/HEAD)
Merge: e3a5ac58 d7139997
Author: heapcrash <[email protected]>
Date:   Mon May 31 16:06:34 2021 -0500

    Merge branch 'beta' into dev

(pwntools_mips_bug) lucasg@home:/tmp/pwntools$ python
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pwn, binascii
>>> print(pwn.disasm(binascii.unhexlify("000000000d0000000000000000"), vma=0x00000000, arch="mips"))
   0:   00000000        nop
   4:   0000000d        break
   8:   00000000        nop
        ...
>>> print(pwn.disasm(binascii.unhexlify("000000000d0000000000000000"), vma=0x80000000, arch="mips"))
[ERROR] Could not find .text in objdump output:

    /tmp/pwn-disasm-77tu42pr/step2:     file format elf32-tradlittlemips

    Disassembly of section .text:

    80000000 <.text+0x0>:
    80000000:   00000000        nop
    80000004:   0000000d        break
    80000008:   00000000        nop
        ...
[ERROR] An error occurred while disassembling:
    b'\x00\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\x00'
    Traceback (most recent call last):
      File "/tmp/pwntools/pwnlib/asm.py", line 814, in disasm
        log.error('Could not find .text in objdump output:\n%s' % output0)
      File "/tmp/pwntools/pwnlib/log.py", line 424, in error
        raise PwnlibException(message % args)
    pwnlib.exception.PwnlibException: Could not find .text in objdump output:

    /tmp/pwn-disasm-77tu42pr/step2:     file format elf32-tradlittlemips

    Disassembly of section .text:

    80000000 <.text+0x0>:
    80000000:   00000000        nop
    80000004:   0000000d        break
    80000008:   00000000        nop
        ...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/tmp/pwntools/pwnlib/context/__init__.py", line 1524, in setter
    return function(*a, **kw)
  File "/tmp/pwntools/pwnlib/asm.py", line 818, in disasm
    log.exception("An error occurred while disassembling:\n%s" % data)
  File "/tmp/pwntools/pwnlib/asm.py", line 814, in disasm
    log.error('Could not find .text in objdump output:\n%s' % output0)
  File "/tmp/pwntools/pwnlib/log.py", line 424, in error
    raise PwnlibException(message % args)
pwnlib.exception.PwnlibException: Could not find .text in objdump output:

/tmp/pwn-disasm-77tu42pr/step2:     file format elf32-tradlittlemips

Disassembly of section .text:

80000000 <.text+0x0>:
80000000:       00000000        nop
80000004:       0000000d        break
80000008:       00000000        nop
        ...
```
2022-04-20 10:25:58 +00:00
Alan YeeandArusekk c3894c24de Make ELF symbol dict accept bytes (#1973)
DynElf symbol lookup uses bytes as key

Fixes #1951

Co-authored-by: Arusekk <[email protected]>
2022-04-20 09:48:13 +00:00
Arusekk 208b11df69 Avoid name clash of plain and android-related test 2022-04-20 11:14:45 +02:00
Will 0a860bd964 Fix incorrect disasm output (#2031)
Use objdump --wide option to ensure we don't have new lines in large instructions (>7 bytes).
2022-04-20 08:58:08 +00:00
0x3c3e 15efc3f1dc Cast int target pid to str (#2012) 2022-04-20 08:24:06 +00:00
gogo2464 2d0f03b66c Update Sphinx in order to fix jinja2 deprecated dependency. (#2053) 2022-04-20 08:44:02 +02:00
Justin Steven d7e9d313a2 Fix hexdump docstring. s should by bytes. (#1982) 2022-04-20 00:27:25 +02:00
Roderick 7a246e7887 fix Gallopsled/pwntools#2044 (#2045)
Specify the distro name when pop up a debugging window in wsl
2022-04-20 00:16:10 +02:00
QuqqU c04dbdb9e9 Correct a return type in Docstring (#2055) 2022-04-19 23:25:45 +02:00
Arusekk fc372d17a2 rop: Improve density (#2048)
When the last gadget has no arguments and the gadget before has stack
arguments, put the last gadget directly in its return address slot
(instead of a stack adjustment gadget).
2022-04-19 23:25:23 +02:00
gogo2464 79986d8262 Update Sphinx in order to fix jinja2 deprecated dependency. (#2053) 2022-04-13 17:49:01 +02:00
tkmikan ef698d4562 change Buffer's parent class to object (#2035)
* change Buffer's parent class to object

* update CHANGELOG.md
2022-02-15 17:31:01 +01:00
Swapnadeep Som 1238fc359e Fix UPX packer identifier (#1947)
Fixes #1855
Closes #1947
2022-02-01 11:53:12 +01:00
Arusekk 79d150061c Merge branch 'beta' into dev 2022-02-01 11:09:35 +01:00
peace-maker 2198b74df9 Fix CI after Groovy Gorilla went away for libc unstrip test (#2025)
* Fix CI after Groovy Gorilla went away for libc unstrip test

Build elfutils 0.181 from source since we can't use builds
from a newer ubuntu version anymore.

* Install python wheels in CI
2022-02-01 11:07:39 +01:00
TomasGl bf37947a99 Use a more reliable way to split the KDE konsole (#2026)
* Use a more reliable way to split the KDE konsole

* Changed xml parsing to pure parsing

* Update CHANGELOG.md
2022-02-01 11:01:31 +01:00
peace-maker 1fe9b3e693 Fix ELF.libc_start_main_return with glibc 2.34 (#2027)
* Fix ELF.libc_start_main_return with glibc 2.34

The actual call to `main` was split out into a new `__libc_start_call_main` function in glibc 2.34.

Update the heuristic to find main's return address by looking into all direct calls in `__libc_start_main` until the old heuristic matches.

The other direct calls could be e.g. `atexit` which doesn't call `exit`.

* Update CHANGELOG.md
2022-01-31 18:41:42 +01:00
peace-maker 762591bf35 Fix CI after Groovy Gorilla went away for libc unstrip test (#2025)
* Fix CI after Groovy Gorilla went away for libc unstrip test

Build elfutils 0.181 from source since we can't use builds
from a newer ubuntu version anymore.

* Install python wheels in CI
2022-01-28 11:58:23 +01:00
TomasGl 04f401c70e Support KDE Konsole in run_in_new_terminal function (#2023)
* Support KDE Konsole in run_in_new_terminal function

* Rewrite '.stdout.read()' to '.communicate()[0]'
2022-01-26 00:07:20 +01:00
jammychiou1 84b51fc1a5 Update filepointer.py (#2022)
Fix typo in documentation: "defination" to "definition"
2022-01-23 22:37:58 +01:00
tkmikan 1573957cc8 fix tube's debug output of same byte compression (#2011)
* fix tube's debug output of same byte compression

* Update CHANGELOG.md

* move code to `log.maybe_hexdump`

* update doc string
2022-01-08 13:22:38 +01:00
Arusekk 038e50fa0c Replace reserved argument names in syscalls (#1998)
Just stick to the replaced names everywhere.
This actually only broke linkat(2) and symlinkat(2),
but it touches many len -> length renames as well
for the sake of consistency.
Fixes #1964
2022-01-04 11:05:08 +01:00
Disconnect3d 58d6aea217 Add arch alias: x86-64 -> amd64 (#1967)
While we have an alias for "x86_64" some software (like Pwndbg) uses the "x86-64" string.
2021-11-21 23:54:24 +01:00
Arusekk 4c78e188ce Begin working on 4.9.0 2021-11-15 12:49:32 +01:00
Arusekk 9d8060496c Release 4.8.0beta0 2021-11-15 12:44:33 +01:00
Arusekk 67b28491a4 Release 4.7.0 2021-11-15 12:36:25 +01:00
Arusekk 7ea1f1d492 Merge branch 'beta' into dev 2021-11-15 12:25:01 +01:00
Arusekk 1b86e89efb Fix CI failures (#1997)
Ubuntu, why are you doing this to us?
I seriously mean that Ubuntu is the most silly distro.

Like, they probably updated their docker (or VM) images last week,
then Github got it, and we started getting failures.
They totally changed the behaviour of that 'apport' thing,
and it now drops core files in /var/lib/apport/coredump
instead of the current working directory.

Why is that even... ugh.  Nevermind.  It works now, at least.
But for how long?
2021-11-15 12:22:25 +01:00
Arusekk 0c769bdba9 Add cat2 to shellcraft (#1995)
* Introduce shellcraft.linux.cat2 to avoid sendfile

Fixes #1871

* Switch CAT_PROC_MAPS_EXIT to shellcraft.linux.cat2
2021-11-15 12:22:12 +01:00
Arusekk e80a6978ec Fix CI failures (#1994)
* Try to fix build failures by updating sphinx

See sphinx-doc/sphinx#9811

* Does not work with py2, so pin old docutils
2021-11-15 12:22:00 +01:00
Arusekk da8bf2667d Fix CI failures (#1997)
Ubuntu, why are you doing this to us?
I seriously mean that Ubuntu is the most silly distro.

Like, they probably updated their docker (or VM) images last week,
then Github got it, and we started getting failures.
They totally changed the behaviour of that 'apport' thing,
and it now drops core files in /var/lib/apport/coredump
instead of the current working directory.

Why is that even... ugh.  Nevermind.  It works now, at least.
But for how long?
2021-11-15 12:14:18 +01:00
Arusekk a37bce2bdc Display nice error message on unavailable ret2csu (#1991)
Fixes #1941
2021-11-14 15:20:59 +01:00
Arusekk 3dd0b24cc3 Add cat2 to shellcraft (#1995)
* Introduce shellcraft.linux.cat2 to avoid sendfile

Fixes #1871

* Switch CAT_PROC_MAPS_EXIT to shellcraft.linux.cat2
2021-11-14 15:20:43 +01:00
Arusekk a8c8c28f00 Fix CI failures (#1994)
* Try to fix build failures by updating sphinx

See sphinx-doc/sphinx#9811

* Does not work with py2, so pin old docutils
2021-11-11 17:53:45 +01:00
Justin Steven 315a462603 Make cyclic_find work with large int values (#1981)
* Make cyclic_find work with large int values

* Add entry for cyclic_find() large int fix

* Tweak cyclic_find() large int warning
2021-11-11 14:59:05 +01:00
ElJeffeandArusekk ddeddd455e Fix: TypeError: can't concat str to bytes (#1953)
* Fix: TypeError: can't concat str to bytes

sh_string returns a string, but two lines try to concat it with bytes, which throws a TypeError.  Either convert them all to bytes or all to string.

* Update to use packing._need_bytes

I just followed the format from surrounding conversions.  Hopefully that works correctly.

* Update pwnlib/tubes/ssh.py

Co-authored-by: Arusekk <[email protected]>

* Conversion to bytes

* Going for higher level conversion

Co-authored-by: Arusekk <[email protected]>
2021-11-01 00:35:10 +01:00
Alan Yee d3140ed983 Using native features of built-in functions over built-in operations config.py (#1980)
Use lazy logging and use second argument of `.get()` instead of relying on `or`
2021-11-01 00:33:32 +01:00
Arusekk fc250a33a1 Add missing copyright notice to ARM alphanumeric (#1955)
Closes #1954
2021-10-07 09:33:34 +02:00
peace-makerandArusekk 92911cbabd libcdb: Load debug info and unstrip libc binary (#1828)
* libcdb: Load debug info and unstrip libc binary

The debug info is obtained from a debuginfod server maintained by systemtap.org. elfutils is used to unstrip the binary and merge the debug info back.

Try to unstrip every libc binary downloaded by the libcdb module by default. #1818

* Install elfutils on CI

* Update CHANGELOG.md

* Add more tests

* Fix negative test

* Raise an exception when eu-unstrip fails

This will hopefully get logged during doctests.

* Install elfutils 0.181 from groovy

Use APT Pinning to select the newer elfutils version from groovy instead of the buggy 0.176 version available in focal.

* Fix missing import of requests

pylint?

Co-authored-by: Arusekk <[email protected]>
2021-10-03 10:51:30 +02:00
Alan Yee a9715d8c74 Use lazy logging instead of native string interpolation (#1972)
https://docs.python.org/3/howto/logging.html#logging-variable-data
2021-10-01 07:48:57 +02:00
Darin Mao bd12d1874f Fix KB, MB, GB globals (#1926) 2021-07-29 19:17:17 +02:00
clubby789 11b8537d17 Fix validation of log level name for Python 3 (#1939)
* Fix validation of log level name for Python 3

* Add changelog

* Reorder changelog and use try/except
2021-07-29 19:16:36 +02:00
Connor NelsonandArusekk f7283bf2eb Fix logic in wait_for_debugger (#1922)
* Fix logic in `wait_for_debugger`

* Update CHANGELOG.md

* Fix CHANGELOG.md

* Fix CHANGELOG.md

Co-authored-by: Arusekk <[email protected]>
2021-07-15 11:42:42 +02:00
Arusekk d5d7b8385c Begin working on 4.8.0 2021-07-12 23:06:17 +02:00
Arusekk d8abd074df Release 4.7.0beta0 2021-07-12 23:04:23 +02:00
Arusekk 56d43680f1 Release 4.6.0 2021-07-12 23:00:40 +02:00
Arusekk 03df22a4c5 Fix MIPS PLT on newer Unicorn versions (#1932)
Apparently it is us who used unicorn The Wrong Way,
e.g. trying to fetch instructions @ 0xdbdbdbdb,
which is both unaligned and high-address-space.
Unicorn just changed the exception to throw exception with the address
of an offending jump instruction, instead of the incorrect address.
Making the debugs actually work and changing address to 0x7c7c7c7c
solves the issue.

Closes #1538
Ping pentoo/pentoo-overlay#734 @blshkv
2021-07-12 21:42:01 +02:00
Heap Crash bbdb5dbb23 Various docs improvements (#1925)
* Expose elf/* instead of just elf
* Remove rop/call, since it is not supposed to be a public API
* Make QEMU examples into code blocks
2021-06-27 20:34:03 +02:00
WittsEnd2 6b2cdbb74d Added basic support for bare-metal ARM by adding pattern for finding binutils. (#1921)
* Added basic support for bare-metal ARM by adding the pattern to find arm-none-eabi in which_binutils()

* Updated CHANGELOG.md
2021-06-22 11:26:41 +02:00
Arusekk 90930e2bb8 Unified args (#1896)
* Introduce _need_bytes(min_wrong=0x80) for ASCII-ok contexts

* Unify argv and env preparation

Fixes #1804

* Switch sh_prepare to bytes

Fixes #1808

* Python 2 again

* Actually fix py2
2021-06-19 11:14:11 +02:00
Paul 35260c4c31 Keep gadgets when setting registers via setattr/call (#1891)
* Keep gadgets when setting registers via setattr/call

* Update changelog
2021-06-18 19:59:41 -05:00
Sean 684f06b760 Check binutils version is GNU or Clang (#1915) 2021-06-13 13:16:31 +02:00
Arusekk 1e34fb4a4f Add basic support for RISC-V (#1897)
* Add basic support for RISC-V

Closes #1777

* Update CHANGELOG.md
2021-06-09 18:56:21 +02:00
Rhythm Chopra e2ec6d0381 Fix i386 xor encoder issue #1761 (#1767)
* Fix i386 encoder issue #1761

Don't encode `avoid` parameter in `fiddler.py` if type is `bytearray`

* Pass `avoid` as `bytes` instead of `set` when `encoder.encode()` is called

* Requested change: Increase readability

* Update doctest in XOR encoder

Add my failing testcase to ensure the code is fixed
2021-06-05 21:34:20 +02:00
heapcrash 78c6b8c2a9 Merge branch 'beta' into dev 2021-05-31 16:06:34 -05:00
heapcrash d7139997dd Merge branch 'stable' into beta 2021-05-31 15:55:40 -05:00
Heap Crash e3a5ac5818 Dockerfile changes for quality-of-life with "make develop" (#1905)
* [docker:develop] Use zsh by default, enable sharing host history file

* [docker] Simplify makefile and break up develop command into second rule

* [docker:develop] Use zsh by default 2

* [docker:develop] Add ipdb, ipython, vim, and pwndbg

* [docker:buster] Add buster Dockerfile for testing #1899

* [docker:develop] Add pwn autocomplete

* [docker:develop] Add ipython configuration
2021-05-31 15:31:22 -05:00
Heap Crash 12af84f19f Defer import of requests and urllib (#1906)
* Defer import of requests and urllib

This saves 100ms-150ms of startup time on "from pwn import *"

* Update CHANGELOG

* More deferred imports to save ~20ms
2021-05-31 15:30:58 -05:00
Heap Crash 0aa1a231c3 Add bash autocompletion (#1904)
* Add bash autocompletion

* Update CHANGELOG
2021-05-30 19:32:28 -05:00
Heap Crash d991c898ac Add zsh completion (#1903)
* Add zsh completion

* Update CHANGELOG
2021-05-30 19:28:05 -05:00
Heap Crash ca4eeaa196 [docker] Update base image to use UTF-8 and also install tmux (#1900) 2021-05-30 17:47:38 -05:00
Heap Crash ef37e991d8 Add documentation for ROP magic register properties and setRegisters (#1894)
* Show magic gadgets and setRegsiters in the top of the documentation

* Show the cool way to set registers magically, with fewer lines of code

* Try simple fix for doctest
2021-05-26 11:22:54 +02:00
Arusekk 9426df0095 Fix ELF error on vmlinux with version like 4.4.78+ 2021-05-26 11:15:10 +02:00
Heap Crash 29fd2fe1c1 Fix warning that bytes != string (#1893)
* Fix warning that bytes != string

* Update CHANGELOG
2021-05-17 09:32:02 -05:00
Heap Crash 3c85afdbf5 Silence SIGPIPE error for phd (#1892)
* Silence SIGPIPE error for phd

* Update CHANGELOG
2021-05-17 08:43:24 -05:00
Arusekk 7893e6124d Merge branch 'beta' into dev 2021-05-13 14:01:26 +02:00
Arusekk fcf008b4fd Merge branch 'stable' into beta 2021-05-13 14:01:07 +02:00
Arusekk 2d1e0616a7 Update dietlibc headers and all that jazz (#1733)
* Update dietlibc headers

Closes #691

* Generated files

* Enable easy updating of syscall numbers

* Generated files

* Generate new syscalls

* Update CHANGELOG.md

* Workaround for py2

* Revert CGC deletion
2021-05-07 17:17:46 +02:00
Arusekk 6b25687454 Merge branch 'beta' into dev 2021-05-07 16:01:28 +02:00
Arusekk 882fd6a926 [testing] Google strikes back once again 2021-05-07 15:59:04 +02:00
Arusekk cdc36a8597 Merge branch 'beta' into dev 2021-05-07 10:46:31 +02:00
Arusekk f16cead9d7 [testing] Google strikes back 2021-05-07 10:46:01 +02:00
Arusekk d7e7ecce3f Merge branch 'stable' into beta 2021-05-07 10:39:35 +02:00
Hunter GregalandArusekk 8af69b3261 add self.message and change sys.exc_type to sys.exec_info() in Pwnlib… (#1876)
* add self.message and change sys.exc_type to sys.exec_info() in PwnlibException class

* update changelog

* Update pwnlib/exception.py

tru

Co-authored-by: Arusekk <[email protected]>

Co-authored-by: Arusekk <[email protected]>
2021-05-07 10:26:51 +02:00
Hunter GregalandArusekk 21d1cd0519 encoders: support avoid == bytes in error message (#1877)
* encoders: support `avoid == bytes` in error message

* update changelog

* Update pwnlib/encoders/encoder.py

Co-authored-by: Arusekk <[email protected]>

Co-authored-by: Arusekk <[email protected]>
2021-05-07 10:23:46 +02:00
Arusekk c7119c7bc5 Merge branch 'beta' into dev 2021-04-30 18:14:53 +02:00
Arusekk 6780c890cd Update CHANGELOG.md 2021-04-30 18:14:36 +02:00
Arusekk 9241ea80f8 Begin working on 4.7.0 2021-04-30 18:13:20 +02:00
Arusekk bf023053fc Release 4.6.0beta0 2021-04-30 18:11:16 +02:00
Arusekk c8681de1ee Merge branch 'beta' into dev 2021-04-30 18:10:57 +02:00
Saleem RashidandArusekk 8926425aed Add ignore_config argument to pwnlib.tubes.ssh and improve allow_agent implementation (#1566)
* ssh: Use paramiko allow_agent parameter

* ssh: Add ignore_config parameter to opt out of using ~/.ssh

* [changelog] Add `ignore_config` argument to `pwnlib.tubes.ssh` and improve `allow_agent` implementation (#1566)

Co-authored-by: Arusekk <[email protected]>
2021-04-29 19:20:14 +02:00
mephi42andArusekk e27209469e Fix process() with executable relative to cwd (#1751)
* Add PyCharm project directory to .gitignore

* Fix process() with executable relative to cwd

* Update CHANGELOG.md

Co-authored-by: Arusekk <[email protected]>
2021-04-29 19:13:22 +02:00
Heap CrashandArusekk 797c3ee178 [process] Add writemem with tests, alias readmem == leak (#1652)
* [process] Add writemem with tests, alias readmem == leak

* Update CHANGELOG

* Explicitly show result for easier debugging on CI

* Explicitly set arch to i386

* Troubleshooting and avoid overwriting top-level asm

* Update pwnlib/tubes/process.py

* Fix nasty race condition

Co-authored-by: Arusekk <[email protected]>
2021-04-29 19:10:21 +02:00
Arusekk e3bd4212de Respect context.bytes when counting ROP padding
Closes #1862
2021-04-29 16:26:27 +02:00
Heap CrashandArusekk a7b34f7d79 [android] Split Android AVD testing into its own Workflow (#1594)
* [android] Split Android AVD testing into its own Workflow

* [android] Modify to trigger tests

* [android] Make paths more succinct and explicit

* Remove environment variable

* Rename to test

* Always run Android jobs for debugging

* Enhance Android workflow

* Disable gdbserver download

* Make the workflow actually work

* Travis missing gdbserver

* Try to fix travis

* Add good ol' SIGALRM-based debugs for tests

* Revert changes made to Travis

* But fix GHA

* Actually enable the android tests

* Actually enable

* Not necessary anymore

* Actually run the tests with AVD installation

Also fix incorrect text-vs-bytes usages in protocols.adb.

Co-authored-by: Arusekk <[email protected]>
2021-04-29 15:56:18 +02:00
Arusekk 4b196c7d96 Cleanup unconditional imports (#1753)
* Cleanup unconditional imports

This may aid #1725

* Import explicitly

* Add good ol' SIGALRM-based debugs for tests

* Fix py2 GDB tests somehow

XXX: see why this matters

* Update CHANGELOG.md
2021-04-29 11:23:09 +02:00
Heap CrashandArusekk ad251a8285 Make gdb.attach work with arrays instead of string concatenation (#1846)
* Make gdb.attach work with arrays instead of string concatenation

This results in a simpler set of code that is more resilient to
issues with quoting and files with spaces in their name.

* Remove detach_and_quit for now, this was for Docker CI testing

* Fix typo

* Fix lint errors

* shlex.quote is unavailable on Python3

* Update CHANGELOG.md

* With no escaping comes no escaping

Co-authored-by: Arusekk <[email protected]>
2021-04-28 22:11:29 +02:00
ArusekkandCptGibbon 603e5ba0f1 Another attempt for rop.ret2csu (#1429)
* Add rop.ret2csu()

* Removed magic numbers

* Replaced if elf.sym.has_key(u'__libc_csu_init') with if u'__libc_csu_init' in elf.symbols

* Consistently used unicode strings to search for symbols

* Used the Capstone SKIPDATA option to deal with endbr64 instructions

* Added comment to clarify why we set rbp and rbx

* Account for newer versions of gcc populating registers in a different order

* Code style issues

* Add padding functionality

* Split files and add tests at last

* Implement flat interface in ROP

* Make linters happy

* Update changelog

* Add a more detailed doctest

* Actually set uid and hopefully solve all the corefile problems

* Show me the bug

* More verbosity

BTW fix py3 sockets incosistency

* The most debug

* Should finally work

* It must work now

Co-authored-by: CptGibbon <[email protected]>
2021-04-28 22:10:46 +02:00
Heap CrashandArusekk cb24f376ce Prefer Python3 for the remotely-executed Python script (#1746)
* Prefer Python3 for the remotely-executed Python script

This should be done as part of our general transition to Python3,
but should also be done because some systems with e.g. Python2.6
do not support OrderedDict, but DO have a Python3 version that works.

* Make the script actually work in py2 and py3

* Fix & update CHANGELOG.md

This actually is a behavior change, and can be a breaking change for some,
so must be stated prominently in the changelog.

Co-authored-by: Arusekk <[email protected]>
2021-04-28 22:00:53 +02:00
Arusekk f3b08ed289 Merge branch 'beta' into dev 2021-04-19 10:21:02 +02:00
Arusekk 835bc6ad56 Address code review from #1861 (#1866)
* Address code review from #1861

Review by @heapcrash

* Fix regression
2021-04-19 09:06:46 +02:00
Robert ReithandArusekk 2b71971821 fixed wrong description for shellcraft.amd64.linux.kill()... (#1739)
* fixed wrong description for shellcraft.amd64.linux.kill(). new desciption copied from pwntools/pwnlib/shellcraft/templates/common/linux/syscalls/kill.asm

* updated changelog with PR #1739

* Fix more syscalls and generify

Co-authored-by: Arusekk <[email protected]>
2021-04-15 13:01:35 +02:00
084890f739 mips: do not use $t0 temporary variable in dupio (#1776)
* mips: do not use $t0 temporary variable in dupio

dupio currently uses $t0 which is a temporary callee saved register.
The dup2 call is thus allowed to trash the register.
Use $v0 instead. $v0 is the return value register.
Either dup2 returns the provided $v0 (newfd) or -1 if it fails,
and therefore $v0 can be used safely here.

Reference:
 https://courses.cs.washington.edu/courses/cse410/09sp/examples/MIPSCallingConventionsSummary.pdf

* Update changelog

* Update dupio.asm

Make a small change to kick Github Actions

* Fix CHANGELOG

Co-authored-by: Heap Crash <[email protected]>
Co-authored-by: Arusekk <[email protected]>
2021-04-15 12:05:25 +02:00
Arusekk 3121f68e39 Try to catch more errors by using python -bb (#1861)
* Try to catch more errors by using python -bb

* Apply changes to travis dockerfiles as well

* Introduce context._need_bytes and context._need_text

...and resolve many issues
2021-04-15 12:04:56 +02:00
martinclauss 9066a68879 fix #1803 and #1860 (#1864)
* fix #1803 and #1860

* bring back Python2 shebang and imports
2021-04-15 12:03:20 +02:00
Arusekk 7e03bfd5a6 Fix unreliable doctest 2021-04-09 18:19:37 +02:00
Arusekk cf7ee859c9 Prevent CHANGELOG checks on non-code changes 2021-04-09 18:18:01 +02:00
Arusekk 7ececc6bce Support forking terminals (#1717)
* Support forking terminals

Closes #1677

* Update proc.py
2021-04-09 17:52:41 +02:00
Arusekk b3fe1eb6ed Enhance x86 bitsmode-switching templates (#1756) 2021-04-09 16:38:10 +02:00
Heap Crash 5d54e0d66d Work around bash complaining about setlocale on some servers (#1745)
Fixes #1744
2021-04-09 16:15:26 +02:00
Arusekk 3e0e0a5833 Merge branch 'beta' into dev 2021-03-31 23:10:34 +02:00
Arusekk c6fd41b733 Begin working on 4.6.0 2021-03-29 12:02:45 +02:00
885 changed files with 58207 additions and 9658 deletions

No files matched your search

-12
View File
@@ -1,12 +0,0 @@
[run]
branch = True
parallel = True
concurrency = thread,multiprocessing
omit =
*/constants/*
source =
pwn
pwnlib
~/.cache/.pwntools-cache-2.7/
~/.cache/.pwntools-cache-3.8/
disable_warnings = module-not-imported
+1 -1
View File
@@ -39,7 +39,7 @@ You should see `[DEBUG]` statements that show what's happening behind the scenes
## Verify on Ubuntu
If possible, please verify that your issue occurs on 64-bit Ubuntu 18.04. We provide a Dockerfile based on Ubuntu 18.04 via `docker.io` to make this super simple, no VM required!
If possible, please verify that your issue occurs on 64-bit Ubuntu 22.04. We provide a Dockerfile based on Ubuntu 22.04 via `docker.io` to make this super simple, no VM required!
```sh
# Download the Docker image
+8
View File
@@ -0,0 +1,8 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
# Check for updates to GitHub Actions every week
interval: "weekly"
+70
View File
@@ -0,0 +1,70 @@
name: Android Tests
on: [push, pull_request]
jobs:
android-test:
strategy:
matrix:
python-version: ['3.10']
os: [ubuntu-latest]
runs-on: ${{ matrix.os }}
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: |
**/pyproject.toml
**/requirements*.txt
- name: Install Linux dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends -o Acquire::Retries=3 \
gdb gdbserver socat \
qemu-user-static \
binutils-aarch64-linux-gnu \
binutils-arm-linux-gnueabihf \
libc6-dbg
- name: Cache for avd
uses: actions/cache@v4
id: cache-avd
with:
path: |
~/.android
/usr/local/lib/android/sdk/emulator
/usr/local/lib/android/sdk/platform-tools
/usr/local/lib/android/sdk/system-images
key: ${{ matrix.os }}-cache-avd-${{ hashFiles('travis/setup_avd*.sh') }}
restore-keys: |
${{ matrix.os }}-cache-avd-
- name: Install Android AVD
run: |
sudo usermod -aG kvm $USER
source travis/setup_avd_fast.sh
sed -i 's/skip_android = True/skip_android = False/' docs/source/conf.py
set | grep ^PATH >.android.env
- name: Install dependencies
run: |
pip install --upgrade pip
python setup.py egg_info
pip install --upgrade --editable .
- name: Sanity checks
run: PWNLIB_NOTERM=1 python -c 'from pwn import *; print(pwnlib.term.term_mode)'
- name: Install documentation dependencies
run: pip install -r docs/requirements.txt
- name: Coverage Doctests (Android Only)
run: |
source .android.env
PWNLIB_NOTERM=1 coverage run -m sphinx -b doctest docs/source docs/build/doctest docs/source/adb.rst
+8 -4
View File
@@ -1,17 +1,21 @@
name: Changelog
on: [pull_request]
on:
pull_request:
paths:
- pwnlib/**
- pwn/**
env:
GITHUB_BASE: origin/${{ github.event.pull_request.base.ref }}
jobs:
build:
check:
strategy:
matrix:
os: [ubuntu-latest]
runs-on: ${{ matrix.os }}
timeout-minutes: 5
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
fetch-depth: 0
@@ -20,7 +24,7 @@ jobs:
if git log --stat ${GITHUB_BASE}..HEAD | grep CHANGELOG.md; then
echo 'Changelog updated :D'
else
if git log --stat ${GITHUB_BASE}..HEAD | grep '++\|--'; then
if git log --stat ${GITHUB_BASE}..HEAD pwnlib pwn | grep '++\|--'; then
echo 'Major changes detected, changelog required!'
false
else
+186 -41
View File
@@ -5,31 +5,98 @@ jobs:
test:
strategy:
matrix:
python-version: [2.7, 3.8]
python_version: ['3.10', '3.12', '3.13', '3.14', '3.15']
os: [ubuntu-latest]
include:
- python_version: '2.7'
os: ubuntu-22.04
runs-on: ${{ matrix.os }}
timeout-minutes: 30
services:
libcdb-cache:
image: nginx
volumes:
- /home/runner/libcdb-cache:/var/cache/nginx
ports:
- 3000:3000 # https://debuginfod.elfutils.org proxy cache
- 3001:3001 # https://libc.rip/ proxy cache
- 3002:3002 # http://archive.ubuntu.com/ proxy cache
- 3003:3003 # https://gitlab.com/ proxy cache
- 3004:3004 # https://debuginfod.ubuntu.com/ proxy cache
env:
DEBUGINFOD_URLS: "http://localhost:3000/ http://localhost:3004/"
PWN_LIBCRIP_URL: http://localhost:3001/
PWN_UBUNTU_ARCHIVE_URL: http://localhost:3002/
PWN_GITLAB_LIBCDB_URL: http://localhost:3003/
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-depth: 20
- name: Git History
run: |
git fetch origin
git log --oneline --graph -10
- name: Fix libcdb-cache permissions
id: fix-perms
run: |
sudo chown -R runner:runner /home/runner/libcdb-cache
echo "date=$(/bin/date -u "+%Y%m%d%H%M%S")" >> $GITHUB_OUTPUT
- name: Cache for libcdb requests
uses: actions/cache@v4
with:
path: ~/libcdb-cache
key: libcdb-python${{ matrix.python_version }}-${{ steps.fix-perms.outputs.date }}
restore-keys: |
libcdb-python${{ matrix.python_version }}-
libcdb-
- name: Install libcdb-cache service config
run: |
sudo chown -R 101:101 /home/runner/libcdb-cache
container_id=$(docker ps --all --filter volume=/home/runner/libcdb-cache --no-trunc --format "{{.ID}}")
docker cp ./travis/libcdb_nginx_cache.conf $container_id:/etc/nginx/nginx.conf
docker restart $container_id
- name: Install RPyC for gdb
run: |
# The version packaged in python3-rpyc is too old on Ubuntu 24.04
# We use ^6.0 from pip.
sudo apt-get update && sudo apt-get install -y python3-pip gdb gdbserver
/usr/bin/python -m pip install --break-system-packages rpyc || /usr/bin/python -m pip install rpyc
gdb --batch --quiet --nx --nh --ex 'py import rpyc; print(rpyc.version.version)'
- name: Cache for pip
uses: actions/cache@v1
id: cache-pip
uses: actions/cache@v4
if: matrix.python_version == '2.7'
with:
path: ~/.cache/pip
key: ${{ matrix.os }}-cache-pip
key: ${{ matrix.os }}-${{ matrix.python_version }}-cache-pip-${{ hashFiles('**/pyproject.toml', '**/requirements*.txt') }}
restore-keys: ${{ matrix.os }}-${{ matrix.python_version }}-cache-pip-
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
- name: Set up Python ${{ matrix.python_version }}
if: matrix.python_version != '2.7'
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
python-version: ${{ matrix.python_version }}
cache: 'pip'
cache-dependency-path: |
**/pyproject.toml
**/requirements*.txt
- name: Set up Python 2.7
if: matrix.python_version == '2.7'
run: |
sudo apt-get update
sudo apt-get install -y \
python2.7 python2.7-dev python2-pip-whl
sudo ln -sf python2.7 /usr/bin/python
export PYTHONPATH=`echo /usr/share/python-wheels/pip-*py2*.whl`
sudo --preserve-env=PYTHONPATH python -m pip install --upgrade pip setuptools wheel
sudo chown -R $USER /usr/local/lib/python2.7
- name: Verify tag against version
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
@@ -49,30 +116,29 @@ jobs:
sudo apt-get update
sudo apt-get install -y --no-install-recommends -o Acquire::Retries=3 \
ash bash-static dash ksh mksh zsh \
pandoc gdb gdbserver socat sshpass \
gdb gdbserver socat \
binutils-multiarch qemu-user-static \
binutils-aarch64-linux-gnu \
binutils-arm-linux-gnueabihf \
binutils-mips-linux-gnu \
binutils-mipsel-linux-gnu \
binutils-msp430 \
binutils-powerpc-linux-gnu \
binutils-s390x-linux-gnu \
binutils-sparc64-linux-gnu \
binutils-riscv64-linux-gnu \
gcc-multilib \
libc6-dbg
- name: Install RPyC for GDB
run: |
sudo apt-get install -y python3-pip
/usr/bin/python3 -m pip install rpyc
libc6-dbg \
elfutils \
patchelf
- name: Testing Corefiles
run: |
ulimit -a
ulimit -c unlimited
cat /proc/sys/kernel/core_pattern
cat /proc/sys/kernel/core_uses_pid
( cd $(mktemp -d); sh -c 'kill -11 $$' || true; ls -la ./*core* /var/crash/*.crash;) || true
( cd $(mktemp -d); sh -c 'kill -11 $$' || true; ls -la ./*core* /var/crash/*.crash /var/lib/apport/coredump/core*) || true
- name: Set up SSH
run: |
@@ -81,42 +147,49 @@ jobs:
- name: Install dependencies
run: |
pip install --upgrade pip
pip install --upgrade wheel build
pip install --upgrade flake8 appdirs
python setup.py egg_info
pip install --upgrade --editable .
# Pin to known working version until 2.1.5 is out. https://github.com/unicorn-engine/unicorn/issues/2134
pip install 'unicorn==2.1.2'
- name: Sanity checks
run: PWNLIB_NOTERM=1 python -c 'from pwn import *; print(pwnlib.term.term_mode)'
run: PWNLIB_NOTERM=1 python -bb -c 'from pwn import *; print(pwnlib.term.term_mode)'
- name: Install documentation dependencies
run: pip install -r docs/requirements.txt
run: pip install -r docs/requirements.txt
- name: Manually install non-broken Unicorn
run: pip install unicorn==1.0.2rc3
if: matrix.python_version == '2.7'
run: pip install unicorn==2.0.0rc7
- name: Version Check
run: PWNLIB_NOTERM=1 pwn version
- name: Disable yama ptrace_scope
run: |
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope # required by some gdb doctests
- name: Coverage doctests
run: |
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope # required by some gdb doctests
PWNLIB_NOTERM=1 coverage run -m sphinx -b doctest docs/source docs/build/doctest
# Python version installed using setup-python interferes with gdb's python
# by setting LD_LIBRARY_PATH and gdb's python becoming unable to load built-in modules
# like _socket. This is a workaround.
unset LD_LIBRARY_PATH
PWNLIB_NOTERM=1 python -bb -m coverage run -m sphinx -b doctest docs/source docs/build/doctest
- name: Coverage running examples
run: |
export TERM=linux
set -x
python travis/coverage_chdir.py examples/fmtstr examples/fmtstr/exploit.py
python travis/coverage_chdir.py examples/fmtstr examples/fmtstr/exploit2.py || : # can fail randomly?
coverage run examples/asm.py
coverage run examples/asm.py
coverage run examples/text.py
python -bb travis/coverage_chdir.py examples/fmtstr examples/fmtstr/exploit.py
python -bb travis/coverage_chdir.py examples/fmtstr examples/fmtstr/exploit2.py || : # can fail randomly?
python -bb -m coverage run examples/asm.py
python -bb -m coverage run examples/asm.py
python -bb -m coverage run examples/text.py
# for f in examples/sigreturn_corefile_*.py; do coverage run "$f"; done # XXX something is wrong
- name: Coverage running commandline tools
run: |
export TERM=linux
pwn() { ( set +x; cmd=$1; shift; PYTHONUNBUFFERED=1 exec coverage run -m pwnlib.commandline."$cmd" "$@" ) }
pwn() { ( set +x; cmd=$1; shift; PYTHONUNBUFFERED=1 exec python -bb -m coverage run -m pwnlib.commandline."$cmd" "$@" ) }
set -x
pwn cyclic 32
@@ -127,11 +200,18 @@ jobs:
pwn shellcraft --list |tail
pwn shellcraft -l --syscalls |tail
pwn shellcraft -l execve
pwn shellcraft -l execve + exit
pwn shellcraft --show i386.linux.loader_append
pwn shellcraft --show i386.linux.loader_append + i386.linux.sh
pwn shellcraft -f asm --color amd64.linux.sh
pwn shellcraft -f asm --color amd64.linux.setreuid + amd64.linux.cat /etc/passwd
pwn shellcraft -f asm --color amd64.linux.setreuid = amd64.linux.cat /key+secret --delim =
pwn shellcraft -f elf amd64.linux.syscalls.exit 0 </dev/null |pwn hex
pwn shellcraft -f elf amd64.linux.cat /etc/passwd + amd64.linux.syscalls.exit 0 </dev/null |pwn hex
pwn shellcraft -f i --color amd64.linux.cat /etc/passwd </dev/null
pwn shellcraft -f i --color amd64.linux.cat /etc/passwd + amd64.linux.sh </dev/null
pwn shellcraft -f c amd64.linux.syscalls.exit 0 </dev/null
pwn shellcraft -f c amd64.linux.cat /etc/passwd + amd64.linux.syscalls.exit 0 </dev/null
pwn shellcraft -f str aarch64.linux.sh </dev/null
pwn shellcraft -abr -f elf -o /dev/null amd64.linux.cat /etc/passwd </dev/null
pwn shellcraft -nzr thumb.linux.syscalls.execve /bin/cat '["/bin/cat", "/etc/os-release"]' </dev/null
@@ -140,6 +220,11 @@ jobs:
pwn disasm --color ff3424c3ebfe
pwn asm -f hex nop
pwn hex ABCD
pwn hex ABCD --separator ' '
pwn hex ABCD --prefix '\x'
pwn hex ABCD -p '0x' -s ' '
pwn hex abcd
pwn unhex 4141 4141
@@ -147,6 +232,7 @@ jobs:
pwn phd -l 0x3d --color=always /etc/os-release
pwn checksec /bin/bash
(ulimit -v 500000 && pwn checksec /bin/bash)
pwn errno 2
pwn errno -1
@@ -155,28 +241,87 @@ jobs:
pwn constgrep -c freebsd -m ^PROT_ '3 + 4'
pwn constgrep ^MAP_ 0
pwn constgrep -e O_RDWR
pwn constgrep C
pwn libcdb file /lib/x86_64-linux-gnu/libc.so.6
pwn libcdb lookup puts 5f0 __libc_start_main_ret d0a
pwn libcdb hash b229d1da1e161f95e839cf90cded5f719e5de308
- name: Build source and wheel distributions
if: matrix.python_version != '2.7'
run: |
python setup.py sdist
python setup.py bdist_wheel --universal
python -m build
- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v4
if: matrix.python_version == '3.10'
with:
name: packages
path: dist/
include-hidden-files: true
- uses: actions/upload-artifact@v4
with:
name: coverage-${{ matrix.python_version }}
path: .coverage*
include-hidden-files: true
- name: Fix libcdb-cache permissions
run: |
container_id=$(docker ps --filter volume=/home/runner/libcdb-cache --no-trunc --format "{{.ID}}")
docker stop $container_id
sudo chown -R runner:runner /home/runner/libcdb-cache
windows-test:
runs-on: windows-latest
timeout-minutes: 30
continue-on-error: true
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
run: |
pip install --upgrade pip
pip install --upgrade --editable .
- name: Sanity checks
run: |
python -bb -c 'from pwn import *'
python -bb examples/text.py
upload-coverage:
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 20
- uses: actions/download-artifact@v4
with:
pattern: coverage-*
merge-multiple: true
- name: Install coveralls
run: |
pip install --break-system-packages tomli coveralls || pip install tomli coveralls
- name: Upload coverage to coveralls.io
run: |
coverage combine
COVERALLS_REPO_TOKEN=PP20MEgztXIQJJTguQwe2jeCh6Bm4lkbv coveralls
staging-merge:
runs-on: ubuntu-latest
if: github.repository_owner == 'Gallopsled' && github.event_name == 'push' && startsWith(github.event.ref, 'refs/heads/') && endsWith(github.event.ref, '-staging')
needs: test
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
fetch-depth: 20
- name: Push changes to protected branch
@@ -189,22 +334,22 @@ jobs:
git push origin "$TARGET"
git push origin --delete "$BRANCH"
pypi:
runs-on: ubuntu-latest
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
permissions:
id-token: write
needs: test
steps:
- name: Download artifacts
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4
with:
name: packages
path: dist
- name: Publish package
uses: pypa/gh-action-pypi-publish@v1.1.0
with:
user: __token__
password: ${{ secrets.pypi_password }}
uses: pypa/gh-action-pypi-publish@release/v1
- if: failure()
run: ls -R
+64
View File
@@ -0,0 +1,64 @@
name: Publish Docker images
on:
push:
branches:
- dev
- beta
- stable
workflow_dispatch:
jobs:
publish:
runs-on: ubuntu-latest
if: github.repository_owner == 'Gallopsled'
steps:
# Required for subdirectories in Git context
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Build and push base image
uses: docker/build-push-action@v6
if: github.event_name == 'workflow_dispatch'
with:
context: "{{defaultContext}}:extra/docker/base"
push: true
tags: pwntools/pwntools:base
- name: Build and push stable image
uses: docker/build-push-action@v6
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/stable')
with:
context: "{{defaultContext}}:extra/docker/stable"
push: true
tags: pwntools/pwntools:stable
- name: Build and push beta image
uses: docker/build-push-action@v6
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/beta')
with:
context: "{{defaultContext}}:extra/docker/beta"
push: true
tags: pwntools/pwntools:beta
- name: Build and push dev image
uses: docker/build-push-action@v6
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/dev')
with:
context: "{{defaultContext}}:extra/docker/dev"
push: true
tags: |
pwntools/pwntools:dev
pwntools/pwntools:latest
- name: Build and push ci image
uses: docker/build-push-action@v6
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/dev')
with:
context: "{{defaultContext}}:travis/docker"
push: true
tags: pwntools/pwntools:ci
+7 -9
View File
@@ -5,23 +5,21 @@ jobs:
lint:
strategy:
matrix:
python-version: [3.8]
python-version: ['3.10']
os: [ubuntu-latest]
runs-on: ${{ matrix.os }}
timeout-minutes: 30
steps:
- uses: actions/checkout@v2
- name: Cache for pip
uses: actions/cache@v1
id: cache-pip
with:
path: ~/.cache/pip
key: ${{ matrix.os }}-cache-pip
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: |
**/pyproject.toml
**/requirements*.txt
- name: Critical lint
run: |
+4 -2
View File
@@ -1,5 +1,7 @@
name: Check for merge markers
on: [pull_request]
on:
pull_request:
types: [synchronize]
env:
GITHUB_BASE: origin/${{ github.event.pull_request.base.ref }}
@@ -11,7 +13,7 @@ jobs:
runs-on: ${{ matrix.os }}
timeout-minutes: 5
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
fetch-depth: 0
+12 -13
View File
@@ -5,33 +5,32 @@ jobs:
build:
strategy:
matrix:
python-version: [3.8]
python-version: ['3.10']
os: [ubuntu-latest]
runs-on: ${{ matrix.os }}
timeout-minutes: 30
steps:
- uses: actions/checkout@v2
- name: Cache for pip
uses: actions/cache@v1
id: cache-pip
with:
path: ~/.cache/pip
key: ${{ matrix.os }}-cache-pip
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: |
**/pyproject.toml
**/requirements*.txt
- name: PyLint
run: |
set -x
pip install pylint
pip install --upgrade -r requirements.txt
pylint --exit-zero --errors-only pwnlib > current.txt
pip install 'pylint<4'
pip install --upgrade -e .
run_pylint() { pylint --exit-zero --errors-only pwnlib -f parseable | cut -d ' ' -f2- | sed 's/line [0-9]\+/line XXXX/g'; }
run_pylint > current.txt
git fetch origin
git checkout origin/"$GITHUB_BASE_REF"
pylint --exit-zero --errors-only pwnlib > base.txt
run_pylint > base.txt
if diff base.txt current.txt | grep '>'; then
false
fi
+5
View File
@@ -13,7 +13,12 @@ MANIFEST
dist
venv
.vscode
.idea
*.egg-info
*.core
.coverage
.coverage.*
.idea
__pycache__
!.github
.DS_Store
+15
View File
@@ -0,0 +1,15 @@
# https://docs.readthedocs.io/en/stable/config-file/v2.html
version: 2
build:
os: ubuntu-22.04
tools:
python: "3.12"
sphinx:
configuration: docs/source/conf.py
python:
install:
- requirements: docs/requirements.txt
-66
View File
@@ -1,66 +0,0 @@
language: python
addons:
apt:
packages:
- lib32stdc++6
- ash
- bash
- dash
- ksh
- mksh
- zsh
- pandoc
- gdb
- socat
- sshpass
- binutils
- qemu-user-static
- binutils-multiarch
- binutils-aarch64-linux-gnu
- binutils-arm-linux-gnueabihf
- binutils-mips-linux-gnu
- binutils-msp430
- binutils-powerpc-linux-gnu
- binutils-s390x-linux-gnu
- binutils-sparc64-linux-gnu
- bash-static
- python3-pip
cache:
- pip
- directories:
- usr
- /home/travis/virtualenv/python2.7.15/lib/python2.7/site-packages/
- /home/travis/virtualenv/python2.7.15/bin/
- /home/travis/virtualenv/python3.8.*/lib/python3.8/site-packages/
- /home/travis/virtualenv/python3.8.*/bin/
- docs/build/doctest/.doctrees
python:
- "2.7"
- "3.8"
before_install:
- echo $-
- source travis/install.sh
- source travis/ssh_setup.sh
- echo $-
install:
- /usr/bin/python3 -m pip install rpyc # for GDB
- pip install --upgrade pip
- pip install --upgrade flake8 appdirs # https://github.com/ActiveState/appdirs/issues/89#issuecomment-282326570
- python setup.py egg_info # pypa/pip#6275
- pip install --upgrade --editable .
- pip install --upgrade --requirement docs/requirements.txt
before_script:
- PWNLIB_NOTERM=1 python -c 'from pwn import *; print(pwnlib.term.term_mode)'
- PWNLIB_NOTERM=1 python -c 'from pwn import *; print(pwnlib.term.term_mode)'
- PWNLIB_NOTERM=1 python -c 'from pwn import *; print(pwnlib.term.term_mode)'
- PWNLIB_NOTERM=1 python -c 'from pwn import *; print(pwnlib.term.term_mode)'
- sudo sh -c "echo 0 > /proc/sys/kernel/yama/ptrace_scope"
script:
# stop the build if there are Python syntax errors or undefined names
- flake8 . --count --select=E9,F63,F7 --show-source --statistics --exclude=android-?dk # TODO: Add F82
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
- PWNLIB_NOTERM=1 coverage run -m sphinx -b doctest docs/source docs/build/doctest
- coverage combine
after_success:
- coveralls
- source travis/update_demo.sh
+471 -10
View File
@@ -9,11 +9,24 @@ The table below shows which release corresponds to each branch, and what date th
| Version | Branch | Release Date |
| ---------------- | -------- | ---------------------- |
| [4.7.0](#470) | `dev` |
| [4.6.0](#460) | `beta` |
| [4.5.1](#451) | `stable` | May 30, 2020
| [4.5.0](#450) | | Apr 30, 2020
| [4.4.0](#440) | | Mar 29, 2020
| [5.0.0](#500-dev) | `dev` |
| [4.15.0](#4150-stable) | `stable` | Oct 12, 2025
| [4.14.1](#4141) | | Mar 24, 2025
| [4.14.0](#4140) | | Jan 15, 2025
| [4.13.1](#4131) | | Sep 29, 2024
| [4.13.0](#4130) | | Aug 12, 2024
| [4.12.0](#4120) | | Feb 22, 2024
| [4.11.1](#4111) | | Nov 14, 2023
| [4.11.0](#4110) | | Sep 15, 2023
| [4.10.0](#4100) | | May 21, 2023
| [4.9.0](#490) | | Dec 29, 2022
| [4.8.0](#480) | | Apr 21, 2022
| [4.7.1](#471) | | Apr 20, 2022
| [4.7.0](#470) | | Nov 15, 2021
| [4.6.0](#460) | | Jul 12, 2021
| [4.5.1](#451) | | May 30, 2021
| [4.5.0](#450) | | Apr 30, 2021
| [4.4.0](#440) | | Mar 29, 2021
| [4.3.1](#431) | | Nov 29, 2020
| [4.3.0](#430) | | Oct 20, 2020
| [4.2.0](#420) | | Jul 3, 2020
@@ -60,15 +73,463 @@ The table below shows which release corresponds to each branch, and what date th
| [3.0.0](#300) | | Aug 20, 2016
| [2.2.0](#220) | | Jan 5, 2015
## 4.7.0 (`dev`)
## 5.0.0 (`dev`)
- [#2419][2419] riscv: avoid compressed instructions (if you need compressed, use .option rvc)
- [#2551][2551] Detect when kitty is being used as terminal
- [#2519][2519] Drop Python 2.7 support / Require Python 3.10
- [#2507][2507] Add `+LINUX` and `+WINDOWS` doctest options and start proper testing on Windows
- [#2522][2522] Support starting a kitty debugging window with the 'kitten' command
- [#2526][2526] Properly make use of extra arguments in `packing` utilities. `sign` parameter requires keyword syntax to specify it.
- [#2517][2517] Allow to passthru kwargs on `ssh.__getattr__` convenience function to fix SSH motd problems
- [#2529][2529] Add LoongArch64 support
- [#2504][2504] doc: add example case for `tuple` (host, port pair) in `gdb.attach`
- [#2546][2546] ssh: Allow passing disabled_algorithms keyword argument from ssh to paramiko
- [#2538][2538] Add `ssh -L` / `ssh.connect_remote()` workaround when `AllowTcpForwarding` is disabled
- [#2574][2574] Allow creating an ELF from in-memory bytes
- [#2575][2575] Detect when Terminator is being used as terminal
- [#2578][2578] Add gnome-terminal, Alacritty, Ttilix for run_in_new_terminal
- [#2590][2590] Add support for finding corefiles under WSL2
- [#2496][2496] Add linux ko file search support
- [#2542][2542] Decode `_IO_*` flags in `FileStructure` member
- [#2608][2608] Abort on `libcdb file libc.so --unstrip` if eu-unstrip is not installed
- [#2611][2611] Cleanup `pwnlib.lexer` exports and imports
- [#2615][2615] tube/process: Fix redirecting stderr to stdout on Windows
[2419]: https://github.com/Gallopsled/pwntools/pull/2419
[2551]: https://github.com/Gallopsled/pwntools/pull/2551
[2519]: https://github.com/Gallopsled/pwntools/pull/2519
[2507]: https://github.com/Gallopsled/pwntools/pull/2507
[2522]: https://github.com/Gallopsled/pwntools/pull/2522
[2526]: https://github.com/Gallopsled/pwntools/pull/2526
[2517]: https://github.com/Gallopsled/pwntools/pull/2517
[2529]: https://github.com/Gallopsled/pwntools/pull/2529
[2504]: https://github.com/Gallopsled/pwntools/pull/2504
[2546]: https://github.com/Gallopsled/pwntools/pull/2546
[2538]: https://github.com/Gallopsled/pwntools/pull/2538
[2574]: https://github.com/Gallopsled/pwntools/pull/2574
[2575]: https://github.com/Gallopsled/pwntools/pull/2575
[2578]: https://github.com/Gallopsled/pwntools/pull/2578
[2590]: https://github.com/Gallopsled/pwntools/pull/2590
[2496]: https://github.com/Gallopsled/pwntools/pull/2496
[2542]: https://github.com/Gallopsled/pwntools/pull/2542
[2608]: https://github.com/Gallopsled/pwntools/pull/2608
[2611]: https://github.com/Gallopsled/pwntools/pull/2611
[2615]: https://github.com/Gallopsled/pwntools/pull/2615
## 4.15.1
- [#2694][2694] fix: pad bytes fields to correct field size in FileStructure
- [#2701][2701] Fix `adb._build_date()` crash on devices with non-standard locale date strings
- [#2721][2721] Allow running with Unicorn 2.1.[34] but throw when emulating MIPS
- [#2773][2773] Disable debuginfod doctests in libcdb.unstrip_libc
- [#2772][2772] fix(packing): `dd()` no longer crashes on a `bytearray` destination
- [#2787][2787] gdb.corefile: Run gdb directly to prevent detach race
- [#2795][2795] regsort: Fix self-assignment detection through register aliases
- [#2524][2524] Raise EOFError during `process.recv` when stdout closes on Windows
- [#2530][2530] Do NOT error when passing directory arguments in `checksec` commandline tool.
- [#2506][2506] ROP: fix `ROP(ELF(exe)).leave` is `None` in some ELF
- [#2592][2592] pwnlib.config: Fix customization of `context.timeout`
- [#2598][2598] aarch64: Fix ABI definition
- [#2610][2610] Fix `log.progress` ignoring `context.log_console`
- [#2627][2627] Remove `pwnlib.util.iters.lookahead` (broken anyway, fails on Python 3.14+)
- [#2653][2653] Add aarch64_be qemu mapping
- [#2642][2642] Remove `pip` as explicit dependency
- [#2646][2646] fix(libcdb-cli): return early if no matched libc found
- [#2669][2669] asm: try native binutils before fallback architectures
- [#2677][2677] refactor: replace unsafe eval with safeeval.const in ROP cache loading
- [#2699][2699] Fix `tty` and `raw` arguments in `ssh.process()`
- [#2688][2688] Close SSH client connection when authentication failed
- [#2704][2704] ssh: Fix distro lookup on Ubuntu 24.04+
- [#2762][2762] fix(srop): correct amd64 SigreturnFrame `uc_sigmask` offset
- [#2767][2767] Support paginated libc.rip API requests to include all search results
- [#2739][2739] shellcraft: migrate lazy importer to find_spec for Python 3.12+
- [#2792][2792] Fix deprecation warning for not using `RLIM_INFINITY` in `resource.setrlimit` (Python 3.15)
[2694]: https://github.com/Gallopsled/pwntools/pull/2694
[2701]: https://github.com/Gallopsled/pwntools/pull/2701
[2721]: https://github.com/Gallopsled/pwntools/pull/2721
[2773]: https://github.com/Gallopsled/pwntools/pull/2773
[2772]: https://github.com/Gallopsled/pwntools/pull/2772
[2787]: https://github.com/Gallopsled/pwntools/pull/2787
[2795]: https://github.com/Gallopsled/pwntools/pull/2795
[2524]: https://github.com/Gallopsled/pwntools/pull/2524
[2530]: https://github.com/Gallopsled/pwntools/pull/2530
[2506]: https://github.com/Gallopsled/pwntools/pull/2506
[2592]: https://github.com/Gallopsled/pwntools/pull/2592
[2598]: https://github.com/Gallopsled/pwntools/pull/2598
[2610]: https://github.com/Gallopsled/pwntools/pull/2610
[2627]: https://github.com/Gallopsled/pwntools/pull/2627
[2653]: https://github.com/Gallopsled/pwntools/pull/2653
[2642]: https://github.com/Gallopsled/pwntools/pull/2642
[2646]: https://github.com/Gallopsled/pwntools/pull/2646
[2669]: https://github.com/Gallopsled/pwntools/pull/2669
[2677]: https://github.com/Gallopsled/pwntools/pull/2677
[2699]: https://github.com/Gallopsled/pwntools/pull/2699
[2688]: https://github.com/Gallopsled/pwntools/pull/2688
[2704]: https://github.com/Gallopsled/pwntools/pull/2704
[2762]: https://github.com/Gallopsled/pwntools/pull/2762
[2767]: https://github.com/Gallopsled/pwntools/pull/2767
[2739]: https://github.com/Gallopsled/pwntools/pull/2739
[2792]: https://github.com/Gallopsled/pwntools/pull/2792
## 4.15.0 (`stable`)
- [#2508][2508] Ignore a warning when compiling with asm on nix
- [#2471][2471] Properly close spawned kitty window
- [#2358][2358] Cache output of `asm()`
- [#2457][2457] Catch exception of non-ELF files in checksec.
- [#2444][2444] Add `ELF.close()` to release resources
- [#2413][2413] libcdb: improve the search speed of `search_by_symbol_offsets` in local libc-database
- [#2470][2470] Fix waiting for gdb under WSL2
- [#2479][2479] Support extracting libraries from Docker image in `pwn template`
- [#2483][2483] Only print `checksec` output of `ELF.libc` when it was printed for the `ELF` already
- [#2482][2482] Throw error when using `sni` and setting `server_hostname` manually in `remote`
- [#2478][2478] libcdb-cli: add `--offline-only`, refactor unstrip and add fetch parser for download libc-database
- [#2484][2484] Allow to disable caching
- [#2291][2291] Fix attaching to a gdbserver with tuple `gdb.attach(('0.0.0.0',12345))`
- [#2410][2410] Add `tube.upload_manually` to upload files in chunks
- [#2502][2502] Fix loading ELF files without valid .dynamic section
- [#2476][2476] Deprecate 'keepends' argument in favor of 'drop' in `tube.recvline*`
- [#2364][2364] Deprecate direct commandline scripts invocation and exclude nonsense ones
- [#2570][2570] Fix `pwn template` to skip Docker library extraction for statically linked binaries
- [#2545][2545] SSH: fix download/upload with -1 exit status
- [#2567][2567] Fix mistakenly parsing of ld-linux error messages.
- [#2576][2576] regsort: respect register aliases
- [#2595][2595] libcdb: Add Ubuntu and Debian debuginfod servers to default list
- [#2593][2593] Use unicorn on macOS w/ SIP enabled
- [#2587][2587] Support longer function names in Windows `getexport` shellcode
- [#2596][2596] Ignore `colored_traceback` error when TERM envvar is unset
- [#2579][2579] Fix poll error in `process.libs()` and clean up maps parsing
- [#2602][2602] Allow setting debugger path via context.gdb_binary
- [#2609][2609] Fix log level of child remotes of `server` tube
- [#2612][2612] Fix lookup of binutils for `mipsel` architecture
- [#2624][2624] Fix regression: gdbserver can't handle command-line argument containing whitespace
[2508]: https://github.com/Gallopsled/pwntools/pull/2508
[2471]: https://github.com/Gallopsled/pwntools/pull/2471
[2358]: https://github.com/Gallopsled/pwntools/pull/2358
[2457]: https://github.com/Gallopsled/pwntools/pull/2457
[2444]: https://github.com/Gallopsled/pwntools/pull/2444
[2413]: https://github.com/Gallopsled/pwntools/pull/2413
[2470]: https://github.com/Gallopsled/pwntools/pull/2470
[2479]: https://github.com/Gallopsled/pwntools/pull/2479
[2483]: https://github.com/Gallopsled/pwntools/pull/2483
[2482]: https://github.com/Gallopsled/pwntools/pull/2482
[2478]: https://github.com/Gallopsled/pwntools/pull/2478
[2484]: https://github.com/Gallopsled/pwntools/pull/2484
[2291]: https://github.com/Gallopsled/pwntools/pull/2291
[2410]: https://github.com/Gallopsled/pwntools/pull/2410
[2502]: https://github.com/Gallopsled/pwntools/pull/2502
[2476]: https://github.com/Gallopsled/pwntools/pull/2476
[2364]: https://github.com/Gallopsled/pwntools/pull/2364
[2570]: https://github.com/Gallopsled/pwntools/pull/2570
[2545]: https://github.com/Gallopsled/pwntools/pull/2545
[2567]: https://github.com/Gallopsled/pwntools/pull/2567
[2576]: https://github.com/Gallopsled/pwntools/pull/2576
[2595]: https://github.com/Gallopsled/pwntools/pull/2595
[2593]: https://github.com/Gallopsled/pwntools/pull/2593
[2587]: https://github.com/Gallopsled/pwntools/pull/2587
[2596]: https://github.com/Gallopsled/pwntools/pull/2596
[2579]: https://github.com/Gallopsled/pwntools/pull/2579
[2602]: https://github.com/Gallopsled/pwntools/pull/2602
[2609]: https://github.com/Gallopsled/pwntools/pull/2609
[2612]: https://github.com/Gallopsled/pwntools/pull/2612
[2624]: https://github.com/Gallopsled/pwntools/pull/2624
## 4.14.1
- [#2451][2451] Show symbols defined to value 0 (start of file)
- [#2533][2533] Fix installation on Python 3.5 and lower
- [#2518][2518] fix: update apport coredump path handling for CorefileFinder
- [#2552][2552] Fix memcpy shellcraft template off-by-one
- [#2559][2559] Fix parsing corefile with missing auxv
- [#2562][2562] Fix syntax highlighting of multiline comments in ASM
- [#2565][2565] Exclude broken Unicorn
[2451]: https://github.com/Gallopsled/pwntools/pull/2451
[2533]: https://github.com/Gallopsled/pwntools/pull/2533
[2518]: https://github.com/Gallopsled/pwntools/pull/2518
[2552]: https://github.com/Gallopsled/pwntools/pull/2552
[2559]: https://github.com/Gallopsled/pwntools/pull/2559
[2562]: https://github.com/Gallopsled/pwntools/pull/2562
[2565]: https://github.com/Gallopsled/pwntools/pull/2565
## 4.14.0
- [#2356][2356] Add local libc database provider for libcdb
- [#2360][2360] Add offline parameter for `search_by_hash` series function
- [#2388][2388] libcdb: add `offline_only` to `search_by_symbol_offsets`
- [#2374][2374] libcdb.unstrip_libc: debug symbols are fetched only if not present
- [#2327][2327] Add basic support to debug processes on Windows
- [#2437][2437] Support asm/disasm on Windows
- [#2330][2330] Change `context.newline` when setting `context.os` to `"windows"`
- [#2322][2322] Add basic RISCV64 shellcraft support
- [#2376][2376] Return buffered data on first EOF in tube.readline()
- [#2371][2371] Add functions for retrieving process mappings
- [#2398][2398] Add support for generating multiple shellcodes at a time in shellcraft
- [#2389][2389] Fix passing bytes to `context.log_file` and `crc.BitPolynom`
- [#2391][2391] Fix error message when passing invalid kwargs to `xor`
- [#2387][2387] Convert apport_corefile() output from bytes-like object to string
- [#2415][2415] Add shellcraft template for IPv6 socket
- [#2405][2405] Add "none" ssh authentication method
- [#2427][2427] Document behaviour of remote()'s sni argument as string.
- [#2382][2382] added optional port, gdb_args and gdbserver_args parameters to gdb.debug()
- [#2435][2435] Speed up gdbserver handshake in gdb.debug()
- [#2436][2436] Add resolution_addr parameter to Ret2dlresolvePayload
- [#2497][2497] Fix remote.fromsocket() to handle AF_INET6 socket
[2436]: https://github.com/Gallopsled/pwntools/pull/2436
[2371]: https://github.com/Gallopsled/pwntools/pull/2371
[2360]: https://github.com/Gallopsled/pwntools/pull/2360
[2356]: https://github.com/Gallopsled/pwntools/pull/2356
[2374]: https://github.com/Gallopsled/pwntools/pull/2374
[2327]: https://github.com/Gallopsled/pwntools/pull/2327
[2322]: https://github.com/Gallopsled/pwntools/pull/2322
[2330]: https://github.com/Gallopsled/pwntools/pull/2330
[2389]: https://github.com/Gallopsled/pwntools/pull/2389
[2391]: https://github.com/Gallopsled/pwntools/pull/2391
[2376]: https://github.com/Gallopsled/pwntools/pull/2376
[2387]: https://github.com/Gallopsled/pwntools/pull/2387
[2388]: https://github.com/Gallopsled/pwntools/pull/2388
[2398]: https://github.com/Gallopsled/pwntools/pull/2398
[2415]: https://github.com/Gallopsled/pwntools/pull/2415
[2405]: https://github.com/Gallopsled/pwntools/pull/2405
[2427]: https://github.com/Gallopsled/pwntools/pull/2405
[2382]: https://github.com/Gallopsled/pwntools/pull/2382
[2435]: https://github.com/Gallopsled/pwntools/pull/2435
[2437]: https://github.com/Gallopsled/pwntools/pull/2437
[2497]: https://github.com/Gallopsled/pwntools/pull/2497
## 4.13.1
- [#2445][2445] Fix parsing the PLT on Windows
- [#2466][2466] Fix PLT emulation with Unicorn 2.1.0
- [#2466][2466] Switch to PyPi Simple API for update checks
- [#2467][2467] Fix loading at all on Windows
- [#2469][2469] GDB 15+ rpyc detection
[2445]: https://github.com/Gallopsled/pwntools/pull/2445
[2466]: https://github.com/Gallopsled/pwntools/pull/2466
[2467]: https://github.com/Gallopsled/pwntools/pull/2467
[2469]: https://github.com/Gallopsled/pwntools/pull/2469
## 4.13.0
- [#2242][2242] Term module revamp: activating special handling of terminal only when necessary
- [#2277][2277] elf: Resolve more relocations into GOT entries
- [#2281][2281] FIX: Getting right amount of data for search fix
- [#2293][2293] Add x86 CET status to checksec output
- [#1763][1763] Allow to add to the existing environment in `process` instead of replacing it
- [#2307][2307] Fix `pwn libcdb file` crashing if "/bin/sh" string was not found
- [#2309][2309] Detect challenge binary and libc in `pwn template`
- [#2308][2308] Fix WinExec shellcraft to make sure it's 16 byte aligned
- [#2279][2279] Make `pwn template` always set context.binary
- [#2310][2310] Add support to start a process on Windows
- [#2335][2335] Add lookup optimizations in DynELF
- [#2334][2334] Speed up disasm commandline tool with colored output
- [#2328][2328] Lookup using $PATHEXT file extensions in `which` on Windows
- [#2189][2189] Explicitly define p64/u64 functions for IDE support
- [#2339][2339] Fix: Allow setting attributes on gdb Breakpoints
- [#2323][2323] Retry failed lookups after one week in libcdb
- [#2325][2325] Match against local system libc first in libcdb
- [#2336][2336] Add `ELF.stripped` and `ELF.debuginfo` properties
- [#2161][2161] Add basic support for darwin shellcraft/asm/disasm/run_shellcode/run_assembly
- [#2161][2161] Fix freebsd amd64 SyscallABI
- [#2160][2161] Fix invalid shellcraft.mov on arm64
- [#2284][2161] Fix invalid shellcraft.pushstr_array on arm64
- [#2345][2345] Fix pwn constgrep when it matches a non-constant type
- [#2338][2338] Fix: follow symlink for libs on ssh connection
- [#2341][2341] Launch GDB correctly in iTerm on Mac
- [#2268][2268] Add a `flatten` argument to `ssh.libs`
- [#2347][2347] Fix/workaround Unicorn Engine 1GB limit that calls exit()
- [#2233][2233] Fix gdb.debug: exe parameter now respected, allow empty argv
- [#2373][2373] Fix displaying bright color variation in terminal output
- [#2378][2378] Don't go though a shell in `gdb.debug`
[2242]: https://github.com/Gallopsled/pwntools/pull/2242
[2277]: https://github.com/Gallopsled/pwntools/pull/2277
[2281]: https://github.com/Gallopsled/pwntools/pull/2281
[2293]: https://github.com/Gallopsled/pwntools/pull/2293
[1763]: https://github.com/Gallopsled/pwntools/pull/1763
[2307]: https://github.com/Gallopsled/pwntools/pull/2307
[2309]: https://github.com/Gallopsled/pwntools/pull/2309
[2308]: https://github.com/Gallopsled/pwntools/pull/2308
[2279]: https://github.com/Gallopsled/pwntools/pull/2279
[2310]: https://github.com/Gallopsled/pwntools/pull/2310
[2335]: https://github.com/Gallopsled/pwntools/pull/2335
[2334]: https://github.com/Gallopsled/pwntools/pull/2334
[2328]: https://github.com/Gallopsled/pwntools/pull/2328
[2189]: https://github.com/Gallopsled/pwntools/pull/2189
[2339]: https://github.com/Gallopsled/pwntools/pull/2339
[2323]: https://github.com/Gallopsled/pwntools/pull/2323
[2325]: https://github.com/Gallopsled/pwntools/pull/2325
[2336]: https://github.com/Gallopsled/pwntools/pull/2336
[2161]: https://github.com/Gallopsled/pwntools/pull/2161
[2345]: https://github.com/Gallopsled/pwntools/pull/2345
[2338]: https://github.com/Gallopsled/pwntools/pull/2338
[2341]: https://github.com/Gallopsled/pwntools/pull/2341
[2268]: https://github.com/Gallopsled/pwntools/pull/2268
[2347]: https://github.com/Gallopsled/pwntools/pull/2347
[2233]: https://github.com/Gallopsled/pwntools/pull/2233
[2373]: https://github.com/Gallopsled/pwntools/pull/2373
[2378]: https://github.com/Gallopsled/pwntools/pull/2378
## 4.12.0
- [#2202][2202] Fix `remote` and `listen` in sagemath
- [#2117][2117] Add -p (--prefix) and -s (--separator) arguments to `hex` command
- [#2221][2221] Add shellcraft.sleep template wrapping SYS_nanosleep
- [#2219][2219] Fix passing arguments on the stack in shellcraft syscall template
- [#2212][2212] Add `--libc libc.so` argument to `pwn template` command
- [#2257][2257] Allow creation of custom templates for `pwn template` command
- [#2225][2225] Allow empty argv in ssh.process()
- [#2349][2349] Fix term.readline omitting a trailing \n
- [#2352][2352] add `RETURN_CONST` as an allowed `_const_code` in safeeval
[2202]: https://github.com/Gallopsled/pwntools/pull/2202
[2117]: https://github.com/Gallopsled/pwntools/pull/2117
[2221]: https://github.com/Gallopsled/pwntools/pull/2221
[2219]: https://github.com/Gallopsled/pwntools/pull/2219
[2212]: https://github.com/Gallopsled/pwntools/pull/2212
[2257]: https://github.com/Gallopsled/pwntools/pull/2257
[2225]: https://github.com/Gallopsled/pwntools/pull/2225
[2349]: https://github.com/Gallopsled/pwntools/pull/2349
[2352]: https://github.com/Gallopsled/pwntools/pull/2352
## 4.11.1
- [#2271][2271] FIX: Generated shebang with path to python invalid if path contains spaces
- [#2272][2272] Fix `tube.clean_and_log` not logging buffered data
- [#2281][2281] FIX: Getting right amount of data for search fix
- [#2287][2287] Fix `_countdown_handler` not invoking `timeout_change`
- [#2294][2294] Fix atexit SEGV in aarch64 loader
[2271]: https://github.com/Gallopsled/pwntools/pull/2271
[2272]: https://github.com/Gallopsled/pwntools/pull/2272
[2281]: https://github.com/Gallopsled/pwntools/pull/2281
[2287]: https://github.com/Gallopsled/pwntools/pull/2287
[2294]: https://github.com/Gallopsled/pwntools/pull/2294
## 4.11.0
- [#2185][2185] make fmtstr module able to create payload without $ notation
- [#2103][2103] Add search for libc binary by leaked function addresses `libcdb.search_by_symbol_offsets()`
- [#2177][2177] Support for RISC-V 64-bit architecture
- [#2186][2186] Enhance `ELF.nx` and `ELF.execstack`
- [#2129][2129] Handle `context.newline` correctly when typing in `tube.interactive()`
- [#2214][2214] Fix bug at ssh.py:`download` and `download_file` with relative paths
- [#2241][2241] Fix ssh.process not setting ssh_process.cwd attribute
- [#2261][2261] Fix corefile module after pyelftools update
[2185]: https://github.com/Gallopsled/pwntools/pull/2185
[2103]: https://github.com/Gallopsled/pwntools/pull/2103
[2177]: https://github.com/Gallopsled/pwntools/pull/2177
[2186]: https://github.com/Gallopsled/pwntools/pull/2186
[2129]: https://github.com/Gallopsled/pwntools/pull/2129
[2214]: https://github.com/Gallopsled/pwntools/pull/2214
[2241]: https://github.com/Gallopsled/pwntools/pull/2241
[2261]: https://github.com/Gallopsled/pwntools/pull/2261
## 4.10.0
In memoriam — [Zach Riggle][zach] — long time contributor and maintainer of Pwntools.
- [#2062][2062] make pwn cyclic -l work with entry larger than 4 bytes
- [#2092][2092] shellcraft: dup() is now called dupio() consistently across all supported arches
- [#2093][2093] setresuid() in shellcraft uses current euid by default
- [#2125][2125] Allow tube.recvregex to return capture groups
- [#2144][2144] Removes `p2align 2` `asm()` headers from `x86-32`, `x86-64` and `mips` architectures to avoid inconsistent instruction length when patching binaries
[2062]: https://github.com/Gallopsled/pwntools/pull/2062
[2092]: https://github.com/Gallopsled/pwntools/pull/2092
[2093]: https://github.com/Gallopsled/pwntools/pull/2093
[2125]: https://github.com/Gallopsled/pwntools/pull/2125
[2144]: https://github.com/Gallopsled/pwntools/pull/2144
[zach]: https://github.com/zachriggle
## 4.9.0
- [#1975][1975] Add libcdb commandline tool
- [#1979][1979] Add `js_escape()` and `js_unescape()` to `util.fiddling`
- [#2011][2011] Fix tube's debug output of same byte compression
- [#2023][2023] Support KDE Konsole in run_in_new_terminal function
- [#2027][2027] Fix ELF.libc_start_main_return with glibc 2.34
- [#2033][2033] Quote file and core path in generated GDB script
- [#2035][2035] Change Buffer's parent class to object
- [#2037][2037] Allow SSH tunnel to be treated like a TCP socket (with 'raw=True')
- [#2123][2123] Fix ROP without a writeable cache directory
- [#2124][2124] Fix `tube.recvpred()` timeout argument
[1975]: https://github.com/Gallopsled/pwntools/pull/1975
[1979]: https://github.com/Gallopsled/pwntools/pull/1979
[2011]: https://github.com/Gallopsled/pwntools/pull/2011
[2023]: https://github.com/Gallopsled/pwntools/pull/2023
[2027]: https://github.com/Gallopsled/pwntools/pull/2027
[2033]: https://github.com/Gallopsled/pwntools/pull/2033
[2035]: https://github.com/Gallopsled/pwntools/pull/2035
[2037]: https://github.com/Gallopsled/pwntools/pull/2037
[2123]: https://github.com/Gallopsled/pwntools/pull/2123
[2124]: https://github.com/Gallopsled/pwntools/pull/2124
## 4.8.0
- [#1922][1922] Fix logic in `wait_for_debugger`
- [#1828][1828] libcdb: Load debug info and unstrip libc binary
- [#1939][1939] Fix error in validating log levels
- [#1981][1981] Fix `cyclic_find()` to make it work with large int values
[1922]: https://github.com/Gallopsled/pwntools/pull/1922
[1828]: https://github.com/Gallopsled/pwntools/pull/1828
[1939]: https://github.com/Gallopsled/pwntools/pull/1939
[1981]: https://github.com/Gallopsled/pwntools/pull/1981
## 4.7.1
- [#1784][1784] Use temporary cache directory when persistent cache cannot be used
- [#1973][1973] ELF symbols can be looked up by bytes values
- several bugfixes ([#2012][2012], [#2031][2031], [#1912][1912], [#1961][1961],
[#2007][2007], [#2040][2040], [#2051][2051])
[1784]: https://github.com/Gallopsled/pwntools/pull/1784
[1912]: https://github.com/Gallopsled/pwntools/pull/1912
[1961]: https://github.com/Gallopsled/pwntools/pull/1961
[1973]: https://github.com/Gallopsled/pwntools/pull/1973
[2007]: https://github.com/Gallopsled/pwntools/pull/2007
[2012]: https://github.com/Gallopsled/pwntools/pull/2012
[2031]: https://github.com/Gallopsled/pwntools/pull/2031
[2040]: https://github.com/Gallopsled/pwntools/pull/2040
[2051]: https://github.com/Gallopsled/pwntools/pull/2051
## 4.7.0
- [#1733][1733] Update libc headers -> more syscalls available!
- [#1876][1876] add `self.message` and change `sys.exc_type` to `sys.exec_info()` in PwnlibException
- [#1877][1877] encoders error message handles when `avoid` is bytes in python3
- [#1891][1891] Keep ROP gadgets when setting registers via setattr/call
- [#1892][1892] Silence SIGPIPE error for "pwn phd"
- [#1893][1893] Fix bytes warning in "pwn cyclic"
- [#1897][1897] Add basic support for RISC-V
- [#1903][1903] Add zsh completion script
- [#1904][1904] Add bash completion script
- [#1906][1906] Defer import of several modules to save on startup time
- [#1921][1921] Add basic support for the bare-metal ARM specific toolchain
- [#1995][1995] Add `shellcraft.*.linux.cat2`, which uses alloc+read+write instead of sendfile
[1733]: https://github.com/Gallopsled/pwntools/pull/1733
[1876]: https://github.com/Gallopsled/pwntools/pull/1876
[1877]: https://github.com/Gallopsled/pwntools/pull/1877
[1891]: https://github.com/Gallopsled/pwntools/pull/1891
[1892]: https://github.com/Gallopsled/pwntools/pull/1892
[1893]: https://github.com/Gallopsled/pwntools/pull/1893
[1897]: https://github.com/Gallopsled/pwntools/pull/1897
[1903]: https://github.com/Gallopsled/pwntools/pull/1903
[1904]: https://github.com/Gallopsled/pwntools/pull/1904
[1906]: https://github.com/Gallopsled/pwntools/pull/1906
[1921]: https://github.com/Gallopsled/pwntools/pull/1921
[1995]: https://github.com/Gallopsled/pwntools/pull/1995
## 4.6.0 (`beta`)
## 4.6.0
- [#1429][1429] Add a mechanism for ret2csu (originally #1138)
- [#1566][1566] Add `ignore_config` argument to `pwnlib.tubes.ssh` and improve `allow_agent` implementation
@@ -90,9 +551,9 @@ The table below shows which release corresponds to each branch, and what date th
[1776]: https://github.com/Gallopsled/pwntools/pull/1776
[1846]: https://github.com/Gallopsled/pwntools/pull/1846
## 4.5.1 (`stable`)
## 4.5.1
- [#1902][1902] Always specify -F and -P for tmux in run_in_new_termianl
- [#1902][1902] Always specify -F and -P for tmux in `run_in_new_terminal`
[1902]: https://github.com/Gallopsled/pwntools/pull/1902
@@ -227,7 +688,7 @@ The table below shows which release corresponds to each branch, and what date th
[fecf9f]: http://github.com/Gallopsled/pwntools/commit/fecf9f
[1454]: https://github.com/Gallopsled/pwntools/pull/1454
## 4.1.7 (`stable`)
## 4.1.7
- [#1615][1615] Fix aarch64 pushstr and pushstr_array
+3 -1
View File
@@ -1,7 +1,9 @@
graft build
graft examples
graft extra
graft travis
include *.md *.txt *.sh *.yml MANIFEST.in
recursive-include docs *.rst *.png Makefile *.py *.txt
recursive-include pwnlib *.py *.asm *.rst *.md *.txt *.sh __doc__ *.mako
recursive-include pwn *.py *.asm *.rst *.md *.txt *.sh
recursive-exclude *.pyc
global-exclude *.pyc
+5 -5
View File
@@ -3,10 +3,10 @@
[![PyPI](https://img.shields.io/pypi/v/pwntools?style=flat)](https://pypi.python.org/pypi/pwntools/)
[![Docs](https://readthedocs.org/projects/pwntools/badge/?version=stable)](https://docs.pwntools.com/)
[![Travis](https://img.shields.io/travis/Gallopsled/pwntools/dev?logo=Travis)](https://travis-ci.org/Gallopsled/pwntools)
[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/Gallopsled/pwntools/Continuous%20Integration/dev?logo=GitHub)](https://github.com/Gallopsled/pwntools/actions?query=workflow%3A%22Continuous+Integration%22+branch%3Adev)
[![GitHub Workflow Status (dev)](https://img.shields.io/github/actions/workflow/status/Gallopsled/pwntools/ci.yml?branch=dev&logo=GitHub)](https://github.com/Gallopsled/pwntools/actions/workflows/ci.yml?query=branch%3Adev)
[![Coveralls](https://img.shields.io/coveralls/github/Gallopsled/pwntools/dev?logo=coveralls)](https://coveralls.io/github/Gallopsled/pwntools?branch=dev)
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](http://choosealicense.com/licenses/mit/)
[![Packaging status](https://img.shields.io/repology/repositories/python:pwntools)](https://repology.org/project/python:pwntools/versions)
[![Discord](https://img.shields.io/discord/809590285687980052?label=Discord&style=plastic)](https://discord.gg/96VA2zvjCB)
[![Twitter](https://img.shields.io/twitter/follow/Pwntools)](https://twitter.com/pwntools)
@@ -32,13 +32,13 @@ To get you started, we've provided some example solutions for past CTF challenge
# Installation
Pwntools is best supported on 64-bit Ubuntu LTS releases (14.04, 16.04, 18.04, and 20.04). Most functionality should work on any Posix-like distribution (Debian, Arch, FreeBSD, OSX, etc.).
Pwntools is best supported on 64-bit Ubuntu LTS releases (18.04, 20.04, 22.04, and 24.04). Most functionality should work on any Posix-like distribution (Debian, Arch, FreeBSD, OSX, etc.).
Python3 is suggested, but Pwntools still works with Python 2.7. Most of the functionality of pwntools is self-contained and Python-only. You should be able to get running quickly with
```sh
apt-get update
apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
sudo apt-get update
sudo apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade pwntools
```
+32
View File
@@ -0,0 +1,32 @@
# Security Policy
## Supported Versions
| Version | Supported |
| ------------- | ------------------ |
| latest dev | :white_check_mark: |
| latest beta | :white_check_mark: |
| latest stable | :white_check_mark: |
| anything else | :x: |
## Reporting a Vulnerability
The aim of pwntools is exploiting software vulnerabilities, which is an unusual position, but it nevertheless can have its own security issues.
Especially that an attacker (=re-victim) is usually not prepared to be attacked back (by the re-attacker).
The first question to ask yourself is: is this an actual vulnerability?
- can it be triggered by a re-attacker (malicious honeypot pretending to be a vulnerable service)?
- does it impact the attacker (=re-victim)?
- is it serious?
* *availability: medium* means *at least* exhausting RAM or disk space of the attacker (=re-victim)
* *confidentiality: medium* means *at least* reading the filesystem of the attacker (=re-victim)
* *integrity: medium* means *at least* performing uncontrolled actions or data corruption on behalf of the attacker (=re-victim)
* if crucial for some sophisticated exploit chain, it is always serious
* `safe_eval` bypasses **are** serious.
* an example of what was **kind of** serious: [#1732](https://github.com/Gallopsled/pwntools/pull/1732)
- can it be fixed without compromising on Pwntools' usability?
If at least one of the answers is no, then this is NOT a vulnerability, so just file a bug report or feature request, without the weird confidential disclosure dance.
Just e-mail the maintainers. Arusekk is the one that is currently the most excited to fix vulnerabilities.
Or create a CTF task! Prove a point the good old hacker way!
+2 -3
View File
@@ -6,7 +6,6 @@ SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = build
DASHBUILD = ./dashbuild.py
TAR = tar
# Internal variables.
@@ -145,8 +144,8 @@ gettext:
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
dash:
$(DASHBUILD) source $(BUILDDIR)/dash
$(TAR) --exclude='.DS_Store' -cvzf $(BUILDDIR)/dash/pwntools.tgz -C $(BUILDDIR)/dash pwntools.docset
$(SPHINXBUILD) -b html -d $(BUILDDIR)/doctrees -t dash source $(BUILDDIR)/html
doc2dash $(BUILDDIR)/html -d $(BUILDDIR)/dash -n pwntools -f -I index.html
@echo "Build finished. The Dash docset is in $(BUILDDIR)/dash."
changes:
-99
View File
@@ -1,99 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Helper to build Dash docset from sphinx source files.
#
# Dash docsets can be read by various applications:
#
# Dash OS X, iOS https://kapeli.com
# Zeal Linux, Windows https://zealdocs.org
# Velocity Windows http://velocity.silverlakesoftware.com
# LovelyDocs Android http://lovelydocs.io
# dasht POSIX https://github.com/sunaku/dasht
# Helm Dash emacs https://github.com/areina/helm-dash
#
import argparse
import doc2dash.__main__
import os, os.path
import sphinx
import sqlite3
import sys
sys.path.append(os.path.abspath(os.path.join('..', 'pwnlib')))
import version
def main(args):
"""Generate a Dash docset from Sphinx source files."""
srcdir = args.srcdir
dstdir = args.dstdir
name = args.name
if not os.path.exists(dstdir):
os.makedirs(dstdir)
# Generate HTML without indices.
sphinx.build_main([ "sphinx-build", "-b", "html", "-d", os.path.join(dstdir, "doctrees"), \
"-t", "dash", srcdir, os.path.join(dstdir, "html") ])
# Convert to docset.
try:
doc2dash.__main__.main.main( \
[ os.path.join(dstdir, "html"), "-d", dstdir, "-n", name, \
"-f", "-I", "index.html"], "doc2dash", False)
except SystemExit as e:
pass
# Insert a link to the online version.
online = args.online
if online is not None and online != "":
url = online.replace("@VERSION", args.version)
with open(os.path.join(dstdir, name+".docset", "Contents", "Info.plist"), "r+") as f_info:
pl = f_info.read()
pl = pl.replace("</dict>", \
"\t<key>DashDocSetFallbackURL</key>\n\t<string>%s</string>\n</dict>" % url)
f_info.seek(0)
f_info.write(pl)
f_info.truncate()
# Modify the CSS to hide the menu included in the HTML.
with open(os.path.join(dstdir, name+".docset", "Contents", "Resources", "Documents", "_static", "css", "theme.css"), "r+") as f_css:
css = f_css.read()
css = css.replace( \
'@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}',\
'@media screen {.wy-body-for-nav{background:#fcfcfc}' )
css = css.replace( \
'@media screen and (max-width: 480px)', \
'@media screen ')
f_css.seek(0)
f_css.write(css)
f_css.truncate()
# Modify the index
db_conn = sqlite3.connect(os.path.join(dstdir, name+".docset", "Contents", "Resources", "docSet.dsidx"))
try:
db_conn.execute('INSERT INTO "searchIndex" ("name","type","path") VALUES ' \
'("1 Contents", "Guide", "index.html"), ' \
'("2 About pwntools", "Guide", "about.html"), ' \
'("3 Installation", "Guide", "install.html"), ' \
'("4 Getting Started", "Guide", "intro.html"), ' \
'("5 Globals (pwn)", "Guide", "globals.html"), ' \
'("6 Command Line Tools", "Guide", "commandline.html")')
db_conn.execute('DELETE FROM "searchIndex" WHERE "type" = "Module" AND ("name" = "pwn" OR "name" = "pwnlib")')
db_conn.commit()
finally:
db_conn.close()
return 0
parser = argparse.ArgumentParser()
parser.add_argument("--name", help="docset name", default="pwntools")
parser.add_argument("--online", help="URL for online docs", default="https://pwntools.readthedocs.org/en/@VERSION/")
parser.add_argument("--version", help="pwntools version", default=version.__version__)
parser.add_argument("srcdir", help="Source directory containing .rst files")
parser.add_argument("dstdir", help="Destination and working directory")
main(parser.parse_args())
+12 -6
View File
@@ -1,17 +1,23 @@
capstone
coveralls
coverage[toml]
python-dateutil
doc2dash
docutils<0.18; python_version<'3'
docutils>=0.18; python_version>='3'
intervaltree
isort
mako>=1.0.0
paramiko>=1.15.2
pip>=6.0.8
pyelftools>=0.2.3
pyelftools>=0.29, <0.30; python_version<'3'
pyelftools>=0.29; python_version>='3'
pygments>=2.0
pypandoc
pyserial>=2.7
pysocks
psutil
requests>=2.5.1
ropgadget>=5.3
sphinx<3.4
sphinx==1.8.6; python_version<'3'
sphinx>=8.1.3, <9; python_version>='3'
sphinx_rtd_theme
sphinxcontrib-napoleon
sphinxcontrib-autoprogram<=0.1.5
sphinxcontrib-autoprogram<=0.1.5
+37 -14
View File
@@ -25,7 +25,7 @@ build_dash = tags.has('dash')
# documentation root, use os.path.abspath to make it absolute, like shown here.
sys.path.insert(0, os.path.abspath('../..'))
import pwnlib
import pwnlib.update
pwnlib.update.disabled = True
# If your documentation needs a minimal Sphinx version, state it here.
@@ -42,8 +42,8 @@ extensions = [
'sphinx.ext.coverage',
'sphinx.ext.todo',
'sphinx.ext.intersphinx',
'sphinx.ext.napoleon',
'sphinxcontrib.autoprogram',
'sphinxcontrib.napoleon'
]
# Disable "info" logging directly to stdout by Sphinx
@@ -71,8 +71,10 @@ doctest_global_setup = '''
import sys, os
os.environ['PWNLIB_NOTERM'] = '1'
os.environ['PWNLIB_RANDOMIZE'] = '0'
import pwnlib, logging
import six
import pwnlib.update
import pwnlib.util.fiddling
import logging
pwnlib.update.disabled = True
pwnlib.context.context.reset_local()
pwnlib.context.ContextType.defaults['log_level'] = logging.ERROR
@@ -96,8 +98,8 @@ pwnlib.context.ContextType.defaults['log_console'] = stdout()
github_actions = os.environ.get('USER') == 'runner'
travis_ci = os.environ.get('USER') == 'travis'
local_doctest = os.environ.get('USER') == 'pwntools'
branch_dev = os.environ.get('GITHUB_BASE_REF') == 'dev'
skip_android = True
is_python2 = six.PY2
'''
autoclass_content = 'both'
@@ -168,7 +170,7 @@ pygments_style = 'sphinx'
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'default'
html_theme = 'sphinx_rtd_theme'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
@@ -264,8 +266,8 @@ latex_documents = [
u'2016, Gallopsled et al.', 'manual'),
]
intersphinx_mapping = {'python': ('https://docs.python.org/3.8', None),
'paramiko': ('https://paramiko-docs.readthedocs.org/en/2.1/', None)}
intersphinx_mapping = {'python': ('https://docs.python.org/3/', None),
'paramiko': ('https://docs.paramiko.org/en/2.1/', None)}
# The name of an image file (relative to this directory) to place at the top of
# the title page.
@@ -358,6 +360,9 @@ def linkcode_resolve(domain, info):
else:
filename = info['module'].replace('.', '/') + '.py'
if isinstance(val, property):
val = val.fget
if isinstance(val, (types.ModuleType, types.MethodType, types.FunctionType, types.TracebackType, types.FrameType, types.CodeType) + six.class_types):
try:
lines, first = inspect.getsourcelines(val)
@@ -376,11 +381,10 @@ if build_dash:
on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
if not on_rtd: # only import and set the theme if we're building docs locally
import sphinx_rtd_theme
html_theme = 'sphinx_rtd_theme'
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
# otherwise, readthedocs.org uses their theme by default, so no need to specify it
import alabaster
html_theme = 'alabaster'
html_theme_path = [alabaster.get_path()]
html_theme_options = { 'nosidebar' : True }
# -- Customization to Sphinx autodoc generation --------------------------------------------
@@ -412,7 +416,14 @@ class Py2OutputChecker(_DummyClass, doctest.OutputChecker):
if sup(rly_want, got, optionflags):
return True
rly_want = ' '.join(x[:2].replace('b"',' "').replace("b'"," '")+x[2:] for x in want.replace('\n','\n ').split(' ')).replace('\n ','\n')
return sup(rly_want, got, optionflags)
if sup(rly_want, got, optionflags):
return True
for wantl, gotl in six.moves.zip_longest(want.splitlines(), got.splitlines(), fillvalue=''):
rly_want1 = '['.join(x[:2].replace('b"','"').replace("b'","'")+x[2:] for x in wantl.split('['))
rly_want2 = ' '.join(x[:2].replace('b"',' "').replace("b'"," '")+x[2:] for x in wantl.split(' '))
if not sup(rly_want1, gotl, optionflags) and not sup(rly_want2, gotl, optionflags):
return False
return True
def py2_doctest_init(self, checker=None, verbose=None, optionflags=0):
if checker is None:
@@ -426,3 +437,15 @@ if 'doctest' in sys.argv:
if sys.version_info[:1] < (3,):
import sphinx.ext.doctest
sphinx.ext.doctest.SphinxDocTestRunner.__init__ = py2_doctest_init
else:
# monkey patching paramiko due to https://github.com/paramiko/paramiko/pull/1661
import paramiko.client
import binascii
paramiko.client.hexlify = lambda x: binascii.hexlify(x).decode()
paramiko.util.safe_string = lambda x: '' # function result never *actually used*
class EndlessLoop(Exception): pass
def alrm_handler(sig, frame):
signal.alarm(180) # three minutes
raise EndlessLoop()
signal.signal(signal.SIGALRM, alrm_handler)
signal.alarm(600) # ten minutes
+1
View File
@@ -3,6 +3,7 @@
from pwn import *
from glob import glob
from pwnlib.elf.maps import CAT_PROC_MAPS_EXIT
import shutil
:mod:`pwnlib.elf.elf` --- ELF Files
===========================================================
+12 -3
View File
@@ -13,7 +13,7 @@ readthedocs_. It comes in three primary flavors:
- Dev_
.. _readthedocs: https://readthedocs.org
.. _docs.pwntools.com: https://docs.pwntools.com
.. _docs.pwntools.com: https://docs.pwntools.com/en/latest
.. _Stable: https://docs.pwntools.com/en/stable
.. _Beta: https://docs.pwntools.com/en/beta
.. _Dev: https://docs.pwntools.com/en/dev
@@ -52,7 +52,7 @@ Each of the ``pwntools`` modules is documented here.
context
dynelf
encoders
elf
elf/*
exception
filepointer
filesystem
@@ -65,7 +65,6 @@ Each of the ``pwntools`` modules is documented here.
protocols
qemu
replacements
rop
rop/*
runner
shellcraft
@@ -78,6 +77,7 @@ Each of the ``pwntools`` modules is documented here.
update
useragents
util/*
windbg
.. toctree::
:hidden:
@@ -92,3 +92,12 @@ Each of the ``pwntools`` modules is documented here.
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
Bytes
-----
The bytes vs text distinction is so important that it even made it to this main page.
See the pwntools-tutorial_ repo for the latest tutorial finally
explaining the difference once and for all (hopefully).
.. _pwntools-tutorial: https://github.com/Gallopsled/pwntools-tutorial/blob/master/bytes.md
+11 -10
View File
@@ -15,6 +15,9 @@ following system libraries installed.
install/*
Note: For Mac OS X you will need to have cmake ``brew install cmake`` and pkg-config ``brew install pkg-config`` installed.
Released Version
-----------------
@@ -25,8 +28,8 @@ Python3
.. code-block:: bash
$ apt-get update
$ apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
$ sudo apt-get update
$ sudo apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
$ python3 -m pip install --upgrade pip
$ python3 -m pip install --upgrade pwntools
@@ -40,8 +43,8 @@ Additionally, due to `pip` dropping support for Python2, a specfic version of `p
.. code-block:: bash
$ apt-get update
$ apt-get install python python-pip python-dev git libssl-dev libffi-dev build-essential
$ sudo apt-get update
$ sudo apt-get install python python-pip python-dev git libssl-dev libffi-dev build-essential
$ python2 -m pip install --upgrade pip==20.3.4
$ python2 -m pip install --upgrade pwntools
@@ -51,13 +54,11 @@ Command-Line Tools
When installed with ``sudo`` the above commands will install Pwntools' command-line tools to somewhere like ``/usr/bin``.
However, if you run as an unprivileged user, you may see a warning message that looks like this:
However, if you run as an unprivileged user, you may see a warning message that looks like this::
.. code-block::
WARNING: The scripts asm, checksec, common, constgrep, cyclic, debug, disablenx, disasm,
elfdiff, elfpatch, errno, hex, main, phd, pwn, pwnstrip, scramble, shellcraft, template,
unhex, update and version are installed in '/home/user/.local/bin' which is not on PATH.
WARNING: The scripts asm, checksec, common, constgrep, cyclic, debug, disablenx, disasm,
elfdiff, elfpatch, errno, hex, main, phd, pwn, pwnstrip, scramble, shellcraft, template,
unhex, update and version are installed in '/home/user/.local/bin' which is not on PATH.
Follow the instructions listed and add ``~/.local/bin`` to your ``$PATH`` environment variable.
+18 -11
View File
@@ -5,7 +5,7 @@ Assembly of foreign architectures (e.g. assembling Sparc shellcode on
Mac OS X) requires cross-compiled versions of ``binutils`` to be
installed. We've made this process as smooth as we can.
In these examples, replace ``$ARCH`` with your target architecture (e.g., arm, mips64, vax, etc.).
In these examples, replace ``$ARCH`` with your target architecture (e.g., arm, aarch64, mips64, vax, etc.).
Building `binutils` from source takes about 60 seconds on a modern 8-core machine.
@@ -18,28 +18,35 @@ Ubuntu Xenial (16.04) has official packages for most architectures, and does not
.. code-block:: bash
$ apt-get install software-properties-common
$ apt-add-repository ppa:pwntools/binutils
$ apt-get update
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:pwntools/binutils
$ sudo apt-get update
Then, install the binutils for your architecture.
.. code-block:: bash
$ apt-get install binutils-$ARCH-linux-gnu
$ sudo apt-get install binutils-$ARCH-linux-gnu
Mac OS X
^^^^^^^^^^^^^^^^
Mac OS X is just as easy, but requires building binutils from source.
However, we've made ``homebrew`` recipes to make this a single command.
After installing `brew <http://brew.sh>`__, grab the appropriate
However, we've made ``homebrew`` recipes to make this just two commands.
After installing `brew <https://brew.sh>`__, grab the appropriate
recipe from our `binutils
repo <https://github.com/Gallopsled/pwntools-binutils/>`__.
.. code-block:: bash
$ brew install https://raw.githubusercontent.com/Gallopsled/pwntools-binutils/master/macos/binutils-$ARCH.rb
$ wget https://raw.githubusercontent.com/Gallopsled/pwntools-binutils/master/macos/binutils-$ARCH.rb
$ brew install ./binutils-$ARCH.rb
Windows
^^^^^^^^^^^^^^^^
Windows support is experimental. You can try installing a prebuilt version of binutils
for your desired architecture from the `GNU Toolchains <https://gnutoolchains.com/>`__ project.
Alternate OSes
^^^^^^^^^^^^^^^^
@@ -51,10 +58,10 @@ OSes, ``binutils`` is simple to build by hand.
#!/usr/bin/env bash
V=2.25 # Binutils Version
V=2.38 # Binutils Version
ARCH=arm # Target architecture
cd /tmp
cd ${TMPDIR:-/tmp}
wget -nc https://ftp.gnu.org/gnu/binutils/binutils-$V.tar.gz
wget -nc https://ftp.gnu.org/gnu/binutils/binutils-$V.tar.gz.sig
@@ -70,7 +77,7 @@ OSes, ``binutils`` is simple to build by hand.
export AS=as
../binutils-$V/configure \
--prefix=/usr/local \
--prefix=${PREFIX:-/usr/local} \
--target=$ARCH-unknown-linux-gnu \
--disable-static \
--disable-multilib \
+1 -1
View File
@@ -10,7 +10,7 @@ Ubuntu
.. code-block:: bash
$ apt-get install python-dev
$ sudo apt-get install python-dev
Mac OS X
^^^^^^^^^^^^^^^^
+2
View File
@@ -34,6 +34,8 @@ This exposes a standard interface to talk to processes, sockets, serial ports,
and all manner of things, along with some nifty helpers for common tasks.
For example, remote connections via :mod:`pwnlib.tubes.remote`.
::
>>> conn = remote('ftp.ubuntu.com',21)
>>> conn.recvline() # doctest: +ELLIPSIS
b'220 ...'
+9
View File
@@ -1 +1,10 @@
.. testsetup:: *
from pwn import *
:mod:`pwnlib.protocols.adb` --- Protocol implementations
========================================================
.. automodule:: pwnlib.protocols.adb
:members:
File renamed without changes.
-9
View File
@@ -1,9 +0,0 @@
.. testsetup:: *
from pwnlib.rop.call import *
:mod:`pwnlib.rop.call` --- Return Oriented Programming Function Calling
=======================================================================
.. automodule:: pwnlib.rop.call
:members:
+1
View File
@@ -15,6 +15,7 @@
from pwnlib.tubes.process import process
from pwnlib import shellcraft
from pwnlib.util.misc import which
import pwnlib.data
context.clear()
+6
View File
@@ -17,3 +17,9 @@
.. automodule:: pwnlib.shellcraft.amd64.linux
:members:
:mod:`pwnlib.shellcraft.amd64.windows`
---------------------------------------
.. automodule:: pwnlib.shellcraft.amd64.windows
:members:
+19
View File
@@ -0,0 +1,19 @@
.. testsetup:: *
from pwn import *
context.clear(arch='riscv64')
:mod:`pwnlib.shellcraft.riscv64` --- Shellcode for RISCV64
==========================================================
:mod:`pwnlib.shellcraft.riscv64`
--------------------------------
.. automodule:: pwnlib.shellcraft.riscv64
:members:
:mod:`pwnlib.shellcraft.riscv64.linux`
--------------------------------------
.. automodule:: pwnlib.shellcraft.riscv64.linux
:members:
+9
View File
@@ -0,0 +1,9 @@
.. testsetup:: *
from pwn import *
:mod:`pwnlib.windbg` --- Working with WinDbg
============================================
.. automodule:: pwnlib.windbg
:members:
+18 -12
View File
@@ -11,18 +11,24 @@ Solution:
"""
from pwn import *
from multiprocessing import Process
os.system('''((
echo prefix sometext ;
echo prefix someothertext ;
echo here comes the flag ;
echo LostInTheInterTubes
) | nc -l 1337) &
''')
def submit_data():
with context.quiet:
with listen(1337) as io:
io.wait_for_connection()
io.sendline(b'prefix sometext')
io.sendline(b'prefix someothertext')
io.sendline(b'here comes the flag')
io.sendline(b'LostInTheInterTubes')
r = remote('localhost', 1337)
atexit.register(r.clean_and_log)
if __name__ == '__main__':
p = Process(target=submit_data)
p.start()
while True:
line = r.recvline()
print(re.findall(r'^prefix (\S+)$', line)[0])
r = remote('localhost', 1337)
atexit.register(r.clean_and_log)
while True:
line = r.recvline()
print(re.findall(br'^prefix (\S+)$', line)[0])
+1 -1
View File
@@ -4,5 +4,5 @@ Example showing `pwnlib.ui.options()`
from pwn import *
opts = [string.letters[x] for x in range(10)]
opts = [string.ascii_letters[x] for x in range(12)]
print('You choose "%s"' % opts[options('Pick one:', opts)])
+12
View File
@@ -0,0 +1,12 @@
# Bash Completion
To install the completion, add `. /path/to/bash_completion.d/pwn`to your e.g. `~/.bash_profile`.
The `./install.sh` script attempts to do this for you automatically.
### Shellcraft Autocomplete
The legacy autocompletion for `pwn shellcraft` is also available at `./shellcraft`.
It is unsupported, and slow (runs `pwn shellcraft -l` every time your shell starts).
+13
View File
@@ -0,0 +1,13 @@
#!/usr/bin/env bash
BASH_COMPLETION_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
if grep "$BASH_COMPLETION_DIR" ~/.bash_profile; then
>&2 echo "Already installed"
exit
fi >/dev/null
cat >> ~/.bash_profile <<EOF
# Install autocompletion for Pwntools
. "$BASH_COMPLETION_DIR/pwn"
EOF
+103
View File
@@ -0,0 +1,103 @@
#!/usr/bin/env bash
# AUTOMATCALLY GENERATED by `shtab`
_shtab_pwnlib_options_='-h --help'
_shtab_pwnlib_commands_='asm checksec constgrep cyclic debug disablenx disasm elfdiff elfpatch errno hex phd pwnstrip scramble shellcraft template unhex update version'
_shtab_pwnlib_asm='-h --help -f --format -o --output -c --context -v --avoid -n --newline -z --zero -d --debug -e --encoder -i --infile -r --run'
_shtab_pwnlib_checksec='-h --help --file'
_shtab_pwnlib_constgrep='-h --help -e --exact -i --case-insensitive -m --mask-mode -c --context'
_shtab_pwnlib_cyclic='-h --help -a --alphabet -n --length -c --context -l -o --offset --lookup'
_shtab_pwnlib_debug='-h --help -x --pid -c --context --exec --process --sysroot'
_shtab_pwnlib_disablenx='-h --help'
_shtab_pwnlib_disasm='-h --help -c --context -a --address --color --no-color'
_shtab_pwnlib_elfdiff='-h --help'
_shtab_pwnlib_elfpatch='-h --help'
_shtab_pwnlib_errno='-h --help'
_shtab_pwnlib_hex='-h --help'
_shtab_pwnlib_phd='-h --help -w --width -l --highlight -s --skip -c --count -o --offset --color'
_shtab_pwnlib_pwnstrip='-h --help -b --build-id -p --patch -o --output'
_shtab_pwnlib_scramble='-h --help -f --format -o --output -c --context -p --alphanumeric -v --avoid -n --newline -z --zero -d --debug'
_shtab_pwnlib_shellcraft='-h --help -? --show -o --out -f --format -d --debug -b --before -a --after -v --avoid -n --newline -z --zero -r --run --color --no-color --syscalls --address -l --list -s --shared'
_shtab_pwnlib_template='-h --help --host --port --user --pass --password --path --quiet --color'
_shtab_pwnlib_unhex='-h --help'
_shtab_pwnlib_update='-h --help --install --pre'
_shtab_pwnlib_version='-h --help'
# $1=COMP_WORDS[1]
_shtab_compgen_files() {
compgen -f -- $1 # files
compgen -d -S '/' -- $1 # recurse into subdirs
}
# $1=COMP_WORDS[1]
_shtab_compgen_dirs() {
compgen -d -S '/' -- $1 # recurse into subdirs
}
# $1=COMP_WORDS[1]
_shtab_replace_hyphen() {
echo $1 | sed 's/-/_/g'
}
# $1=COMP_WORDS[1]
_shtab_replace_nonword() {
echo "${1//[^[:word:]]/_}"
}
# $1=COMP_WORDS[1]
_shtab_pwnlib_compgen_root_() {
local args_gen="_shtab_pwnlib_COMPGEN"
case "$word" in
-*) COMPREPLY=( $(compgen -W "$_shtab_pwnlib_options_" -- "$word"; [ -n "${!args_gen}" ] && ${!args_gen} "$word") ) ;;
*) COMPREPLY=( $(compgen -W "$_shtab_pwnlib_commands_" -- "$word"; [ -n "${!args_gen}" ] && ${!args_gen} "$word") ) ;;
esac
}
# $1=COMP_WORDS[1]
_shtab_pwnlib_compgen_command_() {
local flags_list="_shtab_pwnlib_$(_shtab_replace_nonword $1)"
local args_gen="${flags_list}_COMPGEN"
COMPREPLY=( $(compgen -W "${!flags_list}" -- "$word"; [ -n "${!args_gen}" ] && ${!args_gen} "$word") )
}
# $1=COMP_WORDS[1]
# $2=COMP_WORDS[2]
_shtab_pwnlib_compgen_subcommand_() {
local flags_list="_shtab_pwnlib_$(_shtab_replace_nonword "${1}_${2}")"
local args_gen="${flags_list}_COMPGEN"
[ -n "${!args_gen}" ] && local opts_more="$(${!args_gen} "$word")"
local opts="${!flags_list}"
if [ -z "$opts$opts_more" ]; then
_shtab_pwnlib_compgen_command_ $1
else
COMPREPLY=( $(compgen -W "$opts" -- "$word"; [ -n "$opts_more" ] && echo "$opts_more") )
fi
}
# Notes:
# `COMPREPLY` contains what will be rendered after completion is triggered
# `word` refers to the current typed word
# `${!var}` is to evaluate the content of `var`
# and expand its content as a variable
# hello="world"
# x="hello"
# ${!x} -> ${hello} -> "world"
_shtab_pwnlib() {
local word="${COMP_WORDS[COMP_CWORD]}"
COMPREPLY=()
if [ "${COMP_CWORD}" -eq 1 ]; then
_shtab_pwnlib_compgen_root_ ${COMP_WORDS[1]}
elif [ "${COMP_CWORD}" -eq 2 ]; then
_shtab_pwnlib_compgen_command_ ${COMP_WORDS[1]}
elif [ "${COMP_CWORD}" -ge 3 ]; then
_shtab_pwnlib_compgen_subcommand_ ${COMP_WORDS[1]} ${COMP_WORDS[2]}
fi
return 0
}
complete -o nospace -F _shtab_pwnlib pwn
+19 -14
View File
@@ -1,25 +1,30 @@
subdirs=$(shell find . -type d -depth 1 | xargs basename)
subdirs=$(shell find . -mindepth 1 -maxdepth 1 -type d | xargs -n1 basename)
tags=base stable beta dev
ROOT=$(shell git rev-parse --show-toplevel)
CMD ?= zsh
all: $(subdirs) $(tags)
ifneq ($(HISTFILE),)
MOUNT_HISTFILE=--mount type=bind,source="$(HISTFILE)",target=/home/pwntools/.history
endif
all: $(tags) $(subdirs)
tags: $(tags)
base:
$(subdirs)::
@echo "Building $@"
docker build -t pwntools/pwntools:$(shell basename $(@)) "$@"
stable beta dev: base
@echo "Building $@"
docker build -t pwntools/pwntools:$(shell basename $(@)) "$@"
develop:
@echo "Building $@"
docker build -t pwntools/pwntools:$(shell basename $(@)) "$@"
docker run -it --privileged --net=host --hostname localhost \
develop::
docker run -it \
--privileged \
--net=host \
--hostname localhost \
--ulimit core=-1:-1 \
--mount type=bind,source="$(shell git rev-parse --show-toplevel)",target=/home/pwntools/pwntools \
pwntools/pwntools:$(shell basename $(@))
$(MOUNT_HISTFILE) \
--mount type=bind,source="$(ROOT)",target=/home/pwntools/pwntools \
pwntools/pwntools:$(shell basename $(@)) \
$(CMD)
debug:
@echo "Subdirs $(subdirs)"
@@ -31,4 +36,4 @@ clean:
FORCE:
.PHONY: all $(subdirs) $(makefiles) $(tags)
.PHONY: all $(subdirs) $(makefiles) $(tags)
+23 -11
View File
@@ -3,39 +3,51 @@
# Based on Ubuntu
############################################################
FROM ubuntu:bionic
FROM ubuntu:jammy
MAINTAINER Maintainer Gallopsled et al.
env DEBIAN_FRONTEND=noninteractive
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y \
sudo \
locales \
build-essential \
elfutils \
git \
libssl-dev \
libffi-dev \
python \
python-pip \
python-dev \
python2.7 \
python2.7-dev \
python2-pip-whl \
python3 \
python3-pip \
python3-dev \
python-is-python3 \
qemu-user-static \
binutils-arm-linux-gnueabihf \
binutils-aarch64-linux-gnu \
binutils-mips-linux-gnu \
binutils-mipsel-linux-gnu \
binutils-msp430 \
binutils-powerpc-linux-gnu \
binutils-powerpc64-linux-gnu \
binutils-s390x-linux-gnu \
binutils-sparc64-linux-gnu \
&& pip install --upgrade pip \
&& python -m pip install --upgrade pwntools \
&& pip3 install --upgrade pip \
&& python3 -m pip install --upgrade pwntools \
binutils-riscv64-linux-gnu \
tmux \
patchelf \
&& locale-gen en_US.UTF-8 \
&& update-locale LANG=en_US.UTF-8 \
&& PYTHONPATH=`echo /usr/share/python-wheels/pip-*.whl` python2.7 -m pip install --no-cache-dir --upgrade pip setuptools wheel \
&& python2.7 -m pip install --no-cache-dir --upgrade pwntools \
&& python3 -m pip install --no-cache-dir --upgrade pip \
&& python3 -m pip install --no-cache-dir --upgrade pwntools \
&& PWNLIB_NOTERM=1 pwn update \
&& apt-get install -y sudo \
&& useradd -m pwntools \
&& passwd --delete --unlock pwntools \
&& echo "pwntools ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/pwntools
USER pwntools
WORKDIR /home/pwntools
+2 -2
View File
@@ -1,7 +1,7 @@
FROM pwntools/pwntools:stable
USER root
RUN pip install --upgrade git+https://github.com/Gallopsled/pwntools@beta
RUN pip3 install --upgrade git+https://github.com/Gallopsled/pwntools@beta
RUN python2.7 -m pip install --no-cache-dir --upgrade git+https://github.com/Gallopsled/pwntools@beta \
&& python3 -m pip install --no-cache-dir --force-reinstall --upgrade git+https://github.com/Gallopsled/pwntools@beta
RUN PWNLIB_NOTERM=1 pwn update
USER pwntools
+8
View File
@@ -0,0 +1,8 @@
from debian:buster
RUN apt-get update
RUN apt-get -y dist-upgrade
RUN apt-get -y install python3 python3-pip
RUN apt-get -y install git wget unzip
RUN pip3 install --no-cache-dir --upgrade git+https://github.com/Gallopsled/pwntools@dev
+2 -2
View File
@@ -1,7 +1,7 @@
FROM pwntools/pwntools:stable
USER root
RUN pip install --upgrade git+https://github.com/Gallopsled/pwntools@dev
RUN pip3 install --upgrade git+https://github.com/Gallopsled/pwntools@dev
RUN python2.7 -m pip install --upgrade git+https://github.com/Gallopsled/pwntools@dev \
&& python3 -m pip install --force-reinstall --upgrade git+https://github.com/Gallopsled/pwntools@dev
RUN PWNLIB_NOTERM=1 pwn update
USER pwntools
+5
View File
@@ -0,0 +1,5 @@
try:
from pwn import *
except Exception:
print("Could not import pwntools")
import os, re, sys, time, random, urllib, datetime, itertools, subprocess, multiprocessing
+39 -12
View File
@@ -1,9 +1,12 @@
FROM pwntools/pwntools:base
# Support sharing history with the develop Dockerfile
ENV HISTFILE=/home/pwntools/.history
# Uninstall existing versions of pwntools
USER root
RUN python -m pip uninstall -q -y pwntools \
&& python3 -m pip uninstall -q -y pwntools
RUN python2.7 -m pip uninstall -q -y pwntools \
&& python3 -m pip uninstall -q -y pwntools
# Switch back to the pwntools user from here forward
USER pwntools
@@ -15,16 +18,23 @@ ENV PATH="/home/pwntools/.local/bin:${PATH}"
# Install Pwntools to the home directory, make it an editable install
RUN git clone https://github.com/Gallopsled/pwntools \
&& python -m pip install --upgrade --editable pwntools \
&& python2.7 -m pip install --upgrade --editable pwntools \
&& python3 -m pip install --upgrade --editable pwntools \
&& PWNLIB_NOTERM=1 pwn version
# Requirements for running the tests
RUN python -m pip install --upgrade --requirement pwntools/docs/requirements.txt \
&& python3 -m pip install --upgrade --requirement pwntools/docs/requirements.txt
RUN python2.7 -m pip install --upgrade --requirement pwntools/docs/requirements.txt \
&& python3 -m pip install --upgrade --requirement pwntools/docs/requirements.txt
# Python niceties for debugging
RUN python2.7 -m pip install -U ipython ipdb \
&& python3 -m pip install -U ipython ipdb
# Dependencies from .travis.yml addons -> apt -> packages
RUN sudo apt-get install -y \
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ="UTC"
RUN sudo apt-get update && sudo -E apt-get install -y \
tzdata \
ash \
bash \
bash-static \
@@ -34,7 +44,7 @@ RUN sudo apt-get install -y \
dash \
gcc \
gcc-multilib \
gdb \
gdb \
ksh \
lib32stdc++6 \
libc6-dev-i386 \
@@ -43,17 +53,34 @@ RUN sudo apt-get install -y \
qemu-user-static \
socat \
sshpass \
zsh
vim \
zsh \
# Misc useful things when developing
RUN sudo apt-get install -y \
curl \
ipython \
ipython3 \
lsb-release \
ssh \
unzip \
wget
# Use zsh by default
RUN sudo -E chsh -s /bin/zsh pwntools
# Get and install prezto
RUN git clone --recursive https://github.com/sorin-ionescu/prezto.git .zprezto
RUN bash -c 'for file in .zprezto/runcoms/z*; do ln -s $file .$(basename $file); done'
# Get and install pwndbg
RUN git clone --recursive https://github.com/pwndbg/pwndbg
RUN cd pwndbg && ./setup.sh
# Install autocompletion
RUN ln -s /home/pwntools/pwntools/extra/zsh_completion/_pwn /home/pwntools/.zprezto/modules/completion/external/src
# Install ipython profile and auto-import
RUN mkdir -p /home/pwntools/.ipython/profile_default/startup
ADD 10-import.py /home/pwntools/.ipython/profile_default/startup
ADD ipython_config.py /home/pwntools/.ipython/profile_default
# Do not require password for sudo
RUN echo "pwntools ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/travis
RUN echo "pwntools ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/travis
+563
View File
@@ -0,0 +1,563 @@
# Configuration file for ipython.
c = get_config()
#------------------------------------------------------------------------------
# InteractiveShellApp configuration
#------------------------------------------------------------------------------
# A Mixin for applications that start InteractiveShell instances.
#
# Provides configurables for loading extensions and executing files as part of
# configuring a Shell environment.
#
# The following methods should be called by the :meth:`initialize` method of the
# subclass:
#
# - :meth:`init_path`
# - :meth:`init_shell` (to be implemented by the subclass)
# - :meth:`init_gui_pylab`
# - :meth:`init_extensions`
# - :meth:`init_code`
# Execute the given command string.
# c.InteractiveShellApp.code_to_run = ''
# Run the file referenced by the PYTHONSTARTUP environment variable at IPython
# startup.
# c.InteractiveShellApp.exec_PYTHONSTARTUP = True
# lines of code to run at IPython startup.
c.InteractiveShell.confirm_exit = False
c.InteractiveShell.separate_in = ''
c.InteractiveShell.separate_out = ''
c.InteractiveShell.separate_out2 = ''
# c.PromptManager.in_template = '>>> '
# c.PromptManager.in2_template = '..: '
# c.PromptManager.out_template = ''
# c.PromptManager.justify = False
c.TerminalIPythonApp.display_banner = False
from IPython.terminal.prompts import Prompts, Token
class ClassicPrompts(Prompts):
def in_prompt_tokens(self, cli=None):
return [
(Token.Prompt, '>>> '),
]
def continuation_prompt_tokens(self, cli=None, width=None):
return [
(Token.Prompt, '... ')
]
def rewrite_prompt_tokens(self):
return []
def out_prompt_tokens(self):
return []
c.TerminalInteractiveShell.prompts_class = ClassicPrompts
# Enable GUI event loop integration with any of ('glut', 'gtk', 'gtk3', 'none',
# 'osx', 'pyglet', 'qt', 'qt4', 'tk', 'wx').
# c.InteractiveShellApp.gui = None
# Pre-load matplotlib and numpy for interactive use, selecting a particular
# matplotlib backend and loop integration.
# c.InteractiveShellApp.pylab = None
# Configure matplotlib for interactive use with the default matplotlib backend.
# c.InteractiveShellApp.matplotlib = None
# If true, IPython will populate the user namespace with numpy, pylab, etc. and
# an ``import *`` is done from numpy and pylab, when using pylab mode.
#
# When False, pylab mode should not import any names into the user namespace.
# c.InteractiveShellApp.pylab_import_all = True
# A list of dotted module names of IPython extensions to load.
# c.InteractiveShellApp.extensions = []
# Run the module as a script.
# c.InteractiveShellApp.module_to_run = ''
# Should variables loaded at startup (by startup files, exec_lines, etc.) be
# hidden from tools like %who?
# c.InteractiveShellApp.hide_initial_ns = True
# dotted module name of an IPython extension to load.
# c.InteractiveShellApp.extra_extension = ''
# List of files to run at IPython startup.
# c.InteractiveShellApp.exec_files = []
# A file to be run
# c.InteractiveShellApp.file_to_run = ''
#------------------------------------------------------------------------------
# TerminalIPythonApp configuration
#------------------------------------------------------------------------------
# TerminalIPythonApp will inherit config from: BaseIPythonApplication,
# Application, InteractiveShellApp
# Run the file referenced by the PYTHONSTARTUP environment variable at IPython
# startup.
# c.TerminalIPythonApp.exec_PYTHONSTARTUP = True
# Pre-load matplotlib and numpy for interactive use, selecting a particular
# matplotlib backend and loop integration.
# c.TerminalIPythonApp.pylab = None
# Create a massive crash report when IPython encounters what may be an internal
# error. The default is to append a short message to the usual traceback
# c.TerminalIPythonApp.verbose_crash = False
# Run the module as a script.
# c.TerminalIPythonApp.module_to_run = ''
# The date format used by logging formatters for %(asctime)s
# c.TerminalIPythonApp.log_datefmt = '%Y-%m-%d %H:%M:%S'
# Whether to overwrite existing config files when copying
# c.TerminalIPythonApp.overwrite = False
# Execute the given command string.
# c.TerminalIPythonApp.code_to_run = ''
# Set the log level by value or name.
# c.TerminalIPythonApp.log_level = 30
# lines of code to run at IPython startup.
# c.TerminalIPythonApp.exec_lines = []
# Suppress warning messages about legacy config files
# c.TerminalIPythonApp.ignore_old_config = False
# Path to an extra config file to load.
#
# If specified, load this config file in addition to any other IPython config.
# c.TerminalIPythonApp.extra_config_file = u''
# Should variables loaded at startup (by startup files, exec_lines, etc.) be
# hidden from tools like %who?
# c.TerminalIPythonApp.hide_initial_ns = True
# dotted module name of an IPython extension to load.
# c.TerminalIPythonApp.extra_extension = ''
# A file to be run
# c.TerminalIPythonApp.file_to_run = ''
# The IPython profile to use.
# c.TerminalIPythonApp.profile = u'default'
# Configure matplotlib for interactive use with the default matplotlib backend.
# c.TerminalIPythonApp.matplotlib = None
# If a command or file is given via the command-line, e.g. 'ipython foo.py',
# start an interactive shell after executing the file or command.
# c.TerminalIPythonApp.force_interact = False
# If true, IPython will populate the user namespace with numpy, pylab, etc. and
# an ``import *`` is done from numpy and pylab, when using pylab mode.
#
# When False, pylab mode should not import any names into the user namespace.
# c.TerminalIPythonApp.pylab_import_all = True
# The name of the IPython directory. This directory is used for logging
# configuration (through profiles), history storage, etc. The default is usually
# $HOME/.ipython. This options can also be specified through the environment
# variable IPYTHONDIR.
# c.TerminalIPythonApp.ipython_dir = u''
# Whether to display a banner upon starting IPython.
# c.TerminalIPythonApp.display_banner = True
# Whether to install the default config files into the profile dir. If a new
# profile is being created, and IPython contains config files for that profile,
# then they will be staged into the new directory. Otherwise, default config
# files will be automatically generated.
# c.TerminalIPythonApp.copy_config_files = False
# List of files to run at IPython startup.
# c.TerminalIPythonApp.exec_files = []
# Enable GUI event loop integration with any of ('glut', 'gtk', 'gtk3', 'none',
# 'osx', 'pyglet', 'qt', 'qt4', 'tk', 'wx').
# c.TerminalIPythonApp.gui = None
# A list of dotted module names of IPython extensions to load.
# c.TerminalIPythonApp.extensions = []
# Start IPython quickly by skipping the loading of config files.
# c.TerminalIPythonApp.quick = False
# The Logging format template
# c.TerminalIPythonApp.log_format = '[%(name)s]%(highlevel)s %(message)s'
#------------------------------------------------------------------------------
# TerminalInteractiveShell configuration
#------------------------------------------------------------------------------
# TerminalInteractiveShell will inherit config from: InteractiveShell
# auto editing of files with syntax errors.
# c.TerminalInteractiveShell.autoedit_syntax = False
# Use colors for displaying information about objects. Because this information
# is passed through a pager (like 'less'), and some pagers get confused with
# color codes, this capability can be turned off.
# c.TerminalInteractiveShell.color_info = True
# A list of ast.NodeTransformer subclass instances, which will be applied to
# user input before code is run.
# c.TerminalInteractiveShell.ast_transformers = []
#
# c.TerminalInteractiveShell.history_length = 10000
# Don't call post-execute functions that have failed in the past.
# c.TerminalInteractiveShell.disable_failing_post_execute = False
# Show rewritten input, e.g. for autocall.
# c.TerminalInteractiveShell.show_rewritten_input = True
# Set the color scheme (NoColor, Linux, or LightBG).
# c.TerminalInteractiveShell.colors = 'Linux'
# Autoindent IPython code entered interactively.
# c.TerminalInteractiveShell.autoindent = True
#
# c.TerminalInteractiveShell.separate_in = '\n'
# Deprecated, use PromptManager.in2_template
# c.TerminalInteractiveShell.prompt_in2 = ' .\\D.: '
#
# c.TerminalInteractiveShell.separate_out = ''
# Deprecated, use PromptManager.in_template
# c.TerminalInteractiveShell.prompt_in1 = 'In [\\#]: '
# Make IPython automatically call any callable object even if you didn't type
# explicit parentheses. For example, 'str 43' becomes 'str(43)' automatically.
# The value can be '0' to disable the feature, '1' for 'smart' autocall, where
# it is not applied if there are no more arguments on the line, and '2' for
# 'full' autocall, where all callable objects are automatically called (even if
# no arguments are present).
# c.TerminalInteractiveShell.autocall = 0
# Number of lines of your screen, used to control printing of very long strings.
# Strings longer than this number of lines will be sent through a pager instead
# of directly printed. The default value for this is 0, which means IPython
# will auto-detect your screen size every time it needs to print certain
# potentially long strings (this doesn't change the behavior of the 'print'
# keyword, it's only triggered internally). If for some reason this isn't
# working well (it needs curses support), specify it yourself. Otherwise don't
# change the default.
# c.TerminalInteractiveShell.screen_length = 0
# Set the editor used by IPython (default to $EDITOR/vi/notepad).
# c.TerminalInteractiveShell.editor = u'nano'
# Deprecated, use PromptManager.justify
# c.TerminalInteractiveShell.prompts_pad_left = True
# The part of the banner to be printed before the profile
# c.TerminalInteractiveShell.banner1 = 'Python 2.7.6 (default, Apr 23 2014, 12:04:55) \nType "copyright", "credits" or "license" for more information.\n\nIPython 2.0.0 -- An enhanced Interactive Python.\n? -> Introduction and overview of IPython\'s features.\n%quickref -> Quick reference.\nhelp -> Python\'s own help system.\nobject? -> Details about \'object\', use \'object??\' for extra details.\n'
#
# c.TerminalInteractiveShell.readline_parse_and_bind = ['tab: complete', '"\\C-l": clear-screen', 'set show-all-if-ambiguous on', '"\\C-o": tab-insert', '"\\C-r": reverse-search-history', '"\\C-s": forward-search-history', '"\\C-p": history-search-backward', '"\\C-n": history-search-forward', '"\\e[A": history-search-backward', '"\\e[B": history-search-forward', '"\\C-k": kill-line', '"\\C-u": unix-line-discard']
# The part of the banner to be printed after the profile
# c.TerminalInteractiveShell.banner2 = ''
#
# c.TerminalInteractiveShell.separate_out2 = ''
#
# c.TerminalInteractiveShell.wildcards_case_sensitive = True
#
# c.TerminalInteractiveShell.debug = False
# Set to confirm when you try to exit IPython with an EOF (Control-D in Unix,
# Control-Z/Enter in Windows). By typing 'exit' or 'quit', you can force a
# direct exit without any confirmation.
# c.TerminalInteractiveShell.confirm_exit = True
#
# c.TerminalInteractiveShell.ipython_dir = ''
#
# c.TerminalInteractiveShell.readline_remove_delims = '-/~'
# Start logging to the default log file.
# c.TerminalInteractiveShell.logstart = False
# The name of the logfile to use.
# c.TerminalInteractiveShell.logfile = ''
# The shell program to be used for paging.
# c.TerminalInteractiveShell.pager = 'less'
# Enable magic commands to be called without the leading %.
# c.TerminalInteractiveShell.automagic = True
# Save multi-line entries as one entry in readline history
# c.TerminalInteractiveShell.multiline_history = True
#
# c.TerminalInteractiveShell.readline_use = True
# Enable deep (recursive) reloading by default. IPython can use the deep_reload
# module which reloads changes in modules recursively (it replaces the reload()
# function, so you don't need to change anything to use it). deep_reload()
# forces a full reload of modules whose code may have changed, which the default
# reload() function does not. When deep_reload is off, IPython will use the
# normal reload(), but deep_reload will still be available as dreload().
# c.TerminalInteractiveShell.deep_reload = False
# Start logging to the given file in append mode.
# c.TerminalInteractiveShell.logappend = ''
#
# c.TerminalInteractiveShell.xmode = 'Context'
#
# c.TerminalInteractiveShell.quiet = False
# Enable auto setting the terminal title.
# c.TerminalInteractiveShell.term_title = False
#
# c.TerminalInteractiveShell.object_info_string_level = 0
# Deprecated, use PromptManager.out_template
# c.TerminalInteractiveShell.prompt_out = 'Out[\\#]: '
# Set the size of the output cache. The default is 1000, you can change it
# permanently in your config file. Setting it to 0 completely disables the
# caching system, and the minimum value accepted is 20 (if you provide a value
# less than 20, it is reset to 0 and a warning is issued). This limit is
# defined because otherwise you'll spend more time re-flushing a too small cache
# than working
# c.TerminalInteractiveShell.cache_size = 1000
# 'all', 'last', 'last_expr' or 'none', specifying which nodes should be run
# interactively (displaying output from expressions).
# c.TerminalInteractiveShell.ast_node_interactivity = 'last_expr'
# Automatically call the pdb debugger after every exception.
# c.TerminalInteractiveShell.pdb = False
#------------------------------------------------------------------------------
# PromptManager configuration
#------------------------------------------------------------------------------
# This is the primary interface for producing IPython's prompts.
# Output prompt. '\#' will be transformed to the prompt number
# c.PromptManager.out_template = 'Out[\\#]: '
# Continuation prompt.
# c.PromptManager.in2_template = ' .\\D.: '
# If True (default), each prompt will be right-aligned with the preceding one.
# c.PromptManager.justify = True
# Input prompt. '\#' will be transformed to the prompt number
# c.PromptManager.in_template = 'In [\\#]: '
#
# c.PromptManager.color_scheme = 'Linux'
#------------------------------------------------------------------------------
# HistoryManager configuration
#------------------------------------------------------------------------------
# A class to organize all history-related functionality in one place.
# HistoryManager will inherit config from: HistoryAccessor
# Should the history database include output? (default: no)
# c.HistoryManager.db_log_output = False
# Write to database every x commands (higher values save disk access & power).
# Values of 1 or less effectively disable caching.
# c.HistoryManager.db_cache_size = 0
# Path to file to use for SQLite history database.
#
# By default, IPython will put the history database in the IPython profile
# directory. If you would rather share one history among profiles, you can set
# this value in each, so that they are consistent.
#
# Due to an issue with fcntl, SQLite is known to misbehave on some NFS mounts.
# If you see IPython hanging, try setting this to something on a local disk,
# e.g::
#
# ipython --HistoryManager.hist_file=/tmp/ipython_hist.sqlite
# c.HistoryManager.hist_file = u''
# Options for configuring the SQLite connection
#
# These options are passed as keyword args to sqlite3.connect when establishing
# database conenctions.
# c.HistoryManager.connection_options = {}
# enable the SQLite history
#
# set enabled=False to disable the SQLite history, in which case there will be
# no stored history, no SQLite connection, and no background saving thread.
# This may be necessary in some threaded environments where IPython is embedded.
# c.HistoryManager.enabled = True
#------------------------------------------------------------------------------
# ProfileDir configuration
#------------------------------------------------------------------------------
# An object to manage the profile directory and its resources.
#
# The profile directory is used by all IPython applications, to manage
# configuration, logging and security.
#
# This object knows how to find, create and manage these directories. This
# should be used by any code that wants to handle profiles.
# Set the profile location directly. This overrides the logic used by the
# `profile` option.
# c.ProfileDir.location = u''
#------------------------------------------------------------------------------
# PlainTextFormatter configuration
#------------------------------------------------------------------------------
# The default pretty-printer.
#
# This uses :mod:`IPython.lib.pretty` to compute the format data of the object.
# If the object cannot be pretty printed, :func:`repr` is used. See the
# documentation of :mod:`IPython.lib.pretty` for details on how to write pretty
# printers. Here is a simple example::
#
# def dtype_pprinter(obj, p, cycle):
# if cycle:
# return p.text('dtype(...)')
# if hasattr(obj, 'fields'):
# if obj.fields is None:
# p.text(repr(obj))
# else:
# p.begin_group(7, 'dtype([')
# for i, field in enumerate(obj.descr):
# if i > 0:
# p.text(',')
# p.breakable()
# p.pretty(field)
# p.end_group(7, '])')
# PlainTextFormatter will inherit config from: BaseFormatter
#
# c.PlainTextFormatter.type_printers = {}
#
# c.PlainTextFormatter.newline = '\n'
#
# c.PlainTextFormatter.float_precision = ''
#
# c.PlainTextFormatter.verbose = False
#
# c.PlainTextFormatter.deferred_printers = {}
#
# c.PlainTextFormatter.pprint = True
#
# c.PlainTextFormatter.max_width = 79
#
# c.PlainTextFormatter.singleton_printers = {}
#------------------------------------------------------------------------------
# IPCompleter configuration
#------------------------------------------------------------------------------
# Extension of the completer class with IPython-specific features
# IPCompleter will inherit config from: Completer
# Instruct the completer to omit private method names
#
# Specifically, when completing on ``object.<tab>``.
#
# When 2 [default]: all names that start with '_' will be excluded.
#
# When 1: all 'magic' names (``__foo__``) will be excluded.
#
# When 0: nothing will be excluded.
# c.IPCompleter.omit__names = 2
# Whether to merge completion results into a single list
#
# If False, only the completion results from the first non-empty completer will
# be returned.
# c.IPCompleter.merge_completions = True
# Instruct the completer to use __all__ for the completion
#
# Specifically, when completing on ``object.<tab>``.
#
# When True: only those names in obj.__all__ will be included.
#
# When False [default]: the __all__ attribute is ignored
# c.IPCompleter.limit_to__all__ = False
# Activate greedy completion
#
# This will enable completion on elements of lists, results of function calls,
# etc., but can be unsafe because the code is actually evaluated on TAB.
# c.IPCompleter.greedy = False
#------------------------------------------------------------------------------
# ScriptMagics configuration
#------------------------------------------------------------------------------
# Magics for talking to scripts
#
# This defines a base `%%script` cell magic for running a cell with a program in
# a subprocess, and registers a few top-level magics that call %%script with
# common interpreters.
# Extra script cell magics to define
#
# This generates simple wrappers of `%%script foo` as `%%foo`.
#
# If you want to add script magics that aren't on your path, specify them in
# script_paths
# c.ScriptMagics.script_magics = []
# Dict mapping short 'ruby' names to full paths, such as '/opt/secret/bin/ruby'
#
# Only necessary for items in script_magics where the default path will not find
# the right interpreter.
# c.ScriptMagics.script_paths = {}
#------------------------------------------------------------------------------
# StoreMagics configuration
#------------------------------------------------------------------------------
# Lightweight persistence for python variables.
#
# Provides the %store magic.
# If True, any %store-d variables will be automatically restored when IPython
# starts.
# c.StoreMagics.autorestore = False
+2 -2
View File
@@ -1,7 +1,7 @@
FROM pwntools/pwntools:base
USER root
RUN pip install --upgrade git+https://github.com/Gallopsled/pwntools@stable
RUN pip3 install --upgrade git+https://github.com/Gallopsled/pwntools@stable
RUN python2.7 -m pip install --no-cache-dir --upgrade git+https://github.com/Gallopsled/pwntools@stable \
&& python3 -m pip install --no-cache-dir --force-reinstall --upgrade git+https://github.com/Gallopsled/pwntools@stable
RUN PWNLIB_NOTERM=1 pwn update
USER pwntools
+5
View File
@@ -0,0 +1,5 @@
# ZSH Completion
To install the completion, copy `_pwn` to somewhere in your `$fpath`.
The `./install.sh` script attempts to automate this, and advises an alternative method if that's unavailable.
+197
View File
@@ -0,0 +1,197 @@
#compdef pwn
# ----------------------------------------------------------------------------------------
# Zsh completion file for pwn
#
# Pwntools Command-line Interface
#
# This file was generated with help from Zargparse (https://github.com/ctil/zargparse)
# ----------------------------------------------------------------------------------------
typeset -A opt_args
_pwn() {
# Define the subcommands
local -a commands
commands=(
'asm:Assemble shellcode into bytes'
'checksec:Check binary security settings'
'constgrep:Looking up constants from header files.'
'cyclic:Cyclic pattern creator/finder'
'debug:Debug a binary in GDB'
'disasm:Disassemble bytes into text format'
'disablenx:Disable NX for an ELF binary'
'elfdiff:Compare two ELF files'
'elfpatch:Patch an ELF file'
'errno:Prints out error messages'
'hex:Hex-encodes data provided on the command line or stdin'
'phd:Pretty hex dump'
'scramble:Strip binaries for CTF usage'
'shellcraft:Shellcode encoder'
'template:Microwave shellcode -- Easy, fast and delicious'
'unhex:Generate an exploit template'
'update:Decodes hex-encoded data provided on the command line or via stdin.'
'version:Check for pwntools updates'
)
# Global flags (i.e. ones not associated with a subcommand)
_arguments \
"1: :{_describe 'command' commands}" \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
'*:: :->args'
# Flags for each subcommand
case $state in
args)
case $words[1] in
pwnstrip)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
'(-b --build-id)'{-b,--build-id}'[Strip build ID]' \
'(-p --patch)'{-p,--patch}'=[Patch function]:' \
'(-o --output)'{-o,--output}'=[None]:' \
;;
asm)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
'(-f --format)'{-f,--format}'=[Output format (defaults to hex for ttys, otherwise raw)]:-f :(raw hex string elf)' \
'(-o --output)'{-o,--output}'=[Output file (defaults to stdout)]:' \
'(-c --context)'{-c,--context}'=[The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: \["16", "32", "64", "android", "baremetal", "cgc", "freebsd", "linux", "windows", "powerpc64", "aarch64", "powerpc", "sparc64", "mips64", "msp430", "alpha", "amd64", "sparc", "thumb", "cris", "i386", "ia64", "m68k", "mips", "s390", "none", "avr", "arm", "vax", "little", "big", "be", "eb", "le", "el"\]]:-c :(16 32 64 android baremetal cgc freebsd linux windows powerpc64 aarch64 powerpc sparc64 mips64 msp430 alpha amd64 sparc thumb cris i386 ia64 m68k mips s390 none avr arm vax little big be eb le el)' \
'(-v --avoid)'{-v,--avoid}'=[Encode the shellcode to avoid the listed bytes (provided as hex)]:' \
'(-n --newline)'{-n,--newline}'[Encode the shellcode to avoid newlines]' \
'(-z --zero)'{-z,--zero}'[Encode the shellcode to avoid NULL bytes]' \
'(-d --debug)'{-d,--debug}'[Debug the shellcode with GDB]' \
'(-e --encoder)'{-e,--encoder}'=[Specific encoder to use]:' \
'(-i --infile)'{-i,--infile}'=[Specify input file]:' \
'(-r --run)'{-r,--run}'[Run output]' \
;;
checksec)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
'--file=[File to check (for compatibility with checksec.sh)]:' \
;;
constgrep)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
'(-e --exact)'{-e,--exact}'[Do an exact match for a constant instead of searching for a regex]' \
'(-i --case-insensitive)'{-i,--case-insensitive}'[Search case insensitive]' \
'(-m --mask-mode)'{-m,--mask-mode}'[Instead of searching for a specific constant value, search for values not containing strictly less bits that the given value.]' \
'(-c --context)'{-c,--context}'=[The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: \["16", "32", "64", "android", "baremetal", "cgc", "freebsd", "linux", "windows", "powerpc64", "aarch64", "powerpc", "sparc64", "mips64", "msp430", "alpha", "amd64", "sparc", "thumb", "cris", "i386", "ia64", "m68k", "mips", "s390", "none", "avr", "arm", "vax", "little", "big", "be", "eb", "le", "el"\]]:-c :(16 32 64 android baremetal cgc freebsd linux windows powerpc64 aarch64 powerpc sparc64 mips64 msp430 alpha amd64 sparc thumb cris i386 ia64 m68k mips s390 none avr arm vax little big be eb le el)' \
;;
cyclic)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
'(-a --alphabet)'{-a,--alphabet}'=[The alphabet to use in the cyclic pattern (defaults to all lower case letters)]:' \
'(-n --length)'{-n,--length}'=[Size of the unique subsequences (defaults to 4).]:' \
'(-c --context)'{-c,--context}'=[The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: \["16", "32", "64", "android", "baremetal", "cgc", "freebsd", "linux", "windows", "powerpc64", "aarch64", "powerpc", "sparc64", "mips64", "msp430", "alpha", "amd64", "sparc", "thumb", "cris", "i386", "ia64", "m68k", "mips", "s390", "none", "avr", "arm", "vax", "little", "big", "be", "eb", "le", "el"\]]:-c :(16 32 64 android baremetal cgc freebsd linux windows powerpc64 aarch64 powerpc sparc64 mips64 msp430 alpha amd64 sparc thumb cris i386 ia64 m68k mips s390 none avr arm vax little big be eb le el)' \
'(-l -o --offset --lookup)'{-l,-o,--offset,--lookup}'=[Do a lookup instead printing the alphabet]:' \
;;
debug)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
'-x=[Execute GDB commands from this file.]:' \
'--pid=[PID to attach to]:' \
'(-c --context)'{-c,--context}'=[The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: \["16", "32", "64", "android", "baremetal", "cgc", "freebsd", "linux", "windows", "powerpc64", "aarch64", "powerpc", "sparc64", "mips64", "msp430", "alpha", "amd64", "sparc", "thumb", "cris", "i386", "ia64", "m68k", "mips", "s390", "none", "avr", "arm", "vax", "little", "big", "be", "eb", "le", "el"\]]:-c :(16 32 64 android baremetal cgc freebsd linux windows powerpc64 aarch64 powerpc sparc64 mips64 msp430 alpha amd64 sparc thumb cris i386 ia64 m68k mips s390 none avr arm vax little big be eb le el)' \
'--exec=[File to debug]:' \
'--process=[Name of the process to attach to (e.g. "bash")]:' \
'--sysroot=[GDB sysroot path]:' \
;;
disasm)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
'(-c --context)'{-c,--context}'=[The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: \["16", "32", "64", "android", "baremetal", "cgc", "freebsd", "linux", "windows", "powerpc64", "aarch64", "powerpc", "sparc64", "mips64", "msp430", "alpha", "amd64", "sparc", "thumb", "cris", "i386", "ia64", "m68k", "mips", "s390", "none", "avr", "arm", "vax", "little", "big", "be", "eb", "le", "el"\]]:-c :(16 32 64 android baremetal cgc freebsd linux windows powerpc64 aarch64 powerpc sparc64 mips64 msp430 alpha amd64 sparc thumb cris i386 ia64 m68k mips s390 none avr arm vax little big be eb le el)' \
'(-a --address)'{-a,--address}'=[Base address]:' \
'--color[Color output]' \
'--no-color[Disable color output]' \
;;
disablenx)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
;;
elfdiff)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
;;
elfpatch)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
;;
errno)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
;;
hex)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
;;
phd)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
'(-w --width)'{-w,--width}'=[Number of bytes per line.]:' \
'(-l --highlight)'{-l,--highlight}'=[Byte to highlight.]:' \
'(-s --skip)'{-s,--skip}'=[Skip this many initial bytes.]:' \
'(-c --count)'{-c,--count}'=[Only show this many bytes.]:' \
'(-o --offset)'{-o,--offset}'=[Addresses in left hand column starts at this address.]:' \
'--color=[Colorize the output. When "auto" output is colorized exactly when stdout is a TTY. Default is "auto".]:--color :(always never auto)' \
;;
scramble)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
'(-f --format)'{-f,--format}'=[Output format (defaults to hex for ttys, otherwise raw)]:-f :(raw hex string elf)' \
'(-o --output)'{-o,--output}'=[Output file (defaults to stdout)]:' \
'(-c --context)'{-c,--context}'=[The os/architecture/endianness/bits the shellcode will run in (default: linux/i386), choose from: \["16", "32", "64", "android", "baremetal", "cgc", "freebsd", "linux", "windows", "powerpc64", "aarch64", "powerpc", "sparc64", "mips64", "msp430", "alpha", "amd64", "sparc", "thumb", "cris", "i386", "ia64", "m68k", "mips", "s390", "none", "avr", "arm", "vax", "little", "big", "be", "eb", "le", "el"\]]:-c :(16 32 64 android baremetal cgc freebsd linux windows powerpc64 aarch64 powerpc sparc64 mips64 msp430 alpha amd64 sparc thumb cris i386 ia64 m68k mips s390 none avr arm vax little big be eb le el)' \
'(-p --alphanumeric)'{-p,--alphanumeric}'[Encode the shellcode with an alphanumeric encoder]' \
'(-v --avoid)'{-v,--avoid}'=[Encode the shellcode to avoid the listed bytes]:' \
'(-n --newline)'{-n,--newline}'[Encode the shellcode to avoid newlines]' \
'(-z --zero)'{-z,--zero}'[Encode the shellcode to avoid NULL bytes]' \
'(-d --debug)'{-d,--debug}'[Debug the shellcode with GDB]' \
;;
shellcraft)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
'(-? --show)'{-?,--show}'[Show shellcode documentation]' \
'(-o --out)'{-o,--out}'=[Output file (default: stdout)]:' \
'(-f --format)'{-f,--format}'=[Output format (default: hex), choose from {e}lf, {r}aw, {s}tring, {c}-style array, {h}ex string, hex{i}i, {a}ssembly code, {p}reprocssed code, escape{d} hex string]:-f :(r raw s str string c h hex a asm assembly p i hexii e elf d escaped default)' \
'(-d --debug)'{-d,--debug}'[Debug the shellcode with GDB]' \
'(-b --before)'{-b,--before}'[Insert a debug trap before the code]' \
'(-a --after)'{-a,--after}'[Insert a debug trap after the code]' \
'(-v --avoid)'{-v,--avoid}'=[Encode the shellcode to avoid the listed bytes]:' \
'(-n --newline)'{-n,--newline}'[Encode the shellcode to avoid newlines]' \
'(-z --zero)'{-z,--zero}'[Encode the shellcode to avoid NULL bytes]' \
'(-r --run)'{-r,--run}'[Run output]' \
'--color[Color output]' \
'--no-color[Disable color output]' \
'--syscalls[List syscalls]' \
'--address=[Load address]:' \
'(-l --list)'{-l,--list}'[List available shellcodes, optionally provide a filter]' \
'(-s --shared)'{-s,--shared}'[Generated ELF is a shared library]' \
;;
template)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
'--host=[Remote host / SSH server]:' \
'--port=[Remote port / SSH port]:' \
'--user=[SSH Username]:' \
'(--pass --password)'{--pass,--password}'=[SSH Password]:' \
'--path=[Remote path of file on SSH server]:' \
'--quiet[Less verbose template comments]' \
'--color=[Print the output in color]:--color :(never always auto)' \
;;
unhex)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
;;
update)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
'--install[Install the update automatically.]' \
'--pre[Check for pre-releases.]' \
;;
version)
_arguments \
'(-h --help)'{-h,--help}'[show this help message and exit]' \
;;
esac
;;
esac
}
_pwn
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env zsh
# Try to find a writable directory first, in reverse order
for dir in "${(Oa)fpath[@]}"; do
if [ -w "$dir" ]; then
cp -f ${0:h}/_pwn "$dir"
return
fi
done
cat <<EOF
Could not find a suitable directory to install the completion.
Try adding this line at the top of your ~/.zshrc, and start a new shell.
fpath=( ${0:A:h} \$fpath )
If completion does not work, add this to the bottom of your ~/.zshrc, and start a new shell.
Users of prezto should enable the 'completion' module (enabled by default).
compinit -i
EOF
-1
View File
@@ -7,7 +7,6 @@ pwnlib.args.initialize()
pwnlib.log.install_default_handler()
pwnlib.config.initialize()
log = pwnlib.log.getLogger('pwnlib.exploit')
args = pwnlib.args.args
if not platform.architecture()[0].startswith('64'):
+15 -3
View File
@@ -6,7 +6,6 @@ import operator
import os
import platform
import re
import requests
import socks
import signal
import string
@@ -17,7 +16,6 @@ import tempfile
import threading
import time
import colored_traceback
from pprint import pprint
import pwnlib
@@ -78,6 +76,7 @@ from pwnlib.util.web import *
from six.moves import cPickle as pickle, cStringIO as StringIO
from six import BytesIO
log = getLogger("pwnlib.exploit")
error = log.error
warning = log.warning
warn = log.warning
@@ -85,7 +84,20 @@ info = log.info
debug = log.debug
success = log.success
colored_traceback.add_hook()
try:
import colored_traceback
except ImportError:
pass
else:
try:
colored_traceback.add_hook()
except Exception:
# Exception: curses.error
# colored_traceback (curses.setupterm()) fails if TERM is unset.
# This is not critical, so we just ignore it.
# We cannot import `curses` for `curses.error` because it is not
# available on all platforms (e.g. Windows).
pass
# Equivalence with the default behavior of "from import *"
# __all__ = [x for x in tuple(globals()) if not x.startswith('_')]
+5 -6
View File
@@ -1,12 +1,11 @@
from __future__ import absolute_import
import importlib
from pwnlib.version import __version__
from .version import __version__
version = __version__
__all__ = [
'adb',
'args',
'asm',
'atexception',
@@ -35,9 +34,9 @@ __all__ = [
'ui',
'useragents',
'util',
'adb',
'update',
'version',
'windbg',
]
for module in __all__:
importlib.import_module('.%s' % module, 'pwnlib')
from . import args
+40 -7
View File
@@ -48,6 +48,8 @@ class ABI(object):
(32, 'mips', 'linux'): linux_mips,
(32, 'powerpc', 'linux'): linux_ppc,
(64, 'powerpc', 'linux'): linux_ppc64,
(32, 'riscv32', 'linux'): linux_riscv32,
(64, 'riscv64', 'linux'): linux_riscv64,
(32, 'i386', 'freebsd'): freebsd_i386,
(64, 'aarch64', 'freebsd'): freebsd_aarch64,
(64, 'amd64', 'freebsd'): freebsd_amd64,
@@ -58,6 +60,8 @@ class ABI(object):
(64, 'powerpc', 'freebsd'): freebsd_ppc64,
(32, 'i386', 'windows'): windows_i386,
(64, 'amd64', 'windows'): windows_amd64,
(64, 'amd64', 'darwin'): darwin_amd64,
(64, 'aarch64', 'darwin'): darwin_aarch64,
}[(context.bits, context.arch, context.os)]
@staticmethod
@@ -76,6 +80,8 @@ class ABI(object):
(64, 'aarch64', 'linux'): linux_aarch64_syscall,
(32, 'powerpc', 'linux'): linux_ppc_syscall,
(64, 'powerpc', 'linux'): linux_ppc64_syscall,
(32, 'riscv32', 'linux'): linux_riscv32_syscall,
(64, 'riscv64', 'linux'): linux_riscv64_syscall,
(32, 'i386', 'freebsd'): freebsd_i386_syscall,
(64, 'amd64', 'freebsd'): freebsd_amd64_syscall,
(64, 'aarch64', 'freebsd'): freebsd_aarch64_syscall,
@@ -85,6 +91,8 @@ class ABI(object):
(64, 'aarch64', 'freebsd'): freebsd_aarch64_syscall,
(32, 'powerpc', 'freebsd'): freebsd_ppc_syscall,
(64, 'powerpc', 'freebsd'): freebsd_ppc64_syscall,
(64, 'amd64', 'darwin'): darwin_amd64_syscall,
(64, 'aarch64', 'darwin'): darwin_aarch64_syscall,
}[(context.bits, context.arch, context.os)]
@staticmethod
@@ -99,13 +107,18 @@ class ABI(object):
(32, 'arm', 'linux'): linux_arm_sigreturn,
(32, 'thumb', 'linux'): linux_arm_sigreturn,
(64, 'aarch64', 'linux'): linux_aarch64_sigreturn,
(32, 'riscv32', 'linux'): linux_riscv32_sigreturn,
(64, 'riscv64', 'linux'): linux_riscv64_sigreturn,
(32, 'i386', 'freebsd'): freebsd_i386_sigreturn,
(64, 'amd64', 'freebsd'): freebsd_amd64_sigreturn,
(32, 'arm', 'freebsd'): freebsd_arm_sigreturn,
(32, 'thumb', 'freebsd'): freebsd_arm_sigreturn,
(64, 'aarch64', 'freebsd'): freebsd_aarch64_sigreturn,
(64, 'amd64', 'darwin'): darwin_amd64_sigreturn,
(64, 'aarch64', 'darwin'): darwin_aarch64_sigreturn,
}[(context.bits, context.arch, context.os)]
class SyscallABI(ABI):
"""
The syscall ABI treats the syscall number as the zeroth argument,
@@ -115,6 +128,7 @@ class SyscallABI(ABI):
super(SyscallABI, self).__init__(*a, **kw)
self.syscall_register = self.register_arguments[0]
class SigreturnABI(SyscallABI):
"""
The sigreturn ABI is similar to the syscall ABI, except that
@@ -128,10 +142,12 @@ class SigreturnABI(SyscallABI):
linux_i386 = ABI('esp', [], 4, 0)
linux_amd64 = ABI('rsp', ['rdi','rsi','rdx','rcx','r8','r9'], 8, 0)
linux_arm = ABI('sp', ['r0', 'r1', 'r2', 'r3'], 8, 0)
linux_aarch64 = ABI('sp', ['x0', 'x1', 'x2', 'x3'], 16, 0)
linux_aarch64 = ABI('sp', ['x0', 'x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7'], 16, 0)
linux_mips = ABI('$sp', ['$a0','$a1','$a2','$a3'], 4, 0)
linux_ppc = ABI('sp', ['r3', 'r4', 'r5', 'r6', 'r7', 'r8', 'r9', 'r10'], 4, 0)
linux_ppc64 = ABI('sp', ['r3', 'r4', 'r5', 'r6', 'r7', 'r8', 'r9', 'r10'], 8, 0)
linux_riscv32 = ABI('sp', ['a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7'], 8, 0)
linux_riscv64 = ABI('sp', ['a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7'], 8, 0)
sysv_i386 = linux_i386
sysv_amd64 = linux_amd64
@@ -140,24 +156,33 @@ sysv_aarch64 = linux_aarch64
sysv_mips = linux_mips
sysv_ppc = linux_ppc
sysv_ppc64 = linux_ppc64
sysv_riscv32 = linux_riscv32
sysv_riscv64 = linux_riscv64
# Docs: https://man7.org/linux/man-pages/man2/syscall.2.html
linux_i386_syscall = SyscallABI('esp', ['eax', 'ebx', 'ecx', 'edx', 'esi', 'edi', 'ebp'], 4, 0)
linux_amd64_syscall = SyscallABI('rsp', ['rax', 'rdi', 'rsi', 'rdx', 'r10', 'r8', 'r9'], 8, 0)
linux_arm_syscall = SyscallABI('sp', ['r7', 'r0', 'r1', 'r2', 'r3', 'r4', 'r5', 'r6'], 4, 0)
linux_aarch64_syscall = SyscallABI('sp', ['x8', 'x0', 'x1', 'x2', 'x3', 'x4', 'x5', 'x6'], 16, 0)
linux_arm_syscall = SyscallABI('sp', ['r7', 'r0', 'r1', 'r2', 'r3', 'r4', 'r5', 'r6'], 4, 0)
linux_aarch64_syscall = SyscallABI('sp', ['x8', 'x0', 'x1', 'x2', 'x3', 'x4', 'x5'], 16, 0)
linux_mips_syscall = SyscallABI('$sp', ['$v0','$a0','$a1','$a2','$a3'], 4, 0)
linux_ppc_syscall = ABI('sp', ['r0', 'r3', 'r4', 'r5', 'r6', 'r7', 'r8', 'r9'], 4, 0)
linux_ppc64_syscall = ABI('sp', ['r0', 'r3', 'r4', 'r5', 'r6', 'r7', 'r8', 'r9'], 8, 0)
linux_ppc_syscall = SyscallABI('sp', ['r0', 'r3', 'r4', 'r5', 'r6', 'r7', 'r8', 'r9'], 4, 0)
linux_ppc64_syscall = SyscallABI('sp', ['r0', 'r3', 'r4', 'r5', 'r6', 'r7', 'r8'], 8, 0)
linux_riscv32_syscall = SyscallABI('sp', ['a7', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5'], 4, 0)
linux_riscv64_syscall = SyscallABI('sp', ['a7', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5'], 8, 0)
linux_i386_sigreturn = SigreturnABI('esp', ['eax'], 4, 0)
linux_amd64_sigreturn = SigreturnABI('rsp', ['rax'], 4, 0)
linux_amd64_sigreturn = SigreturnABI('rsp', ['rax'], 8, 0)
linux_arm_sigreturn = SigreturnABI('sp', ['r7'], 4, 0)
linux_aarch64_sigreturn = SigreturnABI('sp', ['x8'], 16, 0)
linux_riscv32_sigreturn = SigreturnABI('sp', ['a7'], 4, 0)
linux_riscv64_sigreturn = SigreturnABI('sp', ['a7'], 8, 0)
sysv_i386_sigreturn = linux_i386_sigreturn
sysv_amd64_sigreturn = linux_amd64_sigreturn
sysv_arm_sigreturn = linux_arm_sigreturn
sysv_aarch64_sigreturn = linux_aarch64_sigreturn
sysv_riscv32_sigreturn = linux_riscv32_sigreturn
sysv_riscv64_sigreturn = linux_riscv64_sigreturn
freebsd_i386 = sysv_i386
freebsd_amd64 = sysv_amd64
@@ -168,7 +193,7 @@ freebsd_ppc = sysv_ppc
freebsd_ppc64 = sysv_ppc64
freebsd_i386_syscall = SyscallABI('esp', ['eax'], 4, 0)
freebsd_amd64_syscall = SyscallABI('rsp', ['rax','rdi','rsi','rdx','rcx','r8','r9'], 8, 0)
freebsd_amd64_syscall = SyscallABI('rsp', ['rax','rdi','rsi','rdx','r10','r8','r9'], 8, 0)
freebsd_arm_syscall = SyscallABI('sp', ['r7', 'r0', 'r1', 'r2', 'r3'], 8, 0)
freebsd_aarch64_syscall = SyscallABI('sp', ['x8', 'x0', 'x1', 'x2', 'x3'], 16, 0)
freebsd_mips_syscall = SyscallABI('$sp', ['$v0','$a0','$a1','$a2','$a3'], 4, 0)
@@ -182,3 +207,11 @@ freebsd_aarch64_sigreturn = sysv_aarch64_sigreturn
windows_i386 = ABI('esp', [], 4, 0)
windows_amd64 = ABI('rsp', ['rcx','rdx','r8','r9'], 32, 32)
darwin_aarch64 = sysv_aarch64
darwin_aarch64_syscall = SyscallABI('sp', ['x16', 'x0', 'x1', 'x2', 'x3', 'x4', 'x5'], 16, 0)
darwin_aarch64_sigreturn = SigreturnABI('sp', ['x16'], 16, 0)
darwin_amd64 = sysv_amd64
darwin_amd64_syscall = SyscallABI('rsp', ['rax', 'rdi', 'rsi', 'rdx', 'r10', 'r8', 'r9'], 8, 0)
darwin_amd64_sigreturn = SigreturnABI('rsp', ['rax'], 8, 0)
+53 -19
View File
@@ -66,8 +66,10 @@ from pwnlib import tubes
from pwnlib.context import LocalContext
from pwnlib.context import context
from pwnlib.device import Device
from pwnlib.exception import PwnlibException
from pwnlib.log import getLogger
from pwnlib.protocols.adb import AdbClient
from pwnlib.util.packing import _decode
from pwnlib.util import misc
log = getLogger(__name__)
@@ -120,8 +122,8 @@ def current_device(any=False):
:skipif: skip_android
>>> device = adb.current_device(any=True)
>>> device
AdbDevice(serial='emulator-5554', type='device', port='emulator', product='sdk_google_phone_armv7', model='sdk google phone armv7', device='generic')
>>> device # doctest: +ELLIPSIS
AdbDevice(serial='emulator-5554', type='device', port='emulator', product='sdk_...phone..._...', model='...', device='...')
>>> device.port
'emulator'
"""
@@ -251,13 +253,13 @@ class AdbDevice(Device):
>>> device = adb.wait_for_device()
>>> device.arch
'arm'
'amd64'
>>> device.bits
32
64
>>> device.os
'android'
>>> device.product
'sdk_google_phone_armv7'
>>> device.product # doctest: +ELLIPSIS
'sdk_...phone..._...'
>>> device.serial
'emulator-5554'
"""
@@ -383,6 +385,9 @@ class AdbDevice(Device):
>>> adb.getprop(property) == device.getprop(property)
True
"""
if name.startswith('_'):
raise AttributeError(name)
with context.local(device=self):
g = globals()
@@ -875,7 +880,7 @@ def which(name, all = False, *a, **kw):
>>> adb.which('sh')
'/system/bin/sh'
>>> adb.which('sh', all=True)
['/system/bin/sh']
['/system/bin/sh', '/vendor/bin/sh']
>>> adb.which('foobar') is None
True
@@ -895,7 +900,7 @@ def which(name, all = False, *a, **kw):
which_cmd = which_cmd.strip()
data = process(['sh','-c', which_cmd], *a, **kw).recvall()
data = context._decode(data)
data = _decode(data)
result = []
for path in data.split('\x00'):
@@ -983,7 +988,7 @@ def proc_exe(pid):
:skipif: skip_android
>>> adb.proc_exe(1)
b'/init'
b'/system/bin/init'
"""
with context.quiet:
io = process(['realpath','/proc/%d/exe' % pid])
@@ -1012,12 +1017,12 @@ def getprop(name=None):
with context.quiet:
if name:
result = process(['getprop', name]).recvall().strip()
result = context._decode(result)
result = _decode(result)
return result
result = process(['getprop']).recvall()
result = context._decode(result)
result = _decode(result)
expr = r'\[([^\]]+)\]: \[(.*)\]'
props = {}
@@ -1270,8 +1275,28 @@ properties = Property()
def _build_date():
"""Returns the build date in the form YYYY-MM-DD as a string"""
import datetime
# Use ro.build.date.utc (integer epoch seconds) which is set by the
# AOSP build system and available on all standard Android devices.
# This avoids ro.build.date which is locale-dependent and can contain
# non-ASCII characters that dateutil cannot parse. See #2513.
utc = getprop('ro.build.date.utc')
if utc and utc.strip().isdigit():
try:
as_datetime = datetime.datetime.fromtimestamp(int(utc.strip()), dateutil.tz.UTC)
return as_datetime.strftime('%Y-%b-%d')
except (OSError, OverflowError, ValueError):
pass
# Fallback for non-standard builds missing ro.build.date.utc.
as_string = getprop('ro.build.date')
as_datetime = dateutil.parser.parse(as_string)
if not as_string:
return ''
try:
as_datetime = dateutil.parser.parse(as_string)
except (ValueError, OverflowError):
return as_string
return as_datetime.strftime('%Y-%b-%d')
def find_ndk_project_root(source):
@@ -1360,14 +1385,18 @@ def compile(source):
>>> filename = adb.compile(temp)
>>> sent = adb.push(filename, "/data/local/tmp")
>>> adb.process(sent).recvall() # doctest: +ELLIPSIS
b'... /system/bin/linker\n...'
b'... /system/lib64/libc++.so\n...'
"""
ndk_build = misc.which('ndk-build')
if not ndk_build:
# Ensure that we can find the NDK.
ndk = os.environ.get('NDK', None)
if ndk is None:
for envvar in ('NDK', 'ANDROID_NDK', 'ANDROID_NDK_ROOT',
'ANDROID_NDK_HOME', 'ANDROID_NDK_LATEST_HOME'):
ndk = os.environ.get(envvar)
if ndk is not None:
break
else:
log.error('$NDK must be set to the Android NDK directory')
ndk_build = os.path.join(ndk, 'ndk-build')
@@ -1482,8 +1511,9 @@ class Partitions(object):
@context.quietfunc
def by_name_dir(self):
try:
return next(find('/dev/block/platform','by-name'))
except StopIteration:
with context.local(log_level=logging.FATAL):
return next(find('/dev/block/platform','by-name'))
except (StopIteration, PwnlibException):
return '/dev/block'
@context.quietfunc
@@ -1512,7 +1542,7 @@ class Partitions(object):
return iter(names)
def __getattr__(self, attr):
if attr.startswith("_"):
if attr.startswith('_'):
raise AttributeError(attr)
for name in self:
@@ -1583,7 +1613,10 @@ def uninstall(package, *arguments):
@context.quietfunc
def packages():
"""Returns a list of packages installed on the system"""
packages = process(['pm', 'list', 'packages']).recvall()
# Decodes the received bytes as UTF-8 per:
# https://developer.android.com/reference/java/nio/charset/Charset#defaultCharset()
# where it is specified that UTF-8 is the default charset for Android.
packages = process(['pm', 'list', 'packages']).recvall().decode('utf-8')
return [line.split('package:', 1)[-1] for line in packages.splitlines()]
@context.quietfunc
@@ -1591,3 +1624,4 @@ def version():
"""Returns rthe platform version as a tuple."""
prop = getprop('ro.build.version.release')
return [int(v) for v in prop.split('.')]
+4 -4
View File
@@ -46,7 +46,7 @@ class BootImage(object):
self.kernel = self.data[PAGE:PAGE+self.kernel_size]
def __getattr__(self, name):
value = getattr(self.header, name, None)
if value is not None:
return value
return getattr(super(BootImage, self), name)
if name.startswith('_'):
raise AttributeError(name)
return getattr(self.header, name)
+5 -4
View File
@@ -114,10 +114,11 @@ class BootloaderImage(object):
return '\n'.join(rv)
def __getattr__(self, name):
value = getattr(self.header, name, None)
if value is not None:
return value
return getattr(super(BootImage, self), name)
if name.startswith('_'):
raise AttributeError(name)
return getattr(self.header, name)
if __name__ == '__main__':
# Easy sanity checking
+8
View File
@@ -62,6 +62,8 @@ from pwnlib.context import context
class PwnlibArgs(collections.defaultdict):
def __getattr__(self, attr):
if attr.startswith('_'):
raise AttributeError(attr)
return self[attr]
args = PwnlibArgs(str)
@@ -157,6 +159,11 @@ def STDERR(v):
"""Sends logging to ``stderr`` by default, instead of ``stdout``"""
context.log_console = sys.stderr
def LOCAL_LIBCDB(v):
"""Sets path to local libc-database via ``context.local_libcdb``, e.g.
``LOCAL_LIBCDB='/path/to/libc-databse'``"""
context.local_libcdb = v
hooks = {
'LOG_LEVEL': LOG_LEVEL,
'LOG_FILE': LOG_FILE,
@@ -168,6 +175,7 @@ hooks = {
'NOASLR': NOASLR,
'NOPTRACE': NOPTRACE,
'STDERR': STDERR,
'LOCAL_LIBCDB': LOCAL_LIBCDB,
}
def initialize():
+233 -49
View File
@@ -59,6 +59,9 @@ from pwnlib import shellcraft
from pwnlib.context import LocalContext
from pwnlib.context import context
from pwnlib.log import getLogger
from pwnlib.util.hashes import sha1sumhex
from pwnlib.util.packing import _encode
from pwnlib.version import __version__
log = getLogger(__name__)
@@ -136,8 +139,23 @@ Try installing binutils for this architecture:
%(instructions)s
""".strip() % locals())
def check_binutils_version(util):
if util_versions[util]:
return util_versions[util]
result = subprocess.check_output([util, '--version','/dev/null'],
stderr=subprocess.STDOUT, universal_newlines=True)
if 'clang' in result:
log.warn_once('Your binutils is clang-based and may not work!\n'
'Try installing with: https://docs.pwntools.com/en/stable/install/binutils.html\n'
'Reported version: %r', result.strip())
version = re.search(r' (\d+\.\d+)', result).group(1)
util_versions[util] = version = tuple(map(int, version.split('.')))
return version
@LocalContext
def which_binutils(util):
def which_binutils(util, check_version=False):
"""
Finds a binutils in the PATH somewhere.
Expects that the utility is prefixed with the architecture name.
@@ -152,6 +170,8 @@ def which_binutils(util):
'.../bin/arm-...-as'
>>> which_binutils('as', arch='powerpc') #doctest: +ELLIPSIS
'.../bin/powerpc...-as'
>>> which_binutils('as', arch='mips', endianness='little') #doctest: +ELLIPSIS
'.../bin/mipsel...-as'
>>> which_binutils('as', arch='msp430') #doctest: +SKIP
...
Traceback (most recent call last):
@@ -160,26 +180,44 @@ def which_binutils(util):
"""
arch = context.arch
# Handle endianness-specific naming for mips/mips64
arch = {
('mips', 'little'): 'mipsel',
('mips64', 'little'): 'mips64el',
}.get((arch, context.endianness), arch)
# Fix up pwntools vs Debian triplet naming, and account
# for 'thumb' being its own pwntools architecture.
arches = [arch] + {
aliases = {
'thumb': ['arm', 'aarch64'],
'i386': ['x86_64', 'amd64'],
'i686': ['x86_64', 'amd64'],
'amd64': ['x86_64', 'i386'],
'mips64': ['mips'],
'powerpc64': ['powerpc'],
'sparc64': ['sparc'],
'amd64': ['x86_64'],
}.get(arch, [])
# Some binutils can support multiple architectures. Try them as fallbacks.
fallback_arches = {
'i386': ['x86_64', 'amd64'],
'amd64': ['i386'],
'arm': ['aarch64'],
'mips': ['mipsel'],
'mipsel': ['mips'],
'mips64': ['mips64el', 'mips', 'mipsel'],
'mips64el': ['mips64', 'mipsel', 'mips'],
'powerpc64': ['powerpc'],
'sparc64': ['sparc'],
'riscv32': ['riscv64', 'riscv'],
'riscv64': ['riscv32', 'riscv'],
}.get(arch, [])
arches = [arch] + aliases + fallback_arches
# If one of the candidate architectures matches the native
# architecture, use that as a last resort.
# architecture, use that as a last resort before trying fallbacks.
machine = platform.machine()
machine = 'i386' if machine == 'i686' else machine
try:
with context.local(arch = machine):
if context.arch in arches:
arches.append(None)
arches = [arch] + aliases + [None] + fallback_arches
except AttributeError:
log.warn_once("Your local binutils won't be used because architecture %r is not supported." % machine)
@@ -189,6 +227,11 @@ def which_binutils(util):
if platform.system() == 'Darwin':
utils = ['g'+util, util]
if platform.system() == 'Windows':
utils = [util + '.exe']
# Try the explicit tools for the target architecture first,
# then the native one optionally, then fallbacks.
for arch in arches:
for gutil in utils:
# e.g. objdump
@@ -198,21 +241,29 @@ def which_binutils(util):
# e.g. aarch64-linux-gnu-objdump, avr-objdump
else:
patterns = ['%s*linux*-%s' % (arch, gutil),
'%s*-elf-%s' % (arch, gutil),
'%s-none*-%s' % (arch, gutil),
'%s-%s' % (arch, gutil)]
for pattern in patterns:
for dir in environ['PATH'].split(':'):
res = sorted(glob(path.join(dir, pattern)))
if res:
return res[0]
for dir in environ['PATH'].split(os.pathsep):
for res in sorted(glob(path.join(dir, pattern))):
if check_version:
ver = check_binutils_version(res)
return res, ver
return res
# No dice!
print_binutils_instructions(util, context)
checked_assembler_version = defaultdict(lambda: False)
util_versions = defaultdict(tuple)
def _assembler():
gas = which_binutils('as')
gas, version = which_binutils('as', check_version=True)
if version < (2, 19):
log.warn_once('Your binutils version is too old and may not work!\n'
'Try updating with: https://docs.pwntools.com/en/stable/install/binutils.html\n'
'Reported version: %r', version)
E = {
'big': '-EB',
@@ -239,26 +290,19 @@ def _assembler():
'powerpc64': [gas, '-m%s' % context.endianness, '-mppc%s' % context.bits],
# ia64 only accepts -mbe or -mle
'ia64': [gas, '-m%ce' % context.endianness[0]]
'ia64': [gas, '-m%ce' % context.endianness[0]],
# riscv64-unknown-elf-as supports riscv32 as well as riscv64
'riscv32': [gas, '-march=rv32gc', '-mabi=ilp32'],
'riscv64': [gas, '-march=rv64gc', '-mabi=lp64'],
}
assembler = assemblers.get(context.arch, [gas])
if not checked_assembler_version[gas]:
checked_assembler_version[gas] = True
result = subprocess.check_output([gas, '--version','/dev/null'],
stderr=subprocess.STDOUT, universal_newlines=True)
version = re.search(r' (\d\.\d+)', result).group(1)
if version < '2.19':
log.warn_once('Your binutils version is too old and may not work!\n'
'Try updating with: https://docs.pwntools.com/en/stable/install/binutils.html\n'
'Reported Version: %r', result.strip())
return assembler
def _linker():
ld = [which_binutils('ld')]
ld, _ = which_binutils('ld', check_version=True)
bfd = ['--oformat=' + _bfdname()]
E = {
@@ -270,7 +314,16 @@ def _linker():
'i386': ['-m', 'elf_i386'],
}.get(context.arch, [])
return ld + bfd + [E] + arguments
return [ld] + bfd + [E] + arguments
def _execstack(linker):
ldflags = ['-z', 'execstack']
version = util_versions[linker[0]]
if version >= (2, 39):
return ldflags + ['--no-warn-execstack', '--no-warn-rwx-segments']
return ldflags
def _objcopy():
return [which_binutils('objcopy')]
@@ -302,16 +355,20 @@ def _arch_header():
'_start:',
'__start:']
headers = {
'i386' : ['.intel_syntax noprefix'],
'amd64' : ['.intel_syntax noprefix'],
'i386' : ['.intel_syntax noprefix', '.p2align 0'],
'amd64' : ['.intel_syntax noprefix', '.p2align 0'],
'arm' : ['.syntax unified',
'.arch armv7-a',
'.arm'],
'.arm',
'.p2align 2'],
'thumb' : ['.syntax unified',
'.arch armv7-a',
'.thumb'],
'.thumb',
'.p2align 2'
],
'mips' : ['.set mips2',
'.set noreorder',
'.p2align 2'
],
}
@@ -337,6 +394,8 @@ def _bfdname():
'msp430' : 'elf32-msp430',
'powerpc' : 'elf32-powerpc',
'powerpc64' : 'elf64-powerpc',
'riscv32' : 'elf%d-%sriscv' % (context.bits, E),
'riscv64' : 'elf%d-%sriscv' % (context.bits, E),
'vax' : 'elf32-vax',
's390' : 'elf%d-s390' % context.bits,
'sparc' : 'elf32-sparc',
@@ -359,6 +418,8 @@ def _bfdarch():
'powerpc64': 'powerpc',
'sparc64': 'sparc',
'thumb': 'arm',
'riscv32': 'riscv',
'riscv64': 'riscv',
}
if arch in convert:
@@ -367,7 +428,7 @@ def _bfdarch():
return arch
def _run(cmd, stdin = None):
log.debug(subprocess.list2cmdline(cmd))
log.debug('%s', subprocess.list2cmdline(cmd))
try:
proc = subprocess.Popen(
cmd,
@@ -380,17 +441,20 @@ def _run(cmd, stdin = None):
exitcode = proc.wait()
except OSError as e:
if e.errno == errno.ENOENT:
log.exception('Could not run %r the program' % cmd[0])
log.exception('Could not run %r the program', cmd[0])
else:
raise
if (exitcode, stderr) != (0, ''):
msg = 'There was an error running %s:\n' % repr(cmd)
msg = 'There was an error running %r:\n'
args = cmd,
if exitcode != 0:
msg += 'It had the exitcode %d.\n' % exitcode
msg += 'It had the exitcode %d.\n'
args += exitcode,
if stderr != '':
msg += 'It had this on stdout:\n%s\n' % stderr
log.error(msg)
msg += 'It had this on stdout:\n%s\n'
args += stderr,
log.error(msg, *args)
return stdout
@@ -419,18 +483,24 @@ def cpp(shellcode):
>>> cpp("SYS_setresuid", os = "freebsd")
'311\n'
"""
if platform.system() == 'Windows':
cpp = which_binutils('cpp')
else:
cpp = 'cpp'
code = _include_header() + shellcode
cmd = [
'cpp',
cpp,
'-Wno-unused-command-line-argument',
'-C',
'-nostdinc',
'-undef',
'-P',
'-I' + _incdir,
'/dev/stdin'
]
return _run(cmd, code).strip('\n').rstrip() + '\n'
@LocalContext
def make_elf_from_assembly(assembly,
vma=None,
@@ -584,7 +654,7 @@ def make_elf(data,
_run(assembler + ['-o', step2, step1])
linker_options = ['-z', 'execstack']
linker_options = _execstack(linker)
if vma is not None:
linker_options += ['--section-start=.shellcode=%#x' % vma,
'--entry=%#x' % vma]
@@ -613,6 +683,68 @@ def make_elf(data,
return retval
@LocalContext
def make_macho_from_assembly(shellcode):
return make_macho(shellcode, is_shellcode=True)
@LocalContext
def make_macho(data, is_shellcode=False):
prefix = []
if context.arch == 'amd64':
prefix = [
'.intel_syntax noprefix',
]
prefix.extend([
'.text',
'.global _start',
'_start:',
'.p2align 2',
])
code = ''
code += '\n'.join(prefix) + '\n'
if is_shellcode:
code += cpp(data)
else:
code += '.string "%s"' % ''.join('\\x%02x' % c for c in bytearray(data))
log.debug('Assembling\n%s' % code)
tmpdir = tempfile.mkdtemp(prefix = 'pwn-asm-')
step1 = path.join(tmpdir, 'step1')
step2 = path.join(tmpdir, 'step2')
step3 = path.join(tmpdir, 'step3')
with open(step1, 'w') as fd:
fd.write(code)
assembler = [
'/usr/bin/as',
]
asflags = [
'-mmacosx-version-min=11.0',
'-o', step2, step1,
]
_run(assembler + asflags)
linker = [
'/usr/bin/ld',
]
ldflags = [
'-macos_version_min', '11.0',
'-l', 'System',
'-e', '_start',
'-L', '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib',
'-o', step3, step2,
]
_run(linker + ldflags)
os.chmod(step3, 0o755)
return step3
@LocalContext
def asm(shellcode, vma = 0, extract = True, shared = False):
r"""asm(code, vma = 0, extract = True, shared = False, ...) -> str
@@ -650,8 +782,23 @@ def asm(shellcode, vma = 0, extract = True, shared = False):
b'0@*\x00'
>>> asm("la %r0, 42", arch = 's390', bits=64)
b'A\x00\x00*'
The output is cached:
>>> start = time.time()
>>> asm("lea rax, [rip+0]", arch = 'amd64', cache_dir = None) # force uncached time
b'H\x8d\x05\x00\x00\x00\x00'
>>> uncached_time = time.time() - start
>>> asm("lea rax, [rip+0]", arch = 'amd64') # cache it
b'H\x8d\x05\x00\x00\x00\x00'
>>> start = time.time()
>>> asm("lea rax, [rip+0]", arch = 'amd64')
b'H\x8d\x05\x00\x00\x00\x00'
>>> cached_time = time.time() - start
>>> uncached_time > cached_time
True
"""
result = ''
result = b''
assembler = _assembler()
linker = _linker()
@@ -662,6 +809,30 @@ def asm(shellcode, vma = 0, extract = True, shared = False):
log.debug('Assembling\n%s' % code)
cache_file = None
if context.cache_dir:
cache_dir = os.path.join(context.cache_dir, 'asm-cache')
if not os.path.isdir(cache_dir):
os.makedirs(cache_dir)
# Include the context in the hash in addition to the shellcode
hash_params = '{}_{}_{}_{}'.format(vma, extract, shared, __version__)
fingerprint_params = _encode(code) + _encode(hash_params) + _encode(' '.join(assembler)) + _encode(' '.join(linker)) + _encode(' '.join(objcopy))
asm_hash = sha1sumhex(fingerprint_params)
cache_file = os.path.join(cache_dir, asm_hash)
if os.path.exists(cache_file):
log.debug('Using cached assembly output from %r', cache_file)
if extract:
with open(cache_file, 'rb') as f:
return f.read()
# Create a temporary copy of the cached file to avoid modification.
tmpdir = tempfile.mkdtemp(prefix = 'pwn-asm-')
atexit.register(shutil.rmtree, tmpdir)
step3 = os.path.join(tmpdir, 'step3')
shutil.copy(cache_file, step3)
return step3
tmpdir = tempfile.mkdtemp(prefix = 'pwn-asm-')
step1 = path.join(tmpdir, 'step1')
step2 = path.join(tmpdir, 'step2')
@@ -678,7 +849,7 @@ def asm(shellcode, vma = 0, extract = True, shared = False):
shutil.copy(step2, step3)
if vma or not extract:
ldflags = ['-z', 'execstack', '-o', step3, step2]
ldflags = _execstack(linker) + ['-o', step3, step2]
if vma:
ldflags += ['--section-start=.shellcode=%#x' % vma,
'--entry=%#x' % vma]
@@ -709,6 +880,8 @@ def asm(shellcode, vma = 0, extract = True, shared = False):
shutil.copy(step2, step3)
if not extract:
if cache_file is not None:
shutil.copy(step3, cache_file)
return step3
_run(objcopy + [step3, step4])
@@ -722,6 +895,10 @@ def asm(shellcode, vma = 0, extract = True, shared = False):
else:
atexit.register(lambda: shutil.rmtree(tmpdir))
if cache_file is not None and result != b'':
with open(cache_file, 'wb') as f:
f.write(result)
return result
@LocalContext
@@ -754,13 +931,13 @@ def disasm(data, vma = 0, byte = True, offset = True, instructions = True):
0: b8 17 00 00 00 mov eax, 0x17
>>> print(disasm(unhex('48c7c017000000'), arch = 'amd64'))
0: 48 c7 c0 17 00 00 00 mov rax, 0x17
>>> print(disasm(unhex('04001fe552009000'), arch = 'arm'))
0: e51f0004 ldr r0, [pc, #-4] ; 0x4
>>> print(disasm(unhex('04001fe552009000'), arch = 'arm')) # doctest: +ELLIPSIS
0: e51f0004 ldr r0, [pc, #-4] ...
4: 00900052 addseq r0, r0, r2, asr r0
>>> print(disasm(unhex('4ff00500'), arch = 'thumb', bits=32))
0: f04f 0005 mov.w r0, #5
>>> print(disasm(unhex('656664676665400F18A4000000000051'), byte=0, arch='amd64'))
0: gs data16 fs data16 rex nop/reserved BYTE PTR gs:[eax+eax*1+0x0]
0: gs data16 fs rex nop WORD PTR gs:[eax+eax*1+0x0]
f: push rcx
>>> print(disasm(unhex('01000000'), arch='sparc64'))
0: 01 00 00 00 nop
@@ -768,6 +945,11 @@ def disasm(data, vma = 0, byte = True, offset = True, instructions = True):
0: 60 00 00 00 nop
>>> print(disasm(unhex('00000000'), arch='mips64'))
0: 00000000 nop
>>> print(disasm(unhex('48b84141414141414100c3'), arch='amd64'))
0: 48 b8 41 41 41 41 41 41 41 00 movabs rax, 0x41414141414141
a: c3 ret
>>> print(disasm(unhex('00000000'), vma=0x80000000, arch='mips'))
80000000: 00000000 nop
"""
result = ''
@@ -779,7 +961,7 @@ def disasm(data, vma = 0, byte = True, offset = True, instructions = True):
bfdarch = _bfdarch()
bfdname = _bfdname()
objdump = _objdump() + ['-d', '--adjust-vma', str(vma), '-b', bfdname]
objdump = _objdump() + ['-w', '-d', '--adjust-vma', str(vma), '-b', bfdname]
objcopy = _objcopy() + [
'-I', 'binary',
'-O', bfdname,
@@ -804,7 +986,7 @@ def disasm(data, vma = 0, byte = True, offset = True, instructions = True):
_run(objcopy + [step1, step2])
output0 = _run(objdump + [step2])
output1 = output0.split('<.text>:\n')
output1 = re.split(r'<\.text(?:\+0x0)?>:\n', output0, flags=re.MULTILINE)
if len(output1) != 2:
log.error('Could not find .text in objdump output:\n%s' % output0)
@@ -817,6 +999,8 @@ def disasm(data, vma = 0, byte = True, offset = True, instructions = True):
lines = []
# Note: those patterns are also used in pwnlib/commandline/disasm.py
pattern = '^( *[0-9a-f]+: *)', '((?:[0-9a-f]+ )+ *)', '(.*)'
if not byte:
pattern = pattern[::2]
-1
View File
@@ -1,4 +1,3 @@
#!/usr/bin/env python2
__all__ = [
'asm',
'checksec',
+2 -3
View File
@@ -1,11 +1,10 @@
#!/usr/bin/env python2
from __future__ import absolute_import
from __future__ import division
import argparse
import sys
import pwnlib
import pwnlib.args
pwnlib.args.free_form = False
from pwn import *
@@ -138,4 +137,4 @@ def main(args):
args.output.write(b'\n')
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
pwnlib.commandline.common.main(__file__, main)
+6 -6
View File
@@ -1,4 +1,3 @@
#!/usr/bin/env python2
from __future__ import absolute_import
from __future__ import division
@@ -16,7 +15,6 @@ parser = common.parser_commands.add_parser(
parser.add_argument(
'elf',
nargs='*',
type=argparse.FileType('rb'),
help='Files to check'
)
parser.add_argument(
@@ -24,19 +22,21 @@ parser.add_argument(
nargs='*',
dest='elf2',
metavar='elf',
type=argparse.FileType('rb'),
help='File to check (for compatibility with checksec.sh)'
)
def main(args):
files = args.elf or args.elf2 or []
files = args.elf or args.elf2 or []
if not files:
parser.print_usage()
return
for f in files:
e = ELF(f.name)
try:
e = ELF(f)
except Exception as e:
print("{name}: {error}".format(name=f, error=e))
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
common.main(__file__, main)
+20 -3
View File
@@ -25,8 +25,25 @@ parser = argparse.ArgumentParser(description='Pwntools Command-line Interface',
prog='pwn')
parser_commands = parser.add_subparsers(dest='command')
def main(file=sys.argv[0]):
import pwnlib.commandline.main
def main(file=sys.argv[0], command_main=None):
name = os.path.splitext(os.path.basename(file))[0]
if command_main is None:
import importlib
command_main = importlib.import_module('pwnlib.commandline.%s' % name).main
sys.argv.insert(1, name)
pwnlib.commandline.main.main()
entrypoint({name: command_main})
def deprecated_main():
file=sys.argv[0]
name = os.path.splitext(os.path.basename(file))[0]
import warnings
warnings.warn("The '%s' command is deprecated and will be removed in a future version. Please use 'pwn %s' instead." % (name, name), DeprecationWarning, stacklevel=2)
main(file)
def entrypoint(commands):
if len(sys.argv) < 2:
parser.print_usage()
sys.exit()
args = parser.parse_args()
with context.local(log_console = sys.stderr):
commands[args.command](args)
Executable → Regular
+8 -5
View File
@@ -1,4 +1,3 @@
#!/usr/bin/env python2
from __future__ import absolute_import
from __future__ import division
@@ -6,7 +5,7 @@ import argparse
import functools
import re
import pwnlib
import pwnlib.args
pwnlib.args.free_form = False
from pwn import *
@@ -92,9 +91,13 @@ def main(args):
if not matcher.search(k):
continue
# Check if the value has proper type
val = getattr(mod, k)
if not isinstance(val, pwnlib.constants.constant.Constant):
continue
# Check the constant
if constant is not None:
val = getattr(mod, k)
if args.mask_mode:
if constant & val != val:
continue
@@ -103,7 +106,7 @@ def main(args):
continue
# Append it
out.append((getattr(mod, k), k))
out.append((val, k))
maxlen = max(len(k), maxlen)
# Output all matching constants
@@ -130,4 +133,4 @@ def main(args):
print('(%s) == %s' % (' | '.join(k for v, k in good), args.constant))
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
pwnlib.commandline.common.main(__file__, main)
+11 -6
View File
@@ -1,4 +1,3 @@
#!/usr/bin/env python2
from __future__ import absolute_import
from __future__ import division
@@ -7,7 +6,7 @@ import six
import string
import sys
import pwnlib
import pwnlib.args
pwnlib.args.free_form = False
from pwn import *
@@ -23,7 +22,7 @@ parser.add_argument(
'-a', '--alphabet',
metavar = 'alphabet',
default = string.ascii_lowercase.encode(),
type = six.ensure_binary,
type = packing._encode,
help = 'The alphabet to use in the cyclic pattern (defaults to all lower case letters)',
)
@@ -67,15 +66,21 @@ def main(args):
if args.lookup:
pat = args.lookup
if six.PY3:
pat = bytes(pat, encoding='utf-8')
try:
pat = int(pat, 0)
pat = pack(pat, 'all')
except ValueError:
pass
pat = flat(pat, bytes=args.length)
if len(pat) != subsize:
log.critical('Subpattern must be %d bytes' % subsize)
if len(pat) < subsize:
log.critical('Subpattern must be at least %d bytes' % subsize)
sys.exit(1)
else:
pat = pat[:subsize]
if not all(c in alphabet for c in pat):
log.critical('Pattern contains characters not present in the alphabet')
@@ -102,4 +107,4 @@ def main(args):
out.write(b'\n')
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
pwnlib.commandline.common.main(__file__, main)
+1 -2
View File
@@ -1,4 +1,3 @@
#!/usr/bin/env python2
from __future__ import absolute_import
from __future__ import division
@@ -103,4 +102,4 @@ def main(args):
gdb.debug(target, gdbscript=gdbscript, sysroot=args.sysroot).interactive()
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
pwnlib.commandline.common.main(__file__, main)
+1 -2
View File
@@ -1,4 +1,3 @@
#!/usr/bin/env python2
from __future__ import absolute_import
from __future__ import division
@@ -25,4 +24,4 @@ def main(args):
ELF(e.path)
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
pwnlib.commandline.common.main(__file__, main)
+29 -13
View File
@@ -1,13 +1,13 @@
#!/usr/bin/env python2
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import argparse
import re
import string
import sys
import pwnlib
import pwnlib.args
pwnlib.args.free_form = False
from pwn import *
@@ -77,21 +77,37 @@ def main(args):
from pygments.formatters import TerminalFormatter
from pwnlib.lexer import PwntoolsLexer
offsets = disasm(dat, vma=safeeval.const(args.address), instructions=False, byte=False)
bytes = disasm(dat, vma=safeeval.const(args.address), instructions=False, offset=False)
instrs = disasm(dat, vma=safeeval.const(args.address), byte=False, offset=False)
# instrs = highlight(instrs, PwntoolsLexer(), TerminalFormatter())
dis = disasm(dat, vma=safeeval.const(args.address))
for o,b,i in zip(*map(str.splitlines, (offsets, bytes, instrs))):
b = b.replace('00', text.red('00'))
b = b.replace('0a', text.red('0a'))
i = highlight(i.strip(), PwntoolsLexer(), TerminalFormatter()).strip()
i = i.replace(',',', ')
# Note: those patterns are copied from disasm function
pattern = '^( *[0-9a-f]+: *)((?:[0-9a-f]+ )+ *)(.*)'
lines = []
for line in dis.splitlines():
match = re.search(pattern, line)
if not match:
# Append as one element tuple
lines.append((line,))
continue
print(o,b,i)
groups = match.groups()
o, b, i = groups
lines.append((o, b, i))
highlight_bytes = lambda t: ''.join(map(lambda x: x.replace('00', text.red('00')).replace('0a', text.red('0a')), group(2, t)))
for line in lines:
if len(line) == 3:
o, b, i = line
b = ' '.join(highlight_bytes(bb) for bb in b.split(' '))
i = highlight(i.strip(), PwntoolsLexer(), TerminalFormatter()).strip()
i = i.replace(',',', ')
print(o,b,i)
else:
print(line[0])
return
print(disasm(dat, vma=safeeval.const(args.address)))
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
pwnlib.commandline.common.main(__file__, main)
+2 -3
View File
@@ -1,4 +1,3 @@
#!/usr/bin/env python2
from __future__ import absolute_import
from __future__ import division
@@ -8,7 +7,7 @@ from subprocess import CalledProcessError
from subprocess import check_output
from tempfile import NamedTemporaryFile
import pwnlib
import pwnlib.args
pwnlib.args.free_form = False
from pwn import *
@@ -60,4 +59,4 @@ def main(a):
print(diff(x, y))
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
pwnlib.commandline.common.main(__file__, main)
+2 -3
View File
@@ -1,10 +1,9 @@
#!/usr/bin/env python2
from __future__ import absolute_import
from __future__ import division
import sys
import pwnlib
import pwnlib.args
pwnlib.args.free_form = False
from pwn import *
@@ -35,4 +34,4 @@ def main(a):
getattr(sys.stdout, 'buffer', sys.stdout).write(elf.get_data())
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
pwnlib.commandline.common.main(__file__, main)
+1 -1
View File
@@ -46,4 +46,4 @@ def main(args):
print(os.strerror(value))
if __name__ == '__main__':
common.main(__file__)
common.main(__file__, main)
+28 -4
View File
@@ -1,4 +1,3 @@
#!/usr/bin/env python2
from __future__ import absolute_import
from __future__ import division
@@ -7,6 +6,7 @@ import sys
from pwnlib.commandline import common
from pwnlib.util.fiddling import enhex
from pwnlib.util.lists import group
parser = common.parser_commands.add_parser(
'hex',
@@ -16,14 +16,38 @@ parser = common.parser_commands.add_parser(
parser.add_argument('data', nargs='*',
help='Data to convert into hex')
parser.add_argument(
'-p', '--prefix',
metavar = 'prefix',
type = str,
default = '',
help = 'Insert a prefix before each byte',
)
parser.add_argument(
'-s', '--separator',
metavar = 'separator',
type = str,
default = '',
help = 'Add a separator between each byte',
)
def format_hex(hex_string, prefix, separator):
return separator.join([prefix + x for x in group(2, hex_string)])
def main(args):
if not args.data:
print(enhex(getattr(sys.stdin, 'buffer', sys.stdin).read()))
encoded = enhex(getattr(sys.stdin, 'buffer', sys.stdin).read())
else:
data = ' '.join(args.data)
if not hasattr(data, 'decode'):
data = data.encode('utf-8', 'surrogateescape')
print(enhex(data))
encoded = enhex(data)
if args.prefix or args.separator:
encoded = format_hex(encoded, args.prefix, args.separator)
print(encoded)
if __name__ == '__main__':
common.main(__file__)
common.main(__file__, main)
+294
View File
@@ -0,0 +1,294 @@
#!/usr/bin/env python
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import re
import shutil
import sys
import pwnlib.args
pwnlib.args.free_form = False
from pwn import *
from pwnlib.commandline import common
parser = common.parser_commands.add_parser(
'libcdb',
help = 'Print various information about a libc binary',
description = 'Print various information about a libc binary'
)
libc_commands = parser.add_subparsers(
dest = 'libc_command'
)
lookup_parser = libc_commands.add_parser(
'lookup',
help = 'Lookup a libc version by function offsets',
description = 'Lookup a libc version by function offsets'
)
lookup_parser.add_argument(
'symbol_offset_pairs',
metavar = 'symbol_offset_pairs',
nargs = '+',
help = 'Symbol and offset pairs to lookup matching libc version. Can be any number of pairs to narrow the search. Example: "read 3e0 write 520"'
)
lookup_parser.add_argument(
'-d', '--download-libc',
action = 'store_true',
default = False,
help = 'Attempt to download the matching libc.so'
)
lookup_parser.add_argument(
'--no-unstrip',
action = 'store_false',
dest = 'unstrip',
help = 'Do NOT attempt to unstrip the libc binary with debug symbols from a debuginfod server'
)
lookup_parser.add_argument(
'--offline-only',
action = 'store_true',
default = False,
dest = 'offline_only',
help = 'Attempt to searching with offline only mode'
)
hash_parser = libc_commands.add_parser(
'hash',
help = 'Display information of a libc version given an unique hash',
description = 'Display information of a libc version given an unique hash'
)
hash_parser.add_argument(
'hash_value',
metavar = 'hash_value',
nargs = '+',
help = 'Hex encoded hash value'
)
hash_parser.add_argument(
'-t', '--hash_type',
nargs = '?',
type = str,
choices = ['id', 'buildid', 'md5', 'sha1', 'sha256'],
default = 'buildid',
help = 'The type of the provided hash value. Supported hashtypes: id, buildid, md5, sha1, sha256'
)
hash_parser.add_argument(
'-d', '--download-libc',
action = 'store_true',
default = False,
help = 'Attempt to download the matching libc.so'
)
hash_parser.add_argument(
'--no-unstrip',
action = 'store_false',
dest = 'unstrip',
help = 'Do NOT attempt to unstrip the libc binary with debug symbols from a debuginfod server'
)
hash_parser.add_argument(
'--offline-only',
action = 'store_true',
default = False,
dest = 'offline_only',
help = 'Attempt to searching with offline only mode'
)
file_parser = libc_commands.add_parser(
'file',
help = 'Dump information about a libc binary',
description = 'Dump information about a libc binary'
)
file_parser.add_argument(
'files',
metavar = 'files',
nargs = '+',
help = 'Libc binary to dump'
)
file_parser.add_argument(
'-s', '--symbols',
metavar = 'symbols',
nargs = '*',
help = 'List of symbol offsets to dump in addition to the common ones'
)
file_parser.add_argument(
'-o', '--offset',
metavar = 'offset',
type = str,
help = 'Display all offsets relative to this symbol'
)
file_parser.add_argument(
'--unstrip',
action = 'store_true',
dest = 'unstrip',
help = 'Attempt to unstrip the libc binary inplace with debug symbols from a debuginfod server'
)
fetch_parser = libc_commands.add_parser(
'fetch',
help = 'Fetch libc database',
description = 'Fetch libc database. If no argument passed, it will init and upgrade libc-database repository',
)
fetch_parser.add_argument(
'path',
nargs = '?',
default = context.local_libcdb,
help = 'Set libc-database path, If it is empty, the default path will be `context.local_libcdb` (%s)' % context.local_libcdb
)
fetch_parser.add_argument(
'-u', '--update',
metavar = 'update',
nargs = '+',
choices = ['all', 'ubuntu', 'debian', 'rpm', 'centos', 'arch', 'alpine', 'kali', 'parrotsec', 'launchpad'],
help = 'Fetch the desired libc categories'
)
common_symbols = ['dup2', 'printf', 'puts', 'read', 'system', 'write']
def print_libc_info(libc):
log.info('%s', text.red(libc['id']))
log.indented('\t%-20s %s', text.green('BuildID:'), libc['buildid'])
log.indented('\t%-20s %s', text.green('MD5:'), libc['md5'])
log.indented('\t%-20s %s', text.green('SHA1:'), libc['sha1'])
log.indented('\t%-20s %s', text.green('SHA256:'), libc['sha256'])
log.indented('\t%s', text.green('Symbols:'))
for symbol in libc['symbols'].items():
log.indented('\t%25s = %s', symbol[0], symbol[1])
def print_libc_elf(exe):
from hashlib import md5, sha1, sha256
log.info('%s', text.red(os.path.basename(exe.path)))
libc_version = get_libc_version(exe)
if libc_version:
log.indented('%-20s %s', text.green('Version:'), libc_version)
if exe.buildid:
log.indented('%-20s %s', text.green('BuildID:'), enhex(exe.buildid))
log.indented('%-20s %s', text.green('MD5:'), md5(exe.data).hexdigest())
log.indented('%-20s %s', text.green('SHA1:'), sha1(exe.data).hexdigest())
log.indented('%-20s %s', text.green('SHA256:'), sha256(exe.data).hexdigest())
# Always dump the basic list of common symbols
log.indented('%s', text.green('Symbols:'))
synthetic_symbols = collect_synthetic_symbols(exe)
symbols = common_symbols + (args.symbols or []) + synthetic_symbols
symbols.sort()
for symbol in symbols:
if symbol not in exe.symbols:
log.indented('%25s = %s', symbol, text.red('not found'))
else:
log.indented('%25s = %#x', symbol, translate_offset(exe.symbols[symbol], args, exe))
def get_libc_version(exe):
res = re.search(br'libc[ -](\d+\.\d+)', exe.data)
if res:
return res.group(1).decode()
return None
def translate_offset(offs, args, exe):
if args.offset:
if args.offset not in exe.symbols:
log.info_once('offset symbol %s not found. ignoring.', args.offset)
return offs
return offs - exe.symbols[args.offset]
return offs
def collect_synthetic_symbols(exe):
available_symbols = []
try:
exe.symbols['str_bin_sh'] = next(exe.search(b'/bin/sh\x00'))
available_symbols.append('str_bin_sh')
except StopIteration:
pass
libc_start_main_return = exe.libc_start_main_return
if libc_start_main_return > 0:
exe.symbols['__libc_start_main_ret'] = libc_start_main_return
available_symbols.append('__libc_start_main_ret')
return available_symbols
def main(args):
if len(sys.argv) < 3:
parser.print_usage()
sys.exit()
if args.libc_command == 'lookup':
pairs = args.symbol_offset_pairs
if len(pairs) % 2 != 0:
log.failure('Uneven number of arguments. Please provide "symbol offset" pairs')
return
symbols = {pairs[i]:pairs[i+1] for i in range(0, len(pairs), 2)}
matched_libcs = libcdb.search_by_symbol_offsets(symbols, offline_only=args.offline_only, return_raw=True)
if not matched_libcs:
return
for libc in matched_libcs:
print_libc_info(libc)
if args.download_libc:
path = libcdb.search_by_build_id(libc['buildid'], args.unstrip)
if path:
shutil.copy(path, './{}.so'.format(libc['id']))
elif args.libc_command == 'hash':
inverted_map = {v: k for k, v in libcdb.MAP_TYPES.items()}
hash_type = inverted_map.get(args.hash_type, args.hash_type)
for hash_value in args.hash_value:
path = libcdb.search_by_hash(hash_value, hash_type, unstrip=args.unstrip, offline_only=args.offline_only)
exe = ELF(path, checksec=False)
print_libc_elf(exe)
if args.download_libc:
# if we cannot get actual libc version then copy with cache name
shutil.copy(path, './libc-{}.so'.format(get_libc_version(exe) or Path(path).stem))
elif args.libc_command == 'file':
for file in args.files:
if not os.path.exists(file) or not os.path.isfile(file):
log.failure('File does not exist %s', args.file)
continue
if args.unstrip:
libcdb.unstrip_libc(file)
print_libc_elf(ELF(file, checksec=False))
elif args.libc_command == 'fetch':
if args.update:
subprocess.check_call(['./get'] + args.update, cwd=args.path)
else:
if not Path(args.path).exists():
if yesno("Would you like to initialize the libc-database repository? "
"If the path already exists, this prompt will not display, and automatically upgrade repository."):
log.waitfor("init libc-database repository")
subprocess.check_call(['git', 'clone', 'https://github.com/niklasb/libc-database/', args.path])
else:
log.waitfor("upgrade libc-database repository")
subprocess.check_call(['git', 'pull'], cwd=args.path)
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__, main)
+4 -10
View File
@@ -1,7 +1,5 @@
from __future__ import absolute_import
import sys
from pwnlib.commandline import asm
from pwnlib.commandline import checksec
from pwnlib.commandline import common
@@ -14,6 +12,7 @@ from pwnlib.commandline import elfdiff
from pwnlib.commandline import elfpatch
from pwnlib.commandline import errno
from pwnlib.commandline import hex
from pwnlib.commandline import libcdb
from pwnlib.commandline import phd
from pwnlib.commandline import pwnstrip
from pwnlib.commandline import scramble
@@ -22,8 +21,7 @@ from pwnlib.commandline import template
from pwnlib.commandline import unhex
from pwnlib.commandline import update
from pwnlib.commandline import version
from pwnlib.commandline.common import parser
from pwnlib.context import context
from pwnlib.commandline.common import parser as parser
commands = {
'asm': asm.main,
@@ -37,6 +35,7 @@ commands = {
'elfpatch': elfpatch.main,
'errno': errno.main,
'hex': hex.main,
'libcdb': libcdb.main,
'phd': phd.main,
'pwnstrip': pwnstrip.main,
'scramble': scramble.main,
@@ -48,12 +47,7 @@ commands = {
}
def main():
if len(sys.argv) < 2:
parser.print_usage()
sys.exit()
args = parser.parse_args()
with context.local(log_console = sys.stderr):
commands[args.command](args)
common.entrypoint(commands)
if __name__ == '__main__':
main()
+5 -3
View File
@@ -1,13 +1,13 @@
#!/usr/bin/env python2
from __future__ import absolute_import
from __future__ import division
import argparse
import os
import signal
import sys
import io
import pwnlib
import pwnlib.args
pwnlib.args.free_form = False
from pwn import *
@@ -100,6 +100,8 @@ def main(args):
for h in hs.split(','):
hl.append(asint(h))
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
try:
for line in hexdump_iter(infile, width, highlight = hl, begin = offset + skip):
print(line)
@@ -107,4 +109,4 @@ def main(args):
pass
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
pwnlib.commandline.common.main(__file__, main)
+2 -2
View File
@@ -3,7 +3,7 @@ from __future__ import division
import argparse
import pwnlib
import pwnlib.args
pwnlib.args.free_form = False
from pwn import *
@@ -53,4 +53,4 @@ def main(args):
args.output.write(result)
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
pwnlib.commandline.common.main(__file__, main)
+2 -2
View File
@@ -4,7 +4,7 @@ from __future__ import division
import argparse
import sys
import pwnlib
import pwnlib.args
pwnlib.args.free_form = False
from pwn import *
@@ -110,4 +110,4 @@ def main(args):
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
pwnlib.commandline.common.main(__file__, main)
+113 -82
View File
@@ -1,4 +1,3 @@
#!/usr/bin/env python2
from __future__ import absolute_import
from __future__ import division
@@ -8,7 +7,7 @@ import six
import sys
import types
import pwnlib
import pwnlib.args
pwnlib.args.free_form = False
from pwn import *
@@ -72,17 +71,9 @@ p.add_argument(
p.add_argument(
'shellcode',
nargs = '?',
help = 'The shellcode you want',
type = str
)
p.add_argument(
'args',
nargs = '*',
metavar = 'arg',
default = (),
help = 'Argument to the chosen shellcode',
help = 'The shellcodes you want. shellcode [args ...] [+ shellcode [args ...]]',
type = str
)
p.add_argument(
@@ -92,6 +83,12 @@ p.add_argument(
action='store_true'
)
p.add_argument(
'--delim',
help='Set the delimiter between multilple shellcodes',
default='+'
)
p.add_argument(
'-b',
'--before',
@@ -173,24 +170,50 @@ p.add_argument(
help='Generated ELF is a shared library'
)
def get_template(name):
func = shellcraft
for attr in name.split('.'):
func = getattr(func, attr)
return func
def get_template(shellcodes):
funcs = []
for shellcode in shellcodes:
func = shellcraft
cur_name = shellcode[0]
args = []
if len(shellcode) > 1:
args = shellcode[1:]
for attr in cur_name.split('.'):
func = getattr(func, attr)
funcs.append((cur_name, func, args))
return funcs
def is_not_a_syscall_template(name):
template_src = shellcraft._get_source(name)
return '/syscalls' not in template_src
def main(args):
delim = '+'
if args.delim:
delim = args.delim.strip()
shellcodes = []
if args.shellcode:
current = []
for s in args.shellcode:
if s.strip() == delim:
shellcodes.append(current)
current = []
else:
current.append(s)
if len(current) > 0:
shellcodes.append(current)
if args.list:
templates = shellcraft.templates
if args.shellcode:
templates = filter(lambda a: args.shellcode in a, templates)
template_array = []
for s in shellcodes:
template_array.extend(list(filter(lambda a: s[0] in a, templates)))
templates = template_array
elif not args.syscalls:
templates = filter(is_not_a_syscall_template, templates)
templates = list(filter(is_not_a_syscall_template, templates))
print('\n'.join(templates))
exit()
@@ -200,84 +223,92 @@ def main(args):
exit()
try:
func = get_template(args.shellcode)
funcs = get_template(shellcodes)
except AttributeError:
log.error("Unknown shellcraft template %r. Use --list to see available shellcodes." % args.shellcode)
if args.show:
# remove doctests
doc = []
in_doctest = False
block_indent = None
caption = None
lines = func.__doc__.splitlines()
i = 0
while i < len(lines):
line = lines[i]
if line.lstrip().startswith('>>>'):
# this line starts a doctest
in_doctest = True
block_indent = None
if caption:
# delete back up to the caption
doc = doc[:caption - i]
caption = None
elif line == '':
# skip blank lines
pass
elif in_doctest:
# indentation marks the end of a doctest
indent = len(line) - len(line.lstrip())
if block_indent is None:
if not line.lstrip().startswith('...'):
block_indent = indent
elif indent < block_indent:
in_doctest = False
for (name, func, _args) in funcs:
# remove doctests
doc = []
in_doctest = False
block_indent = None
caption = None
lines = func.__doc__.splitlines()
i = 0
if len(funcs) > 1:
print('%s:' % name)
while i < len(lines):
line = lines[i]
if line.lstrip().startswith('>>>'):
# this line starts a doctest
in_doctest = True
block_indent = None
# re-evalutate this line
continue
elif line.endswith(':'):
# save index of caption
caption = i
else:
# this is not blank space and we're not in a doctest, so the
# previous caption (if any) was not for a doctest
caption = None
if caption:
# delete back up to the caption
doc = doc[:caption - i]
caption = None
elif line == '':
# skip blank lines
pass
elif in_doctest:
# indentation marks the end of a doctest
indent = len(line) - len(line.lstrip())
if block_indent is None:
if not line.lstrip().startswith('...'):
block_indent = indent
elif indent < block_indent:
in_doctest = False
block_indent = None
# re-evalutate this line
continue
elif line.endswith(':'):
# save index of caption
caption = i
else:
# this is not blank space and we're not in a doctest, so the
# previous caption (if any) was not for a doctest
caption = None
if not in_doctest:
doc.append(line)
i += 1
print('\n'.join(doc).rstrip())
if not in_doctest:
doc.append(line)
i += 1
print('\n'.join(doc).rstrip())
if len(funcs) > 1:
print('')
exit()
defargs = len(six.get_function_defaults(func) or ())
reqargs = six.get_function_code(func).co_argcount - defargs
if len(args.args) < reqargs:
if defargs > 0:
log.critical('%s takes at least %d arguments' % (args.shellcode, reqargs))
sys.exit(1)
else:
log.critical('%s takes exactly %d arguments' % (args.shellcode, reqargs))
sys.exit(1)
code_array = []
for (name, func, func_args) in funcs:
defargs = len(six.get_function_defaults(func) or ())
reqargs = six.get_function_code(func).co_argcount - defargs
# Captain uglyness saves the day!
for i, val in enumerate(args.args):
try:
args.args[i] = util.safeeval.expr(val)
except ValueError:
pass
if len(func_args) < reqargs:
if defargs > 0:
log.critical('%s takes at least %d arguments' % (name, reqargs))
sys.exit(1)
else:
log.critical('%s takes exactly %d arguments' % (name, reqargs))
sys.exit(1)
# And he strikes again!
list(map(common.context_arg, args.shellcode.split('.')))
code = func(*args.args)
# Captain uglyness saves the day!
for i, val in enumerate(func_args):
try:
func_args[i] = util.safeeval.expr(val)
except ValueError:
pass
# And he strikes again!
list(map(common.context_arg, name.split('.')))
code_array.append(func(*func_args))
code = "".join(code_array)
if args.before:
code = shellcraft.trap() + code
if args.after:
code = code + shellcraft.trap()
if args.format in ['a', 'asm', 'assembly']:
if args.color:
from pygments import highlight
@@ -320,7 +351,7 @@ def main(args):
else:
args.format = 'raw'
arch = args.shellcode.split('.')[0]
arch = name.split('.')[0]
if args.debug:
if not args.avoid:
@@ -353,4 +384,4 @@ def main(args):
args.out.write(code)
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
pwnlib.commandline.common.main(__file__, main)
+178 -23
View File
@@ -1,38 +1,185 @@
#!/usr/bin/env python2
from __future__ import absolute_import
from __future__ import division
import re
from __future__ import print_function
from pwn import *
from pwnlib.commandline import common
from pwnlib.util.misc import which, parse_ldd_output, write
from mako.lookup import TemplateLookup
from sys import stderr
from mako.lookup import TemplateLookup, Template
parser = common.parser_commands.add_parser(
'template',
help = 'Generate an exploit template',
description = 'Generate an exploit template'
description = 'Generate an exploit template. If no arguments are given, '
'the current directory is searched for an executable binary and '
'libc. If only one binary is found, it is assumed to be the '
'challenge binary.'
)
parser.add_argument('exe', nargs='?', help='Target binary')
# change path to hardcoded one when building the documentation
printable_data_path = "pwnlib/data" if 'sphinx' in sys.modules else pwnlib.data.path
parser.add_argument('exe', nargs='?', help='Target binary. If not given, the current directory is searched for an executable binary.')
parser.add_argument('--host', help='Remote host / SSH server')
parser.add_argument('--port', help='Remote port / SSH port', type=int)
parser.add_argument('--user', help='SSH Username')
parser.add_argument('--pass', '--password', help='SSH Password', dest='password')
parser.add_argument('--libc', help='Path to libc binary to use. If not given, the current directory is searched for a libc binary.')
parser.add_argument('--path', help='Remote path of file on SSH server')
parser.add_argument('--quiet', help='Less verbose template comments', action='store_true')
parser.add_argument('--color', help='Print the output in color', choices=['never', 'always', 'auto'], default='auto')
parser.add_argument('--template', help='Path to a custom template. Tries to use \'~/.config/pwntools/templates/pwnup.mako\', if it exists. '
'Check \'%s\' for the default template shipped with pwntools.' %
os.path.join(printable_data_path, "templates", "pwnup.mako"))
parser.add_argument('--no-auto', help='Do not automatically detect missing binaries', action='store_false', dest='auto')
def get_docker_image_libraries():
"""Tries to retrieve challenge libraries from a Docker image built from the Dockerfile in the current working directory.
The libraries are retrieved by parsing the output of running ldd on /bin/sh.
Supports regular Docker images as well as jail images.
"""
with log.progress("Extracting challenge libraries from Docker image") as progress:
if not which("docker"):
progress.failure("docker command not found")
return None, None
# maps jail image name to the root directory of the child image
jail_image_to_chroot_dir = {
"pwn.red/jail": "/srv",
}
dockerfile = open("Dockerfile", "r").read()
jail = None
chroot_dir = "/"
for jail_image in jail_image_to_chroot_dir:
if re.search(r"^FROM %s" % jail_image, dockerfile, re.MULTILINE):
jail = jail_image
chroot_dir = jail_image_to_chroot_dir[jail_image]
break
try:
progress.status("Building image")
image_sha = subprocess.check_output(["docker", "build", "-q", "."], stderr=subprocess.PIPE, shell=False).decode().strip()
progress.status("Retrieving library paths")
ldd_command = ["-c", "chroot %s /bin/sh -c 'ldd /bin/sh'" % chroot_dir]
ldd_output = subprocess.check_output([
"docker",
"run",
"--rm",
"--entrypoint",
"/bin/sh",
] + (["--privileged"] if jail else []) + [
image_sha,
] + ldd_command,
stderr=subprocess.PIPE,
shell=False
).decode()
libc, ld = None, None
libc_basename, ld_basename = None, None
for lib_path in parse_ldd_output(ldd_output):
if "libc." in lib_path:
libc = lib_path
libc_basename = os.path.basename(lib_path)
if "ld-" in lib_path:
ld = lib_path
ld_basename = os.path.basename(lib_path)
if not (libc and ld):
progress.failure("Could not find libraries")
return None, None
progress.status("Copying libraries to current directory")
for filename, basename in zip((libc, ld), (libc_basename, ld_basename)):
cat_command = ["-c", "chroot %s /bin/sh -c '/bin/cat %s'" % (chroot_dir, filename)]
contents = subprocess.check_output([
"docker",
"run",
"--rm",
"--entrypoint",
"/bin/sh",
] + (["--privileged"] if jail else []) + [
image_sha
] + cat_command,
stderr=subprocess.PIPE,
shell=False
)
write(basename, contents)
except subprocess.CalledProcessError as e:
print(e.stderr.decode(), file=sys.stderr)
progress.failure("docker failed with status: %d" % e.returncode)
return None, None
progress.success("Retrieved libraries from Docker image")
return libc_basename, ld_basename
def detect_missing_binaries(args):
"""Automatically detects challenge binaries and libraries in the current directory.
This function scans the current directory for executable files, libc, and ld libraries.
If a Dockerfile is present and no libraries are found, it attempts to extract them from
the Docker image, but only if the binary is not statically linked.
Args:
args: Argument namespace containing exe and libc attributes.
Returns:
tuple: A pair of (executable_path, libc_path) where either may be None if not found.
"""
log.info("Automatically detecting challenge binaries...")
# look for challenge binary, libc, and ld in current directory
exe, libc, ld = args.exe, args.libc, None
has_dockerfile = False
other_files = []
for filename in os.listdir("."):
if not os.path.isfile(filename):
continue
if not libc and ('libc-' in filename or 'libc.' in filename):
libc = filename
elif not ld and 'ld-' in filename:
ld = filename
elif filename == "Dockerfile":
has_dockerfile = True
else:
if os.access(filename, os.X_OK):
other_files.append(filename)
if not exe:
if len(other_files) == 1:
exe = other_files[0]
elif len(other_files) > 1:
log.warning("Failed to find challenge binary. There are multiple binaries in the current directory: %s", other_files)
# Check if the binary is statically linked before trying to extract libraries from Docker
is_statically_linked = False
if exe:
try:
binary = ELF(exe, checksec=False)
is_statically_linked = binary.statically_linked
if is_statically_linked:
log.info("Binary is statically linked, no need for external libraries")
except Exception as e:
log.warning("Could not check if binary is statically linked: %s", e)
# Only extract libraries from Docker if the binary is not statically linked
if has_dockerfile and exe and not (libc or ld) and not is_statically_linked:
libc, ld = get_docker_image_libraries()
if exe != args.exe:
log.success("Found challenge binary %r", exe)
if libc != args.libc:
log.success("Found libc binary %r", libc)
return exe, libc
def main(args):
cache = None
if cache:
cache = os.path.join(context.cache_dir, 'mako')
lookup = TemplateLookup(
directories = [os.path.join(pwnlib.data.path, 'templates')],
module_directory = cache
directories = [
os.path.expanduser('~/.config/pwntools/templates/'),
os.path.join(pwnlib.data.path, 'templates')
],
module_directory = None
)
# For the SSH scenario, check that the binary is at the
@@ -41,25 +188,32 @@ def main(args):
if not (args.path or args.exe):
log.error("Must specify --path or a exe")
s = ssh(args.user, args.host, args.port or 22, args.password or None)
try:
remote = args.path or args.exe
s.download(remote)
except Exception:
log.warning("Could not download file %r, opening a shell", remote)
s.interactive()
return
with ssh(args.user, args.host, args.port or 22, args.password or None) as s:
try:
remote_file = args.path or args.exe
s.download(remote_file)
except Exception:
log.warning("Could not download file %r, opening a shell", remote_file)
s.interactive()
return
if not args.exe:
args.exe = os.path.basename(args.path)
template = lookup.get_template('pwnup.mako')
if args.auto and (args.exe is None or args.libc is None):
args.exe, args.libc = detect_missing_binaries(args)
if args.template:
template = Template(filename=args.template) # Failing on invalid file is ok
else:
template = lookup.get_template('pwnup.mako')
output = template.render(args.exe,
args.host,
args.port,
args.user,
args.password,
args.libc,
args.path,
args.quiet)
@@ -81,4 +235,5 @@ def main(args):
except OSError: pass
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
pwnlib.commandline.common.main(__file__, main)
+2 -2
View File
@@ -1,4 +1,3 @@
#!/usr/bin/env python2
from __future__ import absolute_import
from __future__ import division
@@ -28,6 +27,7 @@ def main(args):
o.write(unhex(''.join(args.hex)))
except TypeError as e:
sys.stderr.write(str(e) + '\n')
raise
if __name__ == '__main__':
common.main(__file__)
common.main(__file__, main)
+2 -2
View File
@@ -4,7 +4,7 @@ from __future__ import division
import subprocess
import pwnlib
import pwnlib.args
pwnlib.args.free_form = False
from pwn import *
@@ -30,4 +30,4 @@ def main(a):
subprocess.check_call(result, shell=False)
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
pwnlib.commandline.common.main(__file__, main)
+2 -2
View File
@@ -5,7 +5,7 @@ from __future__ import division
import os
import subprocess
import pwnlib
import pwnlib.args
pwnlib.args.free_form = False
from pwn import *
@@ -29,4 +29,4 @@ def main(a):
log.info("Pwntools v%s" % version)
if __name__ == '__main__':
pwnlib.commandline.common.main(__file__)
pwnlib.commandline.common.main(__file__, main)
+3 -3
View File
@@ -55,8 +55,8 @@ def initialize():
from pwnlib.log import getLogger
log = getLogger(__name__)
xdg_config_home = (os.environ.get('XDG_CONFIG_HOME') or
os.path.expanduser("~/.config"))
xdg_config_home = os.environ.get('XDG_CONFIG_HOME',
os.path.expanduser("~/.config"))
c = configparser.ConfigParser()
c.read(['/etc/pwn.conf',
@@ -65,7 +65,7 @@ def initialize():
for section in c.sections():
if section not in registered_configs:
log.warn("Unknown configuration section %r" % section)
log.warn("Unknown configuration section %r", section)
continue
settings = dict(c.items(section))
registered_configs[section](settings)
+6 -1
View File
@@ -1,4 +1,9 @@
class Constant(int):
try:
base = long # workaround for py2
except NameError:
base = int
class Constant(base):
def __new__(cls, s, i):
obj = super(Constant, cls).__new__(cls, i)
obj.s = s
View File
Whitespace-only changes.
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
-1
View File
@@ -1,5 +1,4 @@
from pwnlib.constants.constant import Constant
STDIN_FILENO = Constant('STDIN_FILENO',0)
STDOUT_FILENO = Constant('STDOUT_FILENO',1)
STDERR_FILENO = Constant('STDERR_FILENO',2)
+374 -92
View File
@@ -1,4 +1,5 @@
from pwnlib.constants.constant import Constant
_AARCH64_SYSCALL_H = Constant('_AARCH64_SYSCALL_H',1)
__NR_io_setup = Constant('__NR_io_setup',0)
__NR_io_destroy = Constant('__NR_io_destroy',1)
__NR_io_submit = Constant('__NR_io_submit',2)
@@ -78,12 +79,13 @@ __NR_vmsplice = Constant('__NR_vmsplice',75)
__NR_splice = Constant('__NR_splice',76)
__NR_tee = Constant('__NR_tee',77)
__NR_readlinkat = Constant('__NR_readlinkat',78)
__NR_fstatat64 = Constant('__NR_fstatat64',79)
__NR_fstatat = Constant('__NR_fstatat',79)
__NR_newfstatat = Constant('__NR_newfstatat',79)
__NR_fstat = Constant('__NR_fstat',80)
__NR_sync = Constant('__NR_sync',81)
__NR_fsync = Constant('__NR_fsync',82)
__NR_fdatasync = Constant('__NR_fdatasync',83)
__NR_sync_file_range2 = Constant('__NR_sync_file_range2',84)
__NR_sync_file_range = Constant('__NR_sync_file_range',84)
__NR_timerfd_create = Constant('__NR_timerfd_create',85)
__NR_timerfd_settime = Constant('__NR_timerfd_settime',86)
__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',87)
@@ -258,6 +260,39 @@ __NR_process_vm_readv = Constant('__NR_process_vm_readv',270)
__NR_process_vm_writev = Constant('__NR_process_vm_writev',271)
__NR_kcmp = Constant('__NR_kcmp',272)
__NR_finit_module = Constant('__NR_finit_module',273)
__NR_sched_setattr = Constant('__NR_sched_setattr',274)
__NR_sched_getattr = Constant('__NR_sched_getattr',275)
__NR_renameat2 = Constant('__NR_renameat2',276)
__NR_seccomp = Constant('__NR_seccomp',277)
__NR_getrandom = Constant('__NR_getrandom',278)
__NR_memfd_create = Constant('__NR_memfd_create',279)
__NR_bpf = Constant('__NR_bpf',280)
__NR_execveat = Constant('__NR_execveat',281)
__NR_userfaultfd = Constant('__NR_userfaultfd',282)
__NR_membarrier = Constant('__NR_membarrier',283)
__NR_mlock2 = Constant('__NR_mlock2',284)
__NR_copy_file_range = Constant('__NR_copy_file_range',285)
__NR_preadv2 = Constant('__NR_preadv2',286)
__NR_pwritev2 = Constant('__NR_pwritev2',287)
__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',288)
__NR_pkey_alloc = Constant('__NR_pkey_alloc',289)
__NR_pkey_free = Constant('__NR_pkey_free',290)
__NR_statx = Constant('__NR_statx',291)
__NR_io_pgetevents = Constant('__NR_io_pgetevents',292)
__NR_rseq = Constant('__NR_rseq',293)
__NR_kexec_file_load = Constant('__NR_kexec_file_load',294)
__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)
__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)
__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)
__NR_io_uring_register = Constant('__NR_io_uring_register',427)
__NR_open_tree = Constant('__NR_open_tree',428)
__NR_move_mount = Constant('__NR_move_mount',429)
__NR_fsopen = Constant('__NR_fsopen',430)
__NR_fsconfig = Constant('__NR_fsconfig',431)
__NR_fsmount = Constant('__NR_fsmount',432)
__NR_fspick = Constant('__NR_fspick',433)
__NR_pidfd_open = Constant('__NR_pidfd_open',434)
__NR_clone3 = Constant('__NR_clone3',435)
MAP_32BIT = Constant('MAP_32BIT',0x40)
INADDR_ANY = Constant('INADDR_ANY',0)
INADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)
@@ -393,18 +428,71 @@ ENOKEY = Constant('ENOKEY',126)
EKEYEXPIRED = Constant('EKEYEXPIRED',127)
EKEYREVOKED = Constant('EKEYREVOKED',128)
EKEYREJECTED = Constant('EKEYREJECTED',129)
__SYS_NERR = Constant('__SYS_NERR',((129) + 1))
EOWNERDEAD = Constant('EOWNERDEAD',130)
ENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)
ERFKILL = Constant('ERFKILL',132)
EHWPOISON = Constant('EHWPOISON',133)
__SYS_NERR = Constant('__SYS_NERR',((133) + 1))
__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)
__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)
__BYTE_ORDER = Constant('__BYTE_ORDER',1234)
__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',1234)
__BYTE_ORDER = Constant('__BYTE_ORDER',1234)
__FLOAT_WORD_ORDER = Constant('__FLOAT_WORD_ORDER',1234)
LITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)
BIG_ENDIAN = Constant('BIG_ENDIAN',4321)
BYTE_ORDER = Constant('BYTE_ORDER',1234)
__WORDSIZE = Constant('__WORDSIZE',32)
__WORDSIZE = Constant('__WORDSIZE',64)
__WORDSIZE_COMPAT32 = Constant('__WORDSIZE_COMPAT32',1)
INT8_MAX = Constant('INT8_MAX',(127))
INT16_MAX = Constant('INT16_MAX',(32767))
INT32_MAX = Constant('INT32_MAX',(2147483647))
INT64_MAX = Constant('INT64_MAX',(9223372036854775807))
INT8_MIN = Constant('INT8_MIN',(-1 - (127)))
INT16_MIN = Constant('INT16_MIN',(-1 - (32767)))
INT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))
INT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))
INT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))
INT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))
INT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))
INT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))
INT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))
INT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))
INT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))
INT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))
UINT8_MAX = Constant('UINT8_MAX',0xff)
UINT16_MAX = Constant('UINT16_MAX',0xffff)
UINT32_MAX = Constant('UINT32_MAX',0xffffffff)
UINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)
UINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)
UINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)
UINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)
UINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)
INTPTR_MIN = Constant('INTPTR_MIN',(-1 - (9223372036854775807)))
INTPTR_MAX = Constant('INTPTR_MAX',(9223372036854775807))
UINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffffffffffff)
SIZE_MAX = Constant('SIZE_MAX',0xffffffffffffffff)
PTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (9223372036854775807)))
PTRDIFF_MAX = Constant('PTRDIFF_MAX',(9223372036854775807))
INTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))
INTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))
UINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)
INT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))
INT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))
INT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))
INT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))
UINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)
UINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)
INT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (9223372036854775807)))
INT_FAST16_MAX = Constant('INT_FAST16_MAX',(9223372036854775807))
UINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffffffffffff)
INT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (9223372036854775807)))
INT_FAST32_MAX = Constant('INT_FAST32_MAX',(9223372036854775807))
UINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffffffffffff)
WINT_MIN = Constant('WINT_MIN',0)
__FSUID_H = Constant('__FSUID_H',1)
NSIG = Constant('NSIG',32)
_NSIG = Constant('_NSIG',64)
_NSIG = Constant('_NSIG',65)
SIGHUP = Constant('SIGHUP',1)
SIGINT = Constant('SIGINT',2)
SIGQUIT = Constant('SIGQUIT',3)
@@ -442,7 +530,7 @@ SIGCLD = Constant('SIGCLD',17)
SIGPOLL = Constant('SIGPOLL',29)
SIGLOST = Constant('SIGLOST',30)
SIGRTMIN = Constant('SIGRTMIN',32)
SIGRTMAX = Constant('SIGRTMAX',(64-1))
SIGRTMAX = Constant('SIGRTMAX',(65-1))
SA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)
SA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)
SA_SIGINFO = Constant('SA_SIGINFO',0x00000004)
@@ -492,6 +580,8 @@ _SC_PAGESIZE = Constant('_SC_PAGESIZE',5)
_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)
_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)
_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)
_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)
_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)
_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)
_PC_VDISABLE = Constant('_PC_VDISABLE',2)
L_cuserid = Constant('L_cuserid',17)
@@ -500,6 +590,7 @@ F_ULOCK = Constant('F_ULOCK',0)
F_LOCK = Constant('F_LOCK',1)
F_TLOCK = Constant('F_TLOCK',2)
F_TEST = Constant('F_TEST',3)
_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)
STAT64_HAS_BROKEN_ST_INO = Constant('STAT64_HAS_BROKEN_ST_INO',1)
S_IFMT = Constant('S_IFMT',0o0170000)
S_IFSOCK = Constant('S_IFSOCK',0o140000)
@@ -527,84 +618,7 @@ S_IXOTH = Constant('S_IXOTH',0o0001)
S_IREAD = Constant('S_IREAD',0o0400)
S_IWRITE = Constant('S_IWRITE',0o0200)
S_IEXEC = Constant('S_IEXEC',0o0100)
F_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)
O_ACCMODE = Constant('O_ACCMODE',0o003)
O_RDONLY = Constant('O_RDONLY',0o0)
O_WRONLY = Constant('O_WRONLY',0o1)
O_RDWR = Constant('O_RDWR',0o2)
O_CREAT = Constant('O_CREAT',0o100)
O_EXCL = Constant('O_EXCL',0o200)
O_NOCTTY = Constant('O_NOCTTY',0o400)
O_TRUNC = Constant('O_TRUNC',0o1000)
O_APPEND = Constant('O_APPEND',0o2000)
O_NONBLOCK = Constant('O_NONBLOCK',0o4000)
O_NDELAY = Constant('O_NDELAY',0o4000)
O_SYNC = Constant('O_SYNC',0o10000)
FASYNC = Constant('FASYNC',0o20000)
O_DIRECTORY = Constant('O_DIRECTORY',0o40000)
O_NOFOLLOW = Constant('O_NOFOLLOW',0o100000)
O_DIRECT = Constant('O_DIRECT',0o200000)
O_LARGEFILE = Constant('O_LARGEFILE',0o400000)
O_NOATIME = Constant('O_NOATIME',0o1000000)
F_DUPFD = Constant('F_DUPFD',0)
F_GETFD = Constant('F_GETFD',1)
F_SETFD = Constant('F_SETFD',2)
F_GETFL = Constant('F_GETFL',3)
F_SETFL = Constant('F_SETFL',4)
F_GETLK = Constant('F_GETLK',5)
F_SETLK = Constant('F_SETLK',6)
F_SETLKW = Constant('F_SETLKW',7)
F_SETOWN = Constant('F_SETOWN',8)
F_GETOWN = Constant('F_GETOWN',9)
F_SETSIG = Constant('F_SETSIG',10)
F_GETSIG = Constant('F_GETSIG',11)
F_GETLK64 = Constant('F_GETLK64',12)
F_SETLK64 = Constant('F_SETLK64',13)
F_SETLKW64 = Constant('F_SETLKW64',14)
FD_CLOEXEC = Constant('FD_CLOEXEC',1)
F_RDLCK = Constant('F_RDLCK',0)
F_WRLCK = Constant('F_WRLCK',1)
F_UNLCK = Constant('F_UNLCK',2)
F_EXLCK = Constant('F_EXLCK',4)
F_SHLCK = Constant('F_SHLCK',8)
F_INPROGRESS = Constant('F_INPROGRESS',16)
LOCK_SH = Constant('LOCK_SH',1)
LOCK_EX = Constant('LOCK_EX',2)
LOCK_NB = Constant('LOCK_NB',4)
LOCK_UN = Constant('LOCK_UN',8)
LOCK_MAND = Constant('LOCK_MAND',32)
LOCK_READ = Constant('LOCK_READ',64)
LOCK_WRITE = Constant('LOCK_WRITE',128)
LOCK_RW = Constant('LOCK_RW',192)
O_ASYNC = Constant('O_ASYNC',0o20000)
MREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)
MREMAP_FIXED = Constant('MREMAP_FIXED',2)
PROT_READ = Constant('PROT_READ',0x1)
PROT_WRITE = Constant('PROT_WRITE',0x2)
PROT_EXEC = Constant('PROT_EXEC',0x4)
PROT_NONE = Constant('PROT_NONE',0x0)
MAP_SHARED = Constant('MAP_SHARED',0x01)
MAP_PRIVATE = Constant('MAP_PRIVATE',0x02)
MAP_FIXED = Constant('MAP_FIXED',0x10)
MAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)
MAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)
MAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)
MAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)
MAP_LOCKED = Constant('MAP_LOCKED',0x2000)
MAP_NORESERVE = Constant('MAP_NORESERVE',0x4000)
MAP_POPULATE = Constant('MAP_POPULATE',0x8000)
MS_ASYNC = Constant('MS_ASYNC',1)
MS_INVALIDATE = Constant('MS_INVALIDATE',2)
MS_SYNC = Constant('MS_SYNC',4)
MCL_CURRENT = Constant('MCL_CURRENT',1)
MCL_FUTURE = Constant('MCL_FUTURE',2)
MADV_NORMAL = Constant('MADV_NORMAL',0x0)
MADV_RANDOM = Constant('MADV_RANDOM',0x1)
MADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)
MADV_WILLNEED = Constant('MADV_WILLNEED',0x3)
MADV_DONTNEED = Constant('MADV_DONTNEED',0x4)
MAP_ANON = Constant('MAP_ANON',0x20)
MAP_FILE = Constant('MAP_FILE',0)
_SYS_UIO = Constant('_SYS_UIO',1)
SOL_SOCKET = Constant('SOL_SOCKET',1)
SO_DEBUG = Constant('SO_DEBUG',1)
SO_REUSEADDR = Constant('SO_REUSEADDR',2)
@@ -620,29 +634,64 @@ SO_NO_CHECK = Constant('SO_NO_CHECK',11)
SO_PRIORITY = Constant('SO_PRIORITY',12)
SO_LINGER = Constant('SO_LINGER',13)
SO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)
SO_REUSEPORT = Constant('SO_REUSEPORT',15)
SO_PASSCRED = Constant('SO_PASSCRED',16)
SO_PEERCRED = Constant('SO_PEERCRED',17)
SO_RCVLOWAT = Constant('SO_RCVLOWAT',18)
SO_SNDLOWAT = Constant('SO_SNDLOWAT',19)
SO_RCVTIMEO = Constant('SO_RCVTIMEO',20)
SO_SNDTIMEO = Constant('SO_SNDTIMEO',21)
SO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)
SO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)
SO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)
SO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)
SO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)
SO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)
SO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)
SO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)
SO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)
SO_GET_FILTER = Constant('SO_GET_FILTER',26)
SO_PEERNAME = Constant('SO_PEERNAME',28)
SO_TIMESTAMP = Constant('SO_TIMESTAMP',29)
SCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)
SO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)
SO_PEERSEC = Constant('SO_PEERSEC',31)
SO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)
SO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)
SO_PASSSEC = Constant('SO_PASSSEC',34)
SO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)
SCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)
SO_MARK = Constant('SO_MARK',36)
SO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)
SCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)
SO_PROTOCOL = Constant('SO_PROTOCOL',38)
SO_DOMAIN = Constant('SO_DOMAIN',39)
SO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)
SO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)
SCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)
SO_PEEK_OFF = Constant('SO_PEEK_OFF',42)
SO_NOFCS = Constant('SO_NOFCS',43)
SO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)
SO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)
SO_BUSY_POLL = Constant('SO_BUSY_POLL',46)
SO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)
SO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)
SO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)
SO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)
SO_DETACH_BPF = Constant('SO_DETACH_BPF',27)
SO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)
SO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)
SO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)
SCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)
SO_MEMINFO = Constant('SO_MEMINFO',55)
SO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)
SO_COOKIE = Constant('SO_COOKIE',57)
SCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)
SO_PEERGROUPS = Constant('SO_PEERGROUPS',59)
SO_ZEROCOPY = Constant('SO_ZEROCOPY',60)
SOCK_STREAM = Constant('SOCK_STREAM',1)
SOCK_DGRAM = Constant('SOCK_DGRAM',2)
SOCK_RAW = Constant('SOCK_RAW',3)
SOCK_RDM = Constant('SOCK_RDM',4)
SOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)
SOCK_DCCP = Constant('SOCK_DCCP',6)
SOCK_PACKET = Constant('SOCK_PACKET',10)
UIO_FASTIOV = Constant('UIO_FASTIOV',8)
UIO_MAXIOV = Constant('UIO_MAXIOV',1024)
@@ -676,7 +725,25 @@ AF_SNA = Constant('AF_SNA',22)
AF_IRDA = Constant('AF_IRDA',23)
AF_PPPOX = Constant('AF_PPPOX',24)
AF_WANPIPE = Constant('AF_WANPIPE',25)
AF_MAX = Constant('AF_MAX',32)
AF_LLC = Constant('AF_LLC',26)
AF_IB = Constant('AF_IB',27)
AF_MPLS = Constant('AF_MPLS',28)
AF_CAN = Constant('AF_CAN',29)
AF_TIPC = Constant('AF_TIPC',30)
AF_BLUETOOTH = Constant('AF_BLUETOOTH',31)
AF_IUCV = Constant('AF_IUCV',32)
AF_RXRPC = Constant('AF_RXRPC',33)
AF_ISDN = Constant('AF_ISDN',34)
AF_PHONET = Constant('AF_PHONET',35)
AF_IEEE802154 = Constant('AF_IEEE802154',36)
AF_CAIF = Constant('AF_CAIF',37)
AF_ALG = Constant('AF_ALG',38)
AF_NFC = Constant('AF_NFC',39)
AF_VSOCK = Constant('AF_VSOCK',40)
AF_KCM = Constant('AF_KCM',41)
AF_QIPCRTR = Constant('AF_QIPCRTR',42)
AF_SMC = Constant('AF_SMC',43)
AF_MAX = Constant('AF_MAX',44)
PF_UNSPEC = Constant('PF_UNSPEC',0)
PF_UNIX = Constant('PF_UNIX',1)
PF_LOCAL = Constant('PF_LOCAL',1)
@@ -704,7 +771,25 @@ PF_SNA = Constant('PF_SNA',22)
PF_IRDA = Constant('PF_IRDA',23)
PF_PPPOX = Constant('PF_PPPOX',24)
PF_WANPIPE = Constant('PF_WANPIPE',25)
PF_MAX = Constant('PF_MAX',32)
PF_LLC = Constant('PF_LLC',26)
PF_IB = Constant('PF_IB',27)
PF_MPLS = Constant('PF_MPLS',28)
PF_CAN = Constant('PF_CAN',29)
PF_TIPC = Constant('PF_TIPC',30)
PF_BLUETOOTH = Constant('PF_BLUETOOTH',31)
PF_IUCV = Constant('PF_IUCV',32)
PF_RXRPC = Constant('PF_RXRPC',33)
PF_ISDN = Constant('PF_ISDN',34)
PF_PHONET = Constant('PF_PHONET',35)
PF_IEEE802154 = Constant('PF_IEEE802154',36)
PF_CAIF = Constant('PF_CAIF',37)
PF_ALG = Constant('PF_ALG',38)
PF_NFC = Constant('PF_NFC',39)
PF_VSOCK = Constant('PF_VSOCK',40)
PF_KCM = Constant('PF_KCM',41)
PF_QIPCRTR = Constant('PF_QIPCRTR',42)
PF_SMC = Constant('PF_SMC',43)
PF_MAX = Constant('PF_MAX',44)
SOMAXCONN = Constant('SOMAXCONN',128)
MSG_OOB = Constant('MSG_OOB',1)
MSG_PEEK = Constant('MSG_PEEK',2)
@@ -717,18 +802,26 @@ MSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)
MSG_EOR = Constant('MSG_EOR',0x80)
MSG_WAITALL = Constant('MSG_WAITALL',0x100)
MSG_FIN = Constant('MSG_FIN',0x200)
MSG_EOF = Constant('MSG_EOF',0x200)
MSG_SYN = Constant('MSG_SYN',0x400)
MSG_CONFIRM = Constant('MSG_CONFIRM',0x800)
MSG_RST = Constant('MSG_RST',0x1000)
MSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)
MSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)
MSG_MORE = Constant('MSG_MORE',0x8000)
MSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)
MSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)
MSG_BATCH = Constant('MSG_BATCH',0x40000)
MSG_EOF = Constant('MSG_EOF',0x200)
MSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)
MSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)
MSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)
SOL_IP = Constant('SOL_IP',0)
SOL_TCP = Constant('SOL_TCP',6)
SOL_UDP = Constant('SOL_UDP',17)
SOL_IPV6 = Constant('SOL_IPV6',41)
SOL_ICMPV6 = Constant('SOL_ICMPV6',58)
SOL_SCTP = Constant('SOL_SCTP',132)
SOL_UDPLITE = Constant('SOL_UDPLITE',136)
SOL_RAW = Constant('SOL_RAW',255)
SOL_IPX = Constant('SOL_IPX',256)
SOL_AX25 = Constant('SOL_AX25',257)
@@ -741,6 +834,22 @@ SOL_PACKET = Constant('SOL_PACKET',263)
SOL_ATM = Constant('SOL_ATM',264)
SOL_AAL = Constant('SOL_AAL',265)
SOL_IRDA = Constant('SOL_IRDA',266)
SOL_NETBEUI = Constant('SOL_NETBEUI',267)
SOL_LLC = Constant('SOL_LLC',268)
SOL_DCCP = Constant('SOL_DCCP',269)
SOL_NETLINK = Constant('SOL_NETLINK',270)
SOL_TIPC = Constant('SOL_TIPC',271)
SOL_RXRPC = Constant('SOL_RXRPC',272)
SOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)
SOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)
SOL_PNPIPE = Constant('SOL_PNPIPE',275)
SOL_RDS = Constant('SOL_RDS',276)
SOL_IUCV = Constant('SOL_IUCV',277)
SOL_CAIF = Constant('SOL_CAIF',278)
SOL_ALG = Constant('SOL_ALG',279)
SOL_NFC = Constant('SOL_NFC',280)
SOL_KCM = Constant('SOL_KCM',281)
SOL_TLS = Constant('SOL_TLS',282)
IPX_TYPE = Constant('IPX_TYPE',1)
SHUT_RD = Constant('SHUT_RD',0)
SHUT_WR = Constant('SHUT_WR',1)
@@ -764,6 +873,10 @@ EAI_SYSTEM = Constant('EAI_SYSTEM',-11)
AI_NUMERICHOST = Constant('AI_NUMERICHOST',1)
AI_CANONNAME = Constant('AI_CANONNAME',2)
AI_PASSIVE = Constant('AI_PASSIVE',4)
AI_NUMERICSERV = Constant('AI_NUMERICSERV',8)
AI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)
AI_V4MAPPED = Constant('AI_V4MAPPED',32)
AI_ALL = Constant('AI_ALL',64)
SIOCADDRT = Constant('SIOCADDRT',0x890B)
SIOCDELRT = Constant('SIOCDELRT',0x890C)
SIOCRTMSG = Constant('SIOCRTMSG',0x890D)
@@ -820,6 +933,130 @@ SIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)
SIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)
SIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)
SIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)
F_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)
O_ACCMODE = Constant('O_ACCMODE',0o003)
O_RDONLY = Constant('O_RDONLY',0o0)
O_WRONLY = Constant('O_WRONLY',0o1)
O_RDWR = Constant('O_RDWR',0o2)
O_CREAT = Constant('O_CREAT',0o100)
O_EXCL = Constant('O_EXCL',0o200)
O_NOCTTY = Constant('O_NOCTTY',0o400)
O_TRUNC = Constant('O_TRUNC',0o1000)
O_APPEND = Constant('O_APPEND',0o2000)
O_NONBLOCK = Constant('O_NONBLOCK',0o4000)
O_NDELAY = Constant('O_NDELAY',0o4000)
O_DSYNC = Constant('O_DSYNC',0o10000)
FASYNC = Constant('FASYNC',0o20000)
O_DIRECTORY = Constant('O_DIRECTORY',0o40000)
O_NOFOLLOW = Constant('O_NOFOLLOW',0o100000)
O_DIRECT = Constant('O_DIRECT',0o200000)
O_LARGEFILE = Constant('O_LARGEFILE',0)
O_NOATIME = Constant('O_NOATIME',0o1000000)
O_CLOEXEC = Constant('O_CLOEXEC',0o2000000)
O_SYNC = Constant('O_SYNC',(0o10000|0o4000000))
O_PATH = Constant('O_PATH',0o10000000)
__O_TMPFILE = Constant('__O_TMPFILE',0o20000000)
F_DUPFD = Constant('F_DUPFD',0)
F_GETFD = Constant('F_GETFD',1)
F_SETFD = Constant('F_SETFD',2)
F_GETFL = Constant('F_GETFL',3)
F_SETFL = Constant('F_SETFL',4)
F_GETLK = Constant('F_GETLK',5)
F_SETLK = Constant('F_SETLK',6)
F_SETLKW = Constant('F_SETLKW',7)
F_SETOWN = Constant('F_SETOWN',8)
F_GETOWN = Constant('F_GETOWN',9)
F_SETSIG = Constant('F_SETSIG',10)
F_GETSIG = Constant('F_GETSIG',11)
F_GETLK64 = Constant('F_GETLK64',12)
F_SETLK64 = Constant('F_SETLK64',13)
F_SETLKW64 = Constant('F_SETLKW64',14)
FD_CLOEXEC = Constant('FD_CLOEXEC',1)
F_RDLCK = Constant('F_RDLCK',0)
F_WRLCK = Constant('F_WRLCK',1)
F_UNLCK = Constant('F_UNLCK',2)
F_EXLCK = Constant('F_EXLCK',4)
F_SHLCK = Constant('F_SHLCK',8)
F_INPROGRESS = Constant('F_INPROGRESS',16)
LOCK_SH = Constant('LOCK_SH',1)
LOCK_EX = Constant('LOCK_EX',2)
LOCK_NB = Constant('LOCK_NB',4)
LOCK_UN = Constant('LOCK_UN',8)
LOCK_MAND = Constant('LOCK_MAND',32)
LOCK_READ = Constant('LOCK_READ',64)
LOCK_WRITE = Constant('LOCK_WRITE',128)
LOCK_RW = Constant('LOCK_RW',192)
O_TMPFILE = Constant('O_TMPFILE',(0o20000000 | 0o40000))
O_ASYNC = Constant('O_ASYNC',0o20000)
F_SETOWN_EX = Constant('F_SETOWN_EX',15)
F_GETOWN_EX = Constant('F_GETOWN_EX',16)
F_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)
F_OFD_GETLK = Constant('F_OFD_GETLK',36)
F_OFD_SETLK = Constant('F_OFD_SETLK',37)
F_OFD_SETLKW = Constant('F_OFD_SETLKW',38)
F_OWNER_TID = Constant('F_OWNER_TID',0)
F_OWNER_PID = Constant('F_OWNER_PID',1)
F_OWNER_PGRP = Constant('F_OWNER_PGRP',2)
AT_FDCWD = Constant('AT_FDCWD',-100)
AT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)
AT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)
AT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)
AT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)
AT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)
AT_EACCESS = Constant('AT_EACCESS',0x200)
MREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)
MREMAP_FIXED = Constant('MREMAP_FIXED',2)
PROT_READ = Constant('PROT_READ',0x1)
PROT_WRITE = Constant('PROT_WRITE',0x2)
PROT_EXEC = Constant('PROT_EXEC',0x4)
PROT_SEM = Constant('PROT_SEM',0x8)
PROT_NONE = Constant('PROT_NONE',0x0)
PROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)
PROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)
MAP_SHARED = Constant('MAP_SHARED',0x01)
MAP_PRIVATE = Constant('MAP_PRIVATE',0x02)
MAP_TYPE = Constant('MAP_TYPE',0xf)
MADV_REMOVE = Constant('MADV_REMOVE',9)
MADV_DONTFORK = Constant('MADV_DONTFORK',10)
MADV_DOFORK = Constant('MADV_DOFORK',11)
MADV_MERGEABLE = Constant('MADV_MERGEABLE',12)
MADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)
MADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)
MADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)
MADV_DONTDUMP = Constant('MADV_DONTDUMP',16)
MADV_DODUMP = Constant('MADV_DODUMP',17)
MADV_HWPOISON = Constant('MADV_HWPOISON',100)
MADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)
MLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)
MAP_FIXED = Constant('MAP_FIXED',0x10)
MAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)
MAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)
MAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)
MAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)
MAP_LOCKED = Constant('MAP_LOCKED',0x2000)
MAP_NORESERVE = Constant('MAP_NORESERVE',0x4000)
MAP_POPULATE = Constant('MAP_POPULATE',0x8000)
MAP_NONBLOCK = Constant('MAP_NONBLOCK',0x10000)
MAP_STACK = Constant('MAP_STACK',0x20000)
MAP_HUGETLB = Constant('MAP_HUGETLB',0x40000)
MS_ASYNC = Constant('MS_ASYNC',1)
MS_INVALIDATE = Constant('MS_INVALIDATE',2)
MS_SYNC = Constant('MS_SYNC',4)
MCL_CURRENT = Constant('MCL_CURRENT',1)
MCL_FUTURE = Constant('MCL_FUTURE',2)
MCL_ONFAULT = Constant('MCL_ONFAULT',4)
MADV_NORMAL = Constant('MADV_NORMAL',0x0)
MADV_RANDOM = Constant('MADV_RANDOM',0x1)
MADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)
MADV_WILLNEED = Constant('MADV_WILLNEED',0x3)
MADV_DONTNEED = Constant('MADV_DONTNEED',0x4)
MAP_ANON = Constant('MAP_ANON',0x20)
MAP_FILE = Constant('MAP_FILE',0)
POSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0x0)
POSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',0x2)
POSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',0x1)
POSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',0x3)
POSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',0x4)
PTRACE_TRACEME = Constant('PTRACE_TRACEME',0)
PTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)
PTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)
@@ -889,19 +1126,24 @@ SYS_accept4 = Constant('SYS_accept4',242)
SYS_acct = Constant('SYS_acct',89)
SYS_add_key = Constant('SYS_add_key',217)
SYS_adjtimex = Constant('SYS_adjtimex',171)
SYS_arch_specific_syscall = Constant('SYS_arch_specific_syscall',244)
SYS_bind = Constant('SYS_bind',200)
SYS_bpf = Constant('SYS_bpf',280)
SYS_brk = Constant('SYS_brk',214)
SYS_capget = Constant('SYS_capget',90)
SYS_capset = Constant('SYS_capset',91)
SYS_chdir = Constant('SYS_chdir',49)
SYS_chroot = Constant('SYS_chroot',51)
SYS_clock_adjtime = Constant('SYS_clock_adjtime',266)
SYS_clock_getres = Constant('SYS_clock_getres',114)
SYS_clock_gettime = Constant('SYS_clock_gettime',113)
SYS_clock_nanosleep = Constant('SYS_clock_nanosleep',115)
SYS_clock_settime = Constant('SYS_clock_settime',112)
SYS_clone = Constant('SYS_clone',220)
SYS_clone3 = Constant('SYS_clone3',435)
SYS_close = Constant('SYS_close',57)
SYS_connect = Constant('SYS_connect',203)
SYS_copy_file_range = Constant('SYS_copy_file_range',285)
SYS_delete_module = Constant('SYS_delete_module',106)
SYS_dup = Constant('SYS_dup',23)
SYS_dup3 = Constant('SYS_dup3',24)
@@ -910,6 +1152,7 @@ SYS_epoll_ctl = Constant('SYS_epoll_ctl',21)
SYS_epoll_pwait = Constant('SYS_epoll_pwait',22)
SYS_eventfd2 = Constant('SYS_eventfd2',19)
SYS_execve = Constant('SYS_execve',221)
SYS_execveat = Constant('SYS_execveat',281)
SYS_exit = Constant('SYS_exit',93)
SYS_exit_group = Constant('SYS_exit_group',94)
SYS_faccessat = Constant('SYS_faccessat',48)
@@ -925,12 +1168,17 @@ SYS_fchownat = Constant('SYS_fchownat',54)
SYS_fcntl = Constant('SYS_fcntl',25)
SYS_fdatasync = Constant('SYS_fdatasync',83)
SYS_fgetxattr = Constant('SYS_fgetxattr',10)
SYS_finit_module = Constant('SYS_finit_module',273)
SYS_flistxattr = Constant('SYS_flistxattr',13)
SYS_flock = Constant('SYS_flock',32)
SYS_fremovexattr = Constant('SYS_fremovexattr',16)
SYS_fsconfig = Constant('SYS_fsconfig',431)
SYS_fsetxattr = Constant('SYS_fsetxattr',7)
SYS_fsmount = Constant('SYS_fsmount',432)
SYS_fsopen = Constant('SYS_fsopen',430)
SYS_fspick = Constant('SYS_fspick',433)
SYS_fstat = Constant('SYS_fstat',80)
SYS_fstatat64 = Constant('SYS_fstatat64',79)
SYS_fstatat = Constant('SYS_fstatat',79)
SYS_fstatfs = Constant('SYS_fstatfs',44)
SYS_fsync = Constant('SYS_fsync',82)
SYS_ftruncate = Constant('SYS_ftruncate',46)
@@ -949,6 +1197,7 @@ SYS_getpgid = Constant('SYS_getpgid',155)
SYS_getpid = Constant('SYS_getpid',172)
SYS_getppid = Constant('SYS_getppid',173)
SYS_getpriority = Constant('SYS_getpriority',141)
SYS_getrandom = Constant('SYS_getrandom',278)
SYS_getresgid = Constant('SYS_getresgid',150)
SYS_getresuid = Constant('SYS_getresuid',148)
SYS_getrlimit = Constant('SYS_getrlimit',163)
@@ -969,10 +1218,16 @@ SYS_io_cancel = Constant('SYS_io_cancel',3)
SYS_ioctl = Constant('SYS_ioctl',29)
SYS_io_destroy = Constant('SYS_io_destroy',1)
SYS_io_getevents = Constant('SYS_io_getevents',4)
SYS_io_pgetevents = Constant('SYS_io_pgetevents',292)
SYS_ioprio_get = Constant('SYS_ioprio_get',31)
SYS_ioprio_set = Constant('SYS_ioprio_set',30)
SYS_io_setup = Constant('SYS_io_setup',0)
SYS_io_submit = Constant('SYS_io_submit',2)
SYS_io_uring_enter = Constant('SYS_io_uring_enter',426)
SYS_io_uring_register = Constant('SYS_io_uring_register',427)
SYS_io_uring_setup = Constant('SYS_io_uring_setup',425)
SYS_kcmp = Constant('SYS_kcmp',272)
SYS_kexec_file_load = Constant('SYS_kexec_file_load',294)
SYS_kexec_load = Constant('SYS_kexec_load',104)
SYS_keyctl = Constant('SYS_keyctl',219)
SYS_kill = Constant('SYS_kill',129)
@@ -987,14 +1242,18 @@ SYS_lseek = Constant('SYS_lseek',62)
SYS_lsetxattr = Constant('SYS_lsetxattr',6)
SYS_madvise = Constant('SYS_madvise',233)
SYS_mbind = Constant('SYS_mbind',235)
SYS_membarrier = Constant('SYS_membarrier',283)
SYS_memfd_create = Constant('SYS_memfd_create',279)
SYS_migrate_pages = Constant('SYS_migrate_pages',238)
SYS_mincore = Constant('SYS_mincore',232)
SYS_mkdirat = Constant('SYS_mkdirat',34)
SYS_mknodat = Constant('SYS_mknodat',33)
SYS_mlock = Constant('SYS_mlock',228)
SYS_mlock2 = Constant('SYS_mlock2',284)
SYS_mlockall = Constant('SYS_mlockall',230)
SYS_mmap = Constant('SYS_mmap',222)
SYS_mount = Constant('SYS_mount',40)
SYS_move_mount = Constant('SYS_move_mount',429)
SYS_move_pages = Constant('SYS_move_pages',239)
SYS_mprotect = Constant('SYS_mprotect',226)
SYS_mq_getsetattr = Constant('SYS_mq_getsetattr',185)
@@ -1012,22 +1271,35 @@ SYS_msync = Constant('SYS_msync',227)
SYS_munlock = Constant('SYS_munlock',229)
SYS_munlockall = Constant('SYS_munlockall',231)
SYS_munmap = Constant('SYS_munmap',215)
SYS_name_to_handle_at = Constant('SYS_name_to_handle_at',264)
SYS_nanosleep = Constant('SYS_nanosleep',101)
SYS_newfstatat = Constant('SYS_newfstatat',79)
SYS_nfsservctl = Constant('SYS_nfsservctl',42)
SYS_openat = Constant('SYS_openat',56)
SYS_open_by_handle_at = Constant('SYS_open_by_handle_at',265)
SYS_open_tree = Constant('SYS_open_tree',428)
SYS_perf_event_open = Constant('SYS_perf_event_open',241)
SYS_personality = Constant('SYS_personality',92)
SYS_pidfd_open = Constant('SYS_pidfd_open',434)
SYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)
SYS_pipe2 = Constant('SYS_pipe2',59)
SYS_pivot_root = Constant('SYS_pivot_root',41)
SYS_pkey_alloc = Constant('SYS_pkey_alloc',289)
SYS_pkey_free = Constant('SYS_pkey_free',290)
SYS_pkey_mprotect = Constant('SYS_pkey_mprotect',288)
SYS_ppoll = Constant('SYS_ppoll',73)
SYS_prctl = Constant('SYS_prctl',167)
SYS_pread64 = Constant('SYS_pread64',67)
SYS_preadv = Constant('SYS_preadv',69)
SYS_preadv2 = Constant('SYS_preadv2',286)
SYS_prlimit64 = Constant('SYS_prlimit64',261)
SYS_process_vm_readv = Constant('SYS_process_vm_readv',270)
SYS_process_vm_writev = Constant('SYS_process_vm_writev',271)
SYS_pselect6 = Constant('SYS_pselect6',72)
SYS_ptrace = Constant('SYS_ptrace',117)
SYS_pwrite64 = Constant('SYS_pwrite64',68)
SYS_pwritev = Constant('SYS_pwritev',70)
SYS_pwritev2 = Constant('SYS_pwritev2',287)
SYS_quotactl = Constant('SYS_quotactl',60)
SYS_read = Constant('SYS_read',63)
SYS_readahead = Constant('SYS_readahead',213)
@@ -1040,8 +1312,10 @@ SYS_recvmsg = Constant('SYS_recvmsg',212)
SYS_remap_file_pages = Constant('SYS_remap_file_pages',234)
SYS_removexattr = Constant('SYS_removexattr',14)
SYS_renameat = Constant('SYS_renameat',38)
SYS_renameat2 = Constant('SYS_renameat2',276)
SYS_request_key = Constant('SYS_request_key',218)
SYS_restart_syscall = Constant('SYS_restart_syscall',128)
SYS_rseq = Constant('SYS_rseq',293)
SYS_rt_sigaction = Constant('SYS_rt_sigaction',134)
SYS_rt_sigpending = Constant('SYS_rt_sigpending',136)
SYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',135)
@@ -1051,20 +1325,24 @@ SYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',133)
SYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',137)
SYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',240)
SYS_sched_getaffinity = Constant('SYS_sched_getaffinity',123)
SYS_sched_getattr = Constant('SYS_sched_getattr',275)
SYS_sched_getparam = Constant('SYS_sched_getparam',121)
SYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',125)
SYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',126)
SYS_sched_getscheduler = Constant('SYS_sched_getscheduler',120)
SYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',127)
SYS_sched_setaffinity = Constant('SYS_sched_setaffinity',122)
SYS_sched_setattr = Constant('SYS_sched_setattr',274)
SYS_sched_setparam = Constant('SYS_sched_setparam',118)
SYS_sched_setscheduler = Constant('SYS_sched_setscheduler',119)
SYS_sched_yield = Constant('SYS_sched_yield',124)
SYS_seccomp = Constant('SYS_seccomp',277)
SYS_semctl = Constant('SYS_semctl',191)
SYS_semget = Constant('SYS_semget',190)
SYS_semop = Constant('SYS_semop',193)
SYS_semtimedop = Constant('SYS_semtimedop',192)
SYS_sendfile = Constant('SYS_sendfile',71)
SYS_sendmmsg = Constant('SYS_sendmmsg',269)
SYS_sendmsg = Constant('SYS_sendmsg',211)
SYS_sendto = Constant('SYS_sendto',206)
SYS_setdomainname = Constant('SYS_setdomainname',162)
@@ -1075,6 +1353,7 @@ SYS_setgroups = Constant('SYS_setgroups',159)
SYS_sethostname = Constant('SYS_sethostname',161)
SYS_setitimer = Constant('SYS_setitimer',103)
SYS_set_mempolicy = Constant('SYS_set_mempolicy',237)
SYS_setns = Constant('SYS_setns',268)
SYS_setpgid = Constant('SYS_setpgid',154)
SYS_setpriority = Constant('SYS_setpriority',140)
SYS_setregid = Constant('SYS_setregid',143)
@@ -1100,11 +1379,13 @@ SYS_socket = Constant('SYS_socket',198)
SYS_socketpair = Constant('SYS_socketpair',199)
SYS_splice = Constant('SYS_splice',76)
SYS_statfs = Constant('SYS_statfs',43)
SYS_statx = Constant('SYS_statx',291)
SYS_swapoff = Constant('SYS_swapoff',225)
SYS_swapon = Constant('SYS_swapon',224)
SYS_symlinkat = Constant('SYS_symlinkat',36)
SYS_sync = Constant('SYS_sync',81)
SYS_sync_file_range2 = Constant('SYS_sync_file_range2',84)
SYS_sync_file_range = Constant('SYS_sync_file_range',84)
SYS_syncfs = Constant('SYS_syncfs',267)
SYS_sysinfo = Constant('SYS_sysinfo',179)
SYS_syslog = Constant('SYS_syslog',116)
SYS_tee = Constant('SYS_tee',77)
@@ -1125,6 +1406,7 @@ SYS_umount2 = Constant('SYS_umount2',39)
SYS_uname = Constant('SYS_uname',160)
SYS_unlinkat = Constant('SYS_unlinkat',35)
SYS_unshare = Constant('SYS_unshare',97)
SYS_userfaultfd = Constant('SYS_userfaultfd',282)
SYS_utimensat = Constant('SYS_utimensat',88)
SYS_vhangup = Constant('SYS_vhangup',58)
SYS_vmsplice = Constant('SYS_vmsplice',75)
+435 -99
View File
@@ -1,5 +1,4 @@
from pwnlib.constants.constant import Constant
__NR_osf_syscall = Constant('__NR_osf_syscall',0)
__NR_exit = Constant('__NR_exit',1)
__NR_fork = Constant('__NR_fork',2)
@@ -218,6 +217,7 @@ __NR_osf_afs_syscall = Constant('__NR_osf_afs_syscall',258)
__NR_osf_swapctl = Constant('__NR_osf_swapctl',259)
__NR_osf_memcntl = Constant('__NR_osf_memcntl',260)
__NR_osf_fdatasync = Constant('__NR_osf_fdatasync',261)
__NR_umount_with_flags = Constant('__NR_umount_with_flags',22)
__NR_bdflush = Constant('__NR_bdflush',300)
__NR_sethae = Constant('__NR_sethae',301)
__NR_mount = Constant('__NR_mount',302)
@@ -393,6 +393,73 @@ __NR_utimensat = Constant('__NR_utimensat',475)
__NR_signalfd = Constant('__NR_signalfd',476)
__NR_timerfd = Constant('__NR_timerfd',477)
__NR_eventfd = Constant('__NR_eventfd',478)
__NR_recvmmsg = Constant('__NR_recvmmsg',479)
__NR_fallocate = Constant('__NR_fallocate',480)
__NR_timerfd_create = Constant('__NR_timerfd_create',481)
__NR_timerfd_settime = Constant('__NR_timerfd_settime',482)
__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',483)
__NR_signalfd4 = Constant('__NR_signalfd4',484)
__NR_eventfd2 = Constant('__NR_eventfd2',485)
__NR_epoll_create1 = Constant('__NR_epoll_create1',486)
__NR_dup3 = Constant('__NR_dup3',487)
__NR_pipe2 = Constant('__NR_pipe2',488)
__NR_inotify_init1 = Constant('__NR_inotify_init1',489)
__NR_preadv = Constant('__NR_preadv',490)
__NR_pwritev = Constant('__NR_pwritev',491)
__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',492)
__NR_perf_event_open = Constant('__NR_perf_event_open',493)
__NR_fanotify_init = Constant('__NR_fanotify_init',494)
__NR_fanotify_mark = Constant('__NR_fanotify_mark',495)
__NR_prlimit64 = Constant('__NR_prlimit64',496)
__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',497)
__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',498)
__NR_clock_adjtime = Constant('__NR_clock_adjtime',499)
__NR_syncfs = Constant('__NR_syncfs',500)
__NR_setns = Constant('__NR_setns',501)
__NR_accept4 = Constant('__NR_accept4',502)
__NR_sendmmsg = Constant('__NR_sendmmsg',503)
__NR_process_vm_readv = Constant('__NR_process_vm_readv',504)
__NR_process_vm_writev = Constant('__NR_process_vm_writev',505)
__NR_kcmp = Constant('__NR_kcmp',506)
__NR_finit_module = Constant('__NR_finit_module',507)
__NR_sched_setattr = Constant('__NR_sched_setattr',508)
__NR_sched_getattr = Constant('__NR_sched_getattr',509)
__NR_renameat2 = Constant('__NR_renameat2',510)
__NR_getrandom = Constant('__NR_getrandom',511)
__NR_memfd_create = Constant('__NR_memfd_create',512)
__NR_execveat = Constant('__NR_execveat',513)
__NR_seccomp = Constant('__NR_seccomp',514)
__NR_bpf = Constant('__NR_bpf',515)
__NR_userfaultfd = Constant('__NR_userfaultfd',516)
__NR_membarrier = Constant('__NR_membarrier',517)
__NR_mlock2 = Constant('__NR_mlock2',518)
__NR_copy_file_range = Constant('__NR_copy_file_range',519)
__NR_preadv2 = Constant('__NR_preadv2',520)
__NR_pwritev2 = Constant('__NR_pwritev2',521)
__NR_statx = Constant('__NR_statx',522)
__NR_io_pgetevents = Constant('__NR_io_pgetevents',523)
__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',524)
__NR_pkey_alloc = Constant('__NR_pkey_alloc',525)
__NR_pkey_free = Constant('__NR_pkey_free',526)
__NR_rseq = Constant('__NR_rseq',527)
__NR_statfs64 = Constant('__NR_statfs64',528)
__NR_fstatfs64 = Constant('__NR_fstatfs64',529)
__NR_getegid = Constant('__NR_getegid',530)
__NR_geteuid = Constant('__NR_geteuid',531)
__NR_getppid = Constant('__NR_getppid',532)
__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',534)
__NR_io_uring_setup = Constant('__NR_io_uring_setup',535)
__NR_io_uring_enter = Constant('__NR_io_uring_enter',536)
__NR_io_uring_register = Constant('__NR_io_uring_register',537)
__NR_open_tree = Constant('__NR_open_tree',538)
__NR_move_mount = Constant('__NR_move_mount',539)
__NR_fsopen = Constant('__NR_fsopen',540)
__NR_fsconfig = Constant('__NR_fsconfig',541)
__NR_fsmount = Constant('__NR_fsmount',542)
__NR_fspick = Constant('__NR_fspick',543)
__NR_pidfd_open = Constant('__NR_pidfd_open',544)
__NR_openat2 = Constant('__NR_openat2',547)
__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',548)
MAP_32BIT = Constant('MAP_32BIT',0x40)
INADDR_ANY = Constant('INADDR_ANY',0)
INADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)
@@ -528,7 +595,11 @@ ENOKEY = Constant('ENOKEY',132)
EKEYEXPIRED = Constant('EKEYEXPIRED',133)
EKEYREVOKED = Constant('EKEYREVOKED',134)
EKEYREJECTED = Constant('EKEYREJECTED',135)
__SYS_NERR = Constant('__SYS_NERR',((135) + 1))
EOWNERDEAD = Constant('EOWNERDEAD',136)
ENOTRECOVERABLE = Constant('ENOTRECOVERABLE',137)
ERFKILL = Constant('ERFKILL',138)
EHWPOISON = Constant('EHWPOISON',139)
__SYS_NERR = Constant('__SYS_NERR',((139) + 1))
__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)
__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)
__BYTE_ORDER = Constant('__BYTE_ORDER',1234)
@@ -537,9 +608,55 @@ LITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)
BIG_ENDIAN = Constant('BIG_ENDIAN',4321)
BYTE_ORDER = Constant('BYTE_ORDER',1234)
__WORDSIZE = Constant('__WORDSIZE',64)
INT8_MAX = Constant('INT8_MAX',(127))
INT16_MAX = Constant('INT16_MAX',(32767))
INT32_MAX = Constant('INT32_MAX',(2147483647))
INT64_MAX = Constant('INT64_MAX',(9223372036854775807))
INT8_MIN = Constant('INT8_MIN',(-1 - (127)))
INT16_MIN = Constant('INT16_MIN',(-1 - (32767)))
INT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))
INT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))
INT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))
INT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))
INT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))
INT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))
INT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))
INT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))
INT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))
INT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))
UINT8_MAX = Constant('UINT8_MAX',0xff)
UINT16_MAX = Constant('UINT16_MAX',0xffff)
UINT32_MAX = Constant('UINT32_MAX',0xffffffff)
UINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)
UINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)
UINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)
UINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)
UINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)
INTPTR_MIN = Constant('INTPTR_MIN',(-1 - (9223372036854775807)))
INTPTR_MAX = Constant('INTPTR_MAX',(9223372036854775807))
UINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffffffffffff)
SIZE_MAX = Constant('SIZE_MAX',0xffffffffffffffff)
PTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (9223372036854775807)))
PTRDIFF_MAX = Constant('PTRDIFF_MAX',(9223372036854775807))
INTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))
INTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))
UINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)
INT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))
INT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))
INT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))
INT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))
UINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)
UINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)
INT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (9223372036854775807)))
INT_FAST16_MAX = Constant('INT_FAST16_MAX',(9223372036854775807))
UINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffffffffffff)
INT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (9223372036854775807)))
INT_FAST32_MAX = Constant('INT_FAST32_MAX',(9223372036854775807))
UINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffffffffffff)
WINT_MIN = Constant('WINT_MIN',0)
__FSUID_H = Constant('__FSUID_H',1)
NSIG = Constant('NSIG',32)
_NSIG = Constant('_NSIG',64)
_NSIG = Constant('_NSIG',65)
SIGHUP = Constant('SIGHUP',1)
SIGINT = Constant('SIGINT',2)
SIGQUIT = Constant('SIGQUIT',3)
@@ -578,7 +695,7 @@ SIGCLD = Constant('SIGCLD',20)
SIGPOLL = Constant('SIGPOLL',23)
SIGLOST = Constant('SIGLOST',29)
SIGRTMIN = Constant('SIGRTMIN',32)
SIGRTMAX = Constant('SIGRTMAX',(64-1))
SIGRTMAX = Constant('SIGRTMAX',(65-1))
SA_ONSTACK = Constant('SA_ONSTACK',0x00000001)
SA_RESTART = Constant('SA_RESTART',0x00000002)
SA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000004)
@@ -626,6 +743,8 @@ _SC_PAGESIZE = Constant('_SC_PAGESIZE',5)
_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)
_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)
_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)
_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)
_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)
_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)
_PC_VDISABLE = Constant('_PC_VDISABLE',2)
L_cuserid = Constant('L_cuserid',17)
@@ -634,6 +753,7 @@ F_ULOCK = Constant('F_ULOCK',0)
F_LOCK = Constant('F_LOCK',1)
F_TLOCK = Constant('F_TLOCK',2)
F_TEST = Constant('F_TEST',3)
_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)
S_IFMT = Constant('S_IFMT',0o0170000)
S_IFSOCK = Constant('S_IFSOCK',0o140000)
S_IFLNK = Constant('S_IFLNK',0o120000)
@@ -660,121 +780,82 @@ S_IXOTH = Constant('S_IXOTH',0o0001)
S_IREAD = Constant('S_IREAD',0o0400)
S_IWRITE = Constant('S_IWRITE',0o0200)
S_IEXEC = Constant('S_IEXEC',0o0100)
F_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)
O_ACCMODE = Constant('O_ACCMODE',0o003)
O_RDONLY = Constant('O_RDONLY',0o0)
O_WRONLY = Constant('O_WRONLY',0o1)
O_RDWR = Constant('O_RDWR',0o2)
O_CREAT = Constant('O_CREAT',0o1000)
O_TRUNC = Constant('O_TRUNC',0o2000)
O_EXCL = Constant('O_EXCL',0o4000)
O_NOCTTY = Constant('O_NOCTTY',0o10000)
O_NONBLOCK = Constant('O_NONBLOCK',0o0004)
O_APPEND = Constant('O_APPEND',0o0010)
O_NDELAY = Constant('O_NDELAY',0o0004)
O_SYNC = Constant('O_SYNC',0o40000)
FASYNC = Constant('FASYNC',0o20000)
O_DIRECTORY = Constant('O_DIRECTORY',0o100000)
O_NOFOLLOW = Constant('O_NOFOLLOW',0o200000)
O_LARGEFILE = Constant('O_LARGEFILE',0o400000)
O_DIRECT = Constant('O_DIRECT',0o2000000)
O_NOATIME = Constant('O_NOATIME',0o4000000)
F_DUPFD = Constant('F_DUPFD',0)
F_GETFD = Constant('F_GETFD',1)
F_SETFD = Constant('F_SETFD',2)
F_GETFL = Constant('F_GETFL',3)
F_SETFL = Constant('F_SETFL',4)
F_GETLK = Constant('F_GETLK',7)
F_SETLK = Constant('F_SETLK',8)
F_SETLKW = Constant('F_SETLKW',9)
F_SETOWN = Constant('F_SETOWN',5)
F_GETOWN = Constant('F_GETOWN',6)
F_SETSIG = Constant('F_SETSIG',10)
F_GETSIG = Constant('F_GETSIG',11)
FD_CLOEXEC = Constant('FD_CLOEXEC',1)
F_RDLCK = Constant('F_RDLCK',1)
F_WRLCK = Constant('F_WRLCK',2)
F_UNLCK = Constant('F_UNLCK',8)
F_EXLCK = Constant('F_EXLCK',16)
F_SHLCK = Constant('F_SHLCK',32)
F_INPROGRESS = Constant('F_INPROGRESS',64)
LOCK_SH = Constant('LOCK_SH',1)
LOCK_EX = Constant('LOCK_EX',2)
LOCK_NB = Constant('LOCK_NB',4)
LOCK_UN = Constant('LOCK_UN',8)
LOCK_MAND = Constant('LOCK_MAND',32)
LOCK_READ = Constant('LOCK_READ',64)
LOCK_WRITE = Constant('LOCK_WRITE',128)
LOCK_RW = Constant('LOCK_RW',192)
O_ASYNC = Constant('O_ASYNC',0o20000)
MREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)
MREMAP_FIXED = Constant('MREMAP_FIXED',2)
PROT_READ = Constant('PROT_READ',0x1)
PROT_WRITE = Constant('PROT_WRITE',0x2)
PROT_EXEC = Constant('PROT_EXEC',0x4)
PROT_NONE = Constant('PROT_NONE',0x0)
MAP_SHARED = Constant('MAP_SHARED',0x01)
MAP_PRIVATE = Constant('MAP_PRIVATE',0x02)
MAP_FIXED = Constant('MAP_FIXED',0x100)
MAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x10)
MAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x1000)
MAP_DENYWRITE = Constant('MAP_DENYWRITE',0x2000)
MAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x4000)
MAP_LOCKED = Constant('MAP_LOCKED',0x8000)
MAP_NORESERVE = Constant('MAP_NORESERVE',0x10000)
MAP_POPULATE = Constant('MAP_POPULATE',0x20000)
MS_ASYNC = Constant('MS_ASYNC',1)
MS_SYNC = Constant('MS_SYNC',2)
MS_INVALIDATE = Constant('MS_INVALIDATE',4)
MCL_CURRENT = Constant('MCL_CURRENT',8192)
MCL_FUTURE = Constant('MCL_FUTURE',16384)
MADV_NORMAL = Constant('MADV_NORMAL',0)
MADV_RANDOM = Constant('MADV_RANDOM',1)
MADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',2)
MADV_WILLNEED = Constant('MADV_WILLNEED',3)
MADV_SPACEAVAIL = Constant('MADV_SPACEAVAIL',5)
MADV_DONTNEED = Constant('MADV_DONTNEED',6)
MAP_ANON = Constant('MAP_ANON',0x10)
MAP_FILE = Constant('MAP_FILE',0)
_SYS_UIO = Constant('_SYS_UIO',1)
SOL_SOCKET = Constant('SOL_SOCKET',0xffff)
SO_DEBUG = Constant('SO_DEBUG',0x0001)
SO_REUSEADDR = Constant('SO_REUSEADDR',0x0004)
SO_TYPE = Constant('SO_TYPE',0x1008)
SO_ERROR = Constant('SO_ERROR',0x1007)
SO_KEEPALIVE = Constant('SO_KEEPALIVE',0x0008)
SO_DONTROUTE = Constant('SO_DONTROUTE',0x0010)
SO_BROADCAST = Constant('SO_BROADCAST',0x0020)
SO_LINGER = Constant('SO_LINGER',0x0080)
SO_OOBINLINE = Constant('SO_OOBINLINE',0x0100)
SO_REUSEPORT = Constant('SO_REUSEPORT',0x0200)
SO_TYPE = Constant('SO_TYPE',0x1008)
SO_ERROR = Constant('SO_ERROR',0x1007)
SO_SNDBUF = Constant('SO_SNDBUF',0x1001)
SO_RCVBUF = Constant('SO_RCVBUF',0x1002)
SO_KEEPALIVE = Constant('SO_KEEPALIVE',0x0008)
SO_OOBINLINE = Constant('SO_OOBINLINE',0x0100)
SO_NO_CHECK = Constant('SO_NO_CHECK',11)
SO_PRIORITY = Constant('SO_PRIORITY',12)
SO_LINGER = Constant('SO_LINGER',0x0080)
SO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)
SO_PASSCRED = Constant('SO_PASSCRED',17)
SO_PEERCRED = Constant('SO_PEERCRED',18)
SO_RCVLOWAT = Constant('SO_RCVLOWAT',0x1004)
SO_SNDLOWAT = Constant('SO_SNDLOWAT',0x1003)
SO_RCVTIMEO = Constant('SO_RCVTIMEO',0x1006)
SO_SNDTIMEO = Constant('SO_SNDTIMEO',0x1005)
SO_ACCEPTCONN = Constant('SO_ACCEPTCONN',0x1009)
SO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',0x100a)
SO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',0x100b)
SO_STYLE = Constant('SO_STYLE',0x1008)
SO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)
SO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)
SO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)
SO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',19)
SO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',20)
SO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',21)
SO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)
SO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)
SO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)
SO_GET_FILTER = Constant('SO_GET_FILTER',26)
SO_PEERNAME = Constant('SO_PEERNAME',28)
SO_TIMESTAMP = Constant('SO_TIMESTAMP',29)
SCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)
SO_PEERSEC = Constant('SO_PEERSEC',30)
SO_PASSSEC = Constant('SO_PASSSEC',34)
SO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)
SCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)
SO_MARK = Constant('SO_MARK',36)
SO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)
SCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)
SO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)
SO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)
SCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)
SO_PEEK_OFF = Constant('SO_PEEK_OFF',42)
SO_NOFCS = Constant('SO_NOFCS',43)
SO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)
SO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)
SO_BUSY_POLL = Constant('SO_BUSY_POLL',46)
SO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)
SO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)
SO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)
SO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)
SO_DETACH_BPF = Constant('SO_DETACH_BPF',27)
SO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)
SO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)
SO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)
SCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)
SO_MEMINFO = Constant('SO_MEMINFO',55)
SO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)
SO_COOKIE = Constant('SO_COOKIE',57)
SCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)
SO_PEERGROUPS = Constant('SO_PEERGROUPS',59)
SO_ZEROCOPY = Constant('SO_ZEROCOPY',60)
SO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',0x100a)
SO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',0x100b)
SO_RCVLOWAT = Constant('SO_RCVLOWAT',0x1010)
SO_SNDLOWAT = Constant('SO_SNDLOWAT',0x1011)
SO_RCVTIMEO = Constant('SO_RCVTIMEO',0x1012)
SO_SNDTIMEO = Constant('SO_SNDTIMEO',0x1013)
SO_ACCEPTCONN = Constant('SO_ACCEPTCONN',0x1014)
SO_PROTOCOL = Constant('SO_PROTOCOL',0x1028)
SO_DOMAIN = Constant('SO_DOMAIN',0x1029)
SO_STYLE = Constant('SO_STYLE',0x1008)
SOCK_NONBLOCK = Constant('SOCK_NONBLOCK',0x40000000)
SOCK_STREAM = Constant('SOCK_STREAM',1)
SOCK_DGRAM = Constant('SOCK_DGRAM',2)
SOCK_RAW = Constant('SOCK_RAW',3)
SOCK_RDM = Constant('SOCK_RDM',4)
SOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)
SOCK_DCCP = Constant('SOCK_DCCP',6)
SOCK_PACKET = Constant('SOCK_PACKET',10)
UIO_FASTIOV = Constant('UIO_FASTIOV',8)
UIO_MAXIOV = Constant('UIO_MAXIOV',1024)
@@ -808,7 +889,25 @@ AF_SNA = Constant('AF_SNA',22)
AF_IRDA = Constant('AF_IRDA',23)
AF_PPPOX = Constant('AF_PPPOX',24)
AF_WANPIPE = Constant('AF_WANPIPE',25)
AF_MAX = Constant('AF_MAX',32)
AF_LLC = Constant('AF_LLC',26)
AF_IB = Constant('AF_IB',27)
AF_MPLS = Constant('AF_MPLS',28)
AF_CAN = Constant('AF_CAN',29)
AF_TIPC = Constant('AF_TIPC',30)
AF_BLUETOOTH = Constant('AF_BLUETOOTH',31)
AF_IUCV = Constant('AF_IUCV',32)
AF_RXRPC = Constant('AF_RXRPC',33)
AF_ISDN = Constant('AF_ISDN',34)
AF_PHONET = Constant('AF_PHONET',35)
AF_IEEE802154 = Constant('AF_IEEE802154',36)
AF_CAIF = Constant('AF_CAIF',37)
AF_ALG = Constant('AF_ALG',38)
AF_NFC = Constant('AF_NFC',39)
AF_VSOCK = Constant('AF_VSOCK',40)
AF_KCM = Constant('AF_KCM',41)
AF_QIPCRTR = Constant('AF_QIPCRTR',42)
AF_SMC = Constant('AF_SMC',43)
AF_MAX = Constant('AF_MAX',44)
PF_UNSPEC = Constant('PF_UNSPEC',0)
PF_UNIX = Constant('PF_UNIX',1)
PF_LOCAL = Constant('PF_LOCAL',1)
@@ -836,7 +935,25 @@ PF_SNA = Constant('PF_SNA',22)
PF_IRDA = Constant('PF_IRDA',23)
PF_PPPOX = Constant('PF_PPPOX',24)
PF_WANPIPE = Constant('PF_WANPIPE',25)
PF_MAX = Constant('PF_MAX',32)
PF_LLC = Constant('PF_LLC',26)
PF_IB = Constant('PF_IB',27)
PF_MPLS = Constant('PF_MPLS',28)
PF_CAN = Constant('PF_CAN',29)
PF_TIPC = Constant('PF_TIPC',30)
PF_BLUETOOTH = Constant('PF_BLUETOOTH',31)
PF_IUCV = Constant('PF_IUCV',32)
PF_RXRPC = Constant('PF_RXRPC',33)
PF_ISDN = Constant('PF_ISDN',34)
PF_PHONET = Constant('PF_PHONET',35)
PF_IEEE802154 = Constant('PF_IEEE802154',36)
PF_CAIF = Constant('PF_CAIF',37)
PF_ALG = Constant('PF_ALG',38)
PF_NFC = Constant('PF_NFC',39)
PF_VSOCK = Constant('PF_VSOCK',40)
PF_KCM = Constant('PF_KCM',41)
PF_QIPCRTR = Constant('PF_QIPCRTR',42)
PF_SMC = Constant('PF_SMC',43)
PF_MAX = Constant('PF_MAX',44)
SOMAXCONN = Constant('SOMAXCONN',128)
MSG_OOB = Constant('MSG_OOB',1)
MSG_PEEK = Constant('MSG_PEEK',2)
@@ -849,18 +966,26 @@ MSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)
MSG_EOR = Constant('MSG_EOR',0x80)
MSG_WAITALL = Constant('MSG_WAITALL',0x100)
MSG_FIN = Constant('MSG_FIN',0x200)
MSG_EOF = Constant('MSG_EOF',0x200)
MSG_SYN = Constant('MSG_SYN',0x400)
MSG_CONFIRM = Constant('MSG_CONFIRM',0x800)
MSG_RST = Constant('MSG_RST',0x1000)
MSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)
MSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)
MSG_MORE = Constant('MSG_MORE',0x8000)
MSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)
MSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)
MSG_BATCH = Constant('MSG_BATCH',0x40000)
MSG_EOF = Constant('MSG_EOF',0x200)
MSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)
MSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)
MSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)
SOL_IP = Constant('SOL_IP',0)
SOL_TCP = Constant('SOL_TCP',6)
SOL_UDP = Constant('SOL_UDP',17)
SOL_IPV6 = Constant('SOL_IPV6',41)
SOL_ICMPV6 = Constant('SOL_ICMPV6',58)
SOL_SCTP = Constant('SOL_SCTP',132)
SOL_UDPLITE = Constant('SOL_UDPLITE',136)
SOL_RAW = Constant('SOL_RAW',255)
SOL_IPX = Constant('SOL_IPX',256)
SOL_AX25 = Constant('SOL_AX25',257)
@@ -873,6 +998,22 @@ SOL_PACKET = Constant('SOL_PACKET',263)
SOL_ATM = Constant('SOL_ATM',264)
SOL_AAL = Constant('SOL_AAL',265)
SOL_IRDA = Constant('SOL_IRDA',266)
SOL_NETBEUI = Constant('SOL_NETBEUI',267)
SOL_LLC = Constant('SOL_LLC',268)
SOL_DCCP = Constant('SOL_DCCP',269)
SOL_NETLINK = Constant('SOL_NETLINK',270)
SOL_TIPC = Constant('SOL_TIPC',271)
SOL_RXRPC = Constant('SOL_RXRPC',272)
SOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)
SOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)
SOL_PNPIPE = Constant('SOL_PNPIPE',275)
SOL_RDS = Constant('SOL_RDS',276)
SOL_IUCV = Constant('SOL_IUCV',277)
SOL_CAIF = Constant('SOL_CAIF',278)
SOL_ALG = Constant('SOL_ALG',279)
SOL_NFC = Constant('SOL_NFC',280)
SOL_KCM = Constant('SOL_KCM',281)
SOL_TLS = Constant('SOL_TLS',282)
IPX_TYPE = Constant('IPX_TYPE',1)
SHUT_RD = Constant('SHUT_RD',0)
SHUT_WR = Constant('SHUT_WR',1)
@@ -896,6 +1037,10 @@ EAI_SYSTEM = Constant('EAI_SYSTEM',-11)
AI_NUMERICHOST = Constant('AI_NUMERICHOST',1)
AI_CANONNAME = Constant('AI_CANONNAME',2)
AI_PASSIVE = Constant('AI_PASSIVE',4)
AI_NUMERICSERV = Constant('AI_NUMERICSERV',8)
AI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)
AI_V4MAPPED = Constant('AI_V4MAPPED',32)
AI_ALL = Constant('AI_ALL',64)
SIOCADDRT = Constant('SIOCADDRT',0x890B)
SIOCDELRT = Constant('SIOCDELRT',0x890C)
SIOCRTMSG = Constant('SIOCRTMSG',0x890D)
@@ -952,6 +1097,128 @@ SIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)
SIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)
SIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)
SIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)
F_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)
O_ACCMODE = Constant('O_ACCMODE',0o003)
O_RDONLY = Constant('O_RDONLY',0o0)
O_WRONLY = Constant('O_WRONLY',0o1)
O_RDWR = Constant('O_RDWR',0o2)
O_CREAT = Constant('O_CREAT',0o1000)
O_TRUNC = Constant('O_TRUNC',0o2000)
O_EXCL = Constant('O_EXCL',0o4000)
O_NOCTTY = Constant('O_NOCTTY',0o10000)
O_NONBLOCK = Constant('O_NONBLOCK',0o0004)
O_APPEND = Constant('O_APPEND',0o0010)
O_NDELAY = Constant('O_NDELAY',0o0004)
O_DSYNC = Constant('O_DSYNC',0o40000)
FASYNC = Constant('FASYNC',0o20000)
O_DIRECTORY = Constant('O_DIRECTORY',0o100000)
O_NOFOLLOW = Constant('O_NOFOLLOW',0o200000)
O_LARGEFILE = Constant('O_LARGEFILE',0o400000)
O_DIRECT = Constant('O_DIRECT',0o2000000)
O_NOATIME = Constant('O_NOATIME',0o4000000)
O_CLOEXEC = Constant('O_CLOEXEC',0o10000000)
O_SYNC = Constant('O_SYNC',(0o20000000|0o40000))
O_PATH = Constant('O_PATH',0o40000000)
__O_TMPFILE = Constant('__O_TMPFILE',0o100000000)
F_DUPFD = Constant('F_DUPFD',0)
F_GETFD = Constant('F_GETFD',1)
F_SETFD = Constant('F_SETFD',2)
F_GETFL = Constant('F_GETFL',3)
F_SETFL = Constant('F_SETFL',4)
F_GETLK = Constant('F_GETLK',7)
F_SETLK = Constant('F_SETLK',8)
F_SETLKW = Constant('F_SETLKW',9)
F_SETOWN = Constant('F_SETOWN',5)
F_GETOWN = Constant('F_GETOWN',6)
F_SETSIG = Constant('F_SETSIG',10)
F_GETSIG = Constant('F_GETSIG',11)
FD_CLOEXEC = Constant('FD_CLOEXEC',1)
F_RDLCK = Constant('F_RDLCK',1)
F_WRLCK = Constant('F_WRLCK',2)
F_UNLCK = Constant('F_UNLCK',8)
F_EXLCK = Constant('F_EXLCK',16)
F_SHLCK = Constant('F_SHLCK',32)
F_INPROGRESS = Constant('F_INPROGRESS',64)
LOCK_SH = Constant('LOCK_SH',1)
LOCK_EX = Constant('LOCK_EX',2)
LOCK_NB = Constant('LOCK_NB',4)
LOCK_UN = Constant('LOCK_UN',8)
LOCK_MAND = Constant('LOCK_MAND',32)
LOCK_READ = Constant('LOCK_READ',64)
LOCK_WRITE = Constant('LOCK_WRITE',128)
LOCK_RW = Constant('LOCK_RW',192)
O_TMPFILE = Constant('O_TMPFILE',(0o100000000 | 0o100000))
O_ASYNC = Constant('O_ASYNC',0o20000)
F_SETOWN_EX = Constant('F_SETOWN_EX',15)
F_GETOWN_EX = Constant('F_GETOWN_EX',16)
F_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)
F_OFD_GETLK = Constant('F_OFD_GETLK',36)
F_OFD_SETLK = Constant('F_OFD_SETLK',37)
F_OFD_SETLKW = Constant('F_OFD_SETLKW',38)
F_OWNER_TID = Constant('F_OWNER_TID',0)
F_OWNER_PID = Constant('F_OWNER_PID',1)
F_OWNER_PGRP = Constant('F_OWNER_PGRP',2)
AT_FDCWD = Constant('AT_FDCWD',-100)
AT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)
AT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)
AT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)
AT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)
AT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)
AT_EACCESS = Constant('AT_EACCESS',0x200)
MREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)
MREMAP_FIXED = Constant('MREMAP_FIXED',2)
PROT_READ = Constant('PROT_READ',0x1)
PROT_WRITE = Constant('PROT_WRITE',0x2)
PROT_EXEC = Constant('PROT_EXEC',0x4)
PROT_SEM = Constant('PROT_SEM',0x8)
PROT_NONE = Constant('PROT_NONE',0x0)
PROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)
PROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)
MAP_SHARED = Constant('MAP_SHARED',0x01)
MAP_PRIVATE = Constant('MAP_PRIVATE',0x02)
MAP_TYPE = Constant('MAP_TYPE',0xf)
MADV_REMOVE = Constant('MADV_REMOVE',9)
MADV_DONTFORK = Constant('MADV_DONTFORK',10)
MADV_DOFORK = Constant('MADV_DOFORK',11)
MADV_MERGEABLE = Constant('MADV_MERGEABLE',12)
MADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)
MADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)
MADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)
MADV_DONTDUMP = Constant('MADV_DONTDUMP',16)
MADV_DODUMP = Constant('MADV_DODUMP',17)
MADV_HWPOISON = Constant('MADV_HWPOISON',100)
MADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)
MLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)
MAP_FIXED = Constant('MAP_FIXED',0x100)
MAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x10)
MAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x1000)
MAP_DENYWRITE = Constant('MAP_DENYWRITE',0x2000)
MAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x4000)
MAP_LOCKED = Constant('MAP_LOCKED',0x8000)
MAP_NORESERVE = Constant('MAP_NORESERVE',0x10000)
MAP_POPULATE = Constant('MAP_POPULATE',0x20000)
MAP_NONBLOCK = Constant('MAP_NONBLOCK',0x40000)
MAP_STACK = Constant('MAP_STACK',0x80000)
MAP_HUGETLB = Constant('MAP_HUGETLB',0x100000)
MS_ASYNC = Constant('MS_ASYNC',1)
MS_SYNC = Constant('MS_SYNC',2)
MS_INVALIDATE = Constant('MS_INVALIDATE',4)
MCL_CURRENT = Constant('MCL_CURRENT',8192)
MCL_FUTURE = Constant('MCL_FUTURE',16384)
MCL_ONFAULT = Constant('MCL_ONFAULT',32768)
MADV_NORMAL = Constant('MADV_NORMAL',0)
MADV_RANDOM = Constant('MADV_RANDOM',1)
MADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',2)
MADV_WILLNEED = Constant('MADV_WILLNEED',3)
MADV_SPACEAVAIL = Constant('MADV_SPACEAVAIL',5)
MADV_DONTNEED = Constant('MADV_DONTNEED',6)
MAP_ANON = Constant('MAP_ANON',0x10)
MAP_FILE = Constant('MAP_FILE',0)
POSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0)
POSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',2)
POSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',1)
POSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',3)
POSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',6)
PTRACE_TRACEME = Constant('PTRACE_TRACEME',0)
PTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)
PTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)
@@ -997,6 +1264,7 @@ PT_STEP = Constant('PT_STEP',9)
PT_ATTACH = Constant('PT_ATTACH',0x10)
PT_DETACH = Constant('PT_DETACH',0x11)
SYS_accept = Constant('SYS_accept',99)
SYS_accept4 = Constant('SYS_accept4',502)
SYS_access = Constant('SYS_access',33)
SYS_acct = Constant('SYS_acct',51)
SYS_add_key = Constant('SYS_add_key',439)
@@ -1004,6 +1272,7 @@ SYS_adjtimex = Constant('SYS_adjtimex',366)
SYS_afs_syscall = Constant('SYS_afs_syscall',338)
SYS_bdflush = Constant('SYS_bdflush',300)
SYS_bind = Constant('SYS_bind',104)
SYS_bpf = Constant('SYS_bpf',515)
SYS_brk = Constant('SYS_brk',17)
SYS_capget = Constant('SYS_capget',368)
SYS_capset = Constant('SYS_capset',369)
@@ -1011,6 +1280,7 @@ SYS_chdir = Constant('SYS_chdir',12)
SYS_chmod = Constant('SYS_chmod',15)
SYS_chown = Constant('SYS_chown',16)
SYS_chroot = Constant('SYS_chroot',61)
SYS_clock_adjtime = Constant('SYS_clock_adjtime',499)
SYS_clock_getres = Constant('SYS_clock_getres',421)
SYS_clock_gettime = Constant('SYS_clock_gettime',420)
SYS_clock_nanosleep = Constant('SYS_clock_nanosleep',422)
@@ -1018,19 +1288,27 @@ SYS_clock_settime = Constant('SYS_clock_settime',419)
SYS_clone = Constant('SYS_clone',312)
SYS_close = Constant('SYS_close',6)
SYS_connect = Constant('SYS_connect',98)
SYS_copy_file_range = Constant('SYS_copy_file_range',519)
SYS_create_module = Constant('SYS_create_module',306)
SYS_delete_module = Constant('SYS_delete_module',308)
SYS_dipc = Constant('SYS_dipc',373)
SYS_dup = Constant('SYS_dup',41)
SYS_dup2 = Constant('SYS_dup2',90)
SYS_dup3 = Constant('SYS_dup3',487)
SYS_epoll_create1 = Constant('SYS_epoll_create1',486)
SYS_epoll_pwait = Constant('SYS_epoll_pwait',474)
SYS_eventfd = Constant('SYS_eventfd',478)
SYS_eventfd2 = Constant('SYS_eventfd2',485)
SYS_execve = Constant('SYS_execve',59)
SYS_execveat = Constant('SYS_execveat',513)
SYS_exec_with_loader = Constant('SYS_exec_with_loader',25)
SYS_exit = Constant('SYS_exit',1)
SYS_exit_group = Constant('SYS_exit_group',405)
SYS_faccessat = Constant('SYS_faccessat',462)
SYS_fadvise64 = Constant('SYS_fadvise64',413)
SYS_fallocate = Constant('SYS_fallocate',480)
SYS_fanotify_init = Constant('SYS_fanotify_init',494)
SYS_fanotify_mark = Constant('SYS_fanotify_mark',495)
SYS_fchdir = Constant('SYS_fchdir',13)
SYS_fchmod = Constant('SYS_fchmod',124)
SYS_fchmodat = Constant('SYS_fchmodat',461)
@@ -1039,15 +1317,21 @@ SYS_fchownat = Constant('SYS_fchownat',453)
SYS_fcntl = Constant('SYS_fcntl',92)
SYS_fdatasync = Constant('SYS_fdatasync',447)
SYS_fgetxattr = Constant('SYS_fgetxattr',387)
SYS_finit_module = Constant('SYS_finit_module',507)
SYS_flistxattr = Constant('SYS_flistxattr',390)
SYS_flock = Constant('SYS_flock',131)
SYS_fork = Constant('SYS_fork',2)
SYS_fremovexattr = Constant('SYS_fremovexattr',393)
SYS_fsconfig = Constant('SYS_fsconfig',541)
SYS_fsetxattr = Constant('SYS_fsetxattr',384)
SYS_fsmount = Constant('SYS_fsmount',542)
SYS_fsopen = Constant('SYS_fsopen',540)
SYS_fspick = Constant('SYS_fspick',543)
SYS_fstat = Constant('SYS_fstat',91)
SYS_fstat64 = Constant('SYS_fstat64',427)
SYS_fstatat64 = Constant('SYS_fstatat64',455)
SYS_fstatfs = Constant('SYS_fstatfs',329)
SYS_fstatfs64 = Constant('SYS_fstatfs64',529)
SYS_fsync = Constant('SYS_fsync',95)
SYS_ftruncate = Constant('SYS_ftruncate',130)
SYS_futex = Constant('SYS_futex',394)
@@ -1057,6 +1341,8 @@ SYS_getcwd = Constant('SYS_getcwd',367)
SYS_getdents = Constant('SYS_getdents',305)
SYS_getdents64 = Constant('SYS_getdents64',377)
SYS_getdtablesize = Constant('SYS_getdtablesize',89)
SYS_getegid = Constant('SYS_getegid',530)
SYS_geteuid = Constant('SYS_geteuid',531)
SYS_getgroups = Constant('SYS_getgroups',79)
SYS_gethostname = Constant('SYS_gethostname',87)
SYS_getitimer = Constant('SYS_getitimer',361)
@@ -1066,7 +1352,9 @@ SYS_getpagesize = Constant('SYS_getpagesize',64)
SYS_getpeername = Constant('SYS_getpeername',141)
SYS_getpgid = Constant('SYS_getpgid',233)
SYS_getpgrp = Constant('SYS_getpgrp',63)
SYS_getppid = Constant('SYS_getppid',532)
SYS_getpriority = Constant('SYS_getpriority',100)
SYS_getrandom = Constant('SYS_getrandom',511)
SYS_getresgid = Constant('SYS_getresgid',372)
SYS_getresuid = Constant('SYS_getresuid',344)
SYS_getrlimit = Constant('SYS_getrlimit',144)
@@ -1084,15 +1372,21 @@ SYS_getxuid = Constant('SYS_getxuid',24)
SYS_init_module = Constant('SYS_init_module',307)
SYS_inotify_add_watch = Constant('SYS_inotify_add_watch',445)
SYS_inotify_init = Constant('SYS_inotify_init',444)
SYS_inotify_init1 = Constant('SYS_inotify_init1',489)
SYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',446)
SYS_io_cancel = Constant('SYS_io_cancel',402)
SYS_ioctl = Constant('SYS_ioctl',54)
SYS_io_destroy = Constant('SYS_io_destroy',399)
SYS_io_getevents = Constant('SYS_io_getevents',400)
SYS_io_pgetevents = Constant('SYS_io_pgetevents',523)
SYS_ioprio_get = Constant('SYS_ioprio_get',443)
SYS_ioprio_set = Constant('SYS_ioprio_set',442)
SYS_io_setup = Constant('SYS_io_setup',398)
SYS_io_submit = Constant('SYS_io_submit',401)
SYS_io_uring_enter = Constant('SYS_io_uring_enter',536)
SYS_io_uring_register = Constant('SYS_io_uring_register',537)
SYS_io_uring_setup = Constant('SYS_io_uring_setup',535)
SYS_kcmp = Constant('SYS_kcmp',506)
SYS_kexec_load = Constant('SYS_kexec_load',448)
SYS_keyctl = Constant('SYS_keyctl',441)
SYS_kill = Constant('SYS_kill',37)
@@ -1111,6 +1405,8 @@ SYS_lstat = Constant('SYS_lstat',68)
SYS_lstat64 = Constant('SYS_lstat64',426)
SYS_madvise = Constant('SYS_madvise',75)
SYS_mbind = Constant('SYS_mbind',429)
SYS_membarrier = Constant('SYS_membarrier',517)
SYS_memfd_create = Constant('SYS_memfd_create',512)
SYS_migrate_pages = Constant('SYS_migrate_pages',449)
SYS_mincore = Constant('SYS_mincore',375)
SYS_mkdir = Constant('SYS_mkdir',136)
@@ -1118,9 +1414,11 @@ SYS_mkdirat = Constant('SYS_mkdirat',451)
SYS_mknod = Constant('SYS_mknod',14)
SYS_mknodat = Constant('SYS_mknodat',452)
SYS_mlock = Constant('SYS_mlock',314)
SYS_mlock2 = Constant('SYS_mlock2',518)
SYS_mlockall = Constant('SYS_mlockall',316)
SYS_mmap = Constant('SYS_mmap',71)
SYS_mount = Constant('SYS_mount',302)
SYS_move_mount = Constant('SYS_move_mount',539)
SYS_move_pages = Constant('SYS_move_pages',472)
SYS_mprotect = Constant('SYS_mprotect',74)
SYS_mq_getsetattr = Constant('SYS_mq_getsetattr',437)
@@ -1138,12 +1436,16 @@ SYS_msync = Constant('SYS_msync',217)
SYS_munlock = Constant('SYS_munlock',315)
SYS_munlockall = Constant('SYS_munlockall',317)
SYS_munmap = Constant('SYS_munmap',73)
SYS_name_to_handle_at = Constant('SYS_name_to_handle_at',497)
SYS_nanosleep = Constant('SYS_nanosleep',340)
SYS_nfsservctl = Constant('SYS_nfsservctl',342)
SYS_old_adjtimex = Constant('SYS_old_adjtimex',303)
SYS_oldumount = Constant('SYS_oldumount',321)
SYS_open = Constant('SYS_open',45)
SYS_openat = Constant('SYS_openat',450)
SYS_openat2 = Constant('SYS_openat2',547)
SYS_open_by_handle_at = Constant('SYS_open_by_handle_at',498)
SYS_open_tree = Constant('SYS_open_tree',538)
SYS_osf_adjtime = Constant('SYS_osf_adjtime',140)
SYS_osf_afs_syscall = Constant('SYS_osf_afs_syscall',258)
SYS_osf_alt_plock = Constant('SYS_osf_alt_plock',181)
@@ -1252,16 +1554,31 @@ SYS_osf_waitid = Constant('SYS_osf_waitid',236)
SYS_pciconfig_iobase = Constant('SYS_pciconfig_iobase',376)
SYS_pciconfig_read = Constant('SYS_pciconfig_read',345)
SYS_pciconfig_write = Constant('SYS_pciconfig_write',346)
SYS_perf_event_open = Constant('SYS_perf_event_open',493)
SYS_personality = Constant('SYS_personality',324)
SYS_pidfd_getfd = Constant('SYS_pidfd_getfd',548)
SYS_pidfd_open = Constant('SYS_pidfd_open',544)
SYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',534)
SYS_pipe = Constant('SYS_pipe',42)
SYS_pipe2 = Constant('SYS_pipe2',488)
SYS_pivot_root = Constant('SYS_pivot_root',374)
SYS_pkey_alloc = Constant('SYS_pkey_alloc',525)
SYS_pkey_free = Constant('SYS_pkey_free',526)
SYS_pkey_mprotect = Constant('SYS_pkey_mprotect',524)
SYS_poll = Constant('SYS_poll',94)
SYS_ppoll = Constant('SYS_ppoll',464)
SYS_prctl = Constant('SYS_prctl',348)
SYS_pread = Constant('SYS_pread',349)
SYS_preadv = Constant('SYS_preadv',490)
SYS_preadv2 = Constant('SYS_preadv2',520)
SYS_prlimit64 = Constant('SYS_prlimit64',496)
SYS_process_vm_readv = Constant('SYS_process_vm_readv',504)
SYS_process_vm_writev = Constant('SYS_process_vm_writev',505)
SYS_pselect6 = Constant('SYS_pselect6',463)
SYS_ptrace = Constant('SYS_ptrace',26)
SYS_pwrite = Constant('SYS_pwrite',350)
SYS_pwritev = Constant('SYS_pwritev',491)
SYS_pwritev2 = Constant('SYS_pwritev2',521)
SYS_query_module = Constant('SYS_query_module',347)
SYS_quotactl = Constant('SYS_quotactl',148)
SYS_read = Constant('SYS_read',3)
@@ -1272,14 +1589,17 @@ SYS_readv = Constant('SYS_readv',120)
SYS_reboot = Constant('SYS_reboot',311)
SYS_recv = Constant('SYS_recv',102)
SYS_recvfrom = Constant('SYS_recvfrom',125)
SYS_recvmmsg = Constant('SYS_recvmmsg',479)
SYS_recvmsg = Constant('SYS_recvmsg',113)
SYS_remap_file_pages = Constant('SYS_remap_file_pages',410)
SYS_removexattr = Constant('SYS_removexattr',391)
SYS_rename = Constant('SYS_rename',128)
SYS_renameat = Constant('SYS_renameat',457)
SYS_renameat2 = Constant('SYS_renameat2',510)
SYS_request_key = Constant('SYS_request_key',440)
SYS_restart_syscall = Constant('SYS_restart_syscall',412)
SYS_rmdir = Constant('SYS_rmdir',137)
SYS_rseq = Constant('SYS_rseq',527)
SYS_rt_sigaction = Constant('SYS_rt_sigaction',352)
SYS_rt_sigpending = Constant('SYS_rt_sigpending',354)
SYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',353)
@@ -1287,16 +1607,20 @@ SYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',356)
SYS_rt_sigreturn = Constant('SYS_rt_sigreturn',351)
SYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',357)
SYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',355)
SYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',492)
SYS_sched_getaffinity = Constant('SYS_sched_getaffinity',396)
SYS_sched_getattr = Constant('SYS_sched_getattr',509)
SYS_sched_getparam = Constant('SYS_sched_getparam',331)
SYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',335)
SYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',336)
SYS_sched_getscheduler = Constant('SYS_sched_getscheduler',333)
SYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',337)
SYS_sched_setaffinity = Constant('SYS_sched_setaffinity',395)
SYS_sched_setattr = Constant('SYS_sched_setattr',508)
SYS_sched_setparam = Constant('SYS_sched_setparam',330)
SYS_sched_setscheduler = Constant('SYS_sched_setscheduler',332)
SYS_sched_yield = Constant('SYS_sched_yield',334)
SYS_seccomp = Constant('SYS_seccomp',514)
SYS_select = Constant('SYS_select',358)
SYS_semctl = Constant('SYS_semctl',204)
SYS_semget = Constant('SYS_semget',205)
@@ -1304,6 +1628,7 @@ SYS_semop = Constant('SYS_semop',206)
SYS_semtimedop = Constant('SYS_semtimedop',423)
SYS_send = Constant('SYS_send',101)
SYS_sendfile = Constant('SYS_sendfile',370)
SYS_sendmmsg = Constant('SYS_sendmmsg',503)
SYS_sendmsg = Constant('SYS_sendmsg',114)
SYS_sendto = Constant('SYS_sendto',133)
SYS_setdomainname = Constant('SYS_setdomainname',166)
@@ -1315,6 +1640,7 @@ SYS_sethae = Constant('SYS_sethae',301)
SYS_sethostname = Constant('SYS_sethostname',88)
SYS_setitimer = Constant('SYS_setitimer',362)
SYS_set_mempolicy = Constant('SYS_set_mempolicy',431)
SYS_setns = Constant('SYS_setns',501)
SYS_setpgid = Constant('SYS_setpgid',39)
SYS_setpgrp = Constant('SYS_setpgrp',82)
SYS_setpriority = Constant('SYS_setpriority',96)
@@ -1337,6 +1663,7 @@ SYS_shutdown = Constant('SYS_shutdown',134)
SYS_sigaction = Constant('SYS_sigaction',156)
SYS_sigaltstack = Constant('SYS_sigaltstack',235)
SYS_signalfd = Constant('SYS_signalfd',476)
SYS_signalfd4 = Constant('SYS_signalfd4',484)
SYS_sigpending = Constant('SYS_sigpending',52)
SYS_sigreturn = Constant('SYS_sigreturn',103)
SYS_sigsuspend = Constant('SYS_sigsuspend',111)
@@ -1346,12 +1673,15 @@ SYS_splice = Constant('SYS_splice',468)
SYS_stat = Constant('SYS_stat',67)
SYS_stat64 = Constant('SYS_stat64',425)
SYS_statfs = Constant('SYS_statfs',328)
SYS_statfs64 = Constant('SYS_statfs64',528)
SYS_statx = Constant('SYS_statx',522)
SYS_swapoff = Constant('SYS_swapoff',304)
SYS_swapon = Constant('SYS_swapon',322)
SYS_symlink = Constant('SYS_symlink',57)
SYS_symlinkat = Constant('SYS_symlinkat',459)
SYS_sync = Constant('SYS_sync',36)
SYS_sync_file_range = Constant('SYS_sync_file_range',469)
SYS_syncfs = Constant('SYS_syncfs',500)
SYS__sysctl = Constant('SYS__sysctl',319)
SYS_sys_epoll_create = Constant('SYS_sys_epoll_create',407)
SYS_sys_epoll_ctl = Constant('SYS_sys_epoll_ctl',408)
@@ -1364,6 +1694,9 @@ SYS_tgkill = Constant('SYS_tgkill',424)
SYS_timer_create = Constant('SYS_timer_create',414)
SYS_timer_delete = Constant('SYS_timer_delete',418)
SYS_timerfd = Constant('SYS_timerfd',477)
SYS_timerfd_create = Constant('SYS_timerfd_create',481)
SYS_timerfd_gettime = Constant('SYS_timerfd_gettime',483)
SYS_timerfd_settime = Constant('SYS_timerfd_settime',482)
SYS_timer_getoverrun = Constant('SYS_timer_getoverrun',417)
SYS_timer_gettime = Constant('SYS_timer_gettime',416)
SYS_timer_settime = Constant('SYS_timer_settime',415)
@@ -1373,11 +1706,14 @@ SYS_truncate = Constant('SYS_truncate',129)
SYS_tuxcall = Constant('SYS_tuxcall',397)
SYS_umask = Constant('SYS_umask',60)
SYS_umount = Constant('SYS_umount',22)
SYS_umount_with_flags = Constant('SYS_umount_with_flags',22)
SYS_umount_without_flags = Constant('SYS_umount_without_flags',321)
SYS_uname = Constant('SYS_uname',339)
SYS_unlink = Constant('SYS_unlink',10)
SYS_unlinkat = Constant('SYS_unlinkat',456)
SYS_unshare = Constant('SYS_unshare',465)
SYS_uselib = Constant('SYS_uselib',313)
SYS_userfaultfd = Constant('SYS_userfaultfd',516)
SYS_ustat = Constant('SYS_ustat',327)
SYS_utimensat = Constant('SYS_utimensat',475)
SYS_utimes = Constant('SYS_utimes',363)
+379 -88
View File
@@ -1,5 +1,4 @@
from pwnlib.constants.constant import Constant
__NR_read = Constant('__NR_read',0)
__NR_write = Constant('__NR_write',1)
__NR_open = Constant('__NR_open',2)
@@ -304,6 +303,52 @@ __NR_recvmmsg = Constant('__NR_recvmmsg',299)
__NR_fanotify_init = Constant('__NR_fanotify_init',300)
__NR_fanotify_mark = Constant('__NR_fanotify_mark',301)
__NR_prlimit64 = Constant('__NR_prlimit64',302)
__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',303)
__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',304)
__NR_clock_adjtime = Constant('__NR_clock_adjtime',305)
__NR_syncfs = Constant('__NR_syncfs',306)
__NR_sendmmsg = Constant('__NR_sendmmsg',307)
__NR_setns = Constant('__NR_setns',308)
__NR_getcpu = Constant('__NR_getcpu',309)
__NR_process_vm_readv = Constant('__NR_process_vm_readv',310)
__NR_process_vm_writev = Constant('__NR_process_vm_writev',311)
__NR_kcmp = Constant('__NR_kcmp',312)
__NR_finit_module = Constant('__NR_finit_module',313)
__NR_sched_setattr = Constant('__NR_sched_setattr',314)
__NR_sched_getattr = Constant('__NR_sched_getattr',315)
__NR_renameat2 = Constant('__NR_renameat2',316)
__NR_seccomp = Constant('__NR_seccomp',317)
__NR_getrandom = Constant('__NR_getrandom',318)
__NR_memfd_create = Constant('__NR_memfd_create',319)
__NR_kexec_file_load = Constant('__NR_kexec_file_load',320)
__NR_bpf = Constant('__NR_bpf',321)
__NR_execveat = Constant('__NR_execveat',322)
__NR_userfaultfd = Constant('__NR_userfaultfd',323)
__NR_membarrier = Constant('__NR_membarrier',324)
__NR_mlock2 = Constant('__NR_mlock2',325)
__NR_copy_file_range = Constant('__NR_copy_file_range',326)
__NR_preadv2 = Constant('__NR_preadv2',327)
__NR_pwritev2 = Constant('__NR_pwritev2',328)
__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',329)
__NR_pkey_alloc = Constant('__NR_pkey_alloc',330)
__NR_pkey_free = Constant('__NR_pkey_free',331)
__NR_statx = Constant('__NR_statx',332)
__NR_io_pgetevents = Constant('__NR_io_pgetevents',333)
__NR_rseq = Constant('__NR_rseq',334)
__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)
__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)
__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)
__NR_io_uring_register = Constant('__NR_io_uring_register',427)
__NR_open_tree = Constant('__NR_open_tree',428)
__NR_move_mount = Constant('__NR_move_mount',429)
__NR_fsopen = Constant('__NR_fsopen',430)
__NR_fsconfig = Constant('__NR_fsconfig',431)
__NR_fsmount = Constant('__NR_fsmount',432)
__NR_fspick = Constant('__NR_fspick',433)
__NR_pidfd_open = Constant('__NR_pidfd_open',434)
__NR_clone3 = Constant('__NR_clone3',435)
__NR_openat2 = Constant('__NR_openat2',437)
__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',438)
SYS32_restart_syscall = Constant('SYS32_restart_syscall',0)
SYS32_exit = Constant('SYS32_exit',1)
SYS32_fork = Constant('SYS32_fork',2)
@@ -785,7 +830,11 @@ ENOKEY = Constant('ENOKEY',126)
EKEYEXPIRED = Constant('EKEYEXPIRED',127)
EKEYREVOKED = Constant('EKEYREVOKED',128)
EKEYREJECTED = Constant('EKEYREJECTED',129)
__SYS_NERR = Constant('__SYS_NERR',((129) + 1))
EOWNERDEAD = Constant('EOWNERDEAD',130)
ENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)
ERFKILL = Constant('ERFKILL',132)
EHWPOISON = Constant('EHWPOISON',133)
__SYS_NERR = Constant('__SYS_NERR',((133) + 1))
__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)
__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)
__BYTE_ORDER = Constant('__BYTE_ORDER',1234)
@@ -795,9 +844,56 @@ BIG_ENDIAN = Constant('BIG_ENDIAN',4321)
BYTE_ORDER = Constant('BYTE_ORDER',1234)
__WORDSIZE = Constant('__WORDSIZE',64)
__WORDSIZE_COMPAT32 = Constant('__WORDSIZE_COMPAT32',1)
__UNALIGNED_MEMORY_ACCESS_OK = Constant('__UNALIGNED_MEMORY_ACCESS_OK',1)
INT8_MAX = Constant('INT8_MAX',(127))
INT16_MAX = Constant('INT16_MAX',(32767))
INT32_MAX = Constant('INT32_MAX',(2147483647))
INT64_MAX = Constant('INT64_MAX',(9223372036854775807))
INT8_MIN = Constant('INT8_MIN',(-1 - (127)))
INT16_MIN = Constant('INT16_MIN',(-1 - (32767)))
INT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))
INT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))
INT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))
INT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))
INT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))
INT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))
INT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))
INT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))
INT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))
INT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))
UINT8_MAX = Constant('UINT8_MAX',0xff)
UINT16_MAX = Constant('UINT16_MAX',0xffff)
UINT32_MAX = Constant('UINT32_MAX',0xffffffff)
UINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)
UINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)
UINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)
UINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)
UINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)
INTPTR_MIN = Constant('INTPTR_MIN',(-1 - (9223372036854775807)))
INTPTR_MAX = Constant('INTPTR_MAX',(9223372036854775807))
UINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffffffffffff)
SIZE_MAX = Constant('SIZE_MAX',0xffffffffffffffff)
PTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (9223372036854775807)))
PTRDIFF_MAX = Constant('PTRDIFF_MAX',(9223372036854775807))
INTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))
INTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))
UINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)
INT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))
INT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))
INT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))
INT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))
UINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)
UINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)
INT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (9223372036854775807)))
INT_FAST16_MAX = Constant('INT_FAST16_MAX',(9223372036854775807))
UINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffffffffffff)
INT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (9223372036854775807)))
INT_FAST32_MAX = Constant('INT_FAST32_MAX',(9223372036854775807))
UINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffffffffffff)
WINT_MIN = Constant('WINT_MIN',0)
__FSUID_H = Constant('__FSUID_H',1)
NSIG = Constant('NSIG',32)
_NSIG = Constant('_NSIG',64)
_NSIG = Constant('_NSIG',65)
SIGHUP = Constant('SIGHUP',1)
SIGINT = Constant('SIGINT',2)
SIGQUIT = Constant('SIGQUIT',3)
@@ -835,7 +931,7 @@ SIGCLD = Constant('SIGCLD',17)
SIGPOLL = Constant('SIGPOLL',29)
SIGLOST = Constant('SIGLOST',30)
SIGRTMIN = Constant('SIGRTMIN',32)
SIGRTMAX = Constant('SIGRTMAX',(64-1))
SIGRTMAX = Constant('SIGRTMAX',(65-1))
SA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)
SA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)
SA_SIGINFO = Constant('SA_SIGINFO',0x00000004)
@@ -884,6 +980,8 @@ _SC_PAGESIZE = Constant('_SC_PAGESIZE',5)
_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)
_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)
_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)
_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)
_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)
_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)
_PC_VDISABLE = Constant('_PC_VDISABLE',2)
L_cuserid = Constant('L_cuserid',17)
@@ -892,6 +990,7 @@ F_ULOCK = Constant('F_ULOCK',0)
F_LOCK = Constant('F_LOCK',1)
F_TLOCK = Constant('F_TLOCK',2)
F_TEST = Constant('F_TEST',3)
_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)
S_IFMT = Constant('S_IFMT',0o0170000)
S_IFSOCK = Constant('S_IFSOCK',0o140000)
S_IFLNK = Constant('S_IFLNK',0o120000)
@@ -918,84 +1017,7 @@ S_IXOTH = Constant('S_IXOTH',0o0001)
S_IREAD = Constant('S_IREAD',0o0400)
S_IWRITE = Constant('S_IWRITE',0o0200)
S_IEXEC = Constant('S_IEXEC',0o0100)
F_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)
O_ACCMODE = Constant('O_ACCMODE',0o003)
O_RDONLY = Constant('O_RDONLY',0o0)
O_WRONLY = Constant('O_WRONLY',0o1)
O_RDWR = Constant('O_RDWR',0o2)
O_CREAT = Constant('O_CREAT',0o100)
O_EXCL = Constant('O_EXCL',0o200)
O_NOCTTY = Constant('O_NOCTTY',0o400)
O_TRUNC = Constant('O_TRUNC',0o1000)
O_APPEND = Constant('O_APPEND',0o2000)
O_NONBLOCK = Constant('O_NONBLOCK',0o4000)
O_NDELAY = Constant('O_NDELAY',0o4000)
O_SYNC = Constant('O_SYNC',0o10000)
FASYNC = Constant('FASYNC',0o20000)
O_DIRECT = Constant('O_DIRECT',0o40000)
O_LARGEFILE = Constant('O_LARGEFILE',0o100000)
O_DIRECTORY = Constant('O_DIRECTORY',0o200000)
O_NOFOLLOW = Constant('O_NOFOLLOW',0o400000)
O_NOATIME = Constant('O_NOATIME',0o1000000)
F_DUPFD = Constant('F_DUPFD',0)
F_GETFD = Constant('F_GETFD',1)
F_SETFD = Constant('F_SETFD',2)
F_GETFL = Constant('F_GETFL',3)
F_SETFL = Constant('F_SETFL',4)
F_GETLK = Constant('F_GETLK',5)
F_SETLK = Constant('F_SETLK',6)
F_SETLKW = Constant('F_SETLKW',7)
F_SETOWN = Constant('F_SETOWN',8)
F_GETOWN = Constant('F_GETOWN',9)
F_SETSIG = Constant('F_SETSIG',10)
F_GETSIG = Constant('F_GETSIG',11)
F_GETLK64 = Constant('F_GETLK64',12)
F_SETLK64 = Constant('F_SETLK64',13)
F_SETLKW64 = Constant('F_SETLKW64',14)
FD_CLOEXEC = Constant('FD_CLOEXEC',1)
F_RDLCK = Constant('F_RDLCK',0)
F_WRLCK = Constant('F_WRLCK',1)
F_UNLCK = Constant('F_UNLCK',2)
F_EXLCK = Constant('F_EXLCK',4)
F_SHLCK = Constant('F_SHLCK',8)
F_INPROGRESS = Constant('F_INPROGRESS',16)
LOCK_SH = Constant('LOCK_SH',1)
LOCK_EX = Constant('LOCK_EX',2)
LOCK_NB = Constant('LOCK_NB',4)
LOCK_UN = Constant('LOCK_UN',8)
LOCK_MAND = Constant('LOCK_MAND',32)
LOCK_READ = Constant('LOCK_READ',64)
LOCK_WRITE = Constant('LOCK_WRITE',128)
LOCK_RW = Constant('LOCK_RW',192)
O_ASYNC = Constant('O_ASYNC',0o20000)
MREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)
MREMAP_FIXED = Constant('MREMAP_FIXED',2)
PROT_READ = Constant('PROT_READ',0x1)
PROT_WRITE = Constant('PROT_WRITE',0x2)
PROT_EXEC = Constant('PROT_EXEC',0x4)
PROT_NONE = Constant('PROT_NONE',0x0)
MAP_SHARED = Constant('MAP_SHARED',0x01)
MAP_PRIVATE = Constant('MAP_PRIVATE',0x02)
MAP_FIXED = Constant('MAP_FIXED',0x10)
MAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)
MAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)
MAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)
MAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)
MAP_LOCKED = Constant('MAP_LOCKED',0x2000)
MAP_NORESERVE = Constant('MAP_NORESERVE',0x4000)
MAP_POPULATE = Constant('MAP_POPULATE',0x8000)
MS_ASYNC = Constant('MS_ASYNC',1)
MS_INVALIDATE = Constant('MS_INVALIDATE',2)
MS_SYNC = Constant('MS_SYNC',4)
MCL_CURRENT = Constant('MCL_CURRENT',1)
MCL_FUTURE = Constant('MCL_FUTURE',2)
MADV_NORMAL = Constant('MADV_NORMAL',0x0)
MADV_RANDOM = Constant('MADV_RANDOM',0x1)
MADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)
MADV_WILLNEED = Constant('MADV_WILLNEED',0x3)
MADV_DONTNEED = Constant('MADV_DONTNEED',0x4)
MAP_ANON = Constant('MAP_ANON',0x20)
MAP_FILE = Constant('MAP_FILE',0)
_SYS_UIO = Constant('_SYS_UIO',1)
SOL_SOCKET = Constant('SOL_SOCKET',1)
SO_DEBUG = Constant('SO_DEBUG',1)
SO_REUSEADDR = Constant('SO_REUSEADDR',2)
@@ -1011,29 +1033,64 @@ SO_NO_CHECK = Constant('SO_NO_CHECK',11)
SO_PRIORITY = Constant('SO_PRIORITY',12)
SO_LINGER = Constant('SO_LINGER',13)
SO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)
SO_REUSEPORT = Constant('SO_REUSEPORT',15)
SO_PASSCRED = Constant('SO_PASSCRED',16)
SO_PEERCRED = Constant('SO_PEERCRED',17)
SO_RCVLOWAT = Constant('SO_RCVLOWAT',18)
SO_SNDLOWAT = Constant('SO_SNDLOWAT',19)
SO_RCVTIMEO = Constant('SO_RCVTIMEO',20)
SO_SNDTIMEO = Constant('SO_SNDTIMEO',21)
SO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)
SO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)
SO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)
SO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)
SO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)
SO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)
SO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)
SO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)
SO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)
SO_GET_FILTER = Constant('SO_GET_FILTER',26)
SO_PEERNAME = Constant('SO_PEERNAME',28)
SO_TIMESTAMP = Constant('SO_TIMESTAMP',29)
SCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)
SO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)
SO_PEERSEC = Constant('SO_PEERSEC',31)
SO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)
SO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)
SO_PASSSEC = Constant('SO_PASSSEC',34)
SO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)
SCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)
SO_MARK = Constant('SO_MARK',36)
SO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)
SCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)
SO_PROTOCOL = Constant('SO_PROTOCOL',38)
SO_DOMAIN = Constant('SO_DOMAIN',39)
SO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)
SO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)
SCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)
SO_PEEK_OFF = Constant('SO_PEEK_OFF',42)
SO_NOFCS = Constant('SO_NOFCS',43)
SO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)
SO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)
SO_BUSY_POLL = Constant('SO_BUSY_POLL',46)
SO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)
SO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)
SO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)
SO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)
SO_DETACH_BPF = Constant('SO_DETACH_BPF',27)
SO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)
SO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)
SO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)
SCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)
SO_MEMINFO = Constant('SO_MEMINFO',55)
SO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)
SO_COOKIE = Constant('SO_COOKIE',57)
SCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)
SO_PEERGROUPS = Constant('SO_PEERGROUPS',59)
SO_ZEROCOPY = Constant('SO_ZEROCOPY',60)
SOCK_STREAM = Constant('SOCK_STREAM',1)
SOCK_DGRAM = Constant('SOCK_DGRAM',2)
SOCK_RAW = Constant('SOCK_RAW',3)
SOCK_RDM = Constant('SOCK_RDM',4)
SOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)
SOCK_DCCP = Constant('SOCK_DCCP',6)
SOCK_PACKET = Constant('SOCK_PACKET',10)
UIO_FASTIOV = Constant('UIO_FASTIOV',8)
UIO_MAXIOV = Constant('UIO_MAXIOV',1024)
@@ -1067,7 +1124,25 @@ AF_SNA = Constant('AF_SNA',22)
AF_IRDA = Constant('AF_IRDA',23)
AF_PPPOX = Constant('AF_PPPOX',24)
AF_WANPIPE = Constant('AF_WANPIPE',25)
AF_MAX = Constant('AF_MAX',32)
AF_LLC = Constant('AF_LLC',26)
AF_IB = Constant('AF_IB',27)
AF_MPLS = Constant('AF_MPLS',28)
AF_CAN = Constant('AF_CAN',29)
AF_TIPC = Constant('AF_TIPC',30)
AF_BLUETOOTH = Constant('AF_BLUETOOTH',31)
AF_IUCV = Constant('AF_IUCV',32)
AF_RXRPC = Constant('AF_RXRPC',33)
AF_ISDN = Constant('AF_ISDN',34)
AF_PHONET = Constant('AF_PHONET',35)
AF_IEEE802154 = Constant('AF_IEEE802154',36)
AF_CAIF = Constant('AF_CAIF',37)
AF_ALG = Constant('AF_ALG',38)
AF_NFC = Constant('AF_NFC',39)
AF_VSOCK = Constant('AF_VSOCK',40)
AF_KCM = Constant('AF_KCM',41)
AF_QIPCRTR = Constant('AF_QIPCRTR',42)
AF_SMC = Constant('AF_SMC',43)
AF_MAX = Constant('AF_MAX',44)
PF_UNSPEC = Constant('PF_UNSPEC',0)
PF_UNIX = Constant('PF_UNIX',1)
PF_LOCAL = Constant('PF_LOCAL',1)
@@ -1095,7 +1170,25 @@ PF_SNA = Constant('PF_SNA',22)
PF_IRDA = Constant('PF_IRDA',23)
PF_PPPOX = Constant('PF_PPPOX',24)
PF_WANPIPE = Constant('PF_WANPIPE',25)
PF_MAX = Constant('PF_MAX',32)
PF_LLC = Constant('PF_LLC',26)
PF_IB = Constant('PF_IB',27)
PF_MPLS = Constant('PF_MPLS',28)
PF_CAN = Constant('PF_CAN',29)
PF_TIPC = Constant('PF_TIPC',30)
PF_BLUETOOTH = Constant('PF_BLUETOOTH',31)
PF_IUCV = Constant('PF_IUCV',32)
PF_RXRPC = Constant('PF_RXRPC',33)
PF_ISDN = Constant('PF_ISDN',34)
PF_PHONET = Constant('PF_PHONET',35)
PF_IEEE802154 = Constant('PF_IEEE802154',36)
PF_CAIF = Constant('PF_CAIF',37)
PF_ALG = Constant('PF_ALG',38)
PF_NFC = Constant('PF_NFC',39)
PF_VSOCK = Constant('PF_VSOCK',40)
PF_KCM = Constant('PF_KCM',41)
PF_QIPCRTR = Constant('PF_QIPCRTR',42)
PF_SMC = Constant('PF_SMC',43)
PF_MAX = Constant('PF_MAX',44)
SOMAXCONN = Constant('SOMAXCONN',128)
MSG_OOB = Constant('MSG_OOB',1)
MSG_PEEK = Constant('MSG_PEEK',2)
@@ -1108,18 +1201,26 @@ MSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)
MSG_EOR = Constant('MSG_EOR',0x80)
MSG_WAITALL = Constant('MSG_WAITALL',0x100)
MSG_FIN = Constant('MSG_FIN',0x200)
MSG_EOF = Constant('MSG_EOF',0x200)
MSG_SYN = Constant('MSG_SYN',0x400)
MSG_CONFIRM = Constant('MSG_CONFIRM',0x800)
MSG_RST = Constant('MSG_RST',0x1000)
MSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)
MSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)
MSG_MORE = Constant('MSG_MORE',0x8000)
MSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)
MSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)
MSG_BATCH = Constant('MSG_BATCH',0x40000)
MSG_EOF = Constant('MSG_EOF',0x200)
MSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)
MSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)
MSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)
SOL_IP = Constant('SOL_IP',0)
SOL_TCP = Constant('SOL_TCP',6)
SOL_UDP = Constant('SOL_UDP',17)
SOL_IPV6 = Constant('SOL_IPV6',41)
SOL_ICMPV6 = Constant('SOL_ICMPV6',58)
SOL_SCTP = Constant('SOL_SCTP',132)
SOL_UDPLITE = Constant('SOL_UDPLITE',136)
SOL_RAW = Constant('SOL_RAW',255)
SOL_IPX = Constant('SOL_IPX',256)
SOL_AX25 = Constant('SOL_AX25',257)
@@ -1132,6 +1233,22 @@ SOL_PACKET = Constant('SOL_PACKET',263)
SOL_ATM = Constant('SOL_ATM',264)
SOL_AAL = Constant('SOL_AAL',265)
SOL_IRDA = Constant('SOL_IRDA',266)
SOL_NETBEUI = Constant('SOL_NETBEUI',267)
SOL_LLC = Constant('SOL_LLC',268)
SOL_DCCP = Constant('SOL_DCCP',269)
SOL_NETLINK = Constant('SOL_NETLINK',270)
SOL_TIPC = Constant('SOL_TIPC',271)
SOL_RXRPC = Constant('SOL_RXRPC',272)
SOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)
SOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)
SOL_PNPIPE = Constant('SOL_PNPIPE',275)
SOL_RDS = Constant('SOL_RDS',276)
SOL_IUCV = Constant('SOL_IUCV',277)
SOL_CAIF = Constant('SOL_CAIF',278)
SOL_ALG = Constant('SOL_ALG',279)
SOL_NFC = Constant('SOL_NFC',280)
SOL_KCM = Constant('SOL_KCM',281)
SOL_TLS = Constant('SOL_TLS',282)
IPX_TYPE = Constant('IPX_TYPE',1)
SHUT_RD = Constant('SHUT_RD',0)
SHUT_WR = Constant('SHUT_WR',1)
@@ -1155,6 +1272,10 @@ EAI_SYSTEM = Constant('EAI_SYSTEM',-11)
AI_NUMERICHOST = Constant('AI_NUMERICHOST',1)
AI_CANONNAME = Constant('AI_CANONNAME',2)
AI_PASSIVE = Constant('AI_PASSIVE',4)
AI_NUMERICSERV = Constant('AI_NUMERICSERV',8)
AI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)
AI_V4MAPPED = Constant('AI_V4MAPPED',32)
AI_ALL = Constant('AI_ALL',64)
SIOCADDRT = Constant('SIOCADDRT',0x890B)
SIOCDELRT = Constant('SIOCDELRT',0x890C)
SIOCRTMSG = Constant('SIOCRTMSG',0x890D)
@@ -1211,6 +1332,130 @@ SIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)
SIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)
SIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)
SIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)
F_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)
O_ACCMODE = Constant('O_ACCMODE',0o003)
O_RDONLY = Constant('O_RDONLY',0o0)
O_WRONLY = Constant('O_WRONLY',0o1)
O_RDWR = Constant('O_RDWR',0o2)
O_CREAT = Constant('O_CREAT',0o100)
O_EXCL = Constant('O_EXCL',0o200)
O_NOCTTY = Constant('O_NOCTTY',0o400)
O_TRUNC = Constant('O_TRUNC',0o1000)
O_APPEND = Constant('O_APPEND',0o2000)
O_NONBLOCK = Constant('O_NONBLOCK',0o4000)
O_NDELAY = Constant('O_NDELAY',0o4000)
O_DSYNC = Constant('O_DSYNC',0o10000)
FASYNC = Constant('FASYNC',0o20000)
O_DIRECT = Constant('O_DIRECT',0o40000)
O_LARGEFILE = Constant('O_LARGEFILE',0o100000)
O_DIRECTORY = Constant('O_DIRECTORY',0o200000)
O_NOFOLLOW = Constant('O_NOFOLLOW',0o400000)
O_NOATIME = Constant('O_NOATIME',0o1000000)
O_CLOEXEC = Constant('O_CLOEXEC',0o2000000)
O_SYNC = Constant('O_SYNC',(0o10000|0o4000000))
O_PATH = Constant('O_PATH',0o10000000)
__O_TMPFILE = Constant('__O_TMPFILE',0o20000000)
F_DUPFD = Constant('F_DUPFD',0)
F_GETFD = Constant('F_GETFD',1)
F_SETFD = Constant('F_SETFD',2)
F_GETFL = Constant('F_GETFL',3)
F_SETFL = Constant('F_SETFL',4)
F_GETLK = Constant('F_GETLK',5)
F_SETLK = Constant('F_SETLK',6)
F_SETLKW = Constant('F_SETLKW',7)
F_SETOWN = Constant('F_SETOWN',8)
F_GETOWN = Constant('F_GETOWN',9)
F_SETSIG = Constant('F_SETSIG',10)
F_GETSIG = Constant('F_GETSIG',11)
F_GETLK64 = Constant('F_GETLK64',12)
F_SETLK64 = Constant('F_SETLK64',13)
F_SETLKW64 = Constant('F_SETLKW64',14)
FD_CLOEXEC = Constant('FD_CLOEXEC',1)
F_RDLCK = Constant('F_RDLCK',0)
F_WRLCK = Constant('F_WRLCK',1)
F_UNLCK = Constant('F_UNLCK',2)
F_EXLCK = Constant('F_EXLCK',4)
F_SHLCK = Constant('F_SHLCK',8)
F_INPROGRESS = Constant('F_INPROGRESS',16)
LOCK_SH = Constant('LOCK_SH',1)
LOCK_EX = Constant('LOCK_EX',2)
LOCK_NB = Constant('LOCK_NB',4)
LOCK_UN = Constant('LOCK_UN',8)
LOCK_MAND = Constant('LOCK_MAND',32)
LOCK_READ = Constant('LOCK_READ',64)
LOCK_WRITE = Constant('LOCK_WRITE',128)
LOCK_RW = Constant('LOCK_RW',192)
O_TMPFILE = Constant('O_TMPFILE',(0o20000000 | 0o200000))
O_ASYNC = Constant('O_ASYNC',0o20000)
F_SETOWN_EX = Constant('F_SETOWN_EX',15)
F_GETOWN_EX = Constant('F_GETOWN_EX',16)
F_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)
F_OFD_GETLK = Constant('F_OFD_GETLK',36)
F_OFD_SETLK = Constant('F_OFD_SETLK',37)
F_OFD_SETLKW = Constant('F_OFD_SETLKW',38)
F_OWNER_TID = Constant('F_OWNER_TID',0)
F_OWNER_PID = Constant('F_OWNER_PID',1)
F_OWNER_PGRP = Constant('F_OWNER_PGRP',2)
AT_FDCWD = Constant('AT_FDCWD',-100)
AT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)
AT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)
AT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)
AT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)
AT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)
AT_EACCESS = Constant('AT_EACCESS',0x200)
MREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)
MREMAP_FIXED = Constant('MREMAP_FIXED',2)
PROT_READ = Constant('PROT_READ',0x1)
PROT_WRITE = Constant('PROT_WRITE',0x2)
PROT_EXEC = Constant('PROT_EXEC',0x4)
PROT_SEM = Constant('PROT_SEM',0x8)
PROT_NONE = Constant('PROT_NONE',0x0)
PROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)
PROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)
MAP_SHARED = Constant('MAP_SHARED',0x01)
MAP_PRIVATE = Constant('MAP_PRIVATE',0x02)
MAP_TYPE = Constant('MAP_TYPE',0xf)
MADV_REMOVE = Constant('MADV_REMOVE',9)
MADV_DONTFORK = Constant('MADV_DONTFORK',10)
MADV_DOFORK = Constant('MADV_DOFORK',11)
MADV_MERGEABLE = Constant('MADV_MERGEABLE',12)
MADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)
MADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)
MADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)
MADV_DONTDUMP = Constant('MADV_DONTDUMP',16)
MADV_DODUMP = Constant('MADV_DODUMP',17)
MADV_HWPOISON = Constant('MADV_HWPOISON',100)
MADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)
MLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)
MAP_FIXED = Constant('MAP_FIXED',0x10)
MAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)
MAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)
MAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)
MAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)
MAP_LOCKED = Constant('MAP_LOCKED',0x2000)
MAP_NORESERVE = Constant('MAP_NORESERVE',0x4000)
MAP_POPULATE = Constant('MAP_POPULATE',0x8000)
MAP_NONBLOCK = Constant('MAP_NONBLOCK',0x10000)
MAP_STACK = Constant('MAP_STACK',0x20000)
MAP_HUGETLB = Constant('MAP_HUGETLB',0x40000)
MS_ASYNC = Constant('MS_ASYNC',1)
MS_INVALIDATE = Constant('MS_INVALIDATE',2)
MS_SYNC = Constant('MS_SYNC',4)
MCL_CURRENT = Constant('MCL_CURRENT',1)
MCL_FUTURE = Constant('MCL_FUTURE',2)
MCL_ONFAULT = Constant('MCL_ONFAULT',4)
MADV_NORMAL = Constant('MADV_NORMAL',0x0)
MADV_RANDOM = Constant('MADV_RANDOM',0x1)
MADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)
MADV_WILLNEED = Constant('MADV_WILLNEED',0x3)
MADV_DONTNEED = Constant('MADV_DONTNEED',0x4)
MAP_ANON = Constant('MAP_ANON',0x20)
MAP_FILE = Constant('MAP_FILE',0)
POSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0x0)
POSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',0x2)
POSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',0x1)
POSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',0x3)
POSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',0x4)
PTRACE_TRACEME = Constant('PTRACE_TRACEME',0)
PTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)
PTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)
@@ -1265,6 +1510,7 @@ SYS_afs_syscall = Constant('SYS_afs_syscall',183)
SYS_alarm = Constant('SYS_alarm',37)
SYS_arch_prctl = Constant('SYS_arch_prctl',158)
SYS_bind = Constant('SYS_bind',49)
SYS_bpf = Constant('SYS_bpf',321)
SYS_brk = Constant('SYS_brk',12)
SYS_capget = Constant('SYS_capget',125)
SYS_capset = Constant('SYS_capset',126)
@@ -1272,13 +1518,16 @@ SYS_chdir = Constant('SYS_chdir',80)
SYS_chmod = Constant('SYS_chmod',90)
SYS_chown = Constant('SYS_chown',92)
SYS_chroot = Constant('SYS_chroot',161)
SYS_clock_adjtime = Constant('SYS_clock_adjtime',305)
SYS_clock_getres = Constant('SYS_clock_getres',229)
SYS_clock_gettime = Constant('SYS_clock_gettime',228)
SYS_clock_nanosleep = Constant('SYS_clock_nanosleep',230)
SYS_clock_settime = Constant('SYS_clock_settime',227)
SYS_clone = Constant('SYS_clone',56)
SYS_clone3 = Constant('SYS_clone3',435)
SYS_close = Constant('SYS_close',3)
SYS_connect = Constant('SYS_connect',42)
SYS_copy_file_range = Constant('SYS_copy_file_range',326)
SYS_creat = Constant('SYS_creat',85)
SYS_create_module = Constant('SYS_create_module',174)
SYS_delete_module = Constant('SYS_delete_module',176)
@@ -1295,6 +1544,7 @@ SYS_epoll_wait_old = Constant('SYS_epoll_wait_old',215)
SYS_eventfd = Constant('SYS_eventfd',284)
SYS_eventfd2 = Constant('SYS_eventfd2',290)
SYS_execve = Constant('SYS_execve',59)
SYS_execveat = Constant('SYS_execveat',322)
SYS_exit = Constant('SYS_exit',60)
SYS_exit_group = Constant('SYS_exit_group',231)
SYS_faccessat = Constant('SYS_faccessat',269)
@@ -1310,17 +1560,23 @@ SYS_fchownat = Constant('SYS_fchownat',260)
SYS_fcntl = Constant('SYS_fcntl',72)
SYS_fdatasync = Constant('SYS_fdatasync',75)
SYS_fgetxattr = Constant('SYS_fgetxattr',193)
SYS_finit_module = Constant('SYS_finit_module',313)
SYS_flistxattr = Constant('SYS_flistxattr',196)
SYS_flock = Constant('SYS_flock',73)
SYS_fork = Constant('SYS_fork',57)
SYS_fremovexattr = Constant('SYS_fremovexattr',199)
SYS_fsconfig = Constant('SYS_fsconfig',431)
SYS_fsetxattr = Constant('SYS_fsetxattr',190)
SYS_fsmount = Constant('SYS_fsmount',432)
SYS_fsopen = Constant('SYS_fsopen',430)
SYS_fspick = Constant('SYS_fspick',433)
SYS_fstat = Constant('SYS_fstat',5)
SYS_fstatfs = Constant('SYS_fstatfs',138)
SYS_fsync = Constant('SYS_fsync',74)
SYS_ftruncate = Constant('SYS_ftruncate',77)
SYS_futex = Constant('SYS_futex',202)
SYS_futimesat = Constant('SYS_futimesat',261)
SYS_getcpu = Constant('SYS_getcpu',309)
SYS_getcwd = Constant('SYS_getcwd',79)
SYS_getdents = Constant('SYS_getdents',78)
SYS_getdents64 = Constant('SYS_getdents64',217)
@@ -1338,6 +1594,7 @@ SYS_getpid = Constant('SYS_getpid',39)
SYS_getpmsg = Constant('SYS_getpmsg',181)
SYS_getppid = Constant('SYS_getppid',110)
SYS_getpriority = Constant('SYS_getpriority',140)
SYS_getrandom = Constant('SYS_getrandom',318)
SYS_getresgid = Constant('SYS_getresgid',120)
SYS_getresuid = Constant('SYS_getresuid',118)
SYS_getrlimit = Constant('SYS_getrlimit',97)
@@ -1361,11 +1618,17 @@ SYS_ioctl = Constant('SYS_ioctl',16)
SYS_io_destroy = Constant('SYS_io_destroy',207)
SYS_io_getevents = Constant('SYS_io_getevents',208)
SYS_ioperm = Constant('SYS_ioperm',173)
SYS_io_pgetevents = Constant('SYS_io_pgetevents',333)
SYS_iopl = Constant('SYS_iopl',172)
SYS_ioprio_get = Constant('SYS_ioprio_get',252)
SYS_ioprio_set = Constant('SYS_ioprio_set',251)
SYS_io_setup = Constant('SYS_io_setup',206)
SYS_io_submit = Constant('SYS_io_submit',209)
SYS_io_uring_enter = Constant('SYS_io_uring_enter',426)
SYS_io_uring_register = Constant('SYS_io_uring_register',427)
SYS_io_uring_setup = Constant('SYS_io_uring_setup',425)
SYS_kcmp = Constant('SYS_kcmp',312)
SYS_kexec_file_load = Constant('SYS_kexec_file_load',320)
SYS_kexec_load = Constant('SYS_kexec_load',246)
SYS_keyctl = Constant('SYS_keyctl',250)
SYS_kill = Constant('SYS_kill',62)
@@ -1383,6 +1646,8 @@ SYS_lsetxattr = Constant('SYS_lsetxattr',189)
SYS_lstat = Constant('SYS_lstat',6)
SYS_madvise = Constant('SYS_madvise',28)
SYS_mbind = Constant('SYS_mbind',237)
SYS_membarrier = Constant('SYS_membarrier',324)
SYS_memfd_create = Constant('SYS_memfd_create',319)
SYS_migrate_pages = Constant('SYS_migrate_pages',256)
SYS_mincore = Constant('SYS_mincore',27)
SYS_mkdir = Constant('SYS_mkdir',83)
@@ -1390,10 +1655,12 @@ SYS_mkdirat = Constant('SYS_mkdirat',258)
SYS_mknod = Constant('SYS_mknod',133)
SYS_mknodat = Constant('SYS_mknodat',259)
SYS_mlock = Constant('SYS_mlock',149)
SYS_mlock2 = Constant('SYS_mlock2',325)
SYS_mlockall = Constant('SYS_mlockall',151)
SYS_mmap = Constant('SYS_mmap',9)
SYS_modify_ldt = Constant('SYS_modify_ldt',154)
SYS_mount = Constant('SYS_mount',165)
SYS_move_mount = Constant('SYS_move_mount',429)
SYS_move_pages = Constant('SYS_move_pages',279)
SYS_mprotect = Constant('SYS_mprotect',10)
SYS_mq_getsetattr = Constant('SYS_mq_getsetattr',245)
@@ -1411,28 +1678,42 @@ SYS_msync = Constant('SYS_msync',26)
SYS_munlock = Constant('SYS_munlock',150)
SYS_munlockall = Constant('SYS_munlockall',152)
SYS_munmap = Constant('SYS_munmap',11)
SYS_name_to_handle_at = Constant('SYS_name_to_handle_at',303)
SYS_nanosleep = Constant('SYS_nanosleep',35)
SYS_newfstatat = Constant('SYS_newfstatat',262)
SYS_nfsservctl = Constant('SYS_nfsservctl',180)
SYS_open = Constant('SYS_open',2)
SYS_openat = Constant('SYS_openat',257)
SYS_openat2 = Constant('SYS_openat2',437)
SYS_open_by_handle_at = Constant('SYS_open_by_handle_at',304)
SYS_open_tree = Constant('SYS_open_tree',428)
SYS_pause = Constant('SYS_pause',34)
SYS_perf_event_open = Constant('SYS_perf_event_open',298)
SYS_personality = Constant('SYS_personality',135)
SYS_pidfd_getfd = Constant('SYS_pidfd_getfd',438)
SYS_pidfd_open = Constant('SYS_pidfd_open',434)
SYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)
SYS_pipe = Constant('SYS_pipe',22)
SYS_pipe2 = Constant('SYS_pipe2',293)
SYS_pivot_root = Constant('SYS_pivot_root',155)
SYS_pkey_alloc = Constant('SYS_pkey_alloc',330)
SYS_pkey_free = Constant('SYS_pkey_free',331)
SYS_pkey_mprotect = Constant('SYS_pkey_mprotect',329)
SYS_poll = Constant('SYS_poll',7)
SYS_ppoll = Constant('SYS_ppoll',271)
SYS_prctl = Constant('SYS_prctl',157)
SYS_pread = Constant('SYS_pread',17)
SYS_preadv = Constant('SYS_preadv',295)
SYS_preadv2 = Constant('SYS_preadv2',327)
SYS_prlimit64 = Constant('SYS_prlimit64',302)
SYS_process_vm_readv = Constant('SYS_process_vm_readv',310)
SYS_process_vm_writev = Constant('SYS_process_vm_writev',311)
SYS_pselect6 = Constant('SYS_pselect6',270)
SYS_ptrace = Constant('SYS_ptrace',101)
SYS_putpmsg = Constant('SYS_putpmsg',182)
SYS_pwrite = Constant('SYS_pwrite',18)
SYS_pwritev = Constant('SYS_pwritev',296)
SYS_pwritev2 = Constant('SYS_pwritev2',328)
SYS_query_module = Constant('SYS_query_module',178)
SYS_quotactl = Constant('SYS_quotactl',179)
SYS_read = Constant('SYS_read',0)
@@ -1448,9 +1729,11 @@ SYS_remap_file_pages = Constant('SYS_remap_file_pages',216)
SYS_removexattr = Constant('SYS_removexattr',197)
SYS_rename = Constant('SYS_rename',82)
SYS_renameat = Constant('SYS_renameat',264)
SYS_renameat2 = Constant('SYS_renameat2',316)
SYS_request_key = Constant('SYS_request_key',249)
SYS_restart_syscall = Constant('SYS_restart_syscall',219)
SYS_rmdir = Constant('SYS_rmdir',84)
SYS_rseq = Constant('SYS_rseq',334)
SYS_rt_sigaction = Constant('SYS_rt_sigaction',13)
SYS_rt_sigpending = Constant('SYS_rt_sigpending',127)
SYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',14)
@@ -1460,15 +1743,18 @@ SYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',130)
SYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',128)
SYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',297)
SYS_sched_getaffinity = Constant('SYS_sched_getaffinity',204)
SYS_sched_getattr = Constant('SYS_sched_getattr',315)
SYS_sched_getparam = Constant('SYS_sched_getparam',143)
SYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',146)
SYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',147)
SYS_sched_getscheduler = Constant('SYS_sched_getscheduler',145)
SYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',148)
SYS_sched_setaffinity = Constant('SYS_sched_setaffinity',203)
SYS_sched_setattr = Constant('SYS_sched_setattr',314)
SYS_sched_setparam = Constant('SYS_sched_setparam',142)
SYS_sched_setscheduler = Constant('SYS_sched_setscheduler',144)
SYS_sched_yield = Constant('SYS_sched_yield',24)
SYS_seccomp = Constant('SYS_seccomp',317)
SYS_security = Constant('SYS_security',185)
SYS_select = Constant('SYS_select',23)
SYS_semctl = Constant('SYS_semctl',66)
@@ -1476,6 +1762,7 @@ SYS_semget = Constant('SYS_semget',64)
SYS_semop = Constant('SYS_semop',65)
SYS_semtimedop = Constant('SYS_semtimedop',220)
SYS_sendfile = Constant('SYS_sendfile',40)
SYS_sendmmsg = Constant('SYS_sendmmsg',307)
SYS_sendmsg = Constant('SYS_sendmsg',46)
SYS_sendto = Constant('SYS_sendto',44)
SYS_setdomainname = Constant('SYS_setdomainname',171)
@@ -1486,6 +1773,7 @@ SYS_setgroups = Constant('SYS_setgroups',116)
SYS_sethostname = Constant('SYS_sethostname',170)
SYS_setitimer = Constant('SYS_setitimer',38)
SYS_set_mempolicy = Constant('SYS_set_mempolicy',238)
SYS_setns = Constant('SYS_setns',308)
SYS_setpgid = Constant('SYS_setpgid',109)
SYS_setpriority = Constant('SYS_setpriority',141)
SYS_setregid = Constant('SYS_setregid',114)
@@ -1514,12 +1802,14 @@ SYS_socketpair = Constant('SYS_socketpair',53)
SYS_splice = Constant('SYS_splice',275)
SYS_stat = Constant('SYS_stat',4)
SYS_statfs = Constant('SYS_statfs',137)
SYS_statx = Constant('SYS_statx',332)
SYS_swapoff = Constant('SYS_swapoff',168)
SYS_swapon = Constant('SYS_swapon',167)
SYS_symlink = Constant('SYS_symlink',88)
SYS_symlinkat = Constant('SYS_symlinkat',266)
SYS_sync = Constant('SYS_sync',162)
SYS_sync_file_range = Constant('SYS_sync_file_range',277)
SYS_syncfs = Constant('SYS_syncfs',306)
SYS__sysctl = Constant('SYS__sysctl',156)
SYS_sysfs = Constant('SYS_sysfs',139)
SYS_sysinfo = Constant('SYS_sysinfo',99)
@@ -1546,6 +1836,7 @@ SYS_unlink = Constant('SYS_unlink',87)
SYS_unlinkat = Constant('SYS_unlinkat',263)
SYS_unshare = Constant('SYS_unshare',272)
SYS_uselib = Constant('SYS_uselib',134)
SYS_userfaultfd = Constant('SYS_userfaultfd',323)
SYS_ustat = Constant('SYS_ustat',136)
SYS_utime = Constant('SYS_utime',132)
SYS_utimensat = Constant('SYS_utimensat',280)
+475 -90
View File
@@ -1,5 +1,4 @@
from pwnlib.constants.constant import Constant
__ARM_EABI__ = Constant('__ARM_EABI__',1)
__KERNEL__ = Constant('__KERNEL__',1)
_ARM_SYSCALL_H = Constant('_ARM_SYSCALL_H',1)
@@ -324,6 +323,87 @@ __NR_eventfd = Constant('__NR_eventfd',(0+351))
__NR_fallocate = Constant('__NR_fallocate',(0+352))
__NR_timerfd_settime = Constant('__NR_timerfd_settime',(0+353))
__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',(0+354))
__NR_signalfd4 = Constant('__NR_signalfd4',(0+355))
__NR_eventfd2 = Constant('__NR_eventfd2',(0+356))
__NR_epoll_create1 = Constant('__NR_epoll_create1',(0+357))
__NR_dup3 = Constant('__NR_dup3',(0+358))
__NR_pipe2 = Constant('__NR_pipe2',(0+359))
__NR_inotify_init1 = Constant('__NR_inotify_init1',(0+360))
__NR_preadv = Constant('__NR_preadv',(0+361))
__NR_pwritev = Constant('__NR_pwritev',(0+362))
__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',(0+363))
__NR_perf_event_open = Constant('__NR_perf_event_open',(0+364))
__NR_recvmmsg = Constant('__NR_recvmmsg',(0+365))
__NR_accept4 = Constant('__NR_accept4',(0+366))
__NR_fanotify_init = Constant('__NR_fanotify_init',(0+367))
__NR_fanotify_mark = Constant('__NR_fanotify_mark',(0+368))
__NR_prlimit64 = Constant('__NR_prlimit64',(0+369))
__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',(0+370))
__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',(0+371))
__NR_clock_adjtime = Constant('__NR_clock_adjtime',(0+372))
__NR_syncfs = Constant('__NR_syncfs',(0+373))
__NR_sendmmsg = Constant('__NR_sendmmsg',(0+374))
__NR_setns = Constant('__NR_setns',(0+375))
__NR_process_vm_readv = Constant('__NR_process_vm_readv',(0+376))
__NR_process_vm_writev = Constant('__NR_process_vm_writev',(0+377))
__NR_kcmp = Constant('__NR_kcmp',(0+378))
__NR_finit_module = Constant('__NR_finit_module',(0+379))
__NR_sched_setattr = Constant('__NR_sched_setattr',(0+380))
__NR_sched_getattr = Constant('__NR_sched_getattr',(0+381))
__NR_renameat2 = Constant('__NR_renameat2',(0+382))
__NR_seccomp = Constant('__NR_seccomp',(0+383))
__NR_getrandom = Constant('__NR_getrandom',(0+384))
__NR_memfd_create = Constant('__NR_memfd_create',(0+385))
__NR_bpf = Constant('__NR_bpf',(0+386))
__NR_execveat = Constant('__NR_execveat',(0+387))
__NR_userfaultfd = Constant('__NR_userfaultfd',(0+388))
__NR_membarrier = Constant('__NR_membarrier',(0+389))
__NR_mlock2 = Constant('__NR_mlock2',(0+390))
__NR_copy_file_range = Constant('__NR_copy_file_range',(0+391))
__NR_preadv2 = Constant('__NR_preadv2',(0+392))
__NR_pwritev2 = Constant('__NR_pwritev2',(0+393))
__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',(0 + 394))
__NR_pkey_alloc = Constant('__NR_pkey_alloc',(0 + 395))
__NR_pkey_free = Constant('__NR_pkey_free',(0 + 396))
__NR_statx = Constant('__NR_statx',(0 + 397))
__NR_rseq = Constant('__NR_rseq',(0 + 398))
__NR_io_pgetevents = Constant('__NR_io_pgetevents',(0 + 399))
__NR_migrate_pages = Constant('__NR_migrate_pages',(0 + 400))
__NR_kexec_file_load = Constant('__NR_kexec_file_load',(0 + 401))
__NR_clock_gettime64 = Constant('__NR_clock_gettime64',(0 + 403))
__NR_clock_settime64 = Constant('__NR_clock_settime64',(0 + 404))
__NR_clock_adjtime64 = Constant('__NR_clock_adjtime64',(0 + 405))
__NR_clock_getres_time64 = Constant('__NR_clock_getres_time64',(0 + 406))
__NR_clock_nanosleep_time64 = Constant('__NR_clock_nanosleep_time64',(0 + 407))
__NR_timer_gettime64 = Constant('__NR_timer_gettime64',(0 + 408))
__NR_timer_settime64 = Constant('__NR_timer_settime64',(0 + 409))
__NR_timerfd_gettime64 = Constant('__NR_timerfd_gettime64',(0 + 410))
__NR_timerfd_settime64 = Constant('__NR_timerfd_settime64',(0 + 411))
__NR_utimensat_time64 = Constant('__NR_utimensat_time64',(0 + 412))
__NR_pselect6_time64 = Constant('__NR_pselect6_time64',(0 + 413))
__NR_ppoll_time64 = Constant('__NR_ppoll_time64',(0 + 414))
__NR_io_pgetevents_time64 = Constant('__NR_io_pgetevents_time64',(0 + 416))
__NR_recvmmsg_time64 = Constant('__NR_recvmmsg_time64',(0 + 417))
__NR_mq_timedsend_time64 = Constant('__NR_mq_timedsend_time64',(0 + 418))
__NR_mq_timedreceive_time64 = Constant('__NR_mq_timedreceive_time64',(0 + 419))
__NR_semtimedop_time64 = Constant('__NR_semtimedop_time64',(0 + 420))
__NR_rt_sigtimedwait_time64 = Constant('__NR_rt_sigtimedwait_time64',(0 + 421))
__NR_futex_time64 = Constant('__NR_futex_time64',(0 + 422))
__NR_sched_rr_get_interval_time64 = Constant('__NR_sched_rr_get_interval_time64',(0 + 423))
__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',(0 + 424))
__NR_io_uring_setup = Constant('__NR_io_uring_setup',(0 + 425))
__NR_io_uring_enter = Constant('__NR_io_uring_enter',(0 + 426))
__NR_io_uring_register = Constant('__NR_io_uring_register',(0 + 427))
__NR_open_tree = Constant('__NR_open_tree',(0 + 428))
__NR_move_mount = Constant('__NR_move_mount',(0 + 429))
__NR_fsopen = Constant('__NR_fsopen',(0 + 430))
__NR_fsconfig = Constant('__NR_fsconfig',(0 + 431))
__NR_fsmount = Constant('__NR_fsmount',(0 + 432))
__NR_fspick = Constant('__NR_fspick',(0 + 433))
__NR_pidfd_open = Constant('__NR_pidfd_open',(0 + 434))
__NR_clone3 = Constant('__NR_clone3',(0 + 435))
__NR_openat2 = Constant('__NR_openat2',(0 + 437))
__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',(0 + 438))
__ARM_NR_BASE = Constant('__ARM_NR_BASE',(0+0x0f0000))
__ARM_NR_breakpoint = Constant('__ARM_NR_breakpoint',((0+0x0f0000)+1))
__ARM_NR_cacheflush = Constant('__ARM_NR_cacheflush',((0+0x0f0000)+2))
@@ -614,9 +694,9 @@ __ARGS_getsockname = Constant('__ARGS_getsockname',0)
__ARGS_getpeername = Constant('__ARGS_getpeername',0)
__ARGS_socketpair = Constant('__ARGS_socketpair',0)
__ARGS_send = Constant('__ARGS_send',0)
__ARGS_sendto = Constant('__ARGS_sendto',0)
__ARGS_sendto = Constant('__ARGS_sendto',1)
__ARGS_recv = Constant('__ARGS_recv',0)
__ARGS_recvfrom = Constant('__ARGS_recvfrom',0)
__ARGS_recvfrom = Constant('__ARGS_recvfrom',1)
__ARGS_shutdown = Constant('__ARGS_shutdown',0)
__ARGS_setsockopt = Constant('__ARGS_setsockopt',0)
__ARGS_getsockopt = Constant('__ARGS_getsockopt',0)
@@ -676,6 +756,31 @@ __ARGS_eventfd = Constant('__ARGS_eventfd',0)
__ARGS_fallocate = Constant('__ARGS_fallocate',0)
__ARGS_timerfd_settime = Constant('__ARGS_timerfd_settime',0)
__ARGS_timerfd_gettime = Constant('__ARGS_timerfd_gettime',0)
__ARGS_signalfd4 = Constant('__ARGS_signalfd4',0)
__ARGS_eventfd2 = Constant('__ARGS_eventfd2',0)
__ARGS_epoll_create1 = Constant('__ARGS_epoll_create1',0)
__ARGS_dup3 = Constant('__ARGS_dup3',0)
__ARGS_pipe2 = Constant('__ARGS_pipe2',0)
__ARGS_inotify_init1 = Constant('__ARGS_inotify_init1',0)
__ARGS_preadv = Constant('__ARGS_preadv',0)
__ARGS_pwritev = Constant('__ARGS_pwritev',0)
__ARGS_rt_tgsigqueueinfo = Constant('__ARGS_rt_tgsigqueueinfo',0)
__ARGS_perf_event_open = Constant('__ARGS_perf_event_open',1)
__ARGS_recvmmsg = Constant('__ARGS_recvmmsg',1)
__ARGS_accept4 = Constant('__ARGS_accept4',0)
__ARGS_fanotify_init = Constant('__ARGS_fanotify_init',0)
__ARGS_fanotify_mark = Constant('__ARGS_fanotify_mark',1)
__ARGS_prlimit64 = Constant('__ARGS_prlimit64',0)
__ARGS_name_to_handle_at = Constant('__ARGS_name_to_handle_at',1)
__ARGS_open_by_handle_at = Constant('__ARGS_open_by_handle_at',0)
__ARGS_clock_adjtime = Constant('__ARGS_clock_adjtime',0)
__ARGS_syncfs = Constant('__ARGS_syncfs',0)
__ARGS_sendmmsg = Constant('__ARGS_sendmmsg',0)
__ARGS_setns = Constant('__ARGS_setns',0)
__ARGS_process_vm_readv = Constant('__ARGS_process_vm_readv',1)
__ARGS_process_vm_writev = Constant('__ARGS_process_vm_writev',1)
__ARGS_kcmp = Constant('__ARGS_kcmp',1)
__ARGS_finit_module = Constant('__ARGS_finit_module',0)
MAP_32BIT = Constant('MAP_32BIT',0x40)
INADDR_ANY = Constant('INADDR_ANY',0)
INADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)
@@ -811,7 +916,11 @@ ENOKEY = Constant('ENOKEY',126)
EKEYEXPIRED = Constant('EKEYEXPIRED',127)
EKEYREVOKED = Constant('EKEYREVOKED',128)
EKEYREJECTED = Constant('EKEYREJECTED',129)
__SYS_NERR = Constant('__SYS_NERR',((129) + 1))
EOWNERDEAD = Constant('EOWNERDEAD',130)
ENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)
ERFKILL = Constant('ERFKILL',132)
EHWPOISON = Constant('EHWPOISON',133)
__SYS_NERR = Constant('__SYS_NERR',((133) + 1))
__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)
__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)
__BYTE_ORDER = Constant('__BYTE_ORDER',1234)
@@ -820,9 +929,55 @@ LITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)
BIG_ENDIAN = Constant('BIG_ENDIAN',4321)
BYTE_ORDER = Constant('BYTE_ORDER',1234)
__WORDSIZE = Constant('__WORDSIZE',32)
INT8_MAX = Constant('INT8_MAX',(127))
INT16_MAX = Constant('INT16_MAX',(32767))
INT32_MAX = Constant('INT32_MAX',(2147483647))
INT64_MAX = Constant('INT64_MAX',(9223372036854775807))
INT8_MIN = Constant('INT8_MIN',(-1 - (127)))
INT16_MIN = Constant('INT16_MIN',(-1 - (32767)))
INT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))
INT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))
INT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))
INT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))
INT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))
INT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))
INT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))
INT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))
INT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))
INT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))
UINT8_MAX = Constant('UINT8_MAX',0xff)
UINT16_MAX = Constant('UINT16_MAX',0xffff)
UINT32_MAX = Constant('UINT32_MAX',0xffffffff)
UINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)
UINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)
UINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)
UINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)
UINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)
INTPTR_MIN = Constant('INTPTR_MIN',(-1 - (2147483647)))
INTPTR_MAX = Constant('INTPTR_MAX',(2147483647))
UINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffff)
SIZE_MAX = Constant('SIZE_MAX',0xffffffff)
PTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (2147483647)))
PTRDIFF_MAX = Constant('PTRDIFF_MAX',(2147483647))
INTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))
INTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))
UINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)
INT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))
INT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))
INT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))
INT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))
UINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)
UINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)
INT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (2147483647)))
INT_FAST16_MAX = Constant('INT_FAST16_MAX',(2147483647))
UINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffff)
INT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (2147483647)))
INT_FAST32_MAX = Constant('INT_FAST32_MAX',(2147483647))
UINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffff)
WINT_MIN = Constant('WINT_MIN',0)
__FSUID_H = Constant('__FSUID_H',1)
NSIG = Constant('NSIG',32)
_NSIG = Constant('_NSIG',64)
_NSIG = Constant('_NSIG',65)
SIGHUP = Constant('SIGHUP',1)
SIGINT = Constant('SIGINT',2)
SIGQUIT = Constant('SIGQUIT',3)
@@ -860,7 +1015,7 @@ SIGCLD = Constant('SIGCLD',17)
SIGPOLL = Constant('SIGPOLL',29)
SIGLOST = Constant('SIGLOST',30)
SIGRTMIN = Constant('SIGRTMIN',32)
SIGRTMAX = Constant('SIGRTMAX',(64-1))
SIGRTMAX = Constant('SIGRTMAX',(65-1))
SA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)
SA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)
SA_SIGINFO = Constant('SA_SIGINFO',0x00000004)
@@ -910,6 +1065,8 @@ _SC_PAGESIZE = Constant('_SC_PAGESIZE',5)
_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)
_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)
_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)
_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)
_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)
_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)
_PC_VDISABLE = Constant('_PC_VDISABLE',2)
L_cuserid = Constant('L_cuserid',17)
@@ -918,6 +1075,7 @@ F_ULOCK = Constant('F_ULOCK',0)
F_LOCK = Constant('F_LOCK',1)
F_TLOCK = Constant('F_TLOCK',2)
F_TEST = Constant('F_TEST',3)
_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)
STAT64_HAS_BROKEN_ST_INO = Constant('STAT64_HAS_BROKEN_ST_INO',1)
S_IFMT = Constant('S_IFMT',0o0170000)
S_IFSOCK = Constant('S_IFSOCK',0o140000)
@@ -945,84 +1103,7 @@ S_IXOTH = Constant('S_IXOTH',0o0001)
S_IREAD = Constant('S_IREAD',0o0400)
S_IWRITE = Constant('S_IWRITE',0o0200)
S_IEXEC = Constant('S_IEXEC',0o0100)
F_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)
O_ACCMODE = Constant('O_ACCMODE',0o003)
O_RDONLY = Constant('O_RDONLY',0o0)
O_WRONLY = Constant('O_WRONLY',0o1)
O_RDWR = Constant('O_RDWR',0o2)
O_CREAT = Constant('O_CREAT',0o100)
O_EXCL = Constant('O_EXCL',0o200)
O_NOCTTY = Constant('O_NOCTTY',0o400)
O_TRUNC = Constant('O_TRUNC',0o1000)
O_APPEND = Constant('O_APPEND',0o2000)
O_NONBLOCK = Constant('O_NONBLOCK',0o4000)
O_NDELAY = Constant('O_NDELAY',0o4000)
O_SYNC = Constant('O_SYNC',0o10000)
FASYNC = Constant('FASYNC',0o20000)
O_DIRECTORY = Constant('O_DIRECTORY',0o40000)
O_NOFOLLOW = Constant('O_NOFOLLOW',0o100000)
O_DIRECT = Constant('O_DIRECT',0o200000)
O_LARGEFILE = Constant('O_LARGEFILE',0o400000)
O_NOATIME = Constant('O_NOATIME',0o1000000)
F_DUPFD = Constant('F_DUPFD',0)
F_GETFD = Constant('F_GETFD',1)
F_SETFD = Constant('F_SETFD',2)
F_GETFL = Constant('F_GETFL',3)
F_SETFL = Constant('F_SETFL',4)
F_GETLK = Constant('F_GETLK',5)
F_SETLK = Constant('F_SETLK',6)
F_SETLKW = Constant('F_SETLKW',7)
F_SETOWN = Constant('F_SETOWN',8)
F_GETOWN = Constant('F_GETOWN',9)
F_SETSIG = Constant('F_SETSIG',10)
F_GETSIG = Constant('F_GETSIG',11)
F_GETLK64 = Constant('F_GETLK64',12)
F_SETLK64 = Constant('F_SETLK64',13)
F_SETLKW64 = Constant('F_SETLKW64',14)
FD_CLOEXEC = Constant('FD_CLOEXEC',1)
F_RDLCK = Constant('F_RDLCK',0)
F_WRLCK = Constant('F_WRLCK',1)
F_UNLCK = Constant('F_UNLCK',2)
F_EXLCK = Constant('F_EXLCK',4)
F_SHLCK = Constant('F_SHLCK',8)
F_INPROGRESS = Constant('F_INPROGRESS',16)
LOCK_SH = Constant('LOCK_SH',1)
LOCK_EX = Constant('LOCK_EX',2)
LOCK_NB = Constant('LOCK_NB',4)
LOCK_UN = Constant('LOCK_UN',8)
LOCK_MAND = Constant('LOCK_MAND',32)
LOCK_READ = Constant('LOCK_READ',64)
LOCK_WRITE = Constant('LOCK_WRITE',128)
LOCK_RW = Constant('LOCK_RW',192)
O_ASYNC = Constant('O_ASYNC',0o20000)
MREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)
MREMAP_FIXED = Constant('MREMAP_FIXED',2)
PROT_READ = Constant('PROT_READ',0x1)
PROT_WRITE = Constant('PROT_WRITE',0x2)
PROT_EXEC = Constant('PROT_EXEC',0x4)
PROT_NONE = Constant('PROT_NONE',0x0)
MAP_SHARED = Constant('MAP_SHARED',0x01)
MAP_PRIVATE = Constant('MAP_PRIVATE',0x02)
MAP_FIXED = Constant('MAP_FIXED',0x10)
MAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)
MAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)
MAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)
MAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)
MAP_LOCKED = Constant('MAP_LOCKED',0x2000)
MAP_NORESERVE = Constant('MAP_NORESERVE',0x4000)
MAP_POPULATE = Constant('MAP_POPULATE',0x8000)
MS_ASYNC = Constant('MS_ASYNC',1)
MS_INVALIDATE = Constant('MS_INVALIDATE',2)
MS_SYNC = Constant('MS_SYNC',4)
MCL_CURRENT = Constant('MCL_CURRENT',1)
MCL_FUTURE = Constant('MCL_FUTURE',2)
MADV_NORMAL = Constant('MADV_NORMAL',0x0)
MADV_RANDOM = Constant('MADV_RANDOM',0x1)
MADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)
MADV_WILLNEED = Constant('MADV_WILLNEED',0x3)
MADV_DONTNEED = Constant('MADV_DONTNEED',0x4)
MAP_ANON = Constant('MAP_ANON',0x20)
MAP_FILE = Constant('MAP_FILE',0)
_SYS_UIO = Constant('_SYS_UIO',1)
SOL_SOCKET = Constant('SOL_SOCKET',1)
SO_DEBUG = Constant('SO_DEBUG',1)
SO_REUSEADDR = Constant('SO_REUSEADDR',2)
@@ -1038,29 +1119,64 @@ SO_NO_CHECK = Constant('SO_NO_CHECK',11)
SO_PRIORITY = Constant('SO_PRIORITY',12)
SO_LINGER = Constant('SO_LINGER',13)
SO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)
SO_REUSEPORT = Constant('SO_REUSEPORT',15)
SO_PASSCRED = Constant('SO_PASSCRED',16)
SO_PEERCRED = Constant('SO_PEERCRED',17)
SO_RCVLOWAT = Constant('SO_RCVLOWAT',18)
SO_SNDLOWAT = Constant('SO_SNDLOWAT',19)
SO_RCVTIMEO = Constant('SO_RCVTIMEO',20)
SO_SNDTIMEO = Constant('SO_SNDTIMEO',21)
SO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)
SO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)
SO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)
SO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)
SO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)
SO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)
SO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)
SO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)
SO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)
SO_GET_FILTER = Constant('SO_GET_FILTER',26)
SO_PEERNAME = Constant('SO_PEERNAME',28)
SO_TIMESTAMP = Constant('SO_TIMESTAMP',29)
SCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)
SO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)
SO_PEERSEC = Constant('SO_PEERSEC',31)
SO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)
SO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)
SO_PASSSEC = Constant('SO_PASSSEC',34)
SO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)
SCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)
SO_MARK = Constant('SO_MARK',36)
SO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)
SCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)
SO_PROTOCOL = Constant('SO_PROTOCOL',38)
SO_DOMAIN = Constant('SO_DOMAIN',39)
SO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)
SO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)
SCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)
SO_PEEK_OFF = Constant('SO_PEEK_OFF',42)
SO_NOFCS = Constant('SO_NOFCS',43)
SO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)
SO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)
SO_BUSY_POLL = Constant('SO_BUSY_POLL',46)
SO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)
SO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)
SO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)
SO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)
SO_DETACH_BPF = Constant('SO_DETACH_BPF',27)
SO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)
SO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)
SO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)
SCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)
SO_MEMINFO = Constant('SO_MEMINFO',55)
SO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)
SO_COOKIE = Constant('SO_COOKIE',57)
SCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)
SO_PEERGROUPS = Constant('SO_PEERGROUPS',59)
SO_ZEROCOPY = Constant('SO_ZEROCOPY',60)
SOCK_STREAM = Constant('SOCK_STREAM',1)
SOCK_DGRAM = Constant('SOCK_DGRAM',2)
SOCK_RAW = Constant('SOCK_RAW',3)
SOCK_RDM = Constant('SOCK_RDM',4)
SOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)
SOCK_DCCP = Constant('SOCK_DCCP',6)
SOCK_PACKET = Constant('SOCK_PACKET',10)
UIO_FASTIOV = Constant('UIO_FASTIOV',8)
UIO_MAXIOV = Constant('UIO_MAXIOV',1024)
@@ -1094,7 +1210,25 @@ AF_SNA = Constant('AF_SNA',22)
AF_IRDA = Constant('AF_IRDA',23)
AF_PPPOX = Constant('AF_PPPOX',24)
AF_WANPIPE = Constant('AF_WANPIPE',25)
AF_MAX = Constant('AF_MAX',32)
AF_LLC = Constant('AF_LLC',26)
AF_IB = Constant('AF_IB',27)
AF_MPLS = Constant('AF_MPLS',28)
AF_CAN = Constant('AF_CAN',29)
AF_TIPC = Constant('AF_TIPC',30)
AF_BLUETOOTH = Constant('AF_BLUETOOTH',31)
AF_IUCV = Constant('AF_IUCV',32)
AF_RXRPC = Constant('AF_RXRPC',33)
AF_ISDN = Constant('AF_ISDN',34)
AF_PHONET = Constant('AF_PHONET',35)
AF_IEEE802154 = Constant('AF_IEEE802154',36)
AF_CAIF = Constant('AF_CAIF',37)
AF_ALG = Constant('AF_ALG',38)
AF_NFC = Constant('AF_NFC',39)
AF_VSOCK = Constant('AF_VSOCK',40)
AF_KCM = Constant('AF_KCM',41)
AF_QIPCRTR = Constant('AF_QIPCRTR',42)
AF_SMC = Constant('AF_SMC',43)
AF_MAX = Constant('AF_MAX',44)
PF_UNSPEC = Constant('PF_UNSPEC',0)
PF_UNIX = Constant('PF_UNIX',1)
PF_LOCAL = Constant('PF_LOCAL',1)
@@ -1122,7 +1256,25 @@ PF_SNA = Constant('PF_SNA',22)
PF_IRDA = Constant('PF_IRDA',23)
PF_PPPOX = Constant('PF_PPPOX',24)
PF_WANPIPE = Constant('PF_WANPIPE',25)
PF_MAX = Constant('PF_MAX',32)
PF_LLC = Constant('PF_LLC',26)
PF_IB = Constant('PF_IB',27)
PF_MPLS = Constant('PF_MPLS',28)
PF_CAN = Constant('PF_CAN',29)
PF_TIPC = Constant('PF_TIPC',30)
PF_BLUETOOTH = Constant('PF_BLUETOOTH',31)
PF_IUCV = Constant('PF_IUCV',32)
PF_RXRPC = Constant('PF_RXRPC',33)
PF_ISDN = Constant('PF_ISDN',34)
PF_PHONET = Constant('PF_PHONET',35)
PF_IEEE802154 = Constant('PF_IEEE802154',36)
PF_CAIF = Constant('PF_CAIF',37)
PF_ALG = Constant('PF_ALG',38)
PF_NFC = Constant('PF_NFC',39)
PF_VSOCK = Constant('PF_VSOCK',40)
PF_KCM = Constant('PF_KCM',41)
PF_QIPCRTR = Constant('PF_QIPCRTR',42)
PF_SMC = Constant('PF_SMC',43)
PF_MAX = Constant('PF_MAX',44)
SOMAXCONN = Constant('SOMAXCONN',128)
MSG_OOB = Constant('MSG_OOB',1)
MSG_PEEK = Constant('MSG_PEEK',2)
@@ -1135,18 +1287,26 @@ MSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)
MSG_EOR = Constant('MSG_EOR',0x80)
MSG_WAITALL = Constant('MSG_WAITALL',0x100)
MSG_FIN = Constant('MSG_FIN',0x200)
MSG_EOF = Constant('MSG_EOF',0x200)
MSG_SYN = Constant('MSG_SYN',0x400)
MSG_CONFIRM = Constant('MSG_CONFIRM',0x800)
MSG_RST = Constant('MSG_RST',0x1000)
MSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)
MSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)
MSG_MORE = Constant('MSG_MORE',0x8000)
MSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)
MSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)
MSG_BATCH = Constant('MSG_BATCH',0x40000)
MSG_EOF = Constant('MSG_EOF',0x200)
MSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)
MSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)
MSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)
SOL_IP = Constant('SOL_IP',0)
SOL_TCP = Constant('SOL_TCP',6)
SOL_UDP = Constant('SOL_UDP',17)
SOL_IPV6 = Constant('SOL_IPV6',41)
SOL_ICMPV6 = Constant('SOL_ICMPV6',58)
SOL_SCTP = Constant('SOL_SCTP',132)
SOL_UDPLITE = Constant('SOL_UDPLITE',136)
SOL_RAW = Constant('SOL_RAW',255)
SOL_IPX = Constant('SOL_IPX',256)
SOL_AX25 = Constant('SOL_AX25',257)
@@ -1159,6 +1319,22 @@ SOL_PACKET = Constant('SOL_PACKET',263)
SOL_ATM = Constant('SOL_ATM',264)
SOL_AAL = Constant('SOL_AAL',265)
SOL_IRDA = Constant('SOL_IRDA',266)
SOL_NETBEUI = Constant('SOL_NETBEUI',267)
SOL_LLC = Constant('SOL_LLC',268)
SOL_DCCP = Constant('SOL_DCCP',269)
SOL_NETLINK = Constant('SOL_NETLINK',270)
SOL_TIPC = Constant('SOL_TIPC',271)
SOL_RXRPC = Constant('SOL_RXRPC',272)
SOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)
SOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)
SOL_PNPIPE = Constant('SOL_PNPIPE',275)
SOL_RDS = Constant('SOL_RDS',276)
SOL_IUCV = Constant('SOL_IUCV',277)
SOL_CAIF = Constant('SOL_CAIF',278)
SOL_ALG = Constant('SOL_ALG',279)
SOL_NFC = Constant('SOL_NFC',280)
SOL_KCM = Constant('SOL_KCM',281)
SOL_TLS = Constant('SOL_TLS',282)
IPX_TYPE = Constant('IPX_TYPE',1)
SHUT_RD = Constant('SHUT_RD',0)
SHUT_WR = Constant('SHUT_WR',1)
@@ -1182,6 +1358,10 @@ EAI_SYSTEM = Constant('EAI_SYSTEM',-11)
AI_NUMERICHOST = Constant('AI_NUMERICHOST',1)
AI_CANONNAME = Constant('AI_CANONNAME',2)
AI_PASSIVE = Constant('AI_PASSIVE',4)
AI_NUMERICSERV = Constant('AI_NUMERICSERV',8)
AI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)
AI_V4MAPPED = Constant('AI_V4MAPPED',32)
AI_ALL = Constant('AI_ALL',64)
SIOCADDRT = Constant('SIOCADDRT',0x890B)
SIOCDELRT = Constant('SIOCDELRT',0x890C)
SIOCRTMSG = Constant('SIOCRTMSG',0x890D)
@@ -1238,6 +1418,130 @@ SIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)
SIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)
SIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)
SIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)
F_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)
O_ACCMODE = Constant('O_ACCMODE',0o003)
O_RDONLY = Constant('O_RDONLY',0o0)
O_WRONLY = Constant('O_WRONLY',0o1)
O_RDWR = Constant('O_RDWR',0o2)
O_CREAT = Constant('O_CREAT',0o100)
O_EXCL = Constant('O_EXCL',0o200)
O_NOCTTY = Constant('O_NOCTTY',0o400)
O_TRUNC = Constant('O_TRUNC',0o1000)
O_APPEND = Constant('O_APPEND',0o2000)
O_NONBLOCK = Constant('O_NONBLOCK',0o4000)
O_NDELAY = Constant('O_NDELAY',0o4000)
O_DSYNC = Constant('O_DSYNC',0o10000)
FASYNC = Constant('FASYNC',0o20000)
O_DIRECTORY = Constant('O_DIRECTORY',0o40000)
O_NOFOLLOW = Constant('O_NOFOLLOW',0o100000)
O_DIRECT = Constant('O_DIRECT',0o200000)
O_LARGEFILE = Constant('O_LARGEFILE',0o400000)
O_NOATIME = Constant('O_NOATIME',0o1000000)
O_CLOEXEC = Constant('O_CLOEXEC',0o2000000)
O_SYNC = Constant('O_SYNC',(0o10000|0o4000000))
O_PATH = Constant('O_PATH',0o10000000)
__O_TMPFILE = Constant('__O_TMPFILE',0o20000000)
F_DUPFD = Constant('F_DUPFD',0)
F_GETFD = Constant('F_GETFD',1)
F_SETFD = Constant('F_SETFD',2)
F_GETFL = Constant('F_GETFL',3)
F_SETFL = Constant('F_SETFL',4)
F_GETLK = Constant('F_GETLK',5)
F_SETLK = Constant('F_SETLK',6)
F_SETLKW = Constant('F_SETLKW',7)
F_SETOWN = Constant('F_SETOWN',8)
F_GETOWN = Constant('F_GETOWN',9)
F_SETSIG = Constant('F_SETSIG',10)
F_GETSIG = Constant('F_GETSIG',11)
F_GETLK64 = Constant('F_GETLK64',12)
F_SETLK64 = Constant('F_SETLK64',13)
F_SETLKW64 = Constant('F_SETLKW64',14)
FD_CLOEXEC = Constant('FD_CLOEXEC',1)
F_RDLCK = Constant('F_RDLCK',0)
F_WRLCK = Constant('F_WRLCK',1)
F_UNLCK = Constant('F_UNLCK',2)
F_EXLCK = Constant('F_EXLCK',4)
F_SHLCK = Constant('F_SHLCK',8)
F_INPROGRESS = Constant('F_INPROGRESS',16)
LOCK_SH = Constant('LOCK_SH',1)
LOCK_EX = Constant('LOCK_EX',2)
LOCK_NB = Constant('LOCK_NB',4)
LOCK_UN = Constant('LOCK_UN',8)
LOCK_MAND = Constant('LOCK_MAND',32)
LOCK_READ = Constant('LOCK_READ',64)
LOCK_WRITE = Constant('LOCK_WRITE',128)
LOCK_RW = Constant('LOCK_RW',192)
O_TMPFILE = Constant('O_TMPFILE',(0o20000000 | 0o40000))
O_ASYNC = Constant('O_ASYNC',0o20000)
F_SETOWN_EX = Constant('F_SETOWN_EX',15)
F_GETOWN_EX = Constant('F_GETOWN_EX',16)
F_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)
F_OFD_GETLK = Constant('F_OFD_GETLK',36)
F_OFD_SETLK = Constant('F_OFD_SETLK',37)
F_OFD_SETLKW = Constant('F_OFD_SETLKW',38)
F_OWNER_TID = Constant('F_OWNER_TID',0)
F_OWNER_PID = Constant('F_OWNER_PID',1)
F_OWNER_PGRP = Constant('F_OWNER_PGRP',2)
AT_FDCWD = Constant('AT_FDCWD',-100)
AT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)
AT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)
AT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)
AT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)
AT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)
AT_EACCESS = Constant('AT_EACCESS',0x200)
MREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)
MREMAP_FIXED = Constant('MREMAP_FIXED',2)
PROT_READ = Constant('PROT_READ',0x1)
PROT_WRITE = Constant('PROT_WRITE',0x2)
PROT_EXEC = Constant('PROT_EXEC',0x4)
PROT_SEM = Constant('PROT_SEM',0x8)
PROT_NONE = Constant('PROT_NONE',0x0)
PROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)
PROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)
MAP_SHARED = Constant('MAP_SHARED',0x01)
MAP_PRIVATE = Constant('MAP_PRIVATE',0x02)
MAP_TYPE = Constant('MAP_TYPE',0xf)
MADV_REMOVE = Constant('MADV_REMOVE',9)
MADV_DONTFORK = Constant('MADV_DONTFORK',10)
MADV_DOFORK = Constant('MADV_DOFORK',11)
MADV_MERGEABLE = Constant('MADV_MERGEABLE',12)
MADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)
MADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)
MADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)
MADV_DONTDUMP = Constant('MADV_DONTDUMP',16)
MADV_DODUMP = Constant('MADV_DODUMP',17)
MADV_HWPOISON = Constant('MADV_HWPOISON',100)
MADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)
MLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)
MAP_FIXED = Constant('MAP_FIXED',0x10)
MAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)
MAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)
MAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)
MAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)
MAP_LOCKED = Constant('MAP_LOCKED',0x2000)
MAP_NORESERVE = Constant('MAP_NORESERVE',0x4000)
MAP_POPULATE = Constant('MAP_POPULATE',0x8000)
MAP_NONBLOCK = Constant('MAP_NONBLOCK',0x10000)
MAP_STACK = Constant('MAP_STACK',0x20000)
MAP_HUGETLB = Constant('MAP_HUGETLB',0x40000)
MS_ASYNC = Constant('MS_ASYNC',1)
MS_INVALIDATE = Constant('MS_INVALIDATE',2)
MS_SYNC = Constant('MS_SYNC',4)
MCL_CURRENT = Constant('MCL_CURRENT',1)
MCL_FUTURE = Constant('MCL_FUTURE',2)
MCL_ONFAULT = Constant('MCL_ONFAULT',4)
MADV_NORMAL = Constant('MADV_NORMAL',0x0)
MADV_RANDOM = Constant('MADV_RANDOM',0x1)
MADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)
MADV_WILLNEED = Constant('MADV_WILLNEED',0x3)
MADV_DONTNEED = Constant('MADV_DONTNEED',0x4)
MAP_ANON = Constant('MAP_ANON',0x20)
MAP_FILE = Constant('MAP_FILE',0)
POSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0x0)
POSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',0x2)
POSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',0x1)
POSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',0x3)
POSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',0x4)
PTRACE_TRACEME = Constant('PTRACE_TRACEME',0)
PTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)
PTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)
@@ -1303,6 +1607,7 @@ CC_Z_BIT = Constant('CC_Z_BIT',(1 << 30))
CC_N_BIT = Constant('CC_N_BIT',(1 << 31))
PCMASK = Constant('PCMASK',0)
SYS_accept = Constant('SYS_accept',(0+285))
SYS_accept4 = Constant('SYS_accept4',(0+366))
SYS_access = Constant('SYS_access',(0+ 33))
SYS_acct = Constant('SYS_acct',(0+ 51))
SYS_add_key = Constant('SYS_add_key',(0+309))
@@ -1312,6 +1617,7 @@ SYS_arm_fadvise64_64 = Constant('SYS_arm_fadvise64_64',(0+270))
SYS_arm_sync_file_range = Constant('SYS_arm_sync_file_range',(0+341))
SYS_bdflush = Constant('SYS_bdflush',(0+134))
SYS_bind = Constant('SYS_bind',(0+282))
SYS_bpf = Constant('SYS_bpf',(0+386))
SYS_brk = Constant('SYS_brk',(0+ 45))
SYS_capget = Constant('SYS_capget',(0+184))
SYS_capset = Constant('SYS_capset',(0+185))
@@ -1320,26 +1626,40 @@ SYS_chmod = Constant('SYS_chmod',(0+ 15))
SYS_chown = Constant('SYS_chown',(0+182))
SYS_chown32 = Constant('SYS_chown32',(0+212))
SYS_chroot = Constant('SYS_chroot',(0+ 61))
SYS_clock_adjtime = Constant('SYS_clock_adjtime',(0+372))
SYS_clock_adjtime64 = Constant('SYS_clock_adjtime64',(0 + 405))
SYS_clock_getres = Constant('SYS_clock_getres',(0+264))
SYS_clock_getres_time64 = Constant('SYS_clock_getres_time64',(0 + 406))
SYS_clock_gettime = Constant('SYS_clock_gettime',(0+263))
SYS_clock_gettime64 = Constant('SYS_clock_gettime64',(0 + 403))
SYS_clock_nanosleep = Constant('SYS_clock_nanosleep',(0+265))
SYS_clock_nanosleep_time64 = Constant('SYS_clock_nanosleep_time64',(0 + 407))
SYS_clock_settime = Constant('SYS_clock_settime',(0+262))
SYS_clock_settime64 = Constant('SYS_clock_settime64',(0 + 404))
SYS_clone = Constant('SYS_clone',(0+120))
SYS_clone3 = Constant('SYS_clone3',(0 + 435))
SYS_close = Constant('SYS_close',(0+ 6))
SYS_connect = Constant('SYS_connect',(0+283))
SYS_copy_file_range = Constant('SYS_copy_file_range',(0+391))
SYS_creat = Constant('SYS_creat',(0+ 8))
SYS_delete_module = Constant('SYS_delete_module',(0+129))
SYS_dup = Constant('SYS_dup',(0+ 41))
SYS_dup2 = Constant('SYS_dup2',(0+ 63))
SYS_dup3 = Constant('SYS_dup3',(0+358))
SYS_epoll_create = Constant('SYS_epoll_create',(0+250))
SYS_epoll_create1 = Constant('SYS_epoll_create1',(0+357))
SYS_epoll_ctl = Constant('SYS_epoll_ctl',(0+251))
SYS_epoll_wait = Constant('SYS_epoll_wait',(0+252))
SYS_eventfd = Constant('SYS_eventfd',(0+351))
SYS_eventfd2 = Constant('SYS_eventfd2',(0+356))
SYS_execve = Constant('SYS_execve',(0+ 11))
SYS_execveat = Constant('SYS_execveat',(0+387))
SYS_exit = Constant('SYS_exit',(0+ 1))
SYS_exit_group = Constant('SYS_exit_group',(0+248))
SYS_faccessat = Constant('SYS_faccessat',(0+334))
SYS_fallocate = Constant('SYS_fallocate',(0+352))
SYS_fanotify_init = Constant('SYS_fanotify_init',(0+367))
SYS_fanotify_mark = Constant('SYS_fanotify_mark',(0+368))
SYS_fchdir = Constant('SYS_fchdir',(0+133))
SYS_fchmod = Constant('SYS_fchmod',(0+ 94))
SYS_fchmodat = Constant('SYS_fchmodat',(0+333))
@@ -1350,11 +1670,16 @@ SYS_fcntl = Constant('SYS_fcntl',(0+ 55))
SYS_fcntl64 = Constant('SYS_fcntl64',(0+221))
SYS_fdatasync = Constant('SYS_fdatasync',(0+148))
SYS_fgetxattr = Constant('SYS_fgetxattr',(0+231))
SYS_finit_module = Constant('SYS_finit_module',(0+379))
SYS_flistxattr = Constant('SYS_flistxattr',(0+234))
SYS_flock = Constant('SYS_flock',(0+143))
SYS_fork = Constant('SYS_fork',(0+ 2))
SYS_fremovexattr = Constant('SYS_fremovexattr',(0+237))
SYS_fsconfig = Constant('SYS_fsconfig',(0 + 431))
SYS_fsetxattr = Constant('SYS_fsetxattr',(0+228))
SYS_fsmount = Constant('SYS_fsmount',(0 + 432))
SYS_fsopen = Constant('SYS_fsopen',(0 + 430))
SYS_fspick = Constant('SYS_fspick',(0 + 433))
SYS_fstat = Constant('SYS_fstat',(0+108))
SYS_fstat64 = Constant('SYS_fstat64',(0+197))
SYS_fstatat64 = Constant('SYS_fstatat64',(0+327))
@@ -1364,6 +1689,7 @@ SYS_fsync = Constant('SYS_fsync',(0+118))
SYS_ftruncate = Constant('SYS_ftruncate',(0+ 93))
SYS_ftruncate64 = Constant('SYS_ftruncate64',(0+194))
SYS_futex = Constant('SYS_futex',(0+240))
SYS_futex_time64 = Constant('SYS_futex_time64',(0 + 422))
SYS_futimesat = Constant('SYS_futimesat',(0+326))
SYS_getcpu = Constant('SYS_getcpu',(0+345))
SYS_getcwd = Constant('SYS_getcwd',(0+183))
@@ -1385,6 +1711,7 @@ SYS_getpgrp = Constant('SYS_getpgrp',(0+ 65))
SYS_getpid = Constant('SYS_getpid',(0+ 20))
SYS_getppid = Constant('SYS_getppid',(0+ 64))
SYS_getpriority = Constant('SYS_getpriority',(0+ 96))
SYS_getrandom = Constant('SYS_getrandom',(0+384))
SYS_getresgid = Constant('SYS_getresgid',(0+171))
SYS_getresgid32 = Constant('SYS_getresgid32',(0+211))
SYS_getresuid = Constant('SYS_getresuid',(0+165))
@@ -1403,16 +1730,24 @@ SYS_getxattr = Constant('SYS_getxattr',(0+229))
SYS_init_module = Constant('SYS_init_module',(0+128))
SYS_inotify_add_watch = Constant('SYS_inotify_add_watch',(0+317))
SYS_inotify_init = Constant('SYS_inotify_init',(0+316))
SYS_inotify_init1 = Constant('SYS_inotify_init1',(0+360))
SYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',(0+318))
SYS_io_cancel = Constant('SYS_io_cancel',(0+247))
SYS_ioctl = Constant('SYS_ioctl',(0+ 54))
SYS_io_destroy = Constant('SYS_io_destroy',(0+244))
SYS_io_getevents = Constant('SYS_io_getevents',(0+245))
SYS_io_pgetevents = Constant('SYS_io_pgetevents',(0 + 399))
SYS_io_pgetevents_time64 = Constant('SYS_io_pgetevents_time64',(0 + 416))
SYS_ioprio_get = Constant('SYS_ioprio_get',(0+315))
SYS_ioprio_set = Constant('SYS_ioprio_set',(0+314))
SYS_io_setup = Constant('SYS_io_setup',(0+243))
SYS_io_submit = Constant('SYS_io_submit',(0+246))
SYS_io_uring_enter = Constant('SYS_io_uring_enter',(0 + 426))
SYS_io_uring_register = Constant('SYS_io_uring_register',(0 + 427))
SYS_io_uring_setup = Constant('SYS_io_uring_setup',(0 + 425))
SYS_ipc = Constant('SYS_ipc',(0+117))
SYS_kcmp = Constant('SYS_kcmp',(0+378))
SYS_kexec_file_load = Constant('SYS_kexec_file_load',(0 + 401))
SYS_kexec_load = Constant('SYS_kexec_load',(0+347))
SYS_keyctl = Constant('SYS_keyctl',(0+311))
SYS_kill = Constant('SYS_kill',(0+ 37))
@@ -1433,23 +1768,30 @@ SYS_lstat = Constant('SYS_lstat',(0+107))
SYS_lstat64 = Constant('SYS_lstat64',(0+196))
SYS_madvise = Constant('SYS_madvise',(0+220))
SYS_mbind = Constant('SYS_mbind',(0+319))
SYS_membarrier = Constant('SYS_membarrier',(0+389))
SYS_memfd_create = Constant('SYS_memfd_create',(0+385))
SYS_migrate_pages = Constant('SYS_migrate_pages',(0 + 400))
SYS_mincore = Constant('SYS_mincore',(0+219))
SYS_mkdir = Constant('SYS_mkdir',(0+ 39))
SYS_mkdirat = Constant('SYS_mkdirat',(0+323))
SYS_mknod = Constant('SYS_mknod',(0+ 14))
SYS_mknodat = Constant('SYS_mknodat',(0+324))
SYS_mlock = Constant('SYS_mlock',(0+150))
SYS_mlock2 = Constant('SYS_mlock2',(0+390))
SYS_mlockall = Constant('SYS_mlockall',(0+152))
SYS_mmap = Constant('SYS_mmap',(0+ 90))
SYS_mmap2 = Constant('SYS_mmap2',(0+192))
SYS_mount = Constant('SYS_mount',(0+ 21))
SYS_move_mount = Constant('SYS_move_mount',(0 + 429))
SYS_move_pages = Constant('SYS_move_pages',(0+344))
SYS_mprotect = Constant('SYS_mprotect',(0+125))
SYS_mq_getsetattr = Constant('SYS_mq_getsetattr',(0+279))
SYS_mq_notify = Constant('SYS_mq_notify',(0+278))
SYS_mq_open = Constant('SYS_mq_open',(0+274))
SYS_mq_timedreceive = Constant('SYS_mq_timedreceive',(0+277))
SYS_mq_timedreceive_time64 = Constant('SYS_mq_timedreceive_time64',(0 + 419))
SYS_mq_timedsend = Constant('SYS_mq_timedsend',(0+276))
SYS_mq_timedsend_time64 = Constant('SYS_mq_timedsend_time64',(0 + 418))
SYS_mq_unlink = Constant('SYS_mq_unlink',(0+275))
SYS_mremap = Constant('SYS_mremap',(0+163))
SYS_msgctl = Constant('SYS_msgctl',(0+304))
@@ -1460,6 +1802,7 @@ SYS_msync = Constant('SYS_msync',(0+144))
SYS_munlock = Constant('SYS_munlock',(0+151))
SYS_munlockall = Constant('SYS_munlockall',(0+153))
SYS_munmap = Constant('SYS_munmap',(0+ 91))
SYS_name_to_handle_at = Constant('SYS_name_to_handle_at',(0+370))
SYS_nanosleep = Constant('SYS_nanosleep',(0+162))
SYS__newselect = Constant('SYS__newselect',(0+142))
SYS_nfsservctl = Constant('SYS_nfsservctl',(0+169))
@@ -1467,18 +1810,38 @@ SYS_nice = Constant('SYS_nice',(0+ 34))
SYS_OABI_SYSCALL_BASE = Constant('SYS_OABI_SYSCALL_BASE',0x900000)
SYS_open = Constant('SYS_open',(0+ 5))
SYS_openat = Constant('SYS_openat',(0+322))
SYS_openat2 = Constant('SYS_openat2',(0 + 437))
SYS_open_by_handle_at = Constant('SYS_open_by_handle_at',(0+371))
SYS_open_tree = Constant('SYS_open_tree',(0 + 428))
SYS_pause = Constant('SYS_pause',(0+ 29))
SYS_pciconfig_iobase = Constant('SYS_pciconfig_iobase',(0+271))
SYS_pciconfig_read = Constant('SYS_pciconfig_read',(0+272))
SYS_pciconfig_write = Constant('SYS_pciconfig_write',(0+273))
SYS_perf_event_open = Constant('SYS_perf_event_open',(0+364))
SYS_personality = Constant('SYS_personality',(0+136))
SYS_pidfd_getfd = Constant('SYS_pidfd_getfd',(0 + 438))
SYS_pidfd_open = Constant('SYS_pidfd_open',(0 + 434))
SYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',(0 + 424))
SYS_pipe = Constant('SYS_pipe',(0+ 42))
SYS_pipe2 = Constant('SYS_pipe2',(0+359))
SYS_pivot_root = Constant('SYS_pivot_root',(0+218))
SYS_pkey_alloc = Constant('SYS_pkey_alloc',(0 + 395))
SYS_pkey_free = Constant('SYS_pkey_free',(0 + 396))
SYS_pkey_mprotect = Constant('SYS_pkey_mprotect',(0 + 394))
SYS_poll = Constant('SYS_poll',(0+168))
SYS_ppoll_time64 = Constant('SYS_ppoll_time64',(0 + 414))
SYS_prctl = Constant('SYS_prctl',(0+172))
SYS_pread64 = Constant('SYS_pread64',(0+180))
SYS_preadv = Constant('SYS_preadv',(0+361))
SYS_preadv2 = Constant('SYS_preadv2',(0+392))
SYS_prlimit64 = Constant('SYS_prlimit64',(0+369))
SYS_process_vm_readv = Constant('SYS_process_vm_readv',(0+376))
SYS_process_vm_writev = Constant('SYS_process_vm_writev',(0+377))
SYS_pselect6_time64 = Constant('SYS_pselect6_time64',(0 + 413))
SYS_ptrace = Constant('SYS_ptrace',(0+ 26))
SYS_pwrite64 = Constant('SYS_pwrite64',(0+181))
SYS_pwritev = Constant('SYS_pwritev',(0+362))
SYS_pwritev2 = Constant('SYS_pwritev2',(0+393))
SYS_quotactl = Constant('SYS_quotactl',(0+131))
SYS_read = Constant('SYS_read',(0+ 3))
SYS_readahead = Constant('SYS_readahead',(0+225))
@@ -1489,14 +1852,18 @@ SYS_readv = Constant('SYS_readv',(0+145))
SYS_reboot = Constant('SYS_reboot',(0+ 88))
SYS_recv = Constant('SYS_recv',(0+291))
SYS_recvfrom = Constant('SYS_recvfrom',(0+292))
SYS_recvmmsg = Constant('SYS_recvmmsg',(0+365))
SYS_recvmmsg_time64 = Constant('SYS_recvmmsg_time64',(0 + 417))
SYS_recvmsg = Constant('SYS_recvmsg',(0+297))
SYS_remap_file_pages = Constant('SYS_remap_file_pages',(0+253))
SYS_removexattr = Constant('SYS_removexattr',(0+235))
SYS_rename = Constant('SYS_rename',(0+ 38))
SYS_renameat = Constant('SYS_renameat',(0+329))
SYS_renameat2 = Constant('SYS_renameat2',(0+382))
SYS_request_key = Constant('SYS_request_key',(0+310))
SYS_restart_syscall = Constant('SYS_restart_syscall',(0+ 0))
SYS_rmdir = Constant('SYS_rmdir',(0+ 40))
SYS_rseq = Constant('SYS_rseq',(0 + 398))
SYS_rt_sigaction = Constant('SYS_rt_sigaction',(0+174))
SYS_rt_sigpending = Constant('SYS_rt_sigpending',(0+176))
SYS_rt_sigprocmask = Constant('SYS_rt_sigprocmask',(0+175))
@@ -1504,24 +1871,32 @@ SYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',(0+178))
SYS_rt_sigreturn = Constant('SYS_rt_sigreturn',(0+173))
SYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',(0+179))
SYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',(0+177))
SYS_rt_sigtimedwait_time64 = Constant('SYS_rt_sigtimedwait_time64',(0 + 421))
SYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',(0+363))
SYS_sched_getaffinity = Constant('SYS_sched_getaffinity',(0+242))
SYS_sched_getattr = Constant('SYS_sched_getattr',(0+381))
SYS_sched_getparam = Constant('SYS_sched_getparam',(0+155))
SYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',(0+159))
SYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',(0+160))
SYS_sched_getscheduler = Constant('SYS_sched_getscheduler',(0+157))
SYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',(0+161))
SYS_sched_rr_get_interval_time64 = Constant('SYS_sched_rr_get_interval_time64',(0 + 423))
SYS_sched_setaffinity = Constant('SYS_sched_setaffinity',(0+241))
SYS_sched_setattr = Constant('SYS_sched_setattr',(0+380))
SYS_sched_setparam = Constant('SYS_sched_setparam',(0+154))
SYS_sched_setscheduler = Constant('SYS_sched_setscheduler',(0+156))
SYS_sched_yield = Constant('SYS_sched_yield',(0+158))
SYS_seccomp = Constant('SYS_seccomp',(0+383))
SYS_select = Constant('SYS_select',(0+ 82))
SYS_semctl = Constant('SYS_semctl',(0+300))
SYS_semget = Constant('SYS_semget',(0+299))
SYS_semop = Constant('SYS_semop',(0+298))
SYS_semtimedop = Constant('SYS_semtimedop',(0+312))
SYS_semtimedop_time64 = Constant('SYS_semtimedop_time64',(0 + 420))
SYS_send = Constant('SYS_send',(0+289))
SYS_sendfile = Constant('SYS_sendfile',(0+187))
SYS_sendfile64 = Constant('SYS_sendfile64',(0+239))
SYS_sendmmsg = Constant('SYS_sendmmsg',(0+374))
SYS_sendmsg = Constant('SYS_sendmsg',(0+296))
SYS_sendto = Constant('SYS_sendto',(0+290))
SYS_setdomainname = Constant('SYS_setdomainname',(0+121))
@@ -1536,6 +1911,7 @@ SYS_setgroups32 = Constant('SYS_setgroups32',(0+206))
SYS_sethostname = Constant('SYS_sethostname',(0+ 74))
SYS_setitimer = Constant('SYS_setitimer',(0+104))
SYS_set_mempolicy = Constant('SYS_set_mempolicy',(0+321))
SYS_setns = Constant('SYS_setns',(0+375))
SYS_setpgid = Constant('SYS_setpgid',(0+ 57))
SYS_setpriority = Constant('SYS_setpriority',(0+ 97))
SYS_setregid = Constant('SYS_setregid',(0+ 71))
@@ -1563,6 +1939,7 @@ SYS_shutdown = Constant('SYS_shutdown',(0+293))
SYS_sigaction = Constant('SYS_sigaction',(0+ 67))
SYS_sigaltstack = Constant('SYS_sigaltstack',(0+186))
SYS_signalfd = Constant('SYS_signalfd',(0+349))
SYS_signalfd4 = Constant('SYS_signalfd4',(0+355))
SYS_sigpending = Constant('SYS_sigpending',(0+ 73))
SYS_sigprocmask = Constant('SYS_sigprocmask',(0+126))
SYS_sigreturn = Constant('SYS_sigreturn',(0+119))
@@ -1575,12 +1952,14 @@ SYS_stat = Constant('SYS_stat',(0+106))
SYS_stat64 = Constant('SYS_stat64',(0+195))
SYS_statfs = Constant('SYS_statfs',(0+ 99))
SYS_statfs64 = Constant('SYS_statfs64',(0+266))
SYS_statx = Constant('SYS_statx',(0 + 397))
SYS_stime = Constant('SYS_stime',(0+ 25))
SYS_swapoff = Constant('SYS_swapoff',(0+115))
SYS_swapon = Constant('SYS_swapon',(0+ 87))
SYS_symlink = Constant('SYS_symlink',(0+ 83))
SYS_symlinkat = Constant('SYS_symlinkat',(0+331))
SYS_sync = Constant('SYS_sync',(0+ 36))
SYS_syncfs = Constant('SYS_syncfs',(0+373))
SYS_syscall = Constant('SYS_syscall',(0+113))
SYS_SYSCALL_BASE = Constant('SYS_SYSCALL_BASE',0)
SYS__sysctl = Constant('SYS__sysctl',(0+149))
@@ -1594,10 +1973,14 @@ SYS_timer_create = Constant('SYS_timer_create',(0+257))
SYS_timer_delete = Constant('SYS_timer_delete',(0+261))
SYS_timerfd = Constant('SYS_timerfd',(0+350))
SYS_timerfd_gettime = Constant('SYS_timerfd_gettime',(0+354))
SYS_timerfd_gettime64 = Constant('SYS_timerfd_gettime64',(0 + 410))
SYS_timerfd_settime = Constant('SYS_timerfd_settime',(0+353))
SYS_timerfd_settime64 = Constant('SYS_timerfd_settime64',(0 + 411))
SYS_timer_getoverrun = Constant('SYS_timer_getoverrun',(0+260))
SYS_timer_gettime = Constant('SYS_timer_gettime',(0+259))
SYS_timer_gettime64 = Constant('SYS_timer_gettime64',(0 + 408))
SYS_timer_settime = Constant('SYS_timer_settime',(0+258))
SYS_timer_settime64 = Constant('SYS_timer_settime64',(0 + 409))
SYS_times = Constant('SYS_times',(0+ 43))
SYS_tkill = Constant('SYS_tkill',(0+238))
SYS_truncate = Constant('SYS_truncate',(0+ 92))
@@ -1611,9 +1994,11 @@ SYS_unlink = Constant('SYS_unlink',(0+ 10))
SYS_unlinkat = Constant('SYS_unlinkat',(0+328))
SYS_unshare = Constant('SYS_unshare',(0+337))
SYS_uselib = Constant('SYS_uselib',(0+ 86))
SYS_userfaultfd = Constant('SYS_userfaultfd',(0+388))
SYS_ustat = Constant('SYS_ustat',(0+ 62))
SYS_utime = Constant('SYS_utime',(0+ 30))
SYS_utimensat = Constant('SYS_utimensat',(0+348))
SYS_utimensat_time64 = Constant('SYS_utimensat_time64',(0 + 412))
SYS_utimes = Constant('SYS_utimes',(0+269))
SYS_vfork = Constant('SYS_vfork',(0+190))
SYS_vhangup = Constant('SYS_vhangup',(0+111))
+467 -88
View File
@@ -1,5 +1,4 @@
from pwnlib.constants.constant import Constant
__NR_exit = Constant('__NR_exit',1)
__NR_fork = Constant('__NR_fork',2)
__NR_read = Constant('__NR_read',3)
@@ -337,6 +336,96 @@ __NR_recvmmsg = Constant('__NR_recvmmsg',337)
__NR_fanotify_init = Constant('__NR_fanotify_init',338)
__NR_fanotify_mark = Constant('__NR_fanotify_mark',339)
__NR_prlimit64 = Constant('__NR_prlimit64',340)
__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',341)
__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',342)
__NR_clock_adjtime = Constant('__NR_clock_adjtime',343)
__NR_syncfs = Constant('__NR_syncfs',344)
__NR_sendmmsg = Constant('__NR_sendmmsg',345)
__NR_setns = Constant('__NR_setns',346)
__NR_process_vm_readv = Constant('__NR_process_vm_readv',347)
__NR_process_vm_writev = Constant('__NR_process_vm_writev',348)
__NR_kcmp = Constant('__NR_kcmp',349)
__NR_finit_module = Constant('__NR_finit_module',350)
__NR_sched_setattr = Constant('__NR_sched_setattr',351)
__NR_sched_getattr = Constant('__NR_sched_getattr',352)
__NR_renameat2 = Constant('__NR_renameat2',353)
__NR_seccomp = Constant('__NR_seccomp',354)
__NR_getrandom = Constant('__NR_getrandom',355)
__NR_memfd_create = Constant('__NR_memfd_create',356)
__NR_bpf = Constant('__NR_bpf',357)
__NR_execveat = Constant('__NR_execveat',358)
__NR_socket = Constant('__NR_socket',359)
__NR_socketpair = Constant('__NR_socketpair',360)
__NR_bind = Constant('__NR_bind',361)
__NR_connect = Constant('__NR_connect',362)
__NR_listen = Constant('__NR_listen',363)
__NR_accept4 = Constant('__NR_accept4',364)
__NR_getsockopt = Constant('__NR_getsockopt',365)
__NR_setsockopt = Constant('__NR_setsockopt',366)
__NR_getsockname = Constant('__NR_getsockname',367)
__NR_getpeername = Constant('__NR_getpeername',368)
__NR_sendto = Constant('__NR_sendto',369)
__NR_sendmsg = Constant('__NR_sendmsg',370)
__NR_recvfrom = Constant('__NR_recvfrom',371)
__NR_recvmsg = Constant('__NR_recvmsg',372)
__NR_shutdown = Constant('__NR_shutdown',373)
__NR_userfaultfd = Constant('__NR_userfaultfd',374)
__NR_membarrier = Constant('__NR_membarrier',375)
__NR_mlock2 = Constant('__NR_mlock2',376)
__NR_copy_file_range = Constant('__NR_copy_file_range',377)
__NR_preadv2 = Constant('__NR_preadv2',378)
__NR_pwritev2 = Constant('__NR_pwritev2',379)
__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',380)
__NR_pkey_alloc = Constant('__NR_pkey_alloc',381)
__NR_pkey_free = Constant('__NR_pkey_free',382)
__NR_ia32_statx = Constant('__NR_ia32_statx',383)
__NR_ia32_arch_prctl = Constant('__NR_ia32_arch_prctl',384)
__NR_ia32_io_pgetevents = Constant('__NR_ia32_io_pgetevents',385)
__NR_ia32_rseq = Constant('__NR_ia32_rseq',386)
__NR_semget = Constant('__NR_semget',393)
__NR_semctl = Constant('__NR_semctl',394)
__NR_shmget = Constant('__NR_shmget',395)
__NR_shmctl = Constant('__NR_shmctl',396)
__NR_shmat = Constant('__NR_shmat',397)
__NR_shmdt = Constant('__NR_shmdt',398)
__NR_msgget = Constant('__NR_msgget',399)
__NR_msgsnd = Constant('__NR_msgsnd',400)
__NR_msgrcv = Constant('__NR_msgrcv',401)
__NR_msgctl = Constant('__NR_msgctl',402)
__NR_clock_gettime64 = Constant('__NR_clock_gettime64',403)
__NR_clock_settime64 = Constant('__NR_clock_settime64',404)
__NR_clock_adjtime64 = Constant('__NR_clock_adjtime64',405)
__NR_clock_getres_time64 = Constant('__NR_clock_getres_time64',406)
__NR_clock_nanosleep_time64 = Constant('__NR_clock_nanosleep_time64',407)
__NR_timer_gettime64 = Constant('__NR_timer_gettime64',408)
__NR_timer_settime64 = Constant('__NR_timer_settime64',409)
__NR_timerfd_gettime64 = Constant('__NR_timerfd_gettime64',410)
__NR_timerfd_settime64 = Constant('__NR_timerfd_settime64',411)
__NR_utimensat_time64 = Constant('__NR_utimensat_time64',412)
__NR_pselect6_time64 = Constant('__NR_pselect6_time64',413)
__NR_ppoll_time64 = Constant('__NR_ppoll_time64',414)
__NR_io_pgetevents_time64 = Constant('__NR_io_pgetevents_time64',416)
__NR_recvmmsg_time64 = Constant('__NR_recvmmsg_time64',417)
__NR_mq_timedsend_time64 = Constant('__NR_mq_timedsend_time64',418)
__NR_mq_timedreceive_time64 = Constant('__NR_mq_timedreceive_time64',419)
__NR_semtimedop_time64 = Constant('__NR_semtimedop_time64',420)
__NR_rt_sigtimedwait_time64 = Constant('__NR_rt_sigtimedwait_time64',421)
__NR_futex_time64 = Constant('__NR_futex_time64',422)
__NR_sched_rr_get_interval_time64 = Constant('__NR_sched_rr_get_interval_time64',423)
__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)
__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)
__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)
__NR_io_uring_register = Constant('__NR_io_uring_register',427)
__NR_open_tree = Constant('__NR_open_tree',428)
__NR_move_mount = Constant('__NR_move_mount',429)
__NR_fsopen = Constant('__NR_fsopen',430)
__NR_fsconfig = Constant('__NR_fsconfig',431)
__NR_fsmount = Constant('__NR_fsmount',432)
__NR_fspick = Constant('__NR_fspick',433)
__NR_pidfd_open = Constant('__NR_pidfd_open',434)
__NR_clone3 = Constant('__NR_clone3',435)
__NR_openat2 = Constant('__NR_openat2',437)
__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',438)
SYS_SOCKET = Constant('SYS_SOCKET',1)
SYS_BIND = Constant('SYS_BIND',2)
SYS_CONNECT = Constant('SYS_CONNECT',3)
@@ -489,7 +578,11 @@ ENOKEY = Constant('ENOKEY',126)
EKEYEXPIRED = Constant('EKEYEXPIRED',127)
EKEYREVOKED = Constant('EKEYREVOKED',128)
EKEYREJECTED = Constant('EKEYREJECTED',129)
__SYS_NERR = Constant('__SYS_NERR',((129) + 1))
EOWNERDEAD = Constant('EOWNERDEAD',130)
ENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)
ERFKILL = Constant('ERFKILL',132)
EHWPOISON = Constant('EHWPOISON',133)
__SYS_NERR = Constant('__SYS_NERR',((133) + 1))
__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)
__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)
__BYTE_ORDER = Constant('__BYTE_ORDER',1234)
@@ -498,9 +591,56 @@ LITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)
BIG_ENDIAN = Constant('BIG_ENDIAN',4321)
BYTE_ORDER = Constant('BYTE_ORDER',1234)
__WORDSIZE = Constant('__WORDSIZE',32)
__UNALIGNED_MEMORY_ACCESS_OK = Constant('__UNALIGNED_MEMORY_ACCESS_OK',1)
INT8_MAX = Constant('INT8_MAX',(127))
INT16_MAX = Constant('INT16_MAX',(32767))
INT32_MAX = Constant('INT32_MAX',(2147483647))
INT64_MAX = Constant('INT64_MAX',(9223372036854775807))
INT8_MIN = Constant('INT8_MIN',(-1 - (127)))
INT16_MIN = Constant('INT16_MIN',(-1 - (32767)))
INT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))
INT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))
INT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))
INT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))
INT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))
INT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))
INT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))
INT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))
INT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))
INT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))
UINT8_MAX = Constant('UINT8_MAX',0xff)
UINT16_MAX = Constant('UINT16_MAX',0xffff)
UINT32_MAX = Constant('UINT32_MAX',0xffffffff)
UINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)
UINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)
UINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)
UINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)
UINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)
INTPTR_MIN = Constant('INTPTR_MIN',(-1 - (2147483647)))
INTPTR_MAX = Constant('INTPTR_MAX',(2147483647))
UINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffff)
SIZE_MAX = Constant('SIZE_MAX',0xffffffff)
PTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (2147483647)))
PTRDIFF_MAX = Constant('PTRDIFF_MAX',(2147483647))
INTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))
INTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))
UINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)
INT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))
INT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))
INT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))
INT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))
UINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)
UINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)
INT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (2147483647)))
INT_FAST16_MAX = Constant('INT_FAST16_MAX',(2147483647))
UINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffff)
INT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (2147483647)))
INT_FAST32_MAX = Constant('INT_FAST32_MAX',(2147483647))
UINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffff)
WINT_MIN = Constant('WINT_MIN',0)
__FSUID_H = Constant('__FSUID_H',1)
NSIG = Constant('NSIG',32)
_NSIG = Constant('_NSIG',64)
_NSIG = Constant('_NSIG',65)
SIGHUP = Constant('SIGHUP',1)
SIGINT = Constant('SIGINT',2)
SIGQUIT = Constant('SIGQUIT',3)
@@ -538,7 +678,7 @@ SIGCLD = Constant('SIGCLD',17)
SIGPOLL = Constant('SIGPOLL',29)
SIGLOST = Constant('SIGLOST',30)
SIGRTMIN = Constant('SIGRTMIN',32)
SIGRTMAX = Constant('SIGRTMAX',(64-1))
SIGRTMAX = Constant('SIGRTMAX',(65-1))
SA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)
SA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)
SA_SIGINFO = Constant('SA_SIGINFO',0x00000004)
@@ -588,6 +728,8 @@ _SC_PAGESIZE = Constant('_SC_PAGESIZE',5)
_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)
_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)
_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)
_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)
_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)
_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)
_PC_VDISABLE = Constant('_PC_VDISABLE',2)
L_cuserid = Constant('L_cuserid',17)
@@ -596,6 +738,7 @@ F_ULOCK = Constant('F_ULOCK',0)
F_LOCK = Constant('F_LOCK',1)
F_TLOCK = Constant('F_TLOCK',2)
F_TEST = Constant('F_TEST',3)
_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)
STAT64_HAS_BROKEN_ST_INO = Constant('STAT64_HAS_BROKEN_ST_INO',1)
S_IFMT = Constant('S_IFMT',0o0170000)
S_IFSOCK = Constant('S_IFSOCK',0o140000)
@@ -623,84 +766,7 @@ S_IXOTH = Constant('S_IXOTH',0o0001)
S_IREAD = Constant('S_IREAD',0o0400)
S_IWRITE = Constant('S_IWRITE',0o0200)
S_IEXEC = Constant('S_IEXEC',0o0100)
F_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)
O_ACCMODE = Constant('O_ACCMODE',0o003)
O_RDONLY = Constant('O_RDONLY',0o0)
O_WRONLY = Constant('O_WRONLY',0o1)
O_RDWR = Constant('O_RDWR',0o2)
O_CREAT = Constant('O_CREAT',0o100)
O_EXCL = Constant('O_EXCL',0o200)
O_NOCTTY = Constant('O_NOCTTY',0o400)
O_TRUNC = Constant('O_TRUNC',0o1000)
O_APPEND = Constant('O_APPEND',0o2000)
O_NONBLOCK = Constant('O_NONBLOCK',0o4000)
O_NDELAY = Constant('O_NDELAY',0o4000)
O_SYNC = Constant('O_SYNC',0o10000)
FASYNC = Constant('FASYNC',0o20000)
O_DIRECT = Constant('O_DIRECT',0o40000)
O_LARGEFILE = Constant('O_LARGEFILE',0o100000)
O_DIRECTORY = Constant('O_DIRECTORY',0o200000)
O_NOFOLLOW = Constant('O_NOFOLLOW',0o400000)
O_NOATIME = Constant('O_NOATIME',0o1000000)
F_DUPFD = Constant('F_DUPFD',0)
F_GETFD = Constant('F_GETFD',1)
F_SETFD = Constant('F_SETFD',2)
F_GETFL = Constant('F_GETFL',3)
F_SETFL = Constant('F_SETFL',4)
F_GETLK = Constant('F_GETLK',5)
F_SETLK = Constant('F_SETLK',6)
F_SETLKW = Constant('F_SETLKW',7)
F_SETOWN = Constant('F_SETOWN',8)
F_GETOWN = Constant('F_GETOWN',9)
F_SETSIG = Constant('F_SETSIG',10)
F_GETSIG = Constant('F_GETSIG',11)
F_GETLK64 = Constant('F_GETLK64',12)
F_SETLK64 = Constant('F_SETLK64',13)
F_SETLKW64 = Constant('F_SETLKW64',14)
FD_CLOEXEC = Constant('FD_CLOEXEC',1)
F_RDLCK = Constant('F_RDLCK',0)
F_WRLCK = Constant('F_WRLCK',1)
F_UNLCK = Constant('F_UNLCK',2)
F_EXLCK = Constant('F_EXLCK',4)
F_SHLCK = Constant('F_SHLCK',8)
F_INPROGRESS = Constant('F_INPROGRESS',16)
LOCK_SH = Constant('LOCK_SH',1)
LOCK_EX = Constant('LOCK_EX',2)
LOCK_NB = Constant('LOCK_NB',4)
LOCK_UN = Constant('LOCK_UN',8)
LOCK_MAND = Constant('LOCK_MAND',32)
LOCK_READ = Constant('LOCK_READ',64)
LOCK_WRITE = Constant('LOCK_WRITE',128)
LOCK_RW = Constant('LOCK_RW',192)
O_ASYNC = Constant('O_ASYNC',0o20000)
MREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)
MREMAP_FIXED = Constant('MREMAP_FIXED',2)
PROT_READ = Constant('PROT_READ',0x1)
PROT_WRITE = Constant('PROT_WRITE',0x2)
PROT_EXEC = Constant('PROT_EXEC',0x4)
PROT_NONE = Constant('PROT_NONE',0x0)
MAP_SHARED = Constant('MAP_SHARED',0x01)
MAP_PRIVATE = Constant('MAP_PRIVATE',0x02)
MAP_FIXED = Constant('MAP_FIXED',0x10)
MAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)
MAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)
MAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)
MAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)
MAP_LOCKED = Constant('MAP_LOCKED',0x2000)
MAP_NORESERVE = Constant('MAP_NORESERVE',0x4000)
MAP_POPULATE = Constant('MAP_POPULATE',0x8000)
MS_ASYNC = Constant('MS_ASYNC',1)
MS_INVALIDATE = Constant('MS_INVALIDATE',2)
MS_SYNC = Constant('MS_SYNC',4)
MCL_CURRENT = Constant('MCL_CURRENT',1)
MCL_FUTURE = Constant('MCL_FUTURE',2)
MADV_NORMAL = Constant('MADV_NORMAL',0x0)
MADV_RANDOM = Constant('MADV_RANDOM',0x1)
MADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)
MADV_WILLNEED = Constant('MADV_WILLNEED',0x3)
MADV_DONTNEED = Constant('MADV_DONTNEED',0x4)
MAP_ANON = Constant('MAP_ANON',0x20)
MAP_FILE = Constant('MAP_FILE',0)
_SYS_UIO = Constant('_SYS_UIO',1)
SOL_SOCKET = Constant('SOL_SOCKET',1)
SO_DEBUG = Constant('SO_DEBUG',1)
SO_REUSEADDR = Constant('SO_REUSEADDR',2)
@@ -716,29 +782,64 @@ SO_NO_CHECK = Constant('SO_NO_CHECK',11)
SO_PRIORITY = Constant('SO_PRIORITY',12)
SO_LINGER = Constant('SO_LINGER',13)
SO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)
SO_REUSEPORT = Constant('SO_REUSEPORT',15)
SO_PASSCRED = Constant('SO_PASSCRED',16)
SO_PEERCRED = Constant('SO_PEERCRED',17)
SO_RCVLOWAT = Constant('SO_RCVLOWAT',18)
SO_SNDLOWAT = Constant('SO_SNDLOWAT',19)
SO_RCVTIMEO = Constant('SO_RCVTIMEO',20)
SO_SNDTIMEO = Constant('SO_SNDTIMEO',21)
SO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)
SO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)
SO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)
SO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)
SO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)
SO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)
SO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)
SO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)
SO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)
SO_GET_FILTER = Constant('SO_GET_FILTER',26)
SO_PEERNAME = Constant('SO_PEERNAME',28)
SO_TIMESTAMP = Constant('SO_TIMESTAMP',29)
SCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)
SO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)
SO_PEERSEC = Constant('SO_PEERSEC',31)
SO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)
SO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)
SO_PASSSEC = Constant('SO_PASSSEC',34)
SO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)
SCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)
SO_MARK = Constant('SO_MARK',36)
SO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)
SCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)
SO_PROTOCOL = Constant('SO_PROTOCOL',38)
SO_DOMAIN = Constant('SO_DOMAIN',39)
SO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)
SO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)
SCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)
SO_PEEK_OFF = Constant('SO_PEEK_OFF',42)
SO_NOFCS = Constant('SO_NOFCS',43)
SO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)
SO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)
SO_BUSY_POLL = Constant('SO_BUSY_POLL',46)
SO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)
SO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)
SO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)
SO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)
SO_DETACH_BPF = Constant('SO_DETACH_BPF',27)
SO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)
SO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)
SO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)
SCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)
SO_MEMINFO = Constant('SO_MEMINFO',55)
SO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)
SO_COOKIE = Constant('SO_COOKIE',57)
SCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)
SO_PEERGROUPS = Constant('SO_PEERGROUPS',59)
SO_ZEROCOPY = Constant('SO_ZEROCOPY',60)
SOCK_STREAM = Constant('SOCK_STREAM',1)
SOCK_DGRAM = Constant('SOCK_DGRAM',2)
SOCK_RAW = Constant('SOCK_RAW',3)
SOCK_RDM = Constant('SOCK_RDM',4)
SOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)
SOCK_DCCP = Constant('SOCK_DCCP',6)
SOCK_PACKET = Constant('SOCK_PACKET',10)
UIO_FASTIOV = Constant('UIO_FASTIOV',8)
UIO_MAXIOV = Constant('UIO_MAXIOV',1024)
@@ -772,7 +873,25 @@ AF_SNA = Constant('AF_SNA',22)
AF_IRDA = Constant('AF_IRDA',23)
AF_PPPOX = Constant('AF_PPPOX',24)
AF_WANPIPE = Constant('AF_WANPIPE',25)
AF_MAX = Constant('AF_MAX',32)
AF_LLC = Constant('AF_LLC',26)
AF_IB = Constant('AF_IB',27)
AF_MPLS = Constant('AF_MPLS',28)
AF_CAN = Constant('AF_CAN',29)
AF_TIPC = Constant('AF_TIPC',30)
AF_BLUETOOTH = Constant('AF_BLUETOOTH',31)
AF_IUCV = Constant('AF_IUCV',32)
AF_RXRPC = Constant('AF_RXRPC',33)
AF_ISDN = Constant('AF_ISDN',34)
AF_PHONET = Constant('AF_PHONET',35)
AF_IEEE802154 = Constant('AF_IEEE802154',36)
AF_CAIF = Constant('AF_CAIF',37)
AF_ALG = Constant('AF_ALG',38)
AF_NFC = Constant('AF_NFC',39)
AF_VSOCK = Constant('AF_VSOCK',40)
AF_KCM = Constant('AF_KCM',41)
AF_QIPCRTR = Constant('AF_QIPCRTR',42)
AF_SMC = Constant('AF_SMC',43)
AF_MAX = Constant('AF_MAX',44)
PF_UNSPEC = Constant('PF_UNSPEC',0)
PF_UNIX = Constant('PF_UNIX',1)
PF_LOCAL = Constant('PF_LOCAL',1)
@@ -800,7 +919,25 @@ PF_SNA = Constant('PF_SNA',22)
PF_IRDA = Constant('PF_IRDA',23)
PF_PPPOX = Constant('PF_PPPOX',24)
PF_WANPIPE = Constant('PF_WANPIPE',25)
PF_MAX = Constant('PF_MAX',32)
PF_LLC = Constant('PF_LLC',26)
PF_IB = Constant('PF_IB',27)
PF_MPLS = Constant('PF_MPLS',28)
PF_CAN = Constant('PF_CAN',29)
PF_TIPC = Constant('PF_TIPC',30)
PF_BLUETOOTH = Constant('PF_BLUETOOTH',31)
PF_IUCV = Constant('PF_IUCV',32)
PF_RXRPC = Constant('PF_RXRPC',33)
PF_ISDN = Constant('PF_ISDN',34)
PF_PHONET = Constant('PF_PHONET',35)
PF_IEEE802154 = Constant('PF_IEEE802154',36)
PF_CAIF = Constant('PF_CAIF',37)
PF_ALG = Constant('PF_ALG',38)
PF_NFC = Constant('PF_NFC',39)
PF_VSOCK = Constant('PF_VSOCK',40)
PF_KCM = Constant('PF_KCM',41)
PF_QIPCRTR = Constant('PF_QIPCRTR',42)
PF_SMC = Constant('PF_SMC',43)
PF_MAX = Constant('PF_MAX',44)
SOMAXCONN = Constant('SOMAXCONN',128)
MSG_OOB = Constant('MSG_OOB',1)
MSG_PEEK = Constant('MSG_PEEK',2)
@@ -813,18 +950,26 @@ MSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)
MSG_EOR = Constant('MSG_EOR',0x80)
MSG_WAITALL = Constant('MSG_WAITALL',0x100)
MSG_FIN = Constant('MSG_FIN',0x200)
MSG_EOF = Constant('MSG_EOF',0x200)
MSG_SYN = Constant('MSG_SYN',0x400)
MSG_CONFIRM = Constant('MSG_CONFIRM',0x800)
MSG_RST = Constant('MSG_RST',0x1000)
MSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)
MSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)
MSG_MORE = Constant('MSG_MORE',0x8000)
MSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)
MSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)
MSG_BATCH = Constant('MSG_BATCH',0x40000)
MSG_EOF = Constant('MSG_EOF',0x200)
MSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)
MSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)
MSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)
SOL_IP = Constant('SOL_IP',0)
SOL_TCP = Constant('SOL_TCP',6)
SOL_UDP = Constant('SOL_UDP',17)
SOL_IPV6 = Constant('SOL_IPV6',41)
SOL_ICMPV6 = Constant('SOL_ICMPV6',58)
SOL_SCTP = Constant('SOL_SCTP',132)
SOL_UDPLITE = Constant('SOL_UDPLITE',136)
SOL_RAW = Constant('SOL_RAW',255)
SOL_IPX = Constant('SOL_IPX',256)
SOL_AX25 = Constant('SOL_AX25',257)
@@ -837,6 +982,22 @@ SOL_PACKET = Constant('SOL_PACKET',263)
SOL_ATM = Constant('SOL_ATM',264)
SOL_AAL = Constant('SOL_AAL',265)
SOL_IRDA = Constant('SOL_IRDA',266)
SOL_NETBEUI = Constant('SOL_NETBEUI',267)
SOL_LLC = Constant('SOL_LLC',268)
SOL_DCCP = Constant('SOL_DCCP',269)
SOL_NETLINK = Constant('SOL_NETLINK',270)
SOL_TIPC = Constant('SOL_TIPC',271)
SOL_RXRPC = Constant('SOL_RXRPC',272)
SOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)
SOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)
SOL_PNPIPE = Constant('SOL_PNPIPE',275)
SOL_RDS = Constant('SOL_RDS',276)
SOL_IUCV = Constant('SOL_IUCV',277)
SOL_CAIF = Constant('SOL_CAIF',278)
SOL_ALG = Constant('SOL_ALG',279)
SOL_NFC = Constant('SOL_NFC',280)
SOL_KCM = Constant('SOL_KCM',281)
SOL_TLS = Constant('SOL_TLS',282)
IPX_TYPE = Constant('IPX_TYPE',1)
SHUT_RD = Constant('SHUT_RD',0)
SHUT_WR = Constant('SHUT_WR',1)
@@ -860,6 +1021,10 @@ EAI_SYSTEM = Constant('EAI_SYSTEM',-11)
AI_NUMERICHOST = Constant('AI_NUMERICHOST',1)
AI_CANONNAME = Constant('AI_CANONNAME',2)
AI_PASSIVE = Constant('AI_PASSIVE',4)
AI_NUMERICSERV = Constant('AI_NUMERICSERV',8)
AI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)
AI_V4MAPPED = Constant('AI_V4MAPPED',32)
AI_ALL = Constant('AI_ALL',64)
SIOCADDRT = Constant('SIOCADDRT',0x890B)
SIOCDELRT = Constant('SIOCDELRT',0x890C)
SIOCRTMSG = Constant('SIOCRTMSG',0x890D)
@@ -916,6 +1081,130 @@ SIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)
SIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)
SIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)
SIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)
F_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)
O_ACCMODE = Constant('O_ACCMODE',0o003)
O_RDONLY = Constant('O_RDONLY',0o0)
O_WRONLY = Constant('O_WRONLY',0o1)
O_RDWR = Constant('O_RDWR',0o2)
O_CREAT = Constant('O_CREAT',0o100)
O_EXCL = Constant('O_EXCL',0o200)
O_NOCTTY = Constant('O_NOCTTY',0o400)
O_TRUNC = Constant('O_TRUNC',0o1000)
O_APPEND = Constant('O_APPEND',0o2000)
O_NONBLOCK = Constant('O_NONBLOCK',0o4000)
O_NDELAY = Constant('O_NDELAY',0o4000)
O_DSYNC = Constant('O_DSYNC',0o10000)
FASYNC = Constant('FASYNC',0o20000)
O_DIRECT = Constant('O_DIRECT',0o40000)
O_LARGEFILE = Constant('O_LARGEFILE',0o100000)
O_DIRECTORY = Constant('O_DIRECTORY',0o200000)
O_NOFOLLOW = Constant('O_NOFOLLOW',0o400000)
O_NOATIME = Constant('O_NOATIME',0o1000000)
O_CLOEXEC = Constant('O_CLOEXEC',0o2000000)
O_SYNC = Constant('O_SYNC',(0o10000|0o4000000))
O_PATH = Constant('O_PATH',0o10000000)
__O_TMPFILE = Constant('__O_TMPFILE',0o20000000)
F_DUPFD = Constant('F_DUPFD',0)
F_GETFD = Constant('F_GETFD',1)
F_SETFD = Constant('F_SETFD',2)
F_GETFL = Constant('F_GETFL',3)
F_SETFL = Constant('F_SETFL',4)
F_GETLK = Constant('F_GETLK',5)
F_SETLK = Constant('F_SETLK',6)
F_SETLKW = Constant('F_SETLKW',7)
F_SETOWN = Constant('F_SETOWN',8)
F_GETOWN = Constant('F_GETOWN',9)
F_SETSIG = Constant('F_SETSIG',10)
F_GETSIG = Constant('F_GETSIG',11)
F_GETLK64 = Constant('F_GETLK64',12)
F_SETLK64 = Constant('F_SETLK64',13)
F_SETLKW64 = Constant('F_SETLKW64',14)
FD_CLOEXEC = Constant('FD_CLOEXEC',1)
F_RDLCK = Constant('F_RDLCK',0)
F_WRLCK = Constant('F_WRLCK',1)
F_UNLCK = Constant('F_UNLCK',2)
F_EXLCK = Constant('F_EXLCK',4)
F_SHLCK = Constant('F_SHLCK',8)
F_INPROGRESS = Constant('F_INPROGRESS',16)
LOCK_SH = Constant('LOCK_SH',1)
LOCK_EX = Constant('LOCK_EX',2)
LOCK_NB = Constant('LOCK_NB',4)
LOCK_UN = Constant('LOCK_UN',8)
LOCK_MAND = Constant('LOCK_MAND',32)
LOCK_READ = Constant('LOCK_READ',64)
LOCK_WRITE = Constant('LOCK_WRITE',128)
LOCK_RW = Constant('LOCK_RW',192)
O_TMPFILE = Constant('O_TMPFILE',(0o20000000 | 0o200000))
O_ASYNC = Constant('O_ASYNC',0o20000)
F_SETOWN_EX = Constant('F_SETOWN_EX',15)
F_GETOWN_EX = Constant('F_GETOWN_EX',16)
F_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)
F_OFD_GETLK = Constant('F_OFD_GETLK',36)
F_OFD_SETLK = Constant('F_OFD_SETLK',37)
F_OFD_SETLKW = Constant('F_OFD_SETLKW',38)
F_OWNER_TID = Constant('F_OWNER_TID',0)
F_OWNER_PID = Constant('F_OWNER_PID',1)
F_OWNER_PGRP = Constant('F_OWNER_PGRP',2)
AT_FDCWD = Constant('AT_FDCWD',-100)
AT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)
AT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)
AT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)
AT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)
AT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)
AT_EACCESS = Constant('AT_EACCESS',0x200)
MREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)
MREMAP_FIXED = Constant('MREMAP_FIXED',2)
PROT_READ = Constant('PROT_READ',0x1)
PROT_WRITE = Constant('PROT_WRITE',0x2)
PROT_EXEC = Constant('PROT_EXEC',0x4)
PROT_SEM = Constant('PROT_SEM',0x8)
PROT_NONE = Constant('PROT_NONE',0x0)
PROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)
PROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)
MAP_SHARED = Constant('MAP_SHARED',0x01)
MAP_PRIVATE = Constant('MAP_PRIVATE',0x02)
MAP_TYPE = Constant('MAP_TYPE',0xf)
MADV_REMOVE = Constant('MADV_REMOVE',9)
MADV_DONTFORK = Constant('MADV_DONTFORK',10)
MADV_DOFORK = Constant('MADV_DOFORK',11)
MADV_MERGEABLE = Constant('MADV_MERGEABLE',12)
MADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)
MADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)
MADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)
MADV_DONTDUMP = Constant('MADV_DONTDUMP',16)
MADV_DODUMP = Constant('MADV_DODUMP',17)
MADV_HWPOISON = Constant('MADV_HWPOISON',100)
MADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)
MLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)
MAP_FIXED = Constant('MAP_FIXED',0x10)
MAP_ANONYMOUS = Constant('MAP_ANONYMOUS',0x20)
MAP_GROWSDOWN = Constant('MAP_GROWSDOWN',0x0100)
MAP_DENYWRITE = Constant('MAP_DENYWRITE',0x0800)
MAP_EXECUTABLE = Constant('MAP_EXECUTABLE',0x1000)
MAP_LOCKED = Constant('MAP_LOCKED',0x2000)
MAP_NORESERVE = Constant('MAP_NORESERVE',0x4000)
MAP_POPULATE = Constant('MAP_POPULATE',0x8000)
MAP_NONBLOCK = Constant('MAP_NONBLOCK',0x10000)
MAP_STACK = Constant('MAP_STACK',0x20000)
MAP_HUGETLB = Constant('MAP_HUGETLB',0x40000)
MS_ASYNC = Constant('MS_ASYNC',1)
MS_INVALIDATE = Constant('MS_INVALIDATE',2)
MS_SYNC = Constant('MS_SYNC',4)
MCL_CURRENT = Constant('MCL_CURRENT',1)
MCL_FUTURE = Constant('MCL_FUTURE',2)
MCL_ONFAULT = Constant('MCL_ONFAULT',4)
MADV_NORMAL = Constant('MADV_NORMAL',0x0)
MADV_RANDOM = Constant('MADV_RANDOM',0x1)
MADV_SEQUENTIAL = Constant('MADV_SEQUENTIAL',0x2)
MADV_WILLNEED = Constant('MADV_WILLNEED',0x3)
MADV_DONTNEED = Constant('MADV_DONTNEED',0x4)
MAP_ANON = Constant('MAP_ANON',0x20)
MAP_FILE = Constant('MAP_FILE',0)
POSIX_MADV_NORMAL = Constant('POSIX_MADV_NORMAL',0x0)
POSIX_MADV_SEQUENTIAL = Constant('POSIX_MADV_SEQUENTIAL',0x2)
POSIX_MADV_RANDOM = Constant('POSIX_MADV_RANDOM',0x1)
POSIX_MADV_WILLNEED = Constant('POSIX_MADV_WILLNEED',0x3)
POSIX_MADV_DONTNEED = Constant('POSIX_MADV_DONTNEED',0x4)
PTRACE_TRACEME = Constant('PTRACE_TRACEME',0)
PTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)
PTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)
@@ -986,6 +1275,7 @@ PTRACE_GETFPXREGS = Constant('PTRACE_GETFPXREGS',18)
PTRACE_SETFPXREGS = Constant('PTRACE_SETFPXREGS',19)
PTRACE_SETOPTIONS = Constant('PTRACE_SETOPTIONS',21)
PTRACE_O_TRACESYSGOOD = Constant('PTRACE_O_TRACESYSGOOD',0x00000001)
SYS_accept4 = Constant('SYS_accept4',364)
SYS_access = Constant('SYS_access',33)
SYS_acct = Constant('SYS_acct',51)
SYS_add_key = Constant('SYS_add_key',286)
@@ -993,6 +1283,8 @@ SYS_adjtimex = Constant('SYS_adjtimex',124)
SYS_afs_syscall = Constant('SYS_afs_syscall',137)
SYS_alarm = Constant('SYS_alarm',27)
SYS_bdflush = Constant('SYS_bdflush',134)
SYS_bind = Constant('SYS_bind',361)
SYS_bpf = Constant('SYS_bpf',357)
SYS_break = Constant('SYS_break',17)
SYS_brk = Constant('SYS_brk',45)
SYS_capget = Constant('SYS_capget',184)
@@ -1002,12 +1294,21 @@ SYS_chmod = Constant('SYS_chmod',15)
SYS_chown = Constant('SYS_chown',182)
SYS_chown32 = Constant('SYS_chown32',212)
SYS_chroot = Constant('SYS_chroot',61)
SYS_clock_adjtime = Constant('SYS_clock_adjtime',343)
SYS_clock_adjtime64 = Constant('SYS_clock_adjtime64',405)
SYS_clock_getres = Constant('SYS_clock_getres',(259+7))
SYS_clock_getres_time64 = Constant('SYS_clock_getres_time64',406)
SYS_clock_gettime = Constant('SYS_clock_gettime',(259+6))
SYS_clock_gettime64 = Constant('SYS_clock_gettime64',403)
SYS_clock_nanosleep = Constant('SYS_clock_nanosleep',(259+8))
SYS_clock_nanosleep_time64 = Constant('SYS_clock_nanosleep_time64',407)
SYS_clock_settime = Constant('SYS_clock_settime',(259+5))
SYS_clock_settime64 = Constant('SYS_clock_settime64',404)
SYS_clone = Constant('SYS_clone',120)
SYS_clone3 = Constant('SYS_clone3',435)
SYS_close = Constant('SYS_close',6)
SYS_connect = Constant('SYS_connect',362)
SYS_copy_file_range = Constant('SYS_copy_file_range',377)
SYS_creat = Constant('SYS_creat',8)
SYS_create_module = Constant('SYS_create_module',127)
SYS_delete_module = Constant('SYS_delete_module',129)
@@ -1022,6 +1323,7 @@ SYS_epoll_wait = Constant('SYS_epoll_wait',256)
SYS_eventfd = Constant('SYS_eventfd',323)
SYS_eventfd2 = Constant('SYS_eventfd2',328)
SYS_execve = Constant('SYS_execve',11)
SYS_execveat = Constant('SYS_execveat',358)
SYS_exit = Constant('SYS_exit',1)
SYS_exit_group = Constant('SYS_exit_group',252)
SYS_faccessat = Constant('SYS_faccessat',307)
@@ -1040,11 +1342,16 @@ SYS_fcntl = Constant('SYS_fcntl',55)
SYS_fcntl64 = Constant('SYS_fcntl64',221)
SYS_fdatasync = Constant('SYS_fdatasync',148)
SYS_fgetxattr = Constant('SYS_fgetxattr',231)
SYS_finit_module = Constant('SYS_finit_module',350)
SYS_flistxattr = Constant('SYS_flistxattr',234)
SYS_flock = Constant('SYS_flock',143)
SYS_fork = Constant('SYS_fork',2)
SYS_fremovexattr = Constant('SYS_fremovexattr',237)
SYS_fsconfig = Constant('SYS_fsconfig',431)
SYS_fsetxattr = Constant('SYS_fsetxattr',228)
SYS_fsmount = Constant('SYS_fsmount',432)
SYS_fsopen = Constant('SYS_fsopen',430)
SYS_fspick = Constant('SYS_fspick',433)
SYS_fstat = Constant('SYS_fstat',108)
SYS_fstat64 = Constant('SYS_fstat64',197)
SYS_fstatat64 = Constant('SYS_fstatat64',300)
@@ -1055,6 +1362,7 @@ SYS_ftime = Constant('SYS_ftime',35)
SYS_ftruncate = Constant('SYS_ftruncate',93)
SYS_ftruncate64 = Constant('SYS_ftruncate64',194)
SYS_futex = Constant('SYS_futex',240)
SYS_futex_time64 = Constant('SYS_futex_time64',422)
SYS_futimesat = Constant('SYS_futimesat',299)
SYS_getcpu = Constant('SYS_getcpu',318)
SYS_getcwd = Constant('SYS_getcwd',183)
@@ -1071,12 +1379,14 @@ SYS_getgroups32 = Constant('SYS_getgroups32',205)
SYS_getitimer = Constant('SYS_getitimer',105)
SYS_get_kernel_syms = Constant('SYS_get_kernel_syms',130)
SYS_get_mempolicy = Constant('SYS_get_mempolicy',275)
SYS_getpeername = Constant('SYS_getpeername',368)
SYS_getpgid = Constant('SYS_getpgid',132)
SYS_getpgrp = Constant('SYS_getpgrp',65)
SYS_getpid = Constant('SYS_getpid',20)
SYS_getpmsg = Constant('SYS_getpmsg',188)
SYS_getppid = Constant('SYS_getppid',64)
SYS_getpriority = Constant('SYS_getpriority',96)
SYS_getrandom = Constant('SYS_getrandom',355)
SYS_getresgid = Constant('SYS_getresgid',171)
SYS_getresgid32 = Constant('SYS_getresgid32',211)
SYS_getresuid = Constant('SYS_getresuid',165)
@@ -1085,6 +1395,8 @@ SYS_getrlimit = Constant('SYS_getrlimit',76)
SYS_get_robust_list = Constant('SYS_get_robust_list',312)
SYS_getrusage = Constant('SYS_getrusage',77)
SYS_getsid = Constant('SYS_getsid',147)
SYS_getsockname = Constant('SYS_getsockname',367)
SYS_getsockopt = Constant('SYS_getsockopt',365)
SYS_get_thread_area = Constant('SYS_get_thread_area',244)
SYS_gettid = Constant('SYS_gettid',224)
SYS_gettimeofday = Constant('SYS_gettimeofday',78)
@@ -1092,6 +1404,10 @@ SYS_getuid = Constant('SYS_getuid',24)
SYS_getuid32 = Constant('SYS_getuid32',199)
SYS_getxattr = Constant('SYS_getxattr',229)
SYS_gtty = Constant('SYS_gtty',32)
SYS_ia32_arch_prctl = Constant('SYS_ia32_arch_prctl',384)
SYS_ia32_io_pgetevents = Constant('SYS_ia32_io_pgetevents',385)
SYS_ia32_rseq = Constant('SYS_ia32_rseq',386)
SYS_ia32_statx = Constant('SYS_ia32_statx',383)
SYS_idle = Constant('SYS_idle',112)
SYS_init_module = Constant('SYS_init_module',128)
SYS_inotify_add_watch = Constant('SYS_inotify_add_watch',292)
@@ -1103,12 +1419,17 @@ SYS_ioctl = Constant('SYS_ioctl',54)
SYS_io_destroy = Constant('SYS_io_destroy',246)
SYS_io_getevents = Constant('SYS_io_getevents',247)
SYS_ioperm = Constant('SYS_ioperm',101)
SYS_io_pgetevents_time64 = Constant('SYS_io_pgetevents_time64',416)
SYS_iopl = Constant('SYS_iopl',110)
SYS_ioprio_get = Constant('SYS_ioprio_get',290)
SYS_ioprio_set = Constant('SYS_ioprio_set',289)
SYS_io_setup = Constant('SYS_io_setup',245)
SYS_io_submit = Constant('SYS_io_submit',248)
SYS_io_uring_enter = Constant('SYS_io_uring_enter',426)
SYS_io_uring_register = Constant('SYS_io_uring_register',427)
SYS_io_uring_setup = Constant('SYS_io_uring_setup',425)
SYS_ipc = Constant('SYS_ipc',117)
SYS_kcmp = Constant('SYS_kcmp',349)
SYS_keyctl = Constant('SYS_keyctl',288)
SYS_kill = Constant('SYS_kill',37)
SYS_lchown = Constant('SYS_lchown',16)
@@ -1116,6 +1437,7 @@ SYS_lchown32 = Constant('SYS_lchown32',198)
SYS_lgetxattr = Constant('SYS_lgetxattr',230)
SYS_link = Constant('SYS_link',9)
SYS_linkat = Constant('SYS_linkat',303)
SYS_listen = Constant('SYS_listen',363)
SYS_listxattr = Constant('SYS_listxattr',232)
SYS_llistxattr = Constant('SYS_llistxattr',233)
SYS__llseek = Constant('SYS__llseek',140)
@@ -1129,6 +1451,8 @@ SYS_lstat64 = Constant('SYS_lstat64',196)
SYS_madvise = Constant('SYS_madvise',219)
SYS_madvise1 = Constant('SYS_madvise1',219)
SYS_mbind = Constant('SYS_mbind',274)
SYS_membarrier = Constant('SYS_membarrier',375)
SYS_memfd_create = Constant('SYS_memfd_create',356)
SYS_migrate_pages = Constant('SYS_migrate_pages',294)
SYS_mincore = Constant('SYS_mincore',218)
SYS_mkdir = Constant('SYS_mkdir',39)
@@ -1136,11 +1460,13 @@ SYS_mkdirat = Constant('SYS_mkdirat',296)
SYS_mknod = Constant('SYS_mknod',14)
SYS_mknodat = Constant('SYS_mknodat',297)
SYS_mlock = Constant('SYS_mlock',150)
SYS_mlock2 = Constant('SYS_mlock2',376)
SYS_mlockall = Constant('SYS_mlockall',152)
SYS_mmap = Constant('SYS_mmap',90)
SYS_mmap2 = Constant('SYS_mmap2',192)
SYS_modify_ldt = Constant('SYS_modify_ldt',123)
SYS_mount = Constant('SYS_mount',21)
SYS_move_mount = Constant('SYS_move_mount',429)
SYS_move_pages = Constant('SYS_move_pages',317)
SYS_mprotect = Constant('SYS_mprotect',125)
SYS_mpx = Constant('SYS_mpx',56)
@@ -1148,13 +1474,20 @@ SYS_mq_getsetattr = Constant('SYS_mq_getsetattr',(277+5))
SYS_mq_notify = Constant('SYS_mq_notify',(277+4))
SYS_mq_open = Constant('SYS_mq_open',277)
SYS_mq_timedreceive = Constant('SYS_mq_timedreceive',(277+3))
SYS_mq_timedreceive_time64 = Constant('SYS_mq_timedreceive_time64',419)
SYS_mq_timedsend = Constant('SYS_mq_timedsend',(277+2))
SYS_mq_timedsend_time64 = Constant('SYS_mq_timedsend_time64',418)
SYS_mq_unlink = Constant('SYS_mq_unlink',(277+1))
SYS_mremap = Constant('SYS_mremap',163)
SYS_msgctl = Constant('SYS_msgctl',402)
SYS_msgget = Constant('SYS_msgget',399)
SYS_msgrcv = Constant('SYS_msgrcv',401)
SYS_msgsnd = Constant('SYS_msgsnd',400)
SYS_msync = Constant('SYS_msync',144)
SYS_munlock = Constant('SYS_munlock',151)
SYS_munlockall = Constant('SYS_munlockall',153)
SYS_munmap = Constant('SYS_munmap',91)
SYS_name_to_handle_at = Constant('SYS_name_to_handle_at',341)
SYS_nanosleep = Constant('SYS_nanosleep',162)
SYS__newselect = Constant('SYS__newselect',142)
SYS_nfsservctl = Constant('SYS_nfsservctl',169)
@@ -1166,25 +1499,40 @@ SYS_oldstat = Constant('SYS_oldstat',18)
SYS_olduname = Constant('SYS_olduname',109)
SYS_open = Constant('SYS_open',5)
SYS_openat = Constant('SYS_openat',295)
SYS_openat2 = Constant('SYS_openat2',437)
SYS_open_by_handle_at = Constant('SYS_open_by_handle_at',342)
SYS_open_tree = Constant('SYS_open_tree',428)
SYS_pause = Constant('SYS_pause',29)
SYS_perf_event_open = Constant('SYS_perf_event_open',336)
SYS_personality = Constant('SYS_personality',136)
SYS_pidfd_getfd = Constant('SYS_pidfd_getfd',438)
SYS_pidfd_open = Constant('SYS_pidfd_open',434)
SYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)
SYS_pipe = Constant('SYS_pipe',42)
SYS_pipe2 = Constant('SYS_pipe2',331)
SYS_pivot_root = Constant('SYS_pivot_root',217)
SYS_pkey_alloc = Constant('SYS_pkey_alloc',381)
SYS_pkey_free = Constant('SYS_pkey_free',382)
SYS_pkey_mprotect = Constant('SYS_pkey_mprotect',380)
SYS_poll = Constant('SYS_poll',168)
SYS_ppoll = Constant('SYS_ppoll',309)
SYS_ppoll_time64 = Constant('SYS_ppoll_time64',414)
SYS_prctl = Constant('SYS_prctl',172)
SYS_pread = Constant('SYS_pread',180)
SYS_preadv = Constant('SYS_preadv',333)
SYS_preadv2 = Constant('SYS_preadv2',378)
SYS_prlimit64 = Constant('SYS_prlimit64',340)
SYS_process_vm_readv = Constant('SYS_process_vm_readv',347)
SYS_process_vm_writev = Constant('SYS_process_vm_writev',348)
SYS_prof = Constant('SYS_prof',44)
SYS_profil = Constant('SYS_profil',98)
SYS_pselect6 = Constant('SYS_pselect6',308)
SYS_pselect6_time64 = Constant('SYS_pselect6_time64',413)
SYS_ptrace = Constant('SYS_ptrace',26)
SYS_putpmsg = Constant('SYS_putpmsg',189)
SYS_pwrite = Constant('SYS_pwrite',181)
SYS_pwritev = Constant('SYS_pwritev',334)
SYS_pwritev2 = Constant('SYS_pwritev2',379)
SYS_query_module = Constant('SYS_query_module',167)
SYS_quotactl = Constant('SYS_quotactl',131)
SYS_read = Constant('SYS_read',3)
@@ -1194,11 +1542,15 @@ SYS_readlink = Constant('SYS_readlink',85)
SYS_readlinkat = Constant('SYS_readlinkat',305)
SYS_readv = Constant('SYS_readv',145)
SYS_reboot = Constant('SYS_reboot',88)
SYS_recvfrom = Constant('SYS_recvfrom',371)
SYS_recvmmsg = Constant('SYS_recvmmsg',337)
SYS_recvmmsg_time64 = Constant('SYS_recvmmsg_time64',417)
SYS_recvmsg = Constant('SYS_recvmsg',372)
SYS_remap_file_pages = Constant('SYS_remap_file_pages',257)
SYS_removexattr = Constant('SYS_removexattr',235)
SYS_rename = Constant('SYS_rename',38)
SYS_renameat = Constant('SYS_renameat',302)
SYS_renameat2 = Constant('SYS_renameat2',353)
SYS_request_key = Constant('SYS_request_key',287)
SYS_rmdir = Constant('SYS_rmdir',40)
SYS_rt_sigaction = Constant('SYS_rt_sigaction',174)
@@ -1208,20 +1560,31 @@ SYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',178)
SYS_rt_sigreturn = Constant('SYS_rt_sigreturn',173)
SYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',179)
SYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',177)
SYS_rt_sigtimedwait_time64 = Constant('SYS_rt_sigtimedwait_time64',421)
SYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',335)
SYS_sched_getaffinity = Constant('SYS_sched_getaffinity',242)
SYS_sched_getattr = Constant('SYS_sched_getattr',352)
SYS_sched_getparam = Constant('SYS_sched_getparam',155)
SYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',159)
SYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',160)
SYS_sched_getscheduler = Constant('SYS_sched_getscheduler',157)
SYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',161)
SYS_sched_rr_get_interval_time64 = Constant('SYS_sched_rr_get_interval_time64',423)
SYS_sched_setaffinity = Constant('SYS_sched_setaffinity',241)
SYS_sched_setattr = Constant('SYS_sched_setattr',351)
SYS_sched_setparam = Constant('SYS_sched_setparam',154)
SYS_sched_setscheduler = Constant('SYS_sched_setscheduler',156)
SYS_sched_yield = Constant('SYS_sched_yield',158)
SYS_seccomp = Constant('SYS_seccomp',354)
SYS_select = Constant('SYS_select',82)
SYS_semctl = Constant('SYS_semctl',394)
SYS_semget = Constant('SYS_semget',393)
SYS_semtimedop_time64 = Constant('SYS_semtimedop_time64',420)
SYS_sendfile = Constant('SYS_sendfile',187)
SYS_sendfile64 = Constant('SYS_sendfile64',239)
SYS_sendmmsg = Constant('SYS_sendmmsg',345)
SYS_sendmsg = Constant('SYS_sendmsg',370)
SYS_sendto = Constant('SYS_sendto',369)
SYS_setdomainname = Constant('SYS_setdomainname',121)
SYS_setfsgid = Constant('SYS_setfsgid',139)
SYS_setfsgid32 = Constant('SYS_setfsgid32',216)
@@ -1234,6 +1597,7 @@ SYS_setgroups32 = Constant('SYS_setgroups32',206)
SYS_sethostname = Constant('SYS_sethostname',74)
SYS_setitimer = Constant('SYS_setitimer',104)
SYS_set_mempolicy = Constant('SYS_set_mempolicy',276)
SYS_setns = Constant('SYS_setns',346)
SYS_setpgid = Constant('SYS_setpgid',57)
SYS_setpriority = Constant('SYS_setpriority',97)
SYS_setregid = Constant('SYS_setregid',71)
@@ -1247,6 +1611,7 @@ SYS_setreuid32 = Constant('SYS_setreuid32',203)
SYS_setrlimit = Constant('SYS_setrlimit',75)
SYS_set_robust_list = Constant('SYS_set_robust_list',311)
SYS_setsid = Constant('SYS_setsid',66)
SYS_setsockopt = Constant('SYS_setsockopt',366)
SYS_set_thread_area = Constant('SYS_set_thread_area',243)
SYS_set_tid_address = Constant('SYS_set_tid_address',258)
SYS_settimeofday = Constant('SYS_settimeofday',79)
@@ -1254,6 +1619,11 @@ SYS_setuid = Constant('SYS_setuid',23)
SYS_setuid32 = Constant('SYS_setuid32',213)
SYS_setxattr = Constant('SYS_setxattr',226)
SYS_sgetmask = Constant('SYS_sgetmask',68)
SYS_shmat = Constant('SYS_shmat',397)
SYS_shmctl = Constant('SYS_shmctl',396)
SYS_shmdt = Constant('SYS_shmdt',398)
SYS_shmget = Constant('SYS_shmget',395)
SYS_shutdown = Constant('SYS_shutdown',373)
SYS_sigaction = Constant('SYS_sigaction',67)
SYS_sigaltstack = Constant('SYS_sigaltstack',186)
SYS_signal = Constant('SYS_signal',48)
@@ -1263,7 +1633,9 @@ SYS_sigpending = Constant('SYS_sigpending',73)
SYS_sigprocmask = Constant('SYS_sigprocmask',126)
SYS_sigreturn = Constant('SYS_sigreturn',119)
SYS_sigsuspend = Constant('SYS_sigsuspend',72)
SYS_socket = Constant('SYS_socket',359)
SYS_socketcall = Constant('SYS_socketcall',102)
SYS_socketpair = Constant('SYS_socketpair',360)
SYS_splice = Constant('SYS_splice',313)
SYS_ssetmask = Constant('SYS_ssetmask',69)
SYS_stat = Constant('SYS_stat',106)
@@ -1278,6 +1650,7 @@ SYS_symlink = Constant('SYS_symlink',83)
SYS_symlinkat = Constant('SYS_symlinkat',304)
SYS_sync = Constant('SYS_sync',36)
SYS_sync_file_range = Constant('SYS_sync_file_range',314)
SYS_syncfs = Constant('SYS_syncfs',344)
SYS__sysctl = Constant('SYS__sysctl',149)
SYS_sysfs = Constant('SYS_sysfs',135)
SYS_sysinfo = Constant('SYS_sysinfo',116)
@@ -1290,10 +1663,14 @@ SYS_timer_create = Constant('SYS_timer_create',259)
SYS_timer_delete = Constant('SYS_timer_delete',(259+4))
SYS_timerfd = Constant('SYS_timerfd',322)
SYS_timerfd_gettime = Constant('SYS_timerfd_gettime',326)
SYS_timerfd_gettime64 = Constant('SYS_timerfd_gettime64',410)
SYS_timerfd_settime = Constant('SYS_timerfd_settime',325)
SYS_timerfd_settime64 = Constant('SYS_timerfd_settime64',411)
SYS_timer_getoverrun = Constant('SYS_timer_getoverrun',(259+3))
SYS_timer_gettime = Constant('SYS_timer_gettime',(259+2))
SYS_timer_gettime64 = Constant('SYS_timer_gettime64',408)
SYS_timer_settime = Constant('SYS_timer_settime',(259+1))
SYS_timer_settime64 = Constant('SYS_timer_settime64',409)
SYS_times = Constant('SYS_times',43)
SYS_tkill = Constant('SYS_tkill',238)
SYS_truncate = Constant('SYS_truncate',92)
@@ -1308,9 +1685,11 @@ SYS_unlink = Constant('SYS_unlink',10)
SYS_unlinkat = Constant('SYS_unlinkat',301)
SYS_unshare = Constant('SYS_unshare',310)
SYS_uselib = Constant('SYS_uselib',86)
SYS_userfaultfd = Constant('SYS_userfaultfd',374)
SYS_ustat = Constant('SYS_ustat',62)
SYS_utime = Constant('SYS_utime',30)
SYS_utimensat = Constant('SYS_utimensat',320)
SYS_utimensat_time64 = Constant('SYS_utimensat_time64',412)
SYS_utimes = Constant('SYS_utimes',271)
SYS_vfork = Constant('SYS_vfork',190)
SYS_vhangup = Constant('SYS_vhangup',111)
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+420 -20
View File
@@ -1,5 +1,4 @@
from pwnlib.constants.constant import Constant
__NR_exit = Constant('__NR_exit',1)
__NR_fork = Constant('__NR_fork',2)
__NR_read = Constant('__NR_read',3)
@@ -306,6 +305,114 @@ __NR_fallocate = Constant('__NR_fallocate',309)
__NR_subpage_prot = Constant('__NR_subpage_prot',310)
__NR_timerfd_settime = Constant('__NR_timerfd_settime',311)
__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',312)
__NR_signalfd4 = Constant('__NR_signalfd4',313)
__NR_eventfd2 = Constant('__NR_eventfd2',314)
__NR_epoll_create1 = Constant('__NR_epoll_create1',315)
__NR_dup3 = Constant('__NR_dup3',316)
__NR_pipe2 = Constant('__NR_pipe2',317)
__NR_inotify_init1 = Constant('__NR_inotify_init1',318)
__NR_perf_event_open = Constant('__NR_perf_event_open',319)
__NR_preadv = Constant('__NR_preadv',320)
__NR_pwritev = Constant('__NR_pwritev',321)
__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',322)
__NR_fanotify_init = Constant('__NR_fanotify_init',323)
__NR_fanotify_mark = Constant('__NR_fanotify_mark',324)
__NR_prlimit64 = Constant('__NR_prlimit64',325)
__NR_socket = Constant('__NR_socket',326)
__NR_bind = Constant('__NR_bind',327)
__NR_connect = Constant('__NR_connect',328)
__NR_listen = Constant('__NR_listen',329)
__NR_accept = Constant('__NR_accept',330)
__NR_getsockname = Constant('__NR_getsockname',331)
__NR_getpeername = Constant('__NR_getpeername',332)
__NR_socketpair = Constant('__NR_socketpair',333)
__NR_send = Constant('__NR_send',334)
__NR_sendto = Constant('__NR_sendto',335)
__NR_recv = Constant('__NR_recv',336)
__NR_recvfrom = Constant('__NR_recvfrom',337)
__NR_shutdown = Constant('__NR_shutdown',338)
__NR_setsockopt = Constant('__NR_setsockopt',339)
__NR_getsockopt = Constant('__NR_getsockopt',340)
__NR_sendmsg = Constant('__NR_sendmsg',341)
__NR_recvmsg = Constant('__NR_recvmsg',342)
__NR_recvmmsg = Constant('__NR_recvmmsg',343)
__NR_accept4 = Constant('__NR_accept4',344)
__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',345)
__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',346)
__NR_clock_adjtime = Constant('__NR_clock_adjtime',347)
__NR_syncfs = Constant('__NR_syncfs',348)
__NR_sendmmsg = Constant('__NR_sendmmsg',349)
__NR_setns = Constant('__NR_setns',350)
__NR_process_vm_readv = Constant('__NR_process_vm_readv',351)
__NR_process_vm_writev = Constant('__NR_process_vm_writev',352)
__NR_finit_module = Constant('__NR_finit_module',353)
__NR_kcmp = Constant('__NR_kcmp',354)
__NR_sched_setattr = Constant('__NR_sched_setattr',355)
__NR_sched_getattr = Constant('__NR_sched_getattr',356)
__NR_renameat2 = Constant('__NR_renameat2',357)
__NR_seccomp = Constant('__NR_seccomp',358)
__NR_getrandom = Constant('__NR_getrandom',359)
__NR_memfd_create = Constant('__NR_memfd_create',360)
__NR_bpf = Constant('__NR_bpf',361)
__NR_execveat = Constant('__NR_execveat',362)
__NR_switch_endian = Constant('__NR_switch_endian',363)
__NR_userfaultfd = Constant('__NR_userfaultfd',364)
__NR_membarrier = Constant('__NR_membarrier',365)
__NR_mlock2 = Constant('__NR_mlock2',378)
__NR_copy_file_range = Constant('__NR_copy_file_range',379)
__NR_preadv2 = Constant('__NR_preadv2',380)
__NR_pwritev2 = Constant('__NR_pwritev2',381)
__NR_kexec_file_load = Constant('__NR_kexec_file_load',382)
__NR_statx = Constant('__NR_statx',383)
__NR_pkey_alloc = Constant('__NR_pkey_alloc',384)
__NR_pkey_free = Constant('__NR_pkey_free',385)
__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',386)
__NR_rseq = Constant('__NR_rseq',387)
__NR_io_pgetevents = Constant('__NR_io_pgetevents',388)
__NR_semget = Constant('__NR_semget',393)
__NR_semctl = Constant('__NR_semctl',394)
__NR_shmget = Constant('__NR_shmget',395)
__NR_shmctl = Constant('__NR_shmctl',396)
__NR_shmat = Constant('__NR_shmat',397)
__NR_shmdt = Constant('__NR_shmdt',398)
__NR_msgget = Constant('__NR_msgget',399)
__NR_msgsnd = Constant('__NR_msgsnd',400)
__NR_msgrcv = Constant('__NR_msgrcv',401)
__NR_msgctl = Constant('__NR_msgctl',402)
__NR_clock_gettime64 = Constant('__NR_clock_gettime64',403)
__NR_clock_settime64 = Constant('__NR_clock_settime64',404)
__NR_clock_adjtime64 = Constant('__NR_clock_adjtime64',405)
__NR_clock_getres_time64 = Constant('__NR_clock_getres_time64',406)
__NR_clock_nanosleep_time64 = Constant('__NR_clock_nanosleep_time64',407)
__NR_timer_gettime64 = Constant('__NR_timer_gettime64',408)
__NR_timer_settime64 = Constant('__NR_timer_settime64',409)
__NR_timerfd_gettime64 = Constant('__NR_timerfd_gettime64',410)
__NR_timerfd_settime64 = Constant('__NR_timerfd_settime64',411)
__NR_utimensat_time64 = Constant('__NR_utimensat_time64',412)
__NR_pselect6_time64 = Constant('__NR_pselect6_time64',413)
__NR_ppoll_time64 = Constant('__NR_ppoll_time64',414)
__NR_io_pgetevents_time64 = Constant('__NR_io_pgetevents_time64',416)
__NR_recvmmsg_time64 = Constant('__NR_recvmmsg_time64',417)
__NR_mq_timedsend_time64 = Constant('__NR_mq_timedsend_time64',418)
__NR_mq_timedreceive_time64 = Constant('__NR_mq_timedreceive_time64',419)
__NR_semtimedop_time64 = Constant('__NR_semtimedop_time64',420)
__NR_rt_sigtimedwait_time64 = Constant('__NR_rt_sigtimedwait_time64',421)
__NR_futex_time64 = Constant('__NR_futex_time64',422)
__NR_sched_rr_get_interval_time64 = Constant('__NR_sched_rr_get_interval_time64',423)
__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)
__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)
__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)
__NR_io_uring_register = Constant('__NR_io_uring_register',427)
__NR_open_tree = Constant('__NR_open_tree',428)
__NR_move_mount = Constant('__NR_move_mount',429)
__NR_fsopen = Constant('__NR_fsopen',430)
__NR_fsconfig = Constant('__NR_fsconfig',431)
__NR_fsmount = Constant('__NR_fsmount',432)
__NR_fspick = Constant('__NR_fspick',433)
__NR_pidfd_open = Constant('__NR_pidfd_open',434)
__NR_clone3 = Constant('__NR_clone3',435)
__NR_openat2 = Constant('__NR_openat2',437)
__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',438)
MAP_32BIT = Constant('MAP_32BIT',0x40)
INADDR_ANY = Constant('INADDR_ANY',0)
INADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)
@@ -441,7 +548,11 @@ ENOKEY = Constant('ENOKEY',126)
EKEYEXPIRED = Constant('EKEYEXPIRED',127)
EKEYREVOKED = Constant('EKEYREVOKED',128)
EKEYREJECTED = Constant('EKEYREJECTED',129)
__SYS_NERR = Constant('__SYS_NERR',((129) + 1))
EOWNERDEAD = Constant('EOWNERDEAD',130)
ENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)
ERFKILL = Constant('ERFKILL',132)
EHWPOISON = Constant('EHWPOISON',133)
__SYS_NERR = Constant('__SYS_NERR',((133) + 1))
__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)
__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)
__BYTE_ORDER = Constant('__BYTE_ORDER',4321)
@@ -450,9 +561,55 @@ LITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)
BIG_ENDIAN = Constant('BIG_ENDIAN',4321)
BYTE_ORDER = Constant('BYTE_ORDER',4321)
__WORDSIZE = Constant('__WORDSIZE',32)
INT8_MAX = Constant('INT8_MAX',(127))
INT16_MAX = Constant('INT16_MAX',(32767))
INT32_MAX = Constant('INT32_MAX',(2147483647))
INT64_MAX = Constant('INT64_MAX',(9223372036854775807))
INT8_MIN = Constant('INT8_MIN',(-1 - (127)))
INT16_MIN = Constant('INT16_MIN',(-1 - (32767)))
INT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))
INT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))
INT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))
INT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))
INT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))
INT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))
INT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))
INT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))
INT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))
INT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))
UINT8_MAX = Constant('UINT8_MAX',0xff)
UINT16_MAX = Constant('UINT16_MAX',0xffff)
UINT32_MAX = Constant('UINT32_MAX',0xffffffff)
UINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)
UINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)
UINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)
UINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)
UINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)
INTPTR_MIN = Constant('INTPTR_MIN',(-1 - (2147483647)))
INTPTR_MAX = Constant('INTPTR_MAX',(2147483647))
UINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffff)
SIZE_MAX = Constant('SIZE_MAX',0xffffffff)
PTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (2147483647)))
PTRDIFF_MAX = Constant('PTRDIFF_MAX',(2147483647))
INTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))
INTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))
UINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)
INT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))
INT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))
INT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))
INT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))
UINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)
UINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)
INT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (2147483647)))
INT_FAST16_MAX = Constant('INT_FAST16_MAX',(2147483647))
UINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffff)
INT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (2147483647)))
INT_FAST32_MAX = Constant('INT_FAST32_MAX',(2147483647))
UINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffff)
WINT_MIN = Constant('WINT_MIN',0)
__FSUID_H = Constant('__FSUID_H',1)
NSIG = Constant('NSIG',32)
_NSIG = Constant('_NSIG',64)
_NSIG = Constant('_NSIG',65)
SIGHUP = Constant('SIGHUP',1)
SIGINT = Constant('SIGINT',2)
SIGQUIT = Constant('SIGQUIT',3)
@@ -468,7 +625,7 @@ SIGALRM = Constant('SIGALRM',14)
SIGTERM = Constant('SIGTERM',15)
SIGUNUSED = Constant('SIGUNUSED',31)
SIGRTMIN = Constant('SIGRTMIN',32)
SIGRTMAX = Constant('SIGRTMAX',(64-1))
SIGRTMAX = Constant('SIGRTMAX',(65-1))
SA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)
SA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)
SA_SIGINFO = Constant('SA_SIGINFO',0x00000004)
@@ -517,6 +674,8 @@ _SC_PAGESIZE = Constant('_SC_PAGESIZE',5)
_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)
_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)
_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)
_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)
_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)
_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)
_PC_VDISABLE = Constant('_PC_VDISABLE',2)
L_cuserid = Constant('L_cuserid',17)
@@ -525,6 +684,7 @@ F_ULOCK = Constant('F_ULOCK',0)
F_LOCK = Constant('F_LOCK',1)
F_TLOCK = Constant('F_TLOCK',2)
F_TEST = Constant('F_TEST',3)
_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)
S_IFMT = Constant('S_IFMT',0o0170000)
S_IFSOCK = Constant('S_IFSOCK',0o140000)
S_IFLNK = Constant('S_IFLNK',0o120000)
@@ -551,16 +711,7 @@ S_IXOTH = Constant('S_IXOTH',0o0001)
S_IREAD = Constant('S_IREAD',0o0400)
S_IWRITE = Constant('S_IWRITE',0o0200)
S_IEXEC = Constant('S_IEXEC',0o0100)
F_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)
MREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)
MREMAP_FIXED = Constant('MREMAP_FIXED',2)
PROT_READ = Constant('PROT_READ',0x1)
PROT_WRITE = Constant('PROT_WRITE',0x2)
PROT_EXEC = Constant('PROT_EXEC',0x4)
PROT_NONE = Constant('PROT_NONE',0x0)
MAP_SHARED = Constant('MAP_SHARED',0x01)
MAP_PRIVATE = Constant('MAP_PRIVATE',0x02)
MAP_FILE = Constant('MAP_FILE',0)
_SYS_UIO = Constant('_SYS_UIO',1)
SOL_SOCKET = Constant('SOL_SOCKET',1)
SO_DEBUG = Constant('SO_DEBUG',1)
SO_REUSEADDR = Constant('SO_REUSEADDR',2)
@@ -576,29 +727,64 @@ SO_NO_CHECK = Constant('SO_NO_CHECK',11)
SO_PRIORITY = Constant('SO_PRIORITY',12)
SO_LINGER = Constant('SO_LINGER',13)
SO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)
SO_REUSEPORT = Constant('SO_REUSEPORT',15)
SO_PASSCRED = Constant('SO_PASSCRED',16)
SO_PEERCRED = Constant('SO_PEERCRED',17)
SO_RCVLOWAT = Constant('SO_RCVLOWAT',18)
SO_SNDLOWAT = Constant('SO_SNDLOWAT',19)
SO_RCVTIMEO = Constant('SO_RCVTIMEO',20)
SO_SNDTIMEO = Constant('SO_SNDTIMEO',21)
SO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)
SO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)
SO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)
SO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)
SO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)
SO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)
SO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)
SO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)
SO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)
SO_GET_FILTER = Constant('SO_GET_FILTER',26)
SO_PEERNAME = Constant('SO_PEERNAME',28)
SO_TIMESTAMP = Constant('SO_TIMESTAMP',29)
SCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)
SO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)
SO_PEERSEC = Constant('SO_PEERSEC',31)
SO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)
SO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)
SO_PASSSEC = Constant('SO_PASSSEC',34)
SO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)
SCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)
SO_MARK = Constant('SO_MARK',36)
SO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)
SCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)
SO_PROTOCOL = Constant('SO_PROTOCOL',38)
SO_DOMAIN = Constant('SO_DOMAIN',39)
SO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)
SO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)
SCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)
SO_PEEK_OFF = Constant('SO_PEEK_OFF',42)
SO_NOFCS = Constant('SO_NOFCS',43)
SO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)
SO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)
SO_BUSY_POLL = Constant('SO_BUSY_POLL',46)
SO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)
SO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)
SO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)
SO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)
SO_DETACH_BPF = Constant('SO_DETACH_BPF',27)
SO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)
SO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)
SO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)
SCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)
SO_MEMINFO = Constant('SO_MEMINFO',55)
SO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)
SO_COOKIE = Constant('SO_COOKIE',57)
SCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)
SO_PEERGROUPS = Constant('SO_PEERGROUPS',59)
SO_ZEROCOPY = Constant('SO_ZEROCOPY',60)
SOCK_STREAM = Constant('SOCK_STREAM',1)
SOCK_DGRAM = Constant('SOCK_DGRAM',2)
SOCK_RAW = Constant('SOCK_RAW',3)
SOCK_RDM = Constant('SOCK_RDM',4)
SOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)
SOCK_DCCP = Constant('SOCK_DCCP',6)
SOCK_PACKET = Constant('SOCK_PACKET',10)
UIO_FASTIOV = Constant('UIO_FASTIOV',8)
UIO_MAXIOV = Constant('UIO_MAXIOV',1024)
@@ -632,7 +818,25 @@ AF_SNA = Constant('AF_SNA',22)
AF_IRDA = Constant('AF_IRDA',23)
AF_PPPOX = Constant('AF_PPPOX',24)
AF_WANPIPE = Constant('AF_WANPIPE',25)
AF_MAX = Constant('AF_MAX',32)
AF_LLC = Constant('AF_LLC',26)
AF_IB = Constant('AF_IB',27)
AF_MPLS = Constant('AF_MPLS',28)
AF_CAN = Constant('AF_CAN',29)
AF_TIPC = Constant('AF_TIPC',30)
AF_BLUETOOTH = Constant('AF_BLUETOOTH',31)
AF_IUCV = Constant('AF_IUCV',32)
AF_RXRPC = Constant('AF_RXRPC',33)
AF_ISDN = Constant('AF_ISDN',34)
AF_PHONET = Constant('AF_PHONET',35)
AF_IEEE802154 = Constant('AF_IEEE802154',36)
AF_CAIF = Constant('AF_CAIF',37)
AF_ALG = Constant('AF_ALG',38)
AF_NFC = Constant('AF_NFC',39)
AF_VSOCK = Constant('AF_VSOCK',40)
AF_KCM = Constant('AF_KCM',41)
AF_QIPCRTR = Constant('AF_QIPCRTR',42)
AF_SMC = Constant('AF_SMC',43)
AF_MAX = Constant('AF_MAX',44)
PF_UNSPEC = Constant('PF_UNSPEC',0)
PF_UNIX = Constant('PF_UNIX',1)
PF_LOCAL = Constant('PF_LOCAL',1)
@@ -660,7 +864,25 @@ PF_SNA = Constant('PF_SNA',22)
PF_IRDA = Constant('PF_IRDA',23)
PF_PPPOX = Constant('PF_PPPOX',24)
PF_WANPIPE = Constant('PF_WANPIPE',25)
PF_MAX = Constant('PF_MAX',32)
PF_LLC = Constant('PF_LLC',26)
PF_IB = Constant('PF_IB',27)
PF_MPLS = Constant('PF_MPLS',28)
PF_CAN = Constant('PF_CAN',29)
PF_TIPC = Constant('PF_TIPC',30)
PF_BLUETOOTH = Constant('PF_BLUETOOTH',31)
PF_IUCV = Constant('PF_IUCV',32)
PF_RXRPC = Constant('PF_RXRPC',33)
PF_ISDN = Constant('PF_ISDN',34)
PF_PHONET = Constant('PF_PHONET',35)
PF_IEEE802154 = Constant('PF_IEEE802154',36)
PF_CAIF = Constant('PF_CAIF',37)
PF_ALG = Constant('PF_ALG',38)
PF_NFC = Constant('PF_NFC',39)
PF_VSOCK = Constant('PF_VSOCK',40)
PF_KCM = Constant('PF_KCM',41)
PF_QIPCRTR = Constant('PF_QIPCRTR',42)
PF_SMC = Constant('PF_SMC',43)
PF_MAX = Constant('PF_MAX',44)
SOMAXCONN = Constant('SOMAXCONN',128)
MSG_OOB = Constant('MSG_OOB',1)
MSG_PEEK = Constant('MSG_PEEK',2)
@@ -673,18 +895,26 @@ MSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)
MSG_EOR = Constant('MSG_EOR',0x80)
MSG_WAITALL = Constant('MSG_WAITALL',0x100)
MSG_FIN = Constant('MSG_FIN',0x200)
MSG_EOF = Constant('MSG_EOF',0x200)
MSG_SYN = Constant('MSG_SYN',0x400)
MSG_CONFIRM = Constant('MSG_CONFIRM',0x800)
MSG_RST = Constant('MSG_RST',0x1000)
MSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)
MSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)
MSG_MORE = Constant('MSG_MORE',0x8000)
MSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)
MSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)
MSG_BATCH = Constant('MSG_BATCH',0x40000)
MSG_EOF = Constant('MSG_EOF',0x200)
MSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)
MSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)
MSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)
SOL_IP = Constant('SOL_IP',0)
SOL_TCP = Constant('SOL_TCP',6)
SOL_UDP = Constant('SOL_UDP',17)
SOL_IPV6 = Constant('SOL_IPV6',41)
SOL_ICMPV6 = Constant('SOL_ICMPV6',58)
SOL_SCTP = Constant('SOL_SCTP',132)
SOL_UDPLITE = Constant('SOL_UDPLITE',136)
SOL_RAW = Constant('SOL_RAW',255)
SOL_IPX = Constant('SOL_IPX',256)
SOL_AX25 = Constant('SOL_AX25',257)
@@ -697,6 +927,22 @@ SOL_PACKET = Constant('SOL_PACKET',263)
SOL_ATM = Constant('SOL_ATM',264)
SOL_AAL = Constant('SOL_AAL',265)
SOL_IRDA = Constant('SOL_IRDA',266)
SOL_NETBEUI = Constant('SOL_NETBEUI',267)
SOL_LLC = Constant('SOL_LLC',268)
SOL_DCCP = Constant('SOL_DCCP',269)
SOL_NETLINK = Constant('SOL_NETLINK',270)
SOL_TIPC = Constant('SOL_TIPC',271)
SOL_RXRPC = Constant('SOL_RXRPC',272)
SOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)
SOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)
SOL_PNPIPE = Constant('SOL_PNPIPE',275)
SOL_RDS = Constant('SOL_RDS',276)
SOL_IUCV = Constant('SOL_IUCV',277)
SOL_CAIF = Constant('SOL_CAIF',278)
SOL_ALG = Constant('SOL_ALG',279)
SOL_NFC = Constant('SOL_NFC',280)
SOL_KCM = Constant('SOL_KCM',281)
SOL_TLS = Constant('SOL_TLS',282)
IPX_TYPE = Constant('IPX_TYPE',1)
SHUT_RD = Constant('SHUT_RD',0)
SHUT_WR = Constant('SHUT_WR',1)
@@ -720,6 +966,10 @@ EAI_SYSTEM = Constant('EAI_SYSTEM',-11)
AI_NUMERICHOST = Constant('AI_NUMERICHOST',1)
AI_CANONNAME = Constant('AI_CANONNAME',2)
AI_PASSIVE = Constant('AI_PASSIVE',4)
AI_NUMERICSERV = Constant('AI_NUMERICSERV',8)
AI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)
AI_V4MAPPED = Constant('AI_V4MAPPED',32)
AI_ALL = Constant('AI_ALL',64)
SIOCADDRT = Constant('SIOCADDRT',0x890B)
SIOCDELRT = Constant('SIOCDELRT',0x890C)
SIOCRTMSG = Constant('SIOCRTMSG',0x890D)
@@ -776,6 +1026,48 @@ SIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)
SIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)
SIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)
SIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)
F_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)
F_SETOWN_EX = Constant('F_SETOWN_EX',15)
F_GETOWN_EX = Constant('F_GETOWN_EX',16)
F_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)
F_OFD_GETLK = Constant('F_OFD_GETLK',36)
F_OFD_SETLK = Constant('F_OFD_SETLK',37)
F_OFD_SETLKW = Constant('F_OFD_SETLKW',38)
F_OWNER_TID = Constant('F_OWNER_TID',0)
F_OWNER_PID = Constant('F_OWNER_PID',1)
F_OWNER_PGRP = Constant('F_OWNER_PGRP',2)
AT_FDCWD = Constant('AT_FDCWD',-100)
AT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)
AT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)
AT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)
AT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)
AT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)
AT_EACCESS = Constant('AT_EACCESS',0x200)
MREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)
MREMAP_FIXED = Constant('MREMAP_FIXED',2)
PROT_READ = Constant('PROT_READ',0x1)
PROT_WRITE = Constant('PROT_WRITE',0x2)
PROT_EXEC = Constant('PROT_EXEC',0x4)
PROT_SEM = Constant('PROT_SEM',0x8)
PROT_NONE = Constant('PROT_NONE',0x0)
PROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)
PROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)
MAP_SHARED = Constant('MAP_SHARED',0x01)
MAP_PRIVATE = Constant('MAP_PRIVATE',0x02)
MAP_TYPE = Constant('MAP_TYPE',0xf)
MADV_REMOVE = Constant('MADV_REMOVE',9)
MADV_DONTFORK = Constant('MADV_DONTFORK',10)
MADV_DOFORK = Constant('MADV_DOFORK',11)
MADV_MERGEABLE = Constant('MADV_MERGEABLE',12)
MADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)
MADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)
MADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)
MADV_DONTDUMP = Constant('MADV_DONTDUMP',16)
MADV_DODUMP = Constant('MADV_DODUMP',17)
MADV_HWPOISON = Constant('MADV_HWPOISON',100)
MADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)
MLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)
MAP_FILE = Constant('MAP_FILE',0)
PTRACE_TRACEME = Constant('PTRACE_TRACEME',0)
PTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)
PTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)
@@ -820,6 +1112,8 @@ PT_KILL = Constant('PT_KILL',8)
PT_STEP = Constant('PT_STEP',9)
PT_ATTACH = Constant('PT_ATTACH',0x10)
PT_DETACH = Constant('PT_DETACH',0x11)
SYS_accept = Constant('SYS_accept',330)
SYS_accept4 = Constant('SYS_accept4',344)
SYS_access = Constant('SYS_access',33)
SYS_acct = Constant('SYS_acct',51)
SYS_add_key = Constant('SYS_add_key',269)
@@ -827,6 +1121,8 @@ SYS_adjtimex = Constant('SYS_adjtimex',124)
SYS_afs_syscall = Constant('SYS_afs_syscall',137)
SYS_alarm = Constant('SYS_alarm',27)
SYS_bdflush = Constant('SYS_bdflush',134)
SYS_bind = Constant('SYS_bind',327)
SYS_bpf = Constant('SYS_bpf',361)
SYS_break = Constant('SYS_break',17)
SYS_brk = Constant('SYS_brk',45)
SYS_capget = Constant('SYS_capget',183)
@@ -835,29 +1131,44 @@ SYS_chdir = Constant('SYS_chdir',12)
SYS_chmod = Constant('SYS_chmod',15)
SYS_chown = Constant('SYS_chown',181)
SYS_chroot = Constant('SYS_chroot',61)
SYS_clock_adjtime = Constant('SYS_clock_adjtime',347)
SYS_clock_adjtime64 = Constant('SYS_clock_adjtime64',405)
SYS_clock_getres = Constant('SYS_clock_getres',247)
SYS_clock_getres_time64 = Constant('SYS_clock_getres_time64',406)
SYS_clock_gettime = Constant('SYS_clock_gettime',246)
SYS_clock_gettime64 = Constant('SYS_clock_gettime64',403)
SYS_clock_nanosleep = Constant('SYS_clock_nanosleep',248)
SYS_clock_nanosleep_time64 = Constant('SYS_clock_nanosleep_time64',407)
SYS_clock_settime = Constant('SYS_clock_settime',245)
SYS_clock_settime64 = Constant('SYS_clock_settime64',404)
SYS_clone = Constant('SYS_clone',120)
SYS_clone3 = Constant('SYS_clone3',435)
SYS_close = Constant('SYS_close',6)
SYS_connect = Constant('SYS_connect',328)
SYS_copy_file_range = Constant('SYS_copy_file_range',379)
SYS_creat = Constant('SYS_creat',8)
SYS_create_module = Constant('SYS_create_module',127)
SYS_delete_module = Constant('SYS_delete_module',129)
SYS_dup = Constant('SYS_dup',41)
SYS_dup2 = Constant('SYS_dup2',63)
SYS_dup3 = Constant('SYS_dup3',316)
SYS_epoll_create = Constant('SYS_epoll_create',236)
SYS_epoll_create1 = Constant('SYS_epoll_create1',315)
SYS_epoll_ctl = Constant('SYS_epoll_ctl',237)
SYS_epoll_pwait = Constant('SYS_epoll_pwait',303)
SYS_epoll_wait = Constant('SYS_epoll_wait',238)
SYS_eventfd = Constant('SYS_eventfd',307)
SYS_eventfd2 = Constant('SYS_eventfd2',314)
SYS_execve = Constant('SYS_execve',11)
SYS_execveat = Constant('SYS_execveat',362)
SYS_exit = Constant('SYS_exit',1)
SYS_exit_group = Constant('SYS_exit_group',234)
SYS_faccessat = Constant('SYS_faccessat',298)
SYS_fadvise64 = Constant('SYS_fadvise64',233)
SYS_fadvise64_64 = Constant('SYS_fadvise64_64',254)
SYS_fallocate = Constant('SYS_fallocate',309)
SYS_fanotify_init = Constant('SYS_fanotify_init',323)
SYS_fanotify_mark = Constant('SYS_fanotify_mark',324)
SYS_fchdir = Constant('SYS_fchdir',133)
SYS_fchmod = Constant('SYS_fchmod',94)
SYS_fchmodat = Constant('SYS_fchmodat',297)
@@ -867,11 +1178,16 @@ SYS_fcntl = Constant('SYS_fcntl',55)
SYS_fcntl64 = Constant('SYS_fcntl64',204)
SYS_fdatasync = Constant('SYS_fdatasync',148)
SYS_fgetxattr = Constant('SYS_fgetxattr',214)
SYS_finit_module = Constant('SYS_finit_module',353)
SYS_flistxattr = Constant('SYS_flistxattr',217)
SYS_flock = Constant('SYS_flock',143)
SYS_fork = Constant('SYS_fork',2)
SYS_fremovexattr = Constant('SYS_fremovexattr',220)
SYS_fsconfig = Constant('SYS_fsconfig',431)
SYS_fsetxattr = Constant('SYS_fsetxattr',211)
SYS_fsmount = Constant('SYS_fsmount',432)
SYS_fsopen = Constant('SYS_fsopen',430)
SYS_fspick = Constant('SYS_fspick',433)
SYS_fstat = Constant('SYS_fstat',108)
SYS_fstat64 = Constant('SYS_fstat64',197)
SYS_fstatat64 = Constant('SYS_fstatat64',291)
@@ -882,6 +1198,7 @@ SYS_ftime = Constant('SYS_ftime',35)
SYS_ftruncate = Constant('SYS_ftruncate',93)
SYS_ftruncate64 = Constant('SYS_ftruncate64',194)
SYS_futex = Constant('SYS_futex',221)
SYS_futex_time64 = Constant('SYS_futex_time64',422)
SYS_futimesat = Constant('SYS_futimesat',290)
SYS_getcpu = Constant('SYS_getcpu',302)
SYS_getcwd = Constant('SYS_getcwd',182)
@@ -893,18 +1210,22 @@ SYS_getgid = Constant('SYS_getgid',47)
SYS_getgroups = Constant('SYS_getgroups',80)
SYS_getitimer = Constant('SYS_getitimer',105)
SYS_get_kernel_syms = Constant('SYS_get_kernel_syms',130)
SYS_getpeername = Constant('SYS_getpeername',332)
SYS_getpgid = Constant('SYS_getpgid',132)
SYS_getpgrp = Constant('SYS_getpgrp',65)
SYS_getpid = Constant('SYS_getpid',20)
SYS_getpmsg = Constant('SYS_getpmsg',187)
SYS_getppid = Constant('SYS_getppid',64)
SYS_getpriority = Constant('SYS_getpriority',96)
SYS_getrandom = Constant('SYS_getrandom',359)
SYS_getresgid = Constant('SYS_getresgid',170)
SYS_getresuid = Constant('SYS_getresuid',165)
SYS_getrlimit = Constant('SYS_getrlimit',76)
SYS_get_robust_list = Constant('SYS_get_robust_list',299)
SYS_getrusage = Constant('SYS_getrusage',77)
SYS_getsid = Constant('SYS_getsid',147)
SYS_getsockname = Constant('SYS_getsockname',331)
SYS_getsockopt = Constant('SYS_getsockopt',340)
SYS_gettid = Constant('SYS_gettid',207)
SYS_gettimeofday = Constant('SYS_gettimeofday',78)
SYS_getuid = Constant('SYS_getuid',24)
@@ -914,18 +1235,26 @@ SYS_idle = Constant('SYS_idle',112)
SYS_init_module = Constant('SYS_init_module',128)
SYS_inotify_add_watch = Constant('SYS_inotify_add_watch',276)
SYS_inotify_init = Constant('SYS_inotify_init',275)
SYS_inotify_init1 = Constant('SYS_inotify_init1',318)
SYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',277)
SYS_io_cancel = Constant('SYS_io_cancel',231)
SYS_ioctl = Constant('SYS_ioctl',54)
SYS_io_destroy = Constant('SYS_io_destroy',228)
SYS_io_getevents = Constant('SYS_io_getevents',229)
SYS_ioperm = Constant('SYS_ioperm',101)
SYS_io_pgetevents = Constant('SYS_io_pgetevents',388)
SYS_io_pgetevents_time64 = Constant('SYS_io_pgetevents_time64',416)
SYS_iopl = Constant('SYS_iopl',110)
SYS_ioprio_get = Constant('SYS_ioprio_get',274)
SYS_ioprio_set = Constant('SYS_ioprio_set',273)
SYS_io_setup = Constant('SYS_io_setup',227)
SYS_io_submit = Constant('SYS_io_submit',230)
SYS_io_uring_enter = Constant('SYS_io_uring_enter',426)
SYS_io_uring_register = Constant('SYS_io_uring_register',427)
SYS_io_uring_setup = Constant('SYS_io_uring_setup',425)
SYS_ipc = Constant('SYS_ipc',117)
SYS_kcmp = Constant('SYS_kcmp',354)
SYS_kexec_file_load = Constant('SYS_kexec_file_load',382)
SYS_kexec_load = Constant('SYS_kexec_load',268)
SYS_keyctl = Constant('SYS_keyctl',271)
SYS_kill = Constant('SYS_kill',37)
@@ -933,6 +1262,7 @@ SYS_lchown = Constant('SYS_lchown',16)
SYS_lgetxattr = Constant('SYS_lgetxattr',213)
SYS_link = Constant('SYS_link',9)
SYS_linkat = Constant('SYS_linkat',294)
SYS_listen = Constant('SYS_listen',329)
SYS_listxattr = Constant('SYS_listxattr',215)
SYS_llistxattr = Constant('SYS_llistxattr',216)
SYS__llseek = Constant('SYS__llseek',140)
@@ -944,17 +1274,21 @@ SYS_lsetxattr = Constant('SYS_lsetxattr',210)
SYS_lstat = Constant('SYS_lstat',107)
SYS_lstat64 = Constant('SYS_lstat64',196)
SYS_madvise = Constant('SYS_madvise',205)
SYS_membarrier = Constant('SYS_membarrier',365)
SYS_memfd_create = Constant('SYS_memfd_create',360)
SYS_mincore = Constant('SYS_mincore',206)
SYS_mkdir = Constant('SYS_mkdir',39)
SYS_mkdirat = Constant('SYS_mkdirat',287)
SYS_mknod = Constant('SYS_mknod',14)
SYS_mknodat = Constant('SYS_mknodat',288)
SYS_mlock = Constant('SYS_mlock',150)
SYS_mlock2 = Constant('SYS_mlock2',378)
SYS_mlockall = Constant('SYS_mlockall',152)
SYS_mmap = Constant('SYS_mmap',90)
SYS_mmap2 = Constant('SYS_mmap2',192)
SYS_modify_ldt = Constant('SYS_modify_ldt',123)
SYS_mount = Constant('SYS_mount',21)
SYS_move_mount = Constant('SYS_move_mount',429)
SYS_move_pages = Constant('SYS_move_pages',301)
SYS_mprotect = Constant('SYS_mprotect',125)
SYS_mpx = Constant('SYS_mpx',56)
@@ -962,14 +1296,21 @@ SYS_mq_getsetattr = Constant('SYS_mq_getsetattr',267)
SYS_mq_notify = Constant('SYS_mq_notify',266)
SYS_mq_open = Constant('SYS_mq_open',262)
SYS_mq_timedreceive = Constant('SYS_mq_timedreceive',265)
SYS_mq_timedreceive_time64 = Constant('SYS_mq_timedreceive_time64',419)
SYS_mq_timedsend = Constant('SYS_mq_timedsend',264)
SYS_mq_timedsend_time64 = Constant('SYS_mq_timedsend_time64',418)
SYS_mq_unlink = Constant('SYS_mq_unlink',263)
SYS_mremap = Constant('SYS_mremap',163)
SYS_msgctl = Constant('SYS_msgctl',402)
SYS_msgget = Constant('SYS_msgget',399)
SYS_msgrcv = Constant('SYS_msgrcv',401)
SYS_msgsnd = Constant('SYS_msgsnd',400)
SYS_msync = Constant('SYS_msync',144)
SYS_multiplexer = Constant('SYS_multiplexer',201)
SYS_munlock = Constant('SYS_munlock',151)
SYS_munlockall = Constant('SYS_munlockall',153)
SYS_munmap = Constant('SYS_munmap',91)
SYS_name_to_handle_at = Constant('SYS_name_to_handle_at',345)
SYS_nanosleep = Constant('SYS_nanosleep',162)
SYS__newselect = Constant('SYS__newselect',142)
SYS_nfsservctl = Constant('SYS_nfsservctl',168)
@@ -981,23 +1322,43 @@ SYS_oldstat = Constant('SYS_oldstat',18)
SYS_olduname = Constant('SYS_olduname',109)
SYS_open = Constant('SYS_open',5)
SYS_openat = Constant('SYS_openat',286)
SYS_openat2 = Constant('SYS_openat2',437)
SYS_open_by_handle_at = Constant('SYS_open_by_handle_at',346)
SYS_open_tree = Constant('SYS_open_tree',428)
SYS_pause = Constant('SYS_pause',29)
SYS_pciconfig_iobase = Constant('SYS_pciconfig_iobase',200)
SYS_pciconfig_read = Constant('SYS_pciconfig_read',198)
SYS_pciconfig_write = Constant('SYS_pciconfig_write',199)
SYS_perf_event_open = Constant('SYS_perf_event_open',319)
SYS_personality = Constant('SYS_personality',136)
SYS_pidfd_getfd = Constant('SYS_pidfd_getfd',438)
SYS_pidfd_open = Constant('SYS_pidfd_open',434)
SYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)
SYS_pipe = Constant('SYS_pipe',42)
SYS_pipe2 = Constant('SYS_pipe2',317)
SYS_pivot_root = Constant('SYS_pivot_root',203)
SYS_pkey_alloc = Constant('SYS_pkey_alloc',384)
SYS_pkey_free = Constant('SYS_pkey_free',385)
SYS_pkey_mprotect = Constant('SYS_pkey_mprotect',386)
SYS_poll = Constant('SYS_poll',167)
SYS_ppoll = Constant('SYS_ppoll',281)
SYS_ppoll_time64 = Constant('SYS_ppoll_time64',414)
SYS_prctl = Constant('SYS_prctl',171)
SYS_pread = Constant('SYS_pread',179)
SYS_preadv = Constant('SYS_preadv',320)
SYS_preadv2 = Constant('SYS_preadv2',380)
SYS_prlimit64 = Constant('SYS_prlimit64',325)
SYS_process_vm_readv = Constant('SYS_process_vm_readv',351)
SYS_process_vm_writev = Constant('SYS_process_vm_writev',352)
SYS_prof = Constant('SYS_prof',44)
SYS_profil = Constant('SYS_profil',98)
SYS_pselect6 = Constant('SYS_pselect6',280)
SYS_pselect6_time64 = Constant('SYS_pselect6_time64',413)
SYS_ptrace = Constant('SYS_ptrace',26)
SYS_putpmsg = Constant('SYS_putpmsg',188)
SYS_pwrite = Constant('SYS_pwrite',180)
SYS_pwritev = Constant('SYS_pwritev',321)
SYS_pwritev2 = Constant('SYS_pwritev2',381)
SYS_query_module = Constant('SYS_query_module',166)
SYS_quotactl = Constant('SYS_quotactl',131)
SYS_read = Constant('SYS_read',3)
@@ -1007,12 +1368,19 @@ SYS_readlink = Constant('SYS_readlink',85)
SYS_readlinkat = Constant('SYS_readlinkat',296)
SYS_readv = Constant('SYS_readv',145)
SYS_reboot = Constant('SYS_reboot',88)
SYS_recv = Constant('SYS_recv',336)
SYS_recvfrom = Constant('SYS_recvfrom',337)
SYS_recvmmsg = Constant('SYS_recvmmsg',343)
SYS_recvmmsg_time64 = Constant('SYS_recvmmsg_time64',417)
SYS_recvmsg = Constant('SYS_recvmsg',342)
SYS_remap_file_pages = Constant('SYS_remap_file_pages',239)
SYS_removexattr = Constant('SYS_removexattr',218)
SYS_rename = Constant('SYS_rename',38)
SYS_renameat = Constant('SYS_renameat',293)
SYS_renameat2 = Constant('SYS_renameat2',357)
SYS_request_key = Constant('SYS_request_key',270)
SYS_rmdir = Constant('SYS_rmdir',40)
SYS_rseq = Constant('SYS_rseq',387)
SYS_rtas = Constant('SYS_rtas',255)
SYS_rt_sigaction = Constant('SYS_rt_sigaction',173)
SYS_rt_sigpending = Constant('SYS_rt_sigpending',175)
@@ -1021,19 +1389,32 @@ SYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',177)
SYS_rt_sigreturn = Constant('SYS_rt_sigreturn',172)
SYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',178)
SYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',176)
SYS_rt_sigtimedwait_time64 = Constant('SYS_rt_sigtimedwait_time64',421)
SYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',322)
SYS_sched_getaffinity = Constant('SYS_sched_getaffinity',223)
SYS_sched_getattr = Constant('SYS_sched_getattr',356)
SYS_sched_getparam = Constant('SYS_sched_getparam',155)
SYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',159)
SYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',160)
SYS_sched_getscheduler = Constant('SYS_sched_getscheduler',157)
SYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',161)
SYS_sched_rr_get_interval_time64 = Constant('SYS_sched_rr_get_interval_time64',423)
SYS_sched_setaffinity = Constant('SYS_sched_setaffinity',222)
SYS_sched_setattr = Constant('SYS_sched_setattr',355)
SYS_sched_setparam = Constant('SYS_sched_setparam',154)
SYS_sched_setscheduler = Constant('SYS_sched_setscheduler',156)
SYS_sched_yield = Constant('SYS_sched_yield',158)
SYS_seccomp = Constant('SYS_seccomp',358)
SYS_select = Constant('SYS_select',82)
SYS_semctl = Constant('SYS_semctl',394)
SYS_semget = Constant('SYS_semget',393)
SYS_semtimedop_time64 = Constant('SYS_semtimedop_time64',420)
SYS_send = Constant('SYS_send',334)
SYS_sendfile = Constant('SYS_sendfile',186)
SYS_sendfile64 = Constant('SYS_sendfile64',226)
SYS_sendmmsg = Constant('SYS_sendmmsg',349)
SYS_sendmsg = Constant('SYS_sendmsg',341)
SYS_sendto = Constant('SYS_sendto',335)
SYS_setdomainname = Constant('SYS_setdomainname',121)
SYS_setfsgid = Constant('SYS_setfsgid',139)
SYS_setfsuid = Constant('SYS_setfsuid',138)
@@ -1041,6 +1422,7 @@ SYS_setgid = Constant('SYS_setgid',46)
SYS_setgroups = Constant('SYS_setgroups',81)
SYS_sethostname = Constant('SYS_sethostname',74)
SYS_setitimer = Constant('SYS_setitimer',104)
SYS_setns = Constant('SYS_setns',350)
SYS_setpgid = Constant('SYS_setpgid',57)
SYS_setpriority = Constant('SYS_setpriority',97)
SYS_setregid = Constant('SYS_setregid',71)
@@ -1050,20 +1432,29 @@ SYS_setreuid = Constant('SYS_setreuid',70)
SYS_setrlimit = Constant('SYS_setrlimit',75)
SYS_set_robust_list = Constant('SYS_set_robust_list',300)
SYS_setsid = Constant('SYS_setsid',66)
SYS_setsockopt = Constant('SYS_setsockopt',339)
SYS_set_tid_address = Constant('SYS_set_tid_address',232)
SYS_settimeofday = Constant('SYS_settimeofday',79)
SYS_setuid = Constant('SYS_setuid',23)
SYS_setxattr = Constant('SYS_setxattr',209)
SYS_sgetmask = Constant('SYS_sgetmask',68)
SYS_shmat = Constant('SYS_shmat',397)
SYS_shmctl = Constant('SYS_shmctl',396)
SYS_shmdt = Constant('SYS_shmdt',398)
SYS_shmget = Constant('SYS_shmget',395)
SYS_shutdown = Constant('SYS_shutdown',338)
SYS_sigaction = Constant('SYS_sigaction',67)
SYS_sigaltstack = Constant('SYS_sigaltstack',185)
SYS_signal = Constant('SYS_signal',48)
SYS_signalfd = Constant('SYS_signalfd',305)
SYS_signalfd4 = Constant('SYS_signalfd4',313)
SYS_sigpending = Constant('SYS_sigpending',73)
SYS_sigprocmask = Constant('SYS_sigprocmask',126)
SYS_sigreturn = Constant('SYS_sigreturn',119)
SYS_sigsuspend = Constant('SYS_sigsuspend',72)
SYS_socket = Constant('SYS_socket',326)
SYS_socketcall = Constant('SYS_socketcall',102)
SYS_socketpair = Constant('SYS_socketpair',333)
SYS_splice = Constant('SYS_splice',283)
SYS_spu_create = Constant('SYS_spu_create',279)
SYS_spu_run = Constant('SYS_spu_run',278)
@@ -1072,16 +1463,19 @@ SYS_stat = Constant('SYS_stat',106)
SYS_stat64 = Constant('SYS_stat64',195)
SYS_statfs = Constant('SYS_statfs',99)
SYS_statfs64 = Constant('SYS_statfs64',252)
SYS_statx = Constant('SYS_statx',383)
SYS_stime = Constant('SYS_stime',25)
SYS_stty = Constant('SYS_stty',31)
SYS_subpage_prot = Constant('SYS_subpage_prot',310)
SYS_swapcontext = Constant('SYS_swapcontext',249)
SYS_swapoff = Constant('SYS_swapoff',115)
SYS_swapon = Constant('SYS_swapon',87)
SYS_switch_endian = Constant('SYS_switch_endian',363)
SYS_symlink = Constant('SYS_symlink',83)
SYS_symlinkat = Constant('SYS_symlinkat',295)
SYS_sync = Constant('SYS_sync',36)
SYS_sync_file_range2 = Constant('SYS_sync_file_range2',308)
SYS_syncfs = Constant('SYS_syncfs',348)
SYS__sysctl = Constant('SYS__sysctl',149)
SYS_sys_debug_setcontext = Constant('SYS_sys_debug_setcontext',256)
SYS_sysfs = Constant('SYS_sysfs',135)
@@ -1094,10 +1488,14 @@ SYS_timer_create = Constant('SYS_timer_create',240)
SYS_timer_delete = Constant('SYS_timer_delete',244)
SYS_timerfd = Constant('SYS_timerfd',306)
SYS_timerfd_gettime = Constant('SYS_timerfd_gettime',312)
SYS_timerfd_gettime64 = Constant('SYS_timerfd_gettime64',410)
SYS_timerfd_settime = Constant('SYS_timerfd_settime',311)
SYS_timerfd_settime64 = Constant('SYS_timerfd_settime64',411)
SYS_timer_getoverrun = Constant('SYS_timer_getoverrun',243)
SYS_timer_gettime = Constant('SYS_timer_gettime',242)
SYS_timer_gettime64 = Constant('SYS_timer_gettime64',408)
SYS_timer_settime = Constant('SYS_timer_settime',241)
SYS_timer_settime64 = Constant('SYS_timer_settime64',409)
SYS_times = Constant('SYS_times',43)
SYS_tkill = Constant('SYS_tkill',208)
SYS_truncate = Constant('SYS_truncate',92)
@@ -1113,9 +1511,11 @@ SYS_unlink = Constant('SYS_unlink',10)
SYS_unlinkat = Constant('SYS_unlinkat',292)
SYS_unshare = Constant('SYS_unshare',282)
SYS_uselib = Constant('SYS_uselib',86)
SYS_userfaultfd = Constant('SYS_userfaultfd',364)
SYS_ustat = Constant('SYS_ustat',62)
SYS_utime = Constant('SYS_utime',30)
SYS_utimensat = Constant('SYS_utimensat',304)
SYS_utimensat_time64 = Constant('SYS_utimensat_time64',412)
SYS_utimes = Constant('SYS_utimes',251)
SYS_vfork = Constant('SYS_vfork',189)
SYS_vhangup = Constant('SYS_vhangup',111)
+382 -20
View File
@@ -1,5 +1,4 @@
from pwnlib.constants.constant import Constant
__NR_exit = Constant('__NR_exit',1)
__NR_fork = Constant('__NR_fork',2)
__NR_read = Constant('__NR_read',3)
@@ -299,6 +298,95 @@ __NR_fallocate = Constant('__NR_fallocate',309)
__NR_subpage_prot = Constant('__NR_subpage_prot',310)
__NR_timerfd_settime = Constant('__NR_timerfd_settime',311)
__NR_timerfd_gettime = Constant('__NR_timerfd_gettime',312)
__NR_signalfd4 = Constant('__NR_signalfd4',313)
__NR_eventfd2 = Constant('__NR_eventfd2',314)
__NR_epoll_create1 = Constant('__NR_epoll_create1',315)
__NR_dup3 = Constant('__NR_dup3',316)
__NR_pipe2 = Constant('__NR_pipe2',317)
__NR_inotify_init1 = Constant('__NR_inotify_init1',318)
__NR_perf_event_open = Constant('__NR_perf_event_open',319)
__NR_preadv = Constant('__NR_preadv',320)
__NR_pwritev = Constant('__NR_pwritev',321)
__NR_rt_tgsigqueueinfo = Constant('__NR_rt_tgsigqueueinfo',322)
__NR_fanotify_init = Constant('__NR_fanotify_init',323)
__NR_fanotify_mark = Constant('__NR_fanotify_mark',324)
__NR_prlimit64 = Constant('__NR_prlimit64',325)
__NR_socket = Constant('__NR_socket',326)
__NR_bind = Constant('__NR_bind',327)
__NR_connect = Constant('__NR_connect',328)
__NR_listen = Constant('__NR_listen',329)
__NR_accept = Constant('__NR_accept',330)
__NR_getsockname = Constant('__NR_getsockname',331)
__NR_getpeername = Constant('__NR_getpeername',332)
__NR_socketpair = Constant('__NR_socketpair',333)
__NR_send = Constant('__NR_send',334)
__NR_sendto = Constant('__NR_sendto',335)
__NR_recv = Constant('__NR_recv',336)
__NR_recvfrom = Constant('__NR_recvfrom',337)
__NR_shutdown = Constant('__NR_shutdown',338)
__NR_setsockopt = Constant('__NR_setsockopt',339)
__NR_getsockopt = Constant('__NR_getsockopt',340)
__NR_sendmsg = Constant('__NR_sendmsg',341)
__NR_recvmsg = Constant('__NR_recvmsg',342)
__NR_recvmmsg = Constant('__NR_recvmmsg',343)
__NR_accept4 = Constant('__NR_accept4',344)
__NR_name_to_handle_at = Constant('__NR_name_to_handle_at',345)
__NR_open_by_handle_at = Constant('__NR_open_by_handle_at',346)
__NR_clock_adjtime = Constant('__NR_clock_adjtime',347)
__NR_syncfs = Constant('__NR_syncfs',348)
__NR_sendmmsg = Constant('__NR_sendmmsg',349)
__NR_setns = Constant('__NR_setns',350)
__NR_process_vm_readv = Constant('__NR_process_vm_readv',351)
__NR_process_vm_writev = Constant('__NR_process_vm_writev',352)
__NR_finit_module = Constant('__NR_finit_module',353)
__NR_kcmp = Constant('__NR_kcmp',354)
__NR_sched_setattr = Constant('__NR_sched_setattr',355)
__NR_sched_getattr = Constant('__NR_sched_getattr',356)
__NR_renameat2 = Constant('__NR_renameat2',357)
__NR_seccomp = Constant('__NR_seccomp',358)
__NR_getrandom = Constant('__NR_getrandom',359)
__NR_memfd_create = Constant('__NR_memfd_create',360)
__NR_bpf = Constant('__NR_bpf',361)
__NR_execveat = Constant('__NR_execveat',362)
__NR_switch_endian = Constant('__NR_switch_endian',363)
__NR_userfaultfd = Constant('__NR_userfaultfd',364)
__NR_membarrier = Constant('__NR_membarrier',365)
__NR_mlock2 = Constant('__NR_mlock2',378)
__NR_copy_file_range = Constant('__NR_copy_file_range',379)
__NR_preadv2 = Constant('__NR_preadv2',380)
__NR_pwritev2 = Constant('__NR_pwritev2',381)
__NR_kexec_file_load = Constant('__NR_kexec_file_load',382)
__NR_statx = Constant('__NR_statx',383)
__NR_pkey_alloc = Constant('__NR_pkey_alloc',384)
__NR_pkey_free = Constant('__NR_pkey_free',385)
__NR_pkey_mprotect = Constant('__NR_pkey_mprotect',386)
__NR_rseq = Constant('__NR_rseq',387)
__NR_io_pgetevents = Constant('__NR_io_pgetevents',388)
__NR_semtimedop = Constant('__NR_semtimedop',392)
__NR_semget = Constant('__NR_semget',393)
__NR_semctl = Constant('__NR_semctl',394)
__NR_shmget = Constant('__NR_shmget',395)
__NR_shmctl = Constant('__NR_shmctl',396)
__NR_shmat = Constant('__NR_shmat',397)
__NR_shmdt = Constant('__NR_shmdt',398)
__NR_msgget = Constant('__NR_msgget',399)
__NR_msgsnd = Constant('__NR_msgsnd',400)
__NR_msgrcv = Constant('__NR_msgrcv',401)
__NR_msgctl = Constant('__NR_msgctl',402)
__NR_pidfd_send_signal = Constant('__NR_pidfd_send_signal',424)
__NR_io_uring_setup = Constant('__NR_io_uring_setup',425)
__NR_io_uring_enter = Constant('__NR_io_uring_enter',426)
__NR_io_uring_register = Constant('__NR_io_uring_register',427)
__NR_open_tree = Constant('__NR_open_tree',428)
__NR_move_mount = Constant('__NR_move_mount',429)
__NR_fsopen = Constant('__NR_fsopen',430)
__NR_fsconfig = Constant('__NR_fsconfig',431)
__NR_fsmount = Constant('__NR_fsmount',432)
__NR_fspick = Constant('__NR_fspick',433)
__NR_pidfd_open = Constant('__NR_pidfd_open',434)
__NR_clone3 = Constant('__NR_clone3',435)
__NR_openat2 = Constant('__NR_openat2',437)
__NR_pidfd_getfd = Constant('__NR_pidfd_getfd',438)
MAP_32BIT = Constant('MAP_32BIT',0x40)
INADDR_ANY = Constant('INADDR_ANY',0)
INADDR_BROADCAST = Constant('INADDR_BROADCAST',0xffffffff)
@@ -434,7 +522,11 @@ ENOKEY = Constant('ENOKEY',126)
EKEYEXPIRED = Constant('EKEYEXPIRED',127)
EKEYREVOKED = Constant('EKEYREVOKED',128)
EKEYREJECTED = Constant('EKEYREJECTED',129)
__SYS_NERR = Constant('__SYS_NERR',((129) + 1))
EOWNERDEAD = Constant('EOWNERDEAD',130)
ENOTRECOVERABLE = Constant('ENOTRECOVERABLE',131)
ERFKILL = Constant('ERFKILL',132)
EHWPOISON = Constant('EHWPOISON',133)
__SYS_NERR = Constant('__SYS_NERR',((133) + 1))
__LITTLE_ENDIAN = Constant('__LITTLE_ENDIAN',1234)
__BIG_ENDIAN = Constant('__BIG_ENDIAN',4321)
__BYTE_ORDER = Constant('__BYTE_ORDER',4321)
@@ -443,9 +535,55 @@ LITTLE_ENDIAN = Constant('LITTLE_ENDIAN',1234)
BIG_ENDIAN = Constant('BIG_ENDIAN',4321)
BYTE_ORDER = Constant('BYTE_ORDER',4321)
__WORDSIZE = Constant('__WORDSIZE',32)
INT8_MAX = Constant('INT8_MAX',(127))
INT16_MAX = Constant('INT16_MAX',(32767))
INT32_MAX = Constant('INT32_MAX',(2147483647))
INT64_MAX = Constant('INT64_MAX',(9223372036854775807))
INT8_MIN = Constant('INT8_MIN',(-1 - (127)))
INT16_MIN = Constant('INT16_MIN',(-1 - (32767)))
INT32_MIN = Constant('INT32_MIN',(-1 - (2147483647)))
INT64_MIN = Constant('INT64_MIN',(-1 - (9223372036854775807)))
INT_LEAST8_MAX = Constant('INT_LEAST8_MAX',(127))
INT_LEAST8_MIN = Constant('INT_LEAST8_MIN',(-1 - (127)))
INT_LEAST16_MAX = Constant('INT_LEAST16_MAX',(32767))
INT_LEAST16_MIN = Constant('INT_LEAST16_MIN',(-1 - (32767)))
INT_LEAST32_MAX = Constant('INT_LEAST32_MAX',(2147483647))
INT_LEAST32_MIN = Constant('INT_LEAST32_MIN',(-1 - (2147483647)))
INT_LEAST64_MAX = Constant('INT_LEAST64_MAX',(9223372036854775807))
INT_LEAST64_MIN = Constant('INT_LEAST64_MIN',(-1 - (9223372036854775807)))
UINT8_MAX = Constant('UINT8_MAX',0xff)
UINT16_MAX = Constant('UINT16_MAX',0xffff)
UINT32_MAX = Constant('UINT32_MAX',0xffffffff)
UINT64_MAX = Constant('UINT64_MAX',0xffffffffffffffff)
UINT_LEAST8_MAX = Constant('UINT_LEAST8_MAX',0xff)
UINT_LEAST16_MAX = Constant('UINT_LEAST16_MAX',0xffff)
UINT_LEAST32_MAX = Constant('UINT_LEAST32_MAX',0xffffffff)
UINT_LEAST64_MAX = Constant('UINT_LEAST64_MAX',0xffffffffffffffff)
INTPTR_MIN = Constant('INTPTR_MIN',(-1 - (2147483647)))
INTPTR_MAX = Constant('INTPTR_MAX',(2147483647))
UINTPTR_MAX = Constant('UINTPTR_MAX',0xffffffff)
SIZE_MAX = Constant('SIZE_MAX',0xffffffff)
PTRDIFF_MIN = Constant('PTRDIFF_MIN',(-1 - (2147483647)))
PTRDIFF_MAX = Constant('PTRDIFF_MAX',(2147483647))
INTMAX_MIN = Constant('INTMAX_MIN',(-1 - (9223372036854775807)))
INTMAX_MAX = Constant('INTMAX_MAX',(9223372036854775807))
UINTMAX_MAX = Constant('UINTMAX_MAX',0xffffffffffffffff)
INT_FAST8_MIN = Constant('INT_FAST8_MIN',(-1 - (127)))
INT_FAST8_MAX = Constant('INT_FAST8_MAX',(127))
INT_FAST64_MIN = Constant('INT_FAST64_MIN',(-1 - (9223372036854775807)))
INT_FAST64_MAX = Constant('INT_FAST64_MAX',(9223372036854775807))
UINT_FAST8_MAX = Constant('UINT_FAST8_MAX',0xff)
UINT_FAST64_MAX = Constant('UINT_FAST64_MAX',0xffffffffffffffff)
INT_FAST16_MIN = Constant('INT_FAST16_MIN',(-1 - (2147483647)))
INT_FAST16_MAX = Constant('INT_FAST16_MAX',(2147483647))
UINT_FAST16_MAX = Constant('UINT_FAST16_MAX',0xffffffff)
INT_FAST32_MIN = Constant('INT_FAST32_MIN',(-1 - (2147483647)))
INT_FAST32_MAX = Constant('INT_FAST32_MAX',(2147483647))
UINT_FAST32_MAX = Constant('UINT_FAST32_MAX',0xffffffff)
WINT_MIN = Constant('WINT_MIN',0)
__FSUID_H = Constant('__FSUID_H',1)
NSIG = Constant('NSIG',32)
_NSIG = Constant('_NSIG',64)
_NSIG = Constant('_NSIG',65)
SIGHUP = Constant('SIGHUP',1)
SIGINT = Constant('SIGINT',2)
SIGQUIT = Constant('SIGQUIT',3)
@@ -461,7 +599,7 @@ SIGALRM = Constant('SIGALRM',14)
SIGTERM = Constant('SIGTERM',15)
SIGUNUSED = Constant('SIGUNUSED',31)
SIGRTMIN = Constant('SIGRTMIN',32)
SIGRTMAX = Constant('SIGRTMAX',(64-1))
SIGRTMAX = Constant('SIGRTMAX',(65-1))
SA_NOCLDSTOP = Constant('SA_NOCLDSTOP',0x00000001)
SA_NOCLDWAIT = Constant('SA_NOCLDWAIT',0x00000002)
SA_SIGINFO = Constant('SA_SIGINFO',0x00000004)
@@ -510,6 +648,8 @@ _SC_PAGESIZE = Constant('_SC_PAGESIZE',5)
_SC_NPROCESSORS_ONLN = Constant('_SC_NPROCESSORS_ONLN',6)
_SC_NPROCESSORS_CONF = Constant('_SC_NPROCESSORS_CONF',6)
_SC_PHYS_PAGES = Constant('_SC_PHYS_PAGES',7)
_SC_GETPW_R_SIZE_MAX = Constant('_SC_GETPW_R_SIZE_MAX',8)
_SC_GETGR_R_SIZE_MAX = Constant('_SC_GETGR_R_SIZE_MAX',9)
_PC_PATH_MAX = Constant('_PC_PATH_MAX',1)
_PC_VDISABLE = Constant('_PC_VDISABLE',2)
L_cuserid = Constant('L_cuserid',17)
@@ -518,6 +658,7 @@ F_ULOCK = Constant('F_ULOCK',0)
F_LOCK = Constant('F_LOCK',1)
F_TLOCK = Constant('F_TLOCK',2)
F_TEST = Constant('F_TEST',3)
_POSIX_MAPPED_FILES = Constant('_POSIX_MAPPED_FILES',200809)
S_IFMT = Constant('S_IFMT',0o0170000)
S_IFSOCK = Constant('S_IFSOCK',0o140000)
S_IFLNK = Constant('S_IFLNK',0o120000)
@@ -544,16 +685,7 @@ S_IXOTH = Constant('S_IXOTH',0o0001)
S_IREAD = Constant('S_IREAD',0o0400)
S_IWRITE = Constant('S_IWRITE',0o0200)
S_IEXEC = Constant('S_IEXEC',0o0100)
F_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)
MREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)
MREMAP_FIXED = Constant('MREMAP_FIXED',2)
PROT_READ = Constant('PROT_READ',0x1)
PROT_WRITE = Constant('PROT_WRITE',0x2)
PROT_EXEC = Constant('PROT_EXEC',0x4)
PROT_NONE = Constant('PROT_NONE',0x0)
MAP_SHARED = Constant('MAP_SHARED',0x01)
MAP_PRIVATE = Constant('MAP_PRIVATE',0x02)
MAP_FILE = Constant('MAP_FILE',0)
_SYS_UIO = Constant('_SYS_UIO',1)
SOL_SOCKET = Constant('SOL_SOCKET',1)
SO_DEBUG = Constant('SO_DEBUG',1)
SO_REUSEADDR = Constant('SO_REUSEADDR',2)
@@ -569,29 +701,64 @@ SO_NO_CHECK = Constant('SO_NO_CHECK',11)
SO_PRIORITY = Constant('SO_PRIORITY',12)
SO_LINGER = Constant('SO_LINGER',13)
SO_BSDCOMPAT = Constant('SO_BSDCOMPAT',14)
SO_REUSEPORT = Constant('SO_REUSEPORT',15)
SO_PASSCRED = Constant('SO_PASSCRED',16)
SO_PEERCRED = Constant('SO_PEERCRED',17)
SO_RCVLOWAT = Constant('SO_RCVLOWAT',18)
SO_SNDLOWAT = Constant('SO_SNDLOWAT',19)
SO_RCVTIMEO = Constant('SO_RCVTIMEO',20)
SO_SNDTIMEO = Constant('SO_SNDTIMEO',21)
SO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)
SO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)
SO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)
SO_SECURITY_AUTHENTICATION = Constant('SO_SECURITY_AUTHENTICATION',22)
SO_SECURITY_ENCRYPTION_TRANSPORT = Constant('SO_SECURITY_ENCRYPTION_TRANSPORT',23)
SO_SECURITY_ENCRYPTION_NETWORK = Constant('SO_SECURITY_ENCRYPTION_NETWORK',24)
SO_BINDTODEVICE = Constant('SO_BINDTODEVICE',25)
SO_ATTACH_FILTER = Constant('SO_ATTACH_FILTER',26)
SO_DETACH_FILTER = Constant('SO_DETACH_FILTER',27)
SO_GET_FILTER = Constant('SO_GET_FILTER',26)
SO_PEERNAME = Constant('SO_PEERNAME',28)
SO_TIMESTAMP = Constant('SO_TIMESTAMP',29)
SCM_TIMESTAMP = Constant('SCM_TIMESTAMP',29)
SO_ACCEPTCONN = Constant('SO_ACCEPTCONN',30)
SO_PEERSEC = Constant('SO_PEERSEC',31)
SO_SNDBUFFORCE = Constant('SO_SNDBUFFORCE',32)
SO_RCVBUFFORCE = Constant('SO_RCVBUFFORCE',33)
SO_PASSSEC = Constant('SO_PASSSEC',34)
SO_TIMESTAMPNS = Constant('SO_TIMESTAMPNS',35)
SCM_TIMESTAMPNS = Constant('SCM_TIMESTAMPNS',35)
SO_MARK = Constant('SO_MARK',36)
SO_TIMESTAMPING = Constant('SO_TIMESTAMPING',37)
SCM_TIMESTAMPING = Constant('SCM_TIMESTAMPING',37)
SO_PROTOCOL = Constant('SO_PROTOCOL',38)
SO_DOMAIN = Constant('SO_DOMAIN',39)
SO_RXQ_OVFL = Constant('SO_RXQ_OVFL',40)
SO_WIFI_STATUS = Constant('SO_WIFI_STATUS',41)
SCM_WIFI_STATUS = Constant('SCM_WIFI_STATUS',41)
SO_PEEK_OFF = Constant('SO_PEEK_OFF',42)
SO_NOFCS = Constant('SO_NOFCS',43)
SO_LOCK_FILTER = Constant('SO_LOCK_FILTER',44)
SO_SELECT_ERR_QUEUE = Constant('SO_SELECT_ERR_QUEUE',45)
SO_BUSY_POLL = Constant('SO_BUSY_POLL',46)
SO_MAX_PACING_RATE = Constant('SO_MAX_PACING_RATE',47)
SO_BPF_EXTENSIONS = Constant('SO_BPF_EXTENSIONS',48)
SO_INCOMING_CPU = Constant('SO_INCOMING_CPU',49)
SO_ATTACH_BPF = Constant('SO_ATTACH_BPF',50)
SO_DETACH_BPF = Constant('SO_DETACH_BPF',27)
SO_ATTACH_REUSEPORT_CBPF = Constant('SO_ATTACH_REUSEPORT_CBPF',51)
SO_ATTACH_REUSEPORT_EBPF = Constant('SO_ATTACH_REUSEPORT_EBPF',52)
SO_CNX_ADVICE = Constant('SO_CNX_ADVICE',53)
SCM_TIMESTAMPING_OPT_STATS = Constant('SCM_TIMESTAMPING_OPT_STATS',54)
SO_MEMINFO = Constant('SO_MEMINFO',55)
SO_INCOMING_NAPI_ID = Constant('SO_INCOMING_NAPI_ID',56)
SO_COOKIE = Constant('SO_COOKIE',57)
SCM_TIMESTAMPING_PKTINFO = Constant('SCM_TIMESTAMPING_PKTINFO',58)
SO_PEERGROUPS = Constant('SO_PEERGROUPS',59)
SO_ZEROCOPY = Constant('SO_ZEROCOPY',60)
SOCK_STREAM = Constant('SOCK_STREAM',1)
SOCK_DGRAM = Constant('SOCK_DGRAM',2)
SOCK_RAW = Constant('SOCK_RAW',3)
SOCK_RDM = Constant('SOCK_RDM',4)
SOCK_SEQPACKET = Constant('SOCK_SEQPACKET',5)
SOCK_DCCP = Constant('SOCK_DCCP',6)
SOCK_PACKET = Constant('SOCK_PACKET',10)
UIO_FASTIOV = Constant('UIO_FASTIOV',8)
UIO_MAXIOV = Constant('UIO_MAXIOV',1024)
@@ -625,7 +792,25 @@ AF_SNA = Constant('AF_SNA',22)
AF_IRDA = Constant('AF_IRDA',23)
AF_PPPOX = Constant('AF_PPPOX',24)
AF_WANPIPE = Constant('AF_WANPIPE',25)
AF_MAX = Constant('AF_MAX',32)
AF_LLC = Constant('AF_LLC',26)
AF_IB = Constant('AF_IB',27)
AF_MPLS = Constant('AF_MPLS',28)
AF_CAN = Constant('AF_CAN',29)
AF_TIPC = Constant('AF_TIPC',30)
AF_BLUETOOTH = Constant('AF_BLUETOOTH',31)
AF_IUCV = Constant('AF_IUCV',32)
AF_RXRPC = Constant('AF_RXRPC',33)
AF_ISDN = Constant('AF_ISDN',34)
AF_PHONET = Constant('AF_PHONET',35)
AF_IEEE802154 = Constant('AF_IEEE802154',36)
AF_CAIF = Constant('AF_CAIF',37)
AF_ALG = Constant('AF_ALG',38)
AF_NFC = Constant('AF_NFC',39)
AF_VSOCK = Constant('AF_VSOCK',40)
AF_KCM = Constant('AF_KCM',41)
AF_QIPCRTR = Constant('AF_QIPCRTR',42)
AF_SMC = Constant('AF_SMC',43)
AF_MAX = Constant('AF_MAX',44)
PF_UNSPEC = Constant('PF_UNSPEC',0)
PF_UNIX = Constant('PF_UNIX',1)
PF_LOCAL = Constant('PF_LOCAL',1)
@@ -653,7 +838,25 @@ PF_SNA = Constant('PF_SNA',22)
PF_IRDA = Constant('PF_IRDA',23)
PF_PPPOX = Constant('PF_PPPOX',24)
PF_WANPIPE = Constant('PF_WANPIPE',25)
PF_MAX = Constant('PF_MAX',32)
PF_LLC = Constant('PF_LLC',26)
PF_IB = Constant('PF_IB',27)
PF_MPLS = Constant('PF_MPLS',28)
PF_CAN = Constant('PF_CAN',29)
PF_TIPC = Constant('PF_TIPC',30)
PF_BLUETOOTH = Constant('PF_BLUETOOTH',31)
PF_IUCV = Constant('PF_IUCV',32)
PF_RXRPC = Constant('PF_RXRPC',33)
PF_ISDN = Constant('PF_ISDN',34)
PF_PHONET = Constant('PF_PHONET',35)
PF_IEEE802154 = Constant('PF_IEEE802154',36)
PF_CAIF = Constant('PF_CAIF',37)
PF_ALG = Constant('PF_ALG',38)
PF_NFC = Constant('PF_NFC',39)
PF_VSOCK = Constant('PF_VSOCK',40)
PF_KCM = Constant('PF_KCM',41)
PF_QIPCRTR = Constant('PF_QIPCRTR',42)
PF_SMC = Constant('PF_SMC',43)
PF_MAX = Constant('PF_MAX',44)
SOMAXCONN = Constant('SOMAXCONN',128)
MSG_OOB = Constant('MSG_OOB',1)
MSG_PEEK = Constant('MSG_PEEK',2)
@@ -666,18 +869,26 @@ MSG_DONTWAIT = Constant('MSG_DONTWAIT',0x40)
MSG_EOR = Constant('MSG_EOR',0x80)
MSG_WAITALL = Constant('MSG_WAITALL',0x100)
MSG_FIN = Constant('MSG_FIN',0x200)
MSG_EOF = Constant('MSG_EOF',0x200)
MSG_SYN = Constant('MSG_SYN',0x400)
MSG_CONFIRM = Constant('MSG_CONFIRM',0x800)
MSG_RST = Constant('MSG_RST',0x1000)
MSG_ERRQUEUE = Constant('MSG_ERRQUEUE',0x2000)
MSG_NOSIGNAL = Constant('MSG_NOSIGNAL',0x4000)
MSG_MORE = Constant('MSG_MORE',0x8000)
MSG_WAITFORONE = Constant('MSG_WAITFORONE',0x10000)
MSG_SENDPAGE_NOTLAST = Constant('MSG_SENDPAGE_NOTLAST',0x20000)
MSG_BATCH = Constant('MSG_BATCH',0x40000)
MSG_EOF = Constant('MSG_EOF',0x200)
MSG_ZEROCOPY = Constant('MSG_ZEROCOPY',0x4000000)
MSG_FASTOPEN = Constant('MSG_FASTOPEN',0x20000000)
MSG_CMSG_CLOEXEC = Constant('MSG_CMSG_CLOEXEC',0x40000000)
SOL_IP = Constant('SOL_IP',0)
SOL_TCP = Constant('SOL_TCP',6)
SOL_UDP = Constant('SOL_UDP',17)
SOL_IPV6 = Constant('SOL_IPV6',41)
SOL_ICMPV6 = Constant('SOL_ICMPV6',58)
SOL_SCTP = Constant('SOL_SCTP',132)
SOL_UDPLITE = Constant('SOL_UDPLITE',136)
SOL_RAW = Constant('SOL_RAW',255)
SOL_IPX = Constant('SOL_IPX',256)
SOL_AX25 = Constant('SOL_AX25',257)
@@ -690,6 +901,22 @@ SOL_PACKET = Constant('SOL_PACKET',263)
SOL_ATM = Constant('SOL_ATM',264)
SOL_AAL = Constant('SOL_AAL',265)
SOL_IRDA = Constant('SOL_IRDA',266)
SOL_NETBEUI = Constant('SOL_NETBEUI',267)
SOL_LLC = Constant('SOL_LLC',268)
SOL_DCCP = Constant('SOL_DCCP',269)
SOL_NETLINK = Constant('SOL_NETLINK',270)
SOL_TIPC = Constant('SOL_TIPC',271)
SOL_RXRPC = Constant('SOL_RXRPC',272)
SOL_PPPOL2TP = Constant('SOL_PPPOL2TP',273)
SOL_BLUETOOTH = Constant('SOL_BLUETOOTH',274)
SOL_PNPIPE = Constant('SOL_PNPIPE',275)
SOL_RDS = Constant('SOL_RDS',276)
SOL_IUCV = Constant('SOL_IUCV',277)
SOL_CAIF = Constant('SOL_CAIF',278)
SOL_ALG = Constant('SOL_ALG',279)
SOL_NFC = Constant('SOL_NFC',280)
SOL_KCM = Constant('SOL_KCM',281)
SOL_TLS = Constant('SOL_TLS',282)
IPX_TYPE = Constant('IPX_TYPE',1)
SHUT_RD = Constant('SHUT_RD',0)
SHUT_WR = Constant('SHUT_WR',1)
@@ -713,6 +940,10 @@ EAI_SYSTEM = Constant('EAI_SYSTEM',-11)
AI_NUMERICHOST = Constant('AI_NUMERICHOST',1)
AI_CANONNAME = Constant('AI_CANONNAME',2)
AI_PASSIVE = Constant('AI_PASSIVE',4)
AI_NUMERICSERV = Constant('AI_NUMERICSERV',8)
AI_ADDRCONFIG = Constant('AI_ADDRCONFIG',16)
AI_V4MAPPED = Constant('AI_V4MAPPED',32)
AI_ALL = Constant('AI_ALL',64)
SIOCADDRT = Constant('SIOCADDRT',0x890B)
SIOCDELRT = Constant('SIOCDELRT',0x890C)
SIOCRTMSG = Constant('SIOCRTMSG',0x890D)
@@ -769,6 +1000,48 @@ SIOCSIFMAP = Constant('SIOCSIFMAP',0x8971)
SIOCADDDLCI = Constant('SIOCADDDLCI',0x8980)
SIOCDELDLCI = Constant('SIOCDELDLCI',0x8981)
SIOCDEVPRIVATE = Constant('SIOCDEVPRIVATE',0x89F0)
F_LINUX_SPECIFIC_BASE = Constant('F_LINUX_SPECIFIC_BASE',1024)
F_SETOWN_EX = Constant('F_SETOWN_EX',15)
F_GETOWN_EX = Constant('F_GETOWN_EX',16)
F_GETOWNER_UIDS = Constant('F_GETOWNER_UIDS',17)
F_OFD_GETLK = Constant('F_OFD_GETLK',36)
F_OFD_SETLK = Constant('F_OFD_SETLK',37)
F_OFD_SETLKW = Constant('F_OFD_SETLKW',38)
F_OWNER_TID = Constant('F_OWNER_TID',0)
F_OWNER_PID = Constant('F_OWNER_PID',1)
F_OWNER_PGRP = Constant('F_OWNER_PGRP',2)
AT_FDCWD = Constant('AT_FDCWD',-100)
AT_SYMLINK_NOFOLLOW = Constant('AT_SYMLINK_NOFOLLOW',0x100)
AT_REMOVEDIR = Constant('AT_REMOVEDIR',0x200)
AT_SYMLINK_FOLLOW = Constant('AT_SYMLINK_FOLLOW',0x400)
AT_NO_AUTOMOUNT = Constant('AT_NO_AUTOMOUNT',0x800)
AT_EMPTY_PATH = Constant('AT_EMPTY_PATH',0x1000)
AT_EACCESS = Constant('AT_EACCESS',0x200)
MREMAP_MAYMOVE = Constant('MREMAP_MAYMOVE',1)
MREMAP_FIXED = Constant('MREMAP_FIXED',2)
PROT_READ = Constant('PROT_READ',0x1)
PROT_WRITE = Constant('PROT_WRITE',0x2)
PROT_EXEC = Constant('PROT_EXEC',0x4)
PROT_SEM = Constant('PROT_SEM',0x8)
PROT_NONE = Constant('PROT_NONE',0x0)
PROT_GROWSDOWN = Constant('PROT_GROWSDOWN',0x01000000)
PROT_GROWSUP = Constant('PROT_GROWSUP',0x02000000)
MAP_SHARED = Constant('MAP_SHARED',0x01)
MAP_PRIVATE = Constant('MAP_PRIVATE',0x02)
MAP_TYPE = Constant('MAP_TYPE',0xf)
MADV_REMOVE = Constant('MADV_REMOVE',9)
MADV_DONTFORK = Constant('MADV_DONTFORK',10)
MADV_DOFORK = Constant('MADV_DOFORK',11)
MADV_MERGEABLE = Constant('MADV_MERGEABLE',12)
MADV_UNMERGEABLE = Constant('MADV_UNMERGEABLE',13)
MADV_HUGEPAGE = Constant('MADV_HUGEPAGE',14)
MADV_NOHUGEPAGE = Constant('MADV_NOHUGEPAGE',15)
MADV_DONTDUMP = Constant('MADV_DONTDUMP',16)
MADV_DODUMP = Constant('MADV_DODUMP',17)
MADV_HWPOISON = Constant('MADV_HWPOISON',100)
MADV_SOFT_OFFLINE = Constant('MADV_SOFT_OFFLINE',101)
MLOCK_ONFAULT = Constant('MLOCK_ONFAULT',1)
MAP_FILE = Constant('MAP_FILE',0)
PTRACE_TRACEME = Constant('PTRACE_TRACEME',0)
PTRACE_PEEKTEXT = Constant('PTRACE_PEEKTEXT',1)
PTRACE_PEEKDATA = Constant('PTRACE_PEEKDATA',2)
@@ -813,6 +1086,8 @@ PT_KILL = Constant('PT_KILL',8)
PT_STEP = Constant('PT_STEP',9)
PT_ATTACH = Constant('PT_ATTACH',0x10)
PT_DETACH = Constant('PT_DETACH',0x11)
SYS_accept = Constant('SYS_accept',330)
SYS_accept4 = Constant('SYS_accept4',344)
SYS_access = Constant('SYS_access',33)
SYS_acct = Constant('SYS_acct',51)
SYS_add_key = Constant('SYS_add_key',269)
@@ -820,6 +1095,8 @@ SYS_adjtimex = Constant('SYS_adjtimex',124)
SYS_afs_syscall = Constant('SYS_afs_syscall',137)
SYS_alarm = Constant('SYS_alarm',27)
SYS_bdflush = Constant('SYS_bdflush',134)
SYS_bind = Constant('SYS_bind',327)
SYS_bpf = Constant('SYS_bpf',361)
SYS_break = Constant('SYS_break',17)
SYS_brk = Constant('SYS_brk',45)
SYS_capget = Constant('SYS_capget',183)
@@ -828,28 +1105,38 @@ SYS_chdir = Constant('SYS_chdir',12)
SYS_chmod = Constant('SYS_chmod',15)
SYS_chown = Constant('SYS_chown',181)
SYS_chroot = Constant('SYS_chroot',61)
SYS_clock_adjtime = Constant('SYS_clock_adjtime',347)
SYS_clock_getres = Constant('SYS_clock_getres',247)
SYS_clock_gettime = Constant('SYS_clock_gettime',246)
SYS_clock_nanosleep = Constant('SYS_clock_nanosleep',248)
SYS_clock_settime = Constant('SYS_clock_settime',245)
SYS_clone = Constant('SYS_clone',120)
SYS_clone3 = Constant('SYS_clone3',435)
SYS_close = Constant('SYS_close',6)
SYS_connect = Constant('SYS_connect',328)
SYS_copy_file_range = Constant('SYS_copy_file_range',379)
SYS_creat = Constant('SYS_creat',8)
SYS_create_module = Constant('SYS_create_module',127)
SYS_delete_module = Constant('SYS_delete_module',129)
SYS_dup = Constant('SYS_dup',41)
SYS_dup2 = Constant('SYS_dup2',63)
SYS_dup3 = Constant('SYS_dup3',316)
SYS_epoll_create = Constant('SYS_epoll_create',236)
SYS_epoll_create1 = Constant('SYS_epoll_create1',315)
SYS_epoll_ctl = Constant('SYS_epoll_ctl',237)
SYS_epoll_pwait = Constant('SYS_epoll_pwait',303)
SYS_epoll_wait = Constant('SYS_epoll_wait',238)
SYS_eventfd = Constant('SYS_eventfd',307)
SYS_eventfd2 = Constant('SYS_eventfd2',314)
SYS_execve = Constant('SYS_execve',11)
SYS_execveat = Constant('SYS_execveat',362)
SYS_exit = Constant('SYS_exit',1)
SYS_exit_group = Constant('SYS_exit_group',234)
SYS_faccessat = Constant('SYS_faccessat',298)
SYS_fadvise64 = Constant('SYS_fadvise64',233)
SYS_fallocate = Constant('SYS_fallocate',309)
SYS_fanotify_init = Constant('SYS_fanotify_init',323)
SYS_fanotify_mark = Constant('SYS_fanotify_mark',324)
SYS_fchdir = Constant('SYS_fchdir',133)
SYS_fchmod = Constant('SYS_fchmod',94)
SYS_fchmodat = Constant('SYS_fchmodat',297)
@@ -858,11 +1145,16 @@ SYS_fchownat = Constant('SYS_fchownat',289)
SYS_fcntl = Constant('SYS_fcntl',55)
SYS_fdatasync = Constant('SYS_fdatasync',148)
SYS_fgetxattr = Constant('SYS_fgetxattr',214)
SYS_finit_module = Constant('SYS_finit_module',353)
SYS_flistxattr = Constant('SYS_flistxattr',217)
SYS_flock = Constant('SYS_flock',143)
SYS_fork = Constant('SYS_fork',2)
SYS_fremovexattr = Constant('SYS_fremovexattr',220)
SYS_fsconfig = Constant('SYS_fsconfig',431)
SYS_fsetxattr = Constant('SYS_fsetxattr',211)
SYS_fsmount = Constant('SYS_fsmount',432)
SYS_fsopen = Constant('SYS_fsopen',430)
SYS_fspick = Constant('SYS_fspick',433)
SYS_fstat = Constant('SYS_fstat',108)
SYS_fstatfs = Constant('SYS_fstatfs',100)
SYS_fstatfs64 = Constant('SYS_fstatfs64',253)
@@ -882,18 +1174,22 @@ SYS_getgroups = Constant('SYS_getgroups',80)
SYS_getitimer = Constant('SYS_getitimer',105)
SYS_get_kernel_syms = Constant('SYS_get_kernel_syms',130)
SYS_get_mempolicy = Constant('SYS_get_mempolicy',260)
SYS_getpeername = Constant('SYS_getpeername',332)
SYS_getpgid = Constant('SYS_getpgid',132)
SYS_getpgrp = Constant('SYS_getpgrp',65)
SYS_getpid = Constant('SYS_getpid',20)
SYS_getpmsg = Constant('SYS_getpmsg',187)
SYS_getppid = Constant('SYS_getppid',64)
SYS_getpriority = Constant('SYS_getpriority',96)
SYS_getrandom = Constant('SYS_getrandom',359)
SYS_getresgid = Constant('SYS_getresgid',170)
SYS_getresuid = Constant('SYS_getresuid',165)
SYS_getrlimit = Constant('SYS_getrlimit',76)
SYS_get_robust_list = Constant('SYS_get_robust_list',299)
SYS_getrusage = Constant('SYS_getrusage',77)
SYS_getsid = Constant('SYS_getsid',147)
SYS_getsockname = Constant('SYS_getsockname',331)
SYS_getsockopt = Constant('SYS_getsockopt',340)
SYS_gettid = Constant('SYS_gettid',207)
SYS_gettimeofday = Constant('SYS_gettimeofday',78)
SYS_getuid = Constant('SYS_getuid',24)
@@ -903,18 +1199,25 @@ SYS_idle = Constant('SYS_idle',112)
SYS_init_module = Constant('SYS_init_module',128)
SYS_inotify_add_watch = Constant('SYS_inotify_add_watch',276)
SYS_inotify_init = Constant('SYS_inotify_init',275)
SYS_inotify_init1 = Constant('SYS_inotify_init1',318)
SYS_inotify_rm_watch = Constant('SYS_inotify_rm_watch',277)
SYS_io_cancel = Constant('SYS_io_cancel',231)
SYS_ioctl = Constant('SYS_ioctl',54)
SYS_io_destroy = Constant('SYS_io_destroy',228)
SYS_io_getevents = Constant('SYS_io_getevents',229)
SYS_ioperm = Constant('SYS_ioperm',101)
SYS_io_pgetevents = Constant('SYS_io_pgetevents',388)
SYS_iopl = Constant('SYS_iopl',110)
SYS_ioprio_get = Constant('SYS_ioprio_get',274)
SYS_ioprio_set = Constant('SYS_ioprio_set',273)
SYS_io_setup = Constant('SYS_io_setup',227)
SYS_io_submit = Constant('SYS_io_submit',230)
SYS_io_uring_enter = Constant('SYS_io_uring_enter',426)
SYS_io_uring_register = Constant('SYS_io_uring_register',427)
SYS_io_uring_setup = Constant('SYS_io_uring_setup',425)
SYS_ipc = Constant('SYS_ipc',117)
SYS_kcmp = Constant('SYS_kcmp',354)
SYS_kexec_file_load = Constant('SYS_kexec_file_load',382)
SYS_kexec_load = Constant('SYS_kexec_load',268)
SYS_keyctl = Constant('SYS_keyctl',271)
SYS_kill = Constant('SYS_kill',37)
@@ -922,6 +1225,7 @@ SYS_lchown = Constant('SYS_lchown',16)
SYS_lgetxattr = Constant('SYS_lgetxattr',213)
SYS_link = Constant('SYS_link',9)
SYS_linkat = Constant('SYS_linkat',294)
SYS_listen = Constant('SYS_listen',329)
SYS_listxattr = Constant('SYS_listxattr',215)
SYS_llistxattr = Constant('SYS_llistxattr',216)
SYS__llseek = Constant('SYS__llseek',140)
@@ -933,16 +1237,20 @@ SYS_lsetxattr = Constant('SYS_lsetxattr',210)
SYS_lstat = Constant('SYS_lstat',107)
SYS_madvise = Constant('SYS_madvise',205)
SYS_mbind = Constant('SYS_mbind',259)
SYS_membarrier = Constant('SYS_membarrier',365)
SYS_memfd_create = Constant('SYS_memfd_create',360)
SYS_mincore = Constant('SYS_mincore',206)
SYS_mkdir = Constant('SYS_mkdir',39)
SYS_mkdirat = Constant('SYS_mkdirat',287)
SYS_mknod = Constant('SYS_mknod',14)
SYS_mknodat = Constant('SYS_mknodat',288)
SYS_mlock = Constant('SYS_mlock',150)
SYS_mlock2 = Constant('SYS_mlock2',378)
SYS_mlockall = Constant('SYS_mlockall',152)
SYS_mmap = Constant('SYS_mmap',90)
SYS_modify_ldt = Constant('SYS_modify_ldt',123)
SYS_mount = Constant('SYS_mount',21)
SYS_move_mount = Constant('SYS_move_mount',429)
SYS_move_pages = Constant('SYS_move_pages',301)
SYS_mprotect = Constant('SYS_mprotect',125)
SYS_mpx = Constant('SYS_mpx',56)
@@ -953,11 +1261,16 @@ SYS_mq_timedreceive = Constant('SYS_mq_timedreceive',265)
SYS_mq_timedsend = Constant('SYS_mq_timedsend',264)
SYS_mq_unlink = Constant('SYS_mq_unlink',263)
SYS_mremap = Constant('SYS_mremap',163)
SYS_msgctl = Constant('SYS_msgctl',402)
SYS_msgget = Constant('SYS_msgget',399)
SYS_msgrcv = Constant('SYS_msgrcv',401)
SYS_msgsnd = Constant('SYS_msgsnd',400)
SYS_msync = Constant('SYS_msync',144)
SYS_multiplexer = Constant('SYS_multiplexer',201)
SYS_munlock = Constant('SYS_munlock',151)
SYS_munlockall = Constant('SYS_munlockall',153)
SYS_munmap = Constant('SYS_munmap',91)
SYS_name_to_handle_at = Constant('SYS_name_to_handle_at',345)
SYS_nanosleep = Constant('SYS_nanosleep',162)
SYS_newfstatat = Constant('SYS_newfstatat',291)
SYS__newselect = Constant('SYS__newselect',142)
@@ -970,23 +1283,41 @@ SYS_oldstat = Constant('SYS_oldstat',18)
SYS_olduname = Constant('SYS_olduname',109)
SYS_open = Constant('SYS_open',5)
SYS_openat = Constant('SYS_openat',286)
SYS_openat2 = Constant('SYS_openat2',437)
SYS_open_by_handle_at = Constant('SYS_open_by_handle_at',346)
SYS_open_tree = Constant('SYS_open_tree',428)
SYS_pause = Constant('SYS_pause',29)
SYS_pciconfig_iobase = Constant('SYS_pciconfig_iobase',200)
SYS_pciconfig_read = Constant('SYS_pciconfig_read',198)
SYS_pciconfig_write = Constant('SYS_pciconfig_write',199)
SYS_perf_event_open = Constant('SYS_perf_event_open',319)
SYS_personality = Constant('SYS_personality',136)
SYS_pidfd_getfd = Constant('SYS_pidfd_getfd',438)
SYS_pidfd_open = Constant('SYS_pidfd_open',434)
SYS_pidfd_send_signal = Constant('SYS_pidfd_send_signal',424)
SYS_pipe = Constant('SYS_pipe',42)
SYS_pipe2 = Constant('SYS_pipe2',317)
SYS_pivot_root = Constant('SYS_pivot_root',203)
SYS_pkey_alloc = Constant('SYS_pkey_alloc',384)
SYS_pkey_free = Constant('SYS_pkey_free',385)
SYS_pkey_mprotect = Constant('SYS_pkey_mprotect',386)
SYS_poll = Constant('SYS_poll',167)
SYS_ppoll = Constant('SYS_ppoll',281)
SYS_prctl = Constant('SYS_prctl',171)
SYS_pread = Constant('SYS_pread',179)
SYS_preadv = Constant('SYS_preadv',320)
SYS_preadv2 = Constant('SYS_preadv2',380)
SYS_prlimit64 = Constant('SYS_prlimit64',325)
SYS_process_vm_readv = Constant('SYS_process_vm_readv',351)
SYS_process_vm_writev = Constant('SYS_process_vm_writev',352)
SYS_prof = Constant('SYS_prof',44)
SYS_profil = Constant('SYS_profil',98)
SYS_pselect6 = Constant('SYS_pselect6',280)
SYS_ptrace = Constant('SYS_ptrace',26)
SYS_putpmsg = Constant('SYS_putpmsg',188)
SYS_pwrite = Constant('SYS_pwrite',180)
SYS_pwritev = Constant('SYS_pwritev',321)
SYS_pwritev2 = Constant('SYS_pwritev2',381)
SYS_query_module = Constant('SYS_query_module',166)
SYS_quotactl = Constant('SYS_quotactl',131)
SYS_read = Constant('SYS_read',3)
@@ -996,12 +1327,18 @@ SYS_readlink = Constant('SYS_readlink',85)
SYS_readlinkat = Constant('SYS_readlinkat',296)
SYS_readv = Constant('SYS_readv',145)
SYS_reboot = Constant('SYS_reboot',88)
SYS_recv = Constant('SYS_recv',336)
SYS_recvfrom = Constant('SYS_recvfrom',337)
SYS_recvmmsg = Constant('SYS_recvmmsg',343)
SYS_recvmsg = Constant('SYS_recvmsg',342)
SYS_remap_file_pages = Constant('SYS_remap_file_pages',239)
SYS_removexattr = Constant('SYS_removexattr',218)
SYS_rename = Constant('SYS_rename',38)
SYS_renameat = Constant('SYS_renameat',293)
SYS_renameat2 = Constant('SYS_renameat2',357)
SYS_request_key = Constant('SYS_request_key',270)
SYS_rmdir = Constant('SYS_rmdir',40)
SYS_rseq = Constant('SYS_rseq',387)
SYS_rtas = Constant('SYS_rtas',255)
SYS_rt_sigaction = Constant('SYS_rt_sigaction',173)
SYS_rt_sigpending = Constant('SYS_rt_sigpending',175)
@@ -1010,18 +1347,29 @@ SYS_rt_sigqueueinfo = Constant('SYS_rt_sigqueueinfo',177)
SYS_rt_sigreturn = Constant('SYS_rt_sigreturn',172)
SYS_rt_sigsuspend = Constant('SYS_rt_sigsuspend',178)
SYS_rt_sigtimedwait = Constant('SYS_rt_sigtimedwait',176)
SYS_rt_tgsigqueueinfo = Constant('SYS_rt_tgsigqueueinfo',322)
SYS_sched_getaffinity = Constant('SYS_sched_getaffinity',223)
SYS_sched_getattr = Constant('SYS_sched_getattr',356)
SYS_sched_getparam = Constant('SYS_sched_getparam',155)
SYS_sched_get_priority_max = Constant('SYS_sched_get_priority_max',159)
SYS_sched_get_priority_min = Constant('SYS_sched_get_priority_min',160)
SYS_sched_getscheduler = Constant('SYS_sched_getscheduler',157)
SYS_sched_rr_get_interval = Constant('SYS_sched_rr_get_interval',161)
SYS_sched_setaffinity = Constant('SYS_sched_setaffinity',222)
SYS_sched_setattr = Constant('SYS_sched_setattr',355)
SYS_sched_setparam = Constant('SYS_sched_setparam',154)
SYS_sched_setscheduler = Constant('SYS_sched_setscheduler',156)
SYS_sched_yield = Constant('SYS_sched_yield',158)
SYS_seccomp = Constant('SYS_seccomp',358)
SYS_select = Constant('SYS_select',82)
SYS_semctl = Constant('SYS_semctl',394)
SYS_semget = Constant('SYS_semget',393)
SYS_semtimedop = Constant('SYS_semtimedop',392)
SYS_send = Constant('SYS_send',334)
SYS_sendfile = Constant('SYS_sendfile',186)
SYS_sendmmsg = Constant('SYS_sendmmsg',349)
SYS_sendmsg = Constant('SYS_sendmsg',341)
SYS_sendto = Constant('SYS_sendto',335)
SYS_setdomainname = Constant('SYS_setdomainname',121)
SYS_setfsgid = Constant('SYS_setfsgid',139)
SYS_setfsuid = Constant('SYS_setfsuid',138)
@@ -1030,6 +1378,7 @@ SYS_setgroups = Constant('SYS_setgroups',81)
SYS_sethostname = Constant('SYS_sethostname',74)
SYS_setitimer = Constant('SYS_setitimer',104)
SYS_set_mempolicy = Constant('SYS_set_mempolicy',261)
SYS_setns = Constant('SYS_setns',350)
SYS_setpgid = Constant('SYS_setpgid',57)
SYS_setpriority = Constant('SYS_setpriority',97)
SYS_setregid = Constant('SYS_setregid',71)
@@ -1039,20 +1388,29 @@ SYS_setreuid = Constant('SYS_setreuid',70)
SYS_setrlimit = Constant('SYS_setrlimit',75)
SYS_set_robust_list = Constant('SYS_set_robust_list',300)
SYS_setsid = Constant('SYS_setsid',66)
SYS_setsockopt = Constant('SYS_setsockopt',339)
SYS_set_tid_address = Constant('SYS_set_tid_address',232)
SYS_settimeofday = Constant('SYS_settimeofday',79)
SYS_setuid = Constant('SYS_setuid',23)
SYS_setxattr = Constant('SYS_setxattr',209)
SYS_sgetmask = Constant('SYS_sgetmask',68)
SYS_shmat = Constant('SYS_shmat',397)
SYS_shmctl = Constant('SYS_shmctl',396)
SYS_shmdt = Constant('SYS_shmdt',398)
SYS_shmget = Constant('SYS_shmget',395)
SYS_shutdown = Constant('SYS_shutdown',338)
SYS_sigaction = Constant('SYS_sigaction',67)
SYS_sigaltstack = Constant('SYS_sigaltstack',185)
SYS_signal = Constant('SYS_signal',48)
SYS_signalfd = Constant('SYS_signalfd',305)
SYS_signalfd4 = Constant('SYS_signalfd4',313)
SYS_sigpending = Constant('SYS_sigpending',73)
SYS_sigprocmask = Constant('SYS_sigprocmask',126)
SYS_sigreturn = Constant('SYS_sigreturn',119)
SYS_sigsuspend = Constant('SYS_sigsuspend',72)
SYS_socket = Constant('SYS_socket',326)
SYS_socketcall = Constant('SYS_socketcall',102)
SYS_socketpair = Constant('SYS_socketpair',333)
SYS_splice = Constant('SYS_splice',283)
SYS_spu_create = Constant('SYS_spu_create',279)
SYS_spu_run = Constant('SYS_spu_run',278)
@@ -1060,16 +1418,19 @@ SYS_ssetmask = Constant('SYS_ssetmask',69)
SYS_stat = Constant('SYS_stat',106)
SYS_statfs = Constant('SYS_statfs',99)
SYS_statfs64 = Constant('SYS_statfs64',252)
SYS_statx = Constant('SYS_statx',383)
SYS_stime = Constant('SYS_stime',25)
SYS_stty = Constant('SYS_stty',31)
SYS_subpage_prot = Constant('SYS_subpage_prot',310)
SYS_swapcontext = Constant('SYS_swapcontext',249)
SYS_swapoff = Constant('SYS_swapoff',115)
SYS_swapon = Constant('SYS_swapon',87)
SYS_switch_endian = Constant('SYS_switch_endian',363)
SYS_symlink = Constant('SYS_symlink',83)
SYS_symlinkat = Constant('SYS_symlinkat',295)
SYS_sync = Constant('SYS_sync',36)
SYS_sync_file_range2 = Constant('SYS_sync_file_range2',308)
SYS_syncfs = Constant('SYS_syncfs',348)
SYS__sysctl = Constant('SYS__sysctl',149)
SYS_sysfs = Constant('SYS_sysfs',135)
SYS_sysinfo = Constant('SYS_sysinfo',116)
@@ -1099,6 +1460,7 @@ SYS_unlink = Constant('SYS_unlink',10)
SYS_unlinkat = Constant('SYS_unlinkat',292)
SYS_unshare = Constant('SYS_unshare',282)
SYS_uselib = Constant('SYS_uselib',86)
SYS_userfaultfd = Constant('SYS_userfaultfd',364)
SYS_ustat = Constant('SYS_ustat',62)
SYS_utime = Constant('SYS_utime',30)
SYS_utimensat = Constant('SYS_utimensat',304)
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Loaded 100 of 885 files, more files were not shown because too many files have changed in this diff. Show more