Сейчас на форуме: Magister Yoda, vasilevradislav (+5 невидимых)

 eXeL@B —› Крэки, обсуждения —› Взлом Instagram ключа для подписи (для iphone)
Посл.ответ Сообщение

Ранг: 12.3 (новичок)
Активность: 0.010
Статус: Участник

Создано: 08 марта 2016 20:27
· Личное сообщение · #1

Доброго дня. Пытаюсь взломать ключ для подписания запросов инстаграма (для iphone)

Где шифруется:

Code:
  1. LABEL_18:
  2.   v41 = v22;
  3.   objc_release(v55);
  4.   objc_msgSend(v8, "setObject:forKey:", v22, CFSTR("_csrftoken"));
  5.   v42 = objc_msgSend(&OBJC_CLASS___NSJSONSerialization, "stringWithJSONObject:", v8);
  6.   v43 = (void *)objc_retainAutoreleasedReturnValue(v42);
  7.   v44 = v43;
  8.   v45 = objc_msgSend(v43, "HMACWithSecret:", CFSTR("4749bda4fc1f49372dae3d79db339ce4959cfbbe"));
  9.   v46 = objc_retainAutoreleasedReturnValue(v45);
  10.   v47 = v46;
  11.   v48 = objc_msgSend(&OBJC_CLASS___NSString, "stringWithFormat:", CFSTR("%@.%@"), v46, v44);
  12.   v49 = objc_retainAutoreleasedReturnValue(v48);
  13.   v50 = objc_msgSend(&OBJC_CLASS___NSMutableDictionary, "dictionaryWithCapacity:", 2);
  14.   v51 = (void *)objc_retainAutoreleasedReturnValue(v50);
  15.   objc_msgSend(v51, "setValue:forKey:", v49, CFSTR("signed_body"));
  16.   objc_msgSend(v51, "setValue:forKey:", CFSTR("5"), CFSTR("ig_sig_key_version"));



Чем шифруется:

Code:
  1. id __cdecl -[NSString(HMAC) HMACWithSecret:](struct NSString *self, SEL a2, id a3)
  2. {
  3.   struct NSString *v3; // r5@1
  4.   int v4; // r0@1
  5.   int v5; // r1@1
  6.   void *v6; // r8@1
  7.   int v7; // r1@1
  8.   void *v8; // r0@1
  9.   const char *v9; // r0@1
  10.   const char *v14; // r5@1
  11.   int v16; // r4@1
  12.   size_t v19; // r0@1
  13.   size_t v20; // r0@1
  14.   char *v21; // r6@1
  15.   int v22; // ST04_4@2
  16.   void *v23; // r0@3
  17.   int v24; // r5@3
  18.   char v26; // [sp+8h] [bp-240h]@1
  19.   char v27; // [sp+188h] [bp-C0h]@1
  20.   int v28; // [sp+1A8h] [bp-A0h]@1
  21.   int v29; // [sp+1B8h] [bp-90h]@1
  22.   char v30; // [sp+1C8h] [bp-80h]@1
  23.   char v31; // [sp+1CBh] [bp-7Dh]@1
  24.   char v32[32]; // [sp+20Ch] [bp-3Ch]@1
  25.   int v33; // [sp+22Ch] [bp-1Ch]@1
  26.  
  27.   v3 = self;
  28.   v33 = __stack_chk_guard;
  29.   v4 = objc_retain(a3);
  30.   v6 = (void *)objc_retainAutorelease(v4, v5);
  31.   objc_msgSend(v6, "UTF8String");
  32.   v8 = (void *)objc_retainAutorelease(v3, v7);
  33.   v9 = (const char *)objc_msgSend(v8, "UTF8String");
  34.   __asm { VMOV.I32        Q8, #0 }
  35.   v14 = v9;
  36.   _R0 = &v29;
  37.   v16 = 0;
  38.   __asm { VST1.32         {D16-D17}, [R0] }
  39.   _R0 = &v28;
  40.   __asm { VST1.32         {D16-D17}, [R0] }
  41.   _R0 = &v27;
  42.   __asm
  43.   {
  44.     VST1.32         {D16-D17}, [R0]!
  45.     VST1.32         {D16-D17}, [R0]
  46.   }
  47.   v30 = 0;
  48.   sub_61C450((int)&v27);
  49.   v19 = strlen(&v27);
  50.   CCHmacInit(&v26, 2, &v27, v19);
  51.   v20 = strlen(v14);
  52.   CCHmacUpdate(&v26, v14, v20);
  53.   CCHmacFinal(&v26, v32);
  54.   v21 = &v31;
  55.   do
  56.   {
  57.     v22 = (unsigned __int8)v32[v16];
  58.     __snprintf_chk(v21, 3, 0, -1);
  59.     ++v16;
  60.     v21 += 2;
  61.   }
  62.   while ( v16 != 32 );
  63.   v23 = objc_msgSend(&OBJC_CLASS___NSString, "stringWithUTF8String:", &v31);
  64.   v24 = objc_retainAutoreleasedReturnValue(v23);
  65.   objc_release(v6);
  66.   if ( __stack_chk_guard != v33 )
  67.     __stack_chk_fail(__stack_chk_guard - v33, __stack_chk_guard);
  68.   return (id)j__objc_autoreleaseReturnValue(v24);
  69. }



Судя по
Code:
  1. CCHmacInit(&v26, 2, &v27, v19);

Шифруется kCCHmacAlgSHA256

Ключ шифрования я думал берется из этой строки
Code:
  1.  v45 = objc_msgSend(v43, "HMACWithSecret:", CFSTR("4749bda4fc1f49372dae3d79db339ce4959cfbbe"));


Беру проверочную строку
Code:
  1. {"_uuid":"0CB069DD-173E-419C-92D7-88A93C4A8FD0","password":"ocalofef","username":"mary_henderson353","device_id":"0CB069DD-173E-419C-92D7-88A93C4A8FD0","_csrftoken":"353cab5ef717502f6edd97e6b3ffddcb","login_attempt_count":0}


Пытаюсь повторить своими данными: bf0e4c1cab71540a70ab83520fd61bcfa922609542d9b8149271f00e5418aba5
Подпись от инстаграмма: 3b11237123e319d0e153548c2a337605ea4f7c5969d8fe621adb647adc7be690

Не совпадает. Что упускаю из вида?



Ранг: 60.6 (постоянный), 87thx
Активность: 0.060
Статус: Участник

Создано: 08 марта 2016 21:01
· Личное сообщение · #2

Посмотри алгоритмы генерации подписи
https://github.com/mgp25/Instagram-API

поищи ключ похожий на андроидовский, вероятно размер одинаковый



Ранг: 12.3 (новичок)
Активность: 0.010
Статус: Участник

Создано: 08 марта 2016 22:01
· Личное сообщение · #3

Есть подозрение, что 4749bda4fc1f49372dae3d79db339ce4959cfbbe это не ключ для шифрования подписи. Эта строка, используется для получения настоящего ключа из версии. Т.е. этим ключем, шифруется версия инсты и затем получившимся ключем шифруется запрос.

Подозрение то есть, но проверить пока не получается его



Ранг: 30.2 (посетитель), 18thx
Активность: 0.030
Статус: Участник

Создано: 09 марта 2016 05:31
· Личное сообщение · #4

Стоит сперва курнуть чутка доков.
https://www.instagram.com/developer/secure-api-requests/



Ранг: 12.3 (новичок)
Активность: 0.010
Статус: Участник

Создано: 09 марта 2016 07:14
· Личное сообщение · #5

Ну вообще разговор был об апи, используемом в приложениях, а не о публичном апи



Ранг: 30.2 (посетитель), 18thx
Активность: 0.030
Статус: Участник

Создано: 09 марта 2016 10:26
· Личное сообщение · #6

varenik пишет:
Доброго дня. Пытаюсь получить ключ для подписания запросов инстаграма (для iphone)


На основе чего и как он формируется описано в доках. Зачем вы мучатесь не понятно.



Ранг: 42.9 (посетитель), 13thx
Активность: 0.040
Статус: Участник

Создано: 09 марта 2016 11:47
· Личное сообщение · #7

тебе сначало нужно сформировать access_token через client / client_secret, и потом только отправить запросы к АПИ.

из доков:

"Pay attention to send an access_token of the same app (client) of the client_secret you are using to create sig parameter and X-Insta-Forwarded-For header. If those information do not match, you will receive this response:

{“code”: 403,
“error_type”: “OAuthForbiddenException”,
“error_message”: “Invalid header: Signature did not match”}"



Ранг: 12.3 (новичок)
Активность: 0.010
Статус: Участник

Создано: 09 марта 2016 12:03
· Личное сообщение · #8

Блин, это работает только для публичного апи. То которое официально дано инстаграмом.
Меня же интересует именно апи мобильных приложений, оно другое и по нем информации официальной нет



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 09 марта 2016 18:06 · Поправил: VodoleY
· Личное сообщение · #9

varenik подозреваю что мобильное АПИ платное?

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 09 марта 2016 18:12 · Поправил: SaNX
· Личное сообщение · #10

VodoleY
платные решения есть по извлечению ключа из бинарников ) да и сами применения я вижу только в коммерческих проектах. там вообще все как на ладони в плане извлечения ключа. а ТСу хватило умения кусков кода надергать, типа остальное доделают за него ))))

2ТС: в курсе, что у функций есть параметры? Как насчет того, чтоб посмотреть какие параметры передаются в функу и откуда они беруццо? Если уж и это не поможет тебе - то яхз, остается только сорцы выкладывать.

-----
SaNX





Ранг: 44.2 (посетитель), 69thx
Активность: 0.140.02
Статус: Участник

Создано: 09 марта 2016 21:51
· Личное сообщение · #11

типичные писатели ботов на питоне, бгг



Ранг: 30.2 (посетитель), 18thx
Активность: 0.030
Статус: Участник

Создано: 10 марта 2016 04:41
· Личное сообщение · #12

VodoleY пишет:
подозреваю что мобильное АПИ платное?


Да бесплатное там API, зачем ТС ключи от офф клиента не совсем понятно, ну разве что мимикрировать под него для спаминга.

Максиму что там может быть это порезанный функционал как например в api Tumblr там при помощи апи нельзя искать explicit контент в тоже время офф клиент вполне себе позволяет.


 eXeL@B —› Крэки, обсуждения —› Взлом Instagram ключа для подписи (для iphone)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати