添加项目文件。
This commit is contained in:
18
Etw Syscall/libpeconv-master/tests/test_case3/CMakeLists.txt
Normal file
18
Etw Syscall/libpeconv-master/tests/test_case3/CMakeLists.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
cmake_minimum_required ( VERSION 2.8...3.21 )
|
||||
project (test_case3)
|
||||
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
|
||||
|
||||
set (srcs
|
||||
main.cpp
|
||||
checksum.cpp
|
||||
)
|
||||
|
||||
set (hdrs
|
||||
checksum.h
|
||||
)
|
||||
|
||||
add_executable ( ${PROJECT_NAME} ${hdrs} ${srcs})
|
||||
|
||||
#install
|
||||
INSTALL( TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX} COMPONENT ${PROJECT_NAME} )
|
||||
35
Etw Syscall/libpeconv-master/tests/test_case3/checksum.cpp
Normal file
35
Etw Syscall/libpeconv-master/tests/test_case3/checksum.cpp
Normal file
@@ -0,0 +1,35 @@
|
||||
#include "checksum.h"
|
||||
|
||||
inline DWORD rotl32a(DWORD x, DWORD n)
|
||||
{
|
||||
return (x << n) | (x >> (32 - n));
|
||||
}
|
||||
|
||||
inline char to_lower(char c)
|
||||
{
|
||||
if (c >= 'A' && c <= 'Z') {
|
||||
c = c - 'A' + 'a';
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
DWORD calc_checksum(BYTE *str, size_t buf_size, bool enable_tolower)
|
||||
{
|
||||
if (str == NULL) return 0;
|
||||
|
||||
DWORD checksum = 0;
|
||||
for (size_t i = 0; i < buf_size; i++) {
|
||||
checksum = rotl32a(checksum, 7);
|
||||
char c = str[i];
|
||||
if (enable_tolower) {
|
||||
c = to_lower(c);
|
||||
}
|
||||
checksum ^= c;
|
||||
}
|
||||
return checksum;
|
||||
}
|
||||
|
||||
DWORD calc_checksum(char *str, bool enable_tolower)
|
||||
{
|
||||
return calc_checksum((BYTE*)str, strlen(str), enable_tolower);
|
||||
}
|
||||
7
Etw Syscall/libpeconv-master/tests/test_case3/checksum.h
Normal file
7
Etw Syscall/libpeconv-master/tests/test_case3/checksum.h
Normal file
@@ -0,0 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
DWORD calc_checksum(char *str, bool enable_tolower);
|
||||
DWORD calc_checksum(BYTE *str, size_t buf_size, bool enable_tolower);
|
||||
|
||||
46
Etw Syscall/libpeconv-master/tests/test_case3/main.cpp
Normal file
46
Etw Syscall/libpeconv-master/tests/test_case3/main.cpp
Normal file
@@ -0,0 +1,46 @@
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <iostream>
|
||||
|
||||
#include "checksum.h"
|
||||
|
||||
bool get_rand_string(char *buffer, size_t buffer_size)
|
||||
{
|
||||
const char charset[] = "ABCDEFGHIJKLMNOPQRSTUWVXYZabcdefghijklmnopqrstuwvxyz1234567890";
|
||||
size_t charset_len = strlen(charset);
|
||||
|
||||
srand(GetTickCount());
|
||||
for (size_t i = 0; i < buffer_size - 1; i++) {
|
||||
size_t c_indx = rand() % charset_len;
|
||||
buffer[i] = charset[c_indx];
|
||||
Sleep(1000);
|
||||
}
|
||||
buffer[buffer_size - 1] = '\0';
|
||||
return true;
|
||||
}
|
||||
|
||||
bool is_password_valid(char *str)
|
||||
{
|
||||
DWORD checksum = calc_checksum(str, true);
|
||||
if (checksum == 0x1f561e6a) { //calc_checksum("my_demo_password", true);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
char str[14] = { 0 };
|
||||
get_rand_string(str, 12);
|
||||
|
||||
std::cout << str << std::endl;
|
||||
|
||||
if (is_password_valid(str)) {
|
||||
MessageBoxA(NULL, "Passed!", "Test Case 3", MB_OK);
|
||||
} else {
|
||||
std::cout << "Failed!" << std::endl;
|
||||
MessageBoxA(NULL, "Failed!", "Test Case 3", MB_OK);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user