From f3a714007af19aacf50c28f8c7bbe46f0a558c3e Mon Sep 17 00:00:00 2001 From: Adamo08 Date: Tue, 30 Dec 2025 19:55:32 +0100 Subject: [PATCH 01/13] Add 2FA support and improve error handling - Add two-factor authentication handling for Instagram login - Remove deprecated IGTV feed download causing errors - Add error handling for post and highlight downloads - Update .gitignore for Python/Instaloader project --- .gitignore | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ instaOSINT.py | 29 +++++++++++++++-------- 2 files changed, 83 insertions(+), 10 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..59b8ad5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,64 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# Virtual Environments +venv/ +env/ +ENV/ +env.bak/ +venv.bak/ + +# Instaloader Session Files +session-* +*.session + +# Downloaded Instagram Content +*/ +!asset/ +!.vscode/ +*.jpg +*.png +*.mp4 +*.json.xz +*.txt.xz + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ +.DS_Store + +# Credentials (if any config files are added later) +config.ini +.env +credentials.json + +# Logs +*.log + +# OS +.DS_Store +Thumbs.db diff --git a/instaOSINT.py b/instaOSINT.py index 6760e16..5d3bbfd 100644 --- a/instaOSINT.py +++ b/instaOSINT.py @@ -52,7 +52,14 @@ def osintig(US,PW): {Wh} <----- {Gr}O S I N T {Wh}I N S T A G R A M {Wh}B Y {Gr}H U N B Y T S {Wh}-----> """) IG_INSTA = instaloader.Instaloader() - IG_INSTA.login(US, PW) + + try: + IG_INSTA.login(US, PW) + except instaloader.exceptions.TwoFactorAuthRequiredException: + print(f"\n {Wh}[ {Gr}! {Wh}] {Ye}Two-factor authentication required!") + two_factor_code = input(f" {Wh}[ {Gr}+ {Wh}] INPUT 2FA CODE : {Re}") + IG_INSTA.two_factor_login(two_factor_code) + if not IG_INSTA.context.is_logged_in: IG_INSTA.context.log(f"\n {Wh}[ {Gr}+ {Wh}] {Re}Login failed!, you account wrong") else: @@ -80,17 +87,19 @@ def osintig(US,PW): print(profile_pic) print() print(f" {Wh}[ {Gr}+ {Wh}]{Wh} Download {Gr}target post : ") - for post in profile.get_posts(): - IG_INSTA.download_post(post, target=profile.username) - print() - print(f" {Wh}[ {Gr}+ {Wh}]{Wh} Download {Gr}igtv post : ") - for post in IG_INSTA.get_feed_posts(): - IG_INSTA.download_post(post, target=profile.username) + try: + for post in profile.get_posts(): + IG_INSTA.download_post(post, target=profile.username) + except Exception as e: + print(f" {Wh}[ {Ye}! {Wh}] {Ye}Error downloading posts: {str(e)}") print() print(f" {Wh}[ {Gr}+ {Wh}]{Wh} Download {Gr}highlights post : ") - for highlight in IG_INSTA.get_highlights(profile): - for post in highlight.get_items(): - IG_INSTA.download_storyitem(post, target=profile.username) + try: + for highlight in IG_INSTA.get_highlights(profile): + for post in highlight.get_items(): + IG_INSTA.download_storyitem(post, target=profile.username) + except Exception as e: + print(f" {Wh}[ {Ye}! {Wh}] {Ye}Error downloading highlights: {str(e)}") print() def animasi(): From e1cf949ab76b85f973367ff05ae1b3c9a1c93b60 Mon Sep 17 00:00:00 2001 From: Adamo08 Date: Tue, 30 Dec 2025 20:54:54 +0100 Subject: [PATCH 02/13] Fix: Display menu options before prompting for user choice - Call display_features_menu() before get_menu_choice() in get_features_config() - Call display_export_menu() before get_menu_choice() in get_export_format() - Now users can see all available options before making a selection - Fixes issue where validation errors showed without showing options --- menu.py | 167 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 menu.py diff --git a/menu.py b/menu.py new file mode 100644 index 0000000..bbea242 --- /dev/null +++ b/menu.py @@ -0,0 +1,167 @@ +"""Interactive menu system for Instagram OSINT""" + +from utils import print_header, print_info, print_success, print_error, print_warning, Wh, Gr, Ye, Cy, Re + +def display_main_menu(): + """Display main menu options""" + print_header("MAIN MENU") + print(f""" + {Wh}[{Gr}1{Wh}] {Cy}Single Profile Analysis + {Wh}[{Gr}2{Wh}] {Cy}Batch Profile Analysis (Multiple Targets) + {Wh}[{Gr}3{Wh}] {Cy}Compare Profiles + {Wh}[{Gr}4{Wh}] {Cy}View Database History + {Wh}[{Gr}5{Wh}] {Re}Exit + """) + +def get_menu_choice(prompt, valid_choices): + """Get user menu choice with validation""" + while True: + choice = input(f"\n {Wh}[{Gr}?{Wh}] {prompt}: {Ye}").strip() + if choice in valid_choices: + return choice + print_error(f"Invalid choice. Please select from {', '.join(valid_choices)}") + +def display_features_menu(): + """Display features configuration menu""" + print_header("FEATURES CONFIGURATION") + print(f""" + {Wh}Select features to enable: + + {Wh}[{Gr}1{Wh}] {Cy}Download Posts & Highlights {Ye}(may take time) + {Wh}[{Gr}2{Wh}] {Cy}Run Analytics {Ye}(engagement, risk scoring) + {Wh}[{Gr}3{Wh}] {Cy}Save to Database {Ye}(historical tracking) + {Wh}[{Gr}4{Wh}] {Cy}All Features + {Wh}[{Gr}5{Wh}] {Cy}None (Quick mode - basic info only) + """) + +def get_features_config(): + """Get features configuration from user""" + display_features_menu() # Show the menu before asking + choice = get_menu_choice("Choose features option", ['1', '2', '3', '4', '5']) + + config = { + 'download': False, + 'analyze': False, + 'db': False, + 'no_download': True + } + + if choice == '1': + config['download'] = True + config['no_download'] = False + elif choice == '2': + config['analyze'] = True + elif choice == '3': + config['db'] = True + elif choice == '4': + config['download'] = True + config['analyze'] = True + config['db'] = True + config['no_download'] = False + # Choice 5 keeps defaults (quick mode) + + return config + +def display_export_menu(): + """Display export format menu""" + print_header("EXPORT FORMATS") + print(f""" + {Wh}Select export format(s): + + {Wh}[{Gr}1{Wh}] {Cy}JSON only {Ye}(structured data) + {Wh}[{Gr}2{Wh}] {Cy}CSV only {Ye}(spreadsheet format) + {Wh}[{Gr}3{Wh}] {Cy}HTML only {Ye}(visual report) + {Wh}[{Gr}4{Wh}] {Cy}JSON + CSV + {Wh}[{Gr}5{Wh}] {Cy}JSON + HTML + {Wh}[{Gr}6{Wh}] {Cy}All formats {Ye}(JSON + CSV + HTML) + """) + +def get_export_format(): + """Get export format choice from user""" + display_export_menu() # Show the menu before asking + choice = get_menu_choice("Choose export format", ['1', '2', '3', '4', '5', '6']) + + format_map = { + '1': 'json', + '2': 'csv', + '3': 'html', + '4': 'json,csv', + '5': 'json,html', + '6': 'json,csv,html' + } + + return format_map[choice] + +def get_target_input(): + """Get single target username from user""" + print_info("Enter target username to analyze") + target = input(f"\n {Wh}[{Gr}>{Wh}] {Cy}Target username: {Ye}").strip() + return target + +def get_multiple_targets(): + """Get multiple target usernames from user""" + print_info("Enter target usernames (one per line, empty line to finish)") + targets = [] + count = 1 + + while True: + target = input(f" {Wh}[{Gr}{count}{Wh}] {Cy}Target: {Ye}").strip() + if not target: + break + targets.append(target) + count += 1 + + return targets + +def get_limit_options(): + """Get follower/following limit options""" + print_header("DATA LIMITS") + print(f""" + {Wh}Set data fetching limits (for performance): + + {Wh}[{Gr}1{Wh}] {Cy}No limits {Ye}(fetch all - may be slow) + {Wh}[{Gr}2{Wh}] {Cy}Limit to 100 each + {Wh}[{Gr}3{Wh}] {Cy}Limit to 500 each + {Wh}[{Gr}4{Wh}] {Cy}Limit to 1000 each + {Wh}[{Gr}5{Wh}] {Cy}Custom limits + """) + + choice = get_menu_choice("Choose limit option", ['1', '2', '3', '4', '5']) + + if choice == '1': + return None, None + elif choice == '2': + return 100, 100 + elif choice == '3': + return 500, 500 + elif choice == '4': + return 1000, 1000 + elif choice == '5': + try: + followers = int(input(f" {Wh}[{Gr}?{Wh}] {Cy}Followers limit: {Ye}")) + following = int(input(f" {Wh}[{Gr}?{Wh}] {Cy}Following limit: {Ye}")) + return followers, following + except ValueError: + print_warning("Invalid number, using no limits") + return None, None + +def confirm_action(message): + """Ask user to confirm action""" + response = input(f"\n {Wh}[{Ye}?{Wh}] {message} {Ye}(y/n): {Wh}").strip().lower() + return response in ['y', 'yes'] + +def display_summary(config): + """Display configuration summary before processing""" + print_header("CONFIGURATION SUMMARY") + print(f"\n {Cy}Features:") + print(f" {Wh}• Download Posts: {Gr if config.get('download') else Re}{'Yes' if config.get('download') else 'No'}") + print(f" {Wh}• Run Analytics: {Gr if config.get('analyze') else Re}{'Yes' if config.get('analyze') else 'No'}") + print(f" {Wh}• Save to Database: {Gr if config.get('db') else Re}{'Yes' if config.get('db') else 'No'}") + + if config.get('limit_followers') or config.get('limit_following'): + print(f"\n {Cy}Limits:") + print(f" {Wh}• Followers: {Ye}{config.get('limit_followers', 'All')}") + print(f" {Wh}• Following: {Ye}{config.get('limit_following', 'All')}") + + print(f"\n {Cy}Export Format: {Ye}{config.get('export_format', 'json')}") + print() From e6d8c64f3ac5cfac9945174a5bc2116aa4619717 Mon Sep 17 00:00:00 2001 From: Adamo08 Date: Tue, 30 Dec 2025 21:17:36 +0100 Subject: [PATCH 03/13] Refactor: Clean up .gitignore for downloaded Instagram content --- .gitignore | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 59b8ad5..40b8278 100644 --- a/.gitignore +++ b/.gitignore @@ -33,13 +33,9 @@ venv.bak/ session-* *.session -# Downloaded Instagram Content -*/ -!asset/ -!.vscode/ -*.jpg -*.png -*.mp4 +# Downloaded Instagram Content (in specific folder) +downloads/ +instagram_content/ *.json.xz *.txt.xz From b6dc2a63c005640f90ca811dd1942d40c201f34a Mon Sep 17 00:00:00 2001 From: Adamo08 Date: Tue, 30 Dec 2025 21:18:41 +0100 Subject: [PATCH 04/13] Add screenshots for login, 2FA prompt, features config, export format, data limits, config summary, processing, and HTML report --- screenshots/01_login_screen.png | Bin 0 -> 26472 bytes screenshots/02_2fa_prompt.png | Bin 0 -> 41024 bytes screenshots/03_features_config.png | Bin 0 -> 34037 bytes screenshots/04_export_format.png | Bin 0 -> 29488 bytes screenshots/05_data_limits.png | Bin 0 -> 22612 bytes screenshots/06_config_summary.png | Bin 0 -> 25629 bytes screenshots/07_processing.png | Bin 0 -> 21808 bytes screenshots/08_html_report.png | Bin 0 -> 63554 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 screenshots/01_login_screen.png create mode 100644 screenshots/02_2fa_prompt.png create mode 100644 screenshots/03_features_config.png create mode 100644 screenshots/04_export_format.png create mode 100644 screenshots/05_data_limits.png create mode 100644 screenshots/06_config_summary.png create mode 100644 screenshots/07_processing.png create mode 100644 screenshots/08_html_report.png diff --git a/screenshots/01_login_screen.png b/screenshots/01_login_screen.png new file mode 100644 index 0000000000000000000000000000000000000000..e1509418dfd765c4cc245b7a2a8ee17c4861ae85 GIT binary patch literal 26472 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 gIK=7y$H&j?CU6cNT5;dYe(EtDd literal 0 HcmV?d00001 diff --git a/screenshots/04_export_format.png b/screenshots/04_export_format.png new file mode 100644 index 0000000000000000000000000000000000000000..b7b284ffeef3588c363bb5610e7005f6d93d0d2d GIT binary patch literal 29488 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 literal 0 HcmV?d00001 diff --git a/screenshots/05_data_limits.png b/screenshots/05_data_limits.png new file mode 100644 index 0000000000000000000000000000000000000000..1665ef80cc7b37506745e493a2ab779c29d81f13 GIT binary patch literal 22612 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 literal 0 HcmV?d00001 diff --git a/screenshots/08_html_report.png b/screenshots/08_html_report.png new file mode 100644 index 0000000000000000000000000000000000000000..4771c4d568674b245e465c92628a619e40cf00db GIT binary patch literal 63554 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 SCVyg}n~IXAB23;q Date: Tue, 30 Dec 2025 21:19:14 +0100 Subject: [PATCH 05/13] Add CLI argument parser with configuration options for Instagram OSINT tool --- cli.py | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 cli.py diff --git a/cli.py b/cli.py new file mode 100644 index 0000000..e3e6c71 --- /dev/null +++ b/cli.py @@ -0,0 +1,82 @@ +"""CLI argument parser and configuration""" + +import argparse + +def get_args(): + """Parse command line arguments""" + parser = argparse.ArgumentParser( + description='Instagram OSINT Tool - Gather intelligence on Instagram profiles', + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + # Interactive mode + python instaOSINT.py + + # Specify account and target + python instaOSINT.py -u myusername -p mypassword -t targetusername + + # Batch mode with multiple targets + python instaOSINT.py -u myusername -p mypassword -f targets.txt + + # Export to specific format + python instaOSINT.py -u myusername -p mypassword -t targetusername -o html,json,csv + + # Store data in database and analyze + python instaOSINT.py -u myusername -p mypassword -t targetusername --db --analyze + """ + ) + + # Authentication arguments + auth_group = parser.add_argument_group('Authentication') + auth_group.add_argument('-u', '--username', help='Instagram username') + auth_group.add_argument('-p', '--password', help='Instagram password') + auth_group.add_argument('--no-session', action='store_true', help='Do not use saved session') + + # Target arguments + target_group = parser.add_argument_group('Target') + target_group.add_argument('-t', '--target', help='Single target username') + target_group.add_argument('-f', '--file', help='File with list of target usernames (one per line)') + + # Output arguments + output_group = parser.add_argument_group('Output') + output_group.add_argument('-o', '--output', default='json', + help='Export format(s): json, csv, html (comma-separated, default: json)') + output_group.add_argument('-d', '--dir', default='.', help='Output directory (default: current)') + + # Feature arguments + feature_group = parser.add_argument_group('Features') + feature_group.add_argument('--db', action='store_true', help='Store data in database') + feature_group.add_argument('--analyze', action='store_true', help='Run analytics and calculate metrics') + feature_group.add_argument('--compare', action='store_true', help='Compare multiple profiles') + feature_group.add_argument('--no-download', action='store_true', help='Skip downloading posts/highlights') + + # Performance arguments + perf_group = parser.add_argument_group('Performance') + perf_group.add_argument('--limit-followers', type=int, help='Limit followers to fetch (default: all)') + perf_group.add_argument('--limit-following', type=int, help='Limit following to fetch (default: all)') + perf_group.add_argument('--quiet', action='store_true', help='Minimize console output') + + return parser.parse_args() + +def validate_args(args): + """Validate parsed arguments""" + errors = [] + + if not args.target and not args.file: + errors.append("Either --target or --file must be specified") + + if args.target and args.file: + errors.append("Cannot specify both --target and --file") + + valid_formats = ['json', 'csv', 'html'] + formats = [f.strip().lower() for f in args.output.split(',')] + invalid = [f for f in formats if f not in valid_formats] + if invalid: + errors.append(f"Invalid output format(s): {', '.join(invalid)}") + + if errors: + for error in errors: + print(f"Error: {error}") + return False + + return True From c57343299b438924bf80bfc30b58f6d1a9038ca0 Mon Sep 17 00:00:00 2001 From: Adamo08 Date: Tue, 30 Dec 2025 21:19:28 +0100 Subject: [PATCH 06/13] Add ProfileAnalytics and ComparativeAnalytics classes for Instagram profile metrics analysis --- analyzer.py | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 analyzer.py diff --git a/analyzer.py b/analyzer.py new file mode 100644 index 0000000..d27dc8b --- /dev/null +++ b/analyzer.py @@ -0,0 +1,113 @@ +"""Analytics engine for Instagram profiles""" + +class ProfileAnalytics: + """Analyze Instagram profile metrics""" + + def __init__(self, profile): + self.profile = profile + + def get_engagement_rate(self): + """Calculate estimated engagement rate (followers / posts)""" + if self.profile.mediacount == 0: + return 0 + return round(self.profile.followers / self.profile.mediacount, 2) + + def get_follower_following_ratio(self): + """Calculate follower to following ratio""" + if self.profile.followees == 0: + return self.profile.followers + return round(self.profile.followers / self.profile.followees, 2) + + def get_profile_risk_score(self): + """Calculate risk score (higher = more suspicious) + Based on: low engagement, many following, few followers, no posts""" + risk = 0 + + # High following, low followers = risky + if self.profile.followees > self.profile.followers * 2: + risk += 30 + + # No posts but many followers = suspicious + if self.profile.mediacount == 0 and self.profile.followers > 100: + risk += 25 + + # Low engagement + if self.profile.mediacount > 0: + engagement = self.get_engagement_rate() + if engagement < 1: + risk += 20 + + # Likely bot indicators + if self.profile.is_private == False and self.profile.is_business_account == False and self.profile.followers > 1000: + if self.profile.mediacount == 0: + risk += 25 + + return min(risk, 100) + + def get_profile_type(self): + """Classify profile type""" + if self.profile.is_business_account: + return "Business Account" + if self.profile.is_private: + return "Private Account" + if self.profile.followers > 10000: + return "Influencer" + if self.profile.mediacount == 0: + return "Inactive/Potential Bot" + return "Regular Account" + + def get_analytics_summary(self): + """Get complete analytics summary""" + return { + "engagement_rate": self.get_engagement_rate(), + "follower_ratio": self.get_follower_following_ratio(), + "risk_score": self.get_profile_risk_score(), + "profile_type": self.get_profile_type(), + "posts_per_follower": round(self.profile.mediacount / max(self.profile.followers, 1), 4), + "following_percentage": round((self.profile.followees / max(self.profile.followers, 1)) * 100, 2) if self.profile.followers > 0 else 0 + } + + +class ComparativeAnalytics: + """Compare multiple profiles""" + + @staticmethod + def compare_profiles(profile_list): + """Compare multiple profiles and return insights""" + if not profile_list: + return {} + + analytics_list = [ProfileAnalytics(p) for p in profile_list] + + total_followers = sum(p.profile.followers for p in profile_list) + total_following = sum(p.profile.followees for p in profile_list) + total_posts = sum(p.profile.mediacount for p in profile_list) + + return { + "profile_count": len(profile_list), + "total_followers": total_followers, + "total_following": total_following, + "total_posts": total_posts, + "avg_followers": round(total_followers / len(profile_list), 0), + "avg_following": round(total_following / len(profile_list), 0), + "avg_posts": round(total_posts / len(profile_list), 0), + "profiles": [a.get_analytics_summary() for a in analytics_list] + } + + @staticmethod + def find_mutual_followers(followers_list1, followers_list2): + """Find mutual followers between two follower lists""" + usernames1 = {f["username"] for f in followers_list1} + usernames2 = {f["username"] for f in followers_list2} + + mutual = usernames1.intersection(usernames2) + + # Reconstruct mutual follower objects + mutual_followers = [f for f in followers_list1 if f["username"] in mutual] + + return { + "mutual_count": len(mutual), + "mutual_followers": mutual_followers, + "percentage_of_first": round((len(mutual) / len(followers_list1)) * 100, 2) if followers_list1 else 0, + "percentage_of_second": round((len(mutual) / len(followers_list2)) * 100, 2) if followers_list2 else 0 + } From c3b2b182cc29458fefde7890c29c8554901bb6db Mon Sep 17 00:00:00 2001 From: Adamo08 Date: Tue, 30 Dec 2025 21:19:40 +0100 Subject: [PATCH 07/13] Add database management for Instagram OSINT with profile, followers, and analytics tables --- database.py | 239 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 239 insertions(+) create mode 100644 database.py diff --git a/database.py b/database.py new file mode 100644 index 0000000..8347c75 --- /dev/null +++ b/database.py @@ -0,0 +1,239 @@ +"""Database management for Instagram OSINT""" + +import sqlite3 +from datetime import datetime +import json + +class OsintDatabase: + """SQLite database for storing OSINT data""" + + def __init__(self, db_name="osint_data.db"): + self.db_name = db_name + self.init_database() + + def init_database(self): + """Initialize database with required tables""" + conn = sqlite3.connect(self.db_name) + cursor = conn.cursor() + + # Profiles table + cursor.execute(''' + CREATE TABLE IF NOT EXISTS profiles ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT UNIQUE, + user_id INTEGER, + full_name TEXT, + biography TEXT, + external_url TEXT, + is_private BOOLEAN, + is_business BOOLEAN, + business_category TEXT, + followers INTEGER, + following INTEGER, + posts INTEGER, + profile_pic_url TEXT, + first_seen TIMESTAMP, + last_updated TIMESTAMP + ) + ''') + + # Followers table + cursor.execute(''' + CREATE TABLE IF NOT EXISTS followers ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + profile_username TEXT, + follower_username TEXT, + follower_id INTEGER, + follower_full_name TEXT, + recorded_at TIMESTAMP, + FOREIGN KEY(profile_username) REFERENCES profiles(username) + ) + ''') + + # Historical data table + cursor.execute(''' + CREATE TABLE IF NOT EXISTS profile_history ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT, + followers_count INTEGER, + following_count INTEGER, + posts_count INTEGER, + recorded_at TIMESTAMP, + FOREIGN KEY(username) REFERENCES profiles(username) + ) + ''') + + # Analytics cache table + cursor.execute(''' + CREATE TABLE IF NOT EXISTS analytics_cache ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT, + engagement_rate REAL, + follower_ratio REAL, + risk_score INTEGER, + profile_type TEXT, + recorded_at TIMESTAMP, + FOREIGN KEY(username) REFERENCES profiles(username) + ) + ''') + + conn.commit() + conn.close() + + def save_profile(self, profile): + """Save profile data to database""" + conn = sqlite3.connect(self.db_name) + cursor = conn.cursor() + + try: + cursor.execute(''' + INSERT OR REPLACE INTO profiles + (username, user_id, full_name, biography, external_url, is_private, is_business, + business_category, followers, following, posts, profile_pic_url, last_updated) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + ''', ( + profile.username, + profile.userid, + profile.full_name, + profile.biography, + profile.external_url, + profile.is_private, + profile.is_business_account, + profile.business_category_name, + profile.followers, + profile.followees, + profile.mediacount, + profile.profile_pic_url, + datetime.now() + )) + + # Also record in history + cursor.execute(''' + INSERT INTO profile_history + (username, followers_count, following_count, posts_count, recorded_at) + VALUES (?, ?, ?, ?, ?) + ''', ( + profile.username, + profile.followers, + profile.followees, + profile.mediacount, + datetime.now() + )) + + conn.commit() + return True + except Exception as e: + print(f"Error saving profile: {e}") + return False + finally: + conn.close() + + def save_followers(self, profile_username, followers_list): + """Save followers to database""" + conn = sqlite3.connect(self.db_name) + cursor = conn.cursor() + + try: + for follower in followers_list: + cursor.execute(''' + INSERT INTO followers + (profile_username, follower_username, follower_id, follower_full_name, recorded_at) + VALUES (?, ?, ?, ?, ?) + ''', ( + profile_username, + follower.get("username"), + follower.get("user_id"), + follower.get("full_name"), + datetime.now() + )) + + conn.commit() + return True + except Exception as e: + print(f"Error saving followers: {e}") + return False + finally: + conn.close() + + def save_analytics(self, username, analytics_data): + """Save analytics results""" + conn = sqlite3.connect(self.db_name) + cursor = conn.cursor() + + try: + cursor.execute(''' + INSERT INTO analytics_cache + (username, engagement_rate, follower_ratio, risk_score, profile_type, recorded_at) + VALUES (?, ?, ?, ?, ?, ?) + ''', ( + username, + analytics_data.get("engagement_rate"), + analytics_data.get("follower_ratio"), + analytics_data.get("risk_score"), + analytics_data.get("profile_type"), + datetime.now() + )) + + conn.commit() + return True + except Exception as e: + print(f"Error saving analytics: {e}") + return False + finally: + conn.close() + + def get_profile_history(self, username): + """Get historical data for a profile""" + conn = sqlite3.connect(self.db_name) + cursor = conn.cursor() + + try: + cursor.execute(''' + SELECT followers_count, following_count, posts_count, recorded_at + FROM profile_history + WHERE username = ? + ORDER BY recorded_at + ''', (username,)) + + results = cursor.fetchall() + return [ + { + "followers": r[0], + "following": r[1], + "posts": r[2], + "recorded_at": r[3] + } + for r in results + ] + finally: + conn.close() + + def get_growth_stats(self, username): + """Calculate growth stats from history""" + history = self.get_profile_history(username) + + if len(history) < 2: + return None + + first = history[0] + last = history[-1] + + return { + "followers_change": last["followers"] - first["followers"], + "following_change": last["following"] - first["following"], + "posts_change": last["posts"] - first["posts"], + "data_points": len(history), + "first_recorded": first["recorded_at"], + "last_recorded": last["recorded_at"] + } + + def get_all_profiles(self): + """Get all stored profiles""" + conn = sqlite3.connect(self.db_name) + cursor = conn.cursor() + + try: + cursor.execute('SELECT username FROM profiles') + return [row[0] for row in cursor.fetchall()] + finally: + conn.close() From 5db0ee9ba3a240b74854c7f74d09d34f925bf6c4 Mon Sep 17 00:00:00 2001 From: Adamo08 Date: Tue, 30 Dec 2025 21:20:13 +0100 Subject: [PATCH 08/13] Add export functionality for JSON, CSV, and HTML formats --- exporter.py | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 244 insertions(+) create mode 100644 exporter.py diff --git a/exporter.py b/exporter.py new file mode 100644 index 0000000..e728781 --- /dev/null +++ b/exporter.py @@ -0,0 +1,244 @@ +"""Export functionality for multiple formats""" + +import json +import csv +from datetime import datetime +from utils import Gr, Re, Wh, Ye + +class Exporter: + """Handle exports in multiple formats""" + + @staticmethod + def export_json(profile, followers_list, followees_list, username, analytics=None): + """Export to JSON format""" + data = { + "export_date": datetime.now().isoformat(), + "profile": { + "username": profile.username, + "full_name": profile.full_name, + "user_id": profile.userid, + "biography": profile.biography, + "external_url": profile.external_url, + "is_private": profile.is_private, + "is_business_account": profile.is_business_account, + "business_category": profile.business_category_name, + "followers_count": profile.followers, + "following_count": profile.followees, + "posts_count": profile.mediacount, + "profile_pic_url": profile.profile_pic_url + }, + "followers": followers_list, + "following": followees_list + } + + if analytics: + data["analytics"] = analytics + + filename = f"{username}_data_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json" + with open(filename, 'w', encoding='utf-8') as f: + json.dump(data, f, indent=2, ensure_ascii=False) + + return filename + + @staticmethod + def export_csv(profile, followers_list, followees_list, username): + """Export to CSV format""" + timestamp = datetime.now().strftime('%Y%m%d_%H%M%S') + + # Profile CSV + profile_file = f"{username}_profile_{timestamp}.csv" + with open(profile_file, 'w', newline='', encoding='utf-8') as f: + writer = csv.writer(f) + writer.writerow(['Metric', 'Value']) + writer.writerow(['Username', profile.username]) + writer.writerow(['Full Name', profile.full_name]) + writer.writerow(['User ID', profile.userid]) + writer.writerow(['Biography', profile.biography]) + writer.writerow(['External URL', profile.external_url]) + writer.writerow(['Is Private', profile.is_private]) + writer.writerow(['Is Business', profile.is_business_account]) + writer.writerow(['Followers', profile.followers]) + writer.writerow(['Following', profile.followees]) + writer.writerow(['Posts', profile.mediacount]) + + # Followers CSV + followers_file = f"{username}_followers_{timestamp}.csv" + with open(followers_file, 'w', newline='', encoding='utf-8') as f: + writer = csv.DictWriter(f, fieldnames=['username', 'user_id', 'full_name']) + writer.writeheader() + writer.writerows(followers_list) + + # Following CSV + following_file = f"{username}_following_{timestamp}.csv" + with open(following_file, 'w', newline='', encoding='utf-8') as f: + writer = csv.DictWriter(f, fieldnames=['username', 'user_id', 'full_name']) + writer.writeheader() + writer.writerows(followees_list) + + return profile_file, followers_file, following_file + + @staticmethod + def export_html(profile, followers_list, followees_list, username, analytics=None): + """Export to HTML report format""" + timestamp = datetime.now().strftime('%Y%m%d_%H%M%S') + filename = f"{username}_report_{timestamp}.html" + + html_content = f""" + + + + Instagram OSINT Report - {username} + + + +
+

