• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Gallopsled / pwntools / 1

22 Mar 2023 11:26AM UTC coverage: 1.304% (-70.2%) from 71.53%
1

push

github

web-flow
Add search for libc binary by leaked function addresses (#2103)

* libcdb: Add option to search by function offsets

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

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

Fixes #1867

* libcdb: Handle multiple results when looking up by hash

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

* Update CHANGELOG

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

* Do .json() only once

---------

Co-authored-by: Arusekk <arek_koz@o2.pl>

2 of 5910 branches covered (0.03%)

0 of 52 new or added lines in 1 file covered. (0.0%)

11873 existing lines in 140 files now uncovered.

221 of 16952 relevant lines covered (1.3%)

0.01 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/pwnlib/commandline/unhex.py
1
#!/usr/bin/env python2
UNCOV
2
from __future__ import absolute_import
×
UNCOV
3
from __future__ import division
×
4

UNCOV
5
import argparse
×
UNCOV
6
import sys
×
UNCOV
7
from string import whitespace
×
8

UNCOV
9
from pwnlib.commandline import common
×
UNCOV
10
from pwnlib.util.fiddling import unhex
×
11

UNCOV
12
parser = common.parser_commands.add_parser(
×
13
    'unhex',
14
    help = 'Decodes hex-encoded data provided on the command line or via stdin.',
15
    description = 'Decodes hex-encoded data provided on the command line or via stdin.'
16
)
17

UNCOV
18
parser.add_argument('hex', nargs='*',
×
19
    help='Hex bytes to decode')
20

UNCOV
21
def main(args):
×
UNCOV
22
    try:
×
UNCOV
23
        o = getattr(sys.stdout, 'buffer', sys.stdout)
×
UNCOV
24
        if not args.hex:
×
25
            s = getattr(sys.stdin, 'buffer', sys.stdin).read().translate(None, whitespace.encode('ascii'))
×
26
            o.write(unhex(s))
×
27
        else:
UNCOV
28
            o.write(unhex(''.join(args.hex)))
×
29
    except TypeError as e:
×
30
        sys.stderr.write(str(e) + '\n')
×
31
        raise
×
32

UNCOV
33
if __name__ == '__main__':
×
UNCOV
34
    common.main(__file__)
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc