[Aide Svp]Comment faire lire a un programe .exe une archive .rar avec un mots de

Dragos83460 - 11 déc. 2012 à 14:33
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 12 déc. 2012 à 21:07
Bonjour je voudrais faire en sorte que mon serveur puisse lire les archive suivente ".rar" avec un mots de passe mais la je suis perdu de ce coter la >< si une personne pourais maider sa serais un grand merci a lui :)

Cordialement.


size_t CResFile::Read( void *ptr, size_t size, size_t n /* = 1  */ )
{
if( !m_bResouceInFile )
return CFileIO::Read( ptr, size, n );
else
{
//m_File.Seek( m_nFileCurrentPosition, CFile::begin );
size_t size_  = m_File.Read( ptr, size * n );
m_nFileCurrentPosition += size_;
// &#190;ÏȣȭÀÏ °æ¿ì &#190;ÏÈ£&#184;&#166; Ǭ&#180;Ù.
if( IsEncryption() )
{
for( int i = 0; i < (int)( size_ );  i++ )
((BYTE*)ptr)[ i ] = Decryption( m_byEncryptionKey, ((BYTE*)ptr)[ i ] );
}
#ifdef __SECURITE_A_B_FLYFF
CString strResFile	= m_File.GetFileName();
CString strFile	= m_szFileName;
if( strResFile.Find( "data.rar", 0 ) >= 0 //Fichier a Décrypter data.rar
|| strResFile.Find( "dataSub1.rar", 0 ) >= 0 //Fichier a Décrypter dataSub1.rar
|| strResFile.Find( "dataSub2.rar", 0 ) >= 0 ) //Fichier a Décrypter dataSub2.rar
if( strFile.Find( "\", 0 ) < 0 )	///Fichier a Décrypter Fin

{
char sFile[100]	= { 0,};
char sData[100]	= { 0,};
md5( sFile, m_szFileName );
md5( sData, (BYTE*)ptr, size );
map<string, string>::iterator i	= CResFile::m_mapAuth.find( sFile );
if( i != CResFile::m_mapAuth.end() )
{
if( lstrcmp( sData, i->second.data() ) != 0 )
{
TRACE( "%s est modifié !\n", m_szFileName );
::Error( "killed by CResFile::Read() %s, 3", m_szFileName );
ExitProcess( -1 );
}
}

else
{
TRACE( "%s:%s introuvable !\n", m_szFileName, sFile );
MessageBox( g_Neuz.GetSafeHwnd(), "resource not found", "error", MB_OK );
ExitProcess( -1 );
}

}
return size_;
}
}

#endif	// __SECURITE_A_B_FLYFF

5 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
11 déc. 2012 à 17:11
je déplace en c++

cantador
0
je tien a apporter un peux plus d'information ^_^

je voudrais le faire via une base de donner ^^

je pense que sa serra dans ce style la :

ACCOUNT_DBF => dbo.DECRYPTEUR_TBL =>

Id ( "1" le 1 représentera le fichier data.rar )
name ( "data.rar" représentera le fichier en question a décrypter )
password ( "azerty123" représentera le mots de passe en question )

est t'il possible de faire sa ? mon serveur marche avec SQL server 2005.

Cordialement.
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 24
11 déc. 2012 à 20:58
Salut,

ben, il suffit de faire un ::ShellExecute() ou un ::CreateProcess() avec la commande rar.exe -p pour le mot de passe et -bkg (si je me rappelle bien) pour le faire travailler en arrière plan.

Tu peux aussi créer le process dans un thread de travail.

Depuis la base de données, tu peux faire la même chose avec la procédure étendue : xp_xmdshell


Bye...
0
Tu pourais me faire un exemple ?

Merci d'avance.

Cordialement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 24
12 déc. 2012 à 21:07
Salut,

Je veux bien parceque c'est toi :

static void ProcessRAR( CString sWinRARPath, CString sCmd )
{
CString sProcess;
sProcess.Format(_T(""%s" %s"), sWinRARPath, sCmd);

STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
LPSTR lpStr = (LPSTR)sProcess.GetBuffer();

if( !::CreateProcess(0, lpStr, 0, 0, FALSE, 0, 0, 0, &si, &pi) )
{  
AfxMessageBox(_T("Echec ..."), MB_OK|MB_ICONERROR);
}
else
{
::WaitForSingleObject( pi.hProcess, INFINITE );
::CloseHandle( pi.hProcess );
::CloseHandle( pi.hThread );
}

sProcess.ReleaseBuffer();  
}


// test 
CString sWinRARPath(_T("C:\\Program Files\\WinRAR\\rar.exe"));
CString sRarCmd(_T("e -c- -ep -ep1 -inul -y -IBCK -punPassword "D:\\test.rar" "D:\\destExtract\\""));

ProcessRAR( sWinRARPath, sRarCmd );


bye...
0