From bf2165fe76e98a5f10a956b4524052b8601b322f Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Thu, 17 Apr 2025 13:47:13 +0200 Subject: [PATCH] proj: Add intercept command --- .gitignore | 1 + proj/intercept/intercept | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100755 proj/intercept/intercept diff --git a/.gitignore b/.gitignore index 102b9f2..6728c13 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ bin/ *.so *.o +*.log diff --git a/proj/intercept/intercept b/proj/intercept/intercept new file mode 100755 index 0000000..4f4d6dc --- /dev/null +++ b/proj/intercept/intercept @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import argparse +import subprocess +import os +import sys + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument('-f', '--functions') + mode = parser.add_mutually_exclusive_group() + mode.add_argument('-l', '--log') + mode.add_argument('-i', '--intercept') + args, extra = parser.parse_known_args() + if len(extra) > 0 and extra[0] == '--': + extra.pop(0) + + if args.intercept: + intercept = args.intercept + elif args.log: + intercept = 'file:' + args.log + else: + intercept = 'stderr' + subprocess.run(extra, stdin=sys.stdin, env={ + 'LD_PRELOAD': os.getcwd() + '/intercept.so', + 'INTERCEPT': intercept, + 'INTERCEPT_FUNCTIONS': args.functions or '*', + }) + + +if __name__ == '__main__': + main()