file encoding to utf-8

This commit is contained in:
d1str4ught
2025-08-19 00:30:50 +02:00
parent be56f3f31a
commit ea712bec83
241 changed files with 1753 additions and 1753 deletions

View File

@@ -257,7 +257,7 @@ bool CEterPack::Create(CEterFileDict& rkFileDict, const char * dbname, const cha
m_bReadOnly = bReadOnly;
// bReadOnly 모드가 아니고 데이터 베이스가 열린다면 생성 실패
// bReadOnly 모드가 아니고 데이터 베이스가 열린다면 생성 실패
if (!CreateIndexFile())
return false;
@@ -286,7 +286,7 @@ bool CEterPack::DecryptIV(DWORD dwPanamaKey)
if (m_stIV_Panama.length() != 32)
return false;
if (m_bDecrypedIV) // 이미 암호화가 풀렸으면 다시 처리 안함
if (m_bDecrypedIV) // 이미 암호화가 풀렸으면 다시 처리 안함
return true;
DWORD* ivs = (DWORD*)&m_stIV_Panama[0];
@@ -477,7 +477,7 @@ bool CEterPack::__BuildIndex(CEterFileDict& rkFileDict, bool bOverwrite)
m_DataPositionMap.insert(TDataPositionMap::value_type(index->filename_crc, index));
if (bOverwrite) // 서버 연동 패킹 파일은 나중에 들어오지만 최상위로 등록해야한다
if (bOverwrite) // 서버 연동 패킹 파일은 나중에 들어오지만 최상위로 등록해야한다
rkFileDict.UpdateItem(this, index);
else
rkFileDict.InsertItem(this, index);
@@ -495,7 +495,7 @@ bool CEterPack::__BuildIndex(CEterFileDict& rkFileDict, bool bOverwrite)
//
//void CEterPack::ClearDataMemoryMap()
//{
// // m_file이 data file이다...
// // m_file이 data file이다...
// m_file.Destroy();
// m_tLastAccessTime = 0;
// m_bIsDataLoaded = false;
@@ -519,8 +519,8 @@ bool CEterPack::Get(CMappedFile& out_file, const char * filename, LPCVOID * data
// m_bIsDataLoaded = true;
//}
// 기존에는 CEterPack에서 epk를 memory map에 올려놓고, 요청이 오면 그 부분을 링크해서 넘겨 줬었는데,
// 이제는 요청이 오면, 필요한 부분만 memory map에 올리고, 요청이 끝나면 해제하게 함.
// 기존에는 CEterPack에서 epk를 memory map에 올려놓고, 요청이 오면 그 부분을 링크해서 넘겨 줬었는데,
// 이제는 요청이 오면, 필요한 부분만 memory map에 올리고, 요청이 끝나면 해제하게 함.
out_file.Create(m_stDataFileName.c_str(), data, index->data_position, index->data_size);
bool bIsSecurityCheckRequired = ( index->compressed_type == COMPRESSED_TYPE_SECURITY ||
@@ -1030,15 +1030,15 @@ bool CEterPack::Put(const char * filename, LPCVOID data, long len, BYTE packType
data_crc = GetCRC32((const char *) data, len);
#endif
// 기존 데이터가 있으면..
// 기존 데이터가 있으면..
if (pIndex)
{
// 기존 data 크기가 넣을 데이터 크기를 수용할 수 있다면
// 기존 data 크기가 넣을 데이터 크기를 수용할 수 있다면
if (pIndex->real_data_size >= len)
{
++m_map_indexRefCount[pIndex->id];
// 길이가 틀리거나, checksum이 틀릴 때만 저장 한다.
// 길이가 틀리거나, checksum이 틀릴 때만 저장 한다.
if ( (pIndex->data_size != len) ||
#ifdef CHECKSUM_CHECK_MD5
(memcmp( pIndex->MD5Digest, context.digest, 16 ) != 0) )
@@ -1070,13 +1070,13 @@ bool CEterPack::Put(const char * filename, LPCVOID data, long len, BYTE packType
return true;
}
// 기존 데이터 크기가 새로 들어갈 것 보다 적다면, 새로 인덱스를 할당해
// 넣어야 한다. 원래 있던 인덱스는 비워 둔다.
// 기존 데이터 크기가 새로 들어갈 것 보다 적다면, 새로 인덱스를 할당해
// 넣어야 한다. 원래 있던 인덱스는 비워 둔다.
PushFreeIndex(pIndex);
WriteIndex(fileIndex, pIndex);
}
// 새 데이터
// 새 데이터
pIndex = NewIndex(fileIndex, filename, len);
pIndex->data_size = len;
@@ -1125,7 +1125,7 @@ bool CEterPack::CreateIndexFile()
return false;
//
// 파일이 없으므로 새로 만든다.
// 파일이 없으므로 새로 만든다.
//
fp = fopen(m_indexFileName, "wb");
@@ -1155,16 +1155,16 @@ void CEterPack::WriteIndex(CFileBase & file, TEterPackIndex * index)
}
/*
* Free Block 이란 데이터에서 지워진 부분을 말한다.
* Free Block 들은 각각 FREE_INDEX_BLOCK_SIZE (32768) 단위로 나누어져
* 리스트로 관리된다.
* Free Block 이란 데이터에서 지워진 부분을 말한다.
* Free Block 들은 각각 FREE_INDEX_BLOCK_SIZE (32768) 단위로 나누어져
* 리스트로 관리된다.
*
* 예를 들어 128k 의 데이터는
* 128 * 1024 / FREE_INDEX_BLOCK_SIZE = 4 이므로
* 최종 적으로는 m_FreeIndexList[4] 에 들어간다.
* 예를 들어 128k 의 데이터는
* 128 * 1024 / FREE_INDEX_BLOCK_SIZE = 4 이므로
* 최종 적으로는 m_FreeIndexList[4] 에 들어간다.
*
* FREE_INDEX_BLOCK_SIZE 의 최대 값은 FREE_INDEX_MAX_SIZE(512) 이다.
* 따라서 16MB 이상의 데이터는 무조건 배열의 512 위치에 들어간다.
* FREE_INDEX_BLOCK_SIZE 의 최대 값은 FREE_INDEX_MAX_SIZE(512) 이다.
* 따라서 16MB 이상의 데이터는 무조건 배열의 512 위치에 들어간다.
*/
int CEterPack::GetFreeBlockIndex(long size)
{
@@ -1201,7 +1201,7 @@ TEterPackIndex* CEterPack::NewIndex(CFileBase& file, const char* filename, long
{
TEterPackIndex* index = NULL;
int block_size = size + (DATA_BLOCK_SIZE - (size % DATA_BLOCK_SIZE));
// if ((index = FindIndex(filename))) // 이미 인덱스가 존재하는지 확인
// if ((index = FindIndex(filename))) // 이미 인덱스가 존재하는지 확인
// return index;
int blockidx = GetFreeBlockIndex(block_size);
@@ -1371,7 +1371,7 @@ const char * CEterPack::GetDBName()
void CEterPack::__CreateFileNameKey_Panama(const char * filename, BYTE * key, unsigned int keySize)
{
// 키 암호화
// 키 암호화
if (keySize != 32)
return;
@@ -1413,7 +1413,7 @@ void CEterPack::__CreateFileNameKey_Panama(const char * filename, BYTE * key, un
) // HashFilter
); // StringSource
// 만들어진 키의 첫번째 4바이트로 다음 16바이트 키 생성 알고리즘 선택
// 만들어진 키의 첫번째 4바이트로 다음 16바이트 키 생성 알고리즘 선택
unsigned int idx2 = *(unsigned int*) key;
switch (idx2 & 3)
@@ -1442,14 +1442,14 @@ void CEterPack::__CreateFileNameKey_Panama(const char * filename, BYTE * key, un
//) // HexEncoder
) // HashFilter
); // StringSource
// 키 생성 완료
// 키 생성 완료
}
bool CEterPack::__Encrypt_Panama(const char* filename, const BYTE* data, SIZE_T dataSize, CLZObject& zObj)
{
if (32 != m_stIV_Panama.length())
{
// 해커가 이 메세지를 보면 힌트를 얻을까봐 디버그에서만 출력
// 해커가 이 메세지를 보면 힌트를 얻을까봐 디버그에서만 출력
#ifdef _DEBUG
TraceError("IV not set (filename: %s)", filename);
#endif
@@ -1471,7 +1471,7 @@ bool CEterPack::__Encrypt_Panama(const char* filename, const BYTE* data, SIZE_T
__CreateFileNameKey_Panama(filename, key, sizeof(key));
Encryptor.SetKeyWithIV(key, sizeof(key), (const BYTE*) m_stIV_Panama.c_str(), 32);
// MandatoryBlockSize에 나누어 떨어지게 만들고 최대 2048 바이트만
// MandatoryBlockSize에 나누어 떨어지게 만들고 최대 2048 바이트만
DWORD cryptSize = dataSize - (dataSize % Encryptor.MandatoryBlockSize());
cryptSize = cryptSize > 2048 ? 2048 : cryptSize;
@@ -1506,7 +1506,7 @@ bool CEterPack::__Decrypt_Panama(const char* filename, const BYTE* data, SIZE_T
{
if (32 != m_stIV_Panama.length())
{
// 해커가 이 메세지를 보면 힌트를 얻을까봐 디버그에서만 출력
// 해커가 이 메세지를 보면 힌트를 얻을까봐 디버그에서만 출력
#ifdef _DEBUG
TraceError("IV not set (filename: %s)", filename);
#endif
@@ -1520,7 +1520,7 @@ bool CEterPack::__Decrypt_Panama(const char* filename, const BYTE* data, SIZE_T
__CreateFileNameKey_Panama(filename, key, sizeof(key));
Decryptor.SetKeyWithIV(key, sizeof(key), (const BYTE*) m_stIV_Panama.c_str(), 32);
// MandatoryBlockSize에 나누어 떨어지게 만들고 최대 2048 바이트만
// MandatoryBlockSize에 나누어 떨어지게 만들고 최대 2048 바이트만
DWORD cryptSize = dataSize - (dataSize % Decryptor.MandatoryBlockSize());
cryptSize = cryptSize > 2048 ? 2048 : cryptSize;

View File

@@ -139,7 +139,7 @@ class CEterPack
bool EncryptIndexFile();
bool DecryptIndexFile();
DWORD DeleteUnreferencedData(); // 몇개가 삭제 되었는지 리턴 한다.
DWORD DeleteUnreferencedData(); // 몇개가 삭제 되었는지 리턴 한다.
bool GetNames(std::vector<std::string>* retNames);
@@ -182,7 +182,7 @@ class CEterPack
std::unordered_map<DWORD, DWORD> m_map_indexRefCount;
TDataPositionMap m_DataPositionMap;
TFreeIndexList m_FreeIndexList[FREE_INDEX_MAX_SIZE + 1]; // MAX 도 억세스 하므로 + 1 크기만큼 만든다.
TFreeIndexList m_FreeIndexList[FREE_INDEX_MAX_SIZE + 1]; // MAX 도 억세스 하므로 + 1 크기만큼 만든다.
std::string m_stDataFileName;
std::string m_stPathName;
@@ -198,8 +198,8 @@ class CEterPack
//private:
// bool m_bIsDataLoaded;
// // 그냥 time_t를 쓰면, 32bit time_t를 사용하는 소스에서는,
// // CEterPack의 size를 실제 size - 4로 인식하기 때문에 문제가 발생할 수 있다.
// // 그냥 time_t를 쓰면, 32bit time_t를 사용하는 소스에서는,
// // CEterPack의 size를 실제 size - 4로 인식하기 때문에 문제가 발생할 수 있다.
// __time64_t m_tLastAccessTime;
//public:
// __time64_t GetLastAccessTime() { return m_tLastAccessTime; }

View File

@@ -53,7 +53,7 @@ void CEterPackManager::SetRelativePathMode()
}
// StringPath std::string 버전
// StringPath std::string 버전
int CEterPackManager::ConvertFileName(const char * c_szFileName, std::string & rstrFileName)
{
rstrFileName = c_szFileName;
@@ -231,7 +231,7 @@ bool CEterPackManager::GetFromPack(CMappedFile & rMappedFile, const char * c_szF
return false;
}
const time_t g_tCachingInterval = 10; // 10초
const time_t g_tCachingInterval = 10; // 10초
void CEterPackManager::ArrangeMemoryMappedPack()
{
//time_t curTime = time(NULL);
@@ -255,8 +255,8 @@ bool CEterPackManager::GetFromFile(CMappedFile & rMappedFile, const char * c_szF
#ifndef _DEBUG
//const char *pcExt = strchr(c_szFileName, '.');
//if (pcExt &&
// _strnicmp(pcExt, ".py", 3) == 0 && // python 스크립트 중
// stricmp(c_szFileName, "logininfo.py") != 0 && // 로그인 정보 파일이 아니고
// _strnicmp(pcExt, ".py", 3) == 0 && // python 스크립트 중
// stricmp(c_szFileName, "logininfo.py") != 0 && // 로그인 정보 파일이 아니고
// strnicmp(c_szFileName, "locale", 6) != 0
// )
//{
@@ -294,7 +294,7 @@ bool CEterPackManager::isExistInPack(const char * c_szFileName)
return pkFileItem->pkPack->IsExist(strFileName.c_str());
}
// NOTE : 매치 되는 팩이 없다면 false - [levites]
// NOTE : 매치 되는 팩이 없다면 false - [levites]
return false;
}
@@ -452,7 +452,7 @@ void CEterPackManager::RetrieveHybridCryptPackKeys(const BYTE *pStream)
{
int iRecvedCryptKeySize = 0;
memcpy( &iRecvedCryptKeySize, pStream + iMemOffset, sizeof(iRecvedCryptKeySize) );
iRecvedCryptKeySize -= sizeof(dwPackageNameHash); // 서버에서 받은 key stream에는 filename hash가 포함되어 있으므로, hash 사이즈 만큼 배줌.
iRecvedCryptKeySize -= sizeof(dwPackageNameHash); // 서버에서 받은 key stream에는 filename hash가 포함되어 있으므로, hash 사이즈 만큼 배줌.
iMemOffset += sizeof(iRecvedCryptKeySize);
memcpy( &dwPackageNameHash, pStream + iMemOffset, sizeof(dwPackageNameHash) );

View File

@@ -66,12 +66,12 @@ class CEterPackManager : public CSingleton<CEterPackManager>
//THEMIDA
void RetrieveHybridCryptPackSDB( const BYTE* pStream );
// 메모리에 매핑된 팩들 가운데, 정리해야할 것들 정리.
// 메모리에 매핑된 팩들 가운데, 정리해야할 것들 정리.
public:
void ArrangeMemoryMappedPack();
protected:
int ConvertFileName(const char * c_szFileName, std::string & rstrFileName); // StringPath std::string 버전
int ConvertFileName(const char * c_szFileName, std::string & rstrFileName); // StringPath std::string 버전
bool CompareName(const char * c_szDirectoryName, DWORD iLength, const char * c_szFileName);
CEterPack* FindPack(const char* c_szPathName);