Example #1
0
        private static object parseBinaryByteArray(int headerPosition)
        {
            int num;
            int count = Plist.getCount(headerPosition, out num);

            return(Plist.objectTable.GetRange(num, count).ToArray());
        }
Example #2
0
        private static object parseBinaryAsciiString(int headerPosition)
        {
            int         num;
            int         count = Plist.getCount(headerPosition, out num);
            List <byte> range = Plist.objectTable.GetRange(num, count);

            if (range.Count <= 0)
            {
                return(string.Empty);
            }
            return(Encoding.ASCII.GetString(range.ToArray()));
        }
Example #3
0
        private static object parseBinaryDictionary(int objRef)
        {
            int num;
            Dictionary <string, object> strs = new Dictionary <string, object>();
            List <int> nums  = new List <int>();
            int        count = 0;

            count = Plist.getCount(Plist.offsetTable[objRef], out num);
            num   = (count >= 15 ? Plist.offsetTable[objRef] + 2 + (int)Plist.RegulateNullBytes(BitConverter.GetBytes(count), 1).Length : Plist.offsetTable[objRef] + 1);
            for (int i = num; i < num + count * 2 * Plist.objRefSize; i += Plist.objRefSize)
            {
                byte[] array = Plist.objectTable.GetRange(i, Plist.objRefSize).ToArray();
                Array.Reverse(array);
                nums.Add(BitConverter.ToInt32(Plist.RegulateNullBytes(array, 4), 0));
            }
            for (int j = 0; j < count; j++)
            {
                strs.Add((string)Plist.parseBinary(nums[j]), Plist.parseBinary(nums[j + count]));
            }
            return(strs);
        }
Example #4
0
        private static object parseBinaryUnicodeString(int headerPosition)
        {
            int num;
            int count = Plist.getCount(headerPosition, out num);

            count *= 2;
            byte[] numArray = new byte[count];
            for (int i = 0; i < count; i += 2)
            {
                byte item  = Plist.objectTable.GetRange(num + i, 1)[0];
                byte item1 = Plist.objectTable.GetRange(num + i + 1, 1)[0];
                if (!BitConverter.IsLittleEndian)
                {
                    numArray[i]     = item;
                    numArray[i + 1] = item1;
                }
                else
                {
                    numArray[i]     = item1;
                    numArray[i + 1] = item;
                }
            }
            return(Encoding.Unicode.GetString(numArray));
        }