📊 Instagram OSINT Report

+ +

Profile Information

+
+
+ Username: {profile.username} +
+
+ User ID: {profile.userid} +
+
+ Full Name: {profile.full_name} +
+
+ Followers: {profile.followers:,} +
+
+ Following: {profile.followees:,} +
+
+ Posts: {profile.mediacount} +
+
+ Private: {"Yes" if profile.is_private else "No"} +
+
+ Business Account: {"Yes" if profile.is_business_account else "No"} +
+
+ +
+
+ Biography:
{profile.biography or "N/A"} +
+
+ External URL:
{profile.external_url or "N/A"} +
+
+ """ + + if analytics: + html_content += f""" +
+

📈 Analytics

+
+
+ Engagement Rate: {analytics.get('engagement_rate', 'N/A')} +
+
+ Follower Ratio: {analytics.get('follower_ratio', 'N/A')} +
+
+ Profile Type: {analytics.get('profile_type', 'N/A')} +
+
+ Risk Score: {analytics.get('risk_score', 'N/A')}/100 +
+
+
+ """ + + html_content += f""" +

Followers ({len(followers_list)})

+ + + + + + + + + + """ + + for follower in followers_list[:100]: # Limit to first 100 for performance + html_content += f""" + + + + + + """ + + if len(followers_list) > 100: + html_content += f""" + + + + """ + + html_content += f""" + +
UsernameUser IDFull Name
{follower.get('username', 'N/A')}{follower.get('user_id', 'N/A')}{follower.get('full_name', 'N/A')}
... and {len(followers_list) - 100} more followers
+ +

