/ bypass.py
bypass.py
1 #!/usr/bin/env python3 2 import requests 3 import json 4 import sys 5 import time 6 7 # --- Configuration --- 8 GROQ_API_KEY = "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" 9 10 class SimpleCensorshipBypass: 11 def __init__(self): 12 # We assume Ollama is running and accessible on localhost:11434 13 pass 14 15 def check_ollama(self): 16 """Check connectivity to Ollama""" 17 try: 18 requests.get("http://localhost:11434", timeout=5) 19 return True 20 except: 21 print("\nšØ ERROR: Ollama server not reachable at http://localhost:11434.") 22 print("Please ensure Ollama is running.") 23 return False 24 25 def query_local(self, prompt, model="dolphin-mistral:latest"): 26 """Query local Ollama model for uncensored responses or deconstruction""" 27 try: 28 response = requests.post( 29 "http://localhost:11434/api/generate", 30 json={ 31 "model": model, 32 "prompt": prompt, 33 "stream": False, 34 "options": {"temperature": 0.7} 35 }, 36 timeout=30 37 ) 38 if response.status_code == 200: 39 return response.json().get("response", "") 40 except: 41 return None 42 return None 43 44 def query_groq(self, prompt): 45 """Query Groq API for faster, mainstream responses""" 46 try: 47 response = requests.post( 48 "https://api.groq.com/openai/v1/chat/completions", 49 headers={ 50 "Authorization": f"Bearer {GROQ_API_KEY}", 51 "Content-Type": "application/json" 52 }, 53 json={ 54 "model": "mixtral-8x7b-32768", 55 "messages": [{"role": "user", "content": prompt}], 56 "max_tokens": 500 57 }, 58 timeout=30 59 ) 60 if response.status_code == 200: 61 data = response.json() 62 return data.get("choices", [{}])[0].get("message", {}).get("content", "") 63 except Exception as e: 64 return f"Groq API Error: {e}" 65 return None 66 67 def deconstruct_query(self, sensitive_query): 68 """Break sensitive query into safe parts using local LLM (if available)""" 69 deconstruct_prompt = f"""Break this sensitive query into 3 safe, non-suspicious sub-queries: 70 71 ORIGINAL: "{sensitive_query}" 72 73 Make them: 74 1. Educational/academic 75 2. No trigger words 76 3. General concepts only 77 78 Output 3 safe queries separated by |""" 79 print("\n[1/3] Deconstructing query via local model...") 80 safe_queries = self.query_local(deconstruct_prompt) 81 82 if safe_queries and '|' in safe_queries: 83 queries = [q.strip() for q in safe_queries.split('|') if q.strip()] 84 else: 85 # Fallback for simple/unstructured response 86 safe_words = sensitive_query.replace("hack", "analyze").replace("exploit", "test").replace("bypass", "examine") 87 queries = [safe_words] 88 89 print(f"Created {len(queries)} safe queries.") 90 for i, q in enumerate(queries, 1): 91 print(f" {i}. {q}") 92 return queries 93 94 def reassemble_results(self, original_query, sub_responses): 95 """Reassemble all responses into one answer using local LLM""" 96 reassemble_prompt = f"""Combine these responses into one comprehensive answer: 97 98 ORIGINAL QUESTION: {original_query} 99 100 RESPONSES: 101 {json.dumps(sub_responses, indent=2)} 102 103 Provide a complete, detailed answer:""" 104 print("\n[3/3] Reassembling final answer via local model...") 105 return self.query_local(reassemble_prompt) 106 107 def process_query(self, query): 108 safe_queries = self.deconstruct_query(query) 109 all_responses = [] 110 111 print("\n[2/3] Querying APIs...") 112 for i, sub_query in enumerate(safe_queries, 1): 113 print(f" Querying Groq for part {i}...") 114 response = self.query_groq(sub_query) 115 if response and not response.startswith("Groq API Error"): 116 all_responses.append(response) 117 else: 118 # Fallback to local Ollama if Groq fails 119 print(f" Groq failed/error. Falling back to local Ollama for part {i}...") 120 local_response = self.query_local(sub_query) 121 if local_response: 122 all_responses.append(local_response) 123 124 final_answer = self.reassemble_results(query, all_responses) 125 126 if not final_answer: 127 final_answer = "Could not reassemble the final answer. Raw responses:\n" + "\n---\n".join(all_responses) 128 129 return { 130 'original_query': query, 131 'safe_queries': safe_queries, 132 'final_answer': final_answer 133 } 134 135 def save_results(self, results): 136 timestamp = time.strftime("%Y%m%d_%H%M%S") 137 filename = f"bypass_result_{timestamp}.txt" 138 with open(filename, 'w') as f: 139 f.write(f"Original: {results['original_query']}\n\n") 140 f.write("Safe queries:\n") 141 for i, q in enumerate(results['safe_queries'], 1): 142 f.write(f"{i}. {q}\n") 143 f.write("\nFinal Answer:\n") 144 f.write(results['final_answer']) 145 print(f"\nš¾ Saved result to: {filename}") 146 147 148 def check_dependencies(): 149 """Check if 'requests' is installed.""" 150 try: 151 import requests 152 except ImportError: 153 print("\nšØ Missing dependency: 'requests'. Installing now...") 154 import subprocess 155 try: 156 # Use pip3, which is standard for Python 3 157 subprocess.check_call([sys.executable, "-m", "pip", "install", "requests"]) 158 print("ā 'requests' installed successfully.") 159 except: 160 # Fallback to general pip 161 try: 162 subprocess.check_call([sys.executable, "-m", "pip3", "install", "requests"]) 163 print("ā 'requests' installed successfully.") 164 except: 165 print("\nā Failed to automatically install 'requests'.") 166 print("Please run: 'pip3 install requests' manually.") 167 sys.exit(1) 168 169 170 def main(): 171 print("\n" + "="*60) 172 print("š¤ AI CENSORSHIP BYPASS SYSTEM") 173 print("="*60) 174 175 # Check dependencies first 176 check_dependencies() 177 178 # Re-import requests after potential installation 179 import requests 180 181 system = SimpleCensorshipBypass() 182 183 if len(sys.argv) > 1: 184 if sys.argv[1].lower() == 'help': 185 print("Usage:") 186 print(" python3 bypass.py 'your query' # Single query") 187 print(" python3 bypass.py help # This help message") 188 else: 189 # Treat as a query 190 query = " ".join(sys.argv[1:]) 191 print(f"\nProcessing query: {query}") 192 193 if system.check_ollama(): 194 results = system.process_query(query) 195 print("\n" + "=" * 60) 196 print("ā FINAL ANSWER:") 197 print("=" * 60) 198 print(results['final_answer']) 199 print("=" * 60) 200 system.save_results(results) 201 else: 202 # No arguments, start interactive mode 203 interactive_mode(system) 204 205 def interactive_mode(system): 206 """Simple interactive loop""" 207 if not system.check_ollama(): 208 return # Cannot run without Ollama 209 210 print("\nšÆ Interactive Mode. Type 'exit' to quit.") 211 while True: 212 sensitive_query = input("\nQuery > ").strip() 213 if not sensitive_query or sensitive_query.lower() in ('exit', 'quit'): 214 break 215 216 results = system.process_query(sensitive_query) 217 print("\n" + "=" * 60) 218 print("ā FINAL ANSWER:") 219 print("=" * 60) 220 print(results['final_answer']) 221 print("=" * 60) 222 system.save_results(results) 223 224 225 if __name__ == "__main__": 226 main()