Instagram. Кто тут.

  • Автор темы Автор темы Voldemar
  • Дата начала Дата начала

Voldemar

Client
Регистрация
13.04.2014
Сообщения
535
Реакции
62
Баллы
28
Добрый вече, Коллеги!

Подскажите пожалуйста, кто в Instagrame работает или что-то делал? Что там актуально, боты для раскрутки страницы какие нибудь, я знаю что там политика более лояльная, чем где либо. С радостью посмотрел бы чьи нибудь работы или купил бы )
 
Интересует так же, пока нет времени разбиратся.
 
Ну а чего [SOLVED]-то? :-( У меня тоже в планах написание/покупка шабов для Инстаграма. У них довольно своеобразный (чтобы не сказать: убогий) функционал, поэтому там линия раскрутки совсем другая, но никаких особых ракетных технологий там нет.
 
Префикс автоматом ставится сейчас при перемещении темы) Удалил его)
 
Для доступа к приватной API (для постинга, создание записей, и т.д.) нужен ключ, которым необходимо подписывать (HMAC SHA-256) фрагменты запросов. Сревёрсил jni библиотеку актуальной версии android приложения. На текущий момент пишу библиотеку и шаблон для ZP. Если спрос есть/будет, продам наработки или пожертвую проекту Z-Social.
 
Для доступа к приватной API (для постинга, создание записей, и т.д.) нужен ключ, которым необходимо подписывать (HMAC SHA-256) фрагменты запросов. Сревёрсил jni библиотеку актуальной версии android приложения. На текущий момент пишу библиотеку и шаблон для ZP. Если спрос есть/будет, продам наработки или пожертвую проекту Z-Social.
напишите мне пожалуйста по любы контактам. Скайп предпочтительней. Хотелось посмотреть, что у Вас есть и чем мы можем быть друг другу полезны)
 
Сревёрсил jni библиотеку актуальной версии android приложения.
Эти чтоли?
libcryptox.so
libscrambler.so
А нельзя ли их втупую подргузить в джавапроект? Я понимаю что они native, но мало ли.
Регануться получилось?
 
Эти чтоли?
libcryptox.so
libscrambler.so
А нельзя ли их втупую подргузить в джавапроект? Я понимаю что они native, но мало ли.
Разница архитектуры. Они под armeabi-v7a. Как минимум, будь оно иначе, можно было бы воспользоваться ikvm или jni4net.

Регануться получилось?
Да.

Вкратце о поведении самого приложения при регистрации (без приведения фрагментов dalvik опкодов, чисто по делу):

1. Делает GET запрос к "https://i.instagram.com/api/v1/fetch_headers/" с передачей параметров: guid (значение: вызов метода getCallingUid класса Binder ("android.os.Binder") - "ret Linux uid assigned to the process" - Ex. "6f4a7d9816634800b82efc91d568c424") и challenge_type (значение: (в данном случае) "signup").

Минимальные заголовки успешного запроса:

[TABLE="class: brtb_item_table"][TBODY][TR][TD]UserAgent:[/TD][TD]Instagram 6.12.2 Android (18/4.3; 480dpi; 540x960; motorola/verizon; en_US)[/TD][/TR]
[TR][TD]X-IG-Connection-Type:[/TD][TD]WIFI[/TD][/TR]
[TR][TD]X-IG-Capabilities:[/TD][TD]AQ==[/TD][/TR]
[TR][TD]Cookie2:[/TD][TD]$Version=1[/TD][/TR][/TBODY][/TABLE]

2. Сервер возвращает ответ с установкой след. Cookie:
  • csrftoken, (Ex. bffd7312e31708ec642f49faebfc9d21)
  • mid, (Ex. VJl4mAABAAHwq7jQ0LsRe08aoBgw)
  • ccode (Ex. RU)

Нас интересует csrftoken. Он используется при подписывании запроса (и регенерируется при каждом запросе на регистрацию (действие)). Тело самих запросов к приватной API формируется в формате JSON и отправляется POST методом (типа "application/x-www-form-urlencoded") на спец. эндпоинты (Ex. "/api/v1/users/check_username/").

Как выглядит тело подписанных запросов:

Код:
Развернуть Свернуть Копировать
signed_body=e15c9c9303092a0f8fee0eb1dcca6954440909fda1215f1563521638e98ac4e1.%7B%22username%22%3A%22SomeGuyFromZennoLab%22%2C%22_csrftoken%22%3A%22bffd7312e31708ec642f49faebfc9d21%22%7D&ig_sig_key_version=4

