Как декодировать base64-закодированное свойство <data>(CFData / NSData) в списке свойств? - PullRequest
1 голос
/ 28 апреля 2010

Я пытаюсь выполнить обратный инжиниринг файла настроек (не для каких-либо гнусных целей, просто для того, чтобы я мог написать сценарий его использования), в котором, помимо прочего, хранятся массивы координат.

Это фрагмент кода из списка свойств:

<dict>
  <key>$class</key>
  <dict>
    <key>CF$UID</key>
    <integer>34</integer>
  </dict>
  <key>coordArray</key>
  <data>
  AAAAAAAAAAAAAAAAAAAAAT70vS8/M7xSPwAAAD8AAAA/AAAA
  </data>
  <key>coordCount</key>
  <integer>1</integer>
</dict>

Я предполагаю, что строка данных является массивом координат (основанным на имени ключа). У меня вопрос, как я могу выяснить, какие данные хранятся там? Если я просто base64-декодирую эту строку, я получаю бред. Есть ли способ декодировать и преобразовывать его в любой формат (я думаю, NSArray)?

Ответы [ 2 ]

2 голосов
/ 28 апреля 2010

Этот словарь для меня выглядит как архив заархивированных объектов; Я бы попытался разархивировать его, используя -[NSKeyedUnarchiver unarchiveObjectWithData:] (или -unarchiveObjectWithFile:).

2 голосов
/ 28 апреля 2010

Почему бы вам просто не загрузить его как список свойств и не проверить его содержимое?

NSDictionary *plist = [NSDictionary dictionaryWithContentsOfFile:...];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...