Compare commits

...
2409 Commits
Author SHA1 Message Date
Mathias Svensson 4ebcbee34b Release 3.4.0 2017-02-13 01:31:16 +01:00
Mathias Svensson d25d62c126 Merge branch 'stable' into stable-staging 2017-02-13 01:31:00 +01:00
Zach Riggle 5392611ed5 Use updated testing scripts from 3.5.0 on 3.4.0 2017-02-13 01:17:57 +01:00
Zach Riggle 475ffa632e Always run Android tests on staging branches and new tags (#866) 2017-01-23 14:43:32 -05:00
Mathias Svensson 602efd2790 Release 3.4.0beta4 2017-01-12 23:42:25 +01:00
Mathias Svensson 2f7f0de984 Release 3.3.4 2017-01-12 23:40:13 +01:00
Zach Riggle 16b507e197 Change hexdump_iter to not rely on the length of its input file (#850)
We cannot determine the length of the file if passed e.g. a tube or a pipe or PTY or character device (e.g. stdin or /dev/null).

Supercedes: 9c2f0f4e
(cherry picked from commit 14f717b7b4)
2017-01-12 17:20:15 -05:00
Zach Riggle 53f041a4d2 Fix shellcraft.amd64.popad registers (#853)
Fixes Gallopsled/pwntools#848
2017-01-12 16:47:44 -05:00
Zach Riggle b2a5b76cf7 Do not perform temporary register selection if we don't need to (#852)
Fixes Gallopsled/pwntools#847
2017-01-12 16:36:49 -05:00
Zach Riggle 9c2f0f4e89 Fix hexdump_iter for actual file objects, like those used by phd (#846) 2017-01-11 15:06:11 -05:00
Mathias Svensson 7ba3a1b32f Release 3.4.0beta3 2017-01-10 23:53:59 +01:00
Mathias Svensson d1edd275d9 Release 3.3.3 2017-01-10 23:52:50 +01:00
Zach Riggle cb4991c41d Fix regression in amd64.mov with 32-bit values >= 0x80000000 (#843)
Fixes Gallopsled/pwntools#841
Caused by: Gallopsled/pwntools#504 (9ca377c)
2017-01-10 15:56:50 -05:00
Mathias Svensson 48616c633d Release 3.4.0beta2 2017-01-10 18:30:16 +01:00
Mathias Svensson 323975f343 Release 3.3.2 2017-01-10 18:28:24 +01:00
Zach Riggle f65c258956 Fix hexdump regression in 3.3.1 (#840) 2017-01-10 12:15:34 -05:00
Mathias Svensson f5e16d3db6 Release 3.4.0beta1 2017-01-10 16:59:22 +01:00
Mathias Svensson d55874a6d3 Release 3.3.1 2017-01-10 16:53:24 +01:00
Zach Riggle 0426d498d9 Resolve feature regression in hexdump(..., cyclic=True)
This code wasnt updated when the code was changed to operate on file descriptors.

Additionally, there was a functional regression, that the first line would be skipped.

Fixes: Gallopsled/pwntools#836
Caused by: Gallopsled/pwntools#695 (d65991d)
2017-01-09 21:59:19 -05:00
Zach Riggle a2c67e5075 Merge branch 'stable' into beta 2017-01-05 12:39:25 -05:00
Zach Riggle 54e722819b Defer attempts to start ADB server until we actually fail to connect (#833)
* Defer attempts to start ADB server until we actually fail to connect

* Upgrade to a warning message; fix .version() multiple calls with _autoclose

* Add doctest which tests the kill/restart behavior
2017-01-05 12:38:51 -05:00
Mathias Svensson 7ed118763b Merge branch 'dev' into beta 2016-12-24 11:54:21 +01:00
Mathias Svensson 5a370162e5 Release 3.3.0 2016-12-24 11:26:18 +01:00
Mathias Svensson 253ab78e4c Merge branch 'stable' into beta 2016-12-24 11:25:12 +01:00
Mathias Svensson e997c17397 Merge branch 'beta' into dev 2016-12-24 11:10:10 +01:00
Mathias Svensson 0acc8ee499 Merge branch 'stable' into beta 2016-12-24 11:00:32 +01:00
Mathias Svensson d39f9a145e Release 3.2.1 2016-12-24 10:53:02 +01:00
Zach Riggle f14e0e5652 Reorder get_buffer_size so that the value is validated
This prevents silly things like tube.recv("abcdef") which will hang
2016-12-22 16:41:51 -05:00
Zach Riggle aaa83983ad Merge branch 'beta' into dev 2016-12-22 16:27:46 -05:00
Zach Riggle 1b76a27bd5 Merge remote-tracking branch 'upstream/stable' into beta-staging 2016-12-22 16:26:31 -05:00
Zach Riggle 87491bf6dc Fix install script for new branches, where TRAVIS_COMMIT_RANGE is empty 2016-12-22 14:40:43 -05:00
Zach Riggle b30835ec5b Fix regression introduced in 386e68691f 2016-12-22 14:03:09 -05:00
Zach Riggle 1241073391 Remove support for installation without psutil (#821)
* Remove support for installation without psutil.

OpenBSD was the edge case we cared about, it is supported for over a year (giampaolo/psutil#615)

* Bump psutil version to when they introduced OpenBSD support
2016-12-20 14:06:06 -05:00
Zach Riggle cfcd79e169 Update install strings to include libffi-dev and be consistent 2016-12-16 11:37:13 -06:00
Zach Riggle 706a784904 Directly invoke sock.close() when we hit POLLHUP 2016-12-15 20:20:07 -06:00
Zach Riggle 70c96330de Make sock.connected much more robust by using socket.poll (#817)
* Make sock.connected much more robust by using socket.poll

* Fix use of socket.socket.recv vs. ssh transport recv
2016-12-15 20:15:19 -06:00
Zach Riggle cae3cddc07 Fix incorrect error message in serialtube 2016-12-15 20:04:12 -06:00
Zach Riggle 5373dcdeed Fix dev-only regression in serialtube constructor, and use Timeout object properties 2016-12-15 20:04:12 -06:00
Zach Riggle 5d4bf3db6c Add MemLeak.u64/u32/... aliases 2016-12-15 17:15:10 -06:00
Zach Riggle fbfa54ad61 Fix failing doctestse on dev 2016-12-15 16:45:08 -06:00
Zach Riggle b323264032 Merge branch 'beta' into dev 2016-12-15 15:05:16 -06:00
Zach Riggle 332c9d2031 Merge remote-tracking branch 'upstream/stable' into beta-staging 2016-12-15 14:52:39 -06:00
Zach Riggle 036397c861 Fix adb.uninstall() typo (#816)
Closes Gallopsled/pwntools#783
2016-12-15 14:52:25 -06:00
Zach Riggle dcf03fd44d Bugfix for None data from field (#815) 2016-12-15 14:13:36 -06:00
Zach Riggle df54bf2bb3 Dont barf if home directory is not writable (#814)
* Handle the home directory being read-only / cache directory being unavailable

Fixes Gallopsled/pwntools#799

* Add doctest for context.cache_dir
2016-12-15 14:04:45 -06:00
Zach Riggle 386e68691f Multiple ADB performance and functionality fixes (#811)
* Fix ADB wait_for_device with ANDROID_SERIAL set, and fix performance

* Fix QEMU usage for native binaries

* Fix adb.write and adb.listdir operating on the wrong type of object

* Fix failing unit test with new behavior in adb.protocol.Client.list

* Fix adb server startup issue

* Rework deferred initialization to work around class-scope superclass attributes, and add test for AdbDevice
2016-12-14 17:34:18 -06:00
Zach Riggle 2c841eaa21 Add adb.{unlink,mkdir,makedirs,isdir,exists} (#809)
* Add adb.{unlink,mkdir,makedirs,isdir,exists}

* Change unlink() to throw an exception rather than return a string

* Fix doctest and code for isdir

* Remove unused variable
2016-12-14 16:49:41 -06:00
Zach Riggle 22f170abc7 Check the name before attempting to call startswith() (#805) 2016-12-14 16:47:38 -06:00
Zach Riggle 350610fbee Fix error message with StrictHostKeyChecking (#813) 2016-12-14 16:37:05 -06:00
Zach Riggle c7b3852eae Fix exception thrown under 32-bit Python interpreters. (#804)
Fixes Gallopsled/pwntools#518
2016-12-14 16:26:29 -06:00
Zach Riggle eaf6402198 Fix adb.partitions listing (#802)
* Fix adb.partitions listing

* Add adb.walk and adb.find functions to ensure adb.partitions works on devices without a find binary

* Add adb.readlink to simplify logic for reading symlinks
2016-12-14 15:37:47 -06:00
Zach Riggle d2c6184a00 Add missing changelog entry 2016-12-14 14:58:00 -06:00
Zach Riggle e5645e7b53 Update CHANGELOG missing links 2016-12-14 14:49:54 -06:00
Zach Riggle 09dbe0a54d Update CHANGELOG links 2016-12-14 14:49:27 -06:00
Zach Riggle 0bd0de78f9 Update CHANGELOG 2016-12-14 14:48:19 -06:00
Zach Riggle 546061e577 Modify coredump_filter of spawned processes so that library contents are included 2016-12-12 18:26:46 -06:00
Zach Riggle 5ebc8b5bb7 Check the name before attempting to call startswith() 2016-12-12 18:26:46 -06:00
Zach Riggle b83a6c7db8 Fix process.leak by providing a sane default leak size 2016-12-05 15:44:04 -05:00
Owlz 5d9792fb4c Variable Size Buffer Fill (#806)
Support custom buffer-read sizes for `tube` objects via their internal `Buffer` object.  Default buffer size is 4096.  Buffer size can be set per-object at instantiation-time (`tube(buffer_fill_size=...)`), by attribute (`tube.buffer_fill_size=...`), or in a context (`context.buffer_size=...`).
2016-12-05 15:21:08 -05:00
Zach Riggle 1c54e347f2 Add 'shell' option for ssh.process to pass to "sh -c" (#800)
Add 'shell' option for ssh.process to pass to "sh -c"
2016-11-29 11:52:44 -07:00
Ricky Zhou 2f597f41d4 Properly handle exceptions in remote._connect. (#793)
Previously, if getaddrinfo or socket.socket threw an exception,
_connect would return without ever calling h.success or h.failure. As a
result, progress indicators would continue to update indefinitely.

Fix this by using a with statement instead.

(Also remove an unused variable and fix a typo.)
2016-11-28 14:45:20 -07:00
Zach Riggle 7545dafffb Wrap context.log_console when using terminal I/O (#797)
Fixes Gallopsled/pwntools#792
2016-11-23 11:11:17 -07:00
Zach Riggle 3acec5421f Set shell=False 2016-11-12 23:16:32 -08:00
Mathias Svensson 620364dd1d Fixed a link in CHANGELOG.md 2016-11-12 21:10:05 +01:00
Mathias Svensson b441cf967a Start work on 3.4.0 2016-11-12 20:39:25 +01:00
Mathias Svensson 76c21548db Release 3.3.0beta0 2016-11-12 19:33:58 +01:00
Mathias Svensson ad71d9235b Release 3.2.0 2016-11-12 13:43:56 +01:00
Mathias Svensson 2e5f8061b2 Merge branch 'stable' into beta 2016-11-12 12:59:46 +01:00
Zach Riggle 099404277e Enhance documentation and error logging for ssh.process preexec_fn usage (#787)
Also fix other incorrect log usage

Fixes Gallopsled/pwntools#786
2016-11-12 12:58:24 +01:00
Zach Riggle 30c34b785a Fix ROP.call(Function(...)) breaking dump()
Fixes #770
2016-11-10 14:23:28 -08:00
Zach Riggle 6c304d3511 Add a bit more docs to the ADB module 2016-11-10 13:50:15 -08:00
Zach Riggle dc297e17ae Fix docstring commit [skip ci] 2016-11-07 18:52:12 -08:00
Zach Riggle fa402ceb57 Add adb.uptime and adb.boot_time 2016-11-07 17:53:52 -08:00
Zach Riggle 483adb8e2d Update ISSUE_TEMPLATE.md 2016-11-07 12:05:00 -08:00
Zach Riggle 76fe04e356 Fix log message error in adb.uninstall 2016-11-01 16:14:55 -07:00
Justin Steven 82312baba0 Add cyclic_metasploit() and cyclic_metasploit_find() (#785)
* Add cyclic_metasploit and cyclic_metasploit_find

* Stop using mutable default arguments
2016-10-26 17:19:19 -07:00
Zach Riggle d101a775aa Fix adb.uninstall() typo
Closes Gallopsled/pwntools#783
2016-10-26 10:25:34 -07:00
Mathias Svensson 5fda6580e8 Expose the BitPolynom (#755) 2016-10-23 22:38:50 +02:00
Mathias Svensson 9185437626 Merge branch 'beta' into dev 2016-10-23 11:35:03 +02:00
Mathias Svensson bde40c36ae Merge branch 'stable' into beta 2016-10-23 11:12:35 +02:00
Mathias Svensson 894b17e74a Release 3.1.1 2016-10-23 11:11:39 +02:00
Mathias Svensson 33b734cbc6 Added a doctest for MemLeak.struct 2016-10-23 11:11:32 +02:00
Morten Brøns-Pedersen 3e8454412e Bugfix in MemLeak.struct. (#768)
The function didn't work due to `sizeof` not being defined.  This PR imports
`ctypes` and uses `ctypes.sizeof`.
2016-10-23 10:53:04 +02:00
Zach Riggle 420f99c5d0 Automatic update checking should not log to stdout. (#774)
This breaks piping into files for all of the command-line utilities.
2016-10-20 15:41:00 -07:00
Zach Riggle 98052e4166 Add an error to cyclic() if the requested length is too long (#782)
$ cyclic 999999999
[ERROR] Can't create a pattern length=999999999 with len(alphabet)==26 and n==4

Fixes Gallopsled/pwntools#781
2016-10-19 09:18:41 -07:00
Mathias Svensson e971856c74 Merge branch 'beta' into dev 2016-10-18 23:09:45 +02:00
Mathias Svensson 09ee73c31d Merge branch 'stable' into beta 2016-10-18 22:58:20 +02:00
Zach Riggle 0c4d1365e9 Fix documentation generation since autoprogram broke Python2 2016-10-18 22:57:32 +02:00
Mathias Svensson b3f941c3f5 Merge branch 'beta' into dev 2016-10-18 22:42:29 +02:00
Justin Steven 67e11a9aeb Fix typos in cyclic.py's docstrings (#775) 2016-10-18 13:26:42 -07:00
Mathias Svensson 7d5f8ca4b4 Release 3.2.0beta4 2016-10-18 22:22:19 +02:00
Zach Riggle 7695acc798 Fix bash completion regression (#772)
Fixes Gallopsled/pwntools#767
2016-10-18 22:17:31 +02:00
Zach Riggle 3f48a0b803 Remove all Github update checks (#761)
These were nice-to-have, but as long as PyPi is updated and functioning
properly, we don't need to check Github.

Fixes Gallopsled/pwntools#756
2016-10-18 21:58:03 +02:00
Zach Riggle fd731154ff Make process.argv optional, using context.binary 2016-10-15 14:29:13 -07:00
Isaac 906bc94a5f fix typo in TESTING.md (#769) 2016-10-15 13:31:42 +02:00
bstub db03e7de10 Adding escaped hex output format to shellcraft -f option (#765)
* adding output format for python hex-notation

* cleaned up implementation

* changed format identifier to {a} --escaped

* {a] was taken by asm, changed format identifier to {d} --escaped

* adding {e}lf to help
2016-10-14 13:13:02 -07:00
Morten Brøns-Pedersen 97e03fd29f Bugfix in MemLeak.struct. (#768)
The function didn't work due to `sizeof` not being defined.  This PR imports
`ctypes` and uses `ctypes.sizeof`.
2016-10-14 13:11:18 -07:00
Zach Riggle 09b8bb93a7 Fix regressions introduced by f9133b1680 2016-10-14 13:10:13 -07:00
Zach Riggle f9133b1680 Add STDERR argument, and write docs for args module (#760)
Add STDERR argument, and write docs for args module

Fixes Gallopsled/pwntools#759
2016-10-10 19:13:45 -07:00
Mathias Svensson 8aa21bd99a Merge branch 'beta' into dev 2016-10-11 03:06:21 +02:00
Mathias Svensson e5b6aedd3d Release 3.2.0beta3 2016-10-11 03:00:18 +02:00
Zach Riggle 4b405c69b6 Fix incorrect usage of argv in unhex 2016-10-11 02:59:52 +02:00
Zach Riggle 9af20c778f Fix incorrect usage of argv in unhex 2016-10-10 17:55:13 -07:00
Mathias Svensson d1621dca87 Merge branch 'beta' into dev 2016-10-10 15:50:53 +02:00
Mathias Svensson 31b047d29b Release 3.2.0beta2 because pypi is being retarded 2016-10-10 15:48:52 +02:00
Mathias Svensson 39970c3847 Merge branch 'beta' into dev 2016-10-10 14:59:41 +02:00
Mathias Svensson e0c65c9d6d Release 3.2.0beta1 2016-10-10 14:58:51 +02:00
Zach Riggle 59d0cd2eeb Fix wait-for-device with kick=True re-using the same client (#757) 2016-10-10 14:58:00 +02:00
Zach Riggle 8d11fb8594 Fix wait-for-device with kick=True re-using the same client (#757) 2016-10-09 20:00:00 -07:00
Zach Riggle aec3fa6879 Remove all Github update checks (#761)
These were nice-to-have, but as long as PyPi is updated and functioning
properly, we don't need to check Github.

Fixes Gallopsled/pwntools#756
2016-10-07 15:30:38 -07:00
Zach Riggle ab6602407e Move issue/pr templates to .github 2016-10-07 15:18:58 -07:00
Zach Riggle 42ab0c985d Sort inputs with isort 2016-10-05 15:51:05 -07:00
Zach Riggle b215828133 Make tube.stream() more robust 2016-10-05 15:49:41 -07:00
Zach Riggle e3af4ce6a7 Update changelog 2016-10-05 15:44:13 -07:00
Zach Riggle 96c6edcc37 Update changelog 2016-10-05 15:44:03 -07:00
Zach Riggle b198ec8633 Add tube.stream() 2016-10-05 15:43:04 -07:00
Mathias Svensson c8a87381e8 Merge branch 'beta' into dev 2016-10-02 20:38:08 +02:00
Mathias Svensson 548e033e7e Release 3.2.0beta0 by merging branch 'stable' into beta 2016-10-02 20:32:09 +02:00
Mathias Svensson fc097f3446 Fixed a link in the CHANGELOG 2016-10-02 20:27:51 +02:00
Mathias Svensson eb92a95134 Release 3.1.0 2016-10-02 20:12:51 +02:00
Zach Riggle c706461f10 Add branch table 2016-10-02 20:07:12 +02:00
Zach Riggle b0ad5eb915 Add branch table 2016-09-28 13:31:56 -07:00
Zach Riggle 94f88cc8ba Update changelog 2016-09-28 13:13:53 -07:00
Zach Riggle 1e414afbeb Add connect() alias for remote(), add docs for tcp() and udp() aliases 2016-09-28 13:05:54 -07:00
Zach Riggle 869ec42082 Add ssh.read and ssh.write aliases 2016-09-28 13:04:28 -07:00
Zach Riggle 4893819b4c Add adb.install, adb.uninstall, and adb.packages 2016-09-28 12:42:22 -07:00
Zach Riggle fb1b952769 Do not wrap non-functions 2016-09-27 19:31:50 -07:00
Zach Riggle 859380285f Handle missing properties for AdbDevice 2016-09-27 19:08:41 -07:00
Zach Riggle 2af55c9bc3 Allow device-scoped access to ADB facilities off of AdbDevice 2016-09-27 19:04:24 -07:00
Zach Riggle 4725b1be96 adb.adb(["shell", ...]) should go through adb.process() 2016-09-27 13:55:35 -07:00
Zach Riggle 5af5f0c55d Fix adb.push statement ordering 2016-09-26 18:10:18 -07:00
Zach Riggle e84f395c97 Wait for the currently-selected device in wait_for_device 2016-09-26 18:03:27 -07:00
Zach Riggle fbf51ad96e Fix target adb.push() 2016-09-26 17:56:28 -07:00
Zach Riggle 52433339ec adb.protocol.Connection should always pack as 32-bit 2016-09-26 17:43:26 -07:00
Zach Riggle f277d5502f Allow adb.push to specify a full target filename in an existing directory 2016-09-26 16:53:31 -07:00
Zach Riggle 794122ec13 Add kwargs to handle weird "adb devices" output 2016-09-26 16:49:34 -07:00
Zach Riggle 65b266e9b3 Revert part of 8793dec, fix commands, remove shippable.yml 2016-09-26 16:49:34 -07:00
Zach Riggle ca6eddc235 shellcraft.xxx.linux.sh now passes argv0 (#734)
shellcraft.xxx.linux.sh now passes argv0

If you need shorter shellcode, use "execve" directly.

Fixes Gallopsled/pwntools#626
2016-09-25 18:31:29 -07:00
Zach Riggle 8793decd1c Remove additional references to "--pre" and use "python setup.py develop" instead of "-e" magic
Related to Gallopsled/pwntools#735
2016-09-19 17:18:57 -07:00
Mathias Svensson 628aaabd04 Bump the version number in the pip badge 2016-09-19 23:24:01 +02:00
Mathias Svensson 3544167f26 Merge branch 'beta' into dev 2016-09-19 23:16:04 +02:00
Mathias Svensson 9cca9c989b Merge branch 'stable' into beta 2016-09-19 23:07:53 +02:00
Mathias Svensson f42c291fef Release 3.0.4 2016-09-19 22:57:54 +02:00
Zach Riggle dacdd397ab Merge remote-tracking branch 'upstream/stable' into beta 2016-09-19 13:10:34 -07:00
Zach Riggle c0f02d453a Merge pull request #752 from zachriggle/fix-setup
Add all MD and TXT files to binary distribution; include correct file…
2016-09-19 21:52:55 +02:00
Felix Yan 627ed5cbd5 Fix a typo: termianl -> terminal (#750) 2016-09-19 10:28:18 -07:00
Mathias Svensson 3fb64f9fe0 Merge branch 'beta' into dev 2016-09-19 00:31:31 +02:00
Mathias Svensson 254958bae9 Merge branch 'stable' into beta 2016-09-19 00:28:50 +02:00
Mathias Svensson 1cb47220f1 Fixed this binutils-multiarch path 2016-09-19 00:27:56 +02:00
Mathias Svensson d9be4f9ce0 Made the wget timeout longer 2016-09-19 00:18:37 +02:00
Mathias Svensson 2cd5aadf9d Merge branch 'beta' into dev 2016-09-18 22:58:32 +02:00
Mathias Svensson 6ebcc6f3a2 Merge branch 'stable' into beta 2016-09-18 22:31:34 +02:00
Mathias Svensson 21ce572dd6 Make CHANGELOG.md closer follow dev for easier forwardporting in the future 2016-09-18 22:30:23 +02:00
Mathias Svensson 1c47a30446 Bump the version number in README.md 2016-09-18 22:26:44 +02:00
Mathias Svensson 5b8ccb60a6 Merge branch 'beta' into dev 2016-09-18 22:14:53 +02:00
Mathias Svensson 89fc74facf Merge branch 'stable' into beta 2016-09-18 21:35:21 +02:00
Mathias Svensson 5a79a5e609 Release 3.0.3 2016-09-18 21:21:42 +02:00
Mathias Svensson c92f9bed42 I was being stupid when I did #744, since @zachriggle was not done. This is (hopefully) a more proper fix. 2016-09-18 21:09:29 +02:00
Mathias Svensson bfb534378b Removed verbosity from travis files 2016-09-18 19:35:28 +02:00
Mathias Svensson 0ddcf8b129 Add a test that we will *not* update when we have a never local version 2016-09-18 19:35:06 +02:00
Mathias Svensson a66376b8a0 Merge branch 'faster-update-import' of https://github.com/zachriggle/pwntools into merge-738 2016-09-18 15:23:25 +02:00
Mathias Svensson 9cb53d90fe Merge branch 'corefile-pyelftools' of https://github.com/binjitsu/binjitsu into release-3.0.3 2016-09-18 15:00:37 +02:00
Mathias Svensson a31cec5e81 Removed aarch64 install as it is broken and not currently needed and stopped bailing out even if .ssh exists 2016-09-18 14:50:52 +02:00
Zach Riggle 5367a3528d Promote binutils installation 2016-09-18 14:49:59 +02:00
Zach Riggle 669e7295c6 Auto-detect the current URL for QEMU rather than relying on a hard-coded URL 2016-09-18 14:49:03 +02:00
Zach Riggle a7f32d1b0f Bail on any error 2016-09-18 14:48:05 +02:00
Mathias Svensson efc531a2a9 Merge pull request #744 from Idolf/fix-tests
Fix Travis CI (building upon #743)
2016-09-18 14:45:53 +02:00
Mathias Svensson 8b959c9ede Removed aarch64 install as it is broken and not currently needed and stopped bailing out even if .ssh exists 2016-09-18 14:39:43 +02:00
Zach Riggle 68051f9987 Promote binutils installation 2016-09-17 20:50:20 -07:00
Zach Riggle 3636657ca0 Auto-detect the current URL for QEMU rather than relying on a hard-coded URL 2016-09-17 20:40:26 -07:00
Zach Riggle f282ef8bbc Bail on any error 2016-09-17 20:09:17 -07:00
Zach Riggle d5fbb21f72 Switch from pkg_resources to packaging, for performance reasons
Also backports the PyPi documentation changes to stable.

Fixes #736
2016-09-17 18:13:57 -07:00
Zach Riggle 57e9bf58a5 Update changelog 2016-09-17 18:06:30 -07:00
Zach Riggle 0ce21d9b45 Add pandoc requirement for Travis 2016-09-14 19:00:36 -07:00
Zach Riggle 89649fbeb0 Use HTTPS for link 2016-09-14 15:28:14 -07:00
Zach Riggle 5924c0f340 Use new domain for update_demo 2016-09-14 14:57:05 -07:00
Zach Riggle 2f9f10c182 Remove SSH info 2016-09-14 14:27:34 -07:00
Zach Riggle d7c98c4819 Remove reference to --pre until Gallopsled/pwntools#735 has a solution 2016-09-14 14:10:22 -07:00
Zach Riggle cd0ba369b8 Fix bug introduced by internal changes to pyelftools v0.2.4 2016-09-14 12:23:47 -07:00
Zach Riggle bebc84522d Make update mechanism more robust, add tests (#729)
* Make update mechanism more robust, add tests
* Add pwnlib.update to documentation, enable doctests

Fixes Gallopsled/pwntools#723
Fixes Gallopsled/pwntools#724
2016-09-12 21:09:52 -07:00
Zach Riggle e7875c78bc Add pwnlib.flag and submit_flag (#732)
* Add pwnlib.flag and submit_flag
2016-09-12 21:03:16 -07:00
Zach Riggle 0a37694436 Sort imports with isort 2016-09-12 20:35:36 -07:00
Zach Riggle 742a11bfdc Add links to CONTRIBUTING and TESTING in templates 2016-09-10 17:33:22 -07:00
Zach Riggle 1e7262ce31 Add templates for Pull Requests and Issues (#733)
Fixes #651
2016-09-10 17:27:02 -07:00
Zach Riggle d733cf6560 Fix failing doctest because of httpbin slowness (#731) 2016-09-09 17:46:34 -07:00
Zach Riggle 3818dda9d9 Extract copy-pasted callback routine, add better errors and doctests … (#728)
* Extract copy-pasted callback routine, add better errors and doctests for adb.{push,pull}
* Add protocol submodule to documentation and doctests
* Add and fix doctests in adb.protocol
* Use pprint to sort dicts
2016-09-09 15:29:38 -07:00
Zach Riggle 18c4a49aa3 Add pprint to toplevel 2016-09-08 14:34:47 -07:00
Zach Riggle 77f7a362d0 Version bump 2016-09-08 10:56:38 -07:00
Zach Riggle 738fadc016 Add .os to Device and set it automatically (#727)
The use case here is setting context.os via:

>>> context.device = adb.wait_for_device()
2016-09-07 16:34:10 -07:00
Zach Riggle b97f30f36f Add better description to PyPI, more classifiers (#721) 2016-09-07 16:34:00 -07:00
Mathias Svensson de05e7a4b8 Merge branch 'beta' into dev 2016-09-06 11:46:45 -10:00
Mathias Svensson 5fe024838b Release 3.1.0beta1 2016-09-06 11:36:27 -10:00
Mathias Svensson 8b07fe12e6 Release 3.0.2 2016-09-06 11:33:46 -10:00
Mathias Svensson cd828d6bca Merge branch 'beta' into dev 2016-09-06 11:31:21 -10:00
Mathias Svensson b60103b839 Merge branch 'stable' into beta 2016-09-06 11:30:58 -10:00
Mathias Svensson 684e9f6791 Changed util.fiddling.hexdump_iter to take a file object instead of a string. This massively speeds up phd <file> | less for huge files. (#695) (#725) 2016-09-06 11:30:51 -10:00
Mathias Svensson 5acc4c8ec3 Merge branch 'beta' into dev 2016-09-06 10:07:53 -10:00
Mathias Svensson a5c2b9276a Merge branch 'stable' into beta 2016-09-06 10:07:33 -10:00
Mathias Svensson 8d15fceb92 Backported #720. (#722)
The backport only includes the changes in pwnlib/update.py, not the
stuff in pwnlib/commandline/
2016-09-06 10:06:45 -10:00
Zach Riggle 913a3eba9e Pwn update (#720)
* Fix help printing e.g. "shellcraft shellcraft" instead of "pwn shellcraft" when invoking legacy entry points [skip ci]

* Add "pwn update" command; prevent automatic updates from showing pre-release
2016-09-02 16:58:47 -07:00
Zach Riggle 041e62bf0b Update changelog [skip ci] 2016-09-02 15:20:14 -07:00
Zach Riggle e61f571f7c Add adb.protocol module, and use it for most things (#709) 2016-09-02 15:16:26 -07:00
Zach Riggle 36d00b615d Update changelog [skip ci] 2016-09-02 15:10:10 -07:00
Zach Riggle 25d340b5c5 Re-implement sh_string to use embedded literals, add lots of tests (#717)
* Re-implement sh_string to use embedded literals, add lots of tests
* Add docs for sh_string so that unit tests get picked up
* Mark the docstrings as raw
* Rewrite doctests to not "print" since this breaks with invisible characters (issue with doctest itself)
* Add test which uses 16KB of random non-NUL data
2016-09-02 14:56:05 -07:00
Zach Riggle 8f06c1f90f Add docs for Xenial binutils, and attempt to auto-detect Debian packages (#718)
An error message will be printed like this when a package is found:

>>> context.arch='powerpc'
>>> pwnlib.asm.print_binutils_instructions('objdump', context)
[ERROR] Could not find 'objdump' installed for ContextType(arch = 'powerpc', bits = 32, endian = 'big')
    Try installing binutils for this architecture:
    $ sudo apt-get install binutils-powerpc-linux-gnu
2016-09-02 14:21:40 -07:00
Zach Riggle ae6a0745ff Fix function-decorator use-case for context.quiet (#714) 2016-09-01 16:23:32 -07:00
Zach Riggle 1d924af9d2 Update changelog [skip ci] 2016-09-01 15:36:47 -07:00
Zach Riggle fed432877c Merge pull request #711 from binjitsu/brk
Add heap leak from the linker. Fixes Gallopsled/pwntools#435
2016-09-01 15:35:19 -07:00
Zach Riggle 46261091dd Update date formatting 2016-09-01 15:17:59 -07:00
Zach Riggle c356b69a13 Add notices 2016-09-01 15:16:24 -07:00
Zach Riggle 6cff484b8c Update changelog [skip ci] 2016-09-01 15:15:30 -07:00
Zach Riggle 8314dff386 Update changelog [skip ci] 2016-09-01 15:14:24 -07:00
Zach Riggle dc40ac1117 Add heap leak from the linker. Fixes Gallopsled/pwntools#435
(cherry picked from commit 5808882cfe)
2016-09-01 14:57:00 -07:00
Zach Riggle 288b9668b7 Add Android emulator to Travis (#705)
* Add Android emulator to Travis

* More robust handling of ADB device status, and lack of devices

* Add platform-tools to PATH for adb, fastboot, etc.

* Add basic tests for some ADB code

* Add with_device annotation to auto-detect a device

* Skip Android emulator installation if we dont need it

* Do not install emulator in all cases (e.g. OSX)
2016-08-30 17:44:14 -07:00
Zach Riggle 3c0697b81e Refactor command-line tools to use a single "pwn" entry point. (#701)
Adds an install-time option to disable legacy commands, and only use 'pwn':

  $ pip install --install-option='--only-use-pwn-command'

Documentation is updated to show 'pwn' entry point and sub-commands.

Fixes #404
Fixes #660
2016-08-30 17:37:28 -07:00
Zach Riggle 6e4e46386f Do not install emulator in all cases (e.g. OSX) 2016-08-30 17:30:29 -07:00
Zach Riggle 9b179567da Remove un-cacheable Android SDK and NDK directories from Travis cache 2016-08-30 17:28:30 -07:00
Zach Riggle b20e17dd13 Skip Android emulator installation if we dont need it 2016-08-30 17:27:33 -07:00
Zach Riggle 3dcfafc0de Fix unit test quote style and ELLIPSE formatting 2016-08-30 16:32:05 -07:00
Zach Riggle 348bcac0ff Fix unit test failures in ADB module 2016-08-30 14:40:32 -07:00
Zach Riggle a43c3b4967 Add with_device annotation to auto-detect a device 2016-08-29 14:43:04 -07:00
Zach Riggle 40bf991153 Add basic tests for some ADB code 2016-08-29 14:43:04 -07:00
Zach Riggle 8f98c01b77 More robust handling of ADB device status, and lack of devices 2016-08-29 14:43:04 -07:00
Zach Riggle 18a8cfb88d Disable verbose logging 2016-08-29 14:43:04 -07:00
Zach Riggle 2acdeef320 Add missing bracket 2016-08-29 14:43:04 -07:00
Zach Riggle 23c09b4b1b Add platform-tools to PATH for adb, fastboot, etc. 2016-08-29 14:43:04 -07:00
Zach Riggle 84c71d6b07 Squelch travis 4MB log error 2016-08-29 14:43:04 -07:00
Zach Riggle c6aa6bccb8 Add Android emulator to Travis 2016-08-29 14:43:04 -07:00
Zach Riggle 041c665185 Reorganize Travis stuff; add hook to re-generate demo.pwntools.com on pushes to stable (#708) 2016-08-29 14:24:51 -07:00
Zach Riggle 70f9c0305d Add alarm option for process() (#704)
* Add `alarm` option for process()

* Add signal to toplevel import
2016-08-29 14:20:37 -07:00
Zach Riggle 66e41bd862 Refactor command-line tools to use a single "pwn" entry point.
Adds an install-time option to disable legacy commands, and only use 'pwn':

  $ pip install --install-option='--only-use-pwn-command'

Documentation is updated to show 'pwn' entry point and sub-commands.

Fixes #404
Fixes #660
2016-08-28 11:46:09 -07:00
Zach Riggle 5140d03b4d Add MIPS documentation, which should also trigger doctests (#700)
* Add MIPS documentation, which should also trigger doctests
* Fix broken and missing doctests for MIPS pushstr / syscall
* Add optimization for mips.mov to fix doctest
* Exit cleanly so QEMU doesn't complain
2016-08-28 11:40:42 -07:00
Mathias Svensson b016179ccc Merge branch 'beta' into dev 2016-08-24 20:04:59 -07:00
Mathias Svensson efaea581a1 Merge branch 'stable' into beta 2016-08-24 20:04:06 -07:00
Evan Grim 24dfaa0ff7 Fix typos (#702) 2016-08-24 20:03:37 -07:00
Zach Riggle f4a72da40e Update MIPS execve to use pushstr_array 2016-08-24 14:59:50 -07:00
Zach Riggle 6376d07266 Add MIPS pushstr_array
Example resulting state:

$ shellcraft mips.pushstr_array '$t1' '["hello", "world", "boss!"]' -d --after
...
pwndbg> telescope $t1 4
00:0000| t1 sp  0x76ffec7c --> 0x76ffec8c <-- 'hello'
01:0004|        0x76ffec80 --> 0x76ffec92 <-- 'world'
02:0008|        0x76ffec84 --> 0x76ffec98 <-- 'boss!'
03:000c|        0x76ffec88 <-- 0x0
2016-08-24 17:57:24 -04:00
Zach Riggle ea94ee4ca5 Disallow usage of semicolons in run_in_new_terminal.
Fixes Gallopsled/pwntools#690
Fixes Gallopsled/pwntools#635
2016-08-24 14:36:43 -07:00
Zach Riggle 452605e854 Fix pwnlib.gdb temporary file removal.
In two instances, the file was not removed because of an incorrect lambda.

In two further instances, use of shell concatenation via run_in_new_terminal
were changed into GDB 'shell' commands.

This fixes Gallopsled/pwntools#629
2016-08-24 14:36:43 -07:00
Mathias Svensson dea8f00c01 Merge pull request #698 from Idolf/dev
Merged beta into dev and fixed the version number and changelog
2016-08-24 14:35:11 -07:00
Mathias Svensson b9d6b27b4e Merge branch 'beta' into dev 2016-08-24 14:24:21 -07:00
Mathias Svensson 300ef0b462 Merge branch 'Idolf-beta-changelog' into beta 2016-08-24 14:20:02 -07:00
Mathias Svensson 6e79272e8d Updated the changelog 2016-08-24 14:17:46 -07:00
Morten Brøns-Pedersen d65991d402 Changed util.fiddling.hexdump_iter to take a file object instead of a string. This massively speeds up phd <file> | less for huge files. (#695) 2016-08-24 14:15:29 -07:00
Zach Riggle de94449a87 Remove unreleased version from Changelog 2016-08-22 17:34:44 -07:00
Zach Riggle faeb57b35c Use manual 3.0.1 shield until we figure out how to make this automagic 2016-08-22 16:42:45 -07:00
Mathias Svensson e1332d277c Merge branch 'beta' into dev (#678) 2016-08-22 15:26:40 -07:00
Mathias Svensson e4c2a48696 Merge pull request #679 from Gallopsled/stable
Even more documentation (#678)
2016-08-22 15:22:39 -07:00
Mathias Svensson 6415367f15 Even more documentation (#678) 2016-08-22 15:16:02 -07:00
Mathias Svensson fcf2842d87 I am an idiot 2016-08-22 14:58:42 -07:00
Mathias Svensson 422dccd8da Merge branch 'beta' into dev 2016-08-22 14:54:33 -07:00
Mathias Svensson abd08a94ea Fixed the logo path to be closer to stable 2016-08-22 14:48:26 -07:00
Mathias Svensson e877f7455a Merge branch 'stable' into beta 2016-08-22 14:37:33 -07:00
Mathias Svensson 70c224f429 Merged in some documentation fixes.
Since this commit only changes documentation and not code, it does not
trigger a new release.
2016-08-22 14:33:47 -07:00
Mathias Svensson 5f7c525023 Fix some more documentation 2016-08-22 14:30:11 -07:00
Mathias Svensson 16de5ec22c Fix a lot of documentation (#675) 2016-08-22 13:11:50 -07:00
Mathias Svensson e635bcfea7 Merging #674 into dev 2016-08-20 18:40:54 -07:00
Mathias Svensson 12b60447da Merging #674 into beta 2016-08-20 18:39:00 -07:00
Mathias Svensson 5c804d49d0 Release 3.0.1 after merging #673 2016-08-20 18:26:35 -07:00
Mathias Svensson cde19135eb Fixed some documentation 2016-08-20 18:19:07 -07:00
Mathias Svensson 77da84c5a8 Prepare the dev branch 2016-08-20 17:51:55 -07:00
Mathias Svensson 2663762a9a Prepare the beta branch 2016-08-20 17:48:37 -07:00
Mathias Svensson 7aa9605629 3.0.0 release 2016-08-20 17:24:46 -07:00
Morten Brøns-Pedersen 757d7fe2c6 Merge pull request #667 from Idolf/issue-455
sh_string was broken in some cases, adds functionality to fix it. Fixes #455
2016-08-20 10:52:28 +02:00
Morten Brøns-Pedersen 9e724203b9 Merge pull request #650 from binjitsu/issue-591
Remove old inode-walking code in gdb module
2016-08-20 10:38:58 +02:00
Mathias Svensson 72207cf914 Fixed #455 2016-08-19 20:08:47 -07:00
Zach Riggle 824852bf33 Fix README links so they are valid, and work on pwntools.com (#653) 2016-08-18 13:14:42 -07:00
Zach Riggle b382849671 Add auto-update detection for new releases (#659) 2016-08-18 12:48:43 -07:00
Zach Riggle 0e814c91cc Merge pull request #669 from Idolf/issue-661
Adds some forgotten imports, fixes #661
2016-08-18 12:09:13 -07:00
Mathias Svensson d55a47a8fc Fixed a link in README.md (#670) 2016-08-18 11:58:17 -07:00
Zach Riggle 3b65f8775a Add coveralls.io build steps to .travis.yml (#655)
* Add coveralls.io build steps to .travis.yml

Fixes Gallopsled/pwntools#205

* Fix unit tests which fail under Coveralls

* Remove non-coverage "make doctest"

* Only report coverage for our code

* Add .coveragerc, ignore .coverage, shorten Travis script line

* Add Coveralls shield

* Fix spacing with badges and logo

* Add undocumented command-line tools to increase coverage
2016-08-18 11:22:41 -07:00
Zach Riggle fce5081c30 Make constgrep errors more verbose (#654) 2016-08-18 11:19:41 -07:00
Zach Riggle 39afc7998a Missed case where p_type needs to be converted to a string (#647) 2016-08-18 11:18:30 -07:00
Zach Riggle 1bfc56daa0 Actually enable the Thumb encoder (#646)
* Actually enable the Thumb encoder

* Fix thumb nop encoding NUL bytes
2016-08-18 11:14:47 -07:00
Zach Riggle 2d08e7cd99 Fix encoders.null typo (#645) 2016-08-18 11:14:10 -07:00
Mathias Svensson f7696f0388 Fixes #661 2016-08-18 11:07:47 -07:00
avarx 2947fb16dd Fix typo (#666) 2016-08-18 09:30:43 -07:00
Zach Riggle 9e57328d1b Add warning described in Gallopsled/pwntools#518 (#652) 2016-08-17 19:57:24 -07:00
Kristoffer Søholm 2198df5ea5 Merge pull request #664 from Gallopsled/fix-link
Fix install.html link.
2016-08-17 14:43:30 -07:00
Zach Riggle 40cc12ba95 Fix install.html link.
Fixes Gallopsled/pwntools#641
2016-08-17 13:31:27 -07:00
Zach Riggle 13f1815b7d Merge branch 'master' into issue-591 2016-08-17 12:04:43 -07:00
Zach Riggle 16846a80c6 Merge pull request #663 from Gallopsled/fix-link
Fix URL.  Fixes #662
2016-08-17 11:09:40 -07:00
Zach Riggle b29467dab6 Fix URL. Fixes Gallopsled/pwntools#662 2016-08-17 10:53:08 -07:00
Zach Riggle 969a9fe754 Remove old inode-walking code in gdb module
Fixes Gallopsled/pwntools#591
2016-07-26 15:03:04 +01:00
Mathias Svensson 23b0a019da Fixed a keyfile bug 2016-07-23 12:03:07 +02:00
Zach Riggle 99f9c80f15 Merge pull request #643 from PtxDK/patch-1
Update README.md
2016-07-18 17:53:46 +01:00
Kristoffer Søholm 3d5f859dd0 Merge pull request #638 from Idolf/remove-stale-files
Various stuff not merged correctly in #636.
2016-07-03 23:19:02 +02:00
Kristoffer Søholm 5c5e797cbf Merge pull request #637 from Idolf/remove-self-import
Builder imported itself
2016-07-03 23:04:43 +02:00
Patrick Krøll Brandt b2698f5513 Update README.md 2016-07-03 21:51:12 +02:00
Mathias Svensson 2baebf9e51 Use the pwntools twitter handle 2016-07-03 21:29:47 +02:00
Mathias Svensson 640051d41c Updated README.md based on the binjitsu-arm-syscall branch 2016-07-03 21:11:03 +02:00
Mathias Svensson 2f8de42cd8 Fixed IRC reference 2016-07-03 20:54:06 +02:00
Mathias Svensson ac8e053ca0 Removed binjitsu files not identified as stale in #636. 2016-07-02 23:09:57 +02:00
Mathias Svensson 741dffb47d Builder imported itself 2016-07-02 22:36:53 +02:00
Mathias Svensson ee77289111 Merge pull request #636 from binjitsu/pwntools-merge
Pwntools merge with Binjitsu
2016-07-02 21:10:42 +02:00
Zach Riggle 01cda51e3e Add date 2016-06-30 14:52:24 +02:00
Zach Riggle 2d72ccc30c Add commit count to changelog 2016-06-30 14:51:59 +02:00
Zach Riggle eee6ce3521 Add test for QEMU installation 2016-06-30 14:39:00 +02:00
Zach Riggle 7f933d3ffc Update QEMU static version 2016-06-30 14:38:16 +02:00
Zach Riggle 8680f2eeb6 Update Changelog for 3.0.0 release 2016-06-30 14:17:35 +02:00
Zach Riggle 06b81a3279 Remove Binjitsu fork info 2016-06-30 13:36:11 +02:00
Zach Riggle 33cdabf0ab Replace project name references 2016-06-30 02:28:42 +02:00
Zach Riggle c32ae58811 Replace domain names 2016-06-30 02:26:46 +02:00
Zach Riggle d4e42f86d0 Replace binjitsu/binjitsu with Gallopsled/pwntools 2016-06-30 02:26:22 +02:00
Zach Riggle bd6ef3f45e Merge remote-tracking branch 'gallopsled/master' into pwntools-merge 2016-06-30 02:24:01 +02:00
Zach Riggle a613d75abb Move logger functions to toplevel (add success) 2016-06-28 12:57:13 +02:00
Zach Riggle 2d8c8593de Modify ADB commands to specify host and port if they are provided via environment 2016-06-28 12:56:47 +02:00
Zach Riggle 054e3d50d5 Move logger functions to toplevel 2016-06-28 12:56:23 +02:00
Kristoffer Søholm bc93beb576 Merge pull request #625 from cebrusfs/patch-1
Fix wrong format string parameters in memleak.py
2016-06-23 01:32:17 +02:00
Kristoffer Søholm 2490ea207c Merge pull request #630 from justinsteven/bugfix/typo_attaching_you
Fix typo
2016-06-23 01:31:12 +02:00
Zach Riggle b06b544323 Clean up ADB partition code, enable enumeration and tab-completion 2016-06-21 06:29:17 +02:00
Zach Riggle 18d9646498 Do not return "." in listdir() 2016-06-21 06:22:01 +02:00
Justin Steven fc5b7b9425 Fix typo 2016-06-17 00:34:42 +10:00
Zach Riggle e8d8f4c4cc Do not record one-time warnings if they are not actually emitted 2016-06-14 16:04:02 -07:00
Zach Riggle e18eef7fae Add --file option to checksec for checksec.sh compatibility 2016-06-09 19:12:08 -06:00
Zach Riggle 396efcf71a Extend process() display changes to "stopped" message 2016-06-07 15:54:44 -06:00
Zach Riggle ee485a68d5 Strip adb shell from the display 2016-06-07 15:52:28 -06:00
Zach Riggle c0bc668450 Add a few twiddly bits for better process logs 2016-06-07 15:51:10 -06:00
Zach Riggle 7c8806950b Wrap all property accessors with str() 2016-06-07 12:42:12 -06:00
Zach Riggle ba5815bba5 Convert absolute paths to relative paths 2016-06-07 11:36:08 -06:00
Zach Riggle 25016264e7 Fix listdir implementation for some phones lacking a -1 option for LS 2016-06-07 11:31:38 -06:00
Zach Riggle 4d83a0d017 Silence GDB license on attach 2016-05-29 19:08:37 -04:00
Zach Riggle 67fd986360 Support unauthorized devices; old devices dont support -t 2016-05-29 19:00:43 -04:00
Zach Riggle fc1a7e2d11 Add warning message to cyclic_find; fix two-space indentation 2016-05-29 13:19:58 -05:00
Zach Riggle 112a246881 Minor fix for OS X serialtube naming for certain adapters 2016-05-28 20:07:19 -05:00
Zach Riggle c0c91841a7 Fix install info 2016-05-25 14:00:21 -05:00
Zach Riggle 70df2fa5f3 Fix double-warning for GDB without ASLR 2016-05-24 17:51:45 -07:00
Zach Riggle aedbafd9d6 Add ASLR-disabled warning to GDB 2016-05-24 17:50:16 -07:00
Zach Riggle 51f62206f6 Add ASLR-disabled warning to SSH 2016-05-24 17:49:30 -07:00
Zach Riggle a9ac751b89 Add ASLR disabled warning message 2016-05-24 17:47:57 -07:00
Zach Riggle ab31b3091c Add context.verbose 2016-05-24 17:47:43 -07:00
Zach Riggle 322942f2d3 Fix elfpatch so it doesnt spew logging info 2016-05-21 22:15:25 -07:00
Zach Riggle 9967347d70 Rename Property.name to support ro.product.name 2016-05-17 22:36:22 -07:00
Zach Riggle 01ec1328f9 Refactor adb.partitions to provide an iterator 2016-05-17 21:48:15 -07:00
Zach Riggle 020469788a Add adb.address, fix adb.symbols, add adb.partitions 2016-05-17 21:41:43 -07:00
Zach Riggle 348456e290 Merge pull request #78 from Manouchehri/patch-2
libffi-dev is required.
2016-05-17 18:12:07 -07:00
David Manouchehri 01e5057b05 libffi-dev is required. 2016-05-18 01:04:43 +00:00
Zach Riggle c97da1524c Merge pull request #77 from Manouchehri/patch-1
Use Trusty for Dockerfile?
2016-05-17 17:50:00 -07:00
Zach Riggle ec506414ee Catch reconnect exception, fix listdir() 2016-05-17 20:22:11 -04:00
Zach Riggle 10eb718058 Allow pwnlib.adb.Property objects to be compared to strings 2016-05-17 19:56:02 -04:00
Zach Riggle c575c66895 Stringify device in argv 2016-05-17 19:46:54 -04:00
Zach Riggle a30ab0ca80 Add pwnlib.device.Device class 2016-05-17 19:46:02 -04:00
Zach Riggle a598103ca9 Add auto-transform support for Android ABIs 2016-05-17 19:30:05 -04:00
Zach Riggle d2a377cfbc Add "kick" option to adb.wait_for_device 2016-05-17 19:18:09 -04:00
Zach Riggle 3ab9063d43 Force TTY allocation for ADB shell 2016-05-17 19:18:09 -04:00
David Manouchehri 8958123e3e Use Trusty. 2016-05-17 22:31:06 +00:00
Zach Riggle c57aa1a507 Fix failing tests 2016-05-17 14:47:35 -07:00
Zach Riggle ffe2e7cf1f Pwndbg and its depenencies should not be in the Binjitsu dockerfile 2016-05-16 22:41:50 -07:00
Zach Riggle fdbd19fdd2 Add decorators for common MemLeak scenarios, make the class more robust / transparent. 2016-05-16 22:41:50 -07:00
Zach Riggle 30bfc92037 Add vsyscall to Corefile 2016-05-11 21:02:41 -07:00
Zach Riggle d84a1073d7 Add unit test for generating shared libraries 2016-05-11 20:46:01 -07:00
Zach Riggle 8d934d65e1 Make vdso detection better; add Mapping.data so you can do core.vdso.data 2016-05-11 20:44:36 -07:00
MengHuan Yu 89d1c67696 Fix wrong format string parameters in memleak.py
Fix wrong format string parameters of a debug message in `memleak.py`.
2016-05-11 16:56:53 +08:00
Zach Riggle a77aa1be73 Add adb.unlock_bootloader 2016-05-10 16:34:36 -07:00
Zach Riggle 176b0af30b Add support for older devices with last_kmsg 2016-05-10 11:43:44 -07:00
Zach Riggle 03e9546127 Remove double-serial-number 2016-05-09 22:48:57 -07:00
Zach Riggle 05672c3e14 Add adb.compile to build single source files or NDK projects 2016-05-09 22:26:00 -07:00
Zach Riggle 7a5760cd39 More robust "adb.push" 2016-05-09 16:58:20 -07:00
Zach Riggle 78584929d7 adb pull shows weird content for newer versions, rely on exit code 2016-05-09 16:53:10 -07:00
Zach Riggle 56ad2276f4 Add kallsyms 2016-05-09 13:51:56 -07:00
Zach Riggle d76b6c5560 Use specific commands for each device 2016-05-06 21:08:34 -07:00
Zach Riggle e59a44d8b3 Auto-detect default serial port on OSX 2016-05-06 21:08:25 -07:00
Zach Riggle 2f11018a1e Add adb.kernel.lastmsg 2016-05-06 18:54:32 -07:00
Zach Riggle 21fc7759e0 Actually use serialtube arguments 2016-05-06 18:53:46 -07:00
Zach Riggle d2933acba2 Make uart_enable() work for Shamu 2016-05-06 14:17:02 -07:00
Zach Riggle efa9c26842 Bulk removal of get_serialno() 2016-05-06 11:22:19 -07:00
Zach Riggle b61941835a Add documentation for ADB module 2016-05-05 14:53:59 -07:00
Zach Riggle c75bf4ad75 Clean up code, silence adb.kernel.cmdline 2016-05-05 14:31:59 -07:00
Zach Riggle 8138315fa6 Minor fixups 2016-05-05 14:27:12 -07:00
Zach Riggle f1e7715e6f Finish implementation of adb.kernel.symbols 2016-05-05 14:25:49 -07:00
Zach Riggle 544342b9fe Use log.debug instead of print 2016-05-05 14:21:48 -07:00
Zach Riggle 430bee44b7 Use fancy new context decorator 2016-05-05 14:20:43 -07:00
Zach Riggle 31c1070ac8 I have an instance of a class “Context” called “context” with a property that returns an object which is actually a Context Manager which can be used as a function decorator to modify the state of the object “context” while in the context of the decorated function. 2016-05-05 14:19:52 -07:00
Zach Riggle 59102739f5 Move enable_uart() into the Kernel object 2016-05-05 14:19:52 -07:00
Zach Riggle a02d3277ce Lots of changes for adb module to support direct access to properties, kernel data, and the ability to enable UART debugging 2016-05-05 14:19:52 -07:00
Zach Riggle 2f75eb6c3a Add context.device so that we can scope serial numbers 2016-05-05 14:19:52 -07:00
Zach Riggle 22c97ee762 Fix package URL for qemu-user-static on Travis 2016-05-04 13:03:39 -07:00
Zach Riggle 500a2720a5 Fix regression with vma=None 2016-05-04 01:08:02 -07:00
Zach Riggle 2fc9a83a50 Fix serial tubes 2016-05-04 00:11:27 -07:00
Zach Riggle b572a9da4a Simplify context.adb for the basic case 2016-05-04 00:11:27 -07:00
Zach Riggle 3db45f46e4 Add "shared" option for ELF-building functions to generate DSOs. 2016-05-03 13:24:24 -07:00
Zach Riggle 41383b3330 ArgumentParser object must be at global scope for documentation generation to work 2016-04-25 15:30:42 -05:00
Zach Riggle 1a3d81f8f1 Do not manually close the log file.
It should get cleaned up by gc anyway.
2016-04-25 15:24:24 -05:00
Zach Riggle 4e04c8bfb3 Add repr() for timeout maximum 2016-04-25 15:12:37 -05:00
Zach Riggle 94abecce80 A bit more documentation for context.proxy 2016-04-25 14:56:02 -05:00
Zach Riggle 7f733aa63b Modify elfdiff to copy the files to a single location so that the first two lines of objdump dont get compared. 2016-04-25 14:39:19 -05:00
Zach Riggle b26a2f21fc Default argument for fit() 2016-04-25 14:04:59 -05:00
Zach Riggle d91b05b43a Switch from error to a single warning. 2016-04-25 14:04:53 -05:00
Zach Riggle 9aff300cee Fix wget() keyword 2016-04-22 14:52:30 -07:00
Zach Riggle 806d506510 Enhancements to Corefile to expose vdso/vvar/exe 2016-04-22 12:56:46 -07:00
Zach Riggle f0010e4413 Switch _lookup_build_id to use compare; remove breakpoint 2016-04-22 11:25:42 -07:00
Zach Riggle 58c61897ba Take failure case with error message 2016-04-22 10:52:32 -07:00
Zach Riggle dc083ae7b9 Fix regression on searching for DT_NULL 2016-04-22 10:51:16 -07:00
Zach Riggle 7029b38cce Refactor and optimize the fast-path DynELF search 2016-04-22 10:36:41 -07:00
Zach Riggle cf19d35d14 Add helpful warning for DynELF without elf= 2016-04-22 10:08:50 -07:00
Zach Riggle c498ddcb6d Switch to exceptions 2016-04-22 10:04:36 -07:00
Zach Riggle 7253234fba Add handling for negative values, extend use of compare 2016-04-22 10:03:35 -07:00
Zach Riggle 7925b44582 Speed up DynELF leaking with field_compare
Also modify log.progress / log.waitfor update frequency.
2016-04-22 10:01:07 -07:00
Zach Riggle 494a078be9 Fix ADB port getenv() as integer 2016-04-21 14:37:48 -07:00
Zach Riggle 8ef546bc34 Only print the banner once per log file per execution 2016-04-21 14:23:06 -07:00
Zach Riggle 64416909bb Sort imports 2016-04-21 14:39:08 -05:00
Zach Riggle 1c6689eca4 Lower log verbosity and fix whitespace 2016-04-21 14:36:16 -05:00
Zach Riggle 4dfc571702 Add fast-path for fit() 2016-04-21 03:51:58 -07:00
Zach Riggle cb40e4b883 Update fit() doctests 2016-04-21 03:45:33 -07:00
Zach Riggle 12564a7e0d It appears that fit() has always been completely broken from my understanding of it. 2016-04-21 03:44:22 -07:00
Zach Riggle d51ad7f989 Various enhancements to DynELF and MemLeak for speed 2016-04-21 02:12:56 -07:00
Zach Riggle bbc91d6211 Add DynELF.stack and a few other improvements 2016-04-21 00:14:40 -07:00
Zach Riggle 21c10be67e Add MemLeak.p for pointer-width sizes 2016-04-21 00:14:40 -07:00
Zach Riggle ca43832880 Pass kwargs to gdb.debug 2016-04-21 00:14:40 -07:00
Zach Riggle c9dabb8606 Must re-root after restarting 2016-04-21 00:14:40 -07:00
Zach Riggle eb8f905449 Fix searching for gadget subsets, and add SYS_rt_sigreturn fallback
Fixes binjitsu/binjitsu#73
2016-04-20 17:11:44 -07:00
Peter Shih 1b9a4ca123 fix inconsistent logging level in tube.
(cherry picked from commit fe4086e710)
2016-04-20 18:24:59 -05:00
Zach Riggle 02e0c3804c Update QEMU url so testing works 2016-04-19 17:39:23 -05:00
Zach Riggle 50624322c4 Remove MIPS documentation, since Travis is on 12.04 and you cant build AArch64 binutils for it. 2016-04-19 17:07:54 -05:00
Zach Riggle 63d564810b Remove AArch64 documentation, since Travis is on 12.04 and you cant build AArch64 binutils for it. 2016-04-19 16:11:42 -05:00
Zach Riggle 03d8efaba2 Fix ELF.process() for non-Android 2016-04-19 14:01:14 -07:00
Zach Riggle c47538da1f Add dateutil to requirements 2016-04-19 13:52:51 -07:00
Zach Riggle 3192839ff8 Restore context clear, but move it inside the local scope.
The clear is necessary because vars(context) will only retrieve the set keys.  Any other context bits set later will not be correctly set to default values.
2016-04-19 14:59:43 -05:00
Zach Riggle abc646511a Simplify a few lines with getattr 2016-04-19 14:51:47 -05:00
Zach Riggle d3ab88364c Remove context clear which breaks things in interactive mode when there is no exception handler. 2016-04-19 14:49:23 -05:00
Zach Riggle 3d61ba339a Add docs for mips shellcode 2016-04-17 18:42:14 -07:00
Zach Riggle 84a1a540b0 Add docs for aarch64 shellcode 2016-04-17 18:41:34 -07:00
Zach Riggle efa8c77d3c adb: Multiple enhancements. Add push and pull. 2016-04-17 18:41:11 -07:00
Zach Riggle 734d3a17e6 gdb: Silence unlink errors, push binaries to Android devices. 2016-04-17 18:40:46 -07:00
Zach Riggle 378a32b390 Fix exception on extract=True for make_elf_from_assembly 2016-04-17 18:40:22 -07:00
Zach Riggle 6bf0989e2f ELF supports ADB 2016-04-17 18:39:45 -07:00
Zach Riggle 158f6d7758 run_in_new_terminal supports argv in addition to strings 2016-04-17 18:39:35 -07:00
Zach Riggle 38047c15c6 Android constants are the same as Linux constants 2016-04-17 17:21:57 -07:00
Zach Riggle 56fbd583e6 Change log levels of ADB commands, better Android support in GDB 2016-04-15 14:40:12 -07:00
Zach Riggle 2d8e5f0050 Fix pid_by_name so that the results are actually sorted, and do not return any zombie processes. 2016-04-15 11:44:37 -07:00
Zach Riggle 1b865681fc Add Android examples, cut down verbosity of adb calls. 2016-04-14 12:19:32 -07:00
Zach Riggle bcc57b3138 Add adb module, lots of refactoring GDB module to be more clean and support Android gdb.attach(). 2016-04-14 11:56:04 -07:00
Zach Riggle 87a612282d Add aarch64 sh for Android 2016-04-14 11:52:05 -07:00
Zach Riggle 215ddafc65 Add aarch64 sh 2016-04-14 11:51:38 -07:00
Zach Riggle 474d96eb52 Use shorthand 2016-04-13 15:40:01 -05:00
Zach Riggle b868c12d63 Update PLT parsing for Thumb mode entries 2016-04-13 15:38:23 -05:00
Zach Riggle d9f120e617 Add host / port support to Binjitsu 2016-04-13 15:22:21 -05:00
Zach Riggle 2c788f4f55 Fix ptrace vararg 2016-04-13 15:22:12 -05:00
Zach Riggle 2d3eb7204d Fixes for Android AArch64 debugging 2016-04-13 12:51:50 -05:00
Zach Riggle 4e2d5f096a Fix typo 2016-04-12 18:37:39 -05:00
Zach Riggle b60218a4d7 First pass support for debugging Android binaries natively. 2016-04-12 16:44:41 -05:00
Zach Riggle 51dd430ad0 Always have context.native return False for Android and CGC 2016-04-12 16:44:27 -05:00
Zach Riggle 60e5a80790 Make run_in_new_terminal work on OSX under tmux 2016-04-12 16:44:03 -05:00
Zach Riggle d4f10b0d6e Don't look for QEMU if running natively. 2016-04-12 16:43:47 -05:00
Zach Riggle 95d4b8e09d Add missing log object 2016-04-12 16:43:32 -05:00
Morten Brøns-Pedersen 29bf5fc5fc Merge pull request #615 from peter50216/patch-3
fix inconsistent logging level in tube.
2016-04-12 12:08:02 +02:00
Peter Shih fe4086e710 fix inconsistent logging level in tube. 2016-04-12 10:18:06 +08:00
Zach Riggle 0af33f3a6f Simplify process.core since I just learned about the gcore command line tool. 2016-04-04 20:11:54 -07:00
Zach Riggle 68207adbe4 Write the GDB script to the terminal when debugging is enabled 2016-04-04 16:20:52 -07:00
Morten Brøns-Pedersen 8a57fe4143 Merge pull request #612 from Gallopsled/martian-dash-docset
Added support for generating a Dash docset.
2016-03-31 10:15:05 +02:00
Kristoffer Søholm 2da5414609 Merge pull request #601 from Gallopsled/bugfix-memleak
Bugfix: `pwnlib.memleak.MemLeak`
2016-03-31 09:15:06 +02:00
Morten Brøns-Pedersen 9ff2d5b9bd removed tabs and trailing whitespace and tidied up a little 2016-03-31 08:30:41 +02:00
Morten Brøns-Pedersen 5d9b68d1c8 Merge branch 'dash-docset' of https://github.com/martian/pwntools into martian-dash-docset 2016-03-31 08:23:12 +02:00
Morten Brøns-Pedersen bc77ad6c47 Merge pull request #604 from peter50216/patch-1
Remove unused statement in context.arch
2016-03-31 08:09:25 +02:00
Morten Brøns-Pedersen cfb38c4ef4 Merge pull request #606 from peter50216/patch-2
Fix inconsistency between error message and code.
2016-03-31 08:08:38 +02:00
Morten Brøns-Pedersen b2e5ff427b Merge pull request #608 from peter50216/master
Fix pack when sign=True and word_size='all'
2016-03-31 08:08:09 +02:00
Morten Brøns-Pedersen dec4a74efc Merge pull request #610 from binjitsu/issue_609
Fix Gallopsled/pwntools#609
2016-03-31 08:06:13 +02:00
Pi-Hsun Shih 999ad63200 Fix pack when sign=True and word_size='all'
(cherry picked from commit 17caf96582)
2016-03-28 12:10:59 -04:00
Zach Riggle b45ef8dfbd Dont always try to prefix binutils with 'g'.
Fixes Gallopsled/pwntools#607
2016-03-28 12:00:51 -04:00
Zach Riggle f64d0b0749 Fix Gallopsled/pwntools#609
(cherry picked from commit 320e0dd80b)
2016-03-28 11:57:16 -04:00
Zach Riggle 320e0dd80b Fix Gallopsled/pwntools#609 2016-03-28 11:56:58 -04:00
Pi-Hsun Shih 17caf96582 Fix pack when sign=True and word_size='all' 2016-03-28 03:35:29 +00:00
Zach Riggle c1e3d26d29 Add Unicorn, dependencies, tabs->spaces 2016-03-25 18:21:31 -04:00
Zach Riggle 73ddedebb4 Fix doctests for SFTP 2016-03-25 14:24:23 -07:00
martian 7f236f5064 Added support for generating a Dash docset.
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

(cherry picked from commit dc37b0b5b2)
2016-03-25 15:57:20 -04:00
Zach Riggle 80ebf7109a Fix binjitsu/binjitsu#69 2016-03-25 13:29:12 -04:00
Morten Brøns-Pedersen 36ccc2bc81 bugfix: ui.yesno() now correctly handles <enter>
This bug happened because we no longer disable input processing in the terminal.
In particular `\r` is now translated to `\n`.  The fix is to interpret both `\r`
and `\n` as <enter> in `term/key.py`.

(cherry picked from commit 383f245082)
2016-03-25 13:21:04 -04:00
Morten Brøns-Pedersen 72416c4705 bugfix: don't call shutdown(2) when calling tubes.sock.close()
This can be a problem since sockets inherited by children will see the
`shutdown(2)` call as well.

(cherry picked from commit 77bfc16341)
2016-03-25 13:20:19 -04:00
Sam Brown 8f2878d0ab corrected util.twiddling.bits implementation to handle 0 validly
(cherry picked from commit 6449e14e9e)
2016-03-25 13:14:39 -04:00
Morten Brøns-Pedersen 10487c23ac added fiddling.bits(0) as a doctest
(cherry picked from commit 10c3f079c5)
2016-03-25 13:13:49 -04:00
Mathias Svensson a18c23cf2d Fix annoying setup.py behaviour.
When installing pwntools, setup.py required a very new version of
requests -- even though we never used any new features.

This is a problem, since the required version is much never than what is
in e.g. ubuntu's package repo. While this by itself is not much of a
problem, it is a problem if one installs python-pip from the distro's
repo as well, since python-pip will try to use the newest version of the
requests library, which caused pip to break.

The solution: Do not force such a new version of python, instead live
with a much older version.

(cherry picked from commit f91299986e)
2016-03-25 13:10:31 -04:00
Sam Brown 714f27fee9 added mailing list link to README.md
(cherry picked from commit 126e2857ad)
2016-03-25 13:08:35 -04:00
peter50216 9942ae157f Don't depend on python dict.item() order.
(cherry picked from commit 3564b9e014)
2016-03-25 13:07:12 -04:00
peter50216 36ead5ac57 Fix inconsistency between error message and code.
Code says context.bits should be > 0, but error message says >= 0.
Since 0 bit architecture doesn't make sense at all, make them all be > 0.
(cherry picked from commit def9400d48)
2016-03-25 13:03:20 -04:00
peter50216 def9400d48 Fix inconsistency between error message and code.
Code says context.bits should be > 0, but error message says >= 0.
Since 0 bit architecture doesn't make sense at all, make them all be > 0.
2016-03-25 15:52:10 +08:00
Morten Brøns-Pedersen 18049ddddb example of gdb.attach
(cherry picked from commit 883ddb30b5)
2016-03-23 13:29:02 -04:00
peter50216 6f74c7f13e Don't depend on python dict.item() order.
(cherry picked from commit 3564b9e014)
2016-03-23 13:27:58 -04:00
Kristoffer Søholm e6380f75a9 Merge pull request #605 from peter50216/patch-2
Don't depend on python dict.item() order.
2016-03-23 09:55:04 +01:00
peter50216 3564b9e014 Don't depend on python dict.item() order. 2016-03-23 16:36:13 +08:00
peter50216 e16ac422b5 Remove unused statement in context.arch 2016-03-23 16:25:13 +08:00
Zach Riggle 17b48f7186 Catch corner case in process.leak 2016-03-22 10:27:38 -07:00
Zach Riggle a518a60388 Open in binary mode 2016-03-21 18:05:07 -07:00
Zach Riggle 78e394bd6d Add documentation to process.leak and another option 2016-03-21 18:04:51 -07:00
Zach Riggle 282b853c2a Add process.leak() function for testing leaks 2016-03-21 18:01:06 -07:00
Zach Riggle aa64f71075 Add aliases for connect_remote and listen_remote 2016-03-17 16:42:08 -04:00
Zach Riggle 354213c475 Learn full path to the executable for ssh.process 2016-03-17 16:14:19 -04:00
Zach Riggle d22f6c457f Remove argparse requirement. Fixes Gallopsled/pwntools#598. 2016-03-16 12:58:42 -04:00
Zach Riggle 03baaa3807 Update Docs badge 2016-03-16 12:55:29 -04:00
Zach Riggle a5df5ee6a0 More trying to fix ReadTheDocs build 2016-03-16 07:00:43 -07:00
Zach Riggle c5b3d343ad Fix build for readthedocs.org which dies on terminal stuff. 2016-03-16 06:59:36 -07:00
Zach Riggle 1413caf401 Merge pull request #71 from kbeckmann/master
Import pwnlib.util.safeeval in constgrep
2016-03-16 09:45:37 -04:00
Zach Riggle 09a637eabe Fix more docs links 2016-03-16 06:45:16 -07:00
Zach Riggle bb95c6fbbd Fix docs link 2016-03-16 06:44:26 -07:00
Zach Riggle b0cb09ae67 Complete fix in 0ce1ebb for Gallopsled/pwntools#601 2016-03-16 06:42:39 -07:00
Zach Riggle 669c963290 Fix typo in Dockerfile 2016-03-16 06:15:59 -07:00
Konrad Beckmann 0e0cb7c0e3 Import pwnlib.util.safeeval in constgrep 2016-03-16 10:59:58 +01:00
Zach Riggle bc20216579 Add ASAN/MSAN/UBSAN to checksec 2016-03-15 16:11:21 -07:00
Morten Brøns-Pedersen fcd62d4cf1 Merge pull request #597 from binjitsu/issue_596
Extract list of data elements from Buffer when unget()'ing a Buffer
2016-03-15 14:49:21 +01:00
Zach Riggle 0ce1ebbd81 Fixes Gallopsled/pwntools#601 2016-03-14 18:36:33 -04:00
Morten Brøns-Pedersen 894ffbc1b7 fixed doctests 2016-03-14 13:50:57 +01:00
Morten Brøns-Pedersen b00a328d8a added __getitem__ for pwnlib.memleak.MemLeak 2016-03-14 13:44:11 +01:00
Morten Brøns-Pedersen ceadb59c93 bugfix: pwnlib.memleak.MemLeak would return wrong addresses when searching backwards if a leak failed; several new doctests has been added as well 2016-03-14 13:43:47 +01:00
Morten Brøns-Pedersen 22038eaf2d Merge pull request #600 from Gallopsled/example-attach
example of `gdb.attach`
2016-03-14 11:35:52 +01:00
Morten Brøns-Pedersen 044a2a630d Merge pull request #546 from Gallopsled/packing-dd
added `pwnlib.util.packing.dd` inspired by the command line util of t…
2016-03-14 11:25:32 +01:00
Morten Brøns-Pedersen f4ae5da477 some slight improvements to pwnlib.util.packing.dd 2016-03-14 11:12:41 +01:00
Morten Brøns-Pedersen 883ddb30b5 example of gdb.attach 2016-03-14 10:41:09 +01:00
Zach Riggle d3074011d6 Update Dockerfile 2016-03-10 15:59:55 -05:00
Zach Riggle 03b8eb8694 Update Dockerfile 2016-03-10 15:58:25 -05:00
martian dc37b0b5b2 Added support for generating a Dash docset.
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
2016-03-08 18:15:54 -08:00
Zach Riggle 3b383ece1c Extract list of data elements from Buffer when unget()'ing a Buffer. Fixes #596
(cherry picked from commit fde04c737b)
2016-03-03 15:51:18 -05:00
Zach Riggle fde04c737b Extract list of data elements from Buffer when unget()'ing a Buffer. Fixes #596 2016-03-03 15:50:05 -05:00
Zach Riggle 524a76b925 Skip $PATH resolution for which() when a path component is detected. Also remove carriage returns from ssh.interactive() output. 2016-02-19 23:22:58 -05:00
Jonas Rudloff d498a34e70 Merge pull request #594 from YASME-Tim/receiving
💊 Recieved -> Received #593
2016-02-08 12:50:27 +01:00
YASME-Tim 79d4248666 💊 #593 Last occurrence of recieved fixed 2016-02-07 13:23:15 +01:00
YASME-Tim fa25a733bd 💊 Recieved -> Received 2016-02-07 13:17:19 +01:00
Zach Riggle 541734a097 Simplify coredump_filter code in case the process dies between the two statements 2016-01-28 13:49:06 -05:00
Zach Riggle cf203cc91e Enable compression for SSH 2016-01-28 00:27:38 -05:00
Zach Riggle b52b970a28 Update ssh.process to match process for usage of setuid 2016-01-28 00:27:25 -05:00
Zach Riggle b36c78805f Add process.corefile; improve process.libs; update process.setuid 2016-01-28 00:26:54 -05:00
Zach Riggle 54584e09c0 Merge pull request #66 from PankajKataria/master
Fix typo
2016-01-24 17:29:39 -05:00
Zach Riggle 2314322369 Add tcp and udb helper classes for remote 2016-01-22 23:29:02 -05:00
Zach Riggle 0ef6a9a383 Add context.device 2016-01-22 23:15:53 -05:00
Zach Riggle 131eefaf05 Add context.noptrace option 2016-01-22 23:14:00 -05:00
Zach Riggle 63ca4f51b1 Ensure coredumps contain *everything* 2016-01-04 18:08:00 -05:00
Zach Riggle e806bf73f6 Fix Corefile parsing verbosity, and make elf.string() bail when reads fail. 2015-12-29 15:09:35 -05:00
Zach Riggle 2cf84db4ca Handle Corefiles with no environment variables 2015-12-29 13:09:59 -05:00
Zach Riggle cb5f04de6b Fix presentation of env on log line when env={} 2015-12-29 12:49:52 -05:00
Zach Riggle c8228729f1 Allow empty environments via SSH 2015-12-29 12:31:40 -05:00
Pankaj Kataria 098888da2f Fix typo
Fix typo
2015-12-27 08:28:06 +05:30
Zach Riggle c250f00abe Fix XOR shellcode and tests for arm and aarch64 2015-12-26 13:13:59 -08:00
Zach Riggle 02ffc4034e Simplify aarch64 by one instruction 2015-12-26 15:10:43 -05:00
Pankaj Kataria 00047af206 Corrected description of download_dir function 2015-12-26 23:22:35 +05:30
Zach Riggle 5a60b591be Fix IRC link 2015-12-21 17:19:22 -05:00
Zach Riggle e54cd0ddf7 Merge branch 'ssh-agent' 2015-12-21 17:02:44 -05:00
Zach Riggle 8eec3e2d12 Disable use of ssh-agent by default 2015-12-21 16:59:44 -05:00
Zach Riggle 1738218f81 Don't be too aggressive with ssh.process() status messages 2015-12-12 02:38:14 -05:00
Zach Riggle e3c1aad702 Fix bug for NT_FILE and environment variable addresses 2015-12-12 02:37:35 -05:00
Zach Riggle df7f08a5ed Fix corefile support for mappings without NT_FILE 2015-12-11 19:19:15 -05:00
Zach Riggle 44548b0a72 Better error handling for ssh.process(), and less verbose log messages 2015-12-11 17:55:24 -05:00
Zach Riggle 5512ecf450 Add warning message for when the corefile isn't loaded 2015-12-11 16:00:26 -05:00
Zach Riggle 8b969da149 Fix regression when parsing some functions like __libc_start_main@@GLIBC_2.0 2015-12-11 15:58:19 -05:00
Zach Riggle 176e45d9f6 Assume that core files are desired 2015-12-11 15:48:09 -05:00
Zach Riggle 594f35e4f7 Enhance corefile parsing to extract environment variable addresses 2015-12-11 15:48:09 -05:00
Zach Riggle ea2493bd56 Do not dump GDB traffic when debugging is verbose 2015-12-11 04:10:37 -05:00
Zach Riggle 3ef1e1a7d5 Further enhancements to Core 2015-12-11 04:10:37 -05:00
Zach Riggle e978986a84 Add support for extracting register state from core files 2015-12-11 04:10:37 -05:00
Zach Riggle faf3e42861 Merge branch 'socks5' 2015-12-11 04:07:30 -05:00
Zach Riggle 32cff88c56 Update .executable to be the original binary, so that .libs and .libc works for process() and ssh_channel() 2015-12-10 22:00:02 -05:00
Zach Riggle f32069589d Convert ssh_channel.exe ==> ssh_channel.executable to be the same as process.executable 2015-12-10 21:46:13 -05:00
Zach Riggle 926231b4ed Fix test 2015-12-08 12:39:45 -05:00
Zach Riggle f08e2c8731 Move output to stdout 2015-12-08 10:24:54 -05:00
Zach Riggle ee1ca61d37 Silence log output in unit test 2015-12-08 10:24:46 -05:00
Zach Riggle 42d08b43fc logging 2015-12-07 17:28:45 -05:00
Zach Riggle ab692c1569 Add logging and socks to the toplevel 2015-12-07 17:23:34 -05:00
Zach Riggle 7640c3fa9f Simplify context setup 2015-12-07 17:23:18 -05:00
Zach Riggle 3db5c4d0ce Add support for SOCKS proxies 2015-12-07 17:15:25 -05:00
Zach Riggle 3bcf57bcd3 Add unit test for aslr==0 to set unlimited stack size 2015-12-07 17:06:23 -05:00
Zach Riggle 714bc320c4 Fix argument for tube.p64 2015-12-03 13:26:57 -05:00
Zach Riggle 24c32f541d Fix log message for ssh.interactive() 2015-12-03 13:26:45 -05:00
Zach Riggle f8753f2f5b Add **kw to run_shellcode 2015-12-03 13:26:20 -05:00
Zach Riggle 507deae10f Add KB,MB,GB globals 2015-12-03 13:25:37 -05:00
Zach Riggle d4dbdb58df Fix "execute" argument to gdb.debug variants 2015-12-03 13:25:12 -05:00
Zach Riggle 59ae1a999a Add ssh.which and other minor bugfixes in ssh 2015-11-30 09:50:42 -05:00
Zach Riggle 1582064bed Add .libc to process and ssh.process; also convert DynELF.libc to a property 2015-11-23 13:10:29 -08:00
Zach Riggle 506be041b7 Add nosetuid to ssh.process 2015-11-20 20:08:44 -08:00
Zach Riggle 8699c98a6f Add signed and unsigned 2015-11-20 20:05:36 -08:00
Zach Riggle 1bcc4626e3 Add option to disable setuid 2015-11-20 23:04:57 -05:00
Jonas Rudloff 8f355195db Merge pull request #586 from Gallopsled/fiddling-naf
added `pwnlib.util.fiddling.naf` to compute the non-adjacent form of …
2015-11-20 17:07:05 +01:00
Morten Brøns-Pedersen 32b9b90175 Merge pull request #583 from binjitsu/wait
Add `wait` as an alias for `wait_for_close`
2015-11-20 16:49:56 +01:00
Morten Brøns-Pedersen 82500a1bc0 added pwnlib.util.fiddling.naf to compute the non-adjacent form of a number 2015-11-20 15:32:53 +01:00
Zach Riggle d6e4c7d76d Add log.hexdump 2015-11-15 00:16:14 -05:00
Zach Riggle ee8a96c39d Re-add cyclic hexdump to hexdump() 2015-11-15 00:15:57 -05:00
Zach Riggle 49dd666026 Fix dealarm_shell issue where "which" doesnt sent a new line if the binary is missing 2015-11-15 00:15:41 -05:00
Zach Riggle 675155abc8 Convert len => length 2015-11-12 14:58:05 -05:00
Zach Riggle 8d4b1f84f8 Add context.aslr and options to disable ASLR via process() and ssh.process() 2015-11-10 16:26:25 -05:00
Kristoffer Søholm 9949d7d979 Merge pull request #584 from Gallopsled/setup-py-requests-issue
Fix annoying setup.py behaviour.
2015-11-09 21:09:35 +01:00
Mathias Svensson f91299986e Fix annoying setup.py behaviour.
When installing pwntools, setup.py required a very new version of
requests -- even though we never used any new features.

This is a problem, since the required version is much never than what is
in e.g. ubuntu's package repo. While this by itself is not much of a
problem, it is a problem if one installs python-pip from the distro's
repo as well, since python-pip will try to use the newest version of the
requests library, which caused pip to break.

The solution: Do not force such a new version of python, instead live
with a much older version.
2015-11-09 21:00:43 +01:00
Zach Riggle 8ffb0dfacf Enhance error messages 2015-11-09 14:36:48 -05:00
Zach Riggle aff7b8e3a3 Simplify a few lines of code 2015-11-09 14:36:11 -05:00
Zach Riggle 438c9a303b Add tube.sendlines method 2015-11-09 13:10:50 -05:00
Zach Riggle f0f4180fd4 Fix test failure introduced by bc6cc93 2015-11-07 23:15:59 -05:00
Zach Riggle aad6e9ae9b Add support for setting log colors from ~/.pwn.conf 2015-11-07 23:12:37 -05:00
Zach Riggle bc6cc93537 Add option to skip setting TTY raw mode. Use os.environ for process() so that preexec_fn can use it. 2015-11-07 20:06:00 -05:00
Zach Riggle 89a60e71b8 Remove termcap did_init, since it breaks terminals 2015-11-07 16:20:25 -05:00
Zach Riggle 6c6b16bb16 Simplify PTY slave logic 2015-11-07 16:08:21 -05:00
Zach Riggle b1575e6a0f Fix infinite recursion on accessing self.proc in close() 2015-11-07 16:04:00 -05:00
Zach Riggle 4c38d29ac3 Gate termcap.get with an initialization flag 2015-11-07 15:48:14 -05:00
Zach Riggle 232ebd5e6d Update docs/requirements.txt to install all requirements. 2015-11-07 15:43:36 -05:00
Zach Riggle f79b447378 Remove CLA 2015-11-07 15:31:14 -05:00
Zach Riggle 45ea91fa8e Fix syscall stubs using "from" as a variable name. 2015-11-07 15:31:14 -05:00
Zach Riggle 55a47c95b9 Fix documentation errors. 2015-11-07 15:31:14 -05:00
Zach Riggle dbd334673d Fix behavior with getpass() by making stdin also be a raw TTY 2015-11-07 15:31:14 -05:00
Zach Riggle 73d8e06a4b Detect gdbserver in the working directory 2015-11-03 19:16:36 -05:00
Zach Riggle 6f248e8a5e Add context.mask 2015-11-03 17:05:18 -05:00
Zach Riggle e6d64d8ade Add wait alias for wait_for_close 2015-11-03 16:43:07 -05:00
Zach Riggle d90566d30a Add wait alias for wait_for_close 2015-11-03 16:42:51 -05:00
Zach Riggle 6db7b8cfbf Fix term mode. Broken since 11fa0d8d6d 2015-11-03 16:38:58 -05:00
Zach Riggle aa323a40df Ensure self.cwd is always set; simplifies some logic 2015-11-03 16:29:04 -05:00
Zach Riggle 8fc7e64ff5 Default working directory is "." 2015-11-03 16:27:36 -05:00
Zach Riggle 2264290a6f Don't print e.g. '\x04' * 0x1 2015-10-30 16:27:55 -04:00
Zach Riggle 170d4999eb Update Android sh scripts to properly set arg0 since it is expected. 2015-10-29 19:39:27 -04:00
Zach Riggle 3520393b62 Add Android includes 2015-10-29 19:37:53 -04:00
Zach Riggle 88ff1f3533 Update Thumb execve to properly support string arrays 2015-10-29 19:37:14 -04:00
Zach Riggle e5223e4bd1 Update ARM execve to properly support string arrays 2015-10-29 19:31:53 -04:00
Ryan afdb7a4449 Update about.rst 2015-10-27 15:04:31 -04:00
Zach Riggle d3814a3d39 Add Android OS 2015-10-27 15:02:30 -04:00
Zach Riggle 515af41f85 Update Android sh path 2015-10-27 15:02:25 -04:00
Jonas Rudloff 458c6971ea Merge pull request #507 from binjitsu/faster-travis
Use container-based Travis CI so that it builds faster
2015-10-26 13:02:25 +01:00
Jonas Rudloff 24401a34ce Merge pull request #580 from Gallopsled/alt-fix-pr-563
alternative to PR #563; this works by simply never emitting CR
2015-10-26 10:44:33 +01:00
Zach Riggle c66b809006 Add Android templates and headers as symlinks 2015-10-25 23:48:26 -04:00
Zach Riggle c2339b62f1 Fix asm regression 2015-10-25 19:35:57 -04:00
Zach Riggle e7a72e086b Add default arguments for mmap 2015-10-25 19:31:00 -04:00
Zach Riggle 1bed4850b0 Dont send cd command if there's no change 2015-10-25 19:29:58 -04:00
Zach Riggle 4993b4ada7 Simplify header layout 2015-10-25 19:29:41 -04:00
Zach Riggle 2c8652bf91 Detect whether gdbserver is installed 2015-10-25 19:18:05 -04:00
Zach Riggle 2219f183c2 Fix ARM push. There is no push-immediate. 2015-10-25 18:36:02 -04:00
Zach Riggle 278ebee345 Add sublime-settings [skip ci] 2015-10-25 16:51:38 -04:00
Zach Riggle 81de47c025 Add errno command-line helper 2015-10-25 16:40:24 -04:00
Kristoffer Søholm 46cc634e8b Merge pull request #581 from scoops/patch-1
Update about.rst
2015-10-24 00:31:07 +02:00
Ryan f71ae3b06f Update about.rst 2015-10-23 11:48:06 -04:00
Ryan 9cdfa82bc3 Update about.rst
Smoothed out some phrasing that bugged me.
2015-10-23 11:45:26 -04:00
Morten Brøns-Pedersen 08c8c2e8e4 alternative to PR #563; this works by simply never emitting CR 2015-10-23 09:11:25 +02:00
Zach Riggle e1b93c77f5 Merge pull request #61 from jaybosamiya/patch-1
Fix typos
2015-10-15 17:34:02 -04:00
Jay Bosamiya 77383048fb Fix typo
"Data" is, by itself plural. "Datas" is not a word.
2015-10-16 01:59:24 +05:30
Jay Bosamiya fb3c55af06 Fix typos
I'm pretty sure it shouldn't be "he" there.
2015-10-16 01:58:00 +05:30
Morten Brøns-Pedersen a09d87c579 Merge pull request #579 from Gallopsled/fiddling-bits-0-doctest
added `fiddling.bits(0)` as a doctest
2015-10-15 09:49:59 +02:00
Morten Brøns-Pedersen 10c3f079c5 added fiddling.bits(0) as a doctest 2015-10-15 09:42:37 +02:00
Morten Brøns-Pedersen 55e830b214 Merge pull request #578 from sam-b/master
corrected util.fiddling.bits implementation to handle 0 validly
2015-10-15 09:27:16 +02:00
Sam Brown 6449e14e9e corrected util.twiddling.bits implementation to handle 0 validly 2015-10-14 23:10:17 +01:00
Zach Riggle d7a0bafc5f Permit dot access to symbol names, add elf.sym alias for elf.symbols 2015-10-14 13:22:31 -04:00
Zach Riggle 11fa0d8d6d This contains a large merge from the Samurai internal repo.
Changes:

- `pwn/init` initialization code simplified, and some was moved to `pwnlib/args`
- `scramble` script added to `pwnlib.commandline`; support for encoders added to relevant scripts
- Added shellcode encoders for several architectures
- Added CGC architecture shellcode and constants
- Added Shellcraft templates for every syscall
- Added `xor_key` helper for generating a 4-byte XOR key for a data stream
- Added `getdents` for use with the relevant shellcraft scripts
- Add ELF loaders for all architectures
- Lots of MIPS and AArch64 shellcode
2015-10-12 02:13:13 -04:00
Morten Brøns-Pedersen 768b24e192 added __neq__ method to pwnlib.term.key
(cherry picked from commit 31d06cb807)
2015-10-06 18:09:25 -04:00
Morten Brøns-Pedersen 42d8f59e11 import completer with pwnlib.term and update no-available-completions-text 2015-10-06 18:09:09 -04:00
Morten Brøns-Pedersen c734802900 fix before and after keywords for term.output() 2015-10-06 18:08:58 -04:00
Zach Riggle b4945667c7 Clean up code from 442873e 2015-10-06 18:08:09 -04:00
antoniob 442873e5be close file descriptors in process.close() and avoid leaving zombie processes around
(cherry picked from commit fa2e11391e)
2015-10-06 18:06:10 -04:00
Zach Riggle 29eefaac2b Revert disable-randomization change from 3b9614a535 2015-10-06 18:05:57 -04:00
Morten Brøns-Pedersen daf117e270 Merge pull request #576 from antoniobianchi333/master
close file descriptors in process.close() and avoid leaving zombie processes around
2015-10-05 12:33:40 +02:00
antoniob fa2e11391e close file descriptors in process.close() and avoid leaving zombie processes around 2015-10-05 01:05:24 -07:00
Zach Riggle c5a92cdfb6 Simplify use if int() 2015-09-21 14:14:40 -04:00
Jonas Rudloff 6c9761d83d Merge pull request #574 from en0/master
Fixed lookup feature where the packing util was being called with wrong argument
2015-09-21 19:04:24 +02:00
Ian Laird 80f744cc6d Fixed issue on lookup function where the packing util was being called with inproper argument type 2015-09-19 23:29:57 -06:00
Zach Riggle 4c61ed3b0b Fix #59 2015-09-15 15:11:26 -04:00
Zach Riggle 88d1643804 Fix ssh.run() environment variables 2015-09-01 14:50:44 -04:00
Morten Brøns-Pedersen a454d54975 Merge pull request #571 from Gallopsled/term-before-after-fix
fix `before` and `after` keywords for `term.output()`
2015-08-31 10:13:17 +02:00
Morten Brøns-Pedersen 5a92096231 Merge pull request #570 from Gallopsled/term-completer
import `completer` with `pwnlib.term` and update no-available-complet…
2015-08-31 10:13:04 +02:00
Morten Brøns-Pedersen cfa9b00789 Merge pull request #569 from Gallopsled/term-key-neq
added `__neq__` method to `pwnlib.term.key`
2015-08-31 10:12:38 +02:00
Zach Riggle f12253e34d Add dockerfile 2015-08-31 03:53:31 -04:00
Zach Riggle 783cc096a6 Fix which() precedence 2015-08-30 23:29:46 -04:00
Zach Riggle 549541b6ea Handle EINTR on select 2015-08-30 23:21:30 -04:00
Zach Riggle a2916b7d01 Add live demo 2015-08-30 22:55:00 -04:00
Zach Riggle a6a5cfeb9c Add i686 alias 2015-08-30 15:01:05 -04:00
Zach Riggle c18f8a202d Sockets should be set to non-blocking for spawned processes 2015-08-25 16:54:30 -04:00
Zach Riggle 59a309d6ac Fix UDP socket buffering 2015-08-25 16:47:16 -04:00
Zach Riggle a676adbc52 Update ELF 2015-08-23 16:51:12 -04:00
Zach Riggle e08aebe9fd Remove shippable, since its crap 2015-08-22 15:41:17 -04:00
Zach Riggle f968120997 Only request ptrace_scope when required 2015-08-22 15:40:05 -04:00
Robert Larsen 60307ed1c7 Merge branch 'master' of https://github.com/Gallopsled/pwntools 2015-08-18 12:22:13 +02:00
Robert Larsen 71d1535f33 Removed test file. 2015-08-18 12:21:30 +02:00
Zach Riggle b03d83dfe7 Add elf.functions 2015-08-14 18:20:01 -04:00
Zach Riggle f9c7ea87fa process() now handles empty environments 2015-08-14 17:58:08 -04:00
Jonas Rudloff e0e150f87b Merge pull request #568 from RobertLarsen/master
Shellcodes for MIPS/i386/amd64
2015-08-14 16:55:40 +02:00
Robert Larsen a6fd7f8411 Fixed more documentation. 2015-08-13 09:56:38 +02:00
Robert Larsen 400b5f4995 Fixed documentation. 2015-08-13 09:48:16 +02:00
Morten Brøns-Pedersen 5394d9d91c import completer with pwnlib.term and update no-available-completions-text 2015-08-11 22:07:40 +02:00
Morten Brøns-Pedersen 000d2b2fc7 fix before and after keywords for term.output() 2015-08-11 22:02:45 +02:00
Morten Brøns-Pedersen 31d06cb807 added __neq__ method to pwnlib.term.key 2015-08-11 21:04:37 +02:00
Robert Larsen 55067001c3 Merge branch 'master' of https://github.com/Gallopsled/pwntools 2015-08-10 11:09:14 +02:00
Morten Brøns-Pedersen 06f0f8c8af Merge pull request #566 from Gallopsled/bugfix-term-enter
bugfix: `ui.yesno()` now correctly handles <enter>
2015-08-06 04:37:04 +02:00
Zach Riggle 1a389ca2b8 Update binutils.rst 2015-07-30 13:34:27 -04:00
Zach Riggle ecbe0e9fa9 Update binutils.rst 2015-07-30 13:34:16 -04:00
Robert Larsen 175f26c605 Merge branch 'master' of https://github.com/Gallopsled/pwntools 2015-07-30 13:36:16 +02:00
Zach Riggle 76d78a0e7e Install QEMU 2.3 instead of 2.1 2015-07-29 08:03:01 -04:00
Zach Riggle 3f8d4cc37c Add aarch64 binutils 2015-07-29 07:52:19 -04:00
Robert Larsen 9beb63dc9d Added readfile shellcode for i386. 2015-07-22 16:00:32 +02:00
Robert Larsen d6a358d1dc Added readfile shellcode for amd64. 2015-07-22 15:35:12 +02:00
Morten Brøns-Pedersen 83d44b500d Merge pull request #567 from Gallopsled/bugfix-no-shutdown-on-close
bugfix: don't call `shutdown(2)` when calling `tubes.sock.close()`
2015-07-17 09:37:11 +02:00
Morten Brøns-Pedersen 1eb35819ac Merge pull request #560 from binjitsu/register-ordering
Add setregs shellcode helper for i386 to demonstrate regsort
2015-07-17 09:34:46 +02:00
Morten Brøns-Pedersen 8a2e54232b Merge pull request #561 from binjitsu/gdb-unlink
Unlink GDB temporary files.  Fixes #519
2015-07-17 09:31:09 +02:00
Morten Brøns-Pedersen 77bfc16341 bugfix: don't call shutdown(2) when calling tubes.sock.close()
This can be a problem since sockets inherited by children will see the
`shutdown(2)` call as well.
2015-07-16 23:35:30 +02:00
Morten Brøns-Pedersen 383f245082 bugfix: ui.yesno() now correctly handles <enter>
This bug happened because we no longer disable input processing in the terminal.
In particular `\r` is now translated to `\n`.  The fix is to interpret both `\r`
and `\n` as <enter> in `term/key.py`.
2015-07-16 23:30:45 +02:00
Zach Riggle e7ef1c1029 Merge pull request #55 from eQu1NoX/MAIN-arm
Integration test for ARM
2015-07-15 12:11:09 -04:00
eQuiNoX__ e6752fbd30 Correct tests that depend on 0x900000 vs 0x0 2015-07-15 13:14:59 +02:00
eQuiNoX__ de393e4afa Integration test for ARM 2015-07-15 12:40:44 +02:00
Zach Riggle f92ea95299 Rebuild the ARM constants with __ARM_EABI__ and __KERNEL__ 2015-07-14 16:33:20 -04:00
Zach Riggle ee4028c10a Merge pull request #54 from eQu1NoX/MAIN2
MIPS integration tests for SROP
2015-07-14 08:17:17 -04:00
eQuiNoX__ 69ee58343e Trivial correction 2015-07-14 14:06:43 +02:00
eQuiNoX__ dca6232d97 Mips integration tests 2015-07-14 13:54:55 +02:00
Zach Riggle 8c1565ae3e Update README.md 2015-07-13 20:12:02 -04:00
Zach Riggle d1a70dc0fb Add screenshot 2015-07-13 20:10:35 -04:00
Zach Riggle 48a1cc72b0 Create README.md 2015-07-13 20:07:09 -04:00
Zach Riggle c29aebdb77 Add docstrings to QEMU functions 2015-07-13 16:28:48 -04:00
Zach Riggle ae888803b6 Add qemu-XXX-static binaries to Travis 2015-07-13 15:24:01 -04:00
Zach Riggle 4386b8d82a Merge pull request #49 from eQu1NoX/MAIN2
Adding in Aarch64 support.
2015-07-10 23:23:59 -07:00
eQuiNoX__ a44ba4fa16 Adding in doctests 2015-07-09 16:25:58 +02:00
Zubin Mithra 9ac4e8d9cb Adding in Aarch64 support.
This commit adds in Aarch64 SROP support. PoC that calls mprotect
can be viewed at

https://bitbucket.org/eQu1NoX/pwntest-arm64/src/a7936795d47c\?at\=master
2015-07-09 15:42:18 +02:00
Robert Larsen 853cdb4a25 Prevent nul byte. 2015-07-08 15:32:18 +02:00
Robert Larsen bd547f3fdc Added thumb/Linux shellcode for reading a file. 2015-07-08 14:13:45 +02:00
Robert Larsen a69dc3ebc6 Removed unneeded import. 2015-07-08 13:05:25 +02:00
Robert Larsen 3da395f11a An offset was slightly off. Fixed. 2015-07-08 12:38:28 +02:00
Robert Larsen b6c81925a9 Added MIPS/Linux shellcode for reading a file. 2015-07-08 12:35:08 +02:00
Zach Riggle 9559a99854 Fix doctests in ELF 2015-07-06 22:50:57 -07:00
Zach Riggle 1897045707 Merge remote-tracking branch 'nemopwn/master' 2015-07-06 21:54:57 -07:00
Zach Riggle 973efff68b Merge pull request #48 from binjitsu/asm-large-pages
Fix large page sizes on AMD64
2015-07-06 18:15:27 -07:00
Zach Riggle dd58f40991 Fix large page sizes on AMD64 2015-07-06 21:10:18 -04:00
Zach Riggle 0f710677d3 Touch README to force Travis rebuild 2015-07-06 14:50:20 -07:00
Zach Riggle 6d2ccdcf93 Merge remote-tracking branch 'gallopsled/master' 2015-07-06 14:47:22 -07:00
Robert Larsen 18cdcfd409 Added wrappers for ensuring the right operating system. 2015-07-06 15:41:12 +02:00
Robert Larsen c591d69a3a Added bindsh shellcode for MIPS. 2015-07-06 15:11:04 +02:00
Jonas Rudloff 073257dcac Merge pull request #565 from RobertLarsen/fix-sockaddr-usage
Fixed regression due to changed return value.
2015-07-06 14:59:23 +02:00
Robert Larsen 02c67d547d Removed comment. 2015-07-06 14:22:50 +02:00
Robert Larsen 61edc646e1 Use big endian (network byte order) for port. 2015-07-06 13:55:21 +02:00
Robert Larsen f424a9caf7 Merge branch 'fix-sockaddr-usage' of https://github.com/RobertLarsen/pwntools 2015-07-06 13:42:45 +02:00
Robert Larsen a95bb8e353 Revert "Revert "Fix sockaddr, optimize off some zero bytes""
This reverts commit 400013e680.
2015-07-06 13:25:15 +02:00
nemo 5d1e3500f0 Two changes:
- Add .ropeproject to .gitignore
- Make documentation of class ELF display normally
2015-07-06 16:15:47 +08:00
Jonas Rudloff d66676a862 findpeer- and connectstager shellcodes 2015-07-05 15:54:50 +02:00
Jonas Rudloff 6bdcb41252 fixed mov and syscall for thumb 2015-07-05 15:54:27 +02:00
Jonas Rudloff aa4a0a889c connectback stager for amd64 2015-07-05 13:04:36 +02:00
Jonas Rudloff 401d9f567e connectback stager for i386 2015-07-05 12:55:46 +02:00
Jonas Rudloff 400013e680 Revert "Fix sockaddr, optimize off some zero bytes"
This reverts commit bb5ea7677c.
2015-07-05 12:29:48 +02:00
Jonas Rudloff 5a637a534e amd64 findpeerstager recvives size 2015-07-05 12:14:41 +02:00
Jonas Rudloff f36470e628 findpeerstager now recvives the size 2015-07-05 10:31:56 +02:00
Robert Larsen bfcc9ac326 Works! 2015-07-04 23:34:36 +02:00
Robert Larsen 8ede459860 Fixed regression due to changed return value. 2015-07-04 01:47:55 +02:00
Robert Larsen 7855e433d0 Added connect shellcode which almost work. 2015-07-04 01:34:34 +02:00
Robert Larsen 5ab2f403bd Works...kind of. 2015-07-03 13:50:35 +02:00
Robert Larsen 2ed7e83dad Use the nop generator. 2015-07-03 13:50:08 +02:00
Robert Larsen 64c37569a3 Added stager and a nop generator. 2015-07-03 13:49:49 +02:00
Robert Larsen 8db93e8c04 Support three more arguments for syscalls. 2015-07-03 11:18:18 +02:00
Robert Larsen 7779ebff3c Fixed documentation. 2015-07-03 08:42:08 +02:00
Robert Larsen 2d67781ba4 Shaved off some instructions and made the port matching work. 2015-07-02 23:39:51 +02:00
Zach Riggle 37c55233ed Merge pull request #45 from eQu1NoX/MAIN2
Test for amd64
2015-07-02 14:02:44 -07:00
eQuiNoX__ 1f289e3dbd The following changes were made :-
- test for amd64 added in
- sigreturn template for amd64 added in. sigreturn template for i386 modified
- read.asm added for amd64
2015-07-02 19:01:57 +02:00
Robert Larsen 7dfd489e89 Nul free. 2015-07-02 15:55:19 +02:00
Robert Larsen 579d7bf58f Added findpeersh shellcode for MIPS/Linux. Port matching not working yet. Also contains a nul byte. 2015-07-02 15:49:08 +02:00
Robert Larsen eba2352dbc Don't overwrite socket register before using it 2015-07-02 15:48:00 +02:00
Robert Larsen ef451105c2 Added MIPS/Linux dupsh shellcode. 2015-07-02 15:05:27 +02:00
Robert Larsen 9a26be0881 Added MIPS/Linux sh shellcode. 2015-07-02 15:01:05 +02:00
Robert Larsen d21af22f82 Added MIPS/Linux dup shellcode. 2015-07-02 14:46:29 +02:00
Robert Larsen 71ef26281c Added Linux MIPS syscall shellcode. 2015-07-02 13:39:39 +02:00
Robert Larsen fa8d00dcfb Prettier. 2015-07-02 12:54:57 +02:00
Robert Larsen 28911442c4 Added test 2015-07-02 10:48:48 +02:00
Robert Larsen 0c0f609752 Added pushstr for MIPS. 2015-07-01 23:38:52 +02:00
Robert Larsen 5ad8ec2c3f Removed comments I no longer need. 2015-07-01 23:38:12 +02:00
Robert Larsen 504518596d More avoid newline. 2015-07-01 23:06:24 +02:00
Robert Larsen 5a6327537b Avoid newlines. 2015-07-01 22:53:16 +02:00
Robert Larsen 6ede0d2d64 Upper and lower halfword were swapped if they contained nul bytes. 2015-07-01 15:05:38 +02:00
Robert Larsen 966f66b19d Don't use pseudo instructions. 2015-07-01 14:19:24 +02:00
Robert Larsen 52dec55e2d Fixed list of registers. Use this in mips/mov.asm 2015-07-01 09:19:26 +02:00
Robert Larsen b3e4cb12b8 Prettier 2015-07-01 00:38:38 +02:00
Robert Larsen 536416dd83 Added more cases. May be done now. 2015-07-01 00:30:07 +02:00
Robert Larsen 2f88aadf0b More correct comments. 2015-06-30 23:48:02 +02:00
Robert Larsen d67384b283 More stuff tested. 2015-06-30 23:26:33 +02:00
Robert Larsen 5cb35801e9 More stuff tested. 2015-06-30 23:24:35 +02:00
Robert Larsen 88b6ea3b1a Be able to mov src=1 2015-06-30 22:51:32 +02:00
Robert Larsen 6be7b53519 Verified another piece. 2015-06-30 22:42:51 +02:00
Robert Larsen 2f1d4f6ebe Added comments about what works. 2015-06-30 15:34:29 +02:00
Zach Riggle d66c273e60 Merge pull request #44 from eQu1NoX/MAIN2
Add in support for mips, mipsel + doctests
2015-06-29 12:27:26 -07:00
Robert Larsen 24dfbc850f Trying to build a mov() shellcode generator for MIPS. 2015-06-29 16:16:47 +02:00
eQuiNoX__ ed7b459be9 Following changes were made :-
- Add support for MIPS and MIPSel
- Change format to offset:register in srop.py
- Correct doctests in srop.py
- Change usage in rop.py
2015-06-29 16:11:19 +02:00
Zach Riggle e544cd43b8 Fix test 2015-06-25 12:54:56 -04:00
Zach Riggle cfdfaff37e Fix SigReturnFrame.get_frame docstring [skip ci] 2015-06-25 12:37:55 -04:00
Zach Riggle 38e9f4274d Fix code-blocks [skip ci] 2015-06-25 12:36:29 -04:00
Zach Riggle 88d79af9c9 Update FormatStr doctest formatting 2015-06-25 00:01:38 -04:00
thetlk e675c2068e Enhance FormatString support, and add doctests 2015-06-24 23:42:03 -04:00
Zach Riggle 4cecbac380 Re-enable teset with workaround for Shippable 2015-06-24 16:24:06 -04:00
Zach Riggle b4f8877660 Skip test which fails on Shippable 2015-06-24 16:03:44 -04:00
Zach Riggle 1f5fde3302 Fix listen(fam=socket.AF_INET6) 2015-06-22 23:50:14 -04:00
Zach Riggle 9e17e76054 Simplify test 2015-06-22 23:21:51 -04:00
Zach Riggle 4f5be7144b Fix process(..., stdout=PIPE) and add tests 2015-06-22 23:19:24 -04:00
Zach Riggle 51d8a89d4b Shippable needs apt-get update to find gcc-multilib 2015-06-22 11:58:28 -04:00
Zach Riggle 523344b64e Add gcc-multilib to Travis and Shippable requirements 2015-06-22 11:53:57 -04:00
Zach Riggle 7486c79a67 Update .travis_install.sh 2015-06-22 09:27:47 -04:00
Zach Riggle 3a565a8171 Fix docstring [skip ci] 2015-06-21 15:40:43 -04:00
Zach Riggle 6b82b6b7dc Fix docstring [skip ci] 2015-06-21 15:39:27 -04:00
Zach Riggle c4dd91c5de Fix docstring [skip ci] 2015-06-21 15:38:14 -04:00
Zach Riggle 4b33859132 Add XOR encoder module for docs 2015-06-21 15:37:44 -04:00
Zach Riggle 6aff977171 Fix assembly for arches which want __start 2015-06-21 15:28:21 -04:00
Zach Riggle 6141e7d465 Add shellcode encoders and API 2015-06-21 15:26:55 -04:00
Zach Riggle 71845f6198 Remove unnecessary gadgets in the example 2015-06-21 15:22:49 -04:00
Zach Riggle d00cae41a6 Make stack and code rwx for generated ELFs 2015-06-21 15:22:33 -04:00
Zach Riggle 1327f2b33b :) 2015-06-19 23:43:04 -04:00
Zach Riggle b6ea53696b Fix setregs 2015-06-18 17:23:55 -04:00
Zach Riggle be1e13389a Make disassembly colors better for operators 2015-06-18 17:18:25 -04:00
Zach Riggle 6e562b2bdb Make shifting easier to read 2015-06-18 17:13:32 -04:00
Zach Riggle dd7c0acae1 Make xor easier to read 2015-06-18 16:50:57 -04:00
Zach Riggle b10f109967 Make not easier to read 2015-06-18 16:46:11 -04:00
Zach Riggle 63da39ea18 Make neg easier to read 2015-06-18 16:42:21 -04:00
Zach Riggle 8b459a066e Update doctests 2015-06-18 16:33:03 -04:00
Zach Riggle 1187e544de Optimize i386 mov for a few special cases 2015-06-18 16:19:08 -04:00
Zach Riggle 49e2c52b0b Fix doctests 2015-06-17 13:04:22 -07:00
Zach Riggle fc0c7a0f69 Revert changes to make_elf. Fixes #33 2015-06-17 12:28:28 -07:00
Zach Riggle d7b957c9c1 Merge pull request #32 from thetlk/master
import pwnlib after sys.path's change
2015-06-17 15:03:53 -04:00
thetlk dad217f9ed import pwnlib after sys.path's change 2015-06-17 16:47:11 +02:00
Zach Riggle ba6eba4b13 Fix doctest 2015-06-17 07:32:09 -04:00
Zach Riggle 4f1745fbdf Restore compact size to generated ELFs 2015-06-17 07:32:09 -04:00
Zach Riggle b218776573 Switch syscall over to getregs 2015-06-17 06:20:01 -04:00
Zach Riggle e867643192 Collapse constant values in regsort, since "mov reg,reg" is at most only as expensive as "mov reg,value" and usually cheaper 2015-06-17 05:58:44 -04:00
Zach Riggle 275a3a09d4 Restore compact size to generated ELFs 2015-06-17 05:45:09 -04:00
Zach Riggle 6f0a62e751 Honor -o option in asm; mark output as executable if output format is ELF 2015-06-17 05:32:35 -04:00
Zach Riggle 70645b432b Make pushstr work for things not-a-string but which can go through packing.flat(). This makes push more simple. 2015-06-17 05:31:55 -04:00
Zach Riggle 4ea3a4932e Slightly better cdq 2015-06-17 04:59:00 -04:00
Zach Riggle 8d1f57a345 Add cdq optimization to setregs 2015-06-17 04:59:00 -04:00
Zach Riggle c00e2b1863 Add correct ipv6 address, allow accept to time out 2015-06-17 04:59:00 -04:00
Zach Riggle 2aac79c9ad Honor -o option in shellcraft; mark output as executable if output format is ELF 2015-06-17 04:59:00 -04:00
Zach Riggle 8121a95bc5 Better colorizing, which can be disabled 2015-06-17 03:45:27 -04:00
Zach Riggle 797d416a47 Add support for conditional instruction printing 2015-06-17 03:18:38 -04:00
Zach Riggle 4ad2cb87a9 Remove debug print 2015-06-17 03:17:50 -04:00
Zach Riggle 400f208ca2 Fix output of the GasLexer to parse templates better 2015-06-17 03:16:45 -04:00
Zach Riggle 800f85fe7a Add Pygments to requirements 2015-06-17 03:09:37 -04:00
Zach Riggle 30dcc6af05 Use Pygments to colorize assembly if possible 2015-06-17 03:08:50 -04:00
Zach Riggle 2078c1dca6 Add TextMate / Sublime Text language bundles 2015-06-17 02:43:10 -04:00
Zach Riggle 966cc482fd Add cat doctest 2015-06-16 23:26:33 -04:00
Zach Riggle 98f27f80d8 Fix ROP doctests 2015-06-16 20:07:55 -04:00
Zach Riggle 3c2b2b22c9 Add ROP doctest 2015-06-16 19:15:32 -04:00
Zach Riggle c03c90c204 Add i386 SROP integration test 2015-06-16 17:56:56 -04:00
Zach Riggle 4265424956 Pass kwargs down to ELF.from_bytes 2015-06-16 16:19:28 -04:00
Zach Riggle 085efbc6b4 Defer deletion of temporary files 2015-06-16 16:19:20 -04:00
Zach Riggle 1d5fe92e04 Fix VMA for make_elf 2015-06-16 16:07:10 -04:00
Zach Riggle 8ba3d52955 Add ROP.from_blob for kokjo :D 2015-06-16 15:41:25 -04:00
Zach Riggle 24c1f2d04a Add documentation for checksec 2015-06-15 23:59:25 -04:00
Zach Riggle 1e59b54c4e Add shellcraft --run 2015-06-15 23:57:58 -04:00
Zach Riggle e21f8a0a24 Don't execute binaries which are not dynamically linked 2015-06-15 23:57:45 -04:00
Zach Riggle 58b6ce5ec4 Add asm --run and --infile 2015-06-15 23:56:17 -04:00
Zach Riggle e54c16c5e9 Dont emit CRLF since it shows empty lines 2015-06-15 23:11:26 -04:00
Zach Riggle ac4524607a Dont emit CRLF since it shows empty lines 2015-06-15 23:09:31 -04:00
Zach Riggle 757f60acb0 Unlink GDB temporary files. Fixes #519 2015-06-15 17:29:27 -04:00
Zach Riggle b57beda046 Fix missing imports, simplify runner module 2015-06-15 17:22:05 -04:00
Zach Riggle 1ac87052c2 Add powerpc and powerpc64 register names so you can "li r0,0" 2015-06-15 14:23:54 -04:00
Zach Riggle 502de0c92f Add missing constants 2015-06-15 14:17:18 -04:00
Zach Riggle 2093ca4632 Dont bail on various architectures 2015-06-15 14:16:51 -04:00
Zach Riggle c0f321fbf2 Unlink GDB temporary files. Fixes #519 2015-06-15 14:06:44 -04:00
Zach Riggle 39beae9c3f Add setregs shellcode helper for i386 to demonstrate regsort
```py
>>> print shellcraft.setregs({'eax':'ebx','ebx':3,'edx':'eax','esi':'edi','edi':'esi','ebp':'ebx'})
    mov edx, eax
    mov eax, ebx
    mov ebp, ebx
    push 0x3
    pop ebx
    xchg edi, esi
```
2015-06-15 13:53:14 -04:00
Zach Riggle 86e422de0c Update TESTING.md 2015-06-15 09:32:11 -04:00
Zach Riggle af5ba55325 Merge remote-tracking branch 'gallopsled/master' into integration 2015-06-15 09:07:34 -04:00
Zach Riggle 405d9cc2af Import iters 2015-06-15 09:01:32 -04:00
Zach Riggle 1631d2265e Fix tests 2015-06-15 08:57:41 -04:00
Zach Riggle 77cc76769c Merge with gallopsled/master 2015-06-15 08:54:50 -04:00
Zach Riggle 31f05f4c7f Emit nicer assembly comments 2015-06-15 08:38:35 -04:00
Zach Riggle 24f49a46cf Add echo example 2015-06-15 08:37:52 -04:00
Zach Riggle 28307ec699 Update TESTING.md 2015-06-15 08:17:46 -04:00
Zach Riggle c50f224b6b Update TESTING.md 2015-06-15 08:14:39 -04:00
Zach Riggle 3a63c0804d Feed results of unpack() through int() so it doesnt return long() 2015-06-15 08:12:45 -04:00
Zach Riggle 1d5825c844 Fix whitespace, 2015-06-15 08:10:55 -04:00
Zach Riggle 709d834945 Fix whitespace, add amd64 version 2015-06-15 08:08:57 -04:00
Zach Riggle f3b0645568 Fix simple case of regsort. Add i386.setregs 2015-06-15 08:05:53 -04:00
Zach Riggle 640d0261fd Add register sorting and dependency resolution module 2015-06-15 07:59:55 -04:00
Zach Riggle 89dd56a2a3 Use LocalContext for ABI 2015-06-15 02:35:55 -04:00
Zach Riggle e45ee3053e Automatically set arch for shellcraft; update i386 exit; add amd64 exit 2015-06-15 02:32:24 -04:00
Zach Riggle 65a60a6170 Automatically set arch for shellcraft; update i386 exit; add amd64 exit 2015-06-15 02:32:07 -04:00
Zach Riggle 63c5d4fb60 Add doctest for i386.linux.exit 2015-06-15 02:21:01 -04:00
Zach Riggle 6c27af5e16 Update __init__.py 2015-06-14 20:49:37 -04:00
Zach Riggle 931d18f836 Update license from pwntools 2015-06-14 20:47:35 -04:00
Zach Riggle 41350f51cf TESTING 2015-06-14 20:46:37 -04:00
Zach Riggle 75b230c052 Enable @LocalContext for ELF.from_XXXX 2015-06-14 20:38:20 -04:00
Zach Riggle 24a70eb8ff Add better tests and ELF.from_bytes 2015-06-14 18:59:26 -04:00
Zach Riggle 918115302c Add make_elf_from_assembly and ELF.from_assembly 2015-06-14 18:53:03 -04:00
Zach Riggle af92658f42 Add context.clear(...) arguments 2015-06-14 17:18:33 -04:00
Zach Riggle ee35d10303 Add TESTING.md 2015-06-14 17:11:51 -04:00
Zach Riggle 3b0cf3cbaf Nope time is bad, not installed on Travis 2015-06-14 16:44:41 -04:00
Zach Riggle 7292806e08 Explicitly time the run 2015-06-14 16:43:12 -04:00
Zach Riggle f263f9e10d Update docstring 2015-06-14 16:38:47 -04:00
Zach Riggle cfa0d50339 Silence Sphinx warning 2015-06-14 16:38:28 -04:00
Zach Riggle 7cf6360dbb Add runner.rst to index.rst 2015-06-14 16:36:06 -04:00
Zach Riggle 32fef0cf05 Add missing link 2015-06-14 16:32:23 -04:00
Zach Riggle 95b1adebbf Fix Sphinx warnings 2015-06-14 16:30:01 -04:00
Zach Riggle df3a746768 Fix docs 2015-06-14 16:29:39 -04:00
Zach Riggle 11bfb24506 Add testexample link 2015-06-14 16:26:14 -04:00
Zach Riggle ddaa95d6dd Fix testexample 2015-06-14 16:24:02 -04:00
Zach Riggle 77e8ab1d84 No shippable caching 2015-06-14 16:23:23 -04:00
Zach Riggle e9497169f1 Remove set -ex 2015-06-14 16:21:16 -04:00
Zach Riggle 9f552c94cb Fix testexample 2015-06-14 16:20:30 -04:00
Zach Riggle 0cdb715e7c Fix runner banner 2015-06-14 16:14:01 -04:00
Zach Riggle 9a5b4e09af Fix SROP banner 2015-06-14 16:13:52 -04:00
Zach Riggle bac6a9f543 Fix testexample module 2015-06-14 16:13:39 -04:00
Zach Riggle b901ff3b1e Add shippable configuration 2015-06-14 16:12:04 -04:00
Zach Riggle de47ac9cf5 Add Shippable badge 2015-06-14 16:07:10 -04:00
Zach Riggle 72e9b3135e Fix Shippable build since it really doesnt have terminfo 2015-06-14 15:55:52 -04:00
Zach Riggle 7413dffac7 Add test example modules 2015-06-14 15:54:56 -04:00
Zach Riggle 7b4a415a90 Skip failing SROP tests 2015-06-14 15:45:18 -04:00
Zach Riggle 465f5875b7 Fix SROP tests 2015-06-14 15:28:47 -04:00
Zach Riggle a50cd85791 Fix Shippable builds 2015-06-14 15:28:08 -04:00
Zach Riggle 1541b20c19 Run install before SSH setup 2015-06-14 15:26:00 -04:00
Zach Riggle 54551eb072 Fix doctest 2015-06-14 15:25:18 -04:00
Zach Riggle a45da211db Move srop module 2015-06-14 15:25:08 -04:00
Zach Riggle 5bfde777bf Fix naming 2015-06-14 15:14:13 -04:00
Zach Riggle 6e0ee86cb9 Import ALL THE THINGS 2015-06-14 15:12:50 -04:00
Zach Riggle b78b91180f Add runner module, for shellcode unit tests 2015-06-14 15:08:04 -04:00
Zach Riggle 77326199e4 Fast path for LocalContext 2015-06-14 14:59:57 -04:00
Morten Brøns-Pedersen 143239bd7f Merge pull request #465 from binjitsu/sorted-imports-upstream
Sort all imports, force import sort checking on doctest
2015-06-11 20:01:52 +02:00
Morten Brøns-Pedersen 61540eb90f Merge pull request #457 from binjitsu/clean-and-log
Don't log twice for clean_and_log.
2015-06-11 20:00:21 +02:00
Morten Brøns-Pedersen 4fbaba7888 Merge pull request #557 from binjitsu/read-n
Enable maximum number of bytes to read
2015-06-11 19:59:07 +02:00
Zach Riggle 13ad3e80f7 Fix doctest 2015-06-11 08:59:58 -04:00
Zach Riggle d2e6db8904 Add config 2015-06-11 08:59:35 -04:00
Zach Riggle a0b6e99e72 Fix failing test due to wrong username 2015-06-11 08:58:07 -04:00
Zach Riggle f5ebcf6dc4 Add mode option to write 2015-06-11 08:55:49 -04:00
Zach Riggle f7eca3e13a Add skip, rename n to count 2015-06-11 08:34:52 -04:00
Zach Riggle 787c015e07 Don't log twice for clean_and_log. 2015-06-11 08:30:12 -04:00
Zach Riggle c69ed7ea15 Sort all imports 2015-06-11 08:25:50 -04:00
Zach Riggle f399a7029d More enhancements to the Travis caching functionality. 2015-06-11 08:13:17 -04:00
Zach Riggle 061ca4ab12 Use container-based Travis CI so that it builds faster 2015-06-11 08:13:17 -04:00
Zach Riggle 287bcae4c4 Merge pull request #25 from eQu1NoX/master
ARM srop support
2015-06-11 06:58:30 -04:00
Zach Riggle 6148801e95 Fix feature regression in cyclic_find which permits integer lookups 2015-06-11 06:58:01 -04:00
Zubin Mithra f23c297d7b moving integ to different branch
Add information about various ARM coprocessors that might be present.

Correct typo

Add in comments

Change how magic numbers and offsets are stored

Use namedtuple

Renaming variables

srop.py doc modified

ARM sp check added in

Cleanup
2015-06-11 12:38:51 +02:00
Morten Brøns-Pedersen 74e55a2ef6 Merge pull request #501 from binjitsu/cmdline-enhance
Enhance asm and shellcraft with auto-debugging; add checksec command-line
2015-06-11 10:42:24 +02:00
Morten Brøns-Pedersen 2e8228490f Merge pull request #499 from binjitsu/process-enhancements
Enhance functionality in process
2015-06-11 10:41:14 +02:00
Morten Brøns-Pedersen 8766c3f7ad Merge pull request #498 from binjitsu/ssh-enhancements
Multiple enhancements to SSH
2015-06-11 10:39:14 +02:00
Morten Brøns-Pedersen eb59165810 Merge pull request #542 from binjitsu/net-shorter
Fix sockaddr ipv6, optimize off some zero bytes
2015-06-11 10:26:00 +02:00
Morten Brøns-Pedersen d48d0624d1 Merge pull request #543 from binjitsu/compress-debug-sendrecv
Compress debug send/recv output if it's the same byte
2015-06-11 10:25:07 +02:00
Morten Brøns-Pedersen 3fab235f30 Merge pull request #551 from binjitsu/disasm-strip
Enable disassembly with stripping the offsets and columns
2015-06-11 10:18:55 +02:00
Morten Brøns-Pedersen c83387b2f3 Merge pull request #555 from Gallopsled/issue553
Fixes #553
2015-06-11 10:16:56 +02:00
Morten Brøns-Pedersen cc4102f7d2 Merge pull request #556 from binjitsu/aarch64
Add support for aarch64-linux
2015-06-11 10:15:22 +02:00
Zach Riggle a4c5492772 Enable maximum number of bytes to read 2015-06-11 03:45:15 -04:00
Zach Riggle 01365128dc Fix feature regression in cyclic_find which permits integer lookups 2015-06-11 03:45:09 -04:00
Zach Riggle 8849b78ed5 Enable maximum number of bytes to read 2015-06-11 03:27:52 -04:00
Zach Riggle fc2032e830 Add support for aarch64-linux 2015-06-10 23:11:48 -04:00
Zach Riggle cbcf23c70d Fail disassembly gracefully 2015-06-10 17:32:53 -04:00
Zach Riggle 1bc94ccc58 Fix doctests 2015-06-10 16:18:40 -04:00
Zach Riggle 347ab75af5 Add parens so ARM doesnt shit itself 2015-06-10 15:36:04 -04:00
Zach Riggle 72768d8b4a Fix doctest 2015-06-10 15:28:07 -04:00
Zach Riggle d3a3359c77 Save pretty name of things passed through constants.eval 2015-06-10 15:27:29 -04:00
Jonas Rudloff b0c3abb23c fix doctest to make travis happy 2015-06-10 20:27:22 +02:00
Jonas Rudloff a3d37d6287 fixed #553 2015-06-10 20:09:16 +02:00
Jonas Rudloff 62fedb388b fixed #552 2015-06-10 19:55:04 +02:00
Zach Riggle 20ea1e0a06 Add docs 2015-06-09 12:53:57 -04:00
Zach Riggle c3b006ef50 Add docs 2015-06-09 12:53:18 -04:00
Zach Riggle e082d441d2 Fix doctest 2015-06-09 12:51:46 -04:00
Zach Riggle 14093c2d54 Fix doctest 2015-06-09 12:51:37 -04:00
Zach Riggle c21426e3a0 Don't modify original representation 2015-06-09 12:49:21 -04:00
Zach Riggle af466424ee Don't modify original representation 2015-06-09 12:49:04 -04:00
Zach Riggle 3c188bc27e Enable disassembly with stripping the offsets and columns 2015-06-09 12:47:08 -04:00
Zach Riggle 6034b2b312 Enable disassembly with stripping the offsets and columns 2015-06-09 12:45:06 -04:00
Zach Riggle ff5f634a76 Add sockaddr changes from upstream 2015-06-09 12:04:08 -04:00
Zach Riggle af9fe4c0d2 Merge pull request #26 from binjitsu/constants
Use complex constants
2015-06-08 14:17:28 -04:00
Zach Riggle 9b9ae29a71 Fix arm shellcode 2015-06-08 14:01:03 -04:00
Zach Riggle 62b3964225 Fix thumb shellcode 2015-06-08 13:56:42 -04:00
Zach Riggle cec172ee9b Use complex constants 2015-06-07 02:35:28 -04:00
Zubin Mithra b349eaff6f Add in ARM support for SROP 2015-06-06 12:24:41 +02:00
Zubin Mithra dfa96abb09 Merge branch 'master' of http://github.com/binjitsu/binjitsu 2015-06-06 03:40:16 +02:00
Zach Riggle 8922d369e9 Allow lookups of libraries running under qemu-user by walking /etc/qemu-binfmt 2015-06-01 12:59:36 -07:00
Zach Riggle 043232336f Added docs for ELF.libc 2015-06-01 12:40:08 -07:00
Zach Riggle ffa321103b Add automatic extraction of libc.so 2015-06-01 12:39:01 -07:00
Zach Riggle 4ac5bce80e Enable .libs detection for alternate-architecture libraries when run via qemu-user. 2015-06-01 12:35:44 -07:00
Morten Brøns-Pedersen dfe4d2c280 Merge pull request #548 from Gallopsled/ua-license
(hopefully) fixes #547
2015-05-30 09:55:59 +02:00
Morten Brøns-Pedersen d5dae58737 Update LICENSE.txt
Removed irrelevant information.
2015-05-30 09:55:34 +02:00
Zach Riggle 9cf7e8f7e7 More more more verbose 2015-05-29 14:38:47 -04:00
Zach Riggle b7731b32e5 Verbose logging for Shippable troubleshooting 2015-05-29 14:37:14 -04:00
Zach Riggle eec0b68b52 Update docs [skip ci] 2015-05-29 14:34:45 -04:00
Zach Riggle e1331055ae Detect if current user is travis, for Shippable 2015-05-29 14:33:28 -04:00
Morten Brøns-Pedersen b9bf5982f6 (hopefully) fixes #547 2015-05-29 09:35:42 +02:00
Zach Riggle 2b909824b8 Compress debug send/recv output if it's the same byte 2015-05-28 17:56:06 -04:00
Morten Brøns-Pedersen f97045be7c added pwnlib.util.packing.dd inspired by the command line util of the same name 2015-05-28 10:49:17 +02:00
eQuiNoX__ f9d080141f Commit code that sets the esp to the next gadget 2015-05-27 12:38:31 +02:00
Jonas Rudloff ee0ace9aeb Merge pull request #544 from binjitsu/dealarm
Add dealarm_shell
2015-05-27 10:54:11 +02:00
Jonas Rudloff 31e93128d1 Merge pull request #528 from binjitsu/libcdb
Add code for libcdb lookups
2015-05-26 17:21:59 +02:00
Morten Brøns-Pedersen 27daa1291a Merge pull request #545 from Gallopsled/fit-docs
updated docstring for `pwnlib.util.packing.fit` and added a check tha…
2015-05-26 14:39:27 +02:00
Morten Brøns-Pedersen 2b4ba2e31c updated docstring for pwnlib.util.packing.fit and added a check that the data actually fits 2015-05-26 09:33:50 +02:00
Zach Riggle 00d9460422 Show a better error message when connecting to an unknown host 2015-05-25 16:15:27 -04:00
Zach Riggle 734591dd84 Add dealarm_shell 2015-05-22 20:50:13 -04:00
Zach Riggle 525f35c143 Fix/optimize dealarm 2015-05-22 20:50:01 -04:00
Zach Riggle b36bd7ace5 Add dealarm_shell 2015-05-22 20:46:19 -04:00
Zach Riggle 6d2ac263df Compress debug send/recv output if it's the same byte 2015-05-22 20:32:46 -04:00
Zach Riggle bb5ea7677c Fix sockaddr, optimize off some zero bytes 2015-05-22 19:54:46 -04:00
Zach Riggle 866f4762ef Remove lookup in .resolve(), add .libc() 2015-05-21 13:30:03 -04:00
Jonas Rudloff 1d251adec5 Merge pull request #523 from binjitsu/push-fix
Fix push() templates
2015-05-21 11:39:58 +02:00
Jonas Rudloff 0fd0677af0 fix travis 2015-05-21 10:51:33 +02:00
Jonas Rudloff a3d7215162 Merge pull request #500 from binjitsu/gdb-enhancements
Add gdb.debug_shellcode and fix cross-arch debugging with qemu-user
2015-05-21 10:08:08 +02:00
Jonas Rudloff 6f23067894 Merge pull request #534 from Gallopsled/terminal-detection
Changed `util.misc.run_in_terminal` to first look for tmux, and then X11
2015-05-21 10:06:46 +02:00
Jonas Rudloff 77a59681b9 Merge pull request #517 from binjitsu/complex-constants
Implement complex constants
2015-05-21 10:05:40 +02:00
Jonas Rudloff 222f0b9474 Merge pull request #535 from Gallopsled/hexdump-highlight
Hexdump highlight
2015-05-21 10:03:27 +02:00
Jonas Rudloff 64f95f5b19 Merge pull request #537 from Gallopsled/iters-exp
added ``iters.exp(s, n)`` as an alias for ``iters.product(*[s]*n)``.
2015-05-21 10:02:47 +02:00
Jonas Rudloff da0bbefb84 Merge pull request #538 from Gallopsled/packing-fit
added `util.packing.fit`
2015-05-21 10:01:49 +02:00
Jonas Rudloff 4ef299a888 Merge pull request #539 from Gallopsled/ui-yesno
added `ui.yesno`
2015-05-21 10:00:47 +02:00
Jonas Rudloff 4aeea41362 Merge pull request #540 from Gallopsled/minor-term-fix
fixes some minor CRLF/LF-issues in `term.term`
2015-05-21 09:59:23 +02:00
Zach Riggle ce458c7fc0 Update docstring [skip ci] 2015-05-20 23:31:16 -04:00
Zach Riggle 329ef332b4 Fix docstring 2015-05-20 23:28:26 -04:00
Zach Riggle 5c0d5132e2 Add DynELF.libc() function 2015-05-20 23:23:55 -04:00
Zach Riggle 06fc1eecd5 Make Call() pretty printing... prettier 2015-05-20 23:21:09 -04:00
Zach Riggle 79c718aa43 Update docstring 2015-05-20 22:59:53 -04:00
Zach Riggle d99f7160bf Integrate new ROP building tools 2015-05-20 22:41:13 -04:00
Zach Riggle de4f14c5d2 Fix up call(0x1234,..) and .migrate 2015-05-20 21:52:19 -04:00
Zach Riggle b064c45d5e Add "cat" shellcode 2015-05-20 21:48:00 -04:00
Morten Brøns-Pedersen fa8df31c4f removed a print-statement left from debugging 2015-05-21 01:08:57 +02:00
Morten Brøns-Pedersen 9effbad62e updated doctests for pwnlib.util.packing.fit 2015-05-20 23:50:23 +02:00
Morten Brøns-Pedersen 4bf8b71707 Happy now, Travis? 2015-05-20 23:48:02 +02:00
Morten Brøns-Pedersen 1b3e9984f4 fixed typo in docstring for pwnlib.util.iters.exp 2015-05-20 13:55:00 +02:00
Morten Brøns-Pedersen ceca7b5384 fixed doctest in pwnlib.util.iters.exp 2015-05-20 13:39:12 +02:00
Morten Brøns-Pedersen 156db1aea9 fixes some minor CRLF/LF-issues in term.term 2015-05-20 12:22:05 +02:00
Morten Brøns-Pedersen 26c99083bd added ui.yesno 2015-05-20 12:18:11 +02:00
Morten Brøns-Pedersen 3ae7d9ec9a added util.packing.fit 2015-05-20 12:14:58 +02:00
Morten Brøns-Pedersen 011c7d96a2 added `iters.exp(s, n) as an alias for iters.product(*[s]*n)`. 2015-05-20 12:08:59 +02:00
Morten Brøns-Pedersen 1447c361b0 Better default terminal in util.misc.run_in_terminal
Changed to detect X11 by the presence of the ``DISPLAY`` environment variable.  Also added the field `terminal` to `context`, which allows the user to specify a default terminal.
2015-05-20 11:50:49 +02:00
Zach Riggle 5064a75f1f Fix str() and dump() 2015-05-18 13:25:13 -04:00
Zach Riggle 2e4692ff22 Add log.info since it wont show up otherwise 2015-05-17 10:05:39 -04:00
Zach Riggle 3b9614a535 WIPWIPWIP 2015-05-16 07:55:49 -04:00
Zach Riggle 4acd9bc928 WIPWIPWIP 2015-05-16 00:21:54 -04:00
Zach Riggle da475754fe Enable flat(-1) 2015-05-15 18:35:54 -04:00
Zach Riggle e2ddcf2471 Dont lose any more work 2015-05-15 15:13:22 -04:00
Zach Riggle 40dae903cc Example for context and cleanliness 2015-05-13 18:13:48 -04:00
Zach Riggle eecafc6ed6 Add @LocalContext decorator 2015-05-13 18:02:43 -04:00
eQuiNoX__ 32e85f5791 We dont store the registers inside srop; we just call get_registers when we need them 2015-05-13 22:33:40 +02:00
eQuiNoX__ e58a661375 The following changes were made :-
- changed usage of "self.arch to with context.local..."
2015-05-13 22:29:26 +02:00
eQuiNoX__ 9eadd74bed get_regpos_mapping removed 2015-05-13 22:07:53 +02:00
eQuiNoX__ 525650bc5b The following changes were made :-
- rop.py does not import _registers_* anymore; instead imports get_registers from srop.py
- rop.py now has a self.arch that is set to context.arch inside __init__
- (_registers_32, _registers_64) => (_registers_i386, _registers_amd64)
- get_registers and get_regpos_mapping added in
- _initialize_values now handles all archs
- get_stackpointer_index changed to get_spindex; made cleaner
- get_frame made cleaner
2015-05-13 22:06:57 +02:00
Morten Brøns-Pedersen c9e5a01605 Updated pdh to support highlighting of byte sequences 2015-05-13 15:21:41 +02:00
Morten Brøns-Pedersen cd4a193404 pwnlib.util.fiddling.hexdump can now highlight byte sequences (with wildcards) 2015-05-13 15:20:31 +02:00
Morten Brøns-Pedersen 94e0064c19 Changed util.fiddling.hexdump_iter to take a file object instead of a string. This massively speeds up phd <file> | less for huge files. 2015-05-13 11:06:38 +02:00
Zach Riggle d3e73d231b Merge pull request #16 from eQu1NoX/master
Initial set of commits integrating SROP with ROP
2015-05-13 00:19:22 -04:00
eQuiNoX__ d7933badf2 Add in the skeleton of integrating SROP with ROP
So now we can populate the accumulator register with the sigreturn syscall number

rop.py now finds "int 0x80" instructions.

Adding in more to srop skeleton; integrating with finding int 0x80 instruction

The following changes were made :-
- s/find/index correction for list
- required imports added in
- None as argument removed

Now generates srop frames whenever function cannot be resolved

Add in code that pivots only if the gadget is not a "pop"

dump is now modified to print out the register information from srop

Uses constants.linux.i386 for syscall numbers now

Added in some exception handling code

Rely on constants to get us the right syscall number based on context.arch

The following changes were made :-
- getattr when getting syscall_number now returns None by default
- ropgadget now looks for syscall and sysenter
- added in getattr("syscall") and getattr("sysenter")

rop.search now returns a namedtuple

The following changes were made :-
1. self.int80, self.syscall and self.sysenter now return namedtuples.
2. We have functions self.raw_address and self.raw_data to specify
   how the raw values that are added in, need to be interpreted so that
   the chain can be built accordingly.

Added in a function _get_syscall_inst that returns the address of a syscall instruction

Checking if travis builds it properly/

The following changes were made :-
- Change the body of _get_syscall_inst, make it cleaner
- Add in a self._syscall_instruction that caches the address of
  a syscall instruction that was found

Removed raw_address and raw_data; modified srop implementation to use raw()

Cleanup getattr

Now the stack pointer is modified so that we can continue constructing the ROP chain if rop.base is specified

No need of enumerate; removed

doctest for rop-srop integration added in
2015-05-13 03:53:03 +02:00
Zach Riggle e4d44c54d8 Detect fortify-source 2015-05-12 02:08:35 -04:00
Zach Riggle c5ec095b7f Fix debugging of thumb shellcode 2015-05-09 15:42:06 -07:00
Zach Riggle 476e8991ca Fix debugging of thumb shellcode 2015-05-09 15:37:58 -07:00
Zach Riggle 6e4f616c44 Allow debugging of thumb shellcode 2015-05-09 15:34:33 -07:00
Zach Riggle ffc44ece88 Fix write-ups link
Closes #15
2015-04-28 17:20:35 -04:00
Jonas Rudloff 0dafc5d02d Merge pull request #524 from binjitsu/packing-autodetect-sign
Enhancements to packing to allow auto-detection of sign, as well as unpack bytearray objects
2015-04-28 13:50:51 +02:00
Jonas Rudloff 3807889f33 Merge pull request #530 from teroz/master
Added clarity to the pwnlib.cyclic example
2015-04-28 09:37:18 +02:00
Zach Riggle 40db24653c Merge pull request #13 from eQu1NoX/master
Adding in doctests + renaming x86/x64 to i386/amd64
2015-04-27 11:24:49 -04:00
Jonas Rudloff 421ca7f82e Merge pull request #532 from Gallopsled/br0ns-fix-531
Quickfix for bpython
2015-04-27 11:09:53 +02:00
Zubin Mithra 9908afd495 Adding in docs for sphinx
Dropping the doctest ifmain statements

Correct underline in rst

Add testsetup to srop.rst

Now uses packing.pack instead of struct.pack

Added in context.arch information to srop.rst and srop.py doctest

Added "context.clear()" to the doctest

Cleaned up _reg_pos_mapping up a bit

Corrected reference link

Replace "print repr()" with "unpack_many"

Added in import to srop.rst
2015-04-27 10:24:26 +02:00
Morten Brøns-Pedersen 4e00935630 Quickfix for bpython
Fixes #531
2015-04-26 21:17:34 +02:00
eQuiNoX__ f81993c303 The following changes were made :-
1. Added in doctests for i386 and amd64.
2. Renamed x86/x64 to i386/amd64.
2015-04-26 13:56:41 +02:00
Zach Riggle 3b9e9bf3a0 Merge pull request #9 from eQu1NoX/master
Initial commit adding in SROP support for x86 and x64
2015-04-25 13:32:17 -04:00
Zach Riggle ebef41df05 Fix the architecture for mips646 ELFs 2015-04-25 10:26:33 -07:00
teroz 764da5af10 Added clarity in the pwnlib.cyclic example
modified:   docs/source/intro.rst
2015-04-25 13:06:21 +02:00
eQuiNoX__ 9f5c2e77b8 Renamed the registers a bit, made the example a bit more complete 2015-04-25 08:15:16 +02:00
eQuiNoX__ 116491c54c Rename registers, add references 2015-04-25 08:09:04 +02:00
eQuiNoX__ 285a370378 Add comments for the SigreturnFrame class 2015-04-25 07:41:53 +02:00
Zubin Mithra 9da1c64513 Removed unused imports 2015-04-24 20:54:56 +02:00
Zubin Mithra 8845115b1f Initial commit for adding in SROP support for x86 and x64 2015-04-24 20:50:26 +02:00
Zach Riggle 6f22a11559 Make ELF work with mips64 binaries 2015-04-24 06:00:09 -07:00
Zach Riggle b7ce1b4ccd Fix mips64 2015-04-24 05:27:23 -07:00
Zach Riggle 19f4009b6e Switch from single-arg "arch" to local context 2015-04-24 04:05:29 -07:00
Zach Riggle 17b0d4efe6 Remove redundant info from checksec, realign fields 2015-04-23 21:49:04 -07:00
Zach Riggle 2077846087 Fix newlines at EOF 2015-04-21 02:43:08 -07:00
Zach Riggle b43be94aaa Add undocumented flag to prevent ASLR from being disabled 2015-04-18 19:58:35 -04:00
Zach Riggle 8a671ac1a7 Switch to GitLab since they have a 10GB quota. Add error handling :) 2015-04-17 01:22:44 -04:00
Zach Riggle 8e799d0516 Switch to GitLab since they have a 10GB quota. Add error handling :) 2015-04-17 01:22:30 -04:00
Zach Riggle c503c9c7d5 Respect timeout for wget 2015-04-16 14:27:47 -04:00
Zach Riggle 59537cac6d Add missing architectures 2015-04-16 01:22:03 -04:00
Zach Riggle 34bfd261ca Fix unknown architectures throwing exceptions on GOT/PLT failure. Hide RWX comment if NX is disabled. 2015-04-16 01:22:03 -04:00
Zach Riggle f752a5d474 Miscellaneous bug fixes and enhancements from Binjitsu which are required for this feature to work. 2015-04-16 01:22:03 -04:00
Zach Riggle ad05fda608 Add missing architectures 2015-04-16 01:18:07 -04:00
Zach Riggle 402e324725 Fix unknown architectures throwing exceptions on GOT/PLT failure. Hide RWX comment if NX is disabled. 2015-04-16 01:08:01 -04:00
Zach Riggle d81e63f03d Remove unneeded fields 2015-04-16 00:25:55 -04:00
Zach Riggle 7d3147958f Add code for libcdb lookups 2015-04-16 00:25:39 -04:00
Zach Riggle fcd04a5c91 Add code for libcdb lookups 2015-04-16 00:14:49 -04:00
Zach Riggle 9d9b880954 i386 vs x86 fixup 2015-04-15 23:52:32 -04:00
Zach Riggle 38097d724f Add .buildid property to ELF 2015-04-15 20:58:13 -04:00
Zach Riggle 230cdafe31 ASM => ELF 2015-04-11 15:38:13 -07:00
Zach Riggle 27b7f15c9c Fix VMA for ASM 2015-04-11 15:38:13 -07:00
Zach Riggle 33ca18f931 Tell user if there are RWX segments 2015-04-09 21:05:14 -04:00
Zach Riggle 5f8ae0ef2d Allow passing in an ELF object or just a path 2015-04-09 20:52:38 -04:00
Zach Riggle 821b08240a Enable passing arguments to the marshalled function; use the same naming scheme as subprocess and pwnlib.tubes.process 2015-04-06 04:34:22 -04:00
Zach Riggle 40ea374001 Enable marshalling simple functions to the remote Python instance 2015-04-05 23:41:53 -04:00
Zach Riggle 7399918a54 By default, recv an ~= infinite number of lines 2015-04-05 23:41:42 -04:00
Zach Riggle 367af48420 Evidently whatever android-ndk uses to build binaries zeroes out sh_info for rel.plt 2015-04-02 17:56:55 -04:00
Zach Riggle 3745f6fd03 Round up mmap size; optionally skip loop after recv 2015-03-31 08:23:35 -04:00
Zach Riggle f643bf8722 Remove ~5 bytes from stager 2015-03-31 07:51:48 -04:00
Zach Riggle 580b16230e Add connect doctest 2015-03-31 07:51:39 -04:00
Zach Riggle ee9ffb7491 Revert "Enable is_register for all architectures"
This reverts commit 475c1d407f.
2015-03-31 06:08:52 -04:00
Zach Riggle 2aa6c1f015 Try to remove "Remote debugging from host" line 2015-03-31 06:07:02 -04:00
Zach Riggle 90b8e50d07 Fix argument order for gdb.debug to mimick gdb.attach 2015-03-31 05:23:13 -04:00
Zach Riggle 6802a2c17b Fix bug in gdb.debug which breaks "execute" argument 2015-03-31 05:18:52 -04:00
Zach Riggle 2faeefeaf0 Fix bug in gdb.debug which breaks "execute" argument 2015-03-31 05:17:19 -04:00
Zach Riggle 24e70378ca Enable using gdbserver for debug_shellcode; add run_elf helper 2015-03-30 14:39:03 -04:00
Zach Riggle b7364fe8ac Add context.native helper to determine if the target can be run without QEMU 2015-03-30 14:32:15 -04:00
Zach Riggle 475c1d407f Enable is_register for all architectures 2015-03-30 14:26:43 -04:00
Zach Riggle c9f0ec84d1 Output to ELF for shellcraft 2015-03-30 14:08:31 -04:00
Zach Riggle 8b1a3e73a1 Merge pull request #6 from cebrusfs/master
Use MOV and SYSCALL templates in acceptloop_ipv4 and mprotect_all
2015-03-29 18:13:13 -04:00
Zach Riggle c472d573f7 Update CONTRIBUTING.md 2015-03-29 17:59:56 -04:00
Zach Riggle 10ed1a2a68 Update CONTRIBUTING.md 2015-03-29 17:59:48 -04:00
Zach Riggle 8ec7faf879 Update CONTRIBUTING.md 2015-03-29 17:59:41 -04:00
Jonas Rudloff 94a07cc48c Merge pull request #525 from RobertLarsen/master
Added sockaddr structure generating function
2015-03-27 12:28:40 +01:00
Robert Larsen a7c902ec37 Added docstring. 2015-03-27 00:28:22 +01:00
Robert Larsen 17c9439536 Moved sockaddr function from packing to net. 2015-03-27 00:03:17 +01:00
Robert Larsen ccd225f257 Removed unneeded import. 2015-03-26 23:46:53 +01:00
Robert Larsen 974b0e7543 Added sockaddr code to i386 connect so that it also supports both ipv4
and ipv6.
2015-03-26 23:46:17 +01:00
Robert Larsen 61e3d3bf18 Moved sockaddr code to packing. Probably not the right place for it. 2015-03-26 23:09:57 +01:00
Zach Riggle 6278f9a94e Linux setup should install openssh server 2015-03-26 17:23:47 -04:00
Zach Riggle 25900adf72 Fix push() templates 2015-03-26 17:22:36 -04:00
Zach Riggle fa62f18378 Enhancements to packing to allow auto-detection of sign, as well as unpack bytearray objects
(cherry picked from commit 6a3e2591c29d5a176136b1e1e16b63de5b64160c)
2015-03-26 15:48:49 -04:00
Jonas Rudloff dd00e4cfef Merge pull request #520 from Gallopsled/memleak-struct
Memleak can now leak whole structures
2015-03-26 18:26:17 +01:00
Zach Riggle b8cc1cc831 Multiple enhancements to SSH
- Request a TTY by default, and disable echoing
	- This turns off stdout buffering
	- Only negative effect is that you lose Ctrl+C
- Further improvements to ssh.process to allow e.g. file handle dup'ing
- Greatly improved documentation of members/attributes
- Added .pid attribute to ssh_channel
- Uses SCP by default, falls back to old method of cat'ing files
- Switched to use exclusively SHA256 instead of multiple hashes.
	- We lose no flexibility or support
- Sorted imports
2015-03-26 02:16:00 -04:00
Zach Riggle de7d161a87 Fix push() templates 2015-03-26 02:12:47 -04:00
Zach Riggle 09d053be0f Update CONTRIBUTING.md 2015-03-25 15:44:10 -04:00
MengHuan Yu 9536b17e5a Fix the coding style in 2 shellcraft examples
Use 4 space indent in 'i386/linux/acceptloop_ipv4.asm' and
'i386/linux/mprotect_all.asm'

BUG=None
TEST=None
2015-03-26 01:41:50 +08:00
MengHuan Yu 2aeda2c993 Use PUSH template in acceptloop_ipv4
BUG=None
TEST=confirmed the behavior by strace.
2015-03-26 01:36:21 +08:00
MengHuan Yu 17c3a27861 Use MOV and SYSCALL templates in some shellcode
In this commit, I only fix 'i386/linux/acceptloop_ipv4.asm' and
'i386/linux/mprotect_all.asm'.

BUG=None
TEST=confirmed the behavior is still the same under
gdb and strace.
2015-03-25 23:48:20 +08:00
Robert Larsen 5214be49f0 Added function for generating a sockaddr structure for shellcodes. 2015-03-24 23:57:00 +01:00
Jonas Rudloff f5d3b4aac0 Merge pull request #512 from RobertLarsen/thumb-connect
Added connect shellcode for thumb/linux.
2015-03-24 21:02:32 +01:00
Jonas Rudloff eafdc0a13e Merge pull request #496 from binjitsu/asm-enhancements
General enhancements to ASM, add make_elf
2015-03-24 20:05:18 +01:00
Jonas Rudloff 007f362dc1 Merge pull request #497 from binjitsu/context-binary
Add context.binary helper
2015-03-24 20:03:46 +01:00
Jonas Rudloff b7a98c9971 Merge pull request #516 from binjitsu/arm-syscall
Arm syscall
2015-03-24 20:02:38 +01:00
Jonas Rudloff 71c6f3339a Merge pull request #515 from RobertLarsen/thumb-stager
Thumb stager
2015-03-24 20:02:29 +01:00
Jonas Rudloff c7890f79c9 Merge pull request #513 from binjitsu/this-file-is-outdated
Remove install_local.sh since it's outdated
2015-03-24 20:02:15 +01:00
Zach Riggle 36f1fc32e0 Ensure textual levels e.g. "debug" are translated to logging.DEBUG 2015-03-24 14:29:03 -04:00
Jonas Rudloff a2bab1ff6f Merge pull request #494 from binjitsu/tube-packing-shortcuts
Tube packing shortcuts
2015-03-24 18:54:23 +01:00
Jonas Rudloff b092b171f8 fixed documentation and whitespace 2015-03-24 18:40:41 +01:00
Jonas Rudloff 20f4b92fd0 Merge pull request #504 from binjitsu/shellcraft-enhancements-mov
Multiple enhancements to shellcraft
2015-03-24 14:29:51 +01:00
Jonas Rudloff 8c73bdc17d Merge pull request #491 from binjitsu/asm-vma-fix
Fix VMA for ASM
2015-03-24 14:19:57 +01:00
Jonas Rudloff a74aea025b Merge pull request #514 from binjitsu/shellcraft-completion-requires-sudo
Don't install shellcraft completion by default.  It requires sudo.
2015-03-24 14:19:42 +01:00
Jonas Rudloff 4c78c1674f Memleak can now leak whole structures 2015-03-24 12:22:42 +01:00
Robert Larsen 74fc4d0e22 Removed comment. 2015-03-23 21:50:37 +01:00
Robert Larsen 1b5145792b Use arm.syscall 2015-03-23 21:49:27 +01:00
Zach Riggle 9ca377c61c Multiple enhancements to shellcraft
- Refactor i386/amd64 mov code to use new register info
	- Mostly this is to clean up the code and remove things like bigger[0][-1]
- A small enhancement to the ARM shellcode
- Resolve hosts for i386.linux.connect
- Add arm.trap
- Add gethostbyname to i386.connect
2015-03-23 02:56:52 -07:00
Zach Riggle 0a6f1e540e Update README.md 2015-03-23 02:39:22 -04:00
Zach Riggle 2caafc879f Update README.md 2015-03-23 02:39:01 -04:00
Zach Riggle 425385e135 Mark .text area as RWX so that self-modifying code can be tested 2015-03-22 23:28:32 -07:00
Zach Riggle f30f2093b0 Less than, not shift 2015-03-22 23:22:47 -07:00
Zach Riggle fadfa11214 *Actually* Add mapping for i686 / 32-bit Linux 2015-03-22 23:18:35 -07:00
Zach Riggle 030407d8e7 Don't close e.g. stdin if dup'ing to it 2015-03-22 23:18:12 -07:00
Zach Riggle 0c513cb06b Mark .text area as RWX so that self-modifying code can be tested 2015-03-22 22:22:36 -07:00
Zach Riggle 2e0d7b8671 Fix output redirection based on filenames 2015-03-22 17:03:02 -07:00
Zach Riggle 14130f3b40 Implement complex constants
- Keep their name so that we have relevant info in shellcode
- Can be manipulated as integers as you'd expect
- Update generation scripts to emit new-style constants
2015-03-22 16:27:05 -07:00
fhare d761e78d91 Add syscall shellcode for arm.
(cherry picked from commit eb8a166659)
2015-03-22 15:54:25 -07:00
fhare cc9fc0b6b1 Add register validation and constant substitution in mov shellcode for arm.
(cherry picked from commit 16c7954e0a)
2015-03-22 15:54:19 -07:00
Zach Riggle 5004787cb9 Add mapping for i686 / 32-bit Linux 2015-03-22 14:58:58 -07:00
Robert Larsen 8021d2bc3c Branch to r8 instead of moving it. 2015-03-22 22:13:28 +01:00
Zach Riggle 1a55837bff Update .travis_install.sh 2015-03-22 06:07:39 -04:00
Zach Riggle c8c9e5d1ea Update .travis_install.sh 2015-03-22 06:07:19 -04:00
Zach Riggle 7387ed55a5 Don't install shellcraft completion by default. It requires sudo. 2015-03-22 05:26:09 -04:00
Zach Riggle 5e601ebd70 Remove install_local.sh since it's outdated 2015-03-22 05:23:59 -04:00
Robert Larsen f51feb0c85 Set condition flags. 2015-03-22 00:33:24 +01:00
Robert Larsen 7c1567bbce No error label. 2015-03-22 00:04:54 +01:00
Robert Larsen 8b823c813d Added stager for thumb/linux. 2015-03-22 00:03:02 +01:00
Zach Riggle 989e7694d8 Fix push and pushstr for ARM 2015-03-21 17:12:45 -04:00
Robert Larsen ce5052b415 Added connect shellcode for thumb/linux. 2015-03-21 21:47:44 +01:00
Zach Riggle f753382a4d Merge remote-tracking branch 'remotes/fhare/master' 2015-03-21 16:44:10 -04:00
Zach Riggle e5b3baae84 Keep link to binary in the cache 2015-03-21 16:32:32 -04:00
Jonas Rudloff 691fe6f1bc Merge pull request #511 from RobertLarsen/amd64-connect
Amd64 connect
2015-03-21 11:27:11 +01:00
Robert Larsen 0429c8c5c8 Added connect shellcode for amd64/linux. 2015-03-21 00:04:14 +01:00
Zach Riggle 1e8bf3e0e9 Remove share directory 2015-03-20 17:17:46 -04:00
Zach Riggle 3fe3502b30 Superficial changes to test CI build time 2015-03-20 17:09:57 -04:00
Zach Riggle 9905ba6605 Try absolute path 2015-03-20 17:09:08 -04:00
Zach Riggle 827d4e5f09 Superficial changes to test CI build time 2015-03-20 17:06:02 -04:00
Zach Riggle f8a64a69c1 Superficial changes to test CI build time 2015-03-20 17:03:15 -04:00
Zach Riggle 50451ceda6 Attempt caching site-packages so we dont rebuild capstone 2015-03-20 17:00:34 -04:00
Zach Riggle 1aff50166a Enable caching of binutils 2015-03-20 16:55:49 -04:00
Zach Riggle a8d02b5108 Enable caching of pip dependencies 2015-03-20 16:07:40 -04:00
Zach Riggle a46e7fdc06 Use container-based Travis CI so that it builds faster 2015-03-20 16:00:25 -04:00
Kristoffer Søholm e87f998c57 Merge pull request #509 from RobertLarsen/fix-doc
Fixed doc.
2015-03-20 17:14:15 +01:00
Robert Larsen 32162a734e Merge branch 'master' of https://github.com/RobertLarsen/pwntools 2015-03-20 15:03:15 +01:00
Robert Larsen 69fe228fd6 Merge branch 'master' of https://github.com/RobertLarsen/pwntools into fix-doc 2015-03-20 15:03:00 +01:00
Robert Larsen 28721dc876 Fixed doc. 2015-03-20 14:59:33 +01:00
Robert Larsen 881590dd3b Added stager for amd64/linux. 2015-03-20 14:56:38 +01:00
Robert Larsen 4905647807 Merge branch 'master' of https://github.com/Gallopsled/pwntools 2015-03-20 14:35:07 +01:00
Robert Larsen 470df7fa1e Added stager for amd64/linux. 2015-03-20 14:33:02 +01:00
Kristoffer Søholm 1bb9482c91 Merge pull request #508 from RobertLarsen/amd64-bindsh
Added bindshell shellcode for amd64/linux.
2015-03-20 13:39:24 +01:00
Kristoffer Søholm 25cff5f92b Merge pull request #492 from binjitsu/arm-mov-reg-reg
Enable mov reg, reg for ARM
2015-03-20 13:20:03 +01:00
Kristoffer Søholm 116df98a5e Merge pull request #493 from binjitsu/bugfix-pause
Fix bug in pause()
2015-03-20 13:17:10 +01:00
Robert Larsen 08fe08cd55 Merge branch 'master' of https://github.com/Gallopsled/pwntools 2015-03-20 13:08:09 +01:00
Kristoffer Søholm ed5229da8b Merge pull request #505 from RobertLarsen/amd64-findpeersh
Amd64 findpeersh
2015-03-20 12:57:54 +01:00
Robert Larsen aad286fbb4 Merge branch 'master' of https://github.com/Gallopsled/pwntools 2015-03-20 12:06:58 +01:00
Robert Larsen ef46969bce Merge branch 'amd64-bindsh' 2015-03-20 11:46:56 +01:00
Robert Larsen f1bd02e571 Merge branch 'amd64-findpeersh' 2015-03-20 11:46:34 +01:00
Robert Larsen 0da1aca8bb Fixed doc. 2015-03-20 11:46:12 +01:00
Robert Larsen 4b869e408b Added bindshell shellcode for amd64/linux. 2015-03-20 11:26:52 +01:00
Zach Riggle 9cdd76cde2 General enhancements to ASM, add make_elf
- Sorted imports
- We can now build whole, compact ELF files.
    - This is useful for e.g. ioarm level 1
- Various fixes for endianness support, bit sizes when assembling
- Don't catch KeyboardInterrupt
2015-03-20 05:07:15 -04:00
Zach Riggle 15426e410f Add context.binary helper 2015-03-20 05:06:35 -04:00
Robert Larsen ed1eaf2a37 Merge pull request #486 from zachriggle/patch-3
Change IRC channel to #pwntools
2015-03-20 09:50:29 +01:00
Robert Larsen 5c8f64e5f6 Merge pull request #429 from zachriggle/patch-1
Update LICENSE-pwntools.txt
2015-03-20 09:49:53 +01:00
Robert Larsen 6c44b36750 Merge pull request #495 from binjitsu/elf-arch-fixes
Various enhancements to ELF
2015-03-20 09:43:29 +01:00
Robert Larsen 83da6ef918 Document constant. 2015-03-20 09:22:44 +01:00
Robert Larsen a0e18aa58a Set the length of the address structure. 2015-03-20 09:16:05 +01:00
Zach Riggle dfcf26f37a Use setsid instead of setpgrp to capture output to /dev/tty 2015-03-19 17:16:35 -04:00
Zach Riggle 50ac72d8eb Use setsid instead of setpgrp to capture output to /dev/tty 2015-03-19 17:15:37 -04:00
Robert Larsen ce9f47a009 Closer to working solution. 2015-03-19 16:00:32 +01:00
Robert Larsen e16d1e2883 Added file for implementing findpeer shellcode. 2015-03-19 00:07:30 +01:00
Robert Larsen 6e8940f051 Added template for implementing the shellcode. 2015-03-19 00:05:58 +01:00
fhare eb8a166659 Add syscall shellcode for arm. 2015-03-18 20:11:23 +01:00
fhare 16c7954e0a Add register validation and constant substitution in mov shellcode for arm. 2015-03-18 20:11:23 +01:00
Zach Riggle f0c4d5814a No isort 2015-03-18 14:33:07 -04:00
Zach Riggle d2f0cec56d Maybe now travis will be happy? 2015-03-17 23:19:16 -04:00
Zach Riggle 2b163fb7fb Sort imports 2015-03-17 19:01:34 -04:00
Zach Riggle b9c581b78c Revert i386 mov changes temporarily 2015-03-17 12:12:06 -07:00
Zach Riggle 290f17a408 Add optimization for values which are negatable 2015-03-18 14:49:49 -04:00
Zach Riggle f22537027f Fix bug in __repr__ and make mov recursive 2015-03-18 14:49:44 -04:00
Zach Riggle 342cf97099 Enhance asm and shellcraft with auto-debugging; add checksec command-line 2015-03-16 22:32:46 -07:00
Zach Riggle 5ddb4f4bda Add gdb.debug_shellcode and fix cross-arch debugging with qemu-user 2015-03-16 21:40:26 -07:00
Zach Riggle 9e2901e70f Merge remote-tracking branch 'gallopsled/master'
Conflicts:
	README.md
	pwn/toplevel.py
	pwnlib/__init__.py
	pwnlib/commandline/shellcraft.py
	pwnlib/shellcraft/__init__.py
	pwnlib/tubes/ssh.py
	pwnlib/util/iters.py
2015-03-16 21:38:57 -07:00
Zach Riggle 98c5b18e58 Enhance functionality in process
- Make stdout a PTY
	- This disables buffering on stdout
- Add options to specify how stdin/stdout/stderr are created
- Expose preexec_fn
- Protect the user from common Python-specific pitfalls
	- e.g. argv elements cannot contain or even end with '\x00'
2015-03-16 20:39:26 -07:00
Zach Riggle d38deb5ae7 Fix imports 2015-03-16 20:13:07 -07:00
Zach Riggle 8e14c3d488 Add context.binary helper 2015-03-16 20:09:49 -07:00
Zach Riggle 820c455b1a Various enhancements to ELF
- Better documentation
- Remove generally unused fields of checksec
- Better support for uncommon architectures
2015-03-16 19:09:49 -07:00
Zach Riggle 19fb739d24 Fix architectures, add more architectures, add better detection for GOT and PLT 2015-03-16 19:09:07 -07:00
Zach Riggle 2784ea58c9 Add mov reg,reg noop 2015-03-16 18:37:14 -04:00
Zach Riggle 7c9638b6df Enable mov reg, reg for ARM 2015-03-16 18:34:33 -04:00
Kristoffer Søholm 34767b08ef Merge pull request #488 from binjitsu/arch
Add missing architecture constants
2015-03-16 23:24:57 +01:00
Zach Riggle 2c5125a74c Add tube.flat
Conflicts:
	pwnlib/tubes/tube.py
2015-03-16 15:22:32 -07:00
Zach Riggle 143fca406a Add packing shortcuts
Conflicts:
	pwnlib/tubes/tube.py
2015-03-16 15:22:12 -07:00
Zach Riggle 0174b33714 Fix bug in pause() 2015-03-16 15:20:25 -07:00
Zach Riggle 7a1d62f2fb Fix bug in pause() 2015-03-16 15:19:58 -07:00
Zach Riggle 6d806cede3 Add tube.flat 2015-03-16 15:19:45 -07:00
Zach Riggle 41c7aeda31 Fix VMA for ASM 2015-03-16 16:47:01 -04:00
Zach Riggle 1fc1406895 Fix leak.raw 2015-03-15 05:32:15 -07:00
Zach Riggle 008b013542 Add packing shortcuts 2015-03-14 19:35:49 -07:00
Zach Riggle e485e5bc93 Add missing architecture constants 2015-03-13 10:44:55 -07:00
Zach Riggle beb07285d6 Add missing architecture constants 2015-03-13 10:41:16 -07:00
Zach Riggle 9a87c2032d Change IRC channel to #pwntools 2015-03-13 12:19:56 -04:00
Mathias Svensson 32b05024d3 Merge pull request #482 from Gallopsled/bruteforce_bugfix
Fixed bug in total_iterations calculation
2015-03-13 01:28:39 +01:00
Kristoffer Søholm 69023995d0 Fixed bug in total_iterations calculation 2015-03-12 20:16:42 +01:00
Kristoffer Søholm 31242554eb Merge pull request #461 from StevenVanAcker/master
multithreaded bruteforcing + bugfixes
2015-03-12 20:08:29 +01:00
Kristoffer Søholm eefe307724 Merge pull request #481 from RobertLarsen/cyclic_length
Made cyclic respect the '--length' argument when looking up.
2015-03-12 19:30:43 +01:00
Robert Larsen f80acf8437 Made cyclic respect the '--length' argument when looking up. 2015-03-12 14:47:37 +01:00
Zach Riggle 4fa6cc0649 Remove link info, put arch on one line 2015-03-12 00:52:06 -07:00
Zach Riggle c825e43ff2 Add linked/static, remove RUNPATH and RPATH if they're OK since it has never been useful 2015-03-12 00:49:44 -07:00
Zach Riggle 506815533a Streamline checksec 2015-03-12 00:24:28 -07:00
Zach Riggle b9951de394 Add documentation to ELF fields 2015-03-12 00:23:14 -07:00
Zach Riggle ca8f0b2f80 Add more info to checksec, and add bits as a property 2015-03-12 00:22:07 -07:00
Zach Riggle a39b9ef25b Add endianness info to checksec script 2015-03-12 00:17:22 -07:00
Zach Riggle 3cfbf0793d Add endianess to ELF 2015-03-12 00:16:41 -07:00
Zach Riggle fced987465 Add checksec command-line script 2015-03-12 00:12:42 -07:00
Zach Riggle 2530b1c586 Make isort happy 2015-03-12 00:02:17 -07:00
Zach Riggle 477d0f54bf Fix arguments 2015-03-12 00:02:17 -07:00
Zach Riggle acc4f64a4b Add asm debugging 2015-03-12 00:02:17 -07:00
Zach Riggle f7c3dae4e1 Add shellcraft debugging 2015-03-12 00:02:17 -07:00
Zach Riggle 38e4ada7ce Rework a bunch of the shellcode for readability. 2015-03-12 00:02:12 -07:00
Zach Riggle 8afb2b6d89 .sendline() should be call-able by itself 2015-03-11 20:30:18 -07:00
Zach Riggle 81c9565e4c Don't wait forever for the PID to show up, handle if there's an issue 2015-03-11 20:29:18 -07:00
Zach Riggle 15f1aeaafe Logging hack for tube sub-classes defined outside of pwnlib 2015-03-09 23:40:35 -07:00
Jonas Rudloff 1ddd80c53d Merge pull request #476 from Gallopsled/autofmtstr
Automated format string explotation
2015-02-27 11:05:29 +01:00
Jonas Rudloff d1ae931728 Better heuristic for leaking elf headers on page boundaries 2015-02-27 10:55:58 +01:00
Zach Riggle 820936ccbd Update README.md 2015-02-26 19:08:07 -05:00
Mathias Svensson 5c0fafc4c9 Merge pull request #480 from binjitsu/issue-442
Fix mis-reporting of NX when there is no GNU_STACK segment
2015-02-26 22:13:36 +01:00
Zach Riggle cefac557d3 Fix mis-reporting of NX when there is no GNU_STACK segment
(cherry picked from commit a96ffc80a2)
2015-02-26 15:42:00 -05:00
Jonas Rudloff 58cc527687 Merge pull request #479 from binjitsu/pwntools-logo
Add logo
2015-02-26 21:37:36 +01:00
Jonas Rudloff ba395ab357 Merge pull request #451 from binjitsu/shellcraft-speedup
Speed up shellcraft loading and clean up code a bit
2015-02-26 21:28:46 +01:00
Jonas Rudloff dc7f4dcff5 fixed logging 2015-02-26 13:22:58 +01:00
Jonas Rudloff bb96f4982c Merge pull request #478 from binjitsu/pwntools-ssh-cwd-executable
Set +x on the directory created via ssh.set_working_directory
2015-02-26 12:56:25 +01:00
Zach Riggle 6e0852baf5 Add logo 2015-02-26 06:31:33 -05:00
Zach Riggle 6499a63bfb Add logo with text 2015-02-26 05:01:58 -05:00
Zach Riggle c2c3aec1c8 Update LICENSE-binjitsu.txt 2015-02-26 04:46:01 -05:00
Zach Riggle 70c34aab2a Update LICENSE-binjitsu.txt 2015-02-26 04:44:51 -05:00
Zach Riggle 3be0ee96a7 Add logo CC BY 2015-02-26 04:43:54 -05:00
Jonas Rudloff 7c0f23476d use pack instead of p32 2015-02-26 10:02:15 +01:00
Zach Riggle 6f8823829f Sort templates 2015-02-25 14:57:47 -05:00
Zach Riggle 71ecf70de6 Speed up shellcraft loading and clean up code a bit 2015-02-25 14:57:47 -05:00
Zach Riggle 1e062ac52b Merge branch 'pwntools' 2015-02-25 14:47:18 -05:00
Zach Riggle fb6b046d8d Merge commit '850efb5' 2015-02-25 14:42:32 -05:00
Zach Riggle b7dc9c934f Set +x on the directory created 2015-02-25 14:26:44 -05:00
Jonas Rudloff cb64e2d4aa Merge branch 'master' of github.com:Gallopsled/pwntools
Conflicts:
	pwnlib/tubes/ssh.py
2015-02-25 19:22:55 +01:00
Jonas Rudloff 8ac88d141c Merge branch 'binjitsu-ssh-run-system-rename' 2015-02-25 19:17:54 +01:00
Jonas Rudloff 8f92f07e62 Merge branch 'ssh-run-system-rename' of git://github.com/binjitsu/binjitsu into binjitsu-ssh-run-system-rename 2015-02-25 19:17:07 +01:00
Jonas Rudloff 0874e1908f fixed nbuckets -> nbucket in dynelf.py for sysv hash lookups
(cherry picked from commit c50d32d700)
2015-02-25 12:05:45 -05:00
Jonas Rudloff cbe13129db fixes bug in memleak.py
(cherry picked from commit 4a7d4fcff7)
2015-02-25 12:05:39 -05:00
Kenny 980d391b1f Fix #469 - verify search_results has items before using
(cherry picked from commit 8bd50f958c)
2015-02-25 12:05:35 -05:00
Jonas Rudloff 133d629bd3 Merge pull request #475 from Gallopsled/dynelf-fix
fix dynelf for sysv lookups
2015-02-25 13:42:39 +01:00
Jonas Rudloff 29889a00df Merge pull request #474 from Gallopsled/memleak-bug
fixes bug in memleak.py
2015-02-25 13:42:25 +01:00
Jonas Rudloff abc6360833 Update ssh.py
Use example.pwnme as hostname instead of localhost
2015-02-25 12:45:53 +01:00
Jonas Rudloff 75f48e74dd Merge pull request #444 from binjitsu/ssh-process-execve
SSH Process-style interface with full control over argv
2015-02-25 12:26:57 +01:00
Jonas Rudloff 017f5861ce Automated format string explotation 2015-02-25 12:11:40 +01:00
Jonas Rudloff c50d32d700 fixed nbuckets -> nbucket in dynelf.py for sysv hash lookups 2015-02-25 11:54:03 +01:00
Jonas Rudloff 28bd8fc3a7 Merge pull request #447 from zachriggle/patch-1
Update 'latest version' documentation since pip can install from git
2015-02-24 23:08:08 +01:00
Jonas Rudloff 31b84d7ba9 Merge pull request #471 from zachriggle/patch-2
Fix gdb.attach for foreign architectures
2015-02-24 22:59:34 +01:00
Zach Riggle 9d1756e99b More useful message on Administratively Prohibited 2015-02-24 16:34:06 -05:00
Jonas Rudloff de50da1849 Merge pull request #463 from binjitsu/capstone3
Update dependency versions
2015-02-24 22:28:03 +01:00
Jonas Rudloff 5a36d7fdc6 Merge pull request #464 from binjitsu/proc-pty-stdout
Set stdout to be a PTY on spawned processes so that stdout is not buffered
2015-02-24 22:25:49 +01:00
Jonas Rudloff 23eed9752c Merge pull request #460 from binjitsu/threading-event-wait
Enable a configurable timeout for recvall
2015-02-24 21:33:18 +01:00
Jonas Rudloff ef71b4c1ef Merge pull request #466 from binjitsu/mit-license-badge
Add MIT license badge
2015-02-24 21:32:12 +01:00
Jonas Rudloff ca9f918ac1 Merge pull request #470 from r3dey3/master
Fix #469 - verify search_results has items before using
2015-02-24 21:32:01 +01:00
Jonas Rudloff 12b2b127af Merge pull request #446 from binjitsu/sphinx-warnings
Squash most of the Sphinx warnings
2015-02-24 21:30:02 +01:00
Jonas Rudloff ea1cb8ad7a Merge pull request #439 from binjitsu/ssh-revamp-localhost-only
Restrict demouser for Travis to localhost only.
2015-02-24 21:27:27 +01:00
Jonas Rudloff 4a7d4fcff7 fixes bug in memleak.py 2015-02-23 20:28:19 +01:00
Zach Riggle cb163e7662 Add install message [skipci] 2015-02-21 12:27:22 -08:00
Zach Riggle fdae85c991 Check for Python development headers 2015-02-21 12:25:46 -08:00
Zach Riggle f171539d83 Include error number 2015-02-21 11:42:47 -08:00
Zach Riggle 44f881b742 Handle when there's no known_hosts or config for SSH 2015-02-21 11:28:18 -08:00
Zach Riggle cc6ca79a45 Add tox 2015-02-21 11:24:31 -08:00
Zach Riggle 9332812af1 tox.ini 2015-02-21 10:27:15 -08:00
Zach Riggle 3f23a8a63a Add missing linker flag 2015-02-21 10:12:27 -08:00
Zach Riggle 35ef86b189 Update ssh.process to use sh_string instead of creating a temporary file 2015-02-21 08:36:46 -08:00
Zach Riggle 5962bca201 Require tox 2015-02-21 08:13:53 -08:00
Zach Riggle 0c8935fc8c make clean should rmeove all temporary files 2015-02-20 16:32:01 -08:00
Zach Riggle 5e1447f8b4 When an exception is thrown on teardown, _run_handlers doesn't exist anymore 2015-02-20 16:27:35 -08:00
Zach Riggle 9ec1ea0852 Add useragents to packaged files; require recent pip 2015-02-20 16:26:40 -08:00
Zach Riggle b54d2dfa47 Pretty please? 2015-02-20 13:50:51 -08:00
Zach Riggle 547e8df98a Fix doctests 2015-02-20 13:39:12 -08:00
Zach Riggle ef74b64e86 Update test suite instructions 2015-02-20 13:30:51 -08:00
Zach Riggle 886e49bd1c Fix architectures between GDB and QEMU; auto-set endianness 2015-02-20 10:06:33 -08:00
Zach Riggle 42486c7a76 Add missing newlines to script 2015-02-19 17:51:32 -08:00
Zach Riggle 57eaede85b Add format argument 2015-02-19 17:50:52 -08:00
Zach Riggle 0ad8649599 Make default arguments a bit more explicit 2015-02-13 11:01:57 -08:00
Zach Riggle 8c183ac0e3 Fix regression which would cause ././binary to be invoked 2015-02-13 11:00:17 -08:00
Zach Riggle c0002895c8 Add an example for dup2ing 0 to 2 because subprocess tries to protect you from this 2015-02-13 10:57:55 -08:00
Zach Riggle a92260d9e5 Add preexec_fn 2015-02-13 10:46:40 -08:00
Zach Riggle b7743546b6 Fix log statements 2015-02-12 21:26:50 -08:00
Zach Riggle 75d260cd77 Add better documentation 2015-02-12 19:40:18 -08:00
Zach Riggle fc4abbf395 Add documentation for process and add shell=True doctest 2015-02-12 19:29:16 -08:00
Zach Riggle a5c8aa31a5 Default arg update 2015-02-12 19:13:16 -08:00
Zach Riggle 9e90e0485c Add file descriptors and documentation to ssh.process 2015-02-12 19:09:28 -08:00
Zach Riggle 1a1afabb23 Better fix for interactive() on raw TTYs 2015-02-12 10:24:35 -08:00
Zach Riggle 37ea0e8882 Remove extra print [skip ci] 2015-02-12 10:24:35 -08:00
Zach Riggle f3237586a5 Add warning message for no gdb-multiarch 2015-02-12 11:18:46 -05:00
Zach Riggle 324ef12b29 Revert PPA link; 2015-02-12 10:50:51 -05:00
Zach Riggle 3b659cc8ec Version fail 2015-02-12 10:48:22 -05:00
Zach Riggle 99aa19f332 Slightly better error message 2015-02-12 10:47:46 -05:00
Zach Riggle c623661f06 --upgrade 2015-02-12 10:47:00 -05:00
Zach Riggle 1d165fbde4 Evidently old versions of Git dont like Cloudflare 2015-02-12 10:37:41 -05:00
Zach Riggle a7816bde40 Change URLs to binjit.su, version to "master" 2015-02-12 10:06:55 -05:00
Zach Riggle de8de2d187 Add unit test for make_elf 2015-02-12 04:39:51 -08:00
Zach Riggle 3df64b6c80 Fix parsing ~/.ssh/config. Removes need for ssh_agent for tests. 2015-02-12 04:36:07 -08:00
Zach Riggle 84fc6a37e3 Use .string since it's easier to compare to Python 2015-02-12 03:52:51 -08:00
Zach Riggle a2fb187c2a Import everything from asm in __all__ 2015-02-12 03:25:15 -08:00
Zach Riggle 8a915a59e7 Fix gdb.attach(arch=...) and add gdb.debug_shellcode 2015-02-12 03:19:51 -08:00
Zach Riggle ea88f746a1 Fix pidof for sockets 2015-02-12 03:17:22 -08:00
Zach Riggle 33c47c159c Enable xor on integers, use default packing 2015-02-12 03:16:56 -08:00
Zach Riggle 0d544d96c8 Add message to ssh setup. Required because ssh-agent env vars must persist in parent shell. 2015-02-12 02:44:43 -08:00
Zach Riggle b9ac583e8a Fix CRLF in ssh.ssh_channel.interactive() when tty=True 2015-02-12 02:38:22 -08:00
Zach Riggle b9cb550856 Fix gdb.attach for foreign architectures 2015-02-10 08:24:45 -05:00
Zach Riggle 7e46c36965 Only show build state for Master branch 2015-02-09 05:07:45 -05:00
Kenny 8bd50f958c Fix #469 - verify search_results has items before using 2015-02-08 15:58:22 -05:00
Zach Riggle 0c9d345c37 Don't change anything at all if shell=True 2015-02-06 05:32:36 -08:00
Zach Riggle b28299a96e Style 2015-02-06 05:32:19 -08:00
Zach Riggle f6dab8cb94 Documentation on pty and tty.setraw 2015-02-06 05:30:33 -08:00
Zach Riggle ab3e58be59 Style, typos 2015-02-06 05:27:17 -08:00
Zach Riggle 068a5915b8 Clean up process tube and add member documentation 2015-02-06 05:02:48 -08:00
Zach Riggle 48ccd3dbe6 Make set_working_directory a bit faster 2015-02-05 20:24:09 -08:00
Zach Riggle 4f1bae8748 Less verbose 2015-02-05 20:18:24 -08:00
Zach Riggle 5ed9d4e2a9 Make the interfaces to process() and ssh.process() a bit more robust and fault-tolerant 2015-02-05 19:53:15 -08:00
Zach Riggle 87d12970f6 Update docs about Capstone.
It builds itself for 3.0.1+ and no longer has dependencies outside of the pip-intallable stuff
2015-02-05 09:07:07 -08:00
Zach Riggle 131e669246 Remove outdated script 2015-02-05 08:53:18 -08:00
Zach Riggle 41f003464b Merge pull request #1 from binjitsu/web-doctests
Make doctests cleaner
2015-02-05 11:52:28 -05:00
Zach Riggle b436d4a99a isort requirement 2015-02-05 04:49:50 -08:00
Zach Riggle b689dc6141 Add MIT license badge [noci] 2015-02-05 04:48:28 -08:00
Zach Riggle 9047360dd6 Add align_up alias 2015-02-05 04:48:28 -08:00
Zach Riggle 339c71abbd sorted imports with isort 2015-02-05 04:48:25 -08:00
Zach Riggle 38a080022d Add MIT license badge 2015-02-05 04:31:25 -08:00
Zach Riggle c1308f454f Enhancements to packing to allow auto-detection of sign, as well as unpack bytearray objects
(cherry picked from commit 6a3e2591c29d5a176136b1e1e16b63de5b64160c)

Conflicts:
	pwnlib/util/packing.py
2015-02-05 02:47:57 -08:00
Zach Riggle bfd1c74ef6 Wait for close on unit test 2015-02-05 01:56:14 -08:00
Zach Riggle 2ec8647d10 Wait for close on unit test 2015-02-05 01:56:03 -08:00
Zach Riggle 96f07f950c Actually save the keys 2015-02-05 01:29:57 -08:00
Zach Riggle acaaf2bf98 Enforce SSH keys for IP 2015-02-05 01:15:22 -08:00
Zach Riggle f1b5df6d99 Enhance test for process tube 2015-02-05 00:19:51 -08:00
Zach Riggle 5e4fa7c03d Enhance test for process tube 2015-02-05 00:15:25 -08:00
Zach Riggle 1a69412209 Handle IOError, and ensure Ctrl+C sent to parent process does not propagate to child
(cherry picked from commit 99cae63745)

Conflicts:
	pwnlib/tubes/process.py
2015-02-05 00:10:54 -08:00
Zach Riggle 99cae63745 Handle IOError, and ensure Ctrl+C sent to parent process does not propagate to child 2015-02-05 00:10:00 -08:00
Zach Riggle d194dfd8ce Set stdout to be a PTY on spawned processes so that stdout is not buffered.
(cherry picked from commit 1273bfa1fb)

Conflicts:
	pwnlib/tubes/process.py
2015-02-04 23:58:28 -08:00
Zach Riggle 2c5ea17ddb Merge remote-tracking branch 'origin/capstone3'
Conflicts:
	docs/source/install.rst
2015-02-04 23:52:51 -08:00
Zach Riggle 1273bfa1fb Set stdout to be a PTY on spawned processes so that stdout is not buffered. 2015-02-04 23:51:23 -08:00
Zach Riggle 226e4b73a6 Have capstone install itself
Specify versions of all requirements.  Had some complaints about old psutils, and this will cause new installs to upgrade.

Update Capstone installation docs.  The 3.0.1 target is self-installing.

Avoid Travis CI build time penalty by using older, pre-built Capstone 2.1
2015-02-05 02:10:46 -05:00
Zach Riggle 9d25c526e9 Add --address to disasm 2015-02-02 21:46:25 -08:00
Zach Riggle 34c4843bbf Make gadget loading faster by saving the original addresses and fixing up at runtime 2015-02-02 21:46:11 -08:00
Zach Riggle 4616f9f107 Fix indentation of docstrings 2015-02-02 04:22:55 -08:00
Zach Riggle 12fe3d310a Fix download_file regression and fix spinners 2015-02-02 04:22:37 -08:00
Zach Riggle 24661aa6e7 Fix isEnabledFor 2015-02-02 03:22:32 -08:00
Steven Van Acker 51e5ee5bf2 support for multithreaded bruteforcing 2015-02-02 12:12:18 +01:00
Zach Riggle 1b5c6162d1 Merge branch 'ssh-upgrades' 2015-02-02 03:01:02 -08:00
Zach Riggle e17e9c8b43 Fix issue where "tar -C /tmp" will fail if /tmp is not +r (enumeratable) 2015-02-02 02:56:37 -08:00
Zach Riggle a9e535eef6 Revamp download_dir (did it ever work?) and add "download" alias 2015-02-02 02:56:37 -08:00
Zach Riggle dfe78552c3 Add upload and put aliases/helpers 2015-02-02 02:56:37 -08:00
Zach Riggle 16dadb3376 Rewrite the upload functionality 2015-02-02 02:56:33 -08:00
Zach Riggle 054b7a5b17 Allow ~/foo in ssh.upload_dir 2015-02-02 00:47:41 -08:00
Zach Riggle 3eccae29d8 Only print checksec info once per ELF 2015-02-01 21:10:45 -08:00
Zach Riggle 37e29db87a Clean up SSH cache to only use SHA256. Additionally ssh.libs() now returns the original binary as well. Currently, the address is set to zero. 2015-02-01 21:09:21 -08:00
Steven Van Acker 112b65f8e9 fixing documentation of bruteforce() 2015-02-01 23:50:28 +01:00
Steven Van Acker 890db20b27 fixing order of arguments for consume(), so that bruteforce() works when start is specified 2015-02-01 11:54:27 +01:00
Zach Riggle dc84e7150a More reverting 2015-02-01 00:21:13 -08:00
Zach Riggle f6e90df62a Revert "Rename "pwn" to "binjitsu""
This reverts commit 8bbaa14afe.
2015-01-31 23:58:16 -08:00
Zach Riggle a96ffc80a2 Fix mis-reporting of NX when there is no GNU_STACK segment 2015-01-31 23:31:49 -08:00
Zach Riggle dae43bb581 Make doctests not spew stuff 2015-01-31 22:47:23 -08:00
Zach Riggle b399f2a439 Merge branch 'threading-event-wait' 2015-01-31 22:45:26 -08:00
Zach Riggle a875adb533 Work around #459 2015-01-31 22:45:13 -08:00
Zach Riggle 6730a63432 Add --upgrade 2015-01-31 20:49:43 -08:00
Zach Riggle 8bbaa14afe Rename "pwn" to "binjitsu" 2015-01-31 20:37:58 -08:00
Zach Riggle 7bc5a9cc31 args => argv 2015-01-29 21:15:24 -08:00
Zach Riggle 1844b85ae6 Enable debugging ssh channels. Enrich information with pid and args. Add documentation 2015-01-29 19:51:32 -08:00
Zach Riggle ff19108e02 Revert default log level back to 1; handle isEnabledFor in accordance with context 2015-01-29 19:51:32 -08:00
Zach Riggle 5e58b94d7a Update install docs 2015-01-29 19:51:32 -08:00
Zach Riggle 9a5bccd837 Remove versioned stuff 2015-01-29 19:42:35 -05:00
Zach Riggle 7865ec93b0 Wake up Travis 2015-01-29 19:42:01 -05:00
Zach Riggle de68ff6734 Update installation instructions 2015-01-29 18:43:36 -05:00
Zach Riggle d26a5a7012 Fix quoting style from repr 2015-01-29 18:41:15 -05:00
Zach Riggle 5f167c657f Fix indentation 2015-01-29 05:08:31 -08:00
Zach Riggle 67faf896f1 Make unhex() a bit more forgiving 2015-01-29 05:06:29 -08:00
Zach Riggle 073a179d29 Don't log twice for clean_and_log. 2015-01-28 22:52:12 -08:00
Zach Riggle 65847258fd Always print security info 2015-01-28 20:54:08 -08:00
Zach Riggle b6a98274c0 Update docs 2015-01-28 20:54:00 -08:00
Zach Riggle da9ee7bd9d Fix hostname 2015-01-28 19:33:14 -08:00
Zach Riggle 47160d7398 Expressly disable tty for upload_data 2015-01-28 17:39:01 -08:00
Zach Riggle 5974be5c01 Fix SSH doctests 2015-01-28 17:38:59 -08:00
Zach Riggle edf68d3ffb Dont spawn a tty for this "sh" example 2015-01-28 16:33:36 -08:00
Zach Riggle dddc0ee163 Restore pep237 2015-01-28 16:32:10 -08:00
Zach Riggle 27e96868b8 Unbreak the build while sphinx fixes their issues.
https://bitbucket.org/birkenfeld/sphinx-contrib/issue/93/
2015-01-28 16:26:19 -08:00
Zach Riggle efce85666d Print the actual command used if debugging 2015-01-28 16:26:15 -08:00
Zach Riggle cdbba52548 Disable echoing of control characters 2015-01-27 22:58:17 -08:00
Zach Riggle 2cc92df291 Use tty by default, and run "stty raw" by default except for when doing a shell (process==None).
Add a doctest for sftp vs non-sftp uploads.
Remove extra output from script generated by ssh.process if not run directly.
2015-01-27 22:46:16 -08:00
Zach Riggle f3a0a4f781 Change magic log number to -1 2015-01-27 22:44:53 -08:00
Zach Riggle b5d33ff064 Don't eat Ctrl+C with all the exceptions 2015-01-27 15:00:30 -08:00
Zach Riggle 7e829db170 Fix path names for sftpclient and make script executable 2015-01-27 14:58:54 -08:00
Zach Riggle 504c502c22 Merge branch 'sftpclient' 2015-01-27 12:17:27 -08:00
Zach Riggle 3324062013 Update ssh object to use sftp first; expose _wd as cwd; optional caching 2015-01-27 12:17:11 -08:00
Zach Riggle 3a767b45dd Unfuck progress 2015-01-26 23:19:55 -08:00
Zach Riggle ebb349c700 Merge branch 'commandline-context-pwntools'
Conflicts:
	pwnlib/commandline/disasm.py
	pwnlib/commandline/shellcraft.py
2015-01-26 22:54:00 -08:00
Zach Riggle 9991348963 Use "from pwn import *" in command-line utilities, and shovel all the context information through a single handler 2015-01-26 22:53:10 -08:00
Zach Riggle b010daa438 Set permissions on temporary working directory 2015-01-26 22:24:14 -08:00
Zach Riggle 73a494cfd0 Clean up import name duplication, add pwnlib.version 2015-01-25 22:02:33 -08:00
Zach Riggle 3c2074cdeb Rename ssh.run to ssh.system 2015-01-25 21:53:27 -08:00
Zach Riggle 16f7021065 Merge branch 'ssh-process-execve-binjitsu' 2015-01-25 21:51:26 -08:00
Zach Riggle bd137c7a4c Add a more robust interface to SSH commands which doesn't require hacky shell escaping if Python is available on the remote host. This interface follows the same style as pwnlib.tubes.process.process 2015-01-25 21:51:08 -08:00
Zach Riggle faf66a3981 Add a more robust interface to SSH commands which doesn't require hacky shell escaping if Python is available on the remote host. This interface follows the same style as pwnlib.tubes.process.process 2015-01-25 21:50:28 -08:00
Zach Riggle 4137fac99b Merge branch 'commandline-context-pwntools'
Conflicts:
	pwnlib/commandline/shellcraft.py
2015-01-25 21:40:09 -08:00
Zach Riggle 57de045db5 Use "from pwn import *" in command-line utilities, and shovel all the context information through a single handler 2015-01-25 21:38:23 -08:00
Zach Riggle 5046f18b90 Merge branch 'shellcraft-speedup' 2015-01-25 21:29:05 -08:00
Zach Riggle dcd3df3f10 Sort templates 2015-01-25 21:24:49 -08:00
Zach Riggle ceec814588 Speed up shellcraft loading and clean up code a bit 2015-01-25 21:21:16 -08:00
Zach Riggle a4860f3167 Watch all branches 2015-01-25 18:15:37 -08:00
Zach Riggle c762eec46c Make doctests cleaner 2015-01-25 18:14:44 -08:00
Zach Riggle 380eda7234 Update log statement 2015-01-25 18:08:22 -08:00
Zach Riggle f02cc65624 Merge branch 'elf-data-property' 2015-01-24 17:20:21 -08:00
Zach Riggle 32ecc909a3 Add .data property 2015-01-24 17:19:56 -08:00
Zach Riggle 8710709ca3 Update 'latest version' documentation since pip can install from git 2015-01-24 16:11:51 -08:00
Zach Riggle ec64ebe3c7 Merge branch 'ssh-revamp-localhost-only' 2015-01-24 01:21:04 -08:00
Zach Riggle fb7d604927 Update self.host to the resolved host 2015-01-24 01:20:05 -08:00
Zach Riggle 93a95d16f1 Restrict demouser for Travis to localhost only. Change host name from localhost to example.pwnme. Add support for getting the hostname and identityfile from ssh_config.
Conflicts:
	pwnlib/tubes/ssh.py
2015-01-24 01:19:55 -08:00
Zach Riggle 9de8211e58 Fix logging in tests 2015-01-23 23:35:45 -08:00
Zach Riggle 0726fb45d8 Squash most of the Sphinx warnings 2015-01-23 23:34:39 -08:00
Zach Riggle 7d08ba6893 Rename ssh.run to ssh.system since that's closer to what it really is 2015-01-23 04:51:07 -08:00
Jonas Rudloff 1be8797cee Merge pull request #440 from binjitsu/issue-438
mips -> tradmips
2015-01-22 14:16:21 +01:00
Zach Riggle 6fc936c708 mips -> tradmips 2015-01-22 04:50:40 -08:00
Zach Riggle 33d7e4ea30 mips -> tradmips 2015-01-22 04:48:30 -08:00
Zach Riggle 5134d4f6a4 Update self.host to the resolved host 2015-01-22 04:24:57 -08:00
Zach Riggle 51bda21142 Restrict demouser for Travis to localhost only. Change host name from localhost to example.pwnme. Add support for getting the hostname and identityfile from ssh_config. 2015-01-22 04:13:01 -08:00
Mathias Svensson 8d5cf044e7 Merge pull request #434 from binjitsu/close-handles-proc
Close extra handles on child processes
2015-01-18 16:35:07 +01:00
Zach Riggle 02a6145c1d Close extra handles on child processes 2015-01-16 14:55:16 -08:00
Jonas Rudloff 46bd8e93b2 Merge pull request #418 from Gallopsled/performance-logger
Added a performance logger
2015-01-16 16:19:28 +01:00
Jonas Rudloff c0fec5ee5a Merge pull request #416 from Gallopsled/log-pwnhandler
Added support for increasing logging for a specific point in the tree
2015-01-16 16:17:51 +01:00
Jonas Rudloff 5b33186a51 Merge pull request #433 from Gallopsled/update-gitignore
Added swp to gitignore
2015-01-16 16:16:42 +01:00
Mathias Svensson 5b5b7a2544 Added swp to gitignore 2015-01-16 16:14:16 +01:00
Zach Riggle 99acaf7471 Make nosetests work 2015-01-15 02:54:57 -05:00
Zach Riggle e48c08baa4 Change default fd back to stdout 2015-01-15 02:23:56 -05:00
Zach Riggle b4e89ab373 Fix dependency for travis 2015-01-15 02:20:22 -05:00
Zach Riggle 806f2a3e7d Merge remote-tracking branch 'upstream/fix-stager' 2015-01-15 02:13:49 -05:00
Zach Riggle c709e7e753 Merge branch 'StevenVanAcker/patch-1' 2015-01-15 02:13:31 -05:00
Zach Riggle 88a83cad71 The great rebranding 2015-01-15 02:03:57 -05:00
Kristoffer Søholm 850efb557f Merge pull request #431 from Gallopsled/fix-stager
Off by one line in stager shellcode
2015-01-13 15:37:47 +01:00
Jonas Rudloff e515d234c7 if construct was of by one line 2015-01-13 14:46:48 +01:00
Mathias Svensson 8a97980bc0 Merge pull request #430 from StevenVanAcker/patch-1
fixing capstone installation under debian/ubuntu
2015-01-13 11:48:51 +01:00
Zach Riggle b41a4057c3 Merge branch 'tubes-are-loggers' 2015-01-12 16:23:23 -05:00
Zach Riggle 49244fe1dc Merge branch 'log-level-one' 2015-01-12 16:23:03 -05:00
Zach Riggle 1c06dca971 Merge branch 'connect-gethostbyname' 2015-01-12 16:22:11 -05:00
Zach Riggle 85379b292d Merge branch 'context-logfile' 2015-01-12 16:22:07 -05:00
Zach Riggle 88195d8c56 Merge branch 'issue-338' 2015-01-12 16:22:03 -05:00
StevenVanAcker e432a6584d fixing capstone installation under debian/ubuntu 2015-01-12 22:04:20 +01:00
Zach Riggle 835a94b356 Update LICENSE-pwntools.txt 2015-01-12 14:42:52 -05:00
Zach Riggle 1c52cd0390 Implement "wrap" word_size 2015-01-12 12:50:04 -05:00
Zach Riggle bc270113b6 Enable use of hostnames for connect shellcode. 2015-01-12 12:26:12 -05:00
Zach Riggle 139937114b Stupid doctests 2015-01-12 12:17:19 -05:00
Zach Riggle 2f22025cea Set level to 1 instead 2015-01-12 12:17:19 -05:00
Zach Riggle 8f13445b73 Fix doctest formatting 2015-01-12 12:17:03 -05:00
Zach Riggle f297cf60ba Defer adding a handler and setting the root logger level 2015-01-12 12:17:03 -05:00
Zach Riggle 19866979bc Get rid of reliance on /dev/null; flush logfile when changing log files 2015-01-12 12:16:19 -05:00
Zach Riggle 372490b4e9 Add doctest 2015-01-12 12:16:19 -05:00
Zach Riggle 9f244268ca Re-add handler, should work after #419 is resolved. 2015-01-12 12:16:19 -05:00
Zach Riggle d3929505c4 Remove handler to check Travis result 2015-01-12 12:16:19 -05:00
Zach Riggle a4f21971d1 Skip emitting and formatting records sent to the LogFile if it's /dev/null, which is also the default value 2015-01-12 12:16:19 -05:00
Zach Riggle 4d31a89a67 Enable per-thread logfiles via context, and retargetting the logfile at runtime 2015-01-12 12:16:19 -05:00
Zach Riggle ca47f5ce27 Tubes are Loggers 2015-01-12 12:15:53 -05:00
Zach Riggle 7e02110bc5 Invert the lookup on logging verbosity, using 1 as a sentinel value for "not set" 2015-01-12 12:15:53 -05:00
Zach Riggle 69073530fd Invert the lookup on logging verbosity, using 1 as a sentinel value for "not set" 2015-01-12 12:15:20 -05:00
Zach Riggle 8943102479 Set logLevel to 1 2015-01-12 12:14:48 -05:00
Mathias Svensson 91ae3968ed Merge pull request #426 from Gallopsled/connect-shellcode
Added a connect shellcode ported from the old pwntools
2015-01-12 18:14:20 +01:00
Mathias Svensson bfb5d09b5f Added a performance logger and updated tube.py to use it 2015-01-12 17:59:15 +01:00
Mathias Svensson 9a830b7185 Missed a docstring 2015-01-12 17:54:18 +01:00
Mathias Svensson 4edb4b8894 Added support for increasing logging for a specific point in the tree 2015-01-12 17:54:18 +01:00
Mathias Svensson 2fb768f8a4 Merge pull request #423 from Gallopsled/doctest-stdout
Order matters
2015-01-12 17:52:38 +01:00
Zach Riggle 0fab4731e7 Merge pull request #427 from Gallopsled/travis-apt-update-once
Only call apt-get update once, shaves off a few seconds
2015-01-12 11:49:55 -05:00
Zach Riggle 492d81b9f8 Only call apt-get update once, shaves off a few seconds 2015-01-12 11:36:15 -05:00
Zach Riggle 9139dc64d9 Fix stderr changing on term.init breaking the logging 2015-01-12 11:31:36 -05:00
Jonas Rudloff 771a56e207 Added a connect shellcode ported from the old pwntools 2015-01-12 16:56:32 +01:00
Zach Riggle cde5ec8343 Merge pull request #425 from Gallopsled/capstones-servers-sucks
Stop relying on Capstone's servers to be up
2015-01-12 10:25:08 -05:00
Zach Riggle 872e13da20 Stop relying on Capstone's servers to be up 2015-01-12 10:11:59 -05:00
Zach Riggle 1a4664f248 Merge pull request #419 from Gallopsled/doctest-stdout
Set logging to stdout when running doctests
2015-01-12 06:12:32 -05:00
Zach Riggle 6e33077081 Set logging to stdout when running doctests, since otherwise output is not captured. Also fix assumption that the console handler is the first handler. Also ensure that the console handler is applied for doctests, since some of them require it. 2015-01-12 06:06:23 -05:00
Zach Riggle 37a46e052a Enable direct calls to pack() without endianness specified to pack negative numbers as positive numbers. Fixes #338. 2015-01-12 02:09:39 -05:00
Jonas Rudloff bd3a68c9ce Merge pull request #408 from Gallopsled/mov-microoptimizations
More micro-optimizations to mov shellcodes
2015-01-11 19:15:32 +01:00
Mathias Svensson 3c9e95bd6a More micro-optimizations to mov shellcodes 2015-01-11 18:49:10 +01:00
Robert Larsen 27f9e65939 Merge pull request #405 from Gallopsled/asm-update
Updated a lot of shellcode
2015-01-11 13:55:20 +01:00
Mathias Svensson 0da236aefa Merge pull request #407 from Gallopsled/shellcraft-strip-doctest
improved doctest stripping in shellcraft
2015-01-11 12:46:15 +01:00
Morten Brøns-Pedersen 2a86bf2440 improved doctest stripping in shellcraft 2015-01-11 12:30:22 +01:00
Mathias Svensson 73ae97f197 Enable caching of env stores for constants.eval 2015-01-11 12:28:40 +01:00
Mathias Svensson 3071cf65a7 Updated a lot of shellcodes to use the new eval feature 2015-01-11 12:09:54 +01:00
Mathias Svensson 93d2f5746a Added an eval method to the constants module, to evaluate constants in the current context 2015-01-11 12:04:23 +01:00
Mathias Svensson 4a8e8220e3 Added context manager for shellcraft/internal.py to make it exception-safe 2015-01-11 12:03:55 +01:00
Mathias Svensson 895373e053 Merge pull request #403 from Gallopsled/commandline-logging
bugfix: command line tools now installs a log handler
2015-01-11 11:59:44 +01:00
Morten Brøns-Pedersen d0793c4fac bugfix: command line tools now installs a log handler 2015-01-11 11:51:45 +01:00
Jonas Rudloff f7d39688dc Merge pull request #401 from Gallopsled/log-no-handler-in-lib
now only install a log handler when not in lib-mode
2015-01-10 22:47:29 +01:00
Morten Brøns-Pedersen 4bb4f4ca35 update doctest-hack to test logging output 2015-01-10 22:41:23 +01:00
Morten Brøns-Pedersen 7fd4dd9348 forgot to import logging 2015-01-10 22:41:23 +01:00
Morten Brøns-Pedersen 9df1b2d093 now only install a log handler when not in lib-mode 2015-01-10 22:41:23 +01:00
Jonas Rudloff b2bb517655 Merge pull request #400 from Gallopsled/pwn-noterm-text
command line flag NOTERM no longer turns text decoration off
2015-01-10 22:39:06 +01:00
Jonas Rudloff 346c9b00cf Merge pull request #399 from Gallopsled/log-no-prefix-caching
bugfix: log message prefixes are no longer cached
2015-01-10 22:37:40 +01:00
Jonas Rudloff 724f292773 Merge pull request #398 from Gallopsled/shellcraft-bash-completion
added bash completion for shellcraft
2015-01-10 22:36:00 +01:00
Kristoffer Søholm d4184db93c Merge pull request #402 from Gallopsled/issue-395
no longer creates an "a.out" when using `pwnlib.asm`
2015-01-10 22:02:03 +01:00
Morten Brøns-Pedersen 3e87bfb307 no longer creates an "a.out" when using pwnlib.asm 2015-01-10 21:18:41 +01:00
Morten Brøns-Pedersen 5823d848e8 command line flag NOTERM no longer turns text decoration off 2015-01-10 20:43:18 +01:00
Morten Brøns-Pedersen bed5f37084 bugfix: log message prefixes are no longer cached
this means that changes to `pwnlib.term.text.when` will now take effect as they should
2015-01-10 20:40:58 +01:00
Morten Brøns-Pedersen 47fd9b1132 added bash completion for shellcraft 2015-01-10 20:23:59 +01:00
Kristoffer Søholm 5905444ff4 Merge pull request #397 from Gallopsled/shellcraft-strip-doctests
"shellcraft -?" now removes any doctests from the docstring
2015-01-10 18:55:14 +01:00
Morten Brøns-Pedersen 61d7aa91bd strip trailing blank lines 2015-01-10 18:46:12 +01:00
Morten Brøns-Pedersen 6b008d3ac0 "shellcraft -?" now removes any doctests from the docstring 2015-01-10 18:43:04 +01:00
br0ns 2c127ddb8d Merge pull request #391 from Gallopsled/less-hacky-performance-fix
Made logging less hacky and removed legacy code
2015-01-10 18:14:20 +01:00
br0ns e90474dadc Merge pull request #357 from Gallopsled/stager
use i386.linux.syscall in stager shellcode
2015-01-10 16:34:41 +01:00
Jonas Rudloff cf5a4c582d use i386.linux.syscall in stager shellcode 2015-01-10 16:22:28 +01:00
br0ns b8088b8bb4 Merge pull request #353 from Gallopsled/syscall-7arg
fixes #351 syscall can now accept 7 arguments
2015-01-10 16:15:30 +01:00
Morten Brøns-Pedersen 0c9c8b449a added doctest for pwnlib.shellcraft.i386.linux.syscall 2015-01-10 16:12:32 +01:00
br0ns ffaab6cd08 Merge pull request #390 from Gallopsled/extra-toplevel
Added math, pickle and StringIO to toplevel.py
2015-01-10 15:13:39 +01:00
br0ns 15335dfc30 Merge pull request #394 from Gallopsled/fix-example
Fixed bug in examples/asm.py. There is no context variable "net".
2015-01-10 14:46:53 +01:00
Mathias Svensson 8d61322857 Merge pull request #393 from Gallopsled/rop-docstring-cleanup
fixed formatting issue in docstring for `pwnlib.rop.ROP.__getattr__`
2015-01-10 14:25:05 +01:00
Mathias Svensson 6ad5b206da Fixed bug in examples/asm.py. There is no context variable "net". 2015-01-10 14:22:30 +01:00
Morten Brøns-Pedersen 96511e8c29 fixed formatting issue in docstring for pwnlib.rop.ROP.__getattr__ 2015-01-10 14:16:32 +01:00
Mathias Svensson 37811b04f4 Cleaned up a lot of legacy code 2015-01-10 13:38:40 +01:00
Mathias Svensson d51eda5f43 Updated documentation 2015-01-10 13:38:39 +01:00
Mathias Svensson da886c4b79 Replaced ugly performance hack with less ugly performance hack 2015-01-10 12:25:18 +01:00
Mathias Svensson 24542f422a Added math, pickle and StringIO to toplevel.py 2015-01-10 12:13:26 +01:00
br0ns ba477dabbc Merge pull request #388 from Gallopsled/issue-387
Ensure arguments go through context transform
2015-01-10 12:12:59 +01:00
Zach Riggle fe034dc67a Ensure arguments go through context transform 2015-01-09 20:12:07 -08:00
Zach Riggle 7d964f86b6 Merge pull request #385 from Gallopsled/typo
fixed typo: "updatez" -> "update"
2015-01-08 12:12:50 -08:00
Jonas Rudloff f011b1789f fixed typo: "updatez" -> "update" 2015-01-08 20:41:06 +01:00
Jonas Rudloff 90da45d8d5 Merge pull request #383 from Gallopsled/log-rootlogger-level
pwnlib root logger now reports parents level if more verbose
2015-01-08 19:36:10 +01:00
Jonas Rudloff baaabd12ca Merge pull request #375 from Gallopsled/stderr-debug-process
Enable logging process stderr directly to log.debug.  This is useful for...
2015-01-08 19:34:00 +01:00
Jonas Rudloff ff2e8f0e8a Merge pull request #384 from Gallopsled/log-docstrings
updated docs for `pwnlib.log`
2015-01-08 19:33:03 +01:00
Jonas Rudloff c6c853dd3c Merge pull request #382 from Gallopsled/pwn-logfile
added command line option "LOG_FILE"
2015-01-08 19:32:18 +01:00
Morten Brøns-Pedersen 661d820b5f updated docs for pwnlib.log 2015-01-08 17:17:26 +01:00
Morten Brøns-Pedersen 0d4ff3b0b9 pwnlib root logger now reports parents level if more verbose 2015-01-08 14:56:30 +01:00
Morten Brøns-Pedersen 55b879c6d4 have command line option "LOG_LEVEL" install a handler for *all* loggers 2015-01-08 14:53:35 +01:00
Morten Brøns-Pedersen 497d766ff0 added command line option "LOG_FILE" 2015-01-08 13:07:43 +01:00
Mathias Svensson 4d9da37586 Merge pull request #381 from Gallopsled/hexdump-remove-dead-code
removed `pwnlib.util.fiddling.sequential_lines` as it is no longer used
2015-01-08 12:01:57 +01:00
Morten Brøns-Pedersen a01dc91ec1 removed pwnlib.util.fiddling.sequential_lines as it is no longer used 2015-01-08 11:44:27 +01:00
Zach Riggle f16ad780a3 Merge pull request #376 from Gallopsled/assembler-list-str
Fix assembler returned when not in special-case architectures (e.g. cris)
2015-01-07 23:15:54 -08:00
Zach Riggle 45ba7865d4 Merge pull request #377 from Gallopsled/hexdump-faster
Hexdump faster
2015-01-07 23:15:38 -08:00
Zach Riggle 8a25962917 Merge pull request #378 from Gallopsled/flat-hexdump-bytearray
Enable flat() for bytearray().  Pass argument given to hexdump() to flat() first.
2015-01-07 23:15:20 -08:00
Zach Riggle 9b4531a15e Enable flat() for bytearray(). Pass argument given to hexdump() to flat() first. 2015-01-07 21:55:51 -08:00
Zach Riggle ee4e8104a2 Disable detection of sequential de bruijn lines in hexdump until a faster alternative is found 2015-01-07 19:56:49 -08:00
Zach Riggle ecb6717d6d Fix assembler returned when not in special-case architectures (e.g. cris) 2015-01-07 19:53:45 -08:00
Zach Riggle fec0fdc9e1 Enable logging process stderr directly to log.debug. This is useful for e.g. strace or ltrace.
At some point in the future for the pwntools-write-ups, this should be very useful to assist debugging exploits.
2015-01-07 17:50:02 -08:00
br0ns 5cf13cba4e Merge pull request #374 from Gallopsled/binutils-old-version
Check the installed binutils version so that users are aware of old versions
2015-01-08 00:20:19 +01:00
Zach Riggle 2a5e19e71b Check the installed binutils version so that users are aware of old versions 2015-01-07 13:30:53 -08:00
Zach Riggle c0b714f965 Add Twitter link, fix style to be consistent
Fixes #373
2015-01-07 13:20:09 -08:00
Zach Riggle 0ffcee5667 Merge pull request #365 from Gallopsled/logging-cleanup
Attempt at improving logging
2015-01-07 11:22:27 -08:00
Zach Riggle ec262b2d70 Merge pull request #339 from Gallopsled/travis-editable-install
Have travis do an editable installation.  This is how we actually use it...
2015-01-06 17:23:55 -08:00
Zach Riggle 2b44d375f7 Merge pull request #372 from Gallopsled/readline-float-default
readline now lets the prompt+input float by default.  replacements for `raw_input` and `input` are installed.
2015-01-06 17:23:07 -08:00
Morten Brøns-Pedersen a072a4be40 readline now lets the prompt+input float by default. replacements for raw_input and input are installed. 2015-01-07 01:06:22 +01:00
Zach Riggle f3ab8b4edd Merge pull request #371 from Gallopsled/readline-eof
`term.readline` now correctly handles EOF on `sys.stdin`, and ^j is interpreted as <enter> (^m)
2015-01-06 15:47:23 -08:00
Morten Brøns-Pedersen a58815df42 letting term.term take over sys.stderr apparently breaks the doctests, so have Travis set env var PWNLIB_NOTERM 2015-01-06 21:00:36 +01:00
Morten Brøns-Pedersen 3e20b93378 term.readline now correctly handles EOF on sys.stdin, and ^j is interpreted as <enter> (^m)
This is useful if a file is redirected to stdin.
2015-01-06 19:55:07 +01:00
Morten Brøns-Pedersen ef5cfeb6c4 changed sys.stdout to sys.stderr a number of places 2015-01-06 19:40:59 +01:00
br0ns 2411161ed5 Merge pull request #367 from Gallopsled/tube-aliases
Add aliases for all tube methods for read*=recv* and write*=send*
2015-01-06 18:38:34 +01:00
Morten Brøns-Pedersen 97f04e4eb7 removed read_thread (alias for recv_thread) as it is not part of the API 2015-01-06 18:30:17 +01:00
Morten Brøns-Pedersen d72a83355e redirect logging output to sys.stdout so we can catch it in doctests 2015-01-06 12:45:57 +01:00
Morten Brøns-Pedersen c73b731c32 delegated a few more calls to the underlying logger 2015-01-06 12:45:57 +01:00
Morten Brøns-Pedersen 3705db475e fixed issue with multiple values for "level" keyword 2015-01-06 12:45:57 +01:00
Morten Brøns-Pedersen 3dee2bbe41 mega commit -- attempt at improving logging 2015-01-06 12:45:57 +01:00
br0ns d573f70576 Merge pull request #368 from Gallopsled/tubes-docs
Update documentation for tubes, and improve the layout.
2015-01-06 11:06:09 +01:00
Jonas Rudloff c4b28836b5 Merge pull request #364 from Gallopsled/issue-363
Change Args to Arguments
2015-01-06 11:00:25 +01:00
Zach Riggle d00a51ad47 Move sock above remote/listen 2015-01-05 23:43:10 -08:00
Zach Riggle d75910c817 Update documentation for tubes, and improve the layout.
Also, add the serial tube to documentation.
2015-01-05 23:36:16 -08:00
Zach Riggle 0ee0cd7ac0 Add aliases for all tube methods for read*=recv* and write*=send* 2015-01-05 23:34:13 -08:00
Zach Riggle 404f0958d0 Change Args to Arguments 2015-01-05 15:36:47 -08:00
Zach Riggle b2d2c64da3 Add expected build time
Tested on a Macbook Pro by building *all* of the architectures.  I presume desktops would be faster.
2015-01-05 15:30:41 -08:00
Zach Riggle a334bdf343 Merge pull request #358 from Gallopsled/update-stuff-for-2.2.0
Update stuff after the 2.2.0 release
2015-01-05 11:41:45 -05:00
Mathias Svensson 899a3b4410 and version.py 2015-01-05 17:34:42 +01:00
Mathias Svensson 30df1e638a Update stuff for 2.2.0 release 2015-01-05 17:32:38 +01:00
Kristoffer Søholm 3888052ba5 Merge pull request #354 from Gallopsled/log-remove-ansilen
remove `pwnlib.log.ansilen` as it is no longer used
2015-01-05 16:10:00 +01:00
Kristoffer Søholm dde3a2e415 Merge pull request #355 from Gallopsled/setup.py-openbsd
Ugly hack to be able to install on OpenBSD
2015-01-05 16:02:07 +01:00
Mathias Svensson 273ee96fc8 Ugly hack to be able to install on OpenBSD 2015-01-05 15:33:10 +01:00
Morten Brøns-Pedersen 5f28e1461d remove pwnlib.log.ansilen as it is no longer used 2015-01-05 13:58:54 +01:00
Kristoffer Søholm 8a4ff79e4d Merge pull request #345 from Gallopsled/https-links
Use https instead of http wherever possible.
2015-01-05 12:42:26 +01:00
Jonas Rudloff 3062c456f8 Merge remote-tracking branch 'origin/master' into syscall-7arg
Conflicts:
	pwnlib/shellcraft/templates/i386/linux/syscall.asm
2015-01-05 12:41:02 +01:00
Mathias Svensson 8662141d45 Merge pull request #349 from Gallopsled/binutils-osx-remove
Remove all special handling for OSX binutils, since it is broken
2015-01-05 12:31:37 +01:00
Mathias Svensson d8cf68f563 Merge pull request #352 from Gallopsled/update-gitignore
Added robots.txt to gitignore
2015-01-05 12:31:10 +01:00
Jonas Rudloff 6be81d0b7e fixes #351 syscall can now accept 7 arguments 2015-01-05 12:25:44 +01:00
Kristoffer Søholm 6f0c3ccbb7 Added robots.txt to gitignore 2015-01-05 12:25:01 +01:00
Zach Riggle 24f25361c7 Remove all special handling for OSX binutils, since it is broken. Fixes #347
Conflicts:
	pwnlib/asm.py
2015-01-04 21:32:38 -05:00
Mathias Svensson faab1eb299 Use https instead of http wherever possible.
Note that this means that I changed a few of the links from
http://docs.pwntools.org to https://pwntools.readthedocs.org as we do
not currently have https on pwntools.com
2015-01-05 01:11:02 +01:00
Zach Riggle 6225901ba8 Merge pull request #343 from Gallopsled/iss-342
Throw an AttributeError on pwnlib.term.text when an unknown attribute is requested
2015-01-04 18:38:31 -05:00
Mathias Svensson 546fcf8ca7 Merge pull request #341 from Gallopsled/no-exe
Remove the executable bit from things that aren't scripts
2015-01-05 00:22:16 +01:00
Mathias Svensson 91288759c4 Fixed #342 2015-01-05 00:21:18 +01:00
Zach Riggle ff2b4463af Merge pull request #333 from Gallopsled/mega-commit-fixup
Replace instances of mov and int 0x80 with the ${mov} and ${syscall} templates
2015-01-04 18:18:49 -05:00
Zach Riggle ca4b7263f8 Remove the executable bit from things that aren't scripts 2015-01-04 15:05:56 -08:00
Robert Larsen c6ff8417e5 Merge pull request #331 from Gallopsled/amd64-update
Optimized mov, pushstr and syscall for amd64 and updated sh to use them
2015-01-05 00:02:54 +01:00
IdolfHatler facb9ca3a0 Merge pull request #313 from Gallopsled/shellcraft-push
Add ${push} for i386 and amd64 that just uses the pushstr code
2015-01-04 23:40:39 +01:00
Mathias Svensson 3fafbab48f And a doctest 2015-01-04 23:32:10 +01:00
Mathias Svensson 685aaa0458 I forgot a few things in the mega commit. Here they are 2015-01-04 23:29:58 +01:00
IdolfHatler 870e8c1878 Merge pull request #340 from RobertLarsen/thumb-echo
Added pushstr shellcode for thumb.
2015-01-04 23:28:12 +01:00
Mathias Svensson 30d85f07f4 I swear it worked in my machine before, but then somebody went ahead and merged my other PR without me noticing 2015-01-04 23:25:03 +01:00
Mathias Svensson b5a68b6f0b A bazillion doctests 2015-01-04 23:18:41 +01:00
Mathias Svensson a69b2229cb Optimized mov, pushstr and syscall for amd64 and updated sh to use them 2015-01-04 23:18:41 +01:00
Robert Larsen ef0c2173fa Added pushstr shellcode for thumb. 2015-01-04 22:49:58 +01:00
Jonas Rudloff f4d2be9c88 Merge pull request #337 from Gallopsled/shellcraft-newline-outside
Shellcraft functions will now have a single trailing newline
2015-01-04 19:58:46 +01:00
Zach Riggle ad513db436 Have travis do an editable installation. This is how we actually use it, so this is what should work. 2015-01-04 13:16:42 -05:00
Mathias Svensson 8bb6595d38 Made the shellcode formatting a little nicer 2015-01-04 19:16:22 +01:00
Zach Riggle e796338d63 Merge pull request #334 from Gallopsled/use-specialized-first
Try the local assembler *last* instead of *first*.  Force custom-built assemblers to contain the substring 'linux'
2015-01-04 13:05:29 -05:00
Mathias Svensson c9ad57e159 Fixed a doctest 2015-01-04 19:05:06 +01:00
IdolfHatler 22a1f9760f Merge pull request #335 from Gallopsled/issue-263
Fix stackhunter and pushstr
2015-01-04 19:02:32 +01:00
Mathias Svensson 521e675ea9 Removed an unused argument, made the sign/endianness explicit for the pack 2015-01-04 18:59:28 +01:00
Zach Riggle 5da416a179 Merge pull request #329 from Gallopsled/log-geteffectivelevel
Fixed the behavior of `log.Logger.getEffectiveLevel`
2015-01-04 12:58:27 -05:00
Zach Riggle 79129c1d52 Add doctests 2015-01-04 12:44:03 -05:00
Zach Riggle 6752558254 Fix stackhunter and pushstr 2015-01-04 12:44:03 -05:00
IdolfHatler 2ba70b9433 Merge pull request #322 from Gallopsled/shellcraft-tests
Shellcraft tests
2015-01-04 18:40:59 +01:00
Mathias Svensson ccf26c19e2 Only try linux assemblers 2015-01-04 18:40:08 +01:00
Mathias Svensson 86b930bfb8 Shellcraft functions will now have a single trailing newline to their bodies, but only when called from outside shellcraft 2015-01-04 18:38:22 +01:00
Zach Riggle d15ef3e7a7 Merge pull request #332 from Gallopsled/remove-workaround
Removed the no-longer-needed workaround for #317
2015-01-04 12:26:24 -05:00
Zach Riggle 8b1d59bf0f Example 2015-01-04 12:23:43 -05:00
Mathias Svensson 5c89d6d116 We should try to use the non-local assembler before attempting to use the local assembler 2015-01-04 17:26:17 +01:00
Jonas Rudloff 15a5472b0e Merge pull request #327 from Gallopsled/correct-syscall-shellcode
Stopped using amd64.syscall and i386.syscall, as they will not work without a set context
2015-01-04 17:21:12 +01:00
Zach Riggle c71978e4c1 Restrict size of values pushed 2015-01-04 11:17:14 -05:00
Zach Riggle 71e2582949 Enable fall back to the literal entered by the user to support pushing registers 2015-01-04 11:16:28 -05:00
Zach Riggle f45dd08413 Add ${push} for i386 and amd64 that just uses the pushstr code 2015-01-04 11:16:28 -05:00
IdolfHatler 9d988bbda3 Merge pull request #312 from Gallopsled/shellcode
Made stager shellcode more readable + 21 /bin/sh shellcode(down from 25 bytes)
2015-01-04 17:11:49 +01:00
Jonas Rudloff 9d41fff8f2 make stager shellcode more readable 2015-01-04 17:00:28 +01:00
Mathias Svensson b8df835ef5 Removed the no-longer-needed workaround for #317 2015-01-04 16:14:46 +01:00
Jonas Rudloff 770e9dcc5d Merge pull request #326 from Gallopsled/sh-21-bytes
Made i386.linux.sh be 22 bytes again while keeping readability up
2015-01-04 14:28:16 +01:00
Mathias Svensson f25586d858 Fixed the docs 2015-01-04 14:22:20 +01:00
Mathias Svensson 2f22fc47af Compromise between readability and size of shellcode 2015-01-04 14:13:21 +01:00
Morten Brøns-Pedersen feb2dd3985 Changed the behavior of log.Logger.getEffectiveLevel
Before `log.Logger.getEffectiveLevel` would return the log level of the current context or the parent logger depending on which was more verbose.  This lead to some surprising behavior.  Example:
```
from pwn import *
context(log_level = 'DEBUG')

log.setLevel(logging.WARNING)
log.debug('debug')
log.info('info')
log.warning('warning')
```

We would expect to see only a warning, but since `context.log_level` is a more verbose level we will see all three messages.

This commit changes `log.Logger.getEffectiveLevel` to work exactly as `logging.Logger.getEffectiveLevel` except if the current logger is named 'pwnlib', in which case the log level of the current context is returned.
2015-01-04 13:28:03 +01:00
Kristoffer Søholm 8a8c7454ad Merge pull request #328 from Gallopsled/tubes-listen-close-bugfix
Check that a connection was actually established before calling `close` in `pwnlib.tubes.listen`.
2015-01-04 13:01:24 +01:00
Morten Brøns-Pedersen 13fa7855d6 check that a connection was actually established before calling close 2015-01-04 12:45:15 +01:00
Mathias Svensson 1fe4217e2a Updated a docstring 2015-01-04 11:41:59 +01:00
Mathias Svensson 3b872e9b33 Optimized the mov, pushstr and syscall shellcodes for less whitespace in the output 2015-01-04 11:41:49 +01:00
Mathias Svensson 66232941b0 Stopped using amd64.syscall and i386.syscall, as they will not work without a set context 2015-01-04 11:28:22 +01:00
Mathias Svensson 8d07ba6dc6 Made i386.linux.sh be 21 bytes again while keeping readability up 2015-01-04 11:26:41 +01:00
Zach Riggle b4ceaaeea4 Merge pull request #325 from Gallopsled/ui-bugfix
bugfix: changed `log.output` to `term.output` in `ui.options` and `ui.more` as `log.output` no longer exists
2015-01-03 23:22:57 -05:00
Morten Brøns-Pedersen 8b758cd43d bugfix: changed log.output to term.output in ui.options and ui.more as log.output no longer exists 2015-01-04 00:12:15 +01:00
Zach Riggle f465f11072 Merge pull request #318 from Gallopsled/shellcraft-docs
Include documentation for alternate architectures
2015-01-03 18:09:35 -05:00
br0ns 9297b23f41 Merge pull request #324 from Gallopsled/iss-307
Fixed #307
2015-01-04 00:05:57 +01:00
br0ns 9523cbccb9 Merge pull request #310 from Gallopsled/ssh-context-manager
Add a context manager, and put all of the doctests inside of them.  This...
2015-01-03 23:57:11 +01:00
Mathias Svensson 1ce101eb7c Fixed #307 2015-01-03 23:40:32 +01:00
Zach Riggle 90732d681f Merge pull request #302 from Gallopsled/asm-mega-rewrite
Enhance shellcraft by adding sys all templates and using {mov} to handle user input
2015-01-03 16:14:00 -05:00
Zach Riggle 19ddc24a0f Merge pull request #323 from Gallopsled/iss-317
Enable direct importation of shell craft modules.  Fixed #317
2015-01-03 16:11:31 -05:00
Mathias Svensson 395ff15c4c Fixed #317 2015-01-03 11:35:12 +01:00
Kristoffer Søholm 74583f9ad9 Merge pull request #282 from Gallopsled/psutil-getpid-debian-systemd
Remove references to "init" as PID 1
2015-01-03 02:36:39 +01:00
Zach Riggle 783deba7f4 Merge pull request #321 from Gallopsled/asm-binutils-link
Update binutils documentation link
2015-01-02 20:02:21 -05:00
Zach Riggle 3b9fac6115 Update binutils documentation link 2015-01-02 20:00:18 -05:00
Zach Riggle 02a7fb27fc Include documentation for alternate architectures 2015-01-02 19:34:27 -05:00
IdolfHatler 72539f7f64 Merge pull request #308 from Gallopsled/hex-trailing-L
Replace builtin hex with one that doesn't do stupid things
2015-01-03 00:53:03 +01:00
Zach Riggle 54a2c7ddaf Merge pull request #315 from Gallopsled/ftp-220-failure
Ignore what comes after 220 so we dont fail
2015-01-02 18:18:36 -05:00
Zach Riggle 0bdbc3ff0b Ignore what comes after 220 so we dont fail 2015-01-02 18:02:33 -05:00
IdolfHatler 0119dd2b64 Merge pull request #309 from Gallopsled/shellcraft-ret-value
Add return values for all RET shellcrafts
2015-01-02 22:26:46 +01:00
Zach Riggle d949c8e8a0 Add a context manager, and put all of the doctests inside of them. This should make the failures less verbose. 2015-01-02 15:51:01 -05:00
Zach Riggle 6a0262dd9f Replace builtin hex with one that doesn't do stupid things 2015-01-02 14:57:52 -05:00
Zach Riggle 29590a38db Add return values for all RET shellcrafts 2015-01-02 14:41:19 -05:00
Zach Riggle 362b16ba8e Merge pull request #306 from Gallopsled/import-cleanup
Another import cleanup
2015-01-02 14:12:49 -05:00
Mathias Svensson 7d97c1c82a Another import cleanup 2015-01-02 19:52:02 +01:00
Zach Riggle 8a2cd3bb0c Merge pull request #305 from Gallopsled/tube-recvn-recvrepeat-timeout
Fix timeout behavior for recvn and recvrepeat.  Fixes #303.
2015-01-02 13:35:56 -05:00
Zach Riggle 24942e01e7 Fix timeout behavior for recvn and recvrepeat 2015-01-02 13:32:12 -05:00
Zach Riggle d274105601 Merge branch 'countdown-active' 2015-01-02 13:04:59 -05:00
Zach Riggle c23d42e939 Fix countdown_active 2015-01-02 13:04:20 -05:00
Zach Riggle 32ac3e6e83 Merge pull request #268 from Gallopsled/tube-recvrepeat-timeout
The default timeout for `pwnlib.tubes.tube.recvrepeat()` should be short.  Set to 0.05s in this PR.
2015-01-02 12:45:02 -05:00
Mathias Svensson 5267f4cfe9 Yes, Travis did know. But only because doctests. 2015-01-02 17:07:50 +01:00
Mathias Svensson 538b688c05 Mega commit. I have no idea if this works and neither does Travis. 2015-01-02 14:53:24 +01:00
Robert Larsen bdb1201d1c Merge pull request #298 from Gallopsled/i386-echo
Added echo shellcode for i386
2015-01-02 14:10:38 +01:00
Robert Larsen 238364894e Merge pull request #297 from Gallopsled/pushstr-fix
There is no instruction called pushb
2015-01-02 14:08:30 +01:00
Robert Larsen 003b9e931c Merge pull request #296 from Gallopsled/update-links
Update module links in globals.rst
2015-01-02 14:02:05 +01:00
Robert Larsen 6f753740c7 Merge pull request #295 from Gallopsled/update-contributing
Updated CONTRIBUTING.md a bit
2015-01-02 14:01:20 +01:00
Robert Larsen eaed986668 Merge pull request #301 from Gallopsled/amd64-echo
Added amd64.linux.echo shellcode
2015-01-02 13:56:42 +01:00
Robert Larsen 9a59906b52 Merge pull request #299 from Gallopsled/amd64-pushstr
amd64.pushstr shellcode
2015-01-02 13:46:49 +01:00
Robert Larsen 4ff61fb9b9 Merge pull request #300 from Gallopsled/mov-fix
Fixed a bug in amd64.mov.
2015-01-02 13:32:53 +01:00
Mathias Svensson 742ae3dcd6 Added amd64.linux.echo shellcode 2015-01-02 13:12:22 +01:00
Mathias Svensson b89e932053 Fixed a bug in amd64.mov. 2015-01-02 13:08:30 +01:00
Mathias Svensson 869050bfd9 Added echo shellcode for i386 2015-01-02 13:07:06 +01:00
Mathias Svensson e43bf9ed74 amd64.pushstr shellcode 2015-01-02 13:04:44 +01:00
Mathias Svensson f54621db55 Updated the pushstr a bit more 2015-01-02 12:36:20 +01:00
Mathias Svensson 53654f66d4 There is no instruction called pushb 2015-01-02 11:50:55 +01:00
Mathias Svensson f6eff226c3 Update module links in globals.rst 2015-01-02 11:46:13 +01:00
Mathias Svensson e8e4ce0476 Updated CONTRIBUTING.md a bit 2015-01-02 11:35:47 +01:00
Robert Larsen d4a430596e Merge pull request #294 from Gallopsled/remove-binutils
Removed pre-compiled binutils as they are not used anymore
2015-01-02 11:20:31 +01:00
Mathias Svensson 1dfeb59acd Removed pre-compiled binutils as they are not used anymore 2015-01-02 11:17:50 +01:00
IdolfHatler e3b269ee5c Merge pull request #290 from Gallopsled/new-readme
Update README to point to new installation and contribution instructions
2015-01-02 11:11:42 +01:00
IdolfHatler 4d686214b8 Merge pull request #289 from Gallopsled/contributing
Add contributing.md
2015-01-02 11:11:33 +01:00
IdolfHatler 21bd92fa06 Merge pull request #288 from Gallopsled/installation-documentation
Add better documentation for installation.
2015-01-02 11:11:21 +01:00
IdolfHatler bd73e5032a Merge pull request #287 from Gallopsled/i386_to_amd64
Fix i386_to_amd64 and pushstr against GNU GAS syntax
2015-01-02 10:59:07 +01:00
Zach Riggle e5ee13c7ce Merge pull request #293 from Gallopsled/keepends
Change keep to keepends
2015-01-02 03:12:29 -05:00
Zach Riggle 235412903a Merge pull request #292 from Gallopsled/timeout-object-name
Give default timeout a name so that it looks better in the HTML documentation vs <object 0xFooBar>
2015-01-02 02:50:32 -05:00
Zach Riggle cfc8c04f5d Change keep to keepends 2015-01-02 02:49:08 -05:00
Zach Riggle b58d3f0f89 Give default timeout a name so that it looks better in the HTML documentation (vs. <object 0xf00bar>) 2015-01-02 02:36:48 -05:00
Zach Riggle ed308c5842 Merge pull request #291 from Gallopsled/tube-newline
Use user-provided newline
2015-01-02 02:01:35 -05:00
Zach Riggle 7c4f13e504 Use user-provided newline 2015-01-02 01:59:04 -05:00
Zach Riggle dbf5145bbf Remove references to "init" as PID 1 which is not accurate for Debian after switching to systemd.
Fixes #250
2015-01-01 23:55:53 -05:00
Zach Riggle 40e09baa71 Update README to point to new installation and contribution instructions 2015-01-01 23:39:19 -05:00
Zach Riggle 6eaed4082f Add contributing.md 2015-01-01 23:20:29 -05:00
Zach Riggle 8c29c2d41e Update doctests 2015-01-01 23:06:16 -05:00
Zach Riggle 84aae27d22 Add better documentation for installation.
Specifically, use "pip install -e" isntead of environment paths.
Give instructions for installing binutils.
2015-01-01 23:04:48 -05:00
Zach Riggle 33b70138db Fix i386_to_amd64 and pushstr against GNU GAS syntax 2015-01-01 22:13:42 -05:00
IdolfHatler 0e00dfa5f9 Merge pull request #283 from Gallopsled/issue-171
Fix weird interaction between tube, sock, and ssh_channel caused by a ra...
2015-01-02 00:20:06 +01:00
Zach Riggle 3c528bce11 Fix weird interaction between tube, sock, and ssh_channel caused by a race condition on whether the return value would propagate quickly when calling .recvall().
Fixes #171
2015-01-01 17:58:47 -05:00
Zach Riggle 38ab3d59e3 Change behavior of .clean to return the data received 2015-01-01 16:20:01 -05:00
Zach Riggle 67d27c33fc Merge pull request #281 from Gallopsled/safeeval-in-toplevel-documentation
Added documentation for #278
2015-01-01 16:09:20 -05:00
Zach Riggle 4209d90daa Merge pull request #261 from Gallopsled/import-cleanup
Big import cleanup. Also removes context.context.thread
2015-01-01 15:57:29 -05:00
IdolfHatler 90afaa5817 Merge pull request #249 from zachriggle/ssh-travis
SSH Tests on Travis
2015-01-01 21:33:52 +01:00
Mathias Svensson 82db1ad0ab Updated some documentation for pwnlib.context.Thread and removed the lower-case alias for it 2015-01-01 21:27:29 +01:00
Zach Riggle 25ece1dcfe Move Thread underneath the ContextType class so that pwnlib.context.Thread == pwnlib.context.context.Thread 2015-01-01 21:24:18 +01:00
Mathias Svensson a69fb15fd7 Removed a cycle, that was unnecessary anyways 2015-01-01 21:23:54 +01:00
Mathias Svensson 00d919966b Re-added a removed re-export, because I thought it was a normal import 2015-01-01 21:23:54 +01:00
Mathias Svensson da40529b7e Added the right Thread top toplevel 2015-01-01 21:23:54 +01:00
Mathias Svensson ea058d20ae Make it pass tests (maybe?) 2015-01-01 21:23:54 +01:00
Mathias Svensson 0f1a445a89 Big import cleanup. Also removes context.context.thread 2015-01-01 21:23:54 +01:00
Mathias Svensson e8b92c6bed Added documentation for #278 2015-01-01 21:14:24 +01:00
Zach Riggle 566448e34c Split SSH setup into its own file 2015-01-01 15:13:51 -05:00
Zach Riggle bb3d98f95b Enable testing SSH on Travis CI 2015-01-01 15:10:12 -05:00
IdolfHatler fbd7bb69d9 Merge pull request #280 from Gallopsled/timeout-None-forever
Make ssh object inherit from Timeout so that it can use Timeout.default ...
2015-01-01 21:00:34 +01:00
IdolfHatler 93396dd3da Merge pull request #275 from Gallopsled/asm-osx-sane
Make pwnlib.asm.asm more robust
2015-01-01 20:57:16 +01:00
IdolfHatler 8b8cae8b5c Merge pull request #276 from Gallopsled/travis-install-script
Split Travis installation steps into its own script
2015-01-01 20:55:09 +01:00
Zach Riggle 66aeaec73c Make ssh object inherit from Timeout so that it can use Timeout.default and the related semantics 2015-01-01 14:55:01 -05:00
Zach Riggle e79dac429d Merge pull request #279 from Gallopsled/timeout-None-forever
Update Timeout semantics in a few more places
2015-01-01 14:39:54 -05:00
Zach Riggle 9b66afbb41 Update semantics in a few more places 2015-01-01 14:36:55 -05:00
Zach Riggle 27813a86e8 Merge pull request #255 from zachriggle/timeout-None-forever
Update Timeout semantics
2015-01-01 14:24:33 -05:00
Zach Riggle cce361da90 Merge pull request #278 from Gallopsled/safeeval-in-toplevel
Added safeeval toplevel
2015-01-01 14:19:02 -05:00
Zach Riggle feea70aba3 Clean up a bit more 2015-01-01 14:17:03 -05:00
Zach Riggle 02ffff6f76 Fix regression from 023b7ba 2015-01-01 14:15:38 -05:00
Morten Brøns-Pedersen 023b7baf47 cleaned code up a bit 2015-01-01 14:01:47 -05:00
Morten Brøns-Pedersen 1a8090d29e more slight performance improvements in pwnlib.tubes.tube 2015-01-01 14:01:47 -05:00
Morten Brøns-Pedersen 3aac624b56 slight performance improvement in pwnlib.tubes.tube.recvuntil() 2015-01-01 14:01:47 -05:00
Zach Riggle 5b45bd957b Fix regressions and get performance back up 2015-01-01 14:01:47 -05:00
Zach Riggle cf9c5d6ee9 Change Timeout module path 2015-01-01 14:01:47 -05:00
Zach Riggle 199c7869ac Update Timeout semantics to use None to imply "never", and to use a sentinel object for default timeouts 2015-01-01 14:01:47 -05:00
Zach Riggle 84e4444923 Merge pull request #271 from Gallopsled/readline-utf8
Make `pwnlib.term.readline()` return a utf8 encoded `str` instead of a `unicode`.  This is the behavoir of the built-in readline, so we should mimic that.
2015-01-01 13:24:16 -05:00
Mathias Svensson 208ef471c6 Added safeeval toplevel 2015-01-01 17:07:21 +01:00
Zach Riggle 063a1a465e Binutils for alternate architectures doesn't add the LC_SEGMENT crap. The -j flag takes wildcards, so use it. Verified with stock binutils and binutils-sparc built via homebrew 2014-12-30 15:39:36 -05:00
Zach Riggle 214862e4f7 Split Travis installation steps into its own script so we can check the OS 2014-12-30 15:32:16 -05:00
Zach Riggle a10dc9d920 Merge pull request #254 from zachriggle/autoprogram
Enable autogeneration of command-line tool documentation
2014-12-30 13:09:58 -05:00
Zach Riggle 35ef5589b6 Remove tabs 2014-12-30 11:10:01 -05:00
Zach Riggle b596f0d6b6 Merge pull request #264 from Gallopsled/tube-log-debug
bugfix: use correct log level in `pwnlib.tubes.tube`
2014-12-30 10:48:30 -05:00
Zach Riggle 1fd84d5389 Merge pull request #267 from Gallopsled/tube-bugfix-recvline-contains
bugfix: `pwnlib.tubes.tube.recvline_contains` now works when a single item is given
2014-12-30 10:47:21 -05:00
Zach Riggle 34e6bab46a Merge pull request #269 from Gallopsled/tube-recvall-logging
Logging in `pwnlib.tubes.tube.recvall()` reported a wrong size upon completion. Fixed that.
2014-12-30 10:29:15 -05:00
Zach Riggle d33499f660 Merge pull request #270 from Gallopsled/log-waitfor-bugfix
Removed duplicate status throttling used by `pwnlib.log.waitfor`.
2014-12-30 10:28:27 -05:00
Morten Brøns-Pedersen b348c1821d make pwnlib.term.readline() return a utf8 encoded str instead of a unicode 2014-12-30 14:49:27 +01:00
Morten Brøns-Pedersen 9caf00b8e3 removed duplicate status throttling used by pwnlib.log.waitfor 2014-12-30 13:25:41 +01:00
Morten Brøns-Pedersen 9ccd0f4c12 bugfix: fixed logging in pwnlib.tubes.tube.recvall() 2014-12-30 13:20:39 +01:00
Morten Brøns-Pedersen 275ba56338 added doctests to pwnlib.tubes.tube.recvline_contains() 2014-12-30 12:58:49 +01:00
Morten Brøns-Pedersen b3cd49de98 bugfix: pwnlib.tubes.tube.recvline_contains now works when a single item is given 2014-12-27 22:06:19 +01:00
Zach Riggle 95b7aed1e2 Merge pull request #266 from Gallopsled/log-show-spinner-immediately
bugfix: show spinners immediately
2014-12-27 15:08:26 -05:00
Zach Riggle a4751a617c Merge pull request #265 from Gallopsled/tube-clean-and-log
better logging output in `pwnlib.tubes.tube.clean_and_log`
2014-12-27 15:07:35 -05:00
Morten Brøns-Pedersen 3bf3145b4c updated doctest 2014-12-27 20:57:10 +01:00
Morten Brøns-Pedersen 213936fead bugfix: show spinners immediately 2014-12-27 19:38:01 +01:00
Morten Brøns-Pedersen b235e4f42a better logging output in pwnlib.tubes.tube.clean_and_log 2014-12-27 19:13:53 +01:00
Kristoffer Søholm 2c92f24eb9 Merge pull request #262 from Gallopsled/stagershellcode
stager shellcode and findpeerstager shellcode
2014-12-27 19:10:42 +01:00
Jonas Rudloff 97097743b8 get stager shellcode to use i386.mov 2014-12-27 19:08:35 +01:00
Morten Brøns-Pedersen 8335f611be bugfix: use correct log level in pwnlib.tubes.tube 2014-12-27 19:06:32 +01:00
IdolfHatler a1d7152855 Merge pull request #259 from Gallopsled/log-waitfor-default-success
If not explicitly set, spinners are marked as succeeded unless an exception was raised in which case they are marked as failed.
2014-12-27 13:37:28 +01:00
IdolfHatler ababe3d3f2 Merge pull request #257 from Gallopsled/log-remove-done-functions
Gets rid of `pwnlib.log.done_*`, since we no longer have a spinner stack.  "Fixes" #229.
2014-12-27 13:36:45 +01:00
Morten Brøns-Pedersen 3c1b61eb4d if not explicitly set, spinners are marked as succeeded unless an exception was raised in which case they are marked as failed 2014-12-27 13:28:27 +01:00
Morten Brøns-Pedersen 56a8f1438b updated pwnlib.util.proc.wait_for_debugger() to not use pwnlib.log.done_success() 2014-12-27 13:02:56 +01:00
Morten Brøns-Pedersen a5062ed77f updated pwnlib.ui.pause() to not use pwnlib.log.done_success() 2014-12-27 13:00:44 +01:00
Morten Brøns-Pedersen fcbda7276e updated pwnlib/data/useragents/download-useragents.py to not use pwnlib.log.done_success() 2014-12-27 12:58:16 +01:00
Morten Brøns-Pedersen e00f417d19 removed pwnlib.log.done_* 2014-12-27 12:33:54 +01:00
Jonas Rudloff 59804af704 stager shellcode and findpeerstager shellcode 2014-12-27 12:17:36 +01:00
br0ns 30f2f9ef14 Merge pull request #256 from Gallopsled/text-when
removed `pwnlib.term.text.enabled` in favor of `pwnlib.term.text.when`
2014-12-27 12:12:21 +01:00
Morten Brøns-Pedersen 22b49e2f6a removed pwnlib.term.text.enabled in favor of pwnlib.term.text.when 2014-12-27 12:05:59 +01:00
Zach Riggle 637635e9f6 Restrict the scope of the modified context defaults so we don't break everything else 2014-12-26 17:39:40 -05:00
Zach Riggle a79663e59c Get rid of test text 2014-12-26 17:33:25 -05:00
Zach Riggle 8be05dd3eb Update requirements.txt 2014-12-26 17:29:58 -05:00
Zach Riggle b06998a740 Break commit into two parts for proper rename tracking 2014-12-26 17:29:58 -05:00
Zach Riggle 46db5ee48a Enable autogeneration of command-line tool documentation from the help output. In order to achieve this, we move from having a "bin" directory to using the "entry_points" mechanism. 2014-12-26 17:29:54 -05:00
Zach Riggle 25bef46da9 Merge pull request #243 from zachriggle/recvline-contains
Add a recvline_contains routine. Fixes #239.
2014-12-26 12:22:50 -05:00
Zach Riggle 8a72aba912 Merge pull request #248 from zachriggle/tube-recvuntil-str-find-bufsize-fastpath2
Improve tube performance. Fixes #238
2014-12-26 12:22:03 -05:00
Zach Riggle 943aad7a66 Merge pull request #253 from kristoff3r/amd64-mov-shellcode
Add mov shellcode for amd64
2014-12-26 12:20:28 -05:00
Zach Riggle 38af8aceb9 Finish docstring and add test 2014-12-25 15:30:22 -05:00
Kristoffer Søholm 9d94de9565 Merge pull request #247 from zachriggle/dynelf-nodecorator
Add DynELF example and documentation.  Remove requirement for MemLeak decorator.
2014-12-25 21:26:06 +01:00
Kristoffer Søholm a86a00ae9d Add mov shellcode for amd64 2014-12-25 21:11:28 +01:00
Zach Riggle de9dc3267a Merge pull request #252 from Gallopsled/feature-i386-mov-shellcode
Ported old mov shellcode for i386
2014-12-25 13:29:25 -05:00
Kristoffer Søholm 5ba1dcc0f1 Fixed details 2014-12-25 19:17:11 +01:00
Kristoffer Søholm f16966ab0b Ported old mov shellcode for i386 2014-12-25 19:04:47 +01:00
Morten Brøns-Pedersen 1c0d37597d tighter code in pwnlib.tubes.tube.recvuntil() 2014-12-25 16:06:10 +01:00
Zach Riggle aa1f3c1ad4 Fix regression which causes infinite loop 2014-12-24 23:27:47 -05:00
Zach Riggle e885635114 Fix doctest so it can be copy-pasted 2014-12-24 19:45:49 -05:00
Zach Riggle 358b5e1ff0 Fix syntax error and some of the tests 2014-12-24 19:07:28 -05:00
Zach Riggle 1255aa9c3a Remove double call to settimeout_raw. This is set via property update. See timeout_change. 2014-12-24 18:35:13 -05:00
Zach Riggle 2c1f357d39 Fastpath2. Minor optimizations 2014-12-24 18:30:51 -05:00
Zach Riggle cb9a39959c Add recvline_contains routine 2014-12-24 18:00:31 -05:00
Zach Riggle 56fd66f73b Fast paths for timeout 2014-12-24 11:53:18 -05:00
Zach Riggle 2a993650b2 Reduce buffer size to 4096 2014-12-24 11:46:39 -05:00
Zach Riggle 11f2671e33 Add DynELF example and documentation. Remove requirement for MemLeak decorator. 2014-12-24 09:24:44 -05:00
IdolfHatler e0563cbb70 Merge pull request #244 from zachriggle/recvall-recvrepeat-break-on-eoferror
Break on EOFError for recvrepeat and recvall
2014-12-23 17:23:22 +01:00
Zach Riggle acdc6bce86 Break on EOFError for recvrepeat 2014-12-23 11:06:35 -05:00
Zach Riggle 6747db60a1 Replace re.search with string.find 2014-12-23 11:03:55 -05:00
Zach Riggle 7e01b03090 Merge pull request #236 from RobertLarsen/master
Added two characters to the list of regex special chars.
2014-12-23 07:45:57 -05:00
Robert Larsen cfe29e7948 Added two characters to the list of regex special chars. 2014-12-23 13:23:29 +01:00
br0ns ea46132af6 Merge pull request #235 from Gallopsled/hexdump-nonprintable-chars
hexdump now shows non-printable chars as dots, and regards space as printable
2014-12-23 13:21:18 +01:00
Morten Brøns-Pedersen 54736623de hexdump now shows non-printable chars as dots, and regards space as printable 2014-12-23 14:06:37 +01:00
IdolfHatler 65037a6d00 Merge pull request #234 from Gallopsled/missing-docs-issue-215
Fixed #215
2014-12-23 12:39:34 +01:00
Morten Brøns-Pedersen 92b311d655 fixed broken doctest in pwnlib.util.web.wget 2014-12-23 13:01:02 +01:00
Morten Brøns-Pedersen abdf0100e4 added docstring to pwnlib.util.hashes 2014-12-23 13:00:22 +01:00
Morten Brøns-Pedersen 3cfca21ace updated docstring and fixed broken doctest 2014-12-23 12:59:47 +01:00
Morten Brøns-Pedersen d997a6922a added util/web.rst 2014-12-23 12:59:04 +01:00
Morten Brøns-Pedersen 6855077ebd added util/hashes.rst 2014-12-23 12:58:52 +01:00
Morten Brøns-Pedersen 7d590c974c added useragents.rst 2014-12-23 12:58:39 +01:00
br0ns 1f61ea8600 Merge pull request #208 from Gallopsled/log_error_exception
Implements the changes suggested in #207.
2014-12-23 11:25:26 +01:00
IdolfHatler 11f33fba1b Merge pull request #228 from Gallopsled/atexception
updated `atexception` to act like the the new `atexit`
2014-12-23 11:08:10 +01:00
IdolfHatler ab746c786d Merge pull request #227 from Gallopsled/atexit-issue-120-and-121
fixes #120 and #121
2014-12-23 10:48:41 +01:00
IdolfHatler 0c870a4e34 Merge pull request #232 from Gallopsled/readline
fixes #231
2014-12-23 10:46:10 +01:00
Morten Brøns-Pedersen 5b70db89b8 bugfix: declare suggest_handle as global 2014-12-23 03:24:05 +01:00
Morten Brøns-Pedersen f685b1af2d updated atexception to mimic the new atexit 2014-12-23 02:28:44 +01:00
Morten Brøns-Pedersen 6d58217ac9 removed unused import 2014-12-23 02:25:42 +01:00
IdolfHatler 0fa91a66fc Merge pull request #230 from Gallopsled/download-useragents
Updated the list of useragents
2014-12-23 02:17:15 +01:00
Morten Brøns-Pedersen 3d90e3012d updated the list of useragents 2014-12-23 02:56:36 +01:00
Morten Brøns-Pedersen bfb59a6e98 download-useragents.py now never removes a user agent from the list 2014-12-23 02:55:57 +01:00
Morten Brøns-Pedersen db4c824603 fixed docstring for atexit.register 2014-12-23 01:44:54 +01:00
Morten Brøns-Pedersen 08715e4eb3 fixes #120 and #121 2014-12-23 00:17:53 +01:00
br0ns 6c7136cd8d Merge pull request #219 from zachriggle/hexdump-colors
Remove check for sys.stdout.isatty()
2014-12-22 23:59:54 +01:00
IdolfHatler 882355383b Merge pull request #216 from zachriggle/issue-210
Default timeout, timeout magic string 'inf', OSX timeout max
2014-12-22 16:51:59 +01:00
Zach Riggle e70536e180 Merge pull request #218 from Gallopsled/iss217
Resolve SyntaxWarnings in pwnutil.util.web.  Fixes #217.
2014-12-22 10:39:34 -05:00
Zach Riggle 35d2a985c8 Remove check for sys.stdout.isatty() 2014-12-22 07:32:21 -08:00
Mathias Svensson b621a725e3 Fixed #217. 2014-12-22 14:52:52 +01:00
Mathias Svensson 2df67f9439 Fixed doctest mistake found in Travis 2014-12-22 11:31:52 +01:00
Mathias Svensson 276ebb27a7 Implements the changes discussed in #207 2014-12-22 11:22:16 +01:00
Zach Riggle dd530df04e Merge pull request #214 from Gallopsled/faster_import
Faster imports as per #198
2014-12-22 00:20:12 -05:00
Zach Riggle 993a3a5b5a Merge pull request #209 from Gallopsled/randoms-alphabet-fix
Implements the changes suggested in #202. Do not accept until a consensus is reached.
2014-12-22 00:15:11 -05:00
Zach Riggle 3fdc6bd146 Fix issue on OSX within the socket itself 2014-12-21 19:19:01 -08:00
Zach Riggle c1e31f7ab3 Set default timeout to infinite. Ensure that pwnlib.tubes.tube.timeout.Timeout.__init__ properly handles any magic values by passing them through context.timeout. 2014-12-21 19:13:01 -08:00
Mathias Svensson 3af8c6b81f Fixed bug found by Travis 2014-12-21 23:28:24 +01:00
Mathias Svensson 57ac2235a5 Faster imports as port #198 2014-12-21 23:24:25 +01:00
Robert Larsen 1fec4b9df7 Merge pull request #212 from Gallopsled/infloop_in_listen
Fixed the infinite loop from #137. The code still does not work, but now it does not work in a more reasonable way
2014-12-21 22:46:19 +01:00
Mathias Svensson 5d2cbdf5ea I really should learn to test my commits 2014-12-21 22:23:12 +01:00
Mathias Svensson 2270425d49 Fixed the infinite loop from #137. The code still does not work, but now it does not work in a more reasonable way 2014-12-21 22:19:30 +01:00
Robert Larsen 3b896435e0 Merge pull request #206 from Gallopsled/landscape-bugfixes
A few bugfixes found with landscape.io
2014-12-21 21:40:56 +01:00
Mathias Svensson ff926ca49f Implements the changes suggested in #202. 2014-12-21 21:33:27 +01:00
Robert Larsen 3025212421 Merge pull request #204 from Gallopsled/bug-iter-documentation
Fixed documentation. Should be safe to merge
2014-12-21 21:27:32 +01:00
Robert Larsen 77f231b91f Merge pull request #203 from Gallopsled/bug-randoms
random.sample does not use replacement. With a small alphabet this could throw an exception
2014-12-21 21:26:08 +01:00
Mathias Svensson 42215bea8c A few bugfixes found with landscape.io 2014-12-21 20:55:06 +01:00
Mathias Svensson 983a07c91d Fixed some documentation bugs in iters.py 2014-12-21 20:23:50 +01:00
Mathias Svensson ee187596bc random.sample does not use replacement. With a small alphabet this could throw an exception 2014-12-21 20:17:56 +01:00
Zach Riggle 4c1ab865f1 Merge pull request #201 from zachriggle/deferred-load-requests
Defer loading of requests module.  Fixes #198
2014-12-21 12:43:20 -06:00
Zach Riggle 9276c1fb1d Merge pull request #200 from zachriggle/hexdump-colors
Fixes #199
2014-12-21 12:41:26 -06:00
Zach Riggle 8f1583d588 Defer loading of requests module. Fixes #198 2014-12-21 12:40:09 -06:00
Zach Riggle 8ed28e6239 Fixes #199 2014-12-21 12:35:17 -06:00
Zach Riggle f1284bfc4d Update README.md 2014-12-18 15:27:47 -05:00
Zach Riggle ab7147c871 Update version.py 2014-12-18 15:22:51 -05:00
Mathias Svensson b13a4b9518 Merge branch 'mathiasbynens-add-socket-example' 2014-12-18 16:59:59 +01:00
Mathias Svensson 3c72aff21a Updated README.md 2014-12-18 16:59:48 +01:00
Mathias Bynens 69538c3f09 Add minimal example showing how to use remote 2014-12-18 15:28:14 +01:00
Mathias Svensson 7e5c9ce485 Hopefully make git language statistics more accurate 2014-12-18 12:30:47 +01:00
Mathias Svensson 4b286d1d44 Closes #195. Closes #190. Fixes a small bug with regards to the return value in ssh.upload_file. 2014-12-18 12:01:35 +01:00
Mathias Svensson dbac29eb73 Changed which in asm.py to which_binutils as per #190. Also made the tests work even if the binaries are not in /usr/bin 2014-12-18 10:55:57 +01:00
Morten Brøns-Pedersen 9c4cfc2d34 fixed #126 2014-12-17 13:07:12 +01:00
Mathias Svensson c2034afc3c Fixed a few small bugs found through landscape.io 2014-12-17 12:27:55 +01:00
Morten Brøns-Pedersen f7695695b2 fixed #193 2014-12-17 12:26:23 +01:00
Mathias Svensson b344f8f316 I should learn to spell 2014-12-17 11:59:15 +01:00
Mathias Svensson 0c48de7726 Fixed #185 and will hopefully get Travis to build again 2014-12-17 11:51:35 +01:00
Mathias Svensson cbd0323223 Implements the changes to proc.py mentioned in #181 2014-12-17 11:35:18 +01:00
Mathias Svensson 0ee3ce8eb1 Uses which instead of hardcoded paths in doctests. Fixes #182, #183, #184 2014-12-17 10:43:43 +01:00
Zach Riggle 57e5e81846 Merge pull request #188 from zachriggle/logging-errors-and-exceptions
Add log.exception to be able to print out an error message *with* an exception.
2014-12-16 20:42:48 -05:00
Zach Riggle ddbfe89d2f Add log.exception to be able to print out an error message *with* an exception.
Update log.error (and log.exception) to stop the active progress item.
2014-12-16 17:25:30 -08:00
Zach Riggle b84f563549 Merge pull request #187 from Gallopsled/asm-delete-tempdir
Actually call rmtree. Fixes #186
2014-12-16 20:18:39 -05:00
Zach Riggle 033f26c922 Do not delete files on exception 2014-12-16 17:10:14 -08:00
Zach Riggle c8874e080a Ignore docs output dir 2014-12-16 16:38:00 -08:00
Zach Riggle 27535ade83 Actually call rmtree. Fixes #186 2014-12-16 16:31:17 -08:00
Zach Riggle d3c863ca07 Set logger to pwnlib.exploit that is imported into the global namespace 2014-12-16 15:15:40 -08:00
Zach Riggle 6e6fe50b8f Default to /dev/null if stdin does not have a fileno (for example, a memory-only file buffer) 2014-12-16 15:08:21 -08:00
Zach Riggle 6d5ac6710f Make PWNLIB_NOTERM in the environment not ever even initialize curses 2014-12-16 15:06:01 -08:00
Zach Riggle c1d4312235 powerpc-linux-gnu 2014-12-16 12:39:30 -08:00
Zach Riggle 5bff52d9e2 Powerpc! 2014-12-16 12:08:38 -08:00
Zach Riggle 9f3ae14770 Move pwnlib.asm documentation to source docstring; rename _find to which; expose it via __all__ so that it gets picked up for doctests. Expressly import asm,disasm,cpp in toplevel so we don't import pwnlib.asm.which 2014-12-16 11:57:59 -08:00
Zach Riggle 7074b9a4da Update asm.py 2014-12-16 14:43:27 -05:00
Zach Riggle 556996e0ea Prefer exactly-named assembler first 2014-12-16 11:30:28 -08:00
Zach Riggle 481a699f10 Enable amd64-*-objdump so that it'll use the local copy when platform.machine() returns 'amd64' on not-Debian 2014-12-16 11:23:40 -08:00
Zach Riggle 36a9b4c93a Actually do the check 2014-12-16 11:13:58 -08:00
Zach Riggle 912baa28f5 Add warning message 2014-12-16 11:12:00 -08:00
Zach Riggle ad30c7dc7d Send platform.machine() through the context.arch setting for OpenBSD 2014-12-16 11:07:44 -08:00
Zach Riggle 15072ff66b Do it a few times so it gets cached 2014-12-16 10:05:04 -08:00
Zach Riggle df54013df3 I dont think Travis likes TERM_MODE 2014-12-15 21:01:38 -08:00
Zach Riggle 03d5d579f5 Merge pull request #166 from zachriggle/cyclic-hexdump-skip
Enable collapsing contiguous cyclic patterns
2014-12-16 09:45:51 -08:00
Zach Riggle d0e0291462 These tests are really for OSX, not for Linux 2014-12-15 20:56:32 -08:00
Zach Riggle 91a861773e Add "from pwn import *" install step to test load time 2014-12-15 20:40:39 -08:00
Zach Riggle 24c9207c3a Handle case where width is very low 2014-12-15 20:38:13 -08:00
Zach Riggle b54c64290d Enable collapsing contiguous cyclic patterns 2014-12-15 20:38:13 -08:00
Zach Riggle fe73751ec0 Better docs for pwnlib.log 2014-12-15 20:08:27 -08:00
Zach Riggle 7b919ea013 Move python-dev requirement up to prereqs 2014-12-15 19:04:23 -08:00
Zach Riggle bcd822763e Add installation docs; add global docs; enhance intro docs 2014-12-15 18:49:38 -08:00
Zach Riggle 185334c50d Add documentation for globals, context, pwnlib.context.Thread. Fix pwnlib.asm docs 2014-12-15 18:49:38 -08:00
Zach Riggle e1a161fb95 context.term_mode was not implemented due to cyclic dependencies 2014-12-15 18:49:38 -08:00
Zach Riggle d67dccf4ac typo [ci skip] 2014-12-15 16:09:12 -08:00
Zach Riggle 58b08d9544 Update README.md 2014-12-15 17:45:55 -05:00
Zach Riggle 7f2bd5556d Update README.md 2014-12-15 17:00:01 -05:00
Zach Riggle 6296670cbf Update README.md 2014-12-15 16:59:46 -05:00
Zach Riggle 2796a65d42 Fixes #180 2014-12-15 16:56:41 -05:00
Zach Riggle 8e9b8ef9b2 Update README.md 2014-12-15 16:49:57 -05:00
Zach Riggle 83ff0838d1 Fixes #179 2014-12-15 05:06:09 -05:00
Zach Riggle 767db7e242 linux-gnu 2014-12-15 03:42:12 -05:00
Zach Riggle 4ef2f90670 Yes. 2014-12-15 03:36:06 -05:00
Zach Riggle 2b30d51022 Helps to have the repo 2014-12-15 03:33:44 -05:00
Zach Riggle ffa349e07d Update travis config to install binutils now that we build for Precise 2014-12-15 03:32:58 -05:00
Zach Riggle 5674fc451a IRC link 2014-12-15 03:28:14 -05:00
Zach Riggle e054881bdf Add note about Python headers being required. 2014-12-14 20:52:36 -05:00
Zach Riggle da393452cf Fixes #173 2014-12-14 20:36:54 -05:00
Zach Riggle 206c3a8630 OSX workaround for binutils prefixed with "g" a la "gobjdump" 2014-12-14 16:57:51 -08:00
Zach Riggle ee267269d9 Use Python bindings for Capstone 2.1 until Capstone 3.0 deb is published 2014-12-14 16:45:16 -08:00
Zach Riggle 5f5fda530f Typo fix 2014-12-14 16:41:05 -08:00
Zach Riggle a119c6c393 Install libcapstone 2014-12-14 14:26:21 -08:00
Zach Riggle a6474c75e7 Travis doesn't have tag names available 2014-12-14 13:28:19 -08:00
Zach Riggle 071dc455d2 Reorder icons for consistency 2014-12-14 12:38:19 -08:00
Zach Riggle 414f72d8c3 Add docs/doctest requirements 2014-12-14 12:37:49 -08:00
Zach Riggle 157375b6cf Add travis badge 2014-12-14 12:34:12 -08:00
Zach Riggle 7ca3bdc67d Add travis configuration 2014-12-14 12:21:19 -08:00
Zach Riggle bcc92a7fff Fixes #177 2014-12-14 12:08:28 -08:00
Zach Riggle 9772093178 Add doctest for remote 2014-12-13 21:54:24 -08:00
Zach Riggle 6439ffdb32 Fixes #175 2014-12-13 21:00:56 -08:00
Zach Riggle fef068e812 Docstring for pwnlib.socket.remote.remote.fromsocket 2014-12-13 20:59:19 -08:00
Zach Riggle e81071b6f9 Merge branch 'pwnlib-2.2' 2014-12-13 20:57:45 -08:00
Zach Riggle 6529970b9a log.error should throw an exception 2014-12-13 20:57:18 -08:00
Zach Riggle c103989ddc Update remote to implement remote.fromsocket 2014-12-13 20:55:30 -08:00
Zach Riggle a78a0dbbf5 Fix typo 2014-12-02 20:20:38 -08:00
Zach Riggle 4ab70b880c pop REG should not include pop ss 2014-12-02 20:20:30 -08:00
Zach Riggle 16fd822ad1 Add SSL support to remote 2014-11-29 10:56:29 -08:00
Zach Riggle 8b24bbd574 Fix typo from 192065b 2014-11-17 11:12:45 -08:00
Zach Riggle c9a581229b Merge branch 'ssh-interactive-repl'
Conflicts:
	pwnlib/tubes/ssh.py
2014-11-12 17:02:19 -05:00
Zach Riggle 2485ab9795 Actually pass the event object to the Thread, and defer list(ord()) 2014-11-12 17:01:55 -05:00
Zach Riggle 37d31724e0 Need threading 2014-11-12 17:00:48 -05:00
Zach Riggle af5d9fe816 Merge branch 'ssh-interactive-repl' 2014-11-10 23:03:25 -05:00
Zach Riggle fbf6e58231 Use a proper threading.Event for synchronization rather than a list 2014-11-10 22:45:05 -05:00
Zach Riggle caee95628f Make ssh_channel.interactive() work when term_mode is not active 2014-11-10 22:35:35 -05:00
Zach Riggle 1db8f1d890 Merge branch 'proc-not-executable' 2014-11-09 07:32:06 -05:00
Zach Riggle 321db0fa81 Better detection 2014-11-09 07:31:52 -05:00
Zach Riggle 599b61468f Merge branch 'proc-not-executable'
Conflicts:
	pwnlib/tubes/process.py
2014-11-09 07:30:55 -05:00
Zach Riggle 807afc8266 Add message when given a non-executable 2014-11-09 07:29:34 -05:00
Zach Riggle 406dce863e Merge branch 'proc-psutil'
Conflicts:
	pwnlib/util/proc.py
	setup.py
2014-11-09 06:15:18 -05:00
Zach Riggle c55273c52a Convert some of proc's functionality to use psutil 2014-11-09 06:11:11 -05:00
Zach Riggle 09f69d804d Merge branch 'pwnlib-2.2' 2014-11-08 20:33:00 -05:00
Zach Riggle 9ba495366c Should timeout 2014-11-08 20:32:54 -05:00
Zach Riggle 5d21dddb50 Merge branch 'checksec' 2014-11-08 20:15:57 -05:00
Zach Riggle 46e1ac95ea alsr alias 2014-11-08 20:11:09 -05:00
Zach Riggle 34101f2710 Merge branch 'checksec' 2014-11-08 19:11:41 -05:00
Zach Riggle 4aa3dd5e34 execstack = not nx 2014-11-08 19:11:35 -05:00
Zach Riggle 8aa952935d Merge branch 'checksec'
Conflicts:
	pwnlib/elf/__init__.py
2014-11-08 08:41:56 -05:00
Zach Riggle 3814003d4f Add checksec 2014-11-08 06:48:08 -05:00
Zach Riggle 4af89b4ddc Merge branch 'rop-no-leave-gadgets' 2014-11-07 01:49:08 -05:00
Zach Riggle 98c0542f20 Check that there are leave gadgets before indexing 2014-11-07 01:48:49 -05:00
Zach Riggle 192065bb36 Merge branch 'wget-requests'
Conflicts:
	pwnlib/util/web.py
2014-11-07 00:05:53 -05:00
Zach Riggle 3ab20f22a9 Merge branch 'pwnlib-2.2' 2014-11-07 00:04:16 -05:00
Zach Riggle 8acd69a82c Reduce maximum update speed of waitfor when not using term-mode 2014-11-07 00:04:09 -05:00
Zach Riggle fe1b5df57e Merge branch 'pwnlib-2.2' 2014-11-06 22:12:40 -05:00
Zach Riggle c92bd308b4 Reduce maximum update speed of waitfor 2014-11-06 22:12:23 -05:00
Zach Riggle a7e7bcfd4f Merge branch 'elf-entry-point' 2014-11-06 22:05:28 -05:00
Zach Riggle b2cd8fde32 Switch to using pwnlib.util.misc.size for calculating sizes 2014-11-06 18:11:22 -05:00
Zach Riggle 6f3fe07e29 Change "wget" to use the requests library. Also adds the entire requests library to the top level. E.g. from pwn import * => "get" is now a global object 2014-11-06 17:29:38 -05:00
Zach Riggle 67ecd7ab0d Add pwnlib.elf.ELF.entry and a few aliases for the entry point 2014-11-06 15:23:45 -05:00
IdolfHatler ff07362012 Merge pull request #155 from zachriggle/tmux
run_in_new_terminal now behaves as per documentation; also can launch new tmux panes
2014-11-06 10:14:52 +01:00
IdolfHatler dddba723d5 Merge pull request #161 from zachriggle/gdb-attach-warning
Add warning message.  Closes #160
2014-11-06 10:14:06 +01:00
Zach Riggle 8a069f192a Merge branch 'gdb.debug' 2014-11-05 01:44:10 -05:00
Zach Riggle 1a7c1f5085 Merge branch 'dynelf-consolidate' 2014-11-05 01:14:02 -05:00
Zach Riggle b88ada7e80 Remove unused code 2014-11-05 01:05:02 -05:00
Zach Riggle f1efc6ae49 Re-add legacy @classmethod methods 2014-11-05 01:03:11 -05:00
Zach Riggle c443c38457 Fix inference of address from ELF, and ELF-only instantiation 2014-11-05 01:01:35 -05:00
Zach Riggle 3fda0c0dbd Fix thumb assembly "-thumb" vs "-mthumb". Also add RET shellcodes for each architecture. 2014-11-05 00:54:13 -05:00
Zach Riggle a5e7202194 Merge branch 'gdb-attach-warning'
Conflicts:
	pwnlib/dynelf.py
	pwnlib/memleak.py
	pwnlib/util/packing.py
2014-11-04 23:41:56 -05:00
Zach Riggle 2d5de974e7 Add warning message. Closes #160 2014-11-04 23:28:35 -05:00
Zach Riggle 666583f1ca Merge branch 'tmux' 2014-11-04 23:20:06 -05:00
Zach Riggle 1ee9bb8d56 Address @IdolfHatler's issue from IRC 2014-11-04 23:19:22 -05:00
Zach Riggle 7d3e5af6de Merge branch 'dynelf-consolidate'
Conflicts:
	pwnlib/dynelf.py
	pwnlib/elf/__init__.py
	pwnlib/elf/datatypes.py
	pwnlib/memleak.py
2014-11-04 22:09:17 -05:00
Zach Riggle 4783df2d5a Fix regression on getting the base address from an ELF 2014-11-04 16:15:17 -05:00
Zach Riggle 293d4773c0 Merge branch 'pwnlib-2.2'
Conflicts:
	pwnlib/asm.py
2014-11-03 21:33:01 -05:00
Zach Riggle f66c6b7936 Permit auto-detection of the current OS to use the maintainer-installed version of binutils. For example, on an i386 system, there should be no reason for an extra version of binutils to be installed. 2014-11-03 21:32:16 -05:00
Zach Riggle 38db1e7e2e Fixes for asm/disasm command-line tools; better handling of includes/section header flags 2014-11-02 05:16:35 -05:00
Zach Riggle 7aae87bd69 Only suppress stdout immediately surrounding ropgadget call; use info_once for messages (see #102) 2014-11-02 05:15:45 -05:00
Zach Riggle 8dd31cb10f Add log.info_once and related messages to only print an error/warning/info message one time 2014-11-02 05:15:44 -05:00
Zach Riggle a39891cc5f Fixes for asm/disasm command-line tools; better handling of includes/section header flags 2014-11-02 05:15:17 -05:00
Zach Riggle e4d95e94d2 Only suppress stdout immediately surrounding ropgadget call; use info_once for messages (see #102) 2014-11-02 05:14:43 -05:00
Zach Riggle 4e0ad45f9e Add log.info_once and related messages to only print an error/warning/info message one time 2014-11-02 04:52:16 -05:00
Zach Riggle 823d909498 Add doctests for previous commit 2014-11-01 12:20:32 -04:00
Zach Riggle b41dc036ae Add doctests for previous commit 2014-11-01 12:20:09 -04:00
Zach Riggle e744813cf0 Fix regression on process.connected_raw 2014-11-01 12:03:53 -04:00
Zach Riggle 3b09781efa Fix regression on process.connected_raw 2014-11-01 11:56:42 -04:00
IdolfHatler 4a88c3e1af Merge pull request #143 from zachriggle/patch-4
log.die is deprecated
2014-10-29 01:34:43 +01:00
IdolfHatler 0febd45d06 Merge pull request #152 from RobertLarsen/master
Thumb bindshell shellcode for Linux
2014-10-29 01:34:26 +01:00
IdolfHatler 0aafd7cba9 Merge pull request #153 from zachriggle/memleak-documentation-endianness
Memleak documentation endianness
2014-10-29 01:34:14 +01:00
IdolfHatler 4b7715e295 Merge pull request #157 from zachriggle/static-elf-symrelplt
Fixes NullSection for Static ELF
2014-10-29 01:33:10 +01:00
Zach Riggle 26d713bf0d Update constgrep 2014-10-28 16:34:48 -07:00
Zach Riggle 8ae04bcd01 Return the tube instead 2014-10-28 16:24:25 -07:00
Zach Riggle 5a63681849 Fix which "which" is used 2014-10-28 16:20:56 -07:00
Zach Riggle f2729530bf Fix previous commit 2014-10-28 01:48:55 -07:00
Zach Riggle 586e62538c Further enhancements thanks to Ilfak. DynELF now works for all RELRO permutations. 2014-10-28 01:41:39 -07:00
Zach Riggle 2ef7fc17d3 Merge remote-tracking branch 'origin/tmux' 2014-10-27 12:53:32 -07:00
Zach Riggle 32699836cb Merge branch 'static-elf-symrelplt' 2014-10-27 12:53:23 -07:00
Zach Riggle e347a5a81b Merge branch 'memleak-documentation-endianness-2.2'
Conflicts:
	pwnlib/memleak.py
2014-10-27 12:51:01 -07:00
Zach Riggle ae4507ef98 Merge branch 'dynelf-consolidate-2.2' 2014-10-27 12:50:16 -07:00
Zach Riggle c4f3e26019 Fix success spinner 2014-10-27 12:49:38 -07:00
Zach Riggle e1b143104d Rework DynELF to use consolidated routines for resolution 2014-10-27 12:49:38 -07:00
Zach Riggle d89c3ff04d wipwip 2014-10-27 12:46:31 -07:00
Zach Riggle 2d79765b5b Make memleak doctest work 2014-10-27 12:45:23 -07:00
Zach Riggle fa4fc41248 Change sizes to be sure to excercise search functionality 2014-10-27 12:45:23 -07:00
Zach Riggle 48c3ba343b Added documentation and doctests 2014-10-27 12:45:23 -07:00
Zach Riggle 5b7905813e asasdf 2014-10-27 12:45:08 -07:00
Zach Riggle c2fd526b7e Migrate back-fill operation to _leak 2014-10-27 12:44:10 -07:00
Zach Riggle 2a0467e105 Merge branch 'pwnlib-2.2'
Conflicts:
	pwnlib/gdb.py
	pwnlib/tubes/ssh.py
2014-10-27 12:43:08 -07:00
Zach Riggle 69e84b790d pwnlib 2.2 rewrite of context, logging, tubes, various bugfixes 2014-10-26 16:02:22 -07:00
Zach Riggle 20d39df46b Fixes #156 2014-10-26 15:19:15 -07:00
Zach Riggle 71250900b2 Make memleak doctest work 2014-10-25 17:16:01 -07:00
Zach Riggle 34db05ca0f run_in_new_terminal now behaves as per documentation; also can launch new tmux panes 2014-10-25 11:30:10 -07:00
Zach Riggle 94f31d3813 Fix success spinner 2014-10-23 13:57:13 -07:00
Zach Riggle c494f6c31d Rework DynELF to use consolidated routines for resolution 2014-10-23 03:07:28 -07:00
Zach Riggle 0b66263696 Change sizes to be sure to excercise search functionality 2014-10-20 19:17:11 -07:00
Zach Riggle bb7f86c3a5 Added documentation and doctests 2014-10-20 19:08:07 -07:00
Zach Riggle f3024c24da asasdf 2014-10-18 19:08:38 -07:00
Zach Riggle 9a7bfd6205 Migrate back-fill operation to _leak 2014-10-18 17:52:31 -07:00
Zach Riggle 45117ec75d Remove unnecessary list() 2014-10-18 17:22:53 -07:00
Robert Larsen 6c57393c57 Describe arguments. 2014-10-14 20:31:12 +02:00
Robert Larsen 2d7fde4b97 Describe arguments. 2014-10-14 20:30:07 +02:00
Robert Larsen 9a17e04ac3 Better doc. 2014-10-14 20:29:01 +02:00
Robert Larsen 2682d31f6a Address family is AF_INET6 for IPv6. 2014-10-14 20:25:23 +02:00
Robert Larsen 63fb952973 Merge branch 'master' of https://github.com/Gallopsled/pwntools 2014-10-12 23:08:52 +02:00
Robert Larsen 89c6ed1520 Added bindshell shellcode for thumb mode. 2014-10-12 23:07:52 +02:00
Zach Riggle 014d8f24ec Merge remote-tracking branch 'upstream/master' 2014-09-30 13:24:04 -04:00
IdolfHatler 8e3b05e016 Merge pull request #139 from zachriggle/patch-3
Enhance error messages
2014-09-30 13:40:47 +02:00
Zach Riggle 256decad52 log.fatal is deprecated 2014-09-29 23:03:53 -04:00
Zach Riggle a810c0204b Enhance error messages 2014-09-29 21:09:55 -04:00
IdolfHatler 74094d562d Merge pull request #138 from zachriggle/patch-2
Rewrite front-page docs a bit
2014-09-26 21:26:04 +02:00
Zach Riggle eb752e720d Rewrite front-page docs a bit
The `install.sh` just runs `pip2 -r requirements.txt` and echoes this same info to the screen.  It's short enough, may as well have it in the README.
2014-09-26 14:56:16 -04:00
IdolfHatler e6f33624d0 Merge pull request #136 from zachriggle/patch-1
Link to write-ups in README
2014-09-25 20:05:33 +02:00
Zach Riggle aad6276a83 Update README.md 2014-09-25 14:01:19 -04:00
IdolfHatler 8ea1d0e011 Merge pull request #132 from zachriggle/timeout-default
Add default timeout
2014-09-23 09:18:48 +02:00
IdolfHatler c198d4aede Merge pull request #134 from zachriggle/bug-stacktrace
Bugs should always emit a stack trace
2014-09-23 09:09:44 +02:00
Zach Riggle 3d8a1950a4 Bugs should always emit a stack trace 2014-09-23 01:25:08 -04:00
Zach Riggle b4bb6f41f3 Add default timeout 2014-09-23 00:56:44 -04:00
Mathias Svensson 60428c462b Fixed #125 2014-09-20 17:19:42 +02:00
Mathias Svensson 7604ea5319 A shebang does nothing if it is not the first line 2014-09-20 17:16:44 +02:00
Mathias Svensson a0bcd69abf Fixed #127 (bad copy paste) 2014-09-20 17:15:35 +02:00
Mathias Svensson 4cf6f7b4f6 Fixed bug in tube 2014-09-20 15:35:29 +02:00
IdolfHatler 5c44735842 Merge pull request #124 from zachriggle/context-threaded
Implement context-preserving threads
2014-09-18 23:07:19 +02:00
Zach Riggle 5121df4c4d Copy context to avoid secondary effects of scoping affecting the thread 2014-09-18 16:24:40 -04:00
Mathias Svensson d40c88e368 recvall will now close the connection 2014-09-18 08:09:42 +02:00
Mathias Svensson cb9d5357c4 Fixed uroboros (#123) 2014-09-18 08:09:42 +02:00
Zach Riggle 1d5ee71597 Merge branch 'context-threaded' 2014-09-17 20:11:51 -04:00
Zach Riggle 873afe189b Fixed regression in local copy 2014-09-17 20:09:17 -04:00
Zach Riggle e59aceecc2 Timeout message is too verbose after fixing thread context, when using .interactive() 2014-09-17 19:52:18 -04:00
Zach Riggle 24d247cc1b Implement context-preserving thread
Add threading back to toplevel
2014-09-17 19:52:06 -04:00
IdolfHatler e37b606cdc Merge pull request #119 from zachriggle/cyclic-newline-fix
Cyclic should only emit a newline when writing to a TTY
2014-09-17 21:08:15 +02:00
Zach Riggle d9079f4baa Merge branch 'cyclic-newline-fix' 2014-09-17 14:57:41 -04:00
Zach Riggle 6ff0fe8b2a Cyclic should only emit a newline when writing to a TTY 2014-09-17 14:49:31 -04:00
Zach Riggle 487fa32692 Merge remote-tracking branch 'upstream/master' 2014-09-17 14:48:58 -04:00
Mathias Svensson 1183fe4f66 Fixed a bug where readthedocs did not have rop documentation 2014-09-16 11:14:01 +02:00
IdolfHatler 43c0e7abce Merge pull request #117 from zachriggle/setxid
Update setXid
2014-09-15 20:52:53 +02:00
Zach Riggle 8796ba3477 Merge branch 'setxid' 2014-09-15 14:13:51 -04:00
Zach Riggle 22eb78d425 Update setXid 2014-09-15 14:13:43 -04:00
Mathias Svensson 5475de3f73 Tweaked the atexit-for-tubes commit a bit. We now use our local version of atexit, and we will not have a flag for choosing it. 2014-09-15 17:50:06 +02:00
Mathias Svensson 81ad2c32ac Merge branch 'tube-cleanup' of https://github.com/zachriggle/pwntools 2014-09-15 17:41:44 +02:00
Mathias Svensson 8d11a1596c Fixed debug message 2014-09-15 17:41:36 +02:00
IdolfHatler a830893c1f Merge pull request #112 from RobertLarsen/master
Made having two eggs in a row optional.
2014-09-15 14:54:50 +02:00
IdolfHatler c5305c6613 Merge pull request #110 from zachriggle/i386-dup-fix
Fix dupsh NUL bytes and make it shorter
2014-09-15 14:54:27 +02:00
IdolfHatler 3b010f92b6 Merge pull request #116 from zachriggle/shellcraft-amd64
amd64 shellcodes
2014-09-15 14:54:13 +02:00
Zach Riggle 32e767fb38 Merge branch 'shellcraft-amd64' 2014-09-15 04:35:03 -04:00
Zach Riggle 5d109f114c Merge branch 'tube-cleanup' 2014-09-15 04:34:46 -04:00
Zach Riggle 46957f01b3 Merge branch 'gdb.debug' 2014-09-15 04:34:36 -04:00
Zach Riggle e350668ba1 Merge remote-tracking branch 'upstream/master' 2014-09-15 04:34:30 -04:00
Zach Riggle e3846d3d83 amd64 shellcodes 2014-09-15 04:31:37 -04:00
IdolfHatler 63c1245931 Merge pull request #115 from zachriggle/shellcraft-chain
Permit chaining of `shellcraft`
2014-09-15 09:39:12 +02:00
Zach Riggle d6ba19d148 Ensure gdbserver is installed. Important since it is not installed for any overthewire or smashthestack challenges 2014-09-15 03:21:22 -04:00
Zach Riggle 2b111c84cd Autodetect output format 2014-09-15 03:07:34 -04:00
Zach Riggle 47f31d8741 Permit chaining of shellcraft 2014-09-15 03:04:12 -04:00
Zach Riggle 2a472e2c39 Make it optional, but default 2014-09-15 02:49:39 -04:00
Zach Riggle 9dce9c50fd Clean up tubes on process exit 2014-09-15 02:42:51 -04:00
Robert Larsen becaebc17d Fixed documentation. 2014-09-14 12:47:47 +02:00
Robert Larsen 8259572280 Made having two eggs in a row optional. 2014-09-14 12:44:27 +02:00
Mathias Svensson 3b793cdb57 Fixed #111 2014-09-12 13:59:01 +02:00
Mathias Svensson 786390ffa0 Fixed logging bug in dynelf 2014-09-12 13:57:48 +02:00
Zach Riggle 31a27eda3f Get rid of skinny-space 2014-09-11 19:37:13 -04:00
Zach Riggle 1e3257cddd Merge branch 'i386-dup-fix' 2014-09-11 19:09:47 -04:00
Zach Riggle bd29de04a3 Fix dupsh NUL bytes and make it shorter 2014-09-11 19:07:19 -04:00
IdolfHatler a923b9a155 Merge pull request #109 from zachriggle/rop-cache-quiet
Make message a bit quieter
2014-09-11 05:46:45 +02:00
Zach Riggle b80c08af3c Merge remote-tracking branch 'upstream/master' 2014-09-10 20:41:37 -04:00
Zach Riggle 7e58a25a92 Merge branch 'rop-cache-quiet' 2014-09-10 20:39:18 -04:00
Zach Riggle 87a85e92fe Merge branch 'gdb.debug' 2014-09-10 20:39:15 -04:00
Zach Riggle b0661a42c3 Make message a bit quieter 2014-09-10 20:18:24 -04:00
Zach Riggle 77baaed1d6 Autodetect binary for gdb based on provided arguments if running locally 2014-09-10 20:08:03 -04:00
Zach Riggle b30b34b3af Add gdb.debug for launching gdbserver locally or over ssh 2014-09-10 20:04:58 -04:00
Zach Riggle 45cc9e172a Merge branch 'ssh-directories' 2014-09-10 15:56:13 -04:00
Zach Riggle 1eb85ac20e Fix issue which makes top-level "process" be the module instead of the class when importing * from pwn 2014-09-10 15:56:03 -04:00
Zach Riggle 60d4921125 Merge branch 'ssh-directories' 2014-09-10 15:50:43 -04:00
Zach Riggle e17f33d741 Enable recursive upload/download of folders 2014-09-10 15:50:30 -04:00
IdolfHatler 5e8590c090 Merge pull request #106 from RobertLarsen/master
Shaved off one instruction.
2014-09-10 17:28:52 +02:00
Robert Larsen 0ec9bd93ff Shaved off one instruction. 2014-09-10 13:51:09 +02:00
IdolfHatler a814a2d90f Merge pull request #103 from RobertLarsen/master
Added egghunter for ARM
2014-09-10 13:32:24 +02:00
Robert Larsen 256b340354 Merge branch 'master' of https://github.com/Gallopsled/pwntools 2014-09-10 13:27:00 +02:00
Robert Larsen 637ff82f5a Be able to specify the address to start the search. 2014-09-10 13:04:50 +02:00
IdolfHatler aaaabb7295 Merge pull request #92 from RobertLarsen/master
Added findpeersh shellcode for thumb
2014-09-10 10:33:35 +02:00
IdolfHatler b5d2ed19c3 Merge pull request #94 from zachriggle/pwnlib-util-web-wget
Pwnlib util web wget
2014-09-10 10:33:05 +02:00
Zach Riggle 62a039501e Merge remote-tracking branch 'upstream/master' 2014-09-10 03:23:11 -04:00
IdolfHatler d6a977122d Merge pull request #99 from zachriggle/elf-vaddr-fixup
Fix calculations based on header.p_vaddr
2014-09-10 09:22:32 +02:00
IdolfHatler fe702fc6e3 Merge pull request #98 from zachriggle/elf-bss-default
Default elf.bss argument
2014-09-10 09:21:57 +02:00
IdolfHatler 1aa06f3781 Merge pull request #97 from zachriggle/listen-wait-port-zero-status
Add status message for "listening" to expressly print out port
2014-09-10 09:21:39 +02:00
IdolfHatler 1e947a72c2 Merge pull request #95 from zachriggle/elf-plt-stopgap-fix
ELF PLT Symbol Fix
2014-09-10 09:21:06 +02:00
IdolfHatler 04cabea872 Merge pull request #96 from zachriggle/elf-symbols-got-plt-prefixes
Add plt.XXXX and got.XXXX symbols so that rop.dump() output is better
2014-09-10 09:19:27 +02:00
Zach Riggle c29919560a Merge branch 'elf-vaddr-fixup' 2014-09-10 03:14:03 -04:00
Zach Riggle 19c59a44e7 Fix calculations based on header.p_vaddr 2014-09-10 03:10:49 -04:00
Zach Riggle 5b79e53126 Merge branch 'elf-bss-default' 2014-09-10 02:37:53 -04:00
Zach Riggle 93ad3e7e42 Default elf.bss argument 2014-09-10 02:35:30 -04:00
Zach Riggle 073f925974 Merge branch 'listen-wait-port-zero-status' 2014-09-10 02:26:41 -04:00
Zach Riggle 0ee84aec1e Add status message for "listening" to expressly print out port, which is useful if port was zero 2014-09-10 02:26:18 -04:00
Zach Riggle 68db0532a4 Merge branch 'elf-symbols-got-plt-prefixes' 2014-09-10 02:20:12 -04:00
Zach Riggle 5d150fd930 Add plt.XXXX and got.XXXX symbols so that rop.dump() output is better 2014-09-10 02:18:20 -04:00
Zach Riggle 5742eceab4 Merge branch 'elf-plt-stopgap-fix' 2014-09-10 01:38:15 -04:00
Zach Riggle a9145ad8f7 Rename variables to match BFD 2014-09-10 01:38:04 -04:00
Zach Riggle 17ff609e39 Apply intermediary fix 2014-09-10 00:37:07 -04:00
Robert Larsen ae3bb1fe20 Start from page 0. 2014-09-09 13:33:25 +02:00
Robert Larsen f7a047af68 Made the egghunter work. 2014-09-09 13:07:05 +02:00
Robert Larsen ba053eed81 Improved mov() helper. 2014-09-09 12:53:57 +02:00
Robert Larsen 860668621b Added egghunter for ARM. 2014-09-09 10:40:19 +02:00
Robert Larsen b08f81a788 Added mov() shellcode helper for ARM. 2014-09-09 10:38:11 +02:00
Robert Larsen 5b8375a027 Merge branch 'master' of https://github.com/Gallopsled/pwntools 2014-09-09 10:23:32 +02:00
Zach Riggle aafe85092a Merge branch 'pwnlib-util-web-wget' 2014-09-03 21:46:07 -07:00
Zach Riggle 85d7229691 Add timeout 2014-09-03 21:41:48 -07:00
Zach Riggle e514328d02 add pwnlib.util.web.wget 2014-09-03 21:36:44 -07:00
Zach Riggle f70665546b Merge branch 'master' of https://github.com/pwnies/pwntools 2014-09-03 14:57:43 -07:00
IdolfHatler 09b5b74bd2 Merge pull request #93 from zachriggle/setreXid
Add i386 shellcode for 'setreuid' and 'setregid'
2014-09-01 14:26:40 +02:00
Zach Riggle 723d053a8b Merge branch 'setreXid' 2014-08-31 23:03:19 -07:00
Zach Riggle 06970b082d add shellcodes 2014-08-31 23:02:38 -07:00
Zach Riggle ccbc7b93ec Merge branch 'master' of https://github.com/pwnies/pwntools 2014-08-31 21:53:20 -07:00
Robert Larsen 75917a9a41 Fixed doc. 2014-08-29 10:46:57 +02:00
Robert Larsen e8e8f70f60 Put port into the right register prior to comparison. 2014-08-29 10:41:36 +02:00
Robert Larsen 60d0e82dd3 Fixed dup() shellcode. 2014-08-29 10:16:13 +02:00
Robert Larsen d4fa4f3057 First attempt at findpeer() and findpeersh() shellcode. 2014-08-29 01:02:01 +02:00
IdolfHatler 06a95ddb70 Merge pull request #91 from RobertLarsen/master
Indent correctly for more cases
2014-08-29 00:37:41 +02:00
Robert Larsen 90f92185bc More elegant check for ':'. 2014-08-29 00:19:54 +02:00
Robert Larsen 0350724eb2 '.' and '_' should be considered legal label characters too. 2014-08-29 00:06:49 +02:00
Robert Larsen 63a2fd2bc4 First non whitespace characters in a label is alphanumeric. 2014-08-28 23:48:24 +02:00
Mathias Svensson d1a83f5c92 process.kill() will now actually kill the process 2014-08-28 23:35:42 +02:00
Mathias Svensson 52fe5d6ef7 A few more bugfixes to rop.py 2014-08-28 23:27:18 +02:00
Robert Larsen 54d5e7bdac Handle case with colon inside comment 2014-08-28 23:11:47 +02:00
Robert Larsen 60ed4a3b01 Indent so that shellcrafts prettyfier will work. 2014-08-28 22:31:21 +02:00
Mathias Svensson 54d027ae77 Made rop.search more useful 2014-08-28 22:27:17 +02:00
Mathias Svensson e5037c251d Bugfix: Last-call optimization was broken 2014-08-28 22:26:56 +02:00
Robert Larsen e395284dea Prevent indention for lines starting with a label.
Indent remaining lines by four spaces if they are indented at any level.
2014-08-28 22:22:16 +02:00
Morten Brøns-Pedersen 579ea543df fixed docstring syntax in pwnlib.rop.ROP.__getattr__(). 2014-08-28 21:28:40 +02:00
Morten Brøns-Pedersen 5ffcd945cc fix doctests for pwnlib.rop. 2014-08-28 21:28:40 +02:00
Morten Brøns-Pedersen a059b49a58 suppress output from ropgadget in pwnlib.rop. 2014-08-28 21:28:40 +02:00
Mathias Svensson 0a5d9956ea There should not be any log_level=info in interactive 2014-08-28 21:26:17 +02:00
Mathias Svensson 3d9af2f8f3 Bugfix: recvn was broken 2014-08-28 21:15:06 +02:00
Mathias Svensson b2e15b19b1 Added preliminary changelog 2014-08-28 21:00:07 +02:00
Morten Brøns-Pedersen ab628a3231 addde pwnlib.rop to docs. 2014-08-28 20:54:52 +02:00
Morten Brøns-Pedersen 033526e044 added docstrings for pwnlib.rop. 2014-08-28 20:54:52 +02:00
Morten Brøns-Pedersen 50e1b723f2 added docs for pwnlib.replacements. 2014-08-28 20:54:52 +02:00
Morten Brøns-Pedersen 894fe13d0c updated docstrings in pwnlib.replacements. 2014-08-28 20:54:52 +02:00
Morten Brøns-Pedersen 4ea339230c added pwnlib.replacements.* to pwn.toplevel 2014-08-28 20:54:52 +02:00
Morten Brøns-Pedersen d0907f8677 added replacements to __init__.py 2014-08-28 20:54:52 +02:00
Morten Brøns-Pedersen 17135990e5 moved pwnlib.replacements.time.sleep() to pwnlib.replacements.sleep() 2014-08-28 20:54:52 +02:00
Mathias Svensson 2e586d05c6 Removed trailing whitespace 2014-08-28 20:04:51 +02:00
Mathias Svensson a1a0877b8f Removed trailing whitespace 2014-08-28 20:01:00 +02:00
Jonas Rudloff f62ea2d3e6 Merge pull request #88 from RobertLarsen/master
Ported ARM/THUMB shellcode from old pwntools
2014-08-28 19:30:25 +02:00
Morten Brøns-Pedersen 61cdbfcbf1 fixed #90 2014-08-28 19:21:10 +02:00
Morten Brøns-Pedersen 082aab697b updated the README.md 2014-08-28 19:21:10 +02:00
Zach Riggle bafee07292 Merge remote-tracking branch 'origin/elfpatch' 2014-08-28 09:45:24 -07:00
Zach Riggle 10df479581 Merge remote-tracking branch 'origin/elfdiff' 2014-08-28 09:45:20 -07:00
mortenbp d32af7f0c4 Merge pull request #84 from zachriggle/cyclic-find-not-in-alphabeta
Catch invalid characters early in cyclic_find()
2014-08-28 10:37:56 +02:00
Zach Riggle d4ad15cfc9 Merge remote-tracking branch 'upstream/master' 2014-08-27 22:59:27 -07:00
Mathias Svensson f09bf54ab4 Fixed a few bugs in rop.py 2014-08-28 07:51:03 +02:00
Robert Larsen 59968de491 Added dupsh thumb shellcode. 2014-08-28 00:35:38 +02:00
Robert Larsen 05f31950c5 Added dup shellcode for thumb. 2014-08-28 00:33:18 +02:00
Robert Larsen e3907f5dd6 Added thumb shellcode for spawning a shell. 2014-08-27 23:52:55 +02:00
Robert Larsen 70d313cbcc Added thumb shellcode helper for initializing a register. 2014-08-27 23:42:49 +02:00
Robert Larsen ec1452c781 Added shell spawning shellcode for arm. 2014-08-27 22:44:09 +02:00
Robert Larsen 737809b563 Added arm->thumb shellcode. 2014-08-27 22:28:14 +02:00
Robert Larsen 56af2d7cdd Fixed typo in comment 2014-08-27 22:09:10 +02:00
IdolfHatler 99695f3873 Merge pull request #87 from RobertLarsen/master
Made DynELF much more modular and able to solve more tasks
2014-08-27 15:51:10 +02:00
Robert Larsen 80e312144c No test 2014-08-27 12:42:54 +02:00
Robert Larsen 79833088bf Added docstring. 2014-08-27 12:39:29 +02:00
Robert Larsen 8e16f22172 Made dynelf work with new elf implementation. 2014-08-27 11:54:08 +02:00
Morten Brøns-Pedersen 318d01ce51 logging functions now write to sys.stderr if not in term mode 2014-08-27 11:15:28 +02:00
Morten Brøns-Pedersen 2369700409 replace sys.stderr in pwnlib.term.term.init() so exceptions etc. shows right 2014-08-27 11:14:30 +02:00
Morten Brøns-Pedersen 38c560d526 let the terminal wrap lines that are too long. fixes copy'n'pasting of such lines 2014-08-26 16:03:28 +02:00
Zach Riggle 67a544bf5f kill assemblers 2014-08-25 21:06:01 -07:00
Zach Riggle 82cb3f5dfd Add .lhost and .lport for ssh_connector() 2014-08-25 19:34:53 -07:00
mortenbp fc27c74f14 Merge pull request #86 from zachriggle/ssh-listener-broken-typo
acceptor => accepter
2014-08-25 22:36:19 +02:00
Zach Riggle 02e6b3a768 acceptor => accepter 2014-08-25 11:44:13 -07:00
Robert Larsen dfee5a50e5 Made dynelf implementation much cleaner.
Added factory methods for easier instantiation.
2014-08-25 15:31:54 +02:00
Robert Larsen cb81b9dfbf Merge branch 'master' of https://github.com/Gallopsled/pwntools
Conflicts:
	pwn/test/leaky/Makefile
	pwn/test/leaky/resolve.py
	pwnlib/dynelf.py
2014-08-25 15:21:36 +02:00
IdolfHatler 6a05dbd606 Merge pull request #85 from zachriggle/blocking-poll-ssh
Add a blocking variant of poll() and a helper, wait(), to invoke it
2014-08-24 20:02:07 +02:00
Zach Riggle a182d739ee Merge branch 'blocking-poll-ssh' 2014-08-24 09:43:24 -07:00
Zach Riggle d3b5f79362 Add a blocking variant of poll() and a helper, wait(), to invoke it. Replace poll() with wait() where we need the exit status. Without this, the exit code may not be available and file uploads/downloads will "fail" when they really succeeded (but the return value just didn't propagate yet) 2014-08-24 09:41:09 -07:00
Zach Riggle 6dd29547ac Merge branch 'cyclic-find-not-in-alphabeta' 2014-08-23 07:46:25 -07:00
Zach Riggle 25fda64e03 More readable 2014-08-23 06:36:41 -07:00
Zach Riggle b2ad179845 Merge branch 'cyclic-find-not-in-alphabeta' 2014-08-22 20:41:53 -07:00
Zach Riggle dc2dc0b87f Catch invalid characters early in cyclic_find(). Sometimes I forget to u32() the data, and it searches forever for eight bytes of irrelevant data. 2014-08-22 20:10:53 -07:00
Zach Riggle ed77b3b397 Merge remote-tracking branch 'upstream/master' 2014-08-22 14:32:08 -07:00
Morten Brøns-Pedersen 4e8c9a6913 better ascii-art in pwnlib.util.splash.splash(). 2014-08-22 17:46:34 +02:00
Mathias Svensson 5463cdcb31 Made the serialtube a bit better 2014-08-17 20:27:50 +02:00
Mathias Svensson a358bf0b4b Added infloop and nop for ARM 2014-08-17 16:43:05 +02:00
Mathias Svensson e05cd05155 Removed octal constants from header files 2014-08-17 15:58:02 +02:00
Mathias Svensson 495a60c102 Ignore e.g. vim files in the templates directory 2014-08-17 15:54:52 +02:00
Mathias Svensson a35a5a318a Better constant handling for shellcraft 2014-08-17 15:53:36 +02:00
Mathias Svensson cd25505009 Added open_file for ARM 2014-08-17 15:52:45 +02:00
Mathias Svensson c20033e7b4 Added thumb nop and infloop 2014-08-17 15:42:04 +02:00
Mathias Svensson a791f3122a Updated shellcraft to remove all newlines following just after two other newlines 2014-08-17 15:39:18 +02:00
Mathias Svensson c7898a4e48 Added a replacement for time.sleep which does not return on signals 2014-08-17 15:12:36 +02:00
Mathias Svensson b31c527212 Fixed bug in case there was no plt 2014-08-17 15:12:36 +02:00
IdolfHatler c1ebb79ef7 Merge pull request #80 from brifordwylie/small_setup_changes
Small setup changes
2014-08-16 11:36:13 +02:00
Morten Brøns-Pedersen aa67eded8a improved performance of pwnlib.util.fiddling.hexdump_iter(). 2014-08-14 20:47:09 +02:00
Morten Brøns-Pedersen 3678934c86 added argument "--color" to bin/phd. 2014-08-14 20:34:52 +02:00
Morten Brøns-Pedersen 0e9f855133 added property pwnlib.term.text.when which controls when to output control characters. 2014-08-14 20:26:48 +02:00
Morten Brøns-Pedersen a23a608854 bin/phd now handles top-level exceptions KeyboardInterrupt and IOError (which happens when e.g. phd | less). 2014-08-14 19:11:40 +02:00
Morten Brøns-Pedersen 61f6842483 added pwnlib.util.fiddling.hexdump_iter() and made pwnlib.util.fiddling.hexdump() a thin wrapper. bin/phd now uses the iterator variant for better performance. 2014-08-14 18:53:22 +02:00
Morten Brøns-Pedersen b07d337b96 bugfix: bin/phd now offsets addresses by skip. 2014-08-14 18:40:34 +02:00
Morten Brøns-Pedersen 8a5141a52a bugfix: pwnlib.util.fiddling.hexdump() now reports the correct address on the last line. 2014-08-14 18:39:24 +02:00
Morten Brøns-Pedersen bb777b923e added CLI frontend to pwnlib.util.fiddling.hexdump: phd (Pwnlib HexDump). 2014-08-14 04:24:37 +02:00
Morten Brøns-Pedersen 60ddfb3f03 added highlights to pwnlib.util.fiddling.hexdump. 2014-08-14 03:57:13 +02:00
Morten Brøns-Pedersen 196499095b added colors to pwnlib.util.fiddling.hexdump(). 2014-08-14 03:53:06 +02:00
Brian Wylie fa61307a73 add pyserial as a required dependency (at least on MacOSX you need it :) 2014-08-13 13:43:24 -06:00
Brian Wylie 05838c1d2a have requirements.txt just 'call' setup.py install_requires so that you don't have two copies of the python dependencies 2014-08-13 13:42:29 -06:00
Morten Brøns-Pedersen aab7122870 pwn now also looks for environment variables starting with "PWNLIB_"; "PWNLIB_LOG_LEVEL" sets context.log_level. added a new flag "NOTERM". 2014-08-13 17:26:55 +02:00
Morten Brøns-Pedersen 20933e1ac1 removed per tube log levels from pwnlib.tubes.tube as the feature was hardly ever used and not very intuitive. might reintroduce later. 2014-08-13 17:26:55 +02:00
Morten Brøns-Pedersen d53a59b604 bugfix: pwnlib.tubes.tube.recvline() now uses the timeout argument when called with no delims. 2014-08-13 17:26:46 +02:00
Morten Brøns-Pedersen 251eccbc70 added argument keepend(s) to functions in pwnlib.tubes.tube recieving lines. 2014-08-13 17:22:55 +02:00
Morten Brøns-Pedersen c07637d05b rewrote major parts of pwnlib.tubes.tube for hugely increased performance. introduced slight API changes in the process. 2014-08-13 15:05:51 +02:00
Morten Brøns-Pedersen 8996cdf363 fixed a bug where pwnlib.term.term would simetimes throw an exception if there was free space at the bottom of the terminal and the window was resized. 2014-08-13 01:33:40 +02:00
Mathias Svensson 4cf1e55129 Added initial support for serial tubes 2014-08-09 01:31:58 -07:00
IdolfHatler 083b5c854e Merge pull request #79 from zachriggle/elfpatch-correct
elf.asm now uses "org" directive for correct relative jumps
2014-08-08 22:56:24 -07:00
Zach Riggle b95246fc5a elf.asm now uses "org" directive for correct relative jumps 2014-08-08 15:38:05 -07:00
Morten Brøns-Pedersen edc43b0de4 bugfix: pwnlib.gdb.attach() now waits for the debugger 2014-08-08 21:24:51 +02:00
Zach Riggle a346d64d98 elfdiff 2014-08-08 11:09:45 -07:00
Zach Riggle 3956b76144 fix 2014-08-08 10:48:05 -07:00
Zach Riggle 5a5ac38e06 elfpatch 2014-08-08 10:43:00 -07:00
Morten Brøns-Pedersen b74a3ad991 added example showing pwnlib.term.text and updated examples/README.md 2014-08-07 21:15:23 +02:00
Morten Brøns-Pedersen 58c4abae82 bugfix: pwnlib.term.term now handles xterm color definition escapes 2014-08-07 20:45:48 +02:00
Morten Brøns-Pedersen 136694509d bugfix: pwnlib.term.termcap.get() now also works for integer and boolean values 2014-08-07 20:08:33 +02:00
Morten Brøns-Pedersen 743bf4cb38 pwnlib.ui.options(): options too long to fit on a single line are now indented properly 2014-08-07 00:37:57 +02:00
IdolfHatler dcb4435e62 Merge pull request #71 from zachriggle/interactive-working-dir
cd on .interactive() if .set_working_dir() has been called
2014-08-06 13:21:41 -07:00
IdolfHatler 3a0f41493a Merge pull request #75 from zachriggle/patch-2
Bugfix: ssh.run(tuple) => error
2014-08-06 13:21:26 -07:00
IdolfHatler 1b4d1a2cb9 Merge pull request #74 from zachriggle/patch-1
`cyclic` currently broken due to aliased command
2014-08-06 13:21:10 -07:00
Morten Brøns-Pedersen 6a1b1f3bab fixed #76 2014-08-06 19:27:18 +02:00
Morten Brøns-Pedersen b9649ea4dc fixed #73 2014-08-06 11:01:14 +02:00
Morten Brøns-Pedersen d45bfe134a added documentation badges to README.md 2014-08-06 10:57:14 +02:00
Morten Brøns-Pedersen 79dc4d46e6 added badges to README.md and changed the header 2014-08-06 10:41:14 +02:00
Zach Riggle 62686836fd Bugfix: ssh.run(tuple) => error
Otherwise throws this

```py
  File "/home/user/pwntools/pwnlib/tubes/ssh.py", line 17, in __init__
    h = log.waitfor('Opening new channel: %r' % (process or 'shell'), log_level = self.log_level)
TypeError: not all arguments converted during string formatting
```
2014-08-06 04:29:10 -04:00
Zach Riggle 1c9ee40592 cyclic currently broken due to aliased command 2014-08-06 03:07:35 -04:00
Zach Riggle 1875ceea5b Merge remote-tracking branch 'upstream/master' 2014-08-05 20:16:25 -07:00
Mathias Svensson 76d58479fa Merge branch 'master' of github.com:Gallopsled/pwntools 2014-08-05 18:53:55 -07:00
Mathias Svensson 3f2298d2d8 Merge branch 'zachriggle-absolute-rop' 2014-08-05 18:53:22 -07:00
Mathias Svensson 3c6d54affd Merge branch 'absolute-rop' of https://github.com/zachriggle/pwntools into zachriggle-absolute-rop
Conflicts:
	pwnlib/util/packing.py

But also changed the rop.py a lot. I am bad at git, I know. :/
2014-08-05 18:52:21 -07:00
Zach Riggle c74ac96ef6 cd on .interactive() if .set_working_dir() has been called 2014-08-05 17:19:19 -07:00
Zach Riggle 1afd42a32a Merge remote-tracking branch 'upstream/master' 2014-08-05 16:51:59 -07:00
Morten Brøns-Pedersen 90e2b69ac5 example showing pwnlib.ui.options(). 2014-08-06 01:46:57 +02:00
Morten Brøns-Pedersen 7785615055 added bells and whistles to pwnlib.ui.options when in term_mode. 2014-08-06 01:46:10 +02:00
Morten Brøns-Pedersen 856e75d2cc pwnlib.ui.more now just prints the text if not in term_mode. 2014-08-06 01:06:11 +02:00
Morten Brøns-Pedersen 7d98a0a6dd added pwnlib.ui.more. 2014-08-06 01:04:09 +02:00
Morten Brøns-Pedersen d601ccfc64 added links to itertools aliases in pwnlib.util.iters documentation. 2014-08-06 00:04:11 +02:00
Morten Brøns-Pedersen 465b53ee61 fixed doctest setup for pwnlib.util.iters. 2014-08-05 23:44:12 +02:00
Morten Brøns-Pedersen c828fd05ae added module pwnlib.useragents. 2014-08-05 23:31:33 +02:00
Morten Brøns-Pedersen ba68548e02 added __all__ to pwnlib.util.iters. 2014-08-05 19:14:55 +02:00
Morten Brøns-Pedersen 6e06b0e808 added "iters" to pwnlib.util.__all__. 2014-08-05 18:28:58 +02:00
Morten Brøns-Pedersen c6b2015158 added support for status updates to pwnlib.log.waitfor() when not in term_mode 2014-08-05 09:33:49 +02:00
Morten Brøns-Pedersen 9548fa6b69 added pwnlib.util.iters to pwn toplevel 2014-08-05 09:33:49 +02:00
Morten Brøns-Pedersen 9d79323df9 ported iterutil from old pwnlib to pwnlib.util.iters. 2014-08-05 09:33:49 +02:00
Mathias Svensson d3fc464eaf Added the method spawn_process for tubes, which will spawn a process communicating on that tube 2014-08-04 23:54:15 -07:00
Mathias Svensson c45edb3419 I cannot see any reason not to use ebp in pivots 2014-08-04 23:23:25 -07:00
Mathias Svensson 41d6b8542d Added the possibility for preprocessing to flat 2014-08-04 22:52:40 -07:00
Mathias Svensson 9351ed93c7 Missed one 2014-08-04 22:51:58 -07:00
Mathias Svensson 1f71e690e5 Removed slow tests 2014-08-04 22:48:41 -07:00
Mathias Svensson 1b3d426377 Does the same transformation for connected as was done for shutdown 2014-08-04 22:18:06 -07:00
Mathias Svensson fd72c895af Make pack support unicode 2014-08-04 22:06:53 -07:00
Mathias Svensson 124a473432 Make run_in_new_terminal less noisy 2014-08-04 22:06:19 -07:00
Mathias Svensson b615ba58d0 ECONNRESET should be translated into EOFError 2014-08-04 22:05:46 -07:00
Mathias Svensson b5d12f680f Added cwd argument to process 2014-08-04 19:35:35 -07:00
Morten Brøns-Pedersen 86773a5a4a pwnlib.tubes.tube.shutdown() now accepts "in", "out", "recv", "send", "read" and "write"; subclasses should now implement shutdown_raw(). 2014-08-05 04:24:33 +02:00
Morten Brøns-Pedersen 3ed230d410 changed pwnlib.util.safeeval.expr_eval/const_eval to pwnlib.util.safeeval.exrp/const. 2014-08-05 04:24:33 +02:00
Morten Brøns-Pedersen a5d62b8e2e added modules collections and operator to pwn.toplevel. 2014-08-05 04:24:33 +02:00
Zach Riggle 5a95e8e9d2 Implement absolute ROP loading given a static base address 2014-08-04 19:23:05 -07:00
IdolfHatler b90e6cdc3d Merge pull request #67 from zachriggle/elf-bss
Add pwnlib.elf.ELF.bss()
2014-08-04 19:08:51 -07:00
Mathias Svensson d970304bd2 We now support interactive outside term mode 2014-08-04 19:01:43 -07:00
Zach Riggle d534a3a929 Add pwnlib.elf.ELF.bss() 2014-08-04 19:01:26 -07:00
Mathias Svensson 3e01b5ab97 Fixed bug in run_in_new_terminal and removed tabs 2014-08-04 18:27:06 -07:00
Mathias Svensson 485005cab8 Support using a string as an argument to ROP 2014-08-04 18:14:44 -07:00
Morten Brøns-Pedersen 25060ef502 set context.log_level to "silent" when running doctests 2014-08-05 02:08:25 +02:00
IdolfHatler 11e2b3a677 Merge pull request #62 from zachriggle/gdb-resolve-library-addresses
GDB resolution for modules
2014-08-04 16:46:22 -07:00
Zach Riggle 6898eae383 Merge branch 'elf-fix-offsets-after-addr-change' 2014-08-04 16:23:29 -07:00
Zach Riggle 3097a60433 Merge branch 'gdb-resolve-library-addresses' 2014-08-04 16:21:47 -07:00
Zach Riggle e61812d7aa Clarify docs 2014-08-04 16:21:04 -07:00
Zach Riggle 215c42b2c5 Example, doctest works 2014-08-04 16:18:35 -07:00
Mathias Svensson d51e71f738 Merge branch 'zachriggle-elf-fix-offsets-after-addr-change' 2014-08-04 16:05:32 -07:00
Mathias Svensson 4a28bd824f Removed some debugging code 2014-08-04 16:05:23 -07:00
Mathias Svensson cb52da39b8 Merge branch 'elf-fix-offsets-after-addr-change' of https://github.com/zachriggle/pwntools into zachriggle-elf-fix-offsets-after-addr-change 2014-08-04 16:04:51 -07:00
Zach Riggle 81500b5a6e Merge remote-tracking branch 'upstream/master' 2014-08-04 16:00:00 -07:00
Zach Riggle a492a5a5c9 Fix docs 2014-08-04 15:57:50 -07:00
Mathias Svensson 8ffef8af9f Merge branch 'zachriggle-rop-easy' 2014-08-04 15:52:41 -07:00
Mathias Svensson 20b1b90987 Added docstring 2014-08-04 15:52:21 -07:00
Mathias Svensson 937ab31947 Merge branch 'rop-easy' of https://github.com/zachriggle/pwntools into zachriggle-rop-easy 2014-08-04 15:50:29 -07:00
Zach Riggle 488e4b8d11 flush = chain(); clear(); 2014-08-04 15:49:55 -07:00
Zach Riggle baf5b68cf4 Implement shorthand for rop.call(); add .flush(); remove arg to .chain() 2014-08-04 15:47:11 -07:00
Zach Riggle 4ae64db213 Fix vaddr_to_offset and offset_to_vaddr after the base address changes 2014-08-04 15:36:03 -07:00
Mathias Svensson 3b69b293cd Moved re import 2014-08-04 13:37:55 -07:00
Zach Riggle d168eaed40 Merge branch 'rop-easy' 2014-08-04 12:36:38 -07:00
Zach Riggle d0c71bd6e9 Slight syntax enhancement 2014-08-04 12:36:23 -07:00
Zach Riggle 43971132b1 Merge remote-tracking branch 'upstream/master'
Conflicts:
	pwnlib/elf.py
2014-08-04 12:34:36 -07:00
Zach Riggle 4751e8e473 easy rop gadget notation 2014-08-04 12:24:49 -07:00
Morten Brøns-Pedersen 4b7c13e873 updated example docstrings and README.md 2014-08-04 20:01:22 +02:00
Morten Brøns-Pedersen e53af0657f added script to generate examples/README.md and the new README.md 2014-08-04 19:56:01 +02:00
Mathias Svensson ab33cbe4c0 Merge branch 'zachriggle-elf-dont-load-dyn-dependencies' 2014-08-04 09:22:22 -07:00
Mathias Svensson 76817799fd Replaced a generic "except:" in elf.py with a catching a specific exception 2014-08-04 09:22:15 -07:00
Mathias Svensson 9d7858ad7d Merge branch 'elf-dont-load-dyn-dependencies' of https://github.com/zachriggle/pwntools into zachriggle-elf-dont-load-dyn-dependencies 2014-08-04 09:18:16 -07:00
Morten Brøns-Pedersen 90e7da6d31 fixed #60 -- this would not (could not) have happened in a statically typed language 2014-08-04 18:03:00 +02:00
Mathias Svensson f1d38959ca Merge branch 'master' of github.com:Gallopsled/pwntools
Conflicts:
	pwnlib/elf.py
2014-08-04 08:49:04 -07:00
Mathias Svensson e255e92dcf Merge branch 'zachriggle-v2-rop' 2014-08-04 08:47:16 -07:00
Mathias Svensson 149fc79f41 Fixed up the rop commit a bit 2014-08-04 08:47:05 -07:00
Mathias Svensson 846822b424 Merge branch 'v2-rop' of https://github.com/zachriggle/pwntools into zachriggle-v2-rop 2014-08-04 07:45:55 -07:00
IdolfHatler b0debef19d Merge pull request #61 from zachriggle/elf-dso-address-fix
Bugfix: ELF load address for DSO is 0, libc addresses now correct
2014-08-04 07:19:54 -07:00
Zach Riggle f18bca5112 Merge branch 'gdb-resolve-library-addresses' 2014-08-04 07:17:38 -07:00
IdolfHatler 107806f13a Merge pull request #58 from zachriggle/ssh-easy-bad-attrs
Filter a few things which should not spawn SSH commands
2014-08-04 07:17:19 -07:00
Zach Riggle 31330a653b Permit local running of gdb(), better support for ulimit, no reliance on "start" command in GDB or symbols 2014-08-04 07:17:11 -07:00
Mathias Svensson 0a2e37e3c6 Merge branch 'zachriggle-ssh-channel-with-statement' 2014-08-04 07:16:20 -07:00
Mathias Svensson e3fd4ceea7 Fixed the placement of the __enter__ and __exit__ functions in pwnlib/tubes/tube.py 2014-08-04 07:16:11 -07:00
Mathias Svensson a67b47a49e Merge branch 'ssh-channel-with-statement' of https://github.com/zachriggle/pwntools into zachriggle-ssh-channel-with-statement 2014-08-04 07:15:08 -07:00
Zach Riggle d92ce7ff2c Merge branch 'elf-dont-load-dyn-dependencies' 2014-08-04 07:14:09 -07:00
Mathias Svensson cc2540d72f Merge branch 'zachriggle-less-silent-ssh' 2014-08-04 07:13:54 -07:00
Mathias Svensson 5af54ddb9f The log_level argument was not needed here 2014-08-04 07:13:45 -07:00
Zach Riggle ca8b62414d Better fallback 2014-08-04 07:13:08 -07:00
Mathias Svensson 7dbdcd538d Merge branch 'less-silent-ssh' of https://github.com/zachriggle/pwntools into zachriggle-less-silent-ssh 2014-08-04 07:12:44 -07:00
IdolfHatler 1974282888 Merge pull request #56 from zachriggle/elf-disasm-vma
Add --vma-offset to asm.disasm() and ELF.disasm() helper to automate
2014-08-04 07:10:41 -07:00
IdolfHatler 33c48e54eb Merge pull request #63 from zachriggle/freebsd-ssh-cache
FreeBSD hash utility is called shasum
2014-08-04 07:08:17 -07:00
Zach Riggle c110726e43 Merge branch 'ssh-easy-bad-attrs' 2014-08-04 07:03:28 -07:00
Zach Riggle e46c9db477 Blacklist anything that starts with a _ 2014-08-04 07:01:59 -07:00
Zach Riggle c71a7436d2 Merge branch 'elf-repr'
Conflicts:
	pwnlib/elf.py
2014-08-04 06:49:27 -07:00
Zach Riggle be283273b0 Merge branch 'v2-rop' 2014-08-04 06:47:54 -07:00
Zach Riggle b3b9117cdb ROP repr 2014-08-04 06:45:59 -07:00
Zach Riggle ed85b85692 Make ELF repr meaningful for working in REPL 2014-08-04 06:42:38 -07:00
Zach Riggle 34d4a71235 Merge branch 'freebsd-ssh-cache' 2014-08-04 06:36:36 -07:00
Zach Riggle f952e9dd0f FreeBSD .so are not recognized as shared objects, so ldd throws an error. Since there's not really a need to check the dependencies of an .so (use-case is we loaded all the deps from an exe via ldd), don't do it. 2014-08-04 06:32:45 -07:00
Zach Riggle 03d42522a6 FreeBSD hash utility is called shasum. Others exist, but they dont put the hash first. 2014-08-04 06:29:54 -07:00
Zach Riggle accfe828c7 Merge branch 'gdb-resolve-library-addresses' 2014-08-04 05:49:00 -07:00
Zach Riggle b63794599f Merge branch 'ssh-channel-with-statement' 2014-08-04 05:48:54 -07:00
Zach Riggle 8565d0ff71 Move __enter__ and __exit__ to tubes.tube so it's available globally 2014-08-04 05:46:55 -07:00
Zach Riggle 666ef2ed62 GDB resolution for modules 2014-08-04 05:40:47 -07:00
Zach Riggle 1551706362 Merge branch 'elf-dso-address-fix'
Conflicts:
	pwnlib/elf.py
2014-08-04 04:30:23 -07:00
Zach Riggle 0e2f28892c Merge branch 'v2-rop' 2014-08-04 04:29:47 -07:00
Zach Riggle efb4be6c56 Bugfix: ELF load address for DSO is 0, libc addresses now correct 2014-08-04 04:28:29 -07:00
Zach Riggle 455e15d648 Bugfix: Permit both int and long 2014-08-04 04:26:12 -07:00
Zach Riggle 6f888bfe8a Merge branch 'v2-rop' 2014-08-04 03:24:22 -07:00
Zach Riggle b6272a809b Cache ROP gadgets for speed. Parsing libc is really slow. 2014-08-04 03:06:51 -07:00
Zach Riggle 705ca87d47 Merge branch 'v2-rop' 2014-08-04 02:49:06 -07:00
Zach Riggle 06a14cfdef Merge branch 'elf-disasm-vma' 2014-08-04 02:49:01 -07:00
Zach Riggle 3217ff98c9 Merge branch 'less-silent-ssh' 2014-08-04 02:48:54 -07:00
Zach Riggle 0b26375619 Merge branch 'ssh-easy-bad-attrs' 2014-08-04 02:48:48 -07:00
Zach Riggle 4a13eb03fc Merge branch 'ssh-channel-with-statement' 2014-08-04 02:48:39 -07:00
Zach Riggle 5220490f8d Allow "with" on ssh_channel/ssh.run 2014-08-04 02:10:46 -07:00
Zach Riggle 3a139cff75 Filter a few things which should not spawn SSH commands 2014-08-04 01:14:36 -07:00
Zach Riggle 019c3b33db ssh.foo and ssh['foo'] were accidentally silcening output from commands (e.g. 'opening new channel', 'receiving all data') 2014-08-04 00:12:13 -07:00
Morten Brøns-Pedersen 338014f77b bugfix: default value for argument sock in pwnlib.shellcraft.i386.linux.dupsh() changed from None to 'ebp'. 2014-08-04 09:07:28 +02:00
Zach Riggle f9c3f64319 Fix typo 2014-08-03 23:56:43 -07:00
Zach Riggle 4690339b48 Add --vma-offset to asm.disasm() and ELF.disasm() helper to automate 2014-08-03 23:50:28 -07:00
Zach Riggle c558b53ffa Docs and small fixes 2014-08-03 23:13:25 -07:00
Zach Riggle 9324ef2af4 ROP rewritten to use new ELF stuff, and ropgadget/capstone 2014-08-03 23:13:25 -07:00
Morten Brøns-Pedersen b3ec35797c removed circular import in pwnlib.term.key/keymap 2014-08-04 02:11:12 +02:00
Morten Brøns-Pedersen 62dc5d0a39 removed accidental self-import 2014-08-04 02:11:12 +02:00
Mathias Svensson 97fe8e6491 Added ulimit -s unlimited to the places where we called ldd 2014-08-03 16:25:53 -07:00
Mathias Svensson 1ed9199a41 Fixed doctests 2014-08-03 16:25:02 -07:00
Mathias Svensson d61d1453fa Fixed mistake in the merge 2014-08-03 15:58:18 -07:00
Mathias Svensson 76485c6456 Merge branch 'zachriggle-ldd-universal' 2014-08-03 15:53:00 -07:00
Mathias Svensson b05017ee19 Merge branch 'ldd-universal' of https://github.com/zachriggle/pwntools into zachriggle-ldd-universal
Conflicts:
	pwnlib/tubes/ssh.py
2014-08-03 15:52:51 -07:00
Mathias Svensson eb06d4120c Merge branch 'zachriggle-ssh-easy-pwn2' 2014-08-03 15:13:40 -07:00
Mathias Svensson fcd7a013a6 Fixed up the ssh getattr/getitem a bit 2014-08-03 15:13:22 -07:00
Mathias Svensson ccd541fbe6 Merge branch 'ssh-easy-pwn2' of https://github.com/zachriggle/pwntools into zachriggle-ssh-easy-pwn2 2014-08-03 14:17:01 -07:00
Zach Riggle 8592c0b0de Implement #38 for pwn v2 2014-08-03 14:01:13 -07:00
Mathias Svensson 7b35fada6a Updated ssh_gdb to user port 0, so any free port is chosen. Also updated the example 2014-08-03 13:33:30 -07:00
Mathias Svensson 6f10e75c9b Updated remote_gdb_debugging.py example 2014-08-03 12:15:14 -07:00
Morten Brøns-Pedersen eaf1551a7f changed keyword argument non_writable to writable in pwnlib.elf.search(). also changed the default behaviour and updated the docstring 2014-08-03 20:55:02 +02:00
Mathias Svensson c7ef29b4c1 Another bug 2014-08-03 11:16:59 -07:00
Morten Brøns-Pedersen 13d5a4a090 introduced a lock in pwnlib.log to ensure that different logging messages don't get interleaved 2014-08-03 20:07:27 +02:00
Mathias Svensson 25bfae5e05 Fixed bug with the getattr of the listeners 2014-08-03 11:06:39 -07:00
Mathias Svensson 91f88daf8c Added gdb.ssh_gdb and fixed a few bugs, primarily with ctrl-c being ignored 2014-08-03 10:15:35 -07:00
Mathias Svensson d138174890 Made call to the constructors of the listeners non-blocking 2014-08-03 10:15:35 -07:00
Morten Brøns-Pedersen 85a5ceefb5 pwnlib.tubes.tube.clean_and_log() is now a no-op if the tube is not connected 2014-08-03 18:23:24 +02:00
Morten Brøns-Pedersen 7db0b6709f bugfix: when not in term_mode pwnlib.log.indented() mixed writing to sys.stdout and sys.stderr 2014-08-03 08:30:41 +02:00
Morten Brøns-Pedersen 88c957b3a4 updated/removed many examples 2014-08-03 08:29:47 +02:00
Morten Brøns-Pedersen 877388811d example: simple port forwarder 2014-08-03 07:12:29 +02:00
Morten Brøns-Pedersen 0bf988eb39 fixed typo in docstring for pwnlib.tubes.tube.connect_both() 2014-08-03 06:59:17 +02:00
Morten Brøns-Pedersen eb4199fdea updated docstrings for pwnlib.atexit.register() and pwnlib.atexception.register() 2014-08-03 06:54:25 +02:00
Morten Brøns-Pedersen 4573742522 pwnlib.atexception.register() and pwnlib.atexit.register() can now be used as decorators 2014-08-03 06:42:16 +02:00
Morten Brøns-Pedersen 43a46d34e9 added an example showing a use case for pwnlib.tubes.tube.clean_and_log 2014-08-03 05:46:24 +02:00
Morten Brøns-Pedersen 8a05319f58 added pwnlib.tubes.tube.clean_and_log() 2014-08-03 05:46:24 +02:00
Morten Brøns-Pedersen 1b5bfe89d9 added modules pwnlib.atexit and pwnlib.atexception 2014-08-03 05:46:24 +02:00
Mathias Svensson 1a9687a917 Added documentation for ssh forwards 2014-08-02 20:39:28 -07:00
Mathias Svensson 1bffb5a986 Fixed sh_string and its documentation a bit 2014-08-02 20:36:50 -07:00
Mathias Svensson 8b975b2fb7 Added support for ssh port forwards in both directions 2014-08-02 20:30:51 -07:00
Mathias Svensson 652e7b4e36 Merge branch 'zachriggle-ssh-working-dir' 2014-08-02 18:00:11 -07:00
Mathias Svensson 8afebd1c9e Fixed up the pull request a bit 2014-08-02 17:58:40 -07:00
Zach Riggle b126f02851 Newline at OEF 2014-08-02 17:58:40 -07:00
Zach Riggle 36c56143e1 Fix incorrect doc 2014-08-02 17:58:40 -07:00
Zach Riggle de67736650 Squelch output from bad working directories; set_working_directory shows a warning 2014-08-02 17:58:40 -07:00
Zach Riggle c66d1ffcf2 No need for old_wd now that we "cd foo;" vs "cd foo &&" 2014-08-02 17:58:40 -07:00
Zach Riggle 413ee34750 Permit wd= arguments for run and run_to_end 2014-08-02 17:58:40 -07:00
Zach Riggle f2b2cfcbfc Move prepending 'cd %r' into the ssh_channel after the command has been printed, to prevent cluttering the screen 2014-08-02 17:58:40 -07:00
Zach Riggle f95c7bf9c9 Introduce ssh.set_working_directory 2014-08-02 17:58:40 -07:00
Mathias Svensson fa0f221533 Fixed up the pull request a bit 2014-08-02 17:57:34 -07:00
Mathias Svensson 7086ab2c77 Merge branch 'ssh-working-dir' of https://github.com/zachriggle/pwntools into zachriggle-ssh-working-dir 2014-08-02 17:35:45 -07:00
IdolfHatler f94aed066f Merge pull request #54 from zachriggle/mindfuck
Add <> for tubes, fix typo
2014-08-02 17:22:53 -07:00
Mathias Svensson 60910fb161 Minor optimizations to the tubes module 2014-08-02 17:22:01 -07:00
Morten Brøns-Pedersen c287b098a9 changed command line option from NOINFO to SILENT 2014-08-03 01:19:22 +02:00
Zach Riggle 576c2fe739 Add <> for tubes, fix type 2014-08-02 16:04:25 -07:00
Mathias Svensson 7a5ba94447 Fixed listen and added connect_* methods to tubes 2014-08-02 14:58:03 -07:00
Zach Riggle 1466c2e470 Newline at OEF 2014-08-02 14:37:52 -07:00
Zach Riggle 8d6188d1c2 Fix incorrect doc 2014-08-02 14:36:39 -07:00
Zach Riggle ae851c53c0 Squelch output from bad working directories; set_working_directory shows a warning 2014-08-02 14:36:02 -07:00
Zach Riggle 347d5ff08f No need for old_wd now that we "cd foo;" vs "cd foo &&" 2014-08-02 14:33:30 -07:00
Zach Riggle da60af4729 Permit wd= arguments for run and run_to_end 2014-08-02 14:28:05 -07:00
Zach Riggle 377e43689b Move prepending 'cd %r' into the ssh_channel after the command has been printed, to prevent cluttering the screen 2014-08-02 14:23:47 -07:00
Zach Riggle 12a2954770 Introduce ssh.set_working_directory 2014-08-02 14:19:28 -07:00
IdolfHatler 713eee3085 Merge pull request #52 from zachriggle/patch-5
Typo
2014-08-02 14:10:42 -07:00
Mathias Svensson df6192bc15 Made _raw_sh_string from tubes.ssh public and put it into util.misc 2014-08-02 14:09:47 -07:00
Zach Riggle b0cb561b94 Typo 2014-08-02 17:02:25 -04:00
Zach Riggle 45dee58e23 Single point for ldd, male ELF.libs and SSH.libs return consistent output of {full local path: ldd address} 2014-08-02 12:51:35 -07:00
Mathias Svensson 5e4b0d7cc6 Fixed typo 2014-08-02 11:36:08 -07:00
Mathias Svensson a4b6e886ca Fixed #48 2014-08-02 11:21:25 -07:00
Mathias Svensson e7b2552b1e Better links on readthedocs 2014-08-02 10:30:58 -07:00
Mathias Svensson 9c950d66cd Some more readthedocs 2014-08-02 10:21:23 -07:00
Mathias Svensson 82b22629cd Fixed #46 2014-08-02 08:17:59 -07:00
Mathias Svensson 37a2ad91cd version bump to 2.1.3 -- I really should have included this in 2.1.2 2014-08-02 00:13:42 -07:00
Mathias Svensson e2540c9f80 More readthedocs testing 2014-08-02 00:10:33 -07:00
Mathias Svensson 914b94131e Added the file docs/requirements.txt as a test for readthedocs 2014-08-02 00:08:32 -07:00
Robert Larsen 934b1d9112 Fixed arm targets. 2014-06-17 10:42:09 +02:00
Robert Larsen ce17e10f7e Added processor specific targets. Also targets for arm. 2014-06-17 10:39:59 +02:00
Robert Larsen 122530b874 Begin by making tarkets 2014-06-17 10:25:55 +02:00
Robert Larsen f9e7437e26 Added script that tests all targets.
Build non PIE binaries.
2014-06-17 10:21:06 +02:00
Robert Larsen 13c2aae045 Fixed regression. 2014-06-16 22:51:38 +02:00
Robert Larsen 5300a350c4 link_map can be found in both .got and .got.plt so if one is missing try
the other.
2014-05-27 15:43:46 +02:00
3555 changed files with 111668 additions and 14701 deletions

No files matched your search

+8
View File
@@ -0,0 +1,8 @@
[run]
branch = True
omit =
*/constants/*
source =
pwn
pwnlib
~/.pwntools-cache/
+1
View File
@@ -0,0 +1 @@
pwnlib/data/* linguist-vendored
+9
View File
@@ -0,0 +1,9 @@
# Pwntools Issue Template
Thanks for contributing to Pwntools!
When reporting an issue, be sure that you are running the latest released version of pwntools (`pip install --upgrade pwntools`).
Please verify that your issue occurs on 64-bit Ubuntu 14.04. You can use the Dockerfile in `extra/docker/Dockerfile` to save time.
If possible, provide a proof-of-concept which demonstrates the problem. Include any binaries or scripts necessary to reproduce the issue, and please include the full debug output via setting the environment variable `PWNLIB_DEBUG=1`.
+27
View File
@@ -0,0 +1,27 @@
# Pwntools Pull Request
Thanks for contributing to Pwntools! Take a moment to look at [`CONTRIBUTING.md`][contributing] to make sure you're familiar with Pwntools development.
Please provide a high-level explanation of what this pull request is for.
## Testing
Pull Requests that introduce new code should try to add doctests for that code. See [`TESTING.md`][testing] for more information.
## Target Branch
Depending on what the PR is for, it needs to target a different branch.
You can always [change the branch][change] after you create the PR if it's against the wrong branch.
| Branch | Type of PR |
| -------- | ---------------------------------------------------------------- |
| `dev` | New features, and enhancements
| `dev` | Documentation fixes and new tests
| `stable` | Bug fixes that affect the current `stable` branch
| `beta` | Bug fixes that affect the current `beta` branch, but not `stable`
| `dev` | Bug fixes for code that has never been released
[contributing]: https://github.com/Gallopsled/pwntools/blob/dev/CONTRIBUTING.md
[testing]: https://github.com/Gallopsled/pwntools/blob/dev/TESTING.md
[change]: https://github.com/blog/2224-change-the-base-branch-of-a-pull-request
+7 -1
View File
@@ -2,10 +2,16 @@
*.hi
*.pyc
*~
*.swp
.ropeproject
*.pdf
*/auto/*
*/bin/*
docs/build
build
MANIFEST
dist
pwntools.egg-info
*.egg-info
*.core
.coverage
.tox
+4
View File
@@ -0,0 +1,4 @@
[settings]
indent=' '
not_skip = __init__.py
force_single_line = 1
+7
View File
@@ -0,0 +1,7 @@
{
"default_encoding": "UTF-8",
"ensure_newline_at_eof_on_save": true,
"tab_size": 4,
"translate_tabs_to_spaces": true,
"trim_trailing_white_space_on_save": true
}
+43
View File
@@ -0,0 +1,43 @@
sudo: false
language: python
addons:
apt:
packages:
- gcc-multilib
- gcc-4.6-arm-linux-gnueabihf
- lib32stdc++6
- ash
- bash
- dash
- ksh
- mksh
- zsh
- pandoc
- gdb
cache:
- pip
- directories:
- usr
- /home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/
- /home/travis/virtualenv/python2.7.9/bin/
python:
- "2.7"
before_install:
- echo $-
- source travis/install.sh
- source travis/ssh_setup.sh
- echo $-
install:
- pip install --upgrade pip
- 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'
script:
- PWNLIB_NOTERM=1 coverage run -m sphinx -b doctest docs/source docs/build/doctest
after_success:
- coveralls
- source travis/update_demo.sh
+348
View File
@@ -0,0 +1,348 @@
# Changelog
This changelog only includes added major features and changes. Bugfixes and
minor changes are omitted.
## Release History
The table below shows which release corresponds to each branch, and what date the version was released.
| Version | Branch | Release Date |
| ---------------- | -------- | ---------------------- |
| [3.6.0](#350) | `dev` | May 6, 2017 (planned)
| [3.5.0](#350) | `beta` | Mar 25, 2017 (planned)
| [3.4.0](#340) | `stable` | Feb 13, 2017
| [3.3.4](#334) | | Jan 12, 2016
| [3.3.3](#333) | | Jan 10, 2016
| [3.3.2](#332) | | Jan 10, 2016
| [3.3.1](#331) | | Jan 10, 2016
| [3.3.0](#330) | | Dec 24, 2016
| [3.2.1](#321) | | Dec 24, 2016
| [3.2.0](#320) | | Nov 12, 2016
| [3.1.1](#311) | | Oct 23, 2016
| [3.1.0](#310) | | Oct 2, 2016
| [3.0.4](#304) | | Sept 19, 2016
| [3.0.3](#303) | | Sept 18, 2016
| [3.0.2](#302) | | Sept 6, 2016
| [3.0.1](#301) | | Aug 20, 2016
| [3.0.0](#300) | | Aug 20, 2016
| [2.2.0](#220) | | Jan 5, 2015
## 3.6.0
To be released on May 6, 2017.
## 3.5.0
To be released on Mar 25, 2017.
## 3.4.0
- [#800][800] Add `shell=` option to `ssh.process()`
- [#806][806] Add `context.buffer_size` for fine-tuning `tube` performance
+ Also adds `buffer_fill_size=` argument for all tubes
- [b83a6c7][b83a6c7] Fix undocumented `process.leak` function
- [546061e][546061e] Modify `coredump_filter` of all spawned processes, so that core dumps are more complete
- [#809][809] Add several functions to `adb` (`unlink`, `mkdir`, `makedirs`, `isdir`, `exists`)
- [#817][817] Make disconnection detection more robust
[800]: https://github.com/Gallopsled/pwntools/pull/800
[806]: https://github.com/Gallopsled/pwntools/pull/806
[809]: https://github.com/Gallopsled/pwntools/pull/809
[817]: https://github.com/Gallopsled/pwntools/pull/817
[5d9792f]: https://github.com/Gallopsled/pwntools/commit/5d9792f
[b83a6c7]: https://github.com/Gallopsled/pwntools/commit/b83a6c7
[546061e]: https://github.com/Gallopsled/pwntools/commit/546061e
## 3.3.4
- [#850][850] and [#846][846] fix issues with `hexdump` and the `phd` command-line utility, when using pipes (e.g. `echo foo | phd`)
- [#852][852] Fixes register ordering in `regsort`
- [#853][853] Fixes the registers restored in `shellcraft.amd64.popad`
[846]: https://github.com/gallopsled/pwntools/pull/846
[850]: https://github.com/gallopsled/pwntools/pull/850
[852]: https://github.com/gallopsled/pwntools/pull/852
[853]: https://github.com/gallopsled/pwntools/pull/853
## 3.3.3
- [#843][843] fixed a bug in `amd64.mov`.
[843]: https://github.com/gallopsled/pwntools/pull/843
## 3.3.2
- [#840][840] fixed a regression introduced by [#837][837].
[840]: https://github.com/gallopsled/pwntools/pull/840
## 3.3.1
- [#833][833] Fixed a performance-impacting bug in the adb module.
- [#837][837] Fixed a bug([#836][836]) causing `hexdump(cyclic=True)` to throw an exception.
[833]: https://github.com/Gallopsled/pwntools/pull/833
[837]: https://github.com/Gallopsled/pwntools/pull/837
[836]: https://github.com/Gallopsled/pwntools/issues/836
## 3.3.0
- [b198ec8][b198ec8] Added `tube.stream()` function, which is like `tube.interact()` without a prompt or keyboard input.
+ Effectively, this is similar to `cat file` and just prints data as fast as it is received.
- [aec3fa6][aec3fa6] Disable update checks against GitHub
+ These checks frequently broke due to GitHub query limits
- [#757][757] Fixed `adb.wait_for_device()` re-use of the same connection
- [f9133b1][f9133b1] Add a `STDERR` magic argument to make logging go to `stderr` instead of `stdout`
+ Usage is e.g. `python foo.py STDERR` or `PWNLIB_STDERR=1 python foo.py`
+ Also adds `context.log_console` to log to any file or terminal
- [67e11a9][67e11a9] Add faster error checking to `cyclic()` when provided very large values
- [5fda658][5fda658] Expose BitPolynom in `globals()`
- [#765][765] Added `-d` option for hex-escaped output for `shellcraft` command-line tool
- [#772][772] Fixed bash completion regressions
- [30c34b7][30c34b7] Fix `ROP.call()` with `Function` objects from `ELF.functions`
- [fa402ce][fa402ce] Add `adb.uptime` and `adb.boot_time`
- [82312ba][82312ba] Add `cyclic_metasploit` and `cyclic_metasploit_find`
[757]: https://github.com/Gallopsled/pwntools/pull/757
[765]: https://github.com/Gallopsled/pwntools/pull/765
[772]: https://github.com/Gallopsled/pwntools/pull/772
[b198ec8]: https://github.com/Gallopsled/pwntools/commit/b198ec8
[aec3fa6]: https://github.com/Gallopsled/pwntools/commit/aec3fa6
[f9133b1]: https://github.com/Gallopsled/pwntools/commit/f9133b1
[67e11a9]: https://github.com/Gallopsled/pwntools/commit/67e11a9
[5fda658]: https://github.com/Gallopsled/pwntools/commit/5fda658
[30c34b7]: https://github.com/Gallopsled/pwntools/commit/30c34b7
[fa402ce]: https://github.com/Gallopsled/pwntools/commit/fa402ce
[82312ba]: https://github.com/Gallopsled/pwntools/commit/82312ba
## 3.2.1
Multiple bug fixes.
- [#783][783] Fix `adb.uninstall` typo
- [#787][787] Added error handling for `ssh.process` argument `preexec_fn`
- [#793][793] Fixed progress message in `remote()` when connections failed
- [#802][802] Fixed partition listing in `adb.partitions`, which accidentally shelled out to the `adb` binary
- [#804][804] Fix error message for 32-bit distributions
- [#805][805] Fix exception in `Core.segments` when a segment has no name
- [#811][811] Fixes and performance improvements for `adb.wait_for_device()`
- [#813][813] Fixed a release script
- [#814][814] Fixed exceptions thrown if the `$HOME` directory is not writable
- [#815][815] Properly handle `None` in `MemLeak`
[783]: https://github.com/Gallopsled/pwntools/pull/783
[787]: https://github.com/Gallopsled/pwntools/pull/787
[793]: https://github.com/Gallopsled/pwntools/pull/793
[802]: https://github.com/Gallopsled/pwntools/pull/802
[804]: https://github.com/Gallopsled/pwntools/pull/804
[805]: https://github.com/Gallopsled/pwntools/pull/805
[811]: https://github.com/Gallopsled/pwntools/pull/811
[813]: https://github.com/Gallopsled/pwntools/pull/813
[814]: https://github.com/Gallopsled/pwntools/pull/814
[815]: https://github.com/Gallopsled/pwntools/pull/815
## 3.2.0
- [#695][695] Fixed a performance regression in `phd`.
- [452605e][452605e] Fixed [#629][629] related to correct removal of temporary files.
- [ea94ee4][ea94ee4] Disallows semi-colons in for the `run_in_terminal` function, since it did not work properly in all cases.
- [6376d07][6376d07] Added the mips shellcode `pushstr_array`.
- [#700][700] Added missing MIPS shellcode documentation to readthedocs, and enabled unit tests
- [#701][701] Command line tools refactored to have a common `pwn` entry point.
+ Added an option to *not* install the traditional `asm`, `disasm`, `checksec`, etc scripts
+ All existing tools can be accessed from the `pwn` command (e.g. `pwn asm nop`).
- [#704][704] The `process` object has a new, optional argument `alarm` for setting a `SIGALRM` timeout for processes.
- [#705][705] Added the Android Emulator to the test suite and Travis CI.
+ Android Emulator is now required for the full test suite
+ Android Emulator tests are skipped if no Android-related changes are detected
- [#711][711] `DynELF` has a new attribute, `heap`, which leaks the current `brk` address (heap base). This is useful for finding heap allocations with dlmalloc-derived allocators like those used by Glibc.
- [#717][717] `sh_string` was rewritten to emit more compact and compatible strings
+ This was achieved by embedding single-quoted non-printable literals
+ Much more testing was added
+ Emitted strings are no longer copy-paste compatible, but work fine with e.g. `tubes` module and the default `subprocess` module
- [#709][709] The `adb` module now directly talks to the `adb` server process via a new module, `adb.protocol`
+ Removes the need to shell out to `adb`
+ Avoids version-compatibility issues with `adb` server vs. client
- [#703][703] Added new methods to `adb`
+ `install` - Installs an APK
+ `uninstall` - Uninstalls a package
+ `packages` - Lists installed packages
- [4893819][4893819] Modified `shellcraft.sh` on all platforms to provide `argv[0]` and set `argc==1`
+ This is needed for systems which have Busybox or other minimal shell for `/bin/sh` which does not behave well with `argc==0` or `argv[0]==NULL`.
- [1e414af][1e414af] Added `connect()` alias for `remote()`
+ For example, `io=connect('google.com', 80)`
+ This also works with `tcp(...)` and `udp(...)` aliases
- [869ec42][869ec42] Added `ssh.read()` and `ssh.write()` aliases
- [2af55c9][2af55c9] `AdbDevice` objects exposed via e.g. `adb.devices()` now offer scoped access to all `adb` module properties
+ It is now possible to e.g. `map(lambda d: d.process(['id']).recvall(), adb.devices())`
[629]: https://github.com/Gallopsled/pwntools/issues/629
[695]: https://github.com/Gallopsled/pwntools/pull/695
[700]: https://github.com/Gallopsled/pwntools/pull/700
[701]: https://github.com/Gallopsled/pwntools/pull/701
[704]: https://github.com/Gallopsled/pwntools/pull/704
[711]: https://github.com/Gallopsled/pwntools/pull/711
[717]: https://github.com/Gallopsled/pwntools/pull/717
[709]: https://github.com/Gallopsled/pwntools/pull/709
[705]: https://github.com/Gallopsled/pwntools/pull/705
[703]: https://github.com/Gallopsled/pwntools/pull/703
[452605e]: https://github.com/Gallopsled/pwntools/commit/452605e854f4870ef5ccfdf7fb110dfd75c50feb
[ea94ee4]: https://github.com/Gallopsled/pwntools/commit/ea94ee4ca5a8060567cc9bd0dc33796a89ad0b95
[6376d07]: https://github.com/Gallopsled/pwntools/commit/6376d072660fb2250f48bd22629bbd7e3c61c758
[1e414af]: https://github.com/Gallopsled/pwntools/commit/1e414afbeb3a01242f4918f111febaa63b640eb7
[869ec42]: https://github.com/Gallopsled/pwntools/commit/869ec42082b4b98958dfe85103da9b101dde7daa
[4893819]: https://github.com/Gallopsled/pwntools/commit/4893819b4c23182da570e2f4ea4c14d73af2c0df
[2af55c9]: https://github.com/Gallopsled/pwntools/commit/2af55c9bc382eca23f89bc0abc7a07c075521f94
## 3.1.1
Fixed a bug in `MemLeak.struct` (PR: #768).
## 3.1.0
A number of smaller bugfixes and documentation tweaks.
## 3.0.4
- Fixed a bug that made 3.0.3 uninstallable (Issue: #751, PR: #752)
## 3.0.3
- Fixed some performance and usability problems with the update system (Issues:
#723, #724, #736. PRs: #729, #738, #747).
- Fixed a bug related to internals in pyelftools (PRs: #730, #746).
- Fixed an issue with travis (Issue: #741, PRs: #743, #744, #745).
## 3.0.2
- Cherry-pick #695, as this was a regression-fix.
- Added a fix for the update checker, as it would suggest prereleases as updates to stable releases.
- Various documentation fixes.
## 3.0.1
A small bugfix release. There were a lot of references to the `master`-branch, however after 3.0.0 we use the names `stable`, `beta` and `dev` for our branches.
## 3.0.0
This was a large release (1305 commits since 2.2.0) with a lot of bugfixes and changes. The Binjitsu project, a fork of Pwntools, was merged back into Pwntools. As such, its features are now available here.
As always, the best source of information on specific features is the comprehensive docs at https://pwntools.readthedocs.org.
This list of changes is non-complete, but covers all of the significant changes which were appropriately documented.
#### Android
Android support via a new `adb` module, `context.device`, `context.adb_host`, and `context.adb_port`.
#### Assembly and Shellcode
- Assembly module enhancements for making ELF modules from assembly or pre-assembled shellcode. See `asm.make_elf` and `asm.make_elf_from_assembly`.
- `asm` and `shellcraft` command-line tools support flags for the new shellcode encoders
- `asm` and `shellcraft` command-line tools support `--debug` flag for automatically launching GDB on the result
- Added MIPS, PowerPC, and AArch64 support to the `shellcraft` module
- Added Cyber Grand Challenge (CGC) support to the `shellcraft` module
- Added syscall wrappers for every Linux syscall for all supported architectures to the `shellcraft` module
+ e.g. `shellcraft.<arch>.gettimeofday`
- (e.g. `shellcraft.i386.linux.`)
- Added in-memory ELF loaders for most supported architectures
+ Only supports statically-linked binaries
+ `shellcraft.<arch>.linux.loader`
#### Context Module
- Added `context.aslr` which controls ASLR on launched processes. This works with both `process()` and `ssh.process()`, and can be specified per-process with the `aslr=` keyword argument.
- Added `context.binary` which automatically sets all `context` variables from an ELF file.
- Added `context.device`, `context.adb`, `context.adb_port`, and `context.adb_host` for connecting to Android devices.
- Added `context.kernel` setting for SigReturn-Oriented-Programming (SROP).
- Added `context.log_file` setting for sending logs to a file. This can be set with the `LOG_FILE` magic command-line option.
- Added `context.noptrace` setting for disabling actions which require `ptrace` support. This is useful for turning all `gdb.debug` and `gdb.attach` options into no-ops, and can be set via the `NOPTRACE` magic command-line option.
- Added `context.proxy` which hooks all connections and sends them to a SOCKS4/SOCKS5. This can be set via the `PROXY` magic command-line option.
- Added `context.randomize` to control randomization of settings like XOR keys and register ordering (default off).
- Added `context.terminal` for setting how to launch commands in a new terminal.
#### DynELF and MemLeak Module
- Added a `DynELF().libc` property which attempt to find the remote libc and download the ELF from LibcDB.
- Added a `DynELF().stack` property which leaks the `__environ` pointer from libc, making it easy to leak stack addresses.
- Added `MemLeak.String` and `MemLeak.NoNewlines` and other related helpers for handling special leakers which cannot e.g. handle newlines in the leaked addresses and which leak a C string (e.g. auto-append a `'\x00'`).
- Enhancements for leaking speed via `MemLeak.compare` to avoid leaking an entire field if we can tell from a partial leak that it does not match what we are searching for.
#### Encoders Module
- Added a `pwnlib.encoders` module for assembled-shellcode encoders/decoders
- Includes position-independent basic XOR encoders
- Includes position-independent delta encoders
- Includes non-position-independent alphanumeric encoders for Intel
- Includes position-independent alphanumeric encoders for ARM/Thumb
#### ELF Module
- Added a `Core` object which can parse core-files, in order to extract / search for memory contents, and extract register states (e.g. `Core('./corefile').eax`).
#### Format Strings
- Added a basic `fmtstr` module for assisting with Format String exploitation
#### GDB Module
- Added support for debugging Android devices when `context.os=='android'`
- Added helpers for debugging shellcode snippets with `gdb.debug_assembly()` and `gdb.debug_shellcode()`
#### ROP Module
- Added support for SigReturn via `pwnlib.rop.srop`
+ Occurs automatically when syscalls are invoked and a function cannot be found
+ SigReturn frames can be constructed manually with `SigreturnFrame()` objects
- Added functional doctests for ROP and SROP
#### Tubes Process Module
- `process()` has many new options, check out the documentation
+ `aslr` controls ASLR
+ `setuid` can disable the effect of setuid, allowing core dumps (useful for extracting crash state via the new `Core()` object)
+ TTY echo and control characters can be enabled via `raw` argument
- `stdout` and `stderr` are now PTYs by default
+ `stdin` can be set to a PTY also via setting `stdin=process.PTY`
#### Tubes SSH Module
- Massive enhancements all over
- `ssh` objects now have a `ssh.process()` method which avoids the need to handle shell expansion via the old `ssh.run()` method
- Files are downloaded via SFTP if available
- New `download` and `upload` methods auto-detect whether the target is a file or directory and acts accordingly
- Added `listen()` method alias for `listen_remote()`
- Added `remote()` method alias for `connect_remote()`
#### Utilities
- Added `fit()` method to combine the functionality of `flat()` with the functionality of `cyclic()`
- Added `negative()` method to negate the value of an integer via two's complement, with respect to the current integer size (`context.bytes`).
- Added `xor_key()` method to generate an XOR key which avoids undesirable bytes over a given input.
- Added a multi-threaded `bruteforce()` implementation, `mbruteforce()`.
- Added `dealarm_shell()` helper to remove the effects of `alarm()` after you've popped a shell.
## 2.2.0
This was a large release with a lot of bugfixes and changes. Only the most significant
are mentioned here.
- Added shellcodes
- Added phd
- Re-added our expansion of itertools
- Added replacements for some semi-broken python standard library modules
- Re-implemented the rop module
- Added a serial tube
- Huge performance gains in the buffering for tubes
- Re-added user agents
- Begun using Travis CI with lots of test
- Removed bundled binutils in favor of documenting how to build them yourselves
- Added support for port forwarding though our SSH module
- Added dependency for capstone and ropgadget
- Added a lots of shellcodes
- Stuff we forgot
- Lots of documentation fixes
- Lots of bugfixes
+35
View File
@@ -0,0 +1,35 @@
# Contributing
Github has a great guide for contributing to open source projects:
- [Contributing to a project](https://guides.github.com/activities/forking/)
- [Fork the repository](https://guides.github.com/activities/forking/#fork)
- [Clone your fork](https://guides.github.com/activities/forking/#clone)
- [Making and pushing changes](https://guides.github.com/activities/forking/#making-changes)
- [Making a Pull Request](https://guides.github.com/activities/forking/#making-a-pull-request)
- [Huzzah!](https://guides.github.com/activities/forking/#huzzah)
## pwntools Specifics
In general, we like to keep things documented. You should add documentation to any new functionality, and update it for any changed functionality. Our docstrings use the [Google Style Python Docstrings](https://sphinxcontrib-napoleon.readthedocs.org/en/latest/example_google.html#example-google).
After you have documentation, you should add a [doctest](https://docs.python.org/2/library/doctest.html).
Finally, it is probably a good idea to run the test suite locally before doing
the pull-request to make sure everything works, however this is not a
requirement.
Once you are ready to do a pull-request, you should figure out if your changes
constitutes a new feature or a bugfix in stable or beta. If it is a bugfix in
stable or beta, you should do the pull-request against the branch in question,
and otherwise your pull-request should be against the dev branch.
Once you do the pull-request Travis CI will run the test-suite on it. Once it
passes one of the core developers will look at your pull request, possibly
comment on it and then hopefully merge it into the branch in question.
## Automated Testing
Pull requests against Pwntools require at a minimum that no tests have been broken, and ideally each pull request will include new tests to ensure that all of the functionality works as intended.
You can find more information on testing in [TESTING.md](TESTING.md).
+1 -1
View File
@@ -13,7 +13,7 @@ directories:
- pwnlib/data/
Copyright (c) 2013 Gallopsled
Copyright (c) 2015 Gallopsled et al.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+7 -1
View File
@@ -1 +1,7 @@
include *.txt
graft examples
graft extra
include *.md *.txt *.sh *.yml MANIFEST.in
recursive-include docs *.rst *.png Makefile *.py *.txt
recursive-include pwnlib *.py *.asm *.rst *.md *.txt *.sh
recursive-include pwn *.py *.asm *.rst *.md *.txt *.sh
recursive-exclude *.pyc
+39 -21
View File
@@ -1,38 +1,56 @@
# Introduction
# pwntools - CTF toolkit
![pwntools logo](https://github.com/Gallopsled/pwntools/blob/stable/docs/source/logo.png?raw=true)
This is the CTF framework used by Gallopsled in every CTF.
[![Docs](https://readthedocs.org/projects/pwntools/badge/?version=stable)](https://docs.pwntools.com/)
[![PyPI](https://img.shields.io/badge/pypi-v3.4.0-green.svg?style=flat)](https://pypi.python.org/pypi/pwntools/)
[![Travis](https://travis-ci.org/Gallopsled/pwntools.svg)](https://travis-ci.org/Gallopsled/pwntools)
[![Coveralls](https://img.shields.io/coveralls/Gallopsled/pwntools/dev.svg)](https://coveralls.io/github/Gallopsled/pwntools?branch=dev)
[![Twitter](https://img.shields.io/badge/twitter-pwntools-4099FF.svg?style=flat)](https://twitter.com/pwntools)
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](http://choosealicense.com/licenses/mit/)
Most code is inside the pwnlib folder with some functionality inside pwn or
bin. It is typically used as:
pwntools is a CTF framework and exploit development library. Written in Python, it is designed for rapid prototyping and development, and intended to make exploit writing as simple as possible.
```python
from pwn import *
context(arch = 'i386', os = 'linux')
# EXPLOIT HERE
r = remote('exploitme.example.com', 31337)
# EXPLOIT CODE GOES HERE
r.send(asm(shellcraft.sh()))
r.interactive()
```
However we have made command-line frontends for some of the functionality
inside the pwnlib. These are:
# Try It Now!
* `asm`/`disasm`: Small wrapper for various assemblers
* `constgrep`: Tool for finding constants defined in header files
* `cyclic`: De Bruijn sequence generator and lookup tool
* `hex`/`unhex`: Command line tools for doing common hexing/unhexing operations
* `shellcraft`: Frontend to our shellcode
You can now do a live demo of Pwntools, [right in your browser](https://demo.pwntools.com).
# Documentation
Our documentation is available on http://pwntools.readthedocs.org/
Our documentation is available at [docs.pwntools.com](https://docs.pwntools.com/)
To get you started, we've provided some example solutions for past CTF challenges in our [write-ups repository](https://github.com/Gallopsled/pwntools-write-ups).
# Installation
Pwntools is available as a pip package. You can install it by running
`pip install pwntools`.
Alternatively if you prefer to have the latest version in git, you can
simply clone this repository, run `pip install -r requirements.txt`
and add entries in your `PATH` and `PYTHONPATH` variables. The script
`install_local.sh` will help you do so, in case you are using bash.
pwntools is best supported on 64-bit Ubuntu 12.04 and 14.04, but most functionality should work on any Posix-like distribution (Debian, Arch, FreeBSD, OSX, etc.). Python 2.7 is required.
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 python2.7 python-pip python-dev git libssl-dev libffi-dev
pip install --upgrade pwntools
```
However, some of the features (assembling/disassembling foreign architectures) require non-Python dependencies. For more information, see the [complete installation instructions here](https://docs.pwntools.com/en/stable/install.html).
# Contribution
See [CONTRIBUTING.md](CONTRIBUTING.md)
# Contact
If you have any questions not worthy of a bug report, feel free to join us
at `#gallopsled` on Freenode and ask away.
If you have any questions not worthy of a [bug report](https://github.com/Gallopsled/pwntools/issues), feel free to ping us
at [`#pwntools` on Freenode](irc://irc.freenode.net/pwntools) and ask away.
Click [here](https://kiwiirc.com/client/irc.freenode.net/pwntools) to connect.
There is also a [mailing list](https://groups.google.com/forum/#!forum/pwntools-users) for higher latency discussion.
+39
View File
@@ -0,0 +1,39 @@
# Testing
Pwntools makes extensive use of unit tests and integration tests to ensure everything is in working order, and no regressions occur.
## Test Suite
To run the test suite, it is best to use Ubuntu 12.04 or 14.04, and run the following commands. **Be aware** that this will add a user to the machine, and create a public key for SSH login!
```sh
bash travis/install.sh
bash travis/ssh_setup.sh
pip install --upgrade --editable .
PWNLIB_NOTERM=1 make -C docs doctest
```
## New Tests
To add a new test to an existing module, just add an inline doctest. If the test needs access to an external module, add the import statement to the `testsetup` block in the corresponding file in `docs/source/<module>.rst`.
To add an entirely new module, create a new `module.rst` and add it to the list in `index.rst`. The best way to see if your tests are actually being run is to add an intentionally-failing test like:
```py
>>> assert False
```
## Example Test Module
The module `pwnlib.testexample` exists to demonstrate how everything is tied together. The only files which were modified to add this example module and run its tests automatically are:
- `pwnlib/testexample.py`
- `docs/source/testexample.rst`
- `docs/source/index.rst`
## Shellcode and ROP
These are both less easy to test, as they require actually executing code, or loading real binaries. In order to make the process simpler, the `runner` library was created to wrap common tasks. For an example of testing shellcode with these helpers, see [exit.asm](pwnlib/shellcraft/templates/i386/linux/exit.asm).
Additionally, for loading ELF files on-the-fly, the helpers `ELF.from_bytes` and `ELF.from_assembly` are available.
-59
View File
@@ -1,59 +0,0 @@
#!/usr/bin/env python2
import argparse, sys
from pwnlib.asm import asm
from pwnlib.context import __possible__ as contexts
from pwnlib.util.fiddling import enhex
parser = argparse.ArgumentParser(
description = 'Assemble shellcode into bytes'
)
parser.add_argument(
'lines',
metavar='line',
nargs='*',
help='Lines to assemble. If none are supplied, use stdin'
)
parser.add_argument(
"-f", "--format",
help="Output format (defaults to hex for ttys, otherwise raw)",
choices=['raw', 'hex', 'string']
)
parser.add_argument(
"-o","--output",
metavar='file',
help="Output file (defaults to stdout)",
type=argparse.FileType('w'),
default=sys.stdout
)
parser.add_argument(
'-c', '--context',
metavar = '<opt>',
choices = contexts['os'] + contexts['arch'],
default = ['i386','linux'],
action = 'append',
help = 'The os/architecture the shellcode will run in (default: linux/i386), choose from: %s' % \
', '.join(contexts['os'] + contexts['arch'])
)
args = parser.parse_args()
tty = args.output.isatty()
for arch in args.context[::-1]:
if arch in contexts['arch']: break
for os in args.context[::-1]:
if os in contexts['os']: break
data = '\n'.join(args.lines) or sys.stdin.read()
output = asm(data.replace(';', '\n'), arch = arch, os = os)
fmt = args.format or ('hex' if tty else 'raw')
formatters = {'r':str, 'h':enhex, 's':repr}
args.output.write(formatters[fmt[0]](output))
if tty and fmt is not 'raw':
args.output.write('\n')
-136
View File
@@ -1,136 +0,0 @@
#!/usr/bin/env python2
import argparse, sys, os, types, re
from pwnlib import asm, util, constants
from pwnlib.util import safeeval
from pwnlib.context import __possible__ as contexts
p = argparse.ArgumentParser(
description = "Looking up constants from header files.\n\nExample: constgrep -c freebsd -m ^PROT_ '3 + 4'",
formatter_class = argparse.RawDescriptionHelpFormatter,
)
group = p.add_mutually_exclusive_group()
group.add_argument(
'-e', '--exact',
metavar = '<constant name>',
# nargs = 1,
default = None,
help = 'Do an exact match for a constant instead of searching for a regex',
)
group.add_argument(
'regex',
nargs = '?',
default = '',
help = 'The regex matching constant you want to find',
)
p.add_argument(
'constant',
nargs = '?',
default = None,
help = 'The constant to find',
)
p.add_argument(
'-i', '--case-insensitive',
action = 'store_true',
help = 'Search case insensitive',
)
p.add_argument(
'-m', '--mask-mode',
action = 'store_true',
help = 'Instead of searching for a specific constant value, search for values not containing strictly less bits that the given value.',
)
p.add_argument(
'-c', '--context',
metavar = '<opt>',
choices = contexts['os'] + contexts['arch'],
default = ['i386','linux'],
action = 'append',
help = 'The os/architecture to find constants for (default: linux/i386), choose from: %s' % \
', '.join(dir(constants) + dir(constants.linux))
)
args = p.parse_args()
# Find the architecture and os from the list of contexts
for arch in args.context[::-1]:
if arch in contexts['arch']: break
for os in args.context[::-1]:
if os in contexts['os']: break
if args.exact:
# This is the simple case
print asm.cpp(args.exact, os = os, arch = arch).strip()
else:
# New we search in the right module.
# But first: We find the right module
if os == 'freebsd':
mod = constants.freebsd
else:
mod = getattr(getattr(constants, os), arch)
# Compile the given regex, for optimized lookup
if args.case_insensitive:
matcher = re.compile(args.regex, re.IGNORECASE)
else:
matcher = re.compile(args.regex)
# Evaluate the given constant
if args.constant:
constant = safeeval.expr_eval(args.constant)
else:
constant = None
# The found matching constants and the length of the longest string
out = []
maxlen = 0
for k in dir(mod):
# No python stuff
if k.endswith('__') and k.startswith('__'):
continue
# Run the regex
if not matcher.search(k):
continue
# Check the constant
if constant != None:
val = getattr(mod, k)
if args.mask_mode:
if constant & val != val:
continue
else:
if constant != val:
continue
# Append it
out.append((getattr(mod, k), k))
maxlen = max(len(k), maxlen)
# Output all matching constants
for _, k in sorted(out):
print '#define %s %s' % (k.ljust(maxlen), asm.cpp(k, os = os, arch = arch).strip())
# If we are in match_mode, then try to find a combination of
# constants that yield the exact given value
# We do not want to find combinations using the value 0.
if not (constant == None or constant == 0) and args.mask_mode:
mask = constant
good = []
out = [(v, k) for v, k in out if v != 0]
while mask and out:
cur = out.pop()
mask &= ~cur[0]
good.append(cur)
out = [(v, k) for v, k in out if mask & v == v]
if reduce(lambda x, cur: x | cur[0], good, 0) == constant:
print
print '(%s) == %s' % (' | '.join(k for v, k in good), args.constant)
-69
View File
@@ -1,69 +0,0 @@
#!/usr/bin/env python2
import argparse, string
from pwnlib.util import cyclic, packing
from pwnlib import log
parser = argparse.ArgumentParser(
description = "Cyclic pattern creator/finder"
)
parser.add_argument(
'-a', '--alphabet',
metavar = 'alphabet',
default = string.ascii_lowercase,
help = 'The alphabet to use in the cyclic pattern (defaults to all lower case letters)',
)
parser.add_argument(
'-n', '--length',
metavar = 'length',
default = 4,
type = int,
help = 'Size of the unique subsequences (defaults to 4).'
)
group = parser.add_mutually_exclusive_group(required = True)
group.add_argument(
'-l', '-o', '--offset', '--lookup',
metavar = '<lookup value>',
help = 'Do a lookup instead printing the alphabet',
)
group.add_argument(
'count',
type = int,
nargs = '?',
help = 'Number of characters to print'
)
args = parser.parse_args()
alphabet = args.alphabet
subsize = args.length
if args.lookup:
pat = args.lookup
if pat.startswith('0x'):
pat = packing.pack(int(pat[2:], 16), subsize*8, 'little', 'unsigned')
elif pat.isdigit():
pat = packing.pack(int(pat, 10), subsize*8, 'little', 'unsigned')
if len(pat) != 4:
log.fatal('Subpattern must be 4 bytes', 1)
if not all(c in alphabet for c in pat):
log.fatal('Pattern contains characters not present in the alphabet', 1)
offset = cyclic.cyclic_find(pat, alphabet, subsize)
if offset == -1:
log.fatal('Given pattern does not exist in cyclic pattern', 1)
else:
print offset
else:
want = args.count
result = cyclic.cyclic(want, alphabet, subsize)
got = len(result)
if got < want:
log.failure("Alphabet too small (max length = %i)" % got)
print result
-38
View File
@@ -1,38 +0,0 @@
#!/usr/bin/env python2
import argparse, sys
from pwnlib import asm, context
from string import whitespace, hexdigits
parser = argparse.ArgumentParser(
description = 'Disassemble bytes into text format'
)
parser.add_argument(
'hex',
metavar = 'hex',
nargs = '*',
help = 'Hex-string to disasemble. If none are supplied, then it uses stdin in non-hex mode.'
)
parser.add_argument(
'-c', '--context',
metavar = '<opt>',
choices = context.__possible__['arch'],
default = 'i386',
help = 'The architecture of the shellcode (default: i386), choose from:\n%s' % ', '.join(context.__possible__['arch'])
)
args = parser.parse_args()
if len(args.hex) > 0:
dat = ''.join(args.hex)
dat = dat.translate(None, whitespace)
if not set(hexdigits) >= set(dat):
print "This is not a hex string"
exit(-1)
dat = dat.decode('hex')
else:
dat = sys.stdin.read()
print asm.disasm(dat, arch = args.context)
-7
View File
@@ -1,7 +0,0 @@
#!/usr/bin/env python2
import sys
if len(sys.argv) == 1:
print sys.stdin.read().encode('hex')
else:
print ' '.join(sys.argv[1:]).encode('hex')
-173
View File
@@ -1,173 +0,0 @@
#!/usr/bin/env python2
import argparse, sys, os, types
import pwnlib
from pwnlib import asm, log, util
from pwnlib.context import __possible__ as contexts
import pwnlib.term.text as text
r = text.red
g = text.green
b = text.blue
banner = '\n'.join([' ' + r('____') + ' ' + g('_') + ' ' + r('_') + ' ' + g('_') + ' ' + b('__') + ' ' + r('_'),
' ' + r('/ ___|') + g('| |__') + ' ' + b('___') + r('| |') + ' ' + g('|') + ' ' + b('___') + ' ' + r('_ __') + ' ' + g('__ _') + ' ' + b('/ _|') + ' ' + r('|_'),
' ' + r('\___ \\') + g('| \'_ \\') + ' ' + b('/ _ \\') + ' ' + r('|') + ' ' + g('|') + b('/ __|') + ' ' + r('\'__/') + ' ' + g('_` |') + ' ' + b('|_') + r('| __|'),
' ' + r('___) |') + ' ' + g('| | |') + ' ' + b('__/') + ' ' + r('|') + ' ' + g('|') + ' ' + b('(__') + r('| |') + ' ' + g('| (_| |') + ' ' + b('_|') + ' ' + r('|_'),
' ' + r('|____/') + g('|_| |_|') + b('\\___|') + r('_|') + g('_|') + b('\\___|') + r('_|') + ' ' + g('\\__,_|') + b('_|') + ' ' + r('\\__|'),
''
])
# ____ _ _ _ __ _
# / ___|| |__ ___| | | ___ _ __ __ _ / _| |_
# \___ \| '_ \ / _ \ | |/ __| '__/ _` | |_| __|
# ___) | | | | __/ | | (__| | | (_| | _| |_
# |____/|_| |_|\___|_|_|\___|_| \__,_|_| \__|
def _string(s):
out = []
for c in s:
co = ord(c)
if co >= 0x20 and co <= 0x7e and c not in '/$\'"`':
out.append(c)
else:
out.append('\\x%02x' % co)
return '"' + ''.join(out) + '"\n'
def _carray(s):
out = []
for c in s:
out.append('0x' + util.fiddling.enhex(c))
return '{' + ', '.join(out) + '};\n'
def _hex(s):
return pwnlib.util.fiddling.enhex(s) + '\n'
p = argparse.ArgumentParser(
description = banner + '\nMicrowave shellcode -- Easy, fast and delicious',
formatter_class = argparse.RawDescriptionHelpFormatter,
)
p.add_argument(
'shellcode',
nargs = '?',
default = '',
metavar = '<shellcode>',
help = 'The shellcode you want',
)
p.add_argument(
'args',
nargs = '*',
metavar = '<arg>',
default = (),
help = 'Argument to the chosen shellcode',
)
p.add_argument(
'-?', '--show',
action = 'store_true',
help = 'Show shellcode documentation',
)
p.add_argument(
'-o', '--out',
metavar = '<file>',
type = argparse.FileType('w'),
default = sys.stdout,
help = 'Output file (default: stdout)',
)
p.add_argument(
'-f', '--format',
metavar = '<format>',
choices = ['r', 'raw',
's', 'str', 'string',
'c',
'h', 'hex',
'a', 'asm', 'assembly',
'p',
'i', 'hexii'],
default = 'hex',
help = 'Output format (default: hex), choose from {r}aw, {s}tring, {c}-style array, {h}ex string, hex{i}i, {a}ssembly code, {p}reprocssed code',
)
args = p.parse_args()
def get_tree(path, val, result):
if path:
path += '.'
if path.startswith('common.'):
return
mods = []
for k in sorted(dir(val)):
if k and k[0] != '_':
cur = getattr(val, k)
if isinstance(cur, types.ModuleType):
mods.append((path + k, cur))
else:
result.append((path + k, cur))
for path, val in mods:
get_tree(path, val, result)
return result
vals = get_tree('', pwnlib.shellcraft, [])
if args.shellcode:
vals = [(k, val) for k, val in vals if k.startswith(args.shellcode + '.') or k == args.shellcode]
if len(vals) == 0:
log.fatal("Cannot find subtree by the name of %r" % args.shellcode)
elif len(vals) > 1:
for k, _ in vals:
print k
exit()
else:
func = vals[0][1]
if args.show:
print func.__doc__
exit()
defargs = len(func.func_defaults or ())
reqargs = func.func_code.co_argcount - defargs
if len(args.args) < reqargs:
if defargs > 0:
log.fatal('%s takes at least %d arguments' % (args.shellcode, reqargs))
else:
log.fatal('%s takes exactly %d arguments' % (args.shellcode, reqargs))
# Captain uglyness saves the day!
for i in range(len(args.args)):
if args.args[i] in ['False', 'false']:
args.args[i] = False
# And he strikes again!
os = arch = None
for k in args.shellcode.split('.')[:-1]:
if k in contexts['arch']:
arch = k
elif k in contexts['os']:
os = k
code = func(*args.args)
if args.format in ['a', 'asm', 'assembly']:
print code
exit()
if args.format == 'p':
print pwnlib.asm.cpp(code, arch = arch, os = os)
exit()
code = pwnlib.asm.asm(code, arch = arch, os = os)
if args.format in ['s', 'str', 'string']:
code = _string(code)
elif args.format == 'c':
code = _carray(code)
elif args.format in ['h', 'hex']:
code = _hex(code)
elif args.format in ['i', 'hexii']:
code = pwnlib.util.fiddling.hexii(code) + '\n'
sys.stdout.write(code)
-11
View File
@@ -1,11 +0,0 @@
#!/usr/bin/env python2
import sys
from string import whitespace
try:
if len(sys.argv) == 1:
s = sys.stdin.read().translate(None, whitespace)
sys.stdout.write(s.decode('hex'))
else:
sys.stdout.write(''.join(sys.argv[1:]).decode('hex'))
except TypeError, e:
sys.stderr.write(str(e) + '\n')
+1
View File
@@ -1 +1,2 @@
build
robots.txt
Regular → Executable
+14 -1
View File
@@ -6,6 +6,8 @@ SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = build
DASHBUILD = ./dashbuild.py
TAR = tar
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
@@ -14,7 +16,8 @@ ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) sou
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext dash
help:
@echo "Please use \`make <target>' where <target> is one of"
@@ -34,12 +37,17 @@ help:
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " dash to make a Dash docset"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
-rm -rf $(BUILDDIR)/*
-rm -rf /tmp/user/pwn*
-rm -rf $(HOME)/.pwntools-cache
-rm -rf /tmp/pwn* 2>/dev/null || true
-rm -rf build
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@@ -136,6 +144,11 @@ gettext:
@echo
@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
@echo "Build finished. The Dash docset is in $(BUILDDIR)/dash."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
+99
View File
@@ -0,0 +1,99 @@
#!/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,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())
+16
View File
@@ -0,0 +1,16 @@
sphinxcontrib-napoleon
sphinxcontrib-autoprogram==0.1.2
isort
paramiko>=1.15.2
mako>=1.0.0
pyelftools>=0.2.3
capstone
ropgadget>=5.3
pyserial>=2.7
requests>=2.5.1
pip>=6.0.8
tox>=1.8.1
pygments>=2.0
sphinx_rtd_theme
doc2dash
coveralls
+56
View File
@@ -0,0 +1,56 @@
About pwntools
========================
Whether you're using it to write exploits, or as part
of another software project will dictate how you use it.
Historically pwntools was used as a sort of exploit-writing DSL. Simply doing
``from pwn import *`` in a previous version of pwntools would bring all sorts of
nice side-effects.
When redesigning pwntools for 2.0, we noticed two contrary goals:
* We would like to have a "normal" python module structure, to allow other
people to familiarize themselves with pwntools quickly.
* We would like to have even more side-effects, especially by putting the
terminal in raw-mode.
To make this possible, we decided to have two different modules. :mod:`pwnlib`
would be our nice, clean Python module, while :mod:`pwn` would be used during
CTFs.
:mod:`pwn` --- Toolbox optimized for CTFs
-----------------------------------------
.. module:: pwn
As stated, we would also like to have the ability to get a lot of these
side-effects by default. That is the purpose of this module. It does
the following:
* Imports everything from the toplevel :mod:`pwnlib` along with
functions from a lot of submodules. This means that if you do
``import pwn`` or ``from pwn import *``, you will have access to
everything you need to write an exploit.
* Calls :func:`pwnlib.term.init` to put your terminal in raw mode
and implements functionality to make it appear like it isn't.
* Setting the :data:`pwnlib.context.log_level` to `"info"`.
* Tries to parse some of the values in :data:`sys.argv` and every
value it succeeds in parsing it removes.
:mod:`pwnlib` --- Normal python library
---------------------------------------
.. module:: pwnlib
This module is our "clean" python-code. As a rule, we do not think that
importing :mod:`pwnlib` or any of the submodules should have any significant
side-effects (besides e.g. caching).
For the most part, you will also only get the bits you import. You for instance
not get access to :mod:`pwnlib.util.packing` simply by doing ``import
pwnlib.util``.
Though there are a few exceptions (such as :mod:`pwnlib.shellcraft`), that does
not quite fit the goals of being simple and clean, but they can still be
imported without implicit side-effects.
+13
View File
@@ -0,0 +1,13 @@
.. testsetup:: *
from pwn import *
adb = pwnlib.adb
:mod:`pwnlib.adb` --- Android Debug Bridge
=====================================================
.. automodule:: pwnlib.adb.adb
:members:
.. automodule:: pwnlib.adb.protocol
:members:
+9
View File
@@ -0,0 +1,9 @@
.. testsetup:: *
from pwn import *
:mod:`pwnlib.args` --- Magic Command-Line Arguments
=====================================================
.. automodule:: pwnlib.args
:members:
+6
View File
@@ -1,6 +1,12 @@
.. testsetup:: *
import tempfile
import subprocess
from pwnlib.context import context
from pwnlib.asm import *
from pwnlib import shellcraft
from pwnlib.tubes.process import process
:mod:`pwnlib.asm` --- Assembler functions
=========================================
+5
View File
@@ -0,0 +1,5 @@
:mod:`pwnlib.atexception` --- Callbacks on unhandled exception
==============================================================
.. automodule:: pwnlib.atexception
:members:
+5
View File
@@ -0,0 +1,5 @@
:mod:`pwnlib.atexit` --- Replacement for atexit
===============================================
.. automodule:: pwnlib.atexit
:members:
+18
View File
@@ -0,0 +1,18 @@
.. testsetup:: *
from pwn import *
old = context.defaults.copy()
.. testcleanup:: *
context.defaults.copy = old
Command Line Tools
========================
pwntools comes with a handful of useful command-line utilities which serve as wrappers for some of the internal functionality.
.. toctree::
.. autoprogram:: pwnlib.commandline.main:parser
:prog: pwn
Regular → Executable
+69 -30
View File
@@ -11,13 +11,19 @@
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys, os
import os
import subprocess
import sys
build_dash = tags.has('dash')
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
sys.path.insert(0, os.path.abspath('../..'))
import pwnlib
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
@@ -31,22 +37,37 @@ extensions = [
'sphinx.ext.doctest',
'sphinx.ext.linkcode',
'sphinx.ext.autosummary',
'sphinx.ext.coverage',
'sphinx.ext.todo',
'sphinx.ext.intersphinx',
'sphinxcontrib.autoprogram',
'sphinxcontrib.napoleon'
]
try:
import sphinxcontrib.napoleon
extensions.append('sphinxcontrib.napoleon')
except ImportError:
pass
doctest_global_setup = '''
import sys, os
os.environ['PWNLIB_NOTERM'] = '1'
os.environ['PWNLIB_RANDOMIZE'] = '0'
import pwnlib
pwnlib.context.reset_local()
pwnlib.context.context.reset_local()
pwnlib.context.ContextType.defaults['log_level'] = 'ERROR'
pwnlib.context.ContextType.defaults['randomize'] = False
pwnlib.term.text.when = 'never'
pwnlib.log.install_default_handler()
pwnlib.log.rootlogger.setLevel(1)
# Sphinx modifies sys.stdout, and context.log_terminal has
# a reference to the original instance. We need to update
# it for logging to be captured.
class stdout(object):
def __getattr__(self, name):
return getattr(sys.stdout, name)
def __setattr__(self, name, value):
return setattr(sys.stdout, name, value)
pwnlib.context.ContextType.defaults['log_console'] = stdout()
'''
autodoc_member_order = 'bysource'
autodoc_member_order = 'alphabetical'
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@@ -57,21 +78,20 @@ doctest_test_doctest_blocks = True
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'pwntools'
copyright = u'2014, Gallopsled et al'
copyright = u'2016, Gallopsled et al.'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
import pwnlib
release = pwnlib.__version__
version = release.rsplit('.', 1)[0]
@@ -161,10 +181,10 @@ html_static_path = []
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
html_domain_indices = not build_dash
# If false, no index is generated.
#html_use_index = True
html_use_index = not build_dash
# If true, the index is split into individual pages for each letter.
#html_split_index = False
@@ -207,10 +227,11 @@ latex_elements = {
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'pwntools.tex', u'pwntools Documentation',
u'Gallopsled et al', 'manual'),
u'2016, Gallopsled et al.', 'manual'),
]
intersphinx_mapping = {'python': ('http://docs.python.org/2.7', None)}
intersphinx_mapping = {'python': ('https://docs.python.org/2.7', None),
'paramiko': ('https://paramiko-docs.readthedocs.org/en/1.15/', None)}
# The name of an image file (relative to this directory) to place at the top of
# the title page.
@@ -239,7 +260,7 @@ intersphinx_mapping = {'python': ('http://docs.python.org/2.7', None)}
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'pwntools', u'pwntools Documentation',
[u'Gallopsled et al'], 1)
[u'2016, Gallopsled et al.'], 1)
]
# If true, show URL addresses after external links.
@@ -253,7 +274,7 @@ man_pages = [
# dir menu entry, description, category)
texinfo_documents = [
('index', 'pwntools', u'pwntools Documentation',
u'Gallopsled et al', 'pwntools', 'One line description of project.',
u'', 'pwntools', 'CTF exploit writing toolkit.',
'Miscellaneous'),
]
@@ -266,6 +287,19 @@ texinfo_documents = [
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'
branch = release
try:
git_branch = subprocess.check_output('git describe --tags', shell = True)
except subprocess.CalledProcessError:
git_branch = '-'
try:
if '-' in git_branch:
branch = subprocess.check_output('git rev-parse HEAD', shell = True).strip()[:10]
except subprocess.CalledProcessError:
pass
def linkcode_resolve(domain, info):
if domain != 'py':
return None
@@ -290,21 +324,26 @@ def linkcode_resolve(domain, info):
else:
filename = info['module'].replace('.', '/') + '.py'
# Fixup for context properties
if info['module'].startswith('pwnlib.context'):
filename = 'pwnlib/context.py'
if not isinstance(val, (types.FunctionType, types.MethodType)):
import pwnlib.context.defaults
val = getattr(pwnlib.context.defaults.__class__, info['fullname'], None)
if isinstance(val, property):
val = val.fget
val = getattr(val, '_inner', val)
if isinstance(val, (types.ModuleType, types.ClassType, types.MethodType, types.FunctionType, types.TracebackType, types.FrameType, types.CodeType)):
try:
lines, first = inspect.getsourcelines(val)
filename += '#L%d-%d' % (first, first + len(lines) - 1)
except IOError:
pass
return "https://github.com/Gallopsled/pwntools/blob/%s/%s" % (release, filename)
return "https://github.com/Gallopsled/pwntools/blob/%s/%s" % (branch, filename)
# The readthedocs theme is used by the Dash generator. (Can be used for HTML too.)
if build_dash:
# on_rtd is whether we are on readthedocs.org
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
+2 -1
View File
@@ -1,6 +1,7 @@
.. testsetup:: *
from pwnlib import context, constants
from pwnlib import constants
from pwnlib.context import context
:mod:`pwnlib.constants` --- Easy access to header file constants
================================================================
+7 -41
View File
@@ -1,49 +1,15 @@
.. testsetup:: *
from pwnlib import context
from pwn import *
import logging
log = pwnlib.log.getLogger('pwnlib.context')
:mod:`pwnlib.context` --- Setting runtime variables
=====================================================
.. autodata:: pwnlib.context.context
:mod:`pwnlib.context`
---------------------
.. autoclass:: pwnlib.context.ContextType
:members:
.. automodule:: pwnlib.context
.. exec::
import pwnlib
from inspect import cleandoc
mod = pwnlib.context.defaults.__class__
for key in sorted(dir(mod)):
val = getattr(mod, key)
if isinstance(val, property):
print ".. data:: " + key
print ""
print cleandoc(val.__doc__)
print ""
.. autofunction:: pwnlib.context.__call__(**kwargs)
.. autofunction:: pwnlib.context.local(**kwargs)
.. autofunction:: pwnlib.context.reset_local()
:mod:`pwnlib.context.defaults`
------------------------------
.. automodule:: pwnlib.context.defaults
.. exec::
import pwnlib
mod = pwnlib.context.defaults.__class__
for key in sorted(dir(mod)):
val = getattr(mod, key)
if isinstance(val, property):
print ".. data:: " + key
print ""
print "This is the global version of :data:`pwnlib.context.%s`." % key
print
.. autofunction:: pwnlib.context.defaults.__call__(**kwargs)
.. autoclass:: pwnlib.context.Thread
+1
View File
@@ -1,6 +1,7 @@
.. testsetup:: *
from pwnlib.elf import *
from pwnlib.util.misc import which
:mod:`pwnlib.elf` --- Working with ELF binaries
===============================================
+25
View File
@@ -0,0 +1,25 @@
.. testsetup:: *
from pwn import *
:mod:`pwnlib.encoders` --- Encoding Shellcode
===============================================
.. automodule:: pwnlib.encoders
:members:
.. automodule:: pwnlib.encoders.encoder
:members:
.. automodule:: pwnlib.encoders.amd64
:members:
.. automodule:: pwnlib.encoders.arm
:members:
.. automodule:: pwnlib.encoders.i386
:members:
.. automodule:: pwnlib.encoders.i386.xor
:members:
+10
View File
@@ -0,0 +1,10 @@
.. testsetup:: *
from pwn import *
:mod:`pwnlib.flag` --- CTF Flag Management
==========================================
.. automodule:: pwnlib.flag
:members:
+10
View File
@@ -0,0 +1,10 @@
.. testsetup:: *
from pwn import *
import tempfile
:mod:`pwnlib.fmtstr` --- Format string bug exploitation tools
=============================================================
.. automodule:: pwnlib.fmtstr
:members:
+102
View File
@@ -0,0 +1,102 @@
.. testsetup:: *
from pwn import *
``from pwn import *``
========================
The most common way that you'll see pwntools used is
>>> from pwn import *
Which imports a bazillion things into the global namespace to make your life easier.
This is a quick list of most of the objects and routines imported, in rough order of importance and frequency of use.
- ``context``
- :data:`pwnlib.context.context`
- Responsible for most of the pwntools convenience settings
- Set `context.log_level = 'debug'` when troubleshooting your exploit
- Scope-aware, so you can disable logging for a subsection of code via ``pwnlib.context.ContextType.local``
- ``remote``, ``listen``, ``ssh``, ``process``
- :mod:`pwnlib.tubes`
- Super convenient wrappers around all of the common functionality for CTF challenges
- Connect to anything, anywhere, and it works the way you want it to
- Helpers for common tasks like ``recvline``, ``recvuntil``, ``clean``, etc.
- Interact directly with the application via ``.interactive()``
- ``p32`` and ``u32``
- :mod:`pwnlib.util.packing`
- Useful functions to make sure you never have to remember if ``'>'`` means signed or unsigned for ``struct.pack``, and no more ugly ``[0]`` index at the end.
- Set ``signed`` and ``endian`` in sane manners (also these can be set once on ``context`` and not bothered with again)
- Most common sizes are pre-defined (``u8``, ``u64``, etc), and :func:`pwnlib.util.packing.pack` lets you define your own.
- ``log``
- :mod:`pwnlib.log`
- Make your output pretty!
- ``cyclic`` and ``cyclic_func``
- :mod:`pwnlib.util.cyclic`
- Utilities for generating strings such that you can find the offset of any given substring given only N (usually 4) bytes. This is super useful for straight buffer overflows. Instead of looking at 0x41414141, you could know that 0x61616171 means you control EIP at offset 64 in your buffer.
- ``asm`` and ``disasm``
- :mod:`pwnlib.asm`
- Quickly turn assembly into some bytes, or vice-versa, without mucking about
- Supports any architecture for which you have a binutils installed
- Over 20 different architectures have pre-built binaries at `ppa:pwntools/binutils <https://launchpad.net/~pwntools/+archive/ubuntu/binutils>`_.
- ``shellcraft``
- :mod:`pwnlib.shellcraft`
- Library of shellcode ready to go
- ``asm(shellcraft.sh())`` gives you a shell
- Templating library for reusability of shellcode fragments
- ``ELF``
- :mod:`pwnlib.elf`
- ELF binary manipulation tools, including symbol lookup, virtual memory to file offset helpers, and the ability to modify and save binaries back to disk
- ``DynELF``
- :mod:`pwnlib.dynelf`
- Dynamically resolve functions given only a pointer to any loaded module, and a function which can leak data at any address
- ``ROP``
- :mod:`pwnlib.rop`
- Automatically generate ROP chains using a DSL to describe what you want to do, rather than raw addresses
- ``gdb.debug`` and ``gdb.attach``
- :mod:`pwnlib.gdb`
- Launch a binary under GDB and pop up a new terminal to interact with it. Automates setting breakpoints and makes iteration on exploits MUCH faster.
- Alternately, attach to a running process given a PID, ``pwnlib.tubes`` object, or even just a socket that's connected to it
- ``args``
- Dictionary contining all-caps command-line arguments for quick access
- Run via ``python foo.py REMOTE=1`` and ``args['REMOTE'] == '1'``.
- Can also control logging verbosity and terminal fancyness
- `NOTERM`
- `SILENT`
- `DEBUG`
- ``randoms``, ``rol``, ``ror``, ``xor``, ``bits``
- :mod:`pwnlib.util.fiddling`
- Useful utilities for generating random data from a given alphabet, or simplifying math operations that usually require masking off with `0xffffffff` or calling `ord` and `chr` an ugly number of times
- ``net``
- :mod:`pwnlib.util.net`
- Routines for querying about network interfaces
- ``proc``
- :mod:`pwnlib.util.proc`
- Routines for querying about processes
- ``pause``
- It's the new ``getch``
- ``safeeval``
- :mod:`pwnlib.util.safeeval`
- Functions for safely evalutaing python code without nasty side-effects.
These are all pretty self explanatory, but are useful to have in the global namespace.
- ``hexdump``
- ``read`` and ``write``
- ``enhex`` and ``unhex``
- ``more``
- ``group``
- ``align`` and ``align_down``
- ``urlencode`` and ``urldecode``
- ``which``
- ``wget``
Additionally, all of the following modules are auto-imported for you. You were going to do it anyway.
- ``os``
- ``sys``
- ``time``
- ``requests``
- ``re``
- ``random``
Regular → Executable
+65 -8
View File
@@ -1,31 +1,88 @@
Welcome to pwntools's documentation!
pwntools
====================================
Contents:
``pwntools`` is a CTF framework and exploit development library.
Written in Python, it is designed for rapid prototyping and development,
and intended to make exploit writing as simple as possible.
The primary location for this documentation is at docs.pwntools.com_, which uses
readthedocs_. It comes in three primary flavors:
- Stable_
- Beta_
- Dev_
.. _readthedocs: https://readthedocs.org
.. _docs.pwntools.com: https://docs.pwntools.com
.. _Stable: https://docs.pwntools.com/en/stable
.. _Beta: https://docs.pwntools.com/en/beta
.. _Dev: https://docs.pwntools.com/en/dev
Getting Started
---------------
.. toctree::
:maxdepth: 3
:glob:
about
install
intro
globals
commandline
Module Index
------------
Each of the ``pwntools`` modules is documented here.
.. toctree::
:maxdepth: 1
:glob:
adb
args
asm
atexception
atexit
constants
context
dynelf
encoders
elf
exception
flag
fmtstr
gdb
log
memleak
tubes
replacements
rop
rop/*
runner
shellcraft
shellcraft/*
term
timeout
tubes
tubes/*
ui
update
useragents
util/*
Indices and tables
==================
.. toctree::
:hidden:
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
testexample
.. only:: not dash
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
+41
View File
@@ -0,0 +1,41 @@
Installation
============
pwntools is best supported on Ubuntu 12.04 and 14.04, but most
functionality should work on any Posix-like distribution (Debian, Arch,
FreeBSD, OSX, etc.).
Prerequisites
-------------
In order to get the most out of ``pwntools``, you should have the
following system libraries installed.
.. toctree::
:maxdepth: 3
:glob:
install/*
Released Version
-----------------
pwntools is available as a ``pip`` package.
.. code-block:: bash
$ apt-get update
$ apt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev
$ pip install --upgrade pwntools
Development
--------------
If you are hacking on Pwntools locally, you'll want to do something like this:
.. code-block:: bash
$ git clone https://github.com/Gallopsled/pwntools
$ pip install --upgrade --editable ./pwntools
.. _Ubuntu: https://launchpad.net/~pwntools/+archive/ubuntu/binutils
+85
View File
@@ -0,0 +1,85 @@
Binutils
-------------
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.).
Building `binutils` from source takes about 60 seconds on a modern 8-core machine.
Ubuntu
^^^^^^^^^^^^^^^^
For Ubuntu 12.04 through 15.10, you must first add the pwntools `Personal Package Archive repository <http://binutils.pwntools.com>`__.
Ubuntu Xenial (16.04) has official packages for most architectures, and does not require this step.
.. code-block:: bash
$ apt-get install software-properties-common
$ apt-add-repository ppa:pwntools/binutils
$ apt-get update
Then, install the binutils for your architecture.
.. code-block:: bash
$ 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
recipe from our `binutils
repo <https://github.com/Gallopsled/pwntools-binutils/>`__.
.. code-block:: bash
$ brew install https://raw.githubusercontent.com/Gallopsled/pwntools-binutils/master/osx/binutils-$ARCH.rb
Alternate OSes
^^^^^^^^^^^^^^^^
If you want to build everything by hand, or don't use any of the above
OSes, ``binutils`` is simple to build by hand.
.. code-block:: bash
#!/usr/bin/env bash
V=2.25 # Binutils Version
ARCH=arm # Target architecture
cd /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
gpg --keyserver keys.gnupg.net --recv-keys 4AE55E93
gpg --verify binutils-$V.tar.gz.sig
tar xf binutils-$V.tar.gz
mkdir binutils-build
cd binutils-build
export AR=ar
export AS=as
../binutils-$V/configure \
--prefix=/usr/local \
--target=$ARCH-unknown-linux-gnu \
--disable-static \
--disable-multilib \
--disable-werror \
--disable-nls
MAKE=gmake
hash gmake || MAKE=make
$MAKE -j clean all
sudo $MAKE install
+18
View File
@@ -0,0 +1,18 @@
Python Development Headers
-----------------------------
Some of pwntools' Python dependencies require native extensions (for example, Paramiko requires PyCrypto).
In order to build these native extensions, the development headers for Python must be installed.
Ubuntu
^^^^^^^^^^^^^^^^
.. code-block:: bash
$ apt-get install python-dev
Mac OS X
^^^^^^^^^^^^^^^^
No action needed.
+207 -39
View File
@@ -1,53 +1,221 @@
Introduction to pwntools
.. testsetup:: *
from pwn import *
Getting Started
========================
Historically pwntools was used as a sort of exploit-writing DSL. Simply doing
``from pwn import *`` in a previous version of pwntools would bring all sorts of
nice side-effects.
To get your feet wet with pwntools, let's first go through a few examples.
When redesigning pwntools for 2.0, we noticed two contrary goals:
When writing exploits, pwntools generally follows the "kitchen sink" approach.
* We would like to have a "normal" python module structure, to allow other
people to faster get familiar with how pwntools works.
* We would like to have even more side-effects, especially by putting the
terminal in raw-mode.
>>> from pwn import *
To make this possible, we decided to have two different modules. :mod:`pwnlib`
would be our nice, clean python module, while :mod:`pwn` would be used during
CTFs.
This imports a lot of functionality into the global namespace. You can now
assemble, disassemble, pack, unpack, and many other things with a single function.
:mod:`pwnlib` --- Normal python library
---------------------------------------
A full list of everything that is imported is available on :doc:`globals`.
.. module:: pwnlib
This module is our "clean" python-code. As a rule, we do not think that
importing :mod:`pwnlib` or any of the submodules should have any significant
side-effects (besides e.g. caching).
Making Connections
------------------
For the most part, you will also only get the bits you import. You for instance
not get access to :mod:`pwnlib.util.packing` simply by doing ``import
pwnlib.util``.
You need to talk to the challenge binary in order to pwn it, right?
pwntools makes this stupid simple with its :mod:`pwnlib.tubes` module.
Though there are a few exceptions (such as :mod:`pwnlib.shellcraft`), that does
not quite fit the goals of being simple and clean, but they can still be
imported without implicit side-effects.
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`.
:mod:`pwn` --- Toolbox optimized for CTFs
-----------------------------------------
>>> conn = remote('ftp.debian.org',21)
>>> conn.recvline() # doctest: +ELLIPSIS
'220 ...'
>>> conn.send('USER anonymous\r\n')
>>> conn.recvuntil(' ', drop=True)
'331'
>>> conn.recvline()
'Please specify the password.\r\n'
>>> conn.close()
.. module:: pwn
It's also easy to spin up a listener
As stated, we would also like to have the ability to get a lot of these
side-effects by default. That is the purpose of this module. It does
the following:
>>> l = listen()
>>> r = remote('localhost', l.lport)
>>> c = l.wait_for_connection()
>>> r.send('hello')
>>> c.recv()
'hello'
Interacting with processes is easy thanks to :mod:`pwnlib.tubes.process`.
::
>>> sh = process('/bin/sh')
>>> sh.sendline('sleep 3; echo hello world;')
>>> sh.recvline(timeout=1)
''
>>> sh.recvline(timeout=5)
'hello world\n'
>>> sh.close()
Not only can you interact with processes programmatically, but you can
actually **interact** with processes.
>>> sh.interactive() # doctest: +SKIP
$ whoami
user
There's even an SSH module for when you've got to SSH into a box to perform
a local/setuid exploit with :mod:`pwnlib.tubes.ssh`. You can quickly spawn
processes and grab the output, or spawn a process and interact with it like
a ``process`` tube.
::
>>> shell = ssh('bandit0', 'bandit.labs.overthewire.org', password='bandit0')
>>> shell['whoami']
'bandit0'
>>> shell.download_file('/etc/motd')
>>> sh = shell.run('sh')
>>> sh.sendline('sleep 3; echo hello world;') # doctest: +SKIP
>>> sh.recvline(timeout=1)
''
>>> sh.recvline(timeout=5)
'hello world\n'
>>> shell.close()
Packing Integers
------------------
A common task for exploit-writing is converting between integers as Python
sees them, and their representation as a sequence of bytes.
Usually folks resort to the built-in ``struct`` module.
pwntools makes this easier with :mod:`pwnlib.util.packing`. No more remembering
unpacking codes, and littering your code with helper routines.
>>> import struct
>>> p32(0xdeadbeef) == struct.pack('I', 0xdeadbeef)
True
>>> leet = '37130000'.decode('hex')
>>> u32('abcd') == struct.unpack('I', 'abcd')[0]
True
The packing/unpacking operations are defined for many common bit-widths.
>>> u8('A') == 0x41
True
Setting the Target Architecture and OS
--------------------------------------
The target architecture can generally be specified as an argument to the routine that requires it.
>>> asm('nop')
'\x90'
>>> asm('nop', arch='arm')
'\x00\xf0 \xe3'
However, it can also be set once in the global ``context``. The operating system, word size, and endianness can also be set here.
>>> context.arch = 'i386'
>>> context.os = 'linux'
>>> context.endian = 'little'
>>> context.word_size = 32
Additionally, you can use a shorthand to set all of the values at once.
>>> asm('nop')
'\x90'
>>> context(arch='arm', os='linux', endian='big', word_size=32)
>>> asm('nop')
'\xe3 \xf0\x00'
.. doctest::
:hide:
>>> context.clear()
Setting Logging Verbosity
-------------------------
You can control the verbosity of the standard pwntools logging via ``context``.
For example, setting
>>> context.log_level = 'debug'
Will cause all of the data sent and received by a ``tube`` to be printed to the screen.
.. doctest::
:hide:
>>> context.clear()
Assembly and Disassembly
------------------------
Never again will you need to run some already-assembled pile of shellcode
from the internet! The :mod:`pwnlib.asm` module is full of awesome.
>>> asm('mov eax, 0').encode('hex')
'b800000000'
But if you do, it's easy to suss out!
>>> print disasm('6a0258cd80ebf9'.decode('hex'))
0: 6a 02 push 0x2
2: 58 pop eax
3: cd 80 int 0x80
5: eb f9 jmp 0x0
However, you shouldn't even need to write your own shellcode most of the
time! pwntools comes with the :mod:`pwnlib.shellcraft` module, which is
loaded with useful time-saving shellcodes.
Let's say that we want to `setreuid(getuid(), getuid())` followed by `dup`ing
file descriptor 4 to `stdin`, `stdout`, and `stderr`, and then pop a shell!
>>> asm(shellcraft.setreuid() + shellcraft.dupsh(4)).encode('hex') # doctest: +ELLIPSIS
'6a3158cd80...'
Misc Tools
----------------------
Never write another hexdump, thanks to :mod:`pwnlib.util.fiddling`.
Find offsets in your buffer that cause a crash, thanks to :mod:`pwnlib.cyclic`.
>>> print cyclic(20)
aaaabaaacaaadaaaeaaa
>>> # Assume EIP = 0x62616166 ('faab' which is pack(0x62616166)) at crash time
>>> print cyclic_find('faab')
120
ELF Manipulation
----------------
Stop hard-coding things! Look them up at runtime with :mod:`pwnlib.elf`.
>>> e = ELF('/bin/cat')
>>> print hex(e.address) #doctest: +SKIP
0x400000
>>> print hex(e.symbols['write']) #doctest: +SKIP
0x401680
>>> print hex(e.got['write']) #doctest: +SKIP
0x60b070
>>> print hex(e.plt['write']) #doctest: +SKIP
0x401680
You can even patch and save the files.
>>> e = ELF('/bin/cat')
>>> e.read(e.address+1, 3)
'ELF'
>>> e.asm(e.address, 'ret')
>>> e.save('/tmp/quiet-cat')
>>> disasm(file('/tmp/quiet-cat','rb').read(1))
' 0: c3 ret'
* Imports everything from the toplevel :mod:`pwnlib` along with
functions from a lot of submodules. This means that if you do
``import pwn`` or ``from pwn import *``, you will access to
everything you need to write an exploit.
* Calls :func:`pwnlib.term.init` to put your terminal in raw mode
and implementing functionality to make it look like it is not.
* Setting the :data:`pwnlib.context.log_level` to `"info"`.
* Tries to parse some of the values in :data:`sys.argv` and every
value it succeeds in parsing it removes.
+17 -7
View File
@@ -1,11 +1,21 @@
:mod:`pwnlib.log` and --- Logging stuff
=================================================================
:mod:`pwnlib.log` --- Logging stuff
===================================
.. automodule:: pwnlib.log
:members:
:members: getLogger, install_default_handler, rootlogger
:mod:`pwnlib.log_levels` --- Possible log levels
------------------------------------------------
.. automodule:: pwnlib.log_levels
.. autoclass:: pwnlib.log.Progress
:members:
:member-order: bysource
.. autoclass:: pwnlib.log.Logger
:members:
:member-order: bysource
.. autoclass:: pwnlib.log.Handler
:members:
:member-order: bysource
.. autoclass:: pwnlib.log.Formatter
:members:
:member-order: bysource
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

+4
View File
@@ -1,3 +1,7 @@
.. testsetup:: *
from pwnlib.memleak import *
:mod:`pwnlib.memleak` --- Helper class for leaking memory
=========================================================
+5
View File
@@ -0,0 +1,5 @@
:mod:`pwnlib.replacements` --- Replacements for various functions
=================================================================
.. automodule:: pwnlib.replacements
:members:
+14
View File
@@ -0,0 +1,14 @@
.. testsetup:: *
from pwn import *
:mod:`pwnlib.rop` --- Return Oriented Programming
=================================================
Submodules
----------
.. toctree::
:glob:
rop/*
+9
View File
@@ -0,0 +1,9 @@
.. testsetup:: *
from pwn import *
:mod:`pwnlib.rop.rop` --- Return Oriented Programming
==========================================================
.. automodule:: pwnlib.rop.rop
:members:
+9
View File
@@ -0,0 +1,9 @@
.. testsetup:: *
from pwn import *
:mod:`pwnlib.rop.srop` --- Sigreturn Oriented Programming
==========================================================
.. automodule:: pwnlib.rop.srop
:members:
+9
View File
@@ -0,0 +1,9 @@
.. testsetup:: *
from pwn import *
:mod:`pwnlib.runner` --- Running Shellcode
===========================================
.. automodule:: pwnlib.runner
:members:
+19
View File
@@ -0,0 +1,19 @@
.. testsetup:: *
from pwn import *
context.clear(arch='amd64')
:mod:`pwnlib.shellcraft.amd64` --- Shellcode for AMD64
===========================================================
:mod:`pwnlib.shellcraft.amd64`
---------------------------------------
.. automodule:: pwnlib.shellcraft.amd64
:members:
:mod:`pwnlib.shellcraft.amd64.linux`
---------------------------------------
.. automodule:: pwnlib.shellcraft.amd64.linux
:members:
+19
View File
@@ -0,0 +1,19 @@
.. testsetup:: *
from pwn import *
context.clear(arch='arm')
:mod:`pwnlib.shellcraft.arm` --- Shellcode for ARM
===========================================================
:mod:`pwnlib.shellcraft.arm`
-----------------------------
.. automodule:: pwnlib.shellcraft.arm
:members:
:mod:`pwnlib.shellcraft.arm.linux`
-----------------------------------
.. automodule:: pwnlib.shellcraft.arm.linux
:members:
+5
View File
@@ -1,3 +1,8 @@
.. testsetup:: *
from pwn import *
context.clear(arch='i386')
:mod:`pwnlib.shellcraft.i386` --- Shellcode for Intel 80386
===========================================================
+19
View File
@@ -0,0 +1,19 @@
.. testsetup:: *
from pwn import *
context.clear(arch='mips')
:mod:`pwnlib.shellcraft.mips` --- Shellcode for MIPS
===========================================================
:mod:`pwnlib.shellcraft.mips`
-----------------------------
.. automodule:: pwnlib.shellcraft.mips
:members:
:mod:`pwnlib.shellcraft.mips.linux`
-----------------------------------
.. automodule:: pwnlib.shellcraft.mips.linux
:members:
+9
View File
@@ -0,0 +1,9 @@
.. testsetup:: *
from pwnlib.regsort import *
:mod:`pwnlib.regsort` --- Register sorting
===========================================================
.. automodule:: pwnlib.regsort
:members:
+19
View File
@@ -0,0 +1,19 @@
.. testsetup:: *
from pwn import *
context.clear(arch='thumb')
:mod:`pwnlib.shellcraft.thumb` --- Shellcode for Thumb Mode
===========================================================
:mod:`pwnlib.shellcraft.thumb`
-------------------------------
.. automodule:: pwnlib.shellcraft.thumb
:members:
:mod:`pwnlib.shellcraft.thumb.linux`
---------------------------------------
.. automodule:: pwnlib.shellcraft.thumb.linux
:members:
+10
View File
@@ -0,0 +1,10 @@
.. testsetup:: *
import os
from pwnlib.testexample import add
:mod:`pwnlib.testexample` --- Example Test Module
==================================================
.. automodule:: pwnlib.testexample
:members:
+11
View File
@@ -0,0 +1,11 @@
.. testsetup:: *
from pwnlib.context import context
from pwnlib.timeout import Timeout
import time
:mod:`pwnlib.timeout` --- Timeout handling
============================================
.. automodule:: pwnlib.timeout
:members:
+18 -44
View File
@@ -1,56 +1,30 @@
.. testsetup:: *
from pwn import *
:mod:`pwnlib.tubes` --- Talking to the World!
=============================================
.. automodule:: pwnlib.tubes
Sockets
-------
.. automodule:: pwnlib.tubes.remote
Types of Tubes
-------------------
.. autoclass:: pwnlib.tubes.remote.remote(host, port, fam = None, typ = None, proto = 0, timeout = 'default', log_level = INFO)
:members:
:show-inheritance:
.. toctree::
:maxdepth: 3
:glob:
.. automodule:: pwnlib.tubes.listen
.. autoclass:: pwnlib.tubes.listen.listen(port, bindaddr = "0.0.0.0", fam = "any", typ = "tcp", timeout = 'default', log_level = INFO)
:members:
:show-inheritance:
.. automodule:: pwnlib.tubes.sock
.. autoclass:: pwnlib.tubes.sock.sock()
:show-inheritance:
Processes
---------
.. automodule:: pwnlib.tubes.process
.. autoclass:: pwnlib.tubes.process.process(args, shell = False, executable = None, env = None, timeout = 'default', log_level = INFO)
:members: kill, poll, communicate
:show-inheritance:
SSH
---
.. automodule:: pwnlib.tubes.ssh
.. autoclass:: pwnlib.tubes.ssh.ssh(user, host, port = 22, password = None, key = None, keyfile = None, proxy_command = None, proxy_sock = None, timeout = 'default', log_level = INFO)
:members:
.. autoclass:: pwnlib.tubes.ssh.ssh_channel()
:members: kill, poll, interactive
:show-inheritance:
tubes/*
Common functionality
--------------------
:mod:`pwnlib.tubes.tube` --- Common Functionality
-------------------------------------------------
.. automodule:: pwnlib.tubes.tube
.. autoclass:: pwnlib.tubes.tube.tube()
:members:
:exclude-members: recv_raw, send_raw, settimeout_raw,
can_recv_raw
.. automodule:: pwnlib.tubes.tube
.. autoclass:: pwnlib.tubes.tube.tube()
:members:
:exclude-members: recv_raw, send_raw, settimeout_raw,
can_recv_raw
+12
View File
@@ -0,0 +1,12 @@
.. testsetup:: *
from pwn import *
:mod:`pwnlib.tubes.process` --- Processes
===========================================================
.. automodule:: pwnlib.tubes.process
.. autoclass:: pwnlib.tubes.process.process
:members:
:show-inheritance:
+11
View File
@@ -0,0 +1,11 @@
.. testsetup:: *
from pwn import *
:mod:`pwnlib.tubes.serialtube` --- Serial Ports
===========================================================
.. automodule:: pwnlib.tubes.serialtube
.. autoclass:: pwnlib.tubes.serialtube.serialtube
:members:
+25
View File
@@ -0,0 +1,25 @@
.. testsetup:: *
from pwn import *
:mod:`pwnlib.tubes.sock` --- Sockets
===========================================================
.. automodule:: pwnlib.tubes.sock
.. autoclass:: pwnlib.tubes.sock.sock()
:show-inheritance:
.. automodule:: pwnlib.tubes.remote
.. autoclass:: pwnlib.tubes.remote.remote
:members:
:show-inheritance:
.. automodule:: pwnlib.tubes.listen
.. autoclass:: pwnlib.tubes.listen.listen
:members:
:show-inheritance:
+21
View File
@@ -0,0 +1,21 @@
.. testsetup:: *
from pwn import *
:mod:`pwnlib.tubes.ssh` --- SSH
===========================================================
.. automodule:: pwnlib.tubes.ssh
.. autoclass:: pwnlib.tubes.ssh.ssh
:members:
.. autoclass:: pwnlib.tubes.ssh.ssh_channel()
:members: kill, poll, interactive
:show-inheritance:
.. autoclass:: pwnlib.tubes.ssh.ssh_connecter()
:show-inheritance:
.. autoclass:: pwnlib.tubes.ssh.ssh_listener()
:show-inheritance:
+10
View File
@@ -0,0 +1,10 @@
.. testsetup:: *
from pwn import *
from pwnlib.update import *
:mod:`pwnlib.update` --- Updating Pwntools
===================================================
.. automodule:: pwnlib.update
:members:
+9
View File
@@ -0,0 +1,9 @@
.. testsetup:: *
from pwnlib.useragents import *
:mod:`pwnlib.useragents` --- A database of useragent strings
============================================================
.. automodule:: pwnlib.useragents
:members:
+5
View File
@@ -0,0 +1,5 @@
:mod:`pwnlib.util.hashes` --- Hashing functions
===============================================
.. automodule:: pwnlib.util.hashes
:members:
+113
View File
@@ -0,0 +1,113 @@
.. testsetup:: *
import string, operator
from pwnlib.util.iters import *
:mod:`pwnlib.util.iters` --- Extension of standard module :mod:`itertools`
==========================================================================
.. automodule:: pwnlib.util.iters
:members:
:exclude-members:
chain ,
combinations ,
combinations_with_replacement ,
compress ,
count ,
cycle ,
dropwhile ,
groupby ,
ifilter ,
ifilterfalse ,
imap ,
islice ,
izip ,
izip_longest ,
permutations ,
product ,
repeat ,
starmap ,
takewhile ,
tee
.. function:: chain
Alias for :func:`itertools.chain`.
.. function:: combinations
Alias for :func:`itertools.combinations`
.. function:: combinations_with_replacement
Alias for :func:`itertools.combinations_with_replacement`
.. function:: compress
Alias for :func:`itertools.compress`
.. function:: count
Alias for :func:`itertools.count`
.. function:: cycle
Alias for :func:`itertools.cycle`
.. function:: dropwhile
Alias for :func:`itertools.dropwhile`
.. function:: groupby
Alias for :func:`itertools.groupby`
.. function:: ifilter
Alias for :func:`itertools.ifilter`
.. function:: ifilterfalse
Alias for :func:`itertools.ifilterfalse`
.. function:: imap
Alias for :func:`itertools.imap`
.. function:: islice
Alias for :func:`itertools.islice`
.. function:: izip
Alias for :func:`itertools.izip`
.. function:: izip_longest
Alias for :func:`itertools.izip_longest`
.. function:: permutations
Alias for :func:`itertools.permutations`
.. function:: product
Alias for :func:`itertools.product`
.. function:: repeat
Alias for :func:`itertools.repeat`
.. function:: starmap
Alias for :func:`itertools.starmap`
.. function:: takewhile
Alias for :func:`itertools.takewhile`
.. function:: tee
Alias for :func:`itertools.tee`
+1 -1
View File
@@ -1,7 +1,7 @@
.. testsetup:: *
from pwnlib.util.misc import *
import os
import os, subprocess
os.chdir("..")
:mod:`pwnlib.util.misc` --- We could not fit it any other place
+1
View File
@@ -1,6 +1,7 @@
.. testsetup:: *
from pwnlib.util.proc import *
import os, sys
:mod:`pwnlib.util.proc` --- Working with ``/proc/``
+10
View File
@@ -0,0 +1,10 @@
.. testsetup:: *
from pwn import *
test = pwnlib.util.sh_string.test
:mod:`pwnlib.util.sh_string` --- Shell Expansion is Hard
===============================================================
.. automodule:: pwnlib.util.sh_string
:members:
+10
View File
@@ -0,0 +1,10 @@
.. testsetup:: *
from pwnlib.context import context
from pwnlib.util.web import *
:mod:`pwnlib.util.web` --- Utilities for working with the WWW
=============================================================
.. automodule:: pwnlib.util.web
:members:
-6
View File
@@ -1,6 +0,0 @@
While these examples should all work, they are not very representative of
the pwntools project.
We have a plan to create a separate repository with examples, primarily
exploits. Until we do so, we recommend new users to look at
http://pwntools.readthedocs.org, as this is a better overview of our features.
+109
View File
@@ -0,0 +1,109 @@
# Examples
While these examples should all work, they are not very representative of
the pwntools project.
We have a plan to create a separate repository with examples, primarily
exploits. Until we do so, we recommend new users to look at
https://docs.pwntools.com, as this is a better overview of our features.
In no particular order the docstrings for each example:
* `args.py`
```
When not in lib-mode (import `pwn` rather than `pwnlib`) we parse the
commandline for variables definitions. A variable definition has the form::
<var>=<val>
where ``<var>`` contains only uppercase letters, digits and underscores and
doesn't start with a digit.
Try running this example with::
$ python args.py RHOST=localhost RPORT=1337
```
* `asm.py`
```
Example showing the interface to `pwnlib.asm.asm` and `pwnlib.shellcraft`.
```
* `clean_and_log.py`
```
Use case for `pwnlib.tubes.tube.clean_and_log`.
Sometimes you will have a solution to a challenge but you don't know what it
will look like when you get the flag. Sometimes that will leave you with a
top-level exception, no flag, and angry team members.
Solution:
1. Always run wireshark or tcpdump. Always.
2. Register <your socket>.clean or <your socket>.clean_and_log to run at exit.
```
* `indented.py`
```
When running in term-mode (import `pwn` rather than `pwnlib`, stdout is a TTY
and not running in a REPL), we can do proper indentation where lines too long to
fit on a screen are split into multiple individually indented lines.
Too see the difference try running with::
$ python indented.py
and
$ python -i indented.py
Also notice that `pause()` can react on any key when in `term_mode`.
```
* `listen_uroboros.py`
```
An example showing interconnection of sockets. This script will wait for three
connections on port 1337, then connect them like a three-way Uroboros.
```
* `options.py`
```
Example showing `pwnlib.ui.options()`
```
* `port_forward.py`
```
A very simple port forwarder using `pwnlib.tubes.tube.connect_both()`. Notice
that `<>` is just a shorthand.
```
* `readline_completers.py`
```
Example showing pwnlib's readline implementation and a few completers. This
part of pwnlib will probably see some major changes soon, but we wanted to show
off some proof-of-concepts.
```
* `remote_gdb_debugging.py`
```
Simple example showing how to use the remote
gdb debugging features available in pwntools.
```
* `spinners.py`
```
Just a lot of spinners!
```
* `splash.py`
```
"Easteregg"
```
* `ssh.py`
```
Example showing how to use the ssh class.
```
* `text.py`
```
Example showing how to use `pwnlib.term.text`.
Try running with::
$ TERM=xterm python text.py
and::
$ TERM=xterm-256color python text.py
```
* `remote.py`
```
Example showing how to use the remote class.
```
+22
View File
@@ -0,0 +1,22 @@
from pwn import *
# Tell pwntools that the target is an Android device
context.os='android'
context.arch='aarch64' # or 'arm'
# Optionally, set the remote ADB server address
context.adb_host='172.16.110.1'
# Wait for a device to become available
print adb.wait_for_device()
# Who am I?
print adb.process('id').recvall().strip()
# Interactive sessions!
io = adb.shell()
io.sendline('echo Hello, world; exit')
print io.recvall().replace('\r\n', '\n').strip()
# Debugging!
gdb.debug('sh').interactive()
+18
View File
@@ -0,0 +1,18 @@
"""
When not in lib-mode (import `pwn` rather than `pwnlib`) we parse the
commandline for variables definitions. A variable definition has the form::
<var>=<val>
where ``<var>`` contains only uppercase letters, digits and underscores and
doesn't start with a digit.
Try running this example with::
$ python args.py RHOST=localhost RPORT=1337
"""
from pwn import *
print args['RHOST'] or 'RHOST is not set'
print args['RPORT'] or 'RPORT is not set'
-4
View File
@@ -1,4 +0,0 @@
import pwn
print pwn.args['RHOST'],
print pwn.args['RPORT']
+6 -1
View File
@@ -1,5 +1,10 @@
"""
Example showing the interface to `pwnlib.asm.asm` and `pwnlib.shellcraft`.
"""
from pwn import *
context(arch='i386', os='linux', net='tcp4')
context(arch='i386', os='linux')
shellcode = shellcraft.i386_to_amd64()
shellcode_asm = asm(shellcode)
+12
View File
@@ -0,0 +1,12 @@
"""
Example showing `pwnlib.gdb.attach()`
"""
from pwn import *
bash = process('/bin/bash')
gdb.attach(bash, execute = '''
p "hello from pwnlib"
c
''')
bash.interactive()
+28
View File
@@ -0,0 +1,28 @@
"""
Use case for `pwnlib.tubes.tube.clean_and_log`.
Sometimes you will have a solution to a challenge but you don't know what it
will look like when you get the flag. Sometimes that will leave you with a
top-level exception, no flag, and angry team members.
Solution:
1. Always run wireshark or tcpdump. Always.
2. Register <your socket>.clean or <your socket>.clean_and_log to run at exit.
"""
from pwn import *
os.system('''((
echo prefix sometext ;
echo prefix someothertext ;
echo here comes the flag ;
echo LostInTheInterTubes
) | nc -l 1337) &
''')
r = remote('localhost', 1337)
atexit.register(r.clean_and_log)
while True:
line = r.recvline()
print re.findall('^prefix (\S+)$', line)[0]
-15
View File
@@ -1,15 +0,0 @@
import pwn
import pwnlib.term.completer
c1 = pwn.term.completer.LongestPrefixCompleter([
'foobar',
'foobaz',
'fooquux',
])
c2 = pwn.term.completer.PathCompleter(mask = '*.py')
with c1:
while True:
s = pwn.term.readline.readline(prompt = '> ')
print 'You wrote', s
-6
View File
@@ -1,6 +0,0 @@
import pwn
print pwn.context
pwn.context.arch = 'i386'
pwn.context.arch = 'yolo'
+42
View File
@@ -0,0 +1,42 @@
"""
Script to generate README.md
"""
from pwn import *
out = '''# Examples
While these examples should all work, they are not very representative of
the pwntools project.
We have a plan to create a separate repository with examples, primarily
exploits. Until we do so, we recommend new users to look at
https://docs.pwntools.com, as this is a better overview of our features.
In no particular order the docstrings for each example:
'''
def append_example(_arg, top, names):
global out
for name in names:
if not (name.endswith('.py') and name != __file__):
continue
path = os.path.join(top, name)[2:] # strip './'
log.info('-> %s' % path)
data = read(path).strip()
if data[0:3] not in ('"""', "'''"):
log.warning(' Has no docstring!')
continue
try:
i = data.index(data[0:3], 3)
except ValueError:
log.warning(' Docstring is weird')
continue
doc = util.safeeval.const(data[0:i + 3])
out += '* `%s`\n' % path
out += '```%s```\n' % doc
os.path.walk('.', append_example, None)
write('README.md', out)
+25
View File
@@ -0,0 +1,25 @@
"""
When running in term-mode (import `pwn` rather than `pwnlib`, stdout is a TTY
and not running in a REPL), we can do proper indentation where lines too long to
fit on a screen are split into multiple individually indented lines.
Too see the difference try running with::
$ python indented.py
and
$ python -i indented.py
Also notice that `pause()` can react on any key when in `term_mode`.
"""
from pwn import *
context.log_level = 'info'
log.indented('A' * 100)
log.indented('B' * 100)
log.indented('C' * 100)
pause()
-8
View File
@@ -1,8 +0,0 @@
import pwn
pwn.context.log_level = 'info'
# print pwn2.lib
pwn.log.info(('A' * 100 + '\n') * 4)
raw_input('>')
-48
View File
@@ -1,48 +0,0 @@
# raise Exception('1234')
# import sys
# _write = sys.stdout.write
# class Proxy:
# def __init__(self, fd):
# self._fd = fd
# def readline(self):
# _write('Input plox: ')
# return self._fd.readline()
# def read(self, n):
# _write('xxx')
# return self._fd.read(n)
# def __getattr__(self, k):
# # _write('[%s]\n' % k)
# return self._fd.__getattribute__(k)
# # sys.stdout = Proxy(sys.stdout)
# sys.stdin = Proxy(sys.stdin)
# print raw_input()
import pwn
import pwnlib.term.readline
h = pwn.term.output('yolo\n')
i = 0
def foo(_):
global i
i += 1
pwn.term.output('foooooo%d\n' % i, frozen = True, before = h)
def bar():
print
def baz(_):
import sys
sys.exit()
pwnlib.term.readline.startup_hook = bar
pwnlib.term.readline.keymap.register({
'C-x C-a': foo,
'C-x C-s': baz,
})
while True:
print raw_input('> ')
-70
View File
@@ -1,70 +0,0 @@
import termios, tty, sys, string, time
def get_term_size():
fd = os.open(os.ctermid(), os.O_RDONLY)
height, width = struct.unpack('hh', fcntl.ioctl(fd, termios.TIOCGWINSZ, '1234'))
os.close(fd)
return width, height
def get_cursor_pos():
sys.stdout.write("\033[6n")
s = ''
while True:
c = sys.stdin.read(1)
if c == 'R':
break
s += c
col, row = map(int, s[2:].split(';'))
return col, row
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
tty.setraw(sys.stdin.fileno())
while True:
# print 'At (%d, %d)' % get_cursor_pos()
c = sys.stdin.read(1)
if c == 'q':
break
if c == '\r':
print
if c == 'w':
s = '\x01\x1b[s\x1b[50Ayolo\x1b[u\x02'
sys.stdout.write(s)
if c == 'e':
sys.stdout.write('\x1b[s')
for i in range(100):
sys.stdout.write('\x1b[0;15f%s' % '/-\\|'[i % 4])
sys.stdout.flush()
time.sleep(0.1)
sys.stdout.write('\x1b[u')
if c == 'E':
sys.stdout.write('\x1b[s')
for i in range(100):
sys.stdout.write('\x1b[0;15H%s' % '.oO*'[i % 4])
sys.stdout.flush()
time.sleep(0.1)
sys.stdout.write('\x1b[u')
if c == 'r':
sys.stdout.write('\x1b[S')
if c == 't':
sys.stdout.write('\x1b[T')
if c == 'y':
sys.stdout.write('\x1b[syolo\r\n\x1b[ufoo')
if c == 'u':
x = ord('a')
for i in range(10):
sys.stdout.write('\x1b[A' + chr(x))
sys.stdout.flush()
time.sleep(0.3)
x += 1
sys.stdout.write('\x1b[B' + chr(x))
sys.stdout.flush()
time.sleep(0.3)
x += 1
if c in string.printable:
sys.stdout.write(c)
else:
sys.stdout.write('\\x%02x' % ord(c))
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
-27
View File
@@ -1,27 +0,0 @@
import pwn
def match(t):
print 'match', t
def nomatch(t):
print 'nomatch', t
def key(t):
print 'key', t
def tab(t):
print 'tab', t
def tabtab(t):
print 'tabtab', t
import pwnlib.term.keymap
km = pwnlib.term.keymap.Keymap({
'<match>' : match,
'<nomatch>' : nomatch,
'<any>' : key,
'<tab>' : tab,
'<tab> <tab>' : tabtab,
})
km.handle_input()
+14
View File
@@ -0,0 +1,14 @@
"""
An example showing interconnection of sockets. This script will wait for three
connections on port 1337, then connect them like a three-way Uroboros.
"""
from pwn import *
cs = [listen(1337).wait_for_connection() for _ in range(3)]
cs[0] << cs[1] << cs[2] << cs[0]
cs[0].wait_for_close()
cs[1].wait_for_close()
cs[2].wait_for_close()
-55
View File
@@ -1,55 +0,0 @@
# import pwn2.lib as lib
import pwn
import time
pwn.context.log_level = 0
n = 0
h = pwn.log.waitfor('spinners running', status = '0')
hs = []
while True:
s = raw_input('> ')
if s == 'q':
break
hs.append(pwn.log.waitfor(s, status = 'running'))
n += 1
h.status(str(n))
h.success()
for h in hs:
h.failure()
# pwn.log.waitfor('waiting for stuff')
# time.sleep(0.5)
# pwn.log.info('something happened')
# time.sleep(0.5)
# pwn.log.success('something went well')
# time.sleep(0.5)
# pwn.log.waitfor('waiting for some minor stuff')
# time.sleep(0.5)
# pwn.log.failure('went wrong')
# raw_input('please hit <enter> ')
# time.sleep(0.5)
# pwn.log.done_failure()
# time.sleep(0.5)
# pwn.log.info('all in all it went ok')
# time.sleep(0.5)
# pwn.log.done_success()
# def foo():
# plib.log.stub()
# foo()
# try:
# try:
# raise KeyError
# except:
# plib.log.die('no reason')
# except Exception as e:
# print `e`
# # raise
-12
View File
@@ -1,12 +0,0 @@
from pwn import *
context(endianness='little', sign='unsigned')
def legit_leak(addr):
return p32(addr)
mem = MemLeak(legit_leak)
print mem.b(0x08040001) # prints 1
mem.setd(0x08040000, 0xaabbccdd)
print hex(mem.b(0x08040001)) # prints 0xcc
print mem.raw(0x08040000, 20) # prints stuff
+8
View File
@@ -0,0 +1,8 @@
"""
Example showing `pwnlib.ui.options()`
"""
from pwn import *
opts = [string.letters[x] for x in range(10)]
print 'You choose "%s"' % opts[options('Pick one:', opts)]
+11
View File
@@ -0,0 +1,11 @@
"""
A very simple port forwarder using `pwnlib.tubes.tube.connect_both()`. Notice
that `<>` is just a shorthand.
"""
from pwn import *
while True:
listen(1337).wait_for_connection() <> remote('google.com', 80)
# now point your browser (or curl(1)) to http://localhost:1337
-37
View File
@@ -1,37 +0,0 @@
import pty, os, select, sys, time, pwn
pid, fd = pty.fork()
if pid == 0:
argv = ('/usr/bin/vim',)
argv = ('/bin/bash',)
os.execlp(argv[0], *argv)
else:
# time.sleep(1)
# sys.stdout.write(os.read(fd, 4096))
while True:
rfds, wfds, xfds = select.select([fd, 0], [], [])
if fd in rfds:
s = os.read(fd, 4096)
if not s:
raise EOFError
sys.stdout.write(s)
sys.stdout.flush()
if 0 in rfds:
s = os.read(0, 4096)
if not s:
raise EOFError
os.write(fd, s)
# def master_read(fd):
# import os
# s = os.read(fd, 4096)
# return s
# def stdin_read(fd):
# import os
# s = os.read(fd, 4096)
# return s
# pty.spawn('/bin/sh', master_read = master_read, stdin_read = stdin_read)
+31
View File
@@ -0,0 +1,31 @@
"""
Example showing pwnlib's readline implementation and a few completers. This
part of pwnlib will probably see some major changes soon, but we wanted to show
off some proof-of-concepts.
"""
from pwn import *
from pwnlib.term.completer import LongestPrefixCompleter
from pwnlib.term.completer import PathCompleter
c1 = LongestPrefixCompleter([
'foobar',
'foobaz',
'fooqux',
'exit',
'enough!',
])
c2 = PathCompleter(mask = '*.py')
with c1:
print 'type "exit" to exit'
while True:
s = term.readline.readline(prompt = '> ').strip()
if s in ('exit', 'enough!'):
break
print 'You wrote', s
with c2:
print 'choose a file'
s = term.readline.readline(prompt = text.bold_green('$ ')).strip()
print 'You picked', s
-15
View File
@@ -1,15 +0,0 @@
# import sys
# class Wrapper:
# def __init__(self, fd):
# self._fd = fd
# def readline(self, size = None):
# return ''
# def __getattr__(self, k):
# return self._fd.__getattribute__(k)
# sys.stdin = Wrapper(sys.stdin)
# print `raw_input()`
import readline
import pwn
raw_input('> ')
+11
View File
@@ -0,0 +1,11 @@
"""
Example showing how to use the remote class.
"""
from pwn import *
sock = remote('127.0.0.1', 9001)
print sock.recvline()
sock.send('foo')
sock.interactive()
+17
View File
@@ -0,0 +1,17 @@
"""
Simple example showing how to use the remote
gdb debugging features available in pwntools.
"""
import getpass
from pwn import *
s = ssh(getpass.getuser(), '127.0.0.1', port = 22, keyfile = "~/.ssh/id_rsa")
c = gdb.ssh_gdb(s, '/bin/sh', execute = '''
p/x $pc
c''')
c.sendline('ls -la')
c.sendline('exit')
print c.recvall()
Loaded 100 of 3555 files, more files were not shown because too many files have changed in this diff. Show more