MySafeCode commited on
Commit
4347215
·
verified ·
1 Parent(s): 951ed46

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +254 -0
app.py ADDED
@@ -0,0 +1,254 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Flask, render_template, request, jsonify, send_file, session
2
+ from datetime import datetime, timedelta
3
+ import requests
4
+ import json
5
+ import os
6
+ import time
7
+ import base64
8
+ from Crypto.PublicKey import RSA
9
+ from Crypto.Cipher import PKCS1_OAEP
10
+ import qrcode
11
+ import io
12
+ import base58
13
+ import hashlib
14
+ import secrets
15
+
16
+ app = Flask(__name__)
17
+ app.secret_key = secrets.token_hex(32)
18
+
19
+ # Storage files
20
+ WALLET_FILE = 'wallets.json'
21
+ PRIVILEGE_FILE = 'privilege_log.json'
22
+
23
+ # Initialize storage files
24
+ def init_storage():
25
+ if not os.path.exists(WALLET_FILE):
26
+ with open(WALLET_FILE, 'w') as f:
27
+ json.dump({}, f)
28
+
29
+ if not os.path.exists(PRIVILEGE_FILE):
30
+ with open(PRIVILEGE_FILE, 'w') as f:
31
+ json.dump({}, f)
32
+
33
+ class NanoWallet:
34
+ """Simple Nano-like wallet implementation"""
35
+
36
+ def __init__(self):
37
+ self.wallets = self.load_wallets()
38
+
39
+ def load_wallets(self):
40
+ try:
41
+ with open(WALLET_FILE, 'r') as f:
42
+ return json.load(f)
43
+ except:
44
+ return {}
45
+
46
+ def save_wallets(self):
47
+ with open(WALLET_FILE, 'w') as f:
48
+ json.dump(self.wallets, f)
49
+
50
+ def generate_wallet(self, user_id):
51
+ """Generate a simple wallet address"""
52
+ # Generate a unique address
53
+ timestamp = str(time.time())
54
+ random_bytes = secrets.token_bytes(16)
55
+ address_data = f"{user_id}{timestamp}".encode() + random_bytes
56
+ address = base58.b58encode(hashlib.sha256(address_data).digest()[:20]).decode()
57
+
58
+ # Generate a simple "private key" (for demo purposes)
59
+ private_key = secrets.token_hex(32)
60
+
61
+ wallet_data = {
62
+ 'address': address,
63
+ 'private_key': private_key, # In real implementation, encrypt this!
64
+ 'balance': '0.000000',
65
+ 'last_update': time.time()
66
+ }
67
+
68
+ self.wallets[user_id] = wallet_data
69
+ self.save_wallets()
70
+
71
+ return wallet_data
72
+
73
+ def get_wallet(self, user_id):
74
+ if user_id not in self.wallets:
75
+ return self.generate_wallet(user_id)
76
+ return self.wallets[user_id]
77
+
78
+ def update_balance(self, user_id):
79
+ """Simulate balance updates every 15 seconds"""
80
+ if user_id in self.wallets:
81
+ # Generate a small random amount
82
+ import random
83
+ increase = random.uniform(0.000001, 0.00001)
84
+ current = float(self.wallets[user_id]['balance'])
85
+ self.wallets[user_id]['balance'] = f"{current + increase:.6f}"
86
+ self.wallets[user_id]['last_update'] = time.time()
87
+ self.save_wallets()
88
+
89
+ class PrivilegeSystem:
90
+ def __init__(self):
91
+ self.privilege_log = self.load_privilege_log()
92
+
93
+ def load_privilege_log(self):
94
+ try:
95
+ with open(PRIVILEGE_FILE, 'r') as f:
96
+ return json.load(f)
97
+ except:
98
+ return {}
99
+
100
+ def save_privilege_log(self):
101
+ with open(PRIVILEGE_FILE, 'w') as f:
102
+ json.dump(self.privilege_log, f)
103
+
104
+ def can_grab_privilege(self, user_id, privilege_type):
105
+ """Check if user can grab privilege (4-hour cooldown)"""
106
+ user_key = f"{user_id}_{privilege_type}"
107
+
108
+ if user_key not in self.privilege_log:
109
+ return True, 0
110
+
111
+ last_grab = self.privilege_log[user_key]
112
+ current_time = time.time()
113
+ cooldown = 4 * 3600 # 4 hours in seconds
114
+
115
+ time_since_last = current_time - last_grab
116
+ time_remaining = max(0, cooldown - time_since_last)
117
+
118
+ return time_since_last >= cooldown, time_remaining
119
+
120
+ def grab_privilege(self, user_id, privilege_type):
121
+ """Register privilege grab"""
122
+ user_key = f"{user_id}_{privilege_type}"
123
+ self.privilege_log[user_key] = time.time()
124
+ self.save_privilege_log()
125
+
126
+ # Register with external service
127
+ try:
128
+ response = requests.get(
129
+ 'https://1hit.no/priv/default.php',
130
+ params={
131
+ 'user': user_id,
132
+ 'type': privilege_type,
133
+ 'time': int(time.time())
134
+ },
135
+ timeout=5
136
+ )
137
+ print(f"Registered with external service: {response.status_code}")
138
+ except Exception as e:
139
+ print(f"External registration failed: {e}")
140
+
141
+ return True
142
+
143
+ # Initialize systems
144
+ init_storage()
145
+ wallet_system = NanoWallet()
146
+ privilege_system = PrivilegeSystem()
147
+
148
+ @app.route('/')
149
+ def index():
150
+ # Generate or get user ID from session
151
+ if 'user_id' not in session:
152
+ session['user_id'] = secrets.token_hex(8)
153
+
154
+ user_id = session['user_id']
155
+ wallet = wallet_system.get_wallet(user_id)
156
+
157
+ return render_template('index.html',
158
+ wallet=wallet,
159
+ user_id=user_id)
160
+
161
+ @app.route('/get_wallet')
162
+ def get_wallet():
163
+ user_id = session.get('user_id', secrets.token_hex(8))
164
+ wallet = wallet_system.get_wallet(user_id)
165
+
166
+ # Update balance for display
167
+ wallet_system.update_balance(user_id)
168
+
169
+ return jsonify(wallet)
170
+
171
+ @app.route('/download_wallet')
172
+ def download_wallet():
173
+ user_id = session.get('user_id')
174
+ if not user_id:
175
+ return "No wallet found", 404
176
+
177
+ wallet = wallet_system.get_wallet(user_id)
178
+
179
+ # Create wallet data file
180
+ wallet_data = f"""=== WEIRD PRIVILEGE SPACE WALLET ===
181
+ User ID: {user_id}
182
+ Wallet Address: {wallet['address']}
183
+ Private Key: {wallet['private_key']}
184
+ Balance: {wallet['balance']} NANO
185
+ Last Updated: {datetime.fromtimestamp(wallet['last_update']).isoformat()}
186
+
187
+ === WARNING ===
188
+ Keep this file secure! This is your digital identity.
189
+ """
190
+
191
+ # Return as downloadable file
192
+ return send_file(
193
+ io.BytesIO(wallet_data.encode()),
194
+ as_attachment=True,
195
+ download_name=f'wallet_{user_id}.txt',
196
+ mimetype='text/plain'
197
+ )
198
+
199
+ @app.route('/check_privilege/<privilege_type>')
200
+ def check_privilege(privilege_type):
201
+ user_id = session.get('user_id')
202
+ if not user_id:
203
+ return jsonify({'error': 'No user session'}), 401
204
+
205
+ can_grab, time_remaining = privilege_system.can_grab_privilege(user_id, privilege_type)
206
+
207
+ return jsonify({
208
+ 'can_grab': can_grab,
209
+ 'time_remaining': time_remaining,
210
+ 'cooldown_hours': 4
211
+ })
212
+
213
+ @app.route('/grab_privilege/<privilege_type>')
214
+ def grab_privilege(privilege_type):
215
+ user_id = session.get('user_id')
216
+ if not user_id:
217
+ return jsonify({'error': 'No user session'}), 401
218
+
219
+ can_grab, time_remaining = privilege_system.can_grab_privilege(user_id, privilege_type)
220
+
221
+ if not can_grab:
222
+ return jsonify({
223
+ 'success': False,
224
+ 'error': f'Privilege cooldown active. Wait {time_remaining:.0f} seconds.'
225
+ })
226
+
227
+ # Grab the privilege
228
+ privilege_system.grab_privilege(user_id, privilege_type)
229
+
230
+ return jsonify({
231
+ 'success': True,
232
+ 'message': f'Grabbed {privilege_type} privilege!',
233
+ 'simulation': 'You have simulated privilege now.'
234
+ })
235
+
236
+ @app.route('/simulate_privilege')
237
+ def simulate_privilege():
238
+ return jsonify({
239
+ 'message': 'YOU HAVE SIMULATED PRIVILEGE NOW',
240
+ 'timestamp': datetime.now().isoformat()
241
+ })
242
+
243
+ @app.route('/qr_code/<address>')
244
+ def generate_qr(address):
245
+ # Generate QR code for wallet address
246
+ qr = qrcode.make(address)
247
+ img_io = io.BytesIO()
248
+ qr.save(img_io, 'PNG')
249
+ img_io.seek(0)
250
+
251
+ return send_file(img_io, mimetype='image/png')
252
+
253
+ if __name__ == '__main__':
254
+ app.run(debug=True, port=5000)