Move old code to legacy folder. Git now ignores .txt files
This commit is contained in:
parent
51da6b9038
commit
fbf62f0a7c
2
.gitignore
vendored
2
.gitignore
vendored
@ -4,3 +4,5 @@
|
|||||||
/build/
|
/build/
|
||||||
*.o
|
*.o
|
||||||
*.out
|
*.out
|
||||||
|
*.txt
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,2 @@
|
|||||||
|
clean:
|
||||||
|
rm *.o *.txt *.out *.exe
|
||||||
@ -1,14 +0,0 @@
|
|||||||
#include <stdio.h> // for printf()
|
|
||||||
#include <stdlib.h> // for exit()
|
|
||||||
#include <string.h> // for strcmp()
|
|
||||||
#include <dirent.h> // for opendir(), readdir(), closedir()
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <unistd.h> // for readlink(), chdir(), getcwd()
|
|
||||||
#include <errno.h> // for errno
|
|
||||||
|
|
||||||
#include "find_logger.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Output file path
|
|
||||||
output_file="keyboard_files.txt"
|
|
||||||
|
|
||||||
# Find keyboard device files
|
|
||||||
keyboard_files=()
|
|
||||||
while IFS= read -r -d '' file; do
|
|
||||||
if [[ $file == *"kbd"* || $file == *"keyboard"* ]]; then
|
|
||||||
keyboard_files+=("$file")
|
|
||||||
fi
|
|
||||||
done < <(find /dev/input -type c -name 'event*')
|
|
||||||
|
|
||||||
# Write keyboard files to output file
|
|
||||||
echo "Keyboard Device Files" > "$output_file"
|
|
||||||
echo "======================" >> "$output_file"
|
|
||||||
|
|
||||||
if [[ ${#keyboard_files[@]} -eq 0 ]]; then
|
|
||||||
echo "No keyboard device files found." >> "$output_file"
|
|
||||||
else
|
|
||||||
for file in "${keyboard_files[@]}"; do
|
|
||||||
echo "$file" >> "$output_file"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Keyboard files written to $output_file"
|
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ done < "$pids_input_file"
|
|||||||
# sort and remove duplicates
|
# sort and remove duplicates
|
||||||
sorted_pids=$(printf '%s\n' "${pids_array[@]}" | sort -nu)
|
sorted_pids=$(printf '%s\n' "${pids_array[@]}" | sort -nu)
|
||||||
|
|
||||||
# write unique pids to file, separated by newlines
|
# write unique and sorted pids to file, separated by newlines
|
||||||
printf '%s\n' "${sorted_pids[@]}" > "$pids_output_file"
|
printf '%s\n' "${sorted_pids[@]}" > "$pids_output_file"
|
||||||
|
|
||||||
echo "Pids written to $pids_output_file"
|
echo "Pids written to $pids_output_file"
|
||||||
112
src/legacy/test.c
Normal file
112
src/legacy/test.c
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#define DEVICE_DIR "/dev/input"
|
||||||
|
#define BY_PATH_DIR "/dev/input/by-path"
|
||||||
|
#define PROC_DIR "/proc"
|
||||||
|
|
||||||
|
void get_program_name(long pid) {
|
||||||
|
char exe_file_path[256];
|
||||||
|
snprintf(exe_file_path, sizeof(exe_file_path), "/proc/%ld/exe", pid);
|
||||||
|
|
||||||
|
if (access(exe_file_path, F_OK) == 0) {
|
||||||
|
char program_path[256];
|
||||||
|
ssize_t path_len = readlink(exe_file_path, program_path, sizeof(program_path) - 1);
|
||||||
|
if (path_len != -1) {
|
||||||
|
program_path[path_len] = '\0';
|
||||||
|
printf("Corresponding program: %s\n\n", program_path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void find_keyboard_files() {
|
||||||
|
DIR *by_path_dir = opendir(BY_PATH_DIR);
|
||||||
|
if (by_path_dir == NULL) {
|
||||||
|
perror("opendir");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct dirent *entry;
|
||||||
|
while ((entry = readdir(by_path_dir)) != NULL) {
|
||||||
|
if (strstr(entry->d_name, "kbd") != NULL || strstr(entry->d_name, "keyboard") != NULL) {
|
||||||
|
char device_file_path[256];
|
||||||
|
snprintf(device_file_path, sizeof(device_file_path), "%s/%s", BY_PATH_DIR, entry->d_name);
|
||||||
|
|
||||||
|
char link_dest[256];
|
||||||
|
ssize_t link_size = readlink(device_file_path, link_dest, sizeof(link_dest) - 1);
|
||||||
|
if (link_size == -1) {
|
||||||
|
perror("readlink");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
link_dest[link_size] = '\0';
|
||||||
|
printf("Keyboard device file: %s\n", link_dest);
|
||||||
|
|
||||||
|
char event_file[256];
|
||||||
|
snprintf(event_file, sizeof(event_file), "%s/%s", DEVICE_DIR, link_dest);
|
||||||
|
|
||||||
|
DIR *proc_dir = opendir(PROC_DIR);
|
||||||
|
if (proc_dir == NULL) {
|
||||||
|
perror("opendir");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct dirent *pid_entry;
|
||||||
|
while ((pid_entry = readdir(proc_dir)) != NULL) {
|
||||||
|
if (pid_entry->d_type != DT_DIR)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Check if the entry name is a numeric value (PID)
|
||||||
|
char *endptr;
|
||||||
|
long pid = strtol(pid_entry->d_name, &endptr, 10);
|
||||||
|
if (*endptr != '\0')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
char fd_dir_path[256];
|
||||||
|
snprintf(fd_dir_path, sizeof(fd_dir_path), "%s/%s/fd", PROC_DIR, pid_entry->d_name);
|
||||||
|
|
||||||
|
DIR *fd_dir = opendir(fd_dir_path);
|
||||||
|
if (fd_dir == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
struct dirent *fd_entry;
|
||||||
|
while ((fd_entry = readdir(fd_dir)) != NULL) {
|
||||||
|
if (fd_entry->d_type != DT_LNK)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
char fd_file_path[256];
|
||||||
|
snprintf(fd_file_path, sizeof(fd_file_path), "%s/%s", fd_dir_path, fd_entry->d_name);
|
||||||
|
|
||||||
|
char link_dest[256];
|
||||||
|
ssize_t link_size = readlink(fd_file_path, link_dest, sizeof(link_dest) - 1);
|
||||||
|
if (link_size == -1)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
link_dest[link_size] = '\0';
|
||||||
|
|
||||||
|
if (strcmp(link_dest, event_file) == 0) {
|
||||||
|
printf("Process with PID %ld is using this file.\n", pid);
|
||||||
|
get_program_name(pid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
closedir(fd_dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
closedir(proc_dir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
closedir(by_path_dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
printf("Finding keyboard files...\n\n");
|
||||||
|
find_keyboard_files();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
67
src/user-space-detector.sh
Executable file
67
src/user-space-detector.sh
Executable file
@ -0,0 +1,67 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# ===============================
|
||||||
|
# Step1: Find keyboard file paths
|
||||||
|
# ===============================
|
||||||
|
|
||||||
|
# Output file path
|
||||||
|
kbd_output_file="kbd_file_paths.txt"
|
||||||
|
|
||||||
|
# Function to follow symbolic links recursively
|
||||||
|
follow_symlinks() {
|
||||||
|
local filepath=$1
|
||||||
|
|
||||||
|
if [[ -L $filepath ]]; then
|
||||||
|
local resolved_path=$(readlink -f "$filepath")
|
||||||
|
echo "$resolved_path" >> "$kbd_output_file"
|
||||||
|
follow_symlinks "$resolved_path"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Traverse files in /dev/input/by-path
|
||||||
|
echo -n > "$kbd_output_file"
|
||||||
|
find /dev/input/by-path -type l -name '*kbd*' -print0 | while IFS= read -r -d '' filepath; do
|
||||||
|
#echo "$filepath" >> "$kbd_output_file"
|
||||||
|
follow_symlinks "$filepath"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Keyboard file paths written to $kbd_output_file"
|
||||||
|
|
||||||
|
# ===============================
|
||||||
|
# Step2: Find pids using keyboard event files
|
||||||
|
# ===============================
|
||||||
|
|
||||||
|
# Use found kbd file paths to find corresponding pids
|
||||||
|
pids_input_file="$kbd_output_file"
|
||||||
|
pids_output_file="pids.txt"
|
||||||
|
|
||||||
|
echo -n > "$pids_output_file"
|
||||||
|
|
||||||
|
declare -a pids_array
|
||||||
|
|
||||||
|
# Get pids of processes using the keyboard and put in array
|
||||||
|
while IFS= read -r pathname; do
|
||||||
|
pids=$(fuser "$pathname")
|
||||||
|
# add pids to array
|
||||||
|
for pid in $pids; do
|
||||||
|
pids_array+=("$pid")
|
||||||
|
done
|
||||||
|
done < "$pids_input_file"
|
||||||
|
|
||||||
|
# sort and remove duplicates
|
||||||
|
sorted_pids=$(printf '%s\n' "${pids_array[@]}" | sort -nu)
|
||||||
|
|
||||||
|
# write unique and sorted pids to file, separated by newlines
|
||||||
|
printf '%s\n' "${sorted_pids[@]}" > "$pids_output_file"
|
||||||
|
|
||||||
|
echo "Pids written to $pids_output_file"
|
||||||
|
|
||||||
|
# ===============================
|
||||||
|
# Step3: Find processes/program names using pids
|
||||||
|
# ===============================
|
||||||
|
exe_input_file="$pids_output_file"
|
||||||
|
exe_output_file="suspicous_exes.txt"
|
||||||
|
|
||||||
|
# Clear output file
|
||||||
|
echo -n > "$exe_output_file"
|
||||||
|
|
||||||
Reference in New Issue
Block a user