или

Код:
Развернуть Свернуть Копировать
signed_body=e15c9c9303092a0f8fee0eb1dcca6954440909fda1215f1563521638e98ac4e1.{"username":"SomeGuyFromZennoLab","_csrftoken":"bffd7312e31708ec642f49faebfc9d21"}

или

Код:
Развернуть Свернуть Копировать
signed_body={SIGNED_JSON_POST_DATA}.{URLENCODED JSON_POST_DATA}&ig_sig_key_version=4

{SIGNED_JSON_POST_DATA} здесь - результат работы native метода getSignatureString jni библиотеки libstrings.so (с основными зависимостями к libscrambler.so и libcryptox.so (диаграмму вызовов прикреплять не буду - интересующиеся сами разберутся, все прекрасно отлаживается с помощью gdbserver'а..:) )).

На заметку о зависимостях:
libcryptox - это библиотека в составе пакета openssl
(http://wiki.openssl.org/index.php/Libcrypto_API)
libscrambler - "солит нам на "рану" "

Для тех, кому интересно, что приблизительно происходит внутри вызываемого метода, могут начать собственный анализ с помощью IDA Pro:

3nX0aFW.png
 
Последнее редактирование:
ну все теперь держись инстаграм. Не думаю что стоит дарить такое. Замутите платный сервис типа грамблера и выдавайте только crf и что там еще... ну вы знаете.
 
Обновил пост. Удачной охоты! ;)
 
o_Oнэт слов

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

POST https://i.instagram.com/api/v1/accounts/create/ HTTP/1.1
Content-Length: 411
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Host: i.instagram.com
Connection: Keep-Alive
User-Agent: Instagram 6.3.1 Android (16/4.1.1; 120dpi; 240x320; unknown/generic; androVM for VirtualBox ('Phone' version); vbox86p; vbox86; en_US)
Cookie: ccode=UA; csrftoken=7977b47091e192752b8e16425f405cf4; mid=U-tiuQABAAGyFQLZEg6cLH01iEZk
Cookie2: $Version=1
Accept-Language: en-US
X-IG-Connection-Type: WIFI
Accept-Encoding: gzip

signed_body=78d041ca134effa15210a26eefb7e83893a0bc3401000b148c72939a456ee9b5.%7B%22_csrftoken%22%3A%227977b47091e192752b8e16425f405cf4%22%2C%22first_name%22%3A%22%22%2C%22username%22%3A%22vasjaalohp%22%2C%22email%22%3A%22vasyapetoch%40mail.ru%22%2C%22guid%22%3A%2249ca8740-e663-4ebe-bdd2-70442369f3ce%22%2C%22password%22%3A%2243as0df%22%2C%22device_id%22%3A%22android-e698bb41733d497a%22%7D&ig_sig_key_version=4





HTTP/1.1 200 OK
Server: nginx
Date: Wed, 13 Aug 2014 13:09:25 GMT
Content-Type: application/json
Content-Language: en
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Vary: Cookie, Accept-Language, Accept-Encoding
Pragma: no-cache
Cache-Control: private, no-cache, no-store, must-revalidate
Set-Cookie: csrftoken=7977b47091e192752b8e16425f405cf4; expires=Wed, 12-Aug-2015 13:09:25 GMT; Max-Age=31449600; Path=/
Set-Cookie: sessionid=IGSCdd2c38f83c7422bc97795f3c91a17ad46fbed4367169a013b657c615558f9368%3AUyEf4FBb9K7IhOPPWakkR6CDnz74XScL%3A%7B%22_auth_user_id%22%3A1460746595%2C%22_token%22%3A%221460746595%3As4Cgj3tfrNlNRylDu29otcCW1jbQXwnc%3A5db2960e57d527671c23987531b59091ac7857d7de825ed4e8769b3ceb6858a7%22%2C%22_auth_user_backend%22%3A%22accounts.backends.CaseInsensitiveModelBackend%22%2C%22last_refreshed%22%3A1407935365.499246%2C%22_tl%22%3A1%2C%22_platform%22%3A1%7D; expires=Tue, 11-Nov-2014 13:09:25 GMT; Max-Age=7776000; Path=/;HttpOnly
Set-Cookie: ds_user_id=1460746595; expires=Tue, 11-Nov-2014 13:09:25 GMT; Max-Age=7776000; Path=/
Connection: keep-alive
Content-Length: 211

{"status":"ok","created_user":{"username":"vasjaalohp","pk":1460746595,"profile_pic_url":"http:\/\/images.ak.instagram.com\/profiles\/anonymousUser.jpg","is_private":false,"full_name":""},"account_created":true}
 
Последнее редактирование:
  • Спасибо
Реакции: Radzhab
Для доступа к приватной API (для постинга, создание записей, и т.д.) нужен ключ, которым необходимо подписывать (HMAC SHA-256) фрагменты запросов. Сревёрсил jni библиотеку актуальной версии android приложения. На текущий момент пишу библиотеку и шаблон для ZP. Если спрос есть/будет, продам наработки или пожертвую проекту Z-Social.

Здравствуйте, напишите, пожалуйста, на почту sozdaibk@gmail.com или в теме - как с Вами удобнее всего связаться.
Есть большой интерес к Вашим наработкам.
 
Может топик в приват тоже перетащить? :)
Чем с авитой закончилось все помнят )
 
