diff --git a/rflog.h-backup b/archived/rflog-broken.h similarity index 64% rename from rflog.h-backup rename to archived/rflog-broken.h index 88769a49f7b57e193f5f8d8da3b9da31e7be71ad..eaecc9534d1661479ec6250ff937b462d3bd51e5 100644 --- a/rflog.h-backup +++ b/archived/rflog-broken.h @@ -1,5 +1,5 @@ // GPT-4o generated. NOT thread safe. -// v2502.1 +// v2502.2 #ifndef SIMPLE_LOGGER_H #define SIMPLE_LOGGER_H @@ -11,15 +11,15 @@ #if defined(_WIN32) && defined(NTDDI_VERSION) #include <ntddk.h> #include <ntstrsafe.h> // For RtlStringCbPrintfA -#define RL_SNPRINTF_FUNC RtlStringCbPrintfA +#define RL_SNPRINTF_F RtlStringCbPrintfA #define RL_LOG_FILE_PATH "N/A" #elif defined(_WIN32) #include <windows.h> -#define RL_SNPRINTF_FUNC snprintf +#define RL_SNPRINTF_F snprintf #define RL_LOG_FILE_PATH "C:\\rflog.txt" #else #include <sys/time.h> -#define RL_SNPRINTF_FUNC snprintf +#define RL_SNPRINTF_F snprintf #define RL_LOG_FILE_PATH "/tmp/rflog.txt" #endif @@ -42,6 +42,16 @@ static RL_THREAD_LOC char log_buffer[RL_LOG_BUFFER_SIZE]; static RL_THREAD_LOC WCHAR wideBuffer[RL_LOG_BUFFER_SIZE]; #endif +#if defined(_WIN32) && defined(NTDDI_VERSION) +// Windows kernel-mode only +size_t NaiveStrlen(const char *str) { + if (!str) return 0; + size_t len = 0; + while (str[len]) len++; + return len; +} +#endif + RL_UNUSED static const char *get_current_datetime() { #if defined(_WIN32) && defined(NTDDI_VERSION) // Windows kernel-mode implementation @@ -53,7 +63,7 @@ RL_UNUSED static const char *get_current_datetime() { RtlTimeToTimeFields(&local_time, &time_fields); // Format the datetime string - RL_SNPRINTF_FUNC (datetime_buffer, RL_DATETIME_BUFFER_SIZE, + RL_SNPRINTF_F (datetime_buffer, RL_DATETIME_BUFFER_SIZE, "%04d-%02d-%02d %02d:%02d:%02d.%03d", time_fields.Year, time_fields.Month, time_fields.Day, time_fields.Hour, time_fields.Minute, time_fields.Second, 0); // No millisecond precision in kernel @@ -80,22 +90,28 @@ RL_UNUSED static const char *get_current_datetime() { RL_UNUSED static void log_to_file(const char *message) { #if defined(_WIN32) && defined(NTDDI_VERSION) - // Windows kernel-mode - size_t messageLen = strlen(message); - size_t maxConvertLength = RL_LOG_BUFFER_SIZE - 1; // Leave space for null terminator - - if (messageLen > maxConvertLength) { - messageLen = maxConvertLength; // Truncate if message is too long - } - - // Manually convert char* to WCHAR* by iterating through the string - for (size_t i = 0; i < messageLen; ++i) { - wideBuffer[i] = (WCHAR)message[i]; // Cast each char to WCHAR + { // Windows kernel-mode + HANDLE hPipe; + UNICODE_STRING pipeName; + OBJECT_ATTRIBUTES objAttr; + IO_STATUS_BLOCK ioStatus; + NTSTATUS status; + LARGE_INTEGER timeout; + timeout.QuadPart = -10 * 1000 * 10; // 10 ms timeout + + RtlInitUnicodeString(&pipeName, L"\\??\\pipe\\rflog_pipe"); + InitializeObjectAttributes(&objAttr, &pipeName, OBJ_CASE_INSENSITIVE, NULL, NULL); + + status = ZwCreateFile(&hPipe, GENERIC_WRITE, &objAttr, &ioStatus, NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_OPEN, 0, NULL, 0); + if (!NT_SUCCESS(status)) { + return; // Pipe does not exist or cannot be opened + } + + status = ZwWriteFile(hPipe, NULL, NULL, NULL, &ioStatus, (void*)message, (ULONG)NaiveStrlen(message), NULL, NULL); + ZwClose(hPipe); + return; + // old solution // TraceDtlsMiscTraceOnPort(NULL, wideBuffer); } - wideBuffer[messageLen] = L'\0'; // Null-terminate the wide string - - // Log the wide string - TraceDtlsMiscTraceOnPort(NULL, wideBuffer); #else // User mode FILE *file = fopen(RL_LOG_FILE_PATH, "a"); @@ -110,23 +126,23 @@ RL_UNUSED static void log_to_file(const char *message) { RL_UNUSED static void rflogs(const char *message) { - RL_SNPRINTF_FUNC(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s", get_current_datetime(), message); + RL_SNPRINTF_F(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s", get_current_datetime(), message); log_to_file(log_buffer); } RL_UNUSED static void rflogsi(const char *message, int value) { - RL_SNPRINTF_FUNC(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %d", get_current_datetime(), message, value); + RL_SNPRINTF_F(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %d", get_current_datetime(), message, value); log_to_file(log_buffer); } RL_UNUSED static void rflogsii(const char *message, int value, int i2) { - RL_SNPRINTF_FUNC(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %d, %d", get_current_datetime(), message, value, i2); + RL_SNPRINTF_F(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %d, %d", get_current_datetime(), message, value, i2); log_to_file(log_buffer); } RL_UNUSED static void rflogsiip(const char *message, int value, int i2, void *ptr) { - RL_SNPRINTF_FUNC(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %d, %d, %p", get_current_datetime(), message, value, i2, ptr); + RL_SNPRINTF_F(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %d, %d, %p", get_current_datetime(), message, value, i2, ptr); log_to_file(log_buffer); } RL_UNUSED static void rflogss(const char *message1, const char *message2) { - RL_SNPRINTF_FUNC(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %s", get_current_datetime(), message1, message2); + RL_SNPRINTF_F(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %s", get_current_datetime(), message1, message2); log_to_file(log_buffer); } diff --git a/fish-config/functions/totpapi.fish b/fish-config/functions/totpapi.fish new file mode 100644 index 0000000000000000000000000000000000000000..6a2f59ee3819f7cfae34f0309c1a05873c99d37d --- /dev/null +++ b/fish-config/functions/totpapi.fish @@ -0,0 +1,7 @@ +function totpapi +if test -n "$argv[1]" +curl -X POST https://recolic.net/res/river/rauth/secdump.php --data $argv[1] +else +echo "Usage: totpapi (rsec TOTP_CARD_SEED_*)" +end +end diff --git a/rflog.h b/rflog.h index eaecc9534d1661479ec6250ff937b462d3bd51e5..88769a49f7b57e193f5f8d8da3b9da31e7be71ad 100644 --- a/rflog.h +++ b/rflog.h @@ -1,5 +1,5 @@ // GPT-4o generated. NOT thread safe. -// v2502.2 +// v2502.1 #ifndef SIMPLE_LOGGER_H #define SIMPLE_LOGGER_H @@ -11,15 +11,15 @@ #if defined(_WIN32) && defined(NTDDI_VERSION) #include <ntddk.h> #include <ntstrsafe.h> // For RtlStringCbPrintfA -#define RL_SNPRINTF_F RtlStringCbPrintfA +#define RL_SNPRINTF_FUNC RtlStringCbPrintfA #define RL_LOG_FILE_PATH "N/A" #elif defined(_WIN32) #include <windows.h> -#define RL_SNPRINTF_F snprintf +#define RL_SNPRINTF_FUNC snprintf #define RL_LOG_FILE_PATH "C:\\rflog.txt" #else #include <sys/time.h> -#define RL_SNPRINTF_F snprintf +#define RL_SNPRINTF_FUNC snprintf #define RL_LOG_FILE_PATH "/tmp/rflog.txt" #endif @@ -42,16 +42,6 @@ static RL_THREAD_LOC char log_buffer[RL_LOG_BUFFER_SIZE]; static RL_THREAD_LOC WCHAR wideBuffer[RL_LOG_BUFFER_SIZE]; #endif -#if defined(_WIN32) && defined(NTDDI_VERSION) -// Windows kernel-mode only -size_t NaiveStrlen(const char *str) { - if (!str) return 0; - size_t len = 0; - while (str[len]) len++; - return len; -} -#endif - RL_UNUSED static const char *get_current_datetime() { #if defined(_WIN32) && defined(NTDDI_VERSION) // Windows kernel-mode implementation @@ -63,7 +53,7 @@ RL_UNUSED static const char *get_current_datetime() { RtlTimeToTimeFields(&local_time, &time_fields); // Format the datetime string - RL_SNPRINTF_F (datetime_buffer, RL_DATETIME_BUFFER_SIZE, + RL_SNPRINTF_FUNC (datetime_buffer, RL_DATETIME_BUFFER_SIZE, "%04d-%02d-%02d %02d:%02d:%02d.%03d", time_fields.Year, time_fields.Month, time_fields.Day, time_fields.Hour, time_fields.Minute, time_fields.Second, 0); // No millisecond precision in kernel @@ -90,28 +80,22 @@ RL_UNUSED static const char *get_current_datetime() { RL_UNUSED static void log_to_file(const char *message) { #if defined(_WIN32) && defined(NTDDI_VERSION) - { // Windows kernel-mode - HANDLE hPipe; - UNICODE_STRING pipeName; - OBJECT_ATTRIBUTES objAttr; - IO_STATUS_BLOCK ioStatus; - NTSTATUS status; - LARGE_INTEGER timeout; - timeout.QuadPart = -10 * 1000 * 10; // 10 ms timeout - - RtlInitUnicodeString(&pipeName, L"\\??\\pipe\\rflog_pipe"); - InitializeObjectAttributes(&objAttr, &pipeName, OBJ_CASE_INSENSITIVE, NULL, NULL); - - status = ZwCreateFile(&hPipe, GENERIC_WRITE, &objAttr, &ioStatus, NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_OPEN, 0, NULL, 0); - if (!NT_SUCCESS(status)) { - return; // Pipe does not exist or cannot be opened - } - - status = ZwWriteFile(hPipe, NULL, NULL, NULL, &ioStatus, (void*)message, (ULONG)NaiveStrlen(message), NULL, NULL); - ZwClose(hPipe); - return; - // old solution // TraceDtlsMiscTraceOnPort(NULL, wideBuffer); + // Windows kernel-mode + size_t messageLen = strlen(message); + size_t maxConvertLength = RL_LOG_BUFFER_SIZE - 1; // Leave space for null terminator + + if (messageLen > maxConvertLength) { + messageLen = maxConvertLength; // Truncate if message is too long + } + + // Manually convert char* to WCHAR* by iterating through the string + for (size_t i = 0; i < messageLen; ++i) { + wideBuffer[i] = (WCHAR)message[i]; // Cast each char to WCHAR } + wideBuffer[messageLen] = L'\0'; // Null-terminate the wide string + + // Log the wide string + TraceDtlsMiscTraceOnPort(NULL, wideBuffer); #else // User mode FILE *file = fopen(RL_LOG_FILE_PATH, "a"); @@ -126,23 +110,23 @@ RL_UNUSED static void log_to_file(const char *message) { RL_UNUSED static void rflogs(const char *message) { - RL_SNPRINTF_F(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s", get_current_datetime(), message); + RL_SNPRINTF_FUNC(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s", get_current_datetime(), message); log_to_file(log_buffer); } RL_UNUSED static void rflogsi(const char *message, int value) { - RL_SNPRINTF_F(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %d", get_current_datetime(), message, value); + RL_SNPRINTF_FUNC(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %d", get_current_datetime(), message, value); log_to_file(log_buffer); } RL_UNUSED static void rflogsii(const char *message, int value, int i2) { - RL_SNPRINTF_F(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %d, %d", get_current_datetime(), message, value, i2); + RL_SNPRINTF_FUNC(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %d, %d", get_current_datetime(), message, value, i2); log_to_file(log_buffer); } RL_UNUSED static void rflogsiip(const char *message, int value, int i2, void *ptr) { - RL_SNPRINTF_F(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %d, %d, %p", get_current_datetime(), message, value, i2, ptr); + RL_SNPRINTF_FUNC(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %d, %d, %p", get_current_datetime(), message, value, i2, ptr); log_to_file(log_buffer); } RL_UNUSED static void rflogss(const char *message1, const char *message2) { - RL_SNPRINTF_F(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %s", get_current_datetime(), message1, message2); + RL_SNPRINTF_FUNC(log_buffer, RL_LOG_BUFFER_SIZE, "[%s] %s: %s", get_current_datetime(), message1, message2); log_to_file(log_buffer); }