From c3fe5b40b1f0fda9b5ddfc23555cb20941092a02 Mon Sep 17 00:00:00 2001 From: jsteube Date: Tue, 6 Sep 2016 18:23:26 +0200 Subject: [PATCH] Move folder specific functions into their own source file --- include/folder.h | 25 +++++++++++ include/shared.h | 5 --- src/Makefile | 10 ++--- src/folder.c | 108 +++++++++++++++++++++++++++++++++++++++++++++++ src/hashcat.c | 1 + src/shared.c | 105 --------------------------------------------- 6 files changed, 139 insertions(+), 115 deletions(-) create mode 100644 include/folder.h create mode 100644 src/folder.c diff --git a/include/folder.h b/include/folder.h new file mode 100644 index 000000000..79aef6fba --- /dev/null +++ b/include/folder.h @@ -0,0 +1,25 @@ +/** + * Authors.....: Jens Steube + * License.....: MIT + */ + +#pragma once + +#include +#include + +#ifdef _POSIX +#include +#endif + +#ifdef _WIN +#include +#endif + +#define DOT_HASHCAT ".hashcat" +#define SESSIONS_FOLDER "sessions" + +char *get_exec_path (void); +char *get_install_dir (const char *progname); +char *get_profile_dir (const char *homedir); +char *get_session_dir (const char *profile_dir); diff --git a/include/shared.h b/include/shared.h index 0fe0b374c..d120ad085 100644 --- a/include/shared.h +++ b/include/shared.h @@ -124,11 +124,6 @@ static const char ST_0010[] = "Autotuning"; * functions */ -char *get_exec_path (void); -char *get_install_dir (const char *progname); -char *get_profile_dir (const char *homedir); -char *get_session_dir (const char *profile_dir); - uint count_lines (FILE *fd); void *rulefind (const void *key, void *base, int nmemb, size_t size, int (*compar) (const void *, const void *)); diff --git a/src/Makefile b/src/Makefile index 4966b9c23..f0bddd2f1 100644 --- a/src/Makefile +++ b/src/Makefile @@ -165,7 +165,7 @@ LFLAGS_CROSS_WIN := -lpsapi ## Objects ## -NATIVE_OBJS := obj/bitops.NATIVE.o obj/convert.NATIVE.o obj/cpu_aes.NATIVE.o obj/cpu_crc32.NATIVE.o obj/cpu_des.NATIVE.o obj/cpu_md5.NATIVE.o obj/cpu_sha1.NATIVE.o obj/cpu_sha256.NATIVE.o obj/data.NATIVE.o obj/ext_OpenCL.NATIVE.o obj/hwmon.NATIVE.o obj/interface.NATIVE.o obj/logfile.NATIVE.o obj/logging.NATIVE.o obj/memory.NATIVE.o obj/mpsp.NATIVE.o obj/rp_cpu.NATIVE.o obj/rp_kernel_on_cpu.NATIVE.o obj/shared.NATIVE.o obj/terminal.NATIVE.o obj/usage.NATIVE.o +NATIVE_OBJS := obj/folder.NATIVE.o obj/bitops.NATIVE.o obj/convert.NATIVE.o obj/cpu_aes.NATIVE.o obj/cpu_crc32.NATIVE.o obj/cpu_des.NATIVE.o obj/cpu_md5.NATIVE.o obj/cpu_sha1.NATIVE.o obj/cpu_sha256.NATIVE.o obj/data.NATIVE.o obj/ext_OpenCL.NATIVE.o obj/hwmon.NATIVE.o obj/interface.NATIVE.o obj/logfile.NATIVE.o obj/logging.NATIVE.o obj/memory.NATIVE.o obj/mpsp.NATIVE.o obj/rp_cpu.NATIVE.o obj/rp_kernel_on_cpu.NATIVE.o obj/shared.NATIVE.o obj/terminal.NATIVE.o obj/usage.NATIVE.o ifeq ($(UNAME),Linux) NATIVE_OBJS += obj/ext_ADL.NATIVE.o @@ -174,8 +174,8 @@ NATIVE_OBJS += obj/ext_nvml.NATIVE.o NATIVE_OBJS += obj/ext_xnvctrl.NATIVE.o endif -LINUX_32_OBJS := obj/bitops.LINUX.32.o obj/convert.LINUX.32.o obj/cpu_aes.LINUX.32.o obj/cpu_crc32.LINUX.32.o obj/cpu_des.LINUX.32.o obj/cpu_md5.LINUX.32.o obj/cpu_sha1.LINUX.32.o obj/cpu_sha256.LINUX.32.o obj/data.LINUX.32.o obj/ext_ADL.LINUX.32.o obj/ext_nvapi.LINUX.32.o obj/ext_nvml.LINUX.32.o obj/ext_OpenCL.LINUX.32.o obj/ext_xnvctrl.LINUX.32.o obj/hwmon.LINUX.32.o obj/interface.LINUX.32.o obj/logfile.LINUX.32.o obj/logging.LINUX.32.o obj/memory.LINUX.32.o obj/mpsp.LINUX.32.o obj/rp_cpu.LINUX.32.o obj/rp_kernel_on_cpu.LINUX.32.o obj/shared.LINUX.32.o obj/terminal.LINUX.32.o obj/usage.LINUX.32.o -LINUX_64_OBJS := obj/bitops.LINUX.64.o obj/convert.LINUX.64.o obj/cpu_aes.LINUX.64.o obj/cpu_crc32.LINUX.64.o obj/cpu_des.LINUX.64.o obj/cpu_md5.LINUX.64.o obj/cpu_sha1.LINUX.64.o obj/cpu_sha256.LINUX.64.o obj/data.LINUX.64.o obj/ext_ADL.LINUX.64.o obj/ext_nvapi.LINUX.64.o obj/ext_nvml.LINUX.64.o obj/ext_OpenCL.LINUX.64.o obj/ext_xnvctrl.LINUX.64.o obj/hwmon.LINUX.64.o obj/interface.LINUX.64.o obj/logfile.LINUX.64.o obj/logging.LINUX.64.o obj/memory.LINUX.64.o obj/mpsp.LINUX.64.o obj/rp_cpu.LINUX.64.o obj/rp_kernel_on_cpu.LINUX.64.o obj/shared.LINUX.64.o obj/terminal.LINUX.64.o obj/usage.LINUX.64.o +LINUX_32_OBJS := obj/folder.LINUX.32.o obj/bitops.LINUX.32.o obj/convert.LINUX.32.o obj/cpu_aes.LINUX.32.o obj/cpu_crc32.LINUX.32.o obj/cpu_des.LINUX.32.o obj/cpu_md5.LINUX.32.o obj/cpu_sha1.LINUX.32.o obj/cpu_sha256.LINUX.32.o obj/data.LINUX.32.o obj/ext_ADL.LINUX.32.o obj/ext_nvapi.LINUX.32.o obj/ext_nvml.LINUX.32.o obj/ext_OpenCL.LINUX.32.o obj/ext_xnvctrl.LINUX.32.o obj/hwmon.LINUX.32.o obj/interface.LINUX.32.o obj/logfile.LINUX.32.o obj/logging.LINUX.32.o obj/memory.LINUX.32.o obj/mpsp.LINUX.32.o obj/rp_cpu.LINUX.32.o obj/rp_kernel_on_cpu.LINUX.32.o obj/shared.LINUX.32.o obj/terminal.LINUX.32.o obj/usage.LINUX.32.o +LINUX_64_OBJS := obj/folder.LINUX.64.o obj/bitops.LINUX.64.o obj/convert.LINUX.64.o obj/cpu_aes.LINUX.64.o obj/cpu_crc32.LINUX.64.o obj/cpu_des.LINUX.64.o obj/cpu_md5.LINUX.64.o obj/cpu_sha1.LINUX.64.o obj/cpu_sha256.LINUX.64.o obj/data.LINUX.64.o obj/ext_ADL.LINUX.64.o obj/ext_nvapi.LINUX.64.o obj/ext_nvml.LINUX.64.o obj/ext_OpenCL.LINUX.64.o obj/ext_xnvctrl.LINUX.64.o obj/hwmon.LINUX.64.o obj/interface.LINUX.64.o obj/logfile.LINUX.64.o obj/logging.LINUX.64.o obj/memory.LINUX.64.o obj/mpsp.LINUX.64.o obj/rp_cpu.LINUX.64.o obj/rp_kernel_on_cpu.LINUX.64.o obj/shared.LINUX.64.o obj/terminal.LINUX.64.o obj/usage.LINUX.64.o # Windows CRT file globbing: @@ -185,8 +185,8 @@ CRT_GLOB_INCLUDE_FOLDER := $(dir $(lastword $(MAKEFILE_LIST))) include $(CRT_GLOB_INCLUDE_FOLDER)/win_file_globbing.mk -WIN_32_OBJS := obj/bitops.WIN.32.o obj/convert.WIN.32.o obj/cpu_aes.WIN.32.o obj/cpu_crc32.WIN.32.o obj/cpu_des.WIN.32.o obj/cpu_md5.WIN.32.o obj/cpu_sha1.WIN.32.o obj/cpu_sha256.WIN.32.o obj/data.WIN.32.o obj/ext_ADL.WIN.32.o obj/ext_nvapi.WIN.32.o obj/ext_nvml.WIN.32.o obj/ext_OpenCL.WIN.32.o obj/ext_xnvctrl.WIN.32.o obj/hwmon.WIN.32.o obj/interface.WIN.32.o obj/logfile.WIN.32.o obj/logging.WIN.32.o obj/memory.WIN.32.o obj/mpsp.WIN.32.o obj/rp_cpu.WIN.32.o obj/rp_kernel_on_cpu.WIN.32.o obj/shared.WIN.32.o obj/terminal.WIN.32.o obj/usage.WIN.32.o $(CRT_GLOB_32) -WIN_64_OBJS := obj/bitops.WIN.64.o obj/convert.WIN.64.o obj/cpu_aes.WIN.64.o obj/cpu_crc32.WIN.64.o obj/cpu_des.WIN.64.o obj/cpu_md5.WIN.64.o obj/cpu_sha1.WIN.64.o obj/cpu_sha256.WIN.64.o obj/data.WIN.64.o obj/ext_ADL.WIN.64.o obj/ext_nvapi.WIN.64.o obj/ext_nvml.WIN.64.o obj/ext_OpenCL.WIN.64.o obj/ext_xnvctrl.WIN.64.o obj/hwmon.WIN.64.o obj/interface.WIN.64.o obj/logfile.WIN.64.o obj/logging.WIN.64.o obj/memory.WIN.64.o obj/mpsp.WIN.64.o obj/rp_cpu.WIN.64.o obj/rp_kernel_on_cpu.WIN.64.o obj/shared.WIN.64.o obj/terminal.WIN.64.o obj/usage.WIN.64.o $(CRT_GLOB_64) +WIN_32_OBJS := obj/folder.WIN.32.o obj/bitops.WIN.32.o obj/convert.WIN.32.o obj/cpu_aes.WIN.32.o obj/cpu_crc32.WIN.32.o obj/cpu_des.WIN.32.o obj/cpu_md5.WIN.32.o obj/cpu_sha1.WIN.32.o obj/cpu_sha256.WIN.32.o obj/data.WIN.32.o obj/ext_ADL.WIN.32.o obj/ext_nvapi.WIN.32.o obj/ext_nvml.WIN.32.o obj/ext_OpenCL.WIN.32.o obj/ext_xnvctrl.WIN.32.o obj/hwmon.WIN.32.o obj/interface.WIN.32.o obj/logfile.WIN.32.o obj/logging.WIN.32.o obj/memory.WIN.32.o obj/mpsp.WIN.32.o obj/rp_cpu.WIN.32.o obj/rp_kernel_on_cpu.WIN.32.o obj/shared.WIN.32.o obj/terminal.WIN.32.o obj/usage.WIN.32.o $(CRT_GLOB_32) +WIN_64_OBJS := obj/folder.WIN.64.o obj/bitops.WIN.64.o obj/convert.WIN.64.o obj/cpu_aes.WIN.64.o obj/cpu_crc32.WIN.64.o obj/cpu_des.WIN.64.o obj/cpu_md5.WIN.64.o obj/cpu_sha1.WIN.64.o obj/cpu_sha256.WIN.64.o obj/data.WIN.64.o obj/ext_ADL.WIN.64.o obj/ext_nvapi.WIN.64.o obj/ext_nvml.WIN.64.o obj/ext_OpenCL.WIN.64.o obj/ext_xnvctrl.WIN.64.o obj/hwmon.WIN.64.o obj/interface.WIN.64.o obj/logfile.WIN.64.o obj/logging.WIN.64.o obj/memory.WIN.64.o obj/mpsp.WIN.64.o obj/rp_cpu.WIN.64.o obj/rp_kernel_on_cpu.WIN.64.o obj/shared.WIN.64.o obj/terminal.WIN.64.o obj/usage.WIN.64.o $(CRT_GLOB_64) ## ## Targets: Global diff --git a/src/folder.c b/src/folder.c new file mode 100644 index 000000000..e4c1e7518 --- /dev/null +++ b/src/folder.c @@ -0,0 +1,108 @@ +/** + * Authors.....: Jens Steube + * License.....: MIT + */ + +#include "common.h" +#include "memory.h" +#include "folder.h" + +char *get_exec_path () +{ + int exec_path_len = 1024; + + char *exec_path = (char *) mymalloc (exec_path_len); + + #ifdef __linux__ + + char tmp[32] = { 0 }; + + snprintf (tmp, sizeof (tmp) - 1, "/proc/%d/exe", getpid ()); + + const int len = readlink (tmp, exec_path, exec_path_len - 1); + + #elif WIN + + const int len = GetModuleFileName (NULL, exec_path, exec_path_len - 1); + + #elif __APPLE__ + + uint size = exec_path_len; + + if (_NSGetExecutablePath (exec_path, &size) != 0) + { + log_error("! executable path buffer too small\n"); + + exit (-1); + } + + const int len = strlen (exec_path); + + #elif __FreeBSD__ + + int mib[4]; + mib[0] = CTL_KERN; + mib[1] = KERN_PROC; + mib[2] = KERN_PROC_PATHNAME; + mib[3] = -1; + + char tmp[32] = { 0 }; + + size_t size = exec_path_len; + sysctl(mib, 4, exec_path, &size, NULL, 0); + + const int len = readlink (tmp, exec_path, exec_path_len - 1); + + #else + #error Your Operating System is not supported or detected + #endif + + exec_path[len] = 0; + + return exec_path; +} + +char *get_install_dir (const char *progname) +{ + char *install_dir = mystrdup (progname); + char *last_slash = NULL; + + if ((last_slash = strrchr (install_dir, '/')) != NULL) + { + *last_slash = 0; + } + else if ((last_slash = strrchr (install_dir, '\\')) != NULL) + { + *last_slash = 0; + } + else + { + install_dir[0] = '.'; + install_dir[1] = 0; + } + + return (install_dir); +} + +char *get_profile_dir (const char *homedir) +{ + size_t len = strlen (homedir) + 1 + strlen (DOT_HASHCAT) + 1; + + char *profile_dir = (char *) mymalloc (len + 1); + + snprintf (profile_dir, len, "%s/%s", homedir, DOT_HASHCAT); + + return profile_dir; +} + +char *get_session_dir (const char *profile_dir) +{ + size_t len = strlen (profile_dir) + 1 + strlen (SESSIONS_FOLDER) + 1; + + char *session_dir = (char *) mymalloc (len + 1); + + snprintf (session_dir, len, "%s/%s", profile_dir, SESSIONS_FOLDER); + + return session_dir; +} + diff --git a/src/hashcat.c b/src/hashcat.c index 76a06473c..72b6acaf8 100644 --- a/src/hashcat.c +++ b/src/hashcat.c @@ -10,6 +10,7 @@ #include "types_int.h" #include "bitops.h" #include "memory.h" +#include "folder.h" #include "convert.h" #include "logging.h" #include "logfile.h" diff --git a/src/shared.c b/src/shared.c index fe73d3f66..a528fb1cf 100644 --- a/src/shared.c +++ b/src/shared.c @@ -77,111 +77,6 @@ void fsync (int fd) * mixed shared functions */ - - -char *get_exec_path () -{ - int exec_path_len = 1024; - - char *exec_path = (char *) mymalloc (exec_path_len); - - #ifdef __linux__ - - char tmp[32] = { 0 }; - - snprintf (tmp, sizeof (tmp) - 1, "/proc/%d/exe", getpid ()); - - const int len = readlink (tmp, exec_path, exec_path_len - 1); - - #elif WIN - - const int len = GetModuleFileName (NULL, exec_path, exec_path_len - 1); - - #elif __APPLE__ - - uint size = exec_path_len; - - if (_NSGetExecutablePath (exec_path, &size) != 0) - { - log_error("! executable path buffer too small\n"); - - exit (-1); - } - - const int len = strlen (exec_path); - - #elif __FreeBSD__ - - int mib[4]; - mib[0] = CTL_KERN; - mib[1] = KERN_PROC; - mib[2] = KERN_PROC_PATHNAME; - mib[3] = -1; - - char tmp[32] = { 0 }; - - size_t size = exec_path_len; - sysctl(mib, 4, exec_path, &size, NULL, 0); - - const int len = readlink (tmp, exec_path, exec_path_len - 1); - - #else - #error Your Operating System is not supported or detected - #endif - - exec_path[len] = 0; - - return exec_path; -} - -char *get_install_dir (const char *progname) -{ - char *install_dir = mystrdup (progname); - char *last_slash = NULL; - - if ((last_slash = strrchr (install_dir, '/')) != NULL) - { - *last_slash = 0; - } - else if ((last_slash = strrchr (install_dir, '\\')) != NULL) - { - *last_slash = 0; - } - else - { - install_dir[0] = '.'; - install_dir[1] = 0; - } - - return (install_dir); -} - -char *get_profile_dir (const char *homedir) -{ - #define DOT_HASHCAT ".hashcat" - - size_t len = strlen (homedir) + 1 + strlen (DOT_HASHCAT) + 1; - - char *profile_dir = (char *) mymalloc (len + 1); - - snprintf (profile_dir, len, "%s/%s", homedir, DOT_HASHCAT); - - return profile_dir; -} - -char *get_session_dir (const char *profile_dir) -{ - #define SESSIONS_FOLDER "sessions" - - size_t len = strlen (profile_dir) + 1 + strlen (SESSIONS_FOLDER) + 1; - - char *session_dir = (char *) mymalloc (len + 1); - - snprintf (session_dir, len, "%s/%s", profile_dir, SESSIONS_FOLDER); - - return session_dir; -} - uint count_lines (FILE *fd) { uint cnt = 0;