Да, лучше в приват. В раздел для клиентов как минимум. Информацию уже частично обнародовали в одном из блогов, где описали процесс извлечения ключа под "конкретные" запросы к сервису. Благо, далеко не универсальное решение. Хотя реакция со стороны разработчиков уже последовала, а усложнять они хорошо умеют.
 
Просто читал где-то на днях. Какой то чел выложил скрипт регистрации акков твиттера по апи, так кто-то нарегил через него 15млн акков за 2 дня, и твиттер сделал ограничение по апи
 
  • Спасибо
Реакции: insideath
Так оно обычно и бывает, ты прав. Один слив подразумевает последствия в виде кардиальной смены/усложнения алгоритмов на стороне сервиса. Тот, кто пишет "скрипт", на мой взгляд, обязан заботиться о том, что его использование будет максимально прозрачным для сервиса, т.е. соблюдение всех условий, при которых любой единичный запрос будет в максимальной степени эквивалентен "официальному". В том числе, и в их последовательности.
 
  • Спасибо
Реакции: phirelli и Radzhab
Народ, нужна помощь!!!
Мне хотелось бы узнать, как можно залогиниться, и отправить фотку с описанием в инстаграм, эмулируя android приложение выше 5 версии. Точнее интересно по каким адресам и какие данные отсылаются.

Пробовал поймать данные через Wireshark, но начиная с 5 версии instagram я ничего нормального не нашёл в перехваченных данных.

Выставляя в useragent instagram 4 версию удавалось залогиниться и отправить фото, но последнее время отправляться стало далеко не всегда.

Кто может, скиньте данные на amygreen707@gmail.com. Спасибо!
 
Для тех, кому интересно, что приблизительно происходит внутри вызываемого метода, могут начать собственный анализ с помощью IDA Pro:

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

В сети нашел пять работающих ключей, причем один из них работает для всех 4 и 5 выерсий. Начиная с 6й ключ работает только в рамках одной версии.

Декомпилировал само приложение, расставил во многих местах логирование, но ключ в открытом виде нигде не ходит, он насколько я понял формируется внутри нативной функции getSignatureString в библиотеке libstring.so.
Следующим шагом установил IDA Pro, дизассемблировал либу и теперь разбираюсь как вызвать из нее нужную нам функцию и расставит внутри нее брэйкпойнты.
Кто-нибудь может в этом помочь? Не бесплатно) пишите на mail.for.you@inbox.ru
 
Народ, нужна помощь!!!
Мне хотелось бы узнать, как можно залогиниться, и отправить фотку с описанием в инстаграм, эмулируя android приложение выше 5 версии. Точнее интересно по каким адресам и какие данные отсылаются.

Пробовал поймать данные через Wireshark, но начиная с 5 версии instagram я ничего нормального не нашёл в перехваченных данных.

Выставляя в useragent instagram 4 версию удавалось залогиниться и отправить фото, но последнее время отправляться стало далеко не всегда.

Кто может, скиньте данные на amygreen707@gmail.com. Спасибо!


В wireshark вы сможете увидеть только незашифрованные запросы, передаваемые по протоколу http.
Но даже если удастся расшифровать https, ключ подписи в них вы не найдете, увидите только саму подпись, подпись - хэш от списка передаваемых параметров и ключа подписи
 
какой скрипт?
 
Нас интересует csrftoken. Он используется при подписывании запроса (и регенерируется при каждом запросе на регистрацию (действие)).
есть одно но., данный токен, в процессе регистрации, один раз меняет значение, а это очень существенно)
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)