BOOL CAuthDlg::OnInitDialog() { CDialog::OnInitDialog(); CWinApp* pApp = AfxGetApp(); if (pApp->m_pszRegistryKey) { CRegKey hSecKey(pApp->GetSectionKey(IDS_R_LOGINS)); if (hSecKey) { int i = 0; TCHAR username[256], password[256]; for (;;) { DWORD unlen = _countof(username); DWORD pwlen = sizeof(password); DWORD type = REG_SZ; if (ERROR_SUCCESS == RegEnumValue(hSecKey, i++, username, &unlen, 0, &type, (BYTE*)password, &pwlen)) { m_logins[username] = DEncrypt(password); m_usernamectrl.AddString(username); } else { break; } } } } else { CAutoVectorPtr<TCHAR> buff; buff.Allocate(32767/sizeof(TCHAR)); DWORD len = GetPrivateProfileSection(IDS_R_LOGINS, buff, 32767/sizeof(TCHAR), pApp->m_pszProfileName); TCHAR* p = buff; while (*p && len > 0) { CString str = p; p += str.GetLength()+1; len -= str.GetLength()+1; CAtlList<CString> sl; Explode(str, sl, '=', 2); if (sl.GetCount() == 2) { m_logins[sl.GetHead()] = DEncrypt(sl.GetTail()); m_usernamectrl.AddString(sl.GetHead()); } } } m_usernamectrl.SetFocus(); return TRUE; }
void CAuthDlg::OnBnClickedOk() { UpdateData(); if(!m_username.IsEmpty()) { CWinApp* pApp = AfxGetApp(); pApp->WriteProfileString(IDS_R_LOGINS, m_username, m_remember ? DEncrypt(m_password) : _T("")); } OnOK(); }
/* The entry point, see usage for I/O */ int main(int argc, char* argv[]) { if(argc < 2) { Usage(); exit( 0 ); } //By default we output .ctx strncpy( g_Extension, ".ctx",MAX_EXTENSION ); memset(g_ICEKey,0,MAX_ICE_KEY); int i = 1; while( i < argc ) { if( STRING_CMP( argv[i], "-h" ) == 0 ) { Usage(); exit( 0 ); } else if( STRING_CMP( argv[i], "-d" ) == 0 ) { g_Encrypt = false; } else if( STRING_CMP( argv[i], "-x" ) == 0 ) { //Extension i++; if ( strlen( argv[i] ) > MAX_EXTENSION ) { Exit("Your Extension is too big.\n"); } strncpy( g_Extension, argv[i], MAX_EXTENSION ); } else if( STRING_CMP( argv[i], "-k" ) == 0 ) { //Key i++; if ( strlen( argv[i] ) != MAX_ICE_KEY ) { Exit("Your ICE key needs to be 8 characters long.\n"); } strncpy( g_ICEKey, argv[i], MAX_ICE_KEY ); } else { break; } i++; } if(g_ICEKey[0] == '\0') { Exit("You need to specify a key.\n"); } //Parse files starting from current arg position if(argv[i] == NULL && (strlen(argv[i]) < 1)) Exit("Was not about to find a file to parse\n"); //Directory enumeration by Red Comet //Thanks Google and bvh for directory class if( strstr(argv[i],"*") != NULL ){ oslink::directory dir("."); //Create list of files inside current directory char* pch = strstr(argv[i],"."); //Get pointer to the '.' in the file extension we want char sExt[5] = ""; strncpy(sExt,pch,4); while (dir){ //Check each file to see if it matches wildcard std::string nFile; nFile = dir.next(); if( strstr(nFile.c_str(),sExt) != NULL ){ if(DEncrypt(nFile.c_str())) std::cout << "Handled file: " << nFile << " successfully." << std::endl; } } }else{ if(DEncrypt(argv[i])) std::cout << "Handled file: " << argv[i] << " successfully." << std::endl; } //End Red Comet code }