Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
proc_cursor = conn.cursor()
executions = proc_cursor.execute(
'''
SELECT timestamp
FROM processes
WHERE parent ISNULL
ORDER BY id;
''')
run_timestamps = [r_timestamp for r_timestamp, in executions][1:]
proc_cursor.close()
# Adds dynamic linkers
for libdir in (Path('/lib'), Path('/lib64')):
if libdir.exists():
for linker in libdir.listdir('*ld-linux*'):
for filename in find_all_links(linker, True):
if filename not in files:
f = TracedFile(filename)
f.read(None)
files[f.path] = f
# Loops on executed files, and opened files, at the same time
cur = conn.cursor()
rows = cur.execute(
'''
SELECT 'exec' AS event_type, name, NULL AS mode, timestamp
FROM executed_files
UNION ALL
SELECT 'open' AS event_type, name, mode, timestamp
FROM opened_files
ORDER BY timestamp;
''')
''')
executed = set()
run = 0
for event_type, r_name, r_mode, r_timestamp in rows:
if event_type == 'exec':
r_mode = FILE_READ
r_name = Path(normalize_path(r_name))
# Stays on the current run
while run_timestamps and r_timestamp > run_timestamps[0]:
del run_timestamps[0]
access_files.append(set())
run += 1
# Adds symbolic links as read files
for filename in find_all_links(r_name.parent if r_mode & FILE_LINK
else r_name, False):
if filename not in files:
f = TracedFile(filename)
f.read(run)
files[f.path] = f
# Go to final target
if not r_mode & FILE_LINK:
r_name = r_name.resolve()
if event_type == 'exec':
executed.add(r_name)
if r_name not in files:
f = TracedFile(r_name)
files[f.path] = f
else:
f = files[r_name]
if r_mode & FILE_READ:
''')
executed = set()
run = 0
for event_type, r_name, r_mode, r_timestamp in rows:
if event_type == 'exec':
r_mode = FILE_READ
r_name = Path(normalize_path(r_name))
# Stays on the current run
while run_timestamps and r_timestamp > run_timestamps[0]:
del run_timestamps[0]
access_files.append(set())
run += 1
# Adds symbolic links as read files
for filename in find_all_links(r_name.parent if r_mode & FILE_LINK
else r_name, False):
if filename not in files:
f = TracedFile(filename)
f.read(run)
files[f.path] = f
# Go to final target
if not r_mode & FILE_LINK:
r_name = r_name.resolve()
if event_type == 'exec':
executed.add(r_name)
if r_name not in files:
f = TracedFile(r_name)
files[f.path] = f
else:
f = files[r_name]
if r_mode & FILE_READ:
proc_cursor = conn.cursor()
executions = proc_cursor.execute(
'''
SELECT timestamp
FROM processes
WHERE parent ISNULL
ORDER BY id;
''')
run_timestamps = [r_timestamp for r_timestamp, in executions][1:]
proc_cursor.close()
# Adds dynamic linkers
for libdir in (Path('/lib'), Path('/lib64')):
if libdir.exists():
for linker in libdir.listdir('*ld-linux*'):
for filename in find_all_links(linker, True):
if filename not in files:
f = TracedFile(filename)
f.read(None)
files[f.path] = f
# Loops on executed files, and opened files, at the same time
cur = conn.cursor()
rows = cur.execute(
'''
SELECT 'exec' AS event_type, name, NULL AS mode, timestamp
FROM executed_files
UNION ALL
SELECT 'open' AS event_type, name, mode, timestamp
FROM opened_files
ORDER BY timestamp;
''')