Following ({len(followees_list)})

+ + + + + + + + + + """ + + for followee in followees_list[:100]: + html_content += f""" + + + + + + """ + + if len(followees_list) > 100: + html_content += f""" + + + + """ + + html_content += f""" + +
UsernameUser IDFull Name
{followee.get('username', 'N/A')}{followee.get('user_id', 'N/A')}{followee.get('full_name', 'N/A')}
... and {len(followees_list) - 100} more following
+ +

Report generated: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}

+
+ + + """ + + with open(filename, 'w', encoding='utf-8') as f: + f.write(html_content) + + return filename From 2215d876ed61be66e76ef585ad60cbea972fc7fb Mon Sep 17 00:00:00 2001 From: Adamo08 Date: Tue, 30 Dec 2025 21:20:32 +0100 Subject: [PATCH 09/13] Add TerminalUI and InteractivePrompt classes for enhanced terminal UI components --- ui.py | 251 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 251 insertions(+) create mode 100644 ui.py diff --git a/ui.py b/ui.py new file mode 100644 index 0000000..bda04d0 --- /dev/null +++ b/ui.py @@ -0,0 +1,251 @@ +"""Advanced terminal UI components""" + +import time +import getpass +from typing import List, Dict, Tuple +from utils import ( + Cy, Gr, Re, Ye, Wh, BrGr, BrCy, BrYe, BrRe, + Bold, Underline, Dim, Reset, CHECK, CROSS, INFO, ARROW +) + +class TerminalUI: + """Advanced terminal UI components""" + + @staticmethod + def print_header_banner(title, subtitle=""): + """Print an impressive header banner""" + width = 80 + print(f"\n{Cy}{Bold}{'█' * width}{Reset}") + print(f"{Cy}█{Reset} {BrCy}{Bold}{title.center(width - 4)}{Reset} {Cy}█{Reset}") + + if subtitle: + print(f"{Cy}█{Reset} {Dim}{subtitle.center(width - 4)}{Reset} {Cy}█{Reset}") + + print(f"{Cy}{Bold}{'█' * width}{Reset}\n") + + @staticmethod + def print_profile_table(profile_data: Dict): + """Print profile data in a nice table format""" + print(f"\n{BrCy}{Bold} 📊 PROFILE DATA{Reset}\n") + + display_order = [ + ("Username", "username"), + ("Full Name", "full_name"), + ("User ID", "userid"), + ("Bio", "biography"), + ("Followers", "followers"), + ("Following", "followees"), + ("Posts", "mediacount"), + ("Private", "is_private"), + ("Business", "is_business_account"), + ] + + for label, key in display_order: + value = profile_data.get(key, "N/A") + + # Format value + if isinstance(value, bool): + value_str = f"{BrGr}Yes{Reset}" if value else f"{Re}No{Reset}" + elif isinstance(value, int) and key in ["followers", "followees", "mediacount"]: + value_str = f"{BrCy}{value:,}{Reset}" + else: + value_str = str(value) if value else f"{Dim}N/A{Reset}" + + label_width = 20 + print(f" {ARROW} {label:<{label_width}} {Wh}{value_str}{Reset}") + + @staticmethod + def print_stats_grid(stats: Dict[str, Tuple[str, str]]): + """Print statistics in a grid layout + + stats = { + "Engagement": ("2.5", "posts/follower"), + "Follower Ratio": ("1.5", "followers/following") + } + """ + print(f"\n{BrCy}{Bold} 📈 ANALYTICS{Reset}\n") + + for label, (value, unit) in stats.items(): + print(f" {CHECK} {Bold}{label:<25}{Reset} {BrGr}{value:>12}{Reset} {Dim}{unit}{Reset}") + + @staticmethod + def print_followers_table(followers: List[Dict], limit=20): + """Print followers in a formatted table""" + print(f"\n{BrCy}{Bold} 👥 FOLLOWERS ({len(followers)}){Reset}\n") + + # Header + header = ["#", "Username", "User ID", "Full Name"] + col_widths = [4, 20, 12, 25] + + header_line = " " + " │ ".join(f"{h:^{w}}" for h, w in zip(header, col_widths)) + print(f"{BrCy}{Bold}{header_line}{Reset}") + + sep = " " + "─┼─".join("─" * w for w in col_widths) + print(f"{Cy}{sep}{Reset}") + + # Data rows + for i, follower in enumerate(followers[:limit], 1): + row_data = [ + str(i), + follower.get("username", "N/A")[:20], + str(follower.get("user_id", ""))[:12], + follower.get("full_name", "N/A")[:25] + ] + row_line = " " + " │ ".join(f"{d:<{w}}" for d, w in zip(row_data, col_widths)) + print(f"{Wh}{row_line}{Reset}") + + if len(followers) > limit: + remaining = len(followers) - limit + print(f"{Dim} ... and {remaining} more followers{Reset}\n") + else: + print() + + @staticmethod + def print_risk_assessment(risk_score: int, profile_type: str): + """Print risk assessment with color coding""" + print(f"\n{BrCy}{Bold} ⚠️ RISK ASSESSMENT{Reset}\n") + + # Risk level + if risk_score < 25: + risk_color = BrGr + risk_level = "LOW RISK" + elif risk_score < 50: + risk_color = BrYe + risk_level = "MEDIUM RISK" + elif risk_score < 75: + risk_color = Ye + risk_level = "HIGH RISK" + else: + risk_color = BrRe + risk_level = "CRITICAL RISK" + + # Risk bar + filled = int(risk_score / 10) + bar = "█" * filled + "░" * (10 - filled) + + print(f" Risk Score: {risk_color}{bar}{Reset} {risk_score}/100") + print(f" Level: {risk_color}{Bold}{risk_level}{Reset}") + print(f" Type: {BrCy}{profile_type}{Reset}\n") + + @staticmethod + def print_comparison(profile1: Dict, profile2: Dict): + """Print side-by-side profile comparison""" + print(f"\n{BrCy}{Bold} 🔄 PROFILE COMPARISON{Reset}\n") + + keys = ["followers", "followees", "mediacount"] + + for key in keys: + label = key.replace("_", " ").title() + val1 = profile1.get(key, 0) + val2 = profile2.get(key, 0) + + val1_str = f"{val1:,}" if isinstance(val1, int) else str(val1) + val2_str = f"{val2:,}" if isinstance(val2, int) else str(val2) + + # Determine which is larger + if isinstance(val1, int) and isinstance(val2, int): + diff = val1 - val2 + if diff > 0: + diff_str = f"{BrGr}+{diff:,}{Reset}" + elif diff < 0: + diff_str = f"{BrRe}{diff:,}{Reset}" + else: + diff_str = f"{Dim}Equal{Reset}" + else: + diff_str = "" + + print(f" {label:<15} {BrCy}{val1_str:>12}{Reset} vs {BrCy}{val2_str:>12}{Reset} {diff_str}") + + print() + + @staticmethod + def print_step_progress(current: int, total: int, label: str): + """Print step-by-step progress""" + bar = "▰" * current + "▱" * (total - current) + percent = int((current / total) * 100) + + print(f" {BrCy}{bar}{Reset} {BrGr}{percent:>3}%{Reset} - {label}") + + @staticmethod + def print_export_summary(exports: List[Tuple[str, str]]): + """Print export file summary""" + print(f"\n{BrGr}{Bold} ✓ EXPORT COMPLETE{Reset}\n") + + for file_type, filename in exports: + icon = "📄" if file_type == "JSON" else ("📊" if file_type == "CSV" else "🌐") + print(f" {icon} {Bold}{file_type:<8}{Reset} {Cy}{filename}{Reset}") + + print() + + @staticmethod + def print_database_summary(profile_count: int, follower_count: int): + """Print database operation summary""" + print(f"\n{BrGr}{Bold} ✓ DATABASE SAVED{Reset}\n") + print(f" {CHECK} Stored {BrCy}{profile_count}{Reset} profile snapshot(s)") + print(f" {CHECK} Stored {BrCy}{follower_count:,}{Reset} follower record(s)") + print() + + @staticmethod + def print_loading_phase(phase: int, total_phases: int, phase_name: str): + """Print loading phase with animation""" + bar = "▰" * phase + "▱" * (total_phases - phase) + print(f"\r {Cy}{bar}{Reset} {BrCy}[{phase}/{total_phases}]{Reset} {phase_name:<40}", end="", flush=True) + + @staticmethod + def print_success_box(message: str): + """Print success in a box""" + width = 78 + print(f"\n {BrGr}╔{'═' * width}╗{Reset}") + print(f" {BrGr}║{Reset} {BrGr}{Bold}{message.center(width)}{Reset} {BrGr}║{Reset}") + print(f" {BrGr}╚{'═' * width}╝{Reset}\n") + + @staticmethod + def print_error_box(message: str): + """Print error in a box""" + width = 78 + print(f"\n {BrRe}╔{'═' * width}╗{Reset}") + print(f" {BrRe}║{Reset} {BrRe}{Bold}{message.center(width)}{Reset} {BrRe}║{Reset}") + print(f" {BrRe}╚{'═' * width}╝{Reset}\n") + +class InteractivePrompt: + """Interactive command-line prompts""" + + @staticmethod + def get_credentials(): + """Get credentials with styling - password hidden for security""" + print(f"\n{BrCy}{Bold} 🔐 INSTAGRAM CREDENTIALS{Reset}\n") + + username = input(f" {ARROW} Username: {BrCy}") + print(Reset, end="") + + # Use getpass to hide password input + password = getpass.getpass(f" {ARROW} Password: {BrCy}") + print(Reset, end="") + + return username, password + + @staticmethod + def get_target(): + """Get target username""" + print(f"\n{BrCy}{Bold} 🎯 TARGET SELECTION{Reset}\n") + target = input(f" {ARROW} Target username: {BrCy}") + print(Reset, end="") + return target + + @staticmethod + def confirm(message: str) -> bool: + """Get confirmation""" + response = input(f" {ARROW} {message} {BrCy}(y/n): {Reset}").lower().strip() + return response in ['y', 'yes'] + + @staticmethod + def select_options(options: List[str], title: str = "Select options") -> List[bool]: + """Multi-select options""" + print(f"\n{BrCy}{Bold} ⚙️ {title}{Reset}\n") + + selections = [] + for i, option in enumerate(options, 1): + response = input(f" {i}. {option}? {BrCy}(y/n): {Reset}").lower().strip() + selections.append(response in ['y', 'yes']) + + return selections From 815db73852f7970a42ef42e238a48872360b6716 Mon Sep 17 00:00:00 2001 From: Adamo08 Date: Tue, 30 Dec 2025 21:20:49 +0100 Subject: [PATCH 10/13] Add core Instagram OSINT processor with session management, profile fetching, and data export functionality --- processor.py | 286 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 286 insertions(+) create mode 100644 processor.py diff --git a/processor.py b/processor.py new file mode 100644 index 0000000..27b40a2 --- /dev/null +++ b/processor.py @@ -0,0 +1,286 @@ +"""Core processor for Instagram OSINT operations""" + +import instaloader +import time +import os +from utils import print_info, print_warning, print_error, print_success, print_header, loading_animation +from analyzer import ProfileAnalytics, ComparativeAnalytics +from exporter import Exporter +from database import OsintDatabase + +SESSION_FILE = "session-{username}" +DOWNLOAD_DIR = "downloads" # Directory for Instagram content + +class InstagramOSINT: + """Main processor for Instagram OSINT""" + + def __init__(self, username=None, password=None, use_session=True, quiet=False): + self.username = username + self.password = password + self.use_session = use_session + self.quiet = quiet + self.loader = instaloader.Instaloader(dirname_pattern=DOWNLOAD_DIR + "/{target}") + self.is_logged_in = False + + # Create download directory if it doesn't exist + os.makedirs(DOWNLOAD_DIR, exist_ok=True) + + def load_session(self): + """Load saved session if available""" + if not self.use_session or not self.username: + return False + + session_file = SESSION_FILE.format(username=self.username) + try: + self.loader.load_session_from_file(self.username, session_file) + self.is_logged_in = True + if not self.quiet: + print_success("Session loaded successfully!") + return True + except FileNotFoundError: + return False + + def login(self, username, password): + """Handle login with 2FA support""" + self.username = username + self.password = password + + try: + self.loader.login(username, password) + self.is_logged_in = True + self.save_session() + if not self.quiet: + print_success("Login successful!") + return True + except instaloader.exceptions.TwoFactorAuthRequiredException: + if not self.quiet: + print_warning("Two-factor authentication required!") + two_factor_code = input("Enter your 2FA code: ") + self.loader.two_factor_login(two_factor_code) + self.is_logged_in = True + self.save_session() + if not self.quiet: + print_success("Login successful with 2FA!") + return True + except Exception as e: + if not self.quiet: + print_error(f"Login failed: {str(e)}") + return False + + def save_session(self): + """Save current session""" + if self.username: + session_file = SESSION_FILE.format(username=self.username) + self.loader.save_session_to_file(session_file) + + def authenticate(self): + """Authenticate using session or login""" + if self.use_session and self.load_session(): + return True + + if self.username and self.password: + return self.login(self.username, self.password) + + return False + + def fetch_profile(self, target_username): + """Fetch profile data""" + if not self.is_logged_in: + print_error("Not logged in") + return None + + try: + profile = instaloader.Profile.from_username(self.loader.context, target_username) + return profile + except instaloader.exceptions.ProfileNotExistsException: + print_error(f"Profile '{target_username}' does not exist") + return None + except Exception as e: + print_error(f"Error fetching profile: {str(e)}") + return None + + def fetch_followers(self, profile, limit=None): + """Fetch followers list""" + try: + followers = [] + count = 0 + for follower in profile.get_followers(): + followers.append({ + "username": follower.username, + "user_id": follower.userid, + "full_name": follower.full_name + }) + count += 1 + if limit and count >= limit: + break + + if not self.quiet: + print_success(f"Fetched {len(followers)} followers") + return followers + except Exception as e: + print_error(f"Error fetching followers: {str(e)}") + return [] + + def fetch_following(self, profile, limit=None): + """Fetch following list""" + try: + following = [] + count = 0 + for followee in profile.get_followees(): + following.append({ + "username": followee.username, + "user_id": followee.userid, + "full_name": followee.full_name + }) + count += 1 + if limit and count >= limit: + break + + if not self.quiet: + print_success(f"Fetched {len(following)} following") + return following + except Exception as e: + print_error(f"Error fetching following: {str(e)}") + return [] + + def download_posts(self, profile): + """Download profile posts""" + if not self.is_logged_in: + return + + try: + count = 0 + for post in profile.get_posts(): + self.loader.download_post(post, target=profile.username) + count += 1 + + if not self.quiet and count > 0: + print_success(f"Downloaded {count} posts") + except Exception as e: + if not self.quiet: + print_warning(f"Error downloading posts: {str(e)}") + + def download_highlights(self, profile): + """Download profile highlights""" + if not self.is_logged_in: + return + + try: + count = 0 + for highlight in self.loader.get_highlights(profile): + for item in highlight.get_items(): + self.loader.download_storyitem(item, target=profile.username) + count += 1 + + if not self.quiet and count > 0: + print_success(f"Downloaded {count} highlight items") + except Exception as e: + if not self.quiet: + print_warning(f"Error downloading highlights: {str(e)}") + + def process_profile(self, target_username, options=None): + """Complete profile processing pipeline""" + options = options or {} + + if not self.quiet: + print_header(f"PROCESSING {target_username}") + + # Fetch profile + profile = self.fetch_profile(target_username) + if not profile: + return None + + if not self.quiet: + print_info(f"Full Name: {profile.full_name}") + print_info(f"ID: {profile.userid}") + print_info(f"Followers: {profile.followers}") + print_info(f"Following: {profile.followees}") + print_info(f"Posts: {profile.mediacount}") + + # Fetch followers and following + followers = self.fetch_followers(profile, options.get('limit_followers')) + following = self.fetch_following(profile, options.get('limit_following')) + + # Calculate analytics + analytics = None + if options.get('analyze'): + analytics = ProfileAnalytics(profile).get_analytics_summary() + if not self.quiet and analytics: + print_header("ANALYTICS") + print_info(f"Profile Type: {analytics.get('profile_type')}") + print_info(f"Engagement Rate: {analytics.get('engagement_rate')}") + print_info(f"Follower Ratio: {analytics.get('follower_ratio')}") + print_info(f"Risk Score: {analytics.get('risk_score')}/100") + + # Store in database + if options.get('db'): + db = OsintDatabase() + db.save_profile(profile) + db.save_followers(profile.username, followers) + if analytics: + db.save_analytics(profile.username, analytics) + if not self.quiet: + print_success("Data saved to database") + + # Download content + if not options.get('no_download'): + self.download_posts(profile) + self.download_highlights(profile) + + # Export data + results = { + "profile": profile, + "followers": followers, + "following": following, + "analytics": analytics + } + + return results + + def batch_process(self, target_list, options=None): + """Process multiple targets""" + options = options or {} + results = [] + + for target in target_list: + result = self.process_profile(target, options) + if result: + results.append(result) + time.sleep(2) # Rate limiting + + return results + + def export_results(self, results, target_username, formats='json'): + """Export results in specified formats""" + profile = results['profile'] + followers = results['followers'] + following = results['following'] + analytics = results['analytics'] + + format_list = [f.strip().lower() for f in formats.split(',')] + exported_files = [] + + for fmt in format_list: + try: + if fmt == 'json': + file = Exporter.export_json(profile, followers, following, target_username, analytics) + exported_files.append(file) + if not self.quiet: + print_success(f"Exported to JSON: {file}") + + elif fmt == 'csv': + files = Exporter.export_csv(profile, followers, following, target_username) + exported_files.extend(files) + if not self.quiet: + for file in files: + print_success(f"Exported to CSV: {file}") + + elif fmt == 'html': + file = Exporter.export_html(profile, followers, following, target_username, analytics) + exported_files.append(file) + if not self.quiet: + print_success(f"Exported to HTML: {file}") + except Exception as e: + print_error(f"Error exporting to {fmt}: {str(e)}") + + return exported_files From 729209cb2d42daa45694f8518819c4776b3576ac Mon Sep 17 00:00:00 2001 From: Adamo08 Date: Tue, 30 Dec 2025 21:20:59 +0100 Subject: [PATCH 11/13] Add utility functions for terminal output and formatting in Instagram OSINT --- utils.py | 240 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 240 insertions(+) create mode 100644 utils.py diff --git a/utils.py b/utils.py new file mode 100644 index 0000000..e9ef91e --- /dev/null +++ b/utils.py @@ -0,0 +1,240 @@ +"""Utility functions for Instagram OSINT""" + +import sys +import time +from typing import List + +# Color variables +Bl = '\033[30m' +Re = '\033[1;31m' +Gr = '\033[1;32m' +Ye = '\033[1;33m' +Blu = '\033[1;34m' +Mage = '\033[1;35m' +Cy = '\033[1;36m' +Wh = '\033[1;37m' + +# Reset color +Reset = '\033[0m' + +# Bright colors +BrRe = '\033[91m' +BrGr = '\033[92m' +BrYe = '\033[93m' +BrBlu = '\033[94m' +BrMa = '\033[95m' +BrCy = '\033[96m' + +# Background colors +BgGr = '\033[42m' +BgRe = '\033[41m' +BgYe = '\033[43m' +BgBlu = '\033[44m' + +# Formatting +Bold = '\033[1m' +Dim = '\033[2m' +Italic = '\033[3m' +Underline = '\033[4m' + +# Symbols +CHECK = f"{Gr}✓{Reset}" +CROSS = f"{Re}✗{Reset}" +INFO = f"{Blu}ℹ{Reset}" +WARN = f"{Ye}⚠{Reset}" +STAR = f"{Ye}★{Reset}" +ARROW = f"{Cy}→{Reset}" +BULLET = f"{Gr}●{Reset}" +LINE = "─" * 80 + +def print_logo(): + """Print the application logo""" + logo = f"""{Gr} + + {Gr}██╗███╗ ██╗███████╗████████╗ █████╗ {Re}██████╗ ███████╗██╗███╗ ██╗████████╗ + {Gr}██║████╗ ██║██╔════╝╚══██╔══╝██╔══██╗ {Re}██╔═══██╗██╔════╝██║████╗ ██║╚══██╔══╝ + {Gr}██║██╔██╗ ██║███████╗ ██║ ███████║{Wh}█████╗{Re}██║ ██║███████╗██║██╔██╗ ██║ ██║ + {Gr}██║██║╚██╗██║╚════██║ ██║ ██╔══██║{Wh}╚════╝{Re}██║ ██║╚════██║██║██║╚██╗██║ ██║ + {Gr}██║██║ ╚████║███████║ ██║ ██║ ██║ {Re}╚██████╔╝███████║██║██║ ╚████║ ██║ + {Gr}╚═╝╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚═╝ ╚═╝ {Re}╚═════╝ ╚══════╝╚═╝╚═╝ ╚═══╝ ╚═╝ + + {Wh}{Bold}INSTAGRAM OSINT INTELLIGENCE GATHERING TOOL{Reset} + {Cy}{Dim}Advanced Profile Analysis & Data Collection{Reset} + """ + print(logo) + +def print_section(title, subtitle=""): + """Print a formatted section header""" + print(f"\n{Cy}{Bold}{LINE}{Reset}") + print(f"{Cy}{Bold} {title.upper()}{Reset}") + if subtitle: + print(f"{Dim}{Cy} {subtitle}{Reset}") + print(f"{Cy}{Bold}{LINE}{Reset}\n") + +def print_info(message, prefix=""): + """Print info message""" + icon = INFO if not prefix else prefix + print(f" {icon} {Wh}{message}{Reset}") + +def print_success(message, prefix=""): + """Print success message""" + icon = CHECK if not prefix else prefix + print(f" {icon} {BrGr}{message}{Reset}") + +def print_warning(message, prefix=""): + """Print warning message""" + icon = WARN if not prefix else prefix + print(f" {icon} {BrYe}{message}{Reset}") + +def print_error(message, prefix=""): + """Print error message""" + icon = CROSS if not prefix else prefix + print(f" {icon} {BrRe}{message}{Reset}") + +def print_highlight(message): + """Print highlighted message""" + print(f" {STAR} {Bold}{BrCy}{message}{Reset}") + +def print_header(title): + """Print section header""" + print(f"\n{BgBlu}{Wh}{Bold} {title.upper()} {Reset}\n") + +def print_subheader(title): + """Print subsection header""" + print(f"\n{Cy}{Underline}{title}{Reset}\n") + +def print_data(key, value, color=Wh): + """Print key-value pair""" + print(f" {ARROW} {Cyan}{Bold}{key}{Reset}: {color}{value}{Reset}") + +def print_table_row(columns: List[str], widths: List[int], is_header=False, color=Wh): + """Print a formatted table row""" + row = " │ ".join( + f"{col:<{width}}" if i == 0 else f"{col:^{width}}" + for i, (col, width) in enumerate(zip(columns, widths)) + ) + + if is_header: + print(f" {BgBlu}{Wh}{Bold}{row}{Reset}") + separator = " ├─" + "─┼─".join("─" * w for w in widths) + "─┤" + print(f" {Cy}{separator}{Reset}") + else: + print(f" {color}{row}{Reset}") + +def loading_animation(message="", duration=3): + """Show loading animation""" + frames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"] + start = time.time() + + while time.time() - start < duration: + for frame in frames: + sys.stdout.write(f"\r {Cy}{frame}{Reset} {message}") + sys.stdout.flush() + time.sleep(0.08) + +def progress_bar(current, total, width=50, label="", color=Gr): + """Display a progress bar""" + if total == 0: + return + + percent = current / total + filled = int(width * percent) + bar = "█" * filled + "░" * (width - filled) + + percentage = f"{int(percent * 100):>3}%" + count_str = f"[{current}/{total}]" + + if label: + print(f" {label}") + + print(f" {color}{bar}{Reset} {percentage} {count_str}") + +def spinner(duration=3, label=""): + """Show a spinner""" + frames = ["◐", "◓", "◑", "◒"] + start = time.time() + frame_idx = 0 + + while time.time() - start < duration: + sys.stdout.write(f"\r {Cy}{frames[frame_idx % len(frames)]}{Reset} {label}") + sys.stdout.flush() + time.sleep(0.2) + frame_idx += 1 + + sys.stdout.write(f"\r {CHECK} {label}\n") + sys.stdout.flush() + +def print_box(title, content, color=Cy): + """Print content in a box""" + border_top = f" {color}╔════════════════════════════════════════════════════════════════════════════════╗{Reset}" + border_mid = f" {color}║{Reset}" + border_bot = f" {color}╚════════════════════════════════════════════════════════════════════════════════╝{Reset}" + + print(border_top) + if title: + title_str = f" {Bold}{title}{Reset} " + print(f"{border_mid} {title_str:<78} {border_mid}") + print(f" {color}╠════════════════════════════════════════════════════════════════════════════════╣{Reset}") + + for line in content.split('\n'): + padding = 78 - len(line) + print(f"{border_mid} {line:<{padding}} {border_mid}") + + print(border_bot) + +def print_stat(label, value, unit="", color=BrCy): + """Print a statistic with formatting""" + print(f" {BULLET} {Bold}{label}{Reset}: {color}{value:,}{Reset} {Dim}{unit}{Reset}") + +def print_menu(options: List[str], title="Select an option"): + """Print an interactive menu""" + print(f"\n{Cy}{Bold}{title}{Reset}") + for i, option in enumerate(options, 1): + print(f" {BrCy}{i}{Reset} {Wh}{option}{Reset}") + + while True: + try: + choice = input(f"\n {Gr}Enter your choice (1-{len(options)}): {Reset}") + choice = int(choice) + if 1 <= choice <= len(options): + return choice + else: + print_warning("Invalid choice. Please try again.") + except ValueError: + print_warning("Please enter a valid number.") + +def clear_screen(): + """Clear terminal screen""" + import os + os.system('clear' if sys.platform != 'win32' else 'cls') + +def print_divider(char="=", length=80): + """Print a divider line""" + print(f" {Cy}{char * length}{Reset}") + +def print_profile_card(profile_data: dict): + """Print a formatted profile card""" + print(f"\n{BgBlu}{Wh}{Bold} PROFILE INFORMATION {Reset}\n") + + for key, value in profile_data.items(): + key_display = key.replace('_', ' ').title() + if isinstance(value, bool): + value = f"{BrGr}Yes{Reset}" if value else f"{Re}No{Reset}" + else: + value = str(value) if value else f"{Dim}N/A{Reset}" + print(f" {Cy}▸{Reset} {Bold}{key_display:<25}{Reset} {Wh}{value}{Reset}") + +def print_comparison_header(title1, title2): + """Print header for comparison""" + print(f"\n{Cy}{Bold}{LINE}{Reset}") + print(f" {BrCy}{title1:<35}{Reset} │ {BrCy}{title2:<35}{Reset}") + print(f"{Cy}{Bold}{LINE}{Reset}\n") + +def format_large_number(num): + """Format large numbers for display""" + if num >= 1_000_000: + return f"{num / 1_000_000:.1f}M" + elif num >= 1_000: + return f"{num / 1_000:.1f}K" + return str(num) + From 9aac490ef1b9eb992cc1f394226e93f960c6a54c Mon Sep 17 00:00:00 2001 From: Adamo08 Date: Tue, 30 Dec 2025 21:21:10 +0100 Subject: [PATCH 12/13] Implement interactive CLI mode with authentication and profile analysis features --- instaOSINT.py | 454 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 338 insertions(+), 116 deletions(-) diff --git a/instaOSINT.py b/instaOSINT.py index 5d3bbfd..a0c8043 100644 --- a/instaOSINT.py +++ b/instaOSINT.py @@ -2,136 +2,358 @@ # << CODE BY HUNX04 # << MAU RECODE ??? IZIN DULU LAH , MINIMAL TAG AKUN GITHUB MIMIN YANG MENGARAH KE AKUN INI, LEBIH ENAKNYA SIH FORK # << KALAU DI ATAS TIDAK DI IKUTI MAKA AKAN MENDAPATKAN DOSA KARENA MIMIN GAK IKHLAS DUNIA AKHIRAT SAMPAI 7 TURUNAN -# “Wahai orang-orang yang beriman! Janganlah kamu saling memakan harta sesamamu dengan jalan yang batil,” (QS. An Nisaa': 29). Rasulullah SAW juga melarang umatnya untuk mengambil hak orang lain tanpa izin. +# "Wahai orang-orang yang beriman! Janganlah kamu saling memakan harta sesamamu dengan jalan yang batil," (QS. An Nisaa': 29). Rasulullah SAW juga melarang umatnya untuk mengambil hak orang lain tanpa izin. -import instaloader #MUDULE -import time -from sys import stderr import sys import os +import time +import getpass +from cli import get_args, validate_args +from processor import InstagramOSINT +from utils import print_logo, print_info, print_warning, print_error, print_success, print_header, Wh, Gr, Ye, Cy +from menu import (display_main_menu, get_menu_choice, display_features_menu, + get_features_config, display_export_menu, get_export_format, + get_target_input, get_multiple_targets, get_limit_options, + confirm_action, display_summary) +from database import OsintDatabase +def interactive_mode(): + """Interactive CLI mode with menu system""" + print_logo() + print_header("AUTHENTICATION") + + # Get credentials + username = input(f"\n {Wh}[{Gr}>{Wh}] {Cy}Instagram username: {Ye}") + password = getpass.getpass(f" {Wh}[{Gr}>{Wh}] {Cy}Instagram password: {Ye}") + + os.system('clear') + print_logo() + + # Initialize OSINT processor + osint = InstagramOSINT(username, password) + + # Authenticate + print_info("Authenticating...") + if not osint.authenticate(): + print_error("Authentication failed!") + sys.exit(1) + + print_success("Authentication successful!") + time.sleep(1) + + # Main menu loop + while True: + os.system('clear') + print_logo() + display_main_menu() + + choice = get_menu_choice("Select an option", ['1', '2', '3', '4', '5']) + + if choice == '5': + print_success("Goodbye!") + sys.exit(0) + + elif choice == '1': + # Single profile analysis + handle_single_profile(osint) + + elif choice == '2': + # Batch analysis + handle_batch_profiles(osint) + + elif choice == '3': + # Compare profiles + handle_compare_profiles(osint) + + elif choice == '4': + # View database + handle_view_database() + + # Ask if user wants to continue + if not confirm_action("Continue with another operation?"): + print_success("Goodbye!") + sys.exit(0) +def handle_single_profile(osint): + """Handle single profile analysis""" + os.system('clear') + print_logo() + + # Get target + target = get_target_input() + + # Get features configuration + features_config = get_features_config() + + # Get export format + export_format = get_export_format() + + # Get limits + follower_limit, following_limit = get_limit_options() + + # Build options + options = { + 'analyze': features_config['analyze'], + 'db': features_config['db'], + 'no_download': features_config['no_download'], + 'limit_followers': follower_limit, + 'limit_following': following_limit + } + + # Show summary + config_summary = {**options, 'export_format': export_format, 'download': features_config['download']} + display_summary(config_summary) + + if not confirm_action("Proceed with analysis?"): + print_warning("Analysis cancelled") + return + + # Process + print_header("PROCESSING") + print_info(f"Analyzing profile: {target}") + + results = osint.process_profile(target, options) + + if results: + # Export results + print_info("Exporting results...") + exported = osint.export_results(results, target, export_format) + print_success(f"✓ Exported {len(exported)} file(s)") + for file in exported: + print(f" {Wh}• {Gr}{file}") + else: + print_error("Failed to process target") -Bl='\033[30m' # VARIABLE COLOR -Re='\033[1;31m' -Gr='\033[1;32m' -Ye='\033[1;33m' -Blu='\033[1;34m' -Mage='\033[1;35m' -Cy='\033[1;36m' -Wh='\033[1;37m' - - -try: -#LOGO GW - stderr.writelines(f"""{Gr} +def handle_batch_profiles(osint): + """Handle batch profile analysis""" + os.system('clear') + print_logo() + + # Get targets + targets = get_multiple_targets() + + if not targets: + print_warning("No targets provided") + return + + print_info(f"Total targets: {len(targets)}") + + # Get features configuration + features_config = get_features_config() + + # Get export format + export_format = get_export_format() + + # Get limits + follower_limit, following_limit = get_limit_options() + + # Build options + options = { + 'analyze': features_config['analyze'], + 'db': features_config['db'], + 'no_download': features_config['no_download'], + 'limit_followers': follower_limit, + 'limit_following': following_limit + } + + # Show summary + config_summary = {**options, 'export_format': export_format, 'download': features_config['download']} + display_summary(config_summary) + + if not confirm_action(f"Proceed with {len(targets)} profiles?"): + print_warning("Analysis cancelled") + return + + # Process batch + print_header("BATCH PROCESSING") + + for idx, target in enumerate(targets, 1): + print_info(f"Processing [{idx}/{len(targets)}]: {target}") + + results = osint.process_profile(target, options) + + if results: + exported = osint.export_results(results, target, export_format) + print_success(f"✓ Completed {target}") + else: + print_error(f"✗ Failed {target}") + + if idx < len(targets): + time.sleep(2) # Rate limiting + + print_success(f"✓ Batch processing complete! Processed {len(targets)} profiles") - {Gr}██╗███╗ ██╗███████╗████████╗ █████╗ {Re}██████╗ ███████╗██╗███╗ ██╗████████╗ - {Gr}██║████╗ ██║██╔════╝╚══██╔══╝██╔══██╗ {Re}██╔═══██╗██╔════╝██║████╗ ██║╚══██╔══╝ - {Gr}██║██╔██╗ ██║███████╗ ██║ ███████║{Wh}█████╗{Re}██║ ██║███████╗██║██╔██╗ ██║ ██║ - {Gr}██║██║╚██╗██║╚════██║ ██║ ██╔══██║{Wh}╚════╝{Re}██║ ██║╚════██║██║██║╚██╗██║ ██║ - {Gr}██║██║ ╚████║███████║ ██║ ██║ ██║ {Re}╚██████╔╝███████║██║██║ ╚████║ ██║ - {Gr}╚═╝╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚═╝ ╚═╝ {Re}╚═════╝ ╚══════╝╚═╝╚═╝ ╚═══╝ ╚═╝ - {Wh} <----- {Gr}O S I N T {Wh}I N S T A G R A M {Wh}B Y {Gr}H U N B Y T S {Wh}-----> - """) - print(f"\n {Wh}[ {Gr}! {Wh}] LOGIN YOUR INSTAGRAM ACCOUNT") - US = input(f"\n [ {Gr}+ {Wh}] INPUT USERNAME INSTAGRAM ACCOUNT : {Re}") - PW = input(f" {Wh}[ {Gr}+ {Wh}] INPUT PASSWORD INSTAGRAM ACCOUNT : {Re}") +def handle_compare_profiles(osint): + """Handle profile comparison""" + os.system('clear') + print_logo() + + print_info("Profile comparison requires at least 2 profiles") + targets = get_multiple_targets() + + if len(targets) < 2: + print_warning("Need at least 2 profiles to compare") + return + + print_info(f"Comparing {len(targets)} profiles") + + # Get options + options = { + 'analyze': True, + 'db': True, + 'no_download': True, + 'limit_followers': 100, # Limit for comparison + 'limit_following': 100 + } + + if not confirm_action(f"Compare {len(targets)} profiles?"): + print_warning("Comparison cancelled") + return + + # Process all profiles + print_header("COMPARING PROFILES") + all_results = [] + + for idx, target in enumerate(targets, 1): + print_info(f"Fetching [{idx}/{len(targets)}]: {target}") + results = osint.process_profile(target, options) + if results: + all_results.append(results) + + if len(all_results) >= 2: + print_header("COMPARISON RESULTS") + + # Display comparison + for result in all_results: + profile = result['profile'] + analytics = result.get('analytics', {}) + + print(f"\n {Cy}Profile: {Gr}{profile.username}") + print(f" {Wh}├─ Followers: {Ye}{profile.followers:,}") + print(f" {Wh}├─ Following: {Ye}{profile.followees:,}") + print(f" {Wh}├─ Posts: {Ye}{profile.mediacount}") + + if analytics: + print(f" {Wh}├─ Engagement Rate: {Ye}{analytics.get('engagement_rate', 0)}") + print(f" {Wh}├─ Follower Ratio: {Ye}{analytics.get('follower_ratio', 0)}") + print(f" {Wh}└─ Risk Score: {Ye}{analytics.get('risk_score', 0)}/100") + + print_success(f"\n✓ Comparison complete!") + else: + print_error("Failed to fetch enough profiles for comparison") +def handle_view_database(): + """View database statistics""" os.system('clear') + print_logo() + print_header("DATABASE VIEWER") + + db = OsintDatabase() + profiles = db.get_all_profiles() + + if not profiles: + print_warning("No profiles in database yet") + return + + print_info(f"Total profiles stored: {len(profiles)}") + print() + + for profile in profiles[:10]: # Show first 10 + print(f" {Wh}• {Gr}{profile}") + + # Try to get history + history = db.get_profile_history(profile) + if len(history) > 1: + growth = db.get_growth_stats(profile) + if growth: + print(f" {Wh}├─ Data points: {Ye}{growth['data_points']}") + print(f" {Wh}├─ Follower change: {Ye}{growth['followers_change']:+,}") + print(f" {Wh}└─ Following change: {Ye}{growth['following_change']:+,}") + + if len(profiles) > 10: + print(f"\n {Wh}... and {Ye}{len(profiles) - 10}{Wh} more profiles") + + print() - def osintig(US,PW): - stderr.writelines(f"""{Gr} - {Gr}██╗███╗ ██╗███████╗████████╗ █████╗ {Re}██████╗ ███████╗██╗███╗ ██╗████████╗ - {Gr}██║████╗ ██║██╔════╝╚══██╔══╝██╔══██╗ {Re}██╔═══██╗██╔════╝██║████╗ ██║╚══██╔══╝ - {Gr}██║██╔██╗ ██║███████╗ ██║ ███████║{Wh}█████╗{Re}██║ ██║███████╗██║██╔██╗ ██║ ██║ - {Gr}██║██║╚██╗██║╚════██║ ██║ ██╔══██║{Wh}╚════╝{Re}██║ ██║╚════██║██║██║╚██╗██║ ██║ - {Gr}██║██║ ╚████║███████║ ██║ ██║ ██║ {Re}╚██████╔╝███████║██║██║ ╚████║ ██║ - {Gr}╚═╝╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚═╝ ╚═╝ {Re}╚═════╝ ╚══════╝╚═╝╚═╝ ╚═══╝ ╚═╝ - {Wh} <----- {Gr}O S I N T {Wh}I N S T A G R A M {Wh}B Y {Gr}H U N B Y T S {Wh}-----> - """) - IG_INSTA = instaloader.Instaloader() - +def cli_mode(args): + """Command-line argument mode""" + # Prepare options + options = { + 'analyze': args.analyze, + 'db': args.db, + 'no_download': args.no_download, + 'limit_followers': args.limit_followers, + 'limit_following': args.limit_following + } + + # Initialize OSINT processor + osint = InstagramOSINT( + args.username, + args.password, + use_session=not args.no_session, + quiet=args.quiet + ) + + # Authenticate + if not osint.authenticate(): + if not args.quiet: + print_error("Authentication failed!") + sys.exit(1) + + # Get target list + targets = [] + if args.target: + targets = [args.target] + elif args.file: try: - IG_INSTA.login(US, PW) - except instaloader.exceptions.TwoFactorAuthRequiredException: - print(f"\n {Wh}[ {Gr}! {Wh}] {Ye}Two-factor authentication required!") - two_factor_code = input(f" {Wh}[ {Gr}+ {Wh}] INPUT 2FA CODE : {Re}") - IG_INSTA.two_factor_login(two_factor_code) + with open(args.file, 'r') as f: + targets = [line.strip() for line in f if line.strip()] + except FileNotFoundError: + if not args.quiet: + print_error(f"File not found: {args.file}") + sys.exit(1) + + # Process targets + if args.compare and len(targets) > 1: + # Comparison mode + all_results = osint.batch_process(targets, options) - if not IG_INSTA.context.is_logged_in: - IG_INSTA.context.log(f"\n {Wh}[ {Gr}+ {Wh}] {Re}Login failed!, you account wrong") - else: - IG_INSTA.context.log(f"\n {Wh}[ {Gr}+ {Wh}] {Gr}Login Success!") - time.sleep(3) + if all_results: + # Export each profile + for result in all_results: + profile = result['profile'] + osint.export_results(result, profile.username, args.output) + else: + # Single or batch mode + for target in targets: + result = osint.process_profile(target, options) + if result: + osint.export_results(result, target, args.output) + time.sleep(2) # Rate limiting - user_input = input(f"\n {Wh}[ {Gr}+ {Wh}] INPUT USERNAME TARGET : {Re}") - profile = instaloader.Profile.from_username(IG_INSTA.context, user_input) - print(f"\n {Wh}============================== {Gr}INFORMATION ACCOUNT {Wh}=============================") - print(f"\n {Wh}Username :{Gr} {profile.username}") - print(f" {Wh}Full Name :{Gr} {profile.full_name}") - print(f" {Wh}Id :{Gr} {profile.userid}") - print(f" {Wh}Bio :{Gr} {profile.biography}") - print(f" {Wh}Url Profile :{Gr} {profile.external_url}") - print(f" {Wh}Account Private :{Gr} {profile.is_private}") - print(f" {Wh}Account Business :{Gr} {profile.is_business_account}") - print(f" {Wh}Account business type :{Gr} {profile.business_category_name}") - print(f" {Wh}Followers :{Gr} {profile.followers}") - print(f" {Wh}Following :{Gr} {profile.followees}") - print(f" {Wh}Total Post :{Gr} {profile.mediacount}") - time.sleep(0.3) - print(f"\n {Wh}[ {Gr}+ {Wh}]{Wh} Download profile picture : ") - profile_pic = profile.profile_pic_url - print(profile_pic) - print() - print(f" {Wh}[ {Gr}+ {Wh}]{Wh} Download {Gr}target post : ") - try: - for post in profile.get_posts(): - IG_INSTA.download_post(post, target=profile.username) - except Exception as e: - print(f" {Wh}[ {Ye}! {Wh}] {Ye}Error downloading posts: {str(e)}") - print() - print(f" {Wh}[ {Gr}+ {Wh}]{Wh} Download {Gr}highlights post : ") - try: - for highlight in IG_INSTA.get_highlights(profile): - for post in highlight.get_items(): - IG_INSTA.download_storyitem(post, target=profile.username) - except Exception as e: - print(f" {Wh}[ {Ye}! {Wh}] {Ye}Error downloading highlights: {str(e)}") - print() - - def animasi(): - for i in range(10): - sys.stdout.write(f'\r {Wh}LOADING {Gr}|') - time.sleep(0.1) - sys.stdout.write(f'\r {Wh}LOADING {Gr}/') - time.sleep(0.1) - sys.stdout.write(f'\r {Wh}LOADING {Gr}-') - time.sleep(0.1) - sys.stdout.write(f'\r {Wh}LOADING {Gr}\\') - animasi() - print(f"\n {Wh}[ {Gr}+ {Wh}]{Wh} Show {Gr}target followers : ") - followers = profile.get_followers() - for follower in followers: - print(f" {Gr}USERNAME : {Wh}{follower.username} {Gr}| ID : {Wh}{follower.userid}") +def main(): + """Main entry point""" + try: + # Check if arguments provided + if len(sys.argv) > 1: + args = get_args() + + if not validate_args(args): + sys.exit(1) + + cli_mode(args) + else: + interactive_mode() + + except KeyboardInterrupt: + print(f"\n[!] Program interrupted by user") + sys.exit(0) + except Exception as e: + print_error(f"Unexpected error: {str(e)}") + sys.exit(1) - def animasi(): - for i in range(10): - sys.stdout.write(f'\r {Wh}LOADING {Gr}|') - time.sleep(0.1) - sys.stdout.write(f'\r {Wh}LOADING {Gr}/') - time.sleep(0.1) - sys.stdout.write(f'\r {Wh}LOADING {Gr}-') - time.sleep(0.1) - sys.stdout.write(f'\r {Wh}LOADING {Gr}\\') - animasi() - print(f"\n {Wh}[ {Gr}+ {Wh}]{Wh} Show {Gr}target followings : ") - followees = profile.get_followees() - for followee in followees: - print(f" {Gr}USERNAME : {Wh}{followee.username} {Gr}| ID : {Wh}{followee.userid}") - osintig(US,PW) -except KeyboardInterrupt: - print(f" {Wh}[ {Ye}! {Wh}] {Ye}PROGRAM STOPPED...") +if __name__ == "__main__": + main() From 302083d309bc5b778c72206defd660597a22ff1e Mon Sep 17 00:00:00 2001 From: Adamo08 Date: Tue, 30 Dec 2025 21:21:37 +0100 Subject: [PATCH 13/13] Update README.md to reflect version 2.0 features, including enhanced terminal UI, session persistence, and multi-format export capabilities --- README.md | 1101 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 1047 insertions(+), 54 deletions(-) diff --git a/README.md b/README.md index bd9bf0b..8b309cc 100644 --- a/README.md +++ b/README.md @@ -1,81 +1,1074 @@ -### INSTA-OSINT 📋 -is a tool to find as much information as possible on Instagram accounts, such as username, full username, post target, account type, number of followers, number of followings and so on. +# 📸 Instagram OSINT Tool v2.0 - +> Advanced Open Source Intelligence gathering tool for Instagram with interactive menus, analytics engine, batch processing, and multi-format exports. -This tool is an update from OsintIG on my first account -***DO NOT COPY OR RECODE THIS TOOL WITHOUT PERMISSION!!!*** -
-***DILARANG RECODE TOOL INI TANPA IZIN DARI ADMINN!!!!*** +--- -
-:zap: Version 1.1.0 : -- INSTA-OSINT V1.1.0 -
+## 🌟 Overview -### Note 📍 -to use this tool you have to prepare a `dummy account`, don't use a real account if you don't want it to expire -do not use for illegal actions because the admin will not be responsible +Instagram OSINT is a comprehensive intelligence gathering tool that combines session persistence, advanced analytics, database storage, and beautiful **interactive terminal UI** to analyze Instagram profiles efficiently. Whether you're a researcher, security analyst, or enthusiast, this tool provides powerful insights into Instagram account patterns and behaviors. -### Instalation on Linux (.deb) -``` -sudo apt update && sudo apt upgrade -sudo apt install git -sudo apt install python3 -``` +**Current Version:** 2.0.0 +**Last Updated:** December 2025 +**Interface:** Fully Interactive Menu System + +--- + +## 📺 Terminal UI - Screenshots + +### 1. Login Screen +Beautiful ASCII art banner with secure password input (hidden characters) + +![Login Screen](screenshots/01_login_screen.png) + +--- + +### 2. Two-Factor Authentication +Seamless 2FA support for protected accounts + +![2FA Prompt](screenshots/02_2fa_prompt.png) + +--- + +### 3. Features Configuration Menu +Choose what you want to do - downloads, analytics, database storage + +![Features Menu](screenshots/03_features_config.png) + +--- + +### 4. Export Format Selection +Multiple export options - JSON, CSV, HTML or all combined + +![Export Format](screenshots/04_export_format.png) + +--- + +### 5. Data Limits Configuration +Control how much data to fetch for performance optimization + +![Data Limits](screenshots/05_data_limits.png) + +--- + +### 6. Configuration Summary +Review your selections before processing begins + +![Config Summary](screenshots/06_config_summary.png) + +--- + +### 7. Profile Processing +Real-time progress indicators and colorful status messages + +![Processing](screenshots/07_processing.png) + +--- + +### 8. HTML Report Output +Beautiful interactive reports with all profile data + +![HTML Report](screenshots/08_html_report.png) + +--- + +## ✨ Key Features + +### 🎯 Interactive Menu System +- **No Command-Line Arguments Needed** - Everything is menu-driven +- **Step-by-Step Guidance** - Clear prompts for every decision +- **Visual Menus** - Colorful, numbered options +- **Input Validation** - Prevents errors with helpful messages +- **Confirmation Prompts** - Review settings before execution + +### 🔐 Authentication & Security +- **Hidden Password Input** - Passwords never shown on screen +- **Two-Factor Authentication Support** - Handle 2FA seamlessly +- **Session Persistence** - Save sessions to avoid re-authentication +- **Smart Session Management** - Auto-load previous sessions + +### 📊 Analytics Engine +- **Engagement Rate Calculation** - Followers per post metric +- **Follower Ratio Analysis** - Followers vs Following comparison +- **Risk Score Detection** - Identify suspicious accounts (0-100 scale) +- **Profile Classification** - Detect Business, Influencer, Bot, Regular accounts +- **Growth Tracking** - Historical data and trend analysis + +### 📤 Export Capabilities +- **JSON Export** - Complete structured data with metadata +- **CSV Export** - Spreadsheet-ready format (profile, followers, following) +- **HTML Reports** - Interactive visual reports with styling +- **Multi-format Exports** - Export to multiple formats simultaneously + +### 💾 Database Backend (SQLite) +- Store profile snapshots with timestamps +- Track follower/following changes over time +- Cache analytics results for quick queries +- Generate growth statistics and trends +- Historical profile comparisons + +### 🔄 Batch Processing +- Process multiple profiles in single run +- Enter targets interactively or from file +- Compare profiles side-by-side +- Find mutual followers/following between accounts +- Rate-limited to respect Instagram API + +### 🎨 Beautiful Terminal UI +- Colorful ASCII banner and messages +- Color-coded status indicators (✓ ✗ !) +- Loading animations and progress indicators +- Organized, readable output format +- Professional terminal interface + +--- + +## 📋 Table of Contents -### Instalation on Termux +1. [Installation](#-installation) +2. [Quick Start](#-quick-start) +3. [Interactive Menu Guide](#-interactive-menu-guide) +4. [Features in Detail](#-features-in-detail) +5. [Export Formats](#-export-formats) +6. [Analytics Explained](#-analytics-explained) +7. [Database Features](#-database-features) +8. [Module Architecture](#-module-architecture) +9. [Legal & Disclaimer](#-legal--disclaimer) + +--- + +## 🚀 Installation + +### For Desktop/Laptop (Linux, macOS, Windows) + +#### Prerequisites +- Python 3.8+ +- pip package manager +- Instagram account (for authentication) + +#### Setup + +```bash +# Clone repository +git clone https://github.com/Adamo08/INSTA-OSINT.git +cd INSTA-OSINT + +# Create virtual environment (recommended) +python3 -m venv venv +source venv/bin/activate # On Windows: venv\Scripts\activate + +# Install dependencies +pip install -r requirements.txt ``` + +--- + +### 📱 For Mobile (Android via Termux) + +Yes! This tool works perfectly on Android phones using **Termux**! + +#### Step 1: Install Termux +Download Termux from [F-Droid](https://f-droid.org/packages/com.termux/) (recommended) or Google Play Store + +#### Step 2: Setup Termux Environment + +```bash +# Update packages pkg update && pkg upgrade -pkg install git -pkg install python3 -``` -### Use Tool +# Install required packages +pkg install python git + +# Install pip +pip install --upgrade pip ``` -git clone https://github.com/HunxByts/INSTA-OSINT.git + +#### Step 3: Clone and Setup + +```bash +# Get storage permissions (optional, for saving files) +termux-setup-storage + +# Clone repository +git clone https://github.com/Adamo08/INSTA-OSINT.git cd INSTA-OSINT -pip3 install -r requirements.txt + +# Install dependencies +pip install -r requirements.txt +``` + +#### Step 4: Run the Tool + +```bash +python instaOSINT.py +``` + +#### 📱 Mobile Tips +- Use landscape mode for better visibility +- Swipe keyboard to navigate terminal +- Files are saved in `/storage/emulated/0/` if using termux-setup-storage +- Session files persist between runs (no need to login every time) +- Works on mobile data or WiFi +- Can run in background with Termux:Boot addon + +#### Termux Keyboard Shortcuts +- `Volume Down + C` = Ctrl+C (cancel/exit) +- `Volume Down + L` = Clear screen +- `Volume Down + Z` = Suspend process + +--- + +### Dependencies +- `instaloader` - Instagram scraping library +- Built-in Python libraries (no external dependencies for UI) + +--- + +## ⚡ Quick Start + +### Simply Run the Tool +```bash python3 instaOSINT.py ``` +**That's it!** The tool will guide you through everything with interactive menus. + +### What Happens Next? + +1. **🔐 Login Screen** - Enter your Instagram credentials (password is hidden) +2. **📋 Main Menu** - Choose what you want to do: + - Single Profile Analysis + - Batch Profile Analysis + - Compare Profiles + - View Database History +3. **⚙️ Configuration Menus** - Select features, export formats, and limits +4. **📊 Summary** - Review your choices +5. **🚀 Processing** - Watch real-time progress +6. **✅ Results** - Get exported files and analytics + +--- + +## 🎮 Interactive Menu Guide + +### Main Menu Options + +When you run the tool, you'll see: + -p mypassword \ + -t targetusername \ + --analyze \ + +**1. Single Profile Analysis** - Analyze one Instagram account + - Download posts & highlights + - Calculate analytics + - Export in multiple formats + +**2. Batch Profile Analysis** - Process multiple accounts + - Enter usernames one by one + - Or provide them via file + - Process sequentially with rate limiting + +**3. Compare Profiles** - Find connections between accounts + - Mutual followers analysis + - Profile similarity scoring + - Network mapping + +**4. View Database History** - Check stored data + - Query past analyses + - View growth statistics + - Export historical reports + +**5. Exit** - Close the tool + +### Features Configuration Menu + +After selecting a profile, configure what to do: + +**1. Download Posts & Highlights** ⚠️ May take time + - Downloads all media from profile + - Saves to local directory + +**2. Run Analytics** 📊 Calculate metrics + - Engagement rate + - Follower ratio + - Risk scoring + - Profile classification + +**3. Save to Database** 💾 Track history + - Store profile snapshot + - Enable growth tracking + - Historical comparisons + +**4. All Features** - Enable everything above + +**5. None (Quick Mode)** - Basic info only + - Fast execution + - Just profile metadata + - No downloads or analytics + +### Export Format Menu + +Choose how to save your data: + +**1. JSON only** - Structured data format +**2. CSV only** - Spreadsheet format (3 files) +**3. HTML only** - Visual report in browser +**4. JSON + CSV** - Both formats +**5. JSON + HTML** - Structured + Visual +**6. All formats** - JSON + CSV + HTML (recommended) + +### Data Limits Menu + +Control performance by limiting data fetched: + +**1. No limits** - Fetch everything (slow for large accounts) +**2. Limit to 100 each** - Quick analysis +**3. Limit to 500 each** - Balanced +**4. Limit to 1000 each** - Comprehensive +**5. Custom limits** - Enter your own numbers + +--- + +## 🎯 Step-by-Step Walkthrough + +### Example: Analyzing a Single Profile + +1. **Start the tool:** + ```bash + python3 instaOSINT.py + ``` + +2. **Login** (first time or if session expired): + - Enter your Instagram username + - Enter password (hidden input - you won't see characters) + - If 2FA is enabled, enter the 6-digit code + +3. **Main Menu appears:** + - Select **[1] Single Profile Analysis** + +4. **Enter target:** + - Type the username you want to analyze + - Example: `targetusername` + +5. **Features Configuration:** + - Select **[2] Run Analytics** for metrics + - Or **[4] All Features** for complete analysis + +6. **Export Format:** + - Select **[6] All formats** for complete export + +7. **Data Limits:** + - Select **[3] Limit to 500 each** for balanced performance + +8. **Configuration Summary:** + - Review your selections + - Confirm to proceed (y/n) + +9. **Processing:** + - Watch real-time progress indicators + - Colored status messages show each step + - ✓ marks successful completion + +10. **Results:** + - Files exported to current directory + - Open HTML report in browser + - Check JSON for structured data + - Import CSV into spreadsheet + +--- + +## 🔄 Batch Processing Example + +Process multiple accounts efficiently: + +1. **Create targets file:** + ```bash + cat > targets.txt << EOF + username1 + username2 + username3 + EOF + ``` + +2. **Run tool:** + ```bash + python3 instaOSINT.py + ``` + +3. **Select [2] Batch Profile Analysis** + +4. **Choose input method:** + - Select "Load from file" + - Enter filename: `targets.txt` + +5. **Configure options:** + - Features: **[2] Run Analytics** + - Export: **[1] JSON only** + - Limits: **[2] Limit to 100 each** (for speed) + +6. **Watch processing:** + - Progress: [1/3], [2/3], [3/3] + - Each profile processed sequentially + - 2-second delay between profiles (rate limiting) + +7. **Results:** + - 3 JSON files created (one per profile) + - Summary statistics displayed + - All data in database if enabled + +--- + +## 💡 Usage Tips + +### Best Practices + +**For Quick Analysis:** +- Use **Quick Mode** (Feature option 5) +- Set **Limit to 100** on followers/following +- Export **JSON only** + +**For Comprehensive Research:** +- Enable **All Features** +- Use **No Limits** (option 1) +- Export **All formats** +- Enable **Database storage** + +**For Large Accounts (100K+ followers):** +- Use **Custom Limits** with reasonable numbers +- Skip downloads (**Quick Mode**) +- Process during off-peak hours + +**For Regular Monitoring:** +- Enable **Database storage** +- Run weekly/monthly +- Use **Quick Mode** for speed +- Track growth via database queries + +### Session Management + +**First Run:** +- Requires username + password +- 2FA if enabled +- Session saved automatically + +**Subsequent Runs:** +- Session auto-loaded +- No password needed +- No 2FA prompt +- Instant authentication ✓ + +**Clear Sessions:** +```bash +rm session-* +``` + +--- + +## 🎯 Features in Detail + +### Session Persistence +Automatically saves authentication sessions to `session-{username}` files. + +**Benefits:** +- No need to re-enter credentials +- Skip 2FA on subsequent runs +- Faster authentication +- Secure token storage + +**How it works:** +``` +First Run: Username + Password → Authenticate → Save Session +Second Run: Load Session → Authenticate Instantly ✓ +``` + +### Two-Factor Authentication +Seamlessly handles 2FA protected accounts. + +**Process:** +1. Script detects 2FA requirement +2. Prompts for 6-digit code +3. Accepts code from authenticator app or SMS +4. Saves session with 2FA tokens +5. Future runs skip 2FA entirely + +### Security Features +- **Hidden Password Input** - Uses getpass module, no echo +- **Session Encryption** - Tokens stored securely +- **No Password Storage** - Never saves plain-text passwords +- **Local Session Files** - No cloud storage + +### Error Handling +Graceful error handling for: +- Non-existent profiles +- Private accounts (limited data) +- Rate limiting (automatic delays) +- Network errors +- Invalid credentials + +--- + +## 💾 Database Features + +### Automatic Database Creation +First run creates `osint_data.db` with optimized schema. + +### Tables + +#### profiles +Snapshots of profile metadata: +- Username, user ID, full name +- Bio, external URL +- Privacy settings, account type +- Follower/following/post counts +- Timestamps + +#### followers +Historical follower records: +- Profile being followed +- Follower details (username, ID, name) +- Timestamp of recording + +#### profile_history +Growth tracking over time: +- Follower count snapshot +- Following count snapshot +- Post count snapshot +- Recorded timestamp + +#### analytics_cache +Cached analytics results: +- Engagement metrics +- Risk scores +- Profile classification +- Calculation timestamp + +### Growth Tracking Example + +Run the same profile analysis periodically: + +```bash +# Day 1 +python3 instaOSINT.py -u myuser -p mypass -t target --db + +# Day 7 (one week later) +python3 instaOSINT.py -u myuser -p mypass -t target --db +``` + +Database automatically tracks changes. Query growth: +```python +from database import OsintDatabase +db = OsintDatabase() +growth = db.get_growth_stats('target') +print(f"Follower change: +{growth['followers_change']}") +``` + +📸 **SCREENSHOT**: Show osint_data.db file in file explorer and terminal output showing growth statistics query result + +--- + +## 📤 Export Formats + +### JSON Export +**File:** `{username}_data_YYYYMMDD_HHMMSS.json` + +**Sample Structure:** +```json +{ + "export_date": "2025-12-30T12:34:56.789000", + "profile": { + "username": "targetuser", + "full_name": "Target User Name", + "user_id": 123456789, + "biography": "User bio", + "followers_count": 5000, + "following_count": 1200, + "posts_count": 250 + }, + "followers": [ + {"username": "follower1", "user_id": 111111111, "full_name": "Follower Name"} + ], + "following": [...], + "analytics": { + "engagement_rate": 2.5, + "follower_ratio": 4.17, + "risk_score": 12, + "profile_type": "Influencer" + } +} +``` + +📸 **SCREENSHOT**: Open JSON file in text editor and show formatted output (capture first 50 lines) + +### CSV Export +**Files Generated:** +- `{username}_profile_TIMESTAMP.csv` - Profile metadata +- `{username}_followers_TIMESTAMP.csv` - Followers list +- `{username}_following_TIMESTAMP.csv` - Following list + +📸 **SCREENSHOT**: Show file explorer with all three CSV files generated + +### HTML Report +**File:** `{username}_report_YYYYMMDD_HHMMSS.html` + +**Features:** +- Professional styling with Instagram branding +- Profile information card +- Analytics dashboard +- Responsive design +- Searchable tables +- Print-friendly layout + +📸 **SCREENSHOT**: Open HTML report in web browser (Firefox/Chrome) showing full page with profile info, analytics section, and tables + +--- + +## 📊 Analytics Explained + +### Engagement Rate +``` +Formula: Followers / Posts +``` + +**Example:** 1000 followers / 100 posts = 10 followers per post + +### Follower Ratio +``` +Formula: Followers / Following +``` + +**Example:** 1000 followers / 200 following = 5.0 ratio + +### Risk Score (0-100) +Calculated risk of account being suspicious, bot, or fake. + +**Factors:** +- Very high following count (following 2x+ followers) +- No posts but many followers (bot indicator) +- Extremely low engagement +- Private with unusual follower growth + +### Profile Type Classification +- **Business Account** - Has business category set +- **Influencer** - 10,000+ followers +- **Private Account** - Privacy enabled +- **Regular Account** - Standard user +- **Inactive/Potential Bot** - 0 posts despite followers + +### Example Analytics Output + +``` +📊 ANALYTICS +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +✓ Profile Type : Influencer +✓ Engagement Rate : 2.5 +✓ Follower Ratio : 4.17 +✓ Risk Score : 15/100 (Low Risk) +✓ Posts per Follower : 0.05 +✓ Following % : 24.0% +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +📸 **SCREENSHOT**: Run analysis with `--analyze` and capture the colorful analytics output section + +--- + +## 🏗️ Module Architecture + +### processor.py +Core OSINT operations including authentication, profile fetching, batch processing, and export coordination. + +### analyzer.py +Analytics calculations including engagement metrics, risk scoring, profile classification, and comparative analysis. + +### exporter.py +Multi-format export supporting JSON, CSV, and HTML report generation with professional formatting. + +### database.py +SQLite backend for persistent storage, historical tracking, and growth statistics. + +### cli.py +Command-line interface with argument parsing, validation, and comprehensive help documentation. + +### utils.py +Helper functions for colored output, formatting, animations, and status messages. + +--- + +## 💡 Examples + +### Example 1: Analyze Single Influencer + +```bash +python3 instaOSINT.py \ + -u myusername \ + -p mypassword \ + -t cristiano \ + --analyze \ + -o json,html +``` + +**Note:** When running interactively, passwords are **hidden** for security (masked input). + +📸 **SCREENSHOT**: Run this command and capture console showing analysis results with colorful output + +### Example 2: Batch Processing from File + +```bash +cat > targets.txt << EOF +username1 +username2 +username3 +EOF + +python3 instaOSINT.py \ + -u myusername \ + -p mypassword \ + -f targets.txt \ + --analyze \ + --db +``` + +📸 **SCREENSHOT**: Capture the batch processing progress showing all three profiles being processed + +### Example 3: Track Growth Over Time + +```bash +# Day 1 +python3 instaOSINT.py -u myuser -p mypass -t target --db + +# Day 8 +python3 instaOSINT.py -u myuser -p mypass -t target --db + +# Query results +python3 << 'EOF' +from database import OsintDatabase +db = OsintDatabase() +growth = db.get_growth_stats('target') +print(growth) +EOF +``` + +📸 **SCREENSHOT**: Show the Python query output displaying growth statistics + +### Example 4: Multi-Format Export + +```bash +python3 instaOSINT.py \ + -u myusername \ + -p mypassword \ + -t targetusername \ + -o json,csv,html \ + --analyze +``` + +📸 **SCREENSHOT**: Show file explorer with all exported files (JSON, 3 CSVs, HTML) + +--- + +## 🔧 CLI Reference + +### Full Help +```bash +python3 instaOSINT.py --help +``` + +### Essential Arguments + +```bash +# Authentication +-u, --username USERNAME Your Instagram username +-p, --password PASSWORD Your Instagram password +--no-session Don't use saved sessions + +# Target Selection +-t, --target TARGET Single target username +-f, --file FILE File with target list + +# Output Options +-o, --output OUTPUT Export formats: json,csv,html +-d, --dir DIR Output directory + +# Features +--db Store in database +--analyze Calculate analytics +--compare Compare profiles +--no-download Skip downloads + +# Performance +--limit-followers N Max followers to fetch +--limit-following N Max following to fetch +--quiet Minimize output +``` + +📸 **SCREENSHOT**: Capture the help output from `python3 instaOSINT.py --help` + +--- + +## 🎨 Terminal Output Examples + +### Login & Authentication +``` +📱 Instagram OSINT Tool v2.0 +━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +[+] LOGIN YOUR INSTAGRAM ACCOUNT + +Enter Instagram username: myusername +Enter Instagram password: •••••••• + +[✓] Session loaded successfully! +[✓] Login successful! +``` + +📸 **SCREENSHOT**: Capture the colorful login screen with ASCII art banner + +### Profile Analysis Output +``` +📊 PROCESSING targetusername +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +[+] Full Name: Target User Name +[+] ID: 123456789 +[+] Followers: 5,000 +[+] Following: 1,200 +[+] Posts: 250 + +[✓] Fetched 5000 followers +[✓] Fetched 1200 following + +📊 ANALYTICS +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +[+] Profile Type: Influencer +[+] Engagement Rate: 2.5 +[+] Follower Ratio: 4.17 +[+] Risk Score: 15/100 (Low Risk) + +[✓] Exported to: targetuser_data_20251230_123456.json +``` + +📸 **SCREENSHOT**: Run a profile analysis and capture full colored output + +### Batch Processing Progress +``` +🔄 BATCH PROCESSING 3 PROFILES +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +[1/3] Processing username1... +✓ Completed in 15s + +[2/3] Processing username2... +✓ Completed in 12s + +[3/3] Processing username3... +✓ Completed in 18s + +✓ Batch complete! Total: 45s +✓ All data saved to database +``` + +📸 **SCREENSHOT**: Run batch processing and capture the progress output + +--- + +## 📋 Requirements + +### System Requirements +- Python 3.8 or higher +- 50MB disk space minimum +- Internet connection +- Instagram account + +### Python Dependencies +``` +instaloader>=4.12.0 +requests>=2.28.0 +``` + +--- + +## ⚙️ Configuration + +### Session Files +Sessions stored as: `session-{username}` + +**Clear sessions:** +```bash +rm session-* +``` + +### Database File +Auto-created as: `osint_data.db` + +**Reset database:** +```bash +rm osint_data.db +``` + +### Output Directory +```bash +python3 instaOSINT.py -u user -p pass -t target -d /custom/path +``` + +--- + +## 🔒 Security & Best Practices + +### Password Security +✅ **Interactive Mode:** +- Passwords are **masked** during input (not visible on screen) +- Uses Python's `getpass` module for secure input +- Characters replaced with dots/asterisks +- No password echoing to terminal + +✅ **CLI Mode:** +- Pass credentials via command-line arguments +- Credentials not stored in shell history (use space prefix on some shells) +- Session tokens stored locally only + +### Credentials Handling +- Never commit passwords to version control +- Use environment variables for automation +- Session tokens are local only +- Use your own account + +### Rate Limiting +- Tool adds automatic delays between requests +- Don't run multiple instances simultaneously +- Respect Instagram's Terms of Service +- Monitor for IP blocks + +### Data Privacy +- Content stored locally +- Database contains snapshots +- Export files are not encrypted +- Clean up old files regularly + +--- + +## ⚠️ Legal & Disclaimer + +**This tool is for educational and authorized research purposes only.** + +### Important +1. **Terms of Service**: Using this may violate Instagram's ToS +2. **Legal Compliance**: Follow all applicable laws +3. **No Liability**: Authors not responsible for consequences +4. **Authorization Only**: Analyze accounts you have permission for + +### Responsible Use +- ✅ Analyze your own accounts +- ✅ Authorized competitor research +- ✅ Permission-based security audits +- ❌ Don't scrape private accounts +- ❌ No harassment or stalking +- ❌ Don't violate ToS + +--- + +## 🆘 Troubleshooting + +### Login Issues +- Check username/password +- Try `--no-session` flag +- Verify 2FA code if required + +### Profile Not Found +- Verify username spelling +- Check if account deleted +- Private accounts have limited data + +### Database Errors +- Close other instances +- Delete `osint_data.db` to reset + +### Rate Limiting +- Wait 30-60 minutes +- Reduce batch sizes +- Use `--limit-followers` option + +--- + +## 🤝 Contributing + +Contributions welcome! Please: +1. Fork the repository +2. Create feature branch +3. Make improvements +4. Submit pull request + +### Ideas for Contribution +- Additional export formats (XML, PDF) +- Advanced analytics and predictions +- Web UI dashboard +- Performance improvements +- Bug fixes + +--- + +## 📝 Changelog + +### v2.0.0 (Current - December 2025) +**Major Rewrite** +- ✨ Complete modular refactoring (6 specialized modules) +- ✨ Advanced CLI argument parsing +- ✨ Batch processing with file input +- ✨ SQLite database backend +- ✨ Multi-format exports (JSON, CSV, HTML) +- ✨ Professional analytics engine +- ✨ Enhanced terminal UI +- ✨ Profile comparison and analysis +- 🐛 Improved error handling +- 🐛 Better rate limiting + +### v1.0.0 (Original) +- Basic profile analysis +- Follower/following retrieval +- JSON export +- Post downloading +- 2FA support + +--- + +## 📮 Support + +### Having Issues? +1. Check [Troubleshooting](#-troubleshooting) +2. Review GitHub issues +3. Create new issue with details + +### Questions? +See examples and documentation above. -### Result insta-osint tool +--- - +## 📄 License - +Original author: **HUNX04** +v2.0 modernization and features - +Respect original creator's terms. +--- +## 📞 Contact +**Original Author:** HUNX04 +**Repository:** [INSTA-OSINT](https://github.com/HunxByts/INSTA-OSINT) +--- +## ⭐ Support -### Feature INSTA-OSINT +If useful, please: +- ⭐ Star the repository +- 🐛 Report bugs +- 💡 Suggest features +- 📤 Share with others +- 🤝 Contribute code -| Featur | Status | -|:-----------:|:-------:| -| Username | ✔️ | -| UserFull | ✔️ | -| TypeAccount | ✔️ | -| TargPost | ✔️ | -| Follwers | ✔️ | -| Followings | ✔️ | -| id | ✔️ | -| Bio | ✔️ | -| Url | ✔️ | -| AccountPrv | ✔️ | -| AccountBis | ✔️ | -| ProfPic | ✔️ | -| IGTV | ✔️ | -| Higlights | ✔️ | -| ShowFollwrs | ✔️ | -| ShowFollwng | ✔️ | +--- +**Made with ❤️ for the OSINT Community** -
-:zap: Author : -- HunxByts -
+**Last Updated:** December 30, 2025 +**Version:** 2.0.0 +**Status:** Production Ready