mirror of
https://github.com/Karmaz95/Snake_Apple.git
synced 2026-03-30 14:00:16 +02:00
Uploading get_uuid.py tool
This commit is contained in:
66
IX. TCC/python/get_uuid.py
Normal file
66
IX. TCC/python/get_uuid.py
Normal file
@@ -0,0 +1,66 @@
|
||||
import os
|
||||
import subprocess
|
||||
import argparse
|
||||
|
||||
def extract_uuids(path):
|
||||
"""Extract UUIDs from a Mach-O file using dwarfdump."""
|
||||
uuids = []
|
||||
try:
|
||||
# Run dwarfdump command to get UUIDs
|
||||
result = subprocess.run(['dwarfdump', '--uuid', path], capture_output=True, text=True)
|
||||
if result.returncode == 0:
|
||||
for line in result.stdout.splitlines():
|
||||
if 'UUID:' in line:
|
||||
uuid = line.split(':')[1].strip().split()[0] # Extract UUID part only
|
||||
uuids.append(uuid)
|
||||
else:
|
||||
print(f"Error running dwarfdump: {result.stderr.strip()}")
|
||||
except Exception as e:
|
||||
print(f"Error extracting UUIDs from {path}: {e}")
|
||||
return uuids
|
||||
|
||||
def process_path(path, add_record=False):
|
||||
"""Process a single path to extract UUIDs and optionally add them to the database."""
|
||||
absolute_path = os.path.abspath(path)
|
||||
if not os.path.isfile(absolute_path) or not os.access(absolute_path, os.X_OK):
|
||||
print(f"Invalid path or not an executable: {absolute_path}")
|
||||
return
|
||||
|
||||
# Extract UUIDs from the Mach-O file
|
||||
uuids = extract_uuids(absolute_path)
|
||||
|
||||
# Output or add UUIDs to the database
|
||||
if uuids:
|
||||
uuid_string = ','.join(uuids) # Combine UUIDs into a single comma-separated string
|
||||
if add_record:
|
||||
# Call uuid_manager.py with the combined UUID string
|
||||
subprocess.run(['python3', 'uuid_manager.py', '-p', absolute_path, '-u', uuid_string])
|
||||
else:
|
||||
print(f"{absolute_path}: {uuid_string}")
|
||||
else:
|
||||
print(f"No UUIDs found in {absolute_path}")
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Extract UUIDs from specified Mach-O binaries using dwarfdump.')
|
||||
group = parser.add_mutually_exclusive_group(required=True)
|
||||
group.add_argument('--path', '-p', type=str, help='Path to the Mach-O binary')
|
||||
group.add_argument('--list', '-l', type=str, help='Path to a file containing a list of binaries')
|
||||
parser.add_argument('--add_record', action='store_true', help='Add extracted UUIDs to the database')
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.path:
|
||||
# Process a single path
|
||||
process_path(args.path, add_record=args.add_record)
|
||||
elif args.list:
|
||||
# Process a list of paths
|
||||
if os.path.isfile(args.list):
|
||||
with open(args.list, 'r') as file:
|
||||
for line in file:
|
||||
line = line.strip()
|
||||
if line:
|
||||
process_path(line, add_record=args.add_record)
|
||||
else:
|
||||
print(f"Invalid list file: {args.list}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user