MCPcopy
hub / github.com/Gallopsled/pwntools / dpkg_search_for_binutils

Function dpkg_search_for_binutils

pwnlib/asm.py:73–104  ·  view source on GitHub ↗

Use dpkg to search for any available assemblers which will work. Returns: A list of candidate package names. :: >>> pwnlib.asm.dpkg_search_for_binutils('aarch64', 'as') ['binutils-aarch64-linux-gnu']

(arch, util)

Source from the content-addressed store, hash-verified

71_incdir = path.join(_basedir, 'data', 'includes')
72
73def dpkg_search_for_binutils(arch, util):
74 """Use dpkg to search for any available assemblers which will work.
75
76 Returns:
77 A list of candidate package names.
78
79 ::
80
81 >>> pwnlib.asm.dpkg_search_for_binutils('aarch64', 'as')
82 ['binutils-aarch64-linux-gnu']
83 """
84
85 # Example output:
86 # $ dpkg -S 'arm*linux*-as'
87 # binutils-arm-linux-gnu: /usr/bin/arm-linux-gnu-as
88 # binutils-arm-linux-gnueabihf: /usr/bin/arm-linux-gnueabihf-as
89 # binutils-arm-linux-gnueabihf: /usr/x86_64-linux-gnu/arm-linux-gnueabihf/include/dis-asm.h
90 # binutils-arm-linux-gnu: /usr/x86_64-linux-gnu/arm-linux-gnu/include/dis-asm.h
91 packages = []
92
93 try:
94 filename = 'bin/%s*linux*-%s' % (arch, util)
95 output = subprocess.check_output(['dpkg','-S',filename], universal_newlines = True)
96 for line in output.strip().splitlines():
97 package, path = line.split(':', 1)
98 packages.append(package)
99 except OSError:
100 pass
101 except subprocess.CalledProcessError:
102 pass
103
104 return packages
105
106def print_binutils_instructions(util, context):
107 """On failure to find a binutils utility, inform the user of a way

Callers 1

Calls 2

check_outputMethod · 0.80
appendMethod · 0.80

Tested by

no test coverage detected