Esempio n. 1
0
bool C3dsTool::encryptFile()
{
	bool bResult = false;
	if (m_nEncryptMode == CNcch::kEncryptModeAesCtr && !m_sCounter.empty())
	{
		u8 uAesCtr[16] = {};
		bResult = FSHexToU8(m_sCounter, uAesCtr);
		if (bResult)
		{
			bResult = FEncryptAesCtrFile(m_pFileName, m_uKey, uAesCtr, 0, 0, true, m_bVerbose);
		}
	}
	else if (m_nEncryptMode == CNcch::kEncryptModeXor && m_pXorFileName != nullptr)
	{
		bResult = FEncryptXorFile(m_pFileName, m_pXorFileName, 0, 0, true, 0, m_bVerbose);
	}
	else if (CNcch::IsCxiFile(m_pFileName))
	{
		CNcch ncch;
		ncch.SetFileName(m_pFileName);
		ncch.SetVerbose(m_bVerbose);
		ncch.SetEncryptMode(m_nEncryptMode);
		ncch.SetKey(m_uKey);
		ncch.SetExtendedHeaderXorFileName(m_pExtendedHeaderXorFileName);
		ncch.SetExeFsXorFileName(m_pExeFsXorFileName);
		ncch.SetExeFsTopXorFileName(m_pExeFsTopXorFileName);
		ncch.SetRomFsXorFileName(m_pRomFsXorFileName);
		bResult = ncch.EncryptFile();
	}
	else if (CNcch::IsCfaFile(m_pFileName))
	{
		CNcch ncch;
		ncch.SetFileName(m_pFileName);
		ncch.SetVerbose(m_bVerbose);
		ncch.SetEncryptMode(m_nEncryptMode);
		ncch.SetKey(m_uKey);
		ncch.SetExeFsXorFileName(m_pExeFsXorFileName);
		ncch.SetRomFsXorFileName(m_pRomFsXorFileName);
		bResult = ncch.EncryptFile();
	}
	return bResult;
}
Esempio n. 2
0
bool C3dsTool::encryptFile()
{
	bool bResult = false;
	if (m_nEncryptMode == CNcch::kEncryptModeAesCtr && m_bCounterValid)
	{
		bResult = FEncryptAesCtrFile(m_pFileName, m_Key, m_Counter, 0, 0, true, 0);
	}
	else if (m_nEncryptMode == CNcch::kEncryptModeXor && m_pXorFileName != nullptr)
	{
		bResult = FEncryptXorFile(m_pFileName, m_pXorFileName, 0, 0, true, 0);
	}
	else if (CNcch::IsCxiFile(m_pFileName))
	{
		CNcch ncch;
		ncch.SetFileName(m_pFileName);
		ncch.SetVerbose(m_bVerbose);
		ncch.SetEncryptMode(m_nEncryptMode);
		ncch.SetKey(m_Key);
		ncch.SetExtendedHeaderXorFileName(m_pExtendedHeaderXorFileName);
		ncch.SetExeFsXorFileName(m_pExeFsXorFileName);
		ncch.SetExeFsTopXorFileName(m_pExeFsTopXorFileName);
		ncch.SetRomFsXorFileName(m_pRomFsXorFileName);
		ncch.SetExeFsTopAutoKey(m_bExeFsTopAutoKey);
		ncch.SetRomFsAutoKey(m_bRomFsAutoKey);
		bResult = ncch.EncryptFile();
	}
	else if (CNcch::IsCfaFile(m_pFileName))
	{
		CNcch ncch;
		ncch.SetFileName(m_pFileName);
		ncch.SetVerbose(m_bVerbose);
		ncch.SetEncryptMode(m_nEncryptMode);
		ncch.SetKey(m_Key);
		ncch.SetExeFsXorFileName(m_pExeFsXorFileName);
		ncch.SetRomFsXorFileName(m_pRomFsXorFileName);
		ncch.SetRomFsAutoKey(m_bRomFsAutoKey);
		bResult = ncch.EncryptFile();
	}
	return bResult;
}
Esempio n. 3
0
bool C3dsTool::createFile()
{
	bool bResult = false;
	switch (m_eFileType)
	{
	case kFileTypeCci:
		{
			CNcsd ncsd;
			ncsd.SetFileName(m_pFileName);
			ncsd.SetVerbose(m_bVerbose);
			ncsd.SetHeaderFileName(m_pHeaderFileName);
			ncsd.SetNcchFileName(m_pNcchFileName);
			ncsd.SetNotPad(m_bNotPad);
			bResult = ncsd.CreateFile();
		}
		break;
	case kFileTypeCxi:
		{
			CNcch ncch;
			ncch.SetFileName(m_pFileName);
			ncch.SetVerbose(m_bVerbose);
			ncch.SetHeaderFileName(m_pHeaderFileName);
			ncch.SetEncryptMode(m_nEncryptMode);
			ncch.SetKey(m_Key);
			ncch.SetNotUpdateExtendedHeaderHash(m_bNotUpdateExtendedHeaderHash);
			ncch.SetNotUpdateExeFsHash(m_bNotUpdateExeFsHash);
			ncch.SetNotUpdateRomFsHash(m_bNotUpdateRomFsHash);
			ncch.SetExtendedHeaderFileName(m_pExtendedHeaderFileName);
			ncch.SetLogoRegionFileName(m_pLogoRegionFileName);
			ncch.SetPlainRegionFileName(m_pPlainRegionFileName);
			ncch.SetExeFsFileName(m_pExeFsFileName);
			ncch.SetRomFsFileName(m_pRomFsFileName);
			ncch.SetExtendedHeaderXorFileName(m_pExtendedHeaderXorFileName);
			ncch.SetExeFsXorFileName(m_pExeFsXorFileName);
			ncch.SetExeFsTopXorFileName(m_pExeFsTopXorFileName);
			ncch.SetRomFsXorFileName(m_pRomFsXorFileName);
			ncch.SetExeFsTopAutoKey(m_bExeFsTopAutoKey);
			ncch.SetRomFsAutoKey(m_bRomFsAutoKey);
			bResult = ncch.CreateFile();
		}
		break;
	case kFileTypeCfa:
		{
			CNcch ncch;
			ncch.SetFileName(m_pFileName);
			ncch.SetVerbose(m_bVerbose);
			ncch.SetHeaderFileName(m_pHeaderFileName);
			ncch.SetEncryptMode(m_nEncryptMode);
			ncch.SetKey(m_Key);
			ncch.SetNotUpdateExeFsHash(m_bNotUpdateExeFsHash);
			ncch.SetNotUpdateRomFsHash(m_bNotUpdateRomFsHash);
			ncch.SetExeFsFileName(m_pExeFsFileName);
			ncch.SetRomFsFileName(m_pRomFsFileName);
			ncch.SetExeFsXorFileName(m_pExeFsXorFileName);
			ncch.SetRomFsXorFileName(m_pRomFsXorFileName);
			ncch.SetRomFsAutoKey(m_bRomFsAutoKey);
			bResult = ncch.CreateFile();
		}
		break;
	case kFileTypeExeFs:
		{
			CExeFs exeFs;
			exeFs.SetFileName(m_pFileName);
			exeFs.SetVerbose(m_bVerbose);
			exeFs.SetHeaderFileName(m_pHeaderFileName);
			exeFs.SetExeFsDirName(m_pExeFsDirName);
			exeFs.SetCompress(m_bCompress);
			bResult = exeFs.CreateFile();
		}
		break;
	case kFileTypeRomFs:
		{
			CRomFs romFs;
			romFs.SetFileName(m_pFileName);
			romFs.SetVerbose(m_bVerbose);
			romFs.SetRomFsDirName(m_pRomFsDirName);
			romFs.SetRomFsFileName(m_pRomFsFileName);
			bResult = romFs.CreateFile();
		}
		break;
	case kFileTypeBanner:
		{
			CBanner banner;
			banner.SetFileName(m_pFileName);
			banner.SetVerbose(m_bVerbose);
			banner.SetBannerDirName(m_pBannerDirName);
			bResult = banner.CreateFile();
		}
		break;
	default:
		break;
	}
	return bResult;
}
Esempio n. 4
0
bool C3dsTool::extractFile()
{
	bool bResult = false;
	switch (m_eFileType)
	{
	case kFileTypeCci:
		{
			CNcsd ncsd;
			ncsd.SetFileName(m_pFileName);
			ncsd.SetVerbose(m_bVerbose);
			ncsd.SetHeaderFileName(m_pHeaderFileName);
			ncsd.SetNcchFileName(m_pNcchFileName);
			bResult = ncsd.ExtractFile();
		}
		break;
	case kFileTypeCxi:
		{
			CNcch ncch;
			ncch.SetFileName(m_pFileName);
			ncch.SetVerbose(m_bVerbose);
			ncch.SetHeaderFileName(m_pHeaderFileName);
			ncch.SetEncryptMode(m_nEncryptMode);
			ncch.SetKey(m_uKey);
			ncch.SetExtendedHeaderFileName(m_pExtendedHeaderFileName);
			ncch.SetLogoRegionFileName(m_pLogoRegionFileName);
			ncch.SetPlainRegionFileName(m_pPlainRegionFileName);
			ncch.SetExeFsFileName(m_pExeFsFileName);
			ncch.SetRomFsFileName(m_pRomFsFileName);
			ncch.SetExtendedHeaderXorFileName(m_pExtendedHeaderXorFileName);
			ncch.SetExeFsXorFileName(m_pExeFsXorFileName);
			ncch.SetExeFsTopXorFileName(m_pExeFsTopXorFileName);
			ncch.SetRomFsXorFileName(m_pRomFsXorFileName);
			bResult = ncch.ExtractFile();
		}
		break;
	case kFileTypeCfa:
		{
			CNcch ncch;
			ncch.SetFileName(m_pFileName);
			ncch.SetVerbose(m_bVerbose);
			ncch.SetHeaderFileName(m_pHeaderFileName);
			ncch.SetEncryptMode(m_nEncryptMode);
			ncch.SetKey(m_uKey);
			ncch.SetExeFsFileName(m_pExeFsFileName);
			ncch.SetRomFsFileName(m_pRomFsFileName);
			ncch.SetExeFsXorFileName(m_pExeFsXorFileName);
			ncch.SetRomFsXorFileName(m_pRomFsXorFileName);
			bResult = ncch.ExtractFile();
		}
		break;
	case kFileTypeExefs:
		{
			CExeFs exeFs;
			exeFs.SetFileName(m_pFileName);
			exeFs.SetVerbose(m_bVerbose);
			exeFs.SetHeaderFileName(m_pHeaderFileName);
			exeFs.SetExeFsDirName(m_pExeFsDirName);
			exeFs.SetUncompress(m_bUncompress);
			bResult = exeFs.ExtractFile();
		}
		break;
	case kFileTypeRomfs:
		{
			CRomFs romFs;
			romFs.SetFileName(m_pFileName);
			romFs.SetVerbose(m_bVerbose);
			romFs.SetRomFsDirName(m_pRomFsDirName);
			bResult = romFs.ExtractFile();
		}
		break;
	case kFileTypeBanner:
		{
			CBanner banner;
			banner.SetFileName(m_pFileName);
			banner.SetVerbose(m_bVerbose);
			banner.SetBannerDirName(m_pBannerDirName);
			bResult = banner.ExtractFile();
		}
		break;
	default:
		break;
	}
	return bResult;
}