summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal EL Mahrouss <amlalelmahrouss@icloud.com>2024-08-04 23:53:30 +0200
committerAmlal EL Mahrouss <amlalelmahrouss@icloud.com>2024-08-04 23:53:30 +0200
commitcc03f40d9fb1d68bfd945284a3ff5067dfd8475a (patch)
tree899b9cfae976c92579543653f904453fc1c2ab8f
parentfb0ca452cda3bdc4a13f278c115f2dcd9360d818 (diff)
[IMP] [unstable] User password hashing, and renamed newoskrnl.dll to newoskrnl.lib.
[IMP] [unstable] Using paths for usernames. Such as \Local\Super on 192.168.2.4 for example. Signed-off-by: Amlal EL Mahrouss <amlalelmahrouss@icloud.com>
-rw-r--r--Boot/Sources/HEL/AMD64/BootMain.cxx4
-rw-r--r--Boot/Sources/Root/bootloader.json2
-rw-r--r--Boot/amd64-efi.make4
-rw-r--r--Kernel/HALKit/AMD64/HalKernelMain.cxx2
-rw-r--r--Kernel/KernelKit/User.hxx10
-rw-r--r--Kernel/KernelRsrc.rsrc2
-rw-r--r--Kernel/Linker/16x0.json2
-rw-r--r--Kernel/Linker/32x0.json2
-rw-r--r--Kernel/Linker/64x0.json2
-rw-r--r--Kernel/Linker/arm64.json2
-rw-r--r--Kernel/Sources/FS/NewFS.cxx2
-rw-r--r--Kernel/Sources/KernelCheck.cxx10
-rw-r--r--Kernel/Sources/User.cxx42
-rw-r--r--Kernel/amd64-efi.make2
-rw-r--r--Kernel/arm64-efi.make2
15 files changed, 55 insertions, 35 deletions
diff --git a/Boot/Sources/HEL/AMD64/BootMain.cxx b/Boot/Sources/HEL/AMD64/BootMain.cxx
index 2bc2aca1..d2a478c6 100644
--- a/Boot/Sources/HEL/AMD64/BootMain.cxx
+++ b/Boot/Sources/HEL/AMD64/BootMain.cxx
@@ -201,7 +201,7 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle,
// format the disk.
// ---------------------------------------------------- //
- BFileReader readerKernel(L"newoskrnl.dll", ImageHandle);
+ BFileReader readerKernel(L"newoskrnl.lib", ImageHandle);
readerKernel.ReadAll(0);
@@ -214,7 +214,7 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle,
if (readerKernel.Blob())
{
loader = new Boot::ProgramLoader(readerKernel.Blob());
- loader->SetName("\"newoskrnl.dll\" (64-bit SMP DLL)");
+ loader->SetName("\"newoskrnl.lib\" (64-bit SMP DLL)");
}
writer.Write("newosldr: Running: ").Write(loader->GetName()).Write("\r");
diff --git a/Boot/Sources/Root/bootloader.json b/Boot/Sources/Root/bootloader.json
index fe1a57d4..51cb36b5 100644
--- a/Boot/Sources/Root/bootloader.json
+++ b/Boot/Sources/Root/bootloader.json
@@ -1,4 +1,4 @@
{
- "newoskrnl.dll": "kernel",
+ "newoskrnl.lib": "kernel",
"ZETA/fonts.json": "rsrc"
}
diff --git a/Boot/amd64-efi.make b/Boot/amd64-efi.make
index b8d5b771..87235cc6 100644
--- a/Boot/amd64-efi.make
+++ b/Boot/amd64-efi.make
@@ -50,7 +50,7 @@ FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -D__NEWOS_OTA__ -mno-red-zone -D__NEWOSK
-std=c++20 -D__HAVE_MAHROUSS_APIS__ -D__NEWOS_AMD64__ -D__MAHROUSS__ -D__BOOTLOADER__ -I../
BOOT_LOADER=newosldr.exe
-KERNEL=newoskrnl.dll
+KERNEL=newoskrnl.lib
DDK=libDDK.lib
SCI=libSCI.lib
@@ -97,7 +97,7 @@ download-edk:
$(HTTP_GET) https://retrage.github.io/edk2-nightly/bin/DEBUGX64_OVMF.fd -O OVMF.fd
BINS=*.bin
-EXECUTABLES=newosldr.exe newoskrnl.dll OVMF.fd
+EXECUTABLES=newosldr.exe newoskrnl.lib OVMF.fd
TARGETS=$(REM_FLAG) $(OBJ) $(BIN) $(IMG) $(IMG_2) $(EXECUTABLES)
diff --git a/Kernel/HALKit/AMD64/HalKernelMain.cxx b/Kernel/HALKit/AMD64/HalKernelMain.cxx
index 020ee59d..e3bcb20c 100644
--- a/Kernel/HALKit/AMD64/HalKernelMain.cxx
+++ b/Kernel/HALKit/AMD64/HalKernelMain.cxx
@@ -243,7 +243,7 @@ void hal_real_init(void)
}
kTextOffsetY += 10;
- cg_write_text("LOADING SUBSYSTEMS...", kTextOffsetY, 10, RGB(0x00, 0x00, 0x00));
+ cg_write_text("LOADING SECURITY SUBSYSTEM...", kTextOffsetY, 10, RGB(0x00, 0x00, 0x00));
Kernel::ke_stop(RUNTIME_CHECK_BOOTSTRAP);
}
diff --git a/Kernel/KernelKit/User.hxx b/Kernel/KernelKit/User.hxx
index 5a91459b..a7aaa508 100644
--- a/Kernel/KernelKit/User.hxx
+++ b/Kernel/KernelKit/User.hxx
@@ -13,8 +13,8 @@
#include <NewKit/Defines.hxx>
// user mode users.
-#define kSuperUser "Super"
-#define kGuestUser "Guest"
+#define kSuperUser "\\Local\\Super"
+#define kGuestUser "\\Local\\Guest"
#define kUsersFile "\\Users\\$UserMTF"
@@ -90,9 +90,9 @@ namespace Kernel
NEWOS_COPY_DELETE(UserManager);
STATIC UserManager* The() noexcept;
- Bool LogIn(User* user, const Char* password) noexcept;
- User* Current() noexcept;
- Void LogOff() noexcept;
+ Bool TryLogIn(User* user, const Char* password) noexcept;
+ User* GetCurrent() noexcept;
+ Void TryLogOff() noexcept;
};
} // namespace Kernel
diff --git a/Kernel/KernelRsrc.rsrc b/Kernel/KernelRsrc.rsrc
index 4cf7e352..f7b42292 100644
--- a/Kernel/KernelRsrc.rsrc
+++ b/Kernel/KernelRsrc.rsrc
@@ -15,7 +15,7 @@ BEGIN
VALUE "FileVersion", KERNEL_VERSION
VALUE "InternalName", "newoskrnl"
VALUE "LegalCopyright", "(c) ZKA Technologies, all rights reserved."
- VALUE "OriginalFilename", "newoskrnl.dll"
+ VALUE "OriginalFilename", "newoskrnl.lib"
VALUE "ProductName", "newoskrnl"
VALUE "ProductVersion", KERNEL_VERSION
END
diff --git a/Kernel/Linker/16x0.json b/Kernel/Linker/16x0.json
index 9c284b53..1f769a4c 100644
--- a/Kernel/Linker/16x0.json
+++ b/Kernel/Linker/16x0.json
@@ -1,7 +1,7 @@
{
"linker": "link.exe",
"executable_type": "kernel",
- "output_name": "newoskrnl.dll",
+ "output_name": "newoskrnl.lib",
"start_proc": "__ImageStart",
"arch": "16x0",
"format": "PEF"
diff --git a/Kernel/Linker/32x0.json b/Kernel/Linker/32x0.json
index 05a3db9b..a78a1090 100644
--- a/Kernel/Linker/32x0.json
+++ b/Kernel/Linker/32x0.json
@@ -1,7 +1,7 @@
{
"linker": "link.exe",
"executable_type": "kernel",
- "output_name": "newoskrnl.dll",
+ "output_name": "newoskrnl.lib",
"start_proc": "__ImageStart",
"arch": "32x0",
"format": "PEF"
diff --git a/Kernel/Linker/64x0.json b/Kernel/Linker/64x0.json
index c1d0e388..b9b9a34e 100644
--- a/Kernel/Linker/64x0.json
+++ b/Kernel/Linker/64x0.json
@@ -1,7 +1,7 @@
{
"linker": "link.exe",
"executable_type": "kernel",
- "output_name": "newoskrnl.dll",
+ "output_name": "newoskrnl.lib",
"start_proc": "__ImageStart",
"arch": "64x0",
"format": "PEF"
diff --git a/Kernel/Linker/arm64.json b/Kernel/Linker/arm64.json
index 99c190bf..2e75f9fd 100644
--- a/Kernel/Linker/arm64.json
+++ b/Kernel/Linker/arm64.json
@@ -1,7 +1,7 @@
{
"linker": "link.exe",
"executable_type": "kernel",
- "output_name": "newoskrnl.dll",
+ "output_name": "newoskrnl.lib",
"start_proc": "__ImageStart",
"arch": "arm64",
"format": "PEF"
diff --git a/Kernel/Sources/FS/NewFS.cxx b/Kernel/Sources/FS/NewFS.cxx
index c5b9c1e3..23d2867f 100644
--- a/Kernel/Sources/FS/NewFS.cxx
+++ b/Kernel/Sources/FS/NewFS.cxx
@@ -304,7 +304,7 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const char* name,
if (flagsList & kNewFSCatalogKindMetaFile)
{
- if (UserManager::The()->Current() != UserManager::The()->fRootUser)
+ if (UserManager::The()->GetCurrent() != UserManager::The()->fRootUser)
{
delete catalogChild;
return nullptr;
diff --git a/Kernel/Sources/KernelCheck.cxx b/Kernel/Sources/KernelCheck.cxx
index defe6841..900bbf6e 100644
--- a/Kernel/Sources/KernelCheck.cxx
+++ b/Kernel/Sources/KernelCheck.cxx
@@ -15,15 +15,9 @@
#include <Modules/CoreCG/FbRenderer.hxx>
#include <Modules/CoreCG/TextRenderer.hxx>
-EXTERN_C [[noreturn]] Kernel::Void ke_wait_for_debugger()
+EXTERN_C Kernel::Void ke_wait_for_debugger()
{
- while (Yes)
- {
-#ifdef __NEWOS_AMD64__
- Kernel::HAL::rt_cli();
- Kernel::HAL::rt_halt();
-#endif
- }
+
}
/* Each error code is attributed with an ID, which will prompt a string onto the
diff --git a/Kernel/Sources/User.cxx b/Kernel/Sources/User.cxx
index 60981551..e0ccaf6b 100644
--- a/Kernel/Sources/User.cxx
+++ b/Kernel/Sources/User.cxx
@@ -26,9 +26,19 @@ namespace Kernel
/// \brief Constructs a token by hashing the password.
/// \param password password to hash.
/// \return the hashed password
- const Char* cred_construct_token(const Char* password)
+ const Int32 cred_construct_token(Char* password, User* user)
{
- return nullptr;
+ if (!password || !user)
+ return -1;
+
+ for (Size i_pass = 0; i_pass < rt_string_len(password); ++i_pass)
+ {
+ Char cur_chr = password[i_pass];
+ password[i_pass] = cur_chr + (user->IsStdUser() ? 0xCF : 0xEF);
+ }
+
+
+ return 0;
}
}
@@ -90,7 +100,7 @@ namespace Kernel
return view;
}
- Bool UserManager::LogIn(User* user, const Char* password) noexcept
+ Bool UserManager::TryLogIn(User* user, const Char* password) noexcept
{
if (!password ||
!user)
@@ -119,9 +129,25 @@ namespace Kernel
}
else
{
- auto tok = Detail::cred_construct_token(password);
+ Char generated_token[255] = { 0 };
+
+ // ================================================== //
+ // Provide password on token variable.
+ // ================================================== //
+
+ rt_copy_memory((VoidPtr)password, generated_token, rt_string_len(password));
+
+ // ================================================== //
+ // Construct token.
+ // ================================================== //
+
+ Detail::cred_construct_token(generated_token, user);
+
+ // ================================================== //
+ // Checks if it matches the current token we have.
+ // ================================================== //
- if (rt_string_cmp((Char*)token, tok, rt_string_len(tok)))
+ if (rt_string_cmp((Char*)token, generated_token, rt_string_len(password)))
{
kcout << "newoskrnl: Incorrect credentials.\r";
@@ -146,7 +172,7 @@ namespace Kernel
}
else
{
- this->LogOff();
+ this->TryLogOff();
}
}
@@ -156,12 +182,12 @@ namespace Kernel
return true;
}
- User* UserManager::Current() noexcept
+ User* UserManager::GetCurrent() noexcept
{
return fCurrentUser;
}
- Void UserManager::LogOff() noexcept
+ Void UserManager::TryLogOff() noexcept
{
if (!fCurrentUser)
return;
diff --git a/Kernel/amd64-efi.make b/Kernel/amd64-efi.make
index 3de2bf30..ce9bcd90 100644
--- a/Kernel/amd64-efi.make
+++ b/Kernel/amd64-efi.make
@@ -39,7 +39,7 @@ LDFLAGS = -e ke_startup_platform --subsystem=17 --image-base 0x10000000
LDOBJ = Objects/*.obj
# This file is the kernel, responsible of task management and memory.
-KERNEL = newoskrnl.dll
+KERNEL = newoskrnl.lib
.PHONY: error
error:
diff --git a/Kernel/arm64-efi.make b/Kernel/arm64-efi.make
index 410e7789..92324d46 100644
--- a/Kernel/arm64-efi.make
+++ b/Kernel/arm64-efi.make
@@ -27,7 +27,7 @@ LDFLAGS = -subsystem:efi_application -entry:hal_init_platform /nodefaultlib
LDOBJ = Objects/*.obj
# This file is the kernel, responsible of task management and memory.
-KERNEL = newoskrnl.dll
+KERNEL = newoskrnl.lib
.PHONY: error
error: