91 lines
2.6 KiB
Python
91 lines
2.6 KiB
Python
"""
|
|
Minimal test to isolate the memory corruption crash.
|
|
|
|
Add this route to your app.py temporarily to test if the crash
|
|
is in Flask/Pillow or in stegasoo code.
|
|
|
|
Usage:
|
|
1. Add this code to app.py
|
|
2. Restart the server
|
|
3. Use the /test-capacity endpoint instead of /api/compare-capacity
|
|
4. If it crashes: Flask or Pillow issue
|
|
5. If it works: Stegasoo code issue
|
|
"""
|
|
|
|
# Add these imports at the top of app.py if not present:
|
|
# from PIL import Image
|
|
# import io
|
|
|
|
# Add this route to app.py:
|
|
|
|
@app.route('/test-capacity', methods=['POST'])
|
|
def test_capacity():
|
|
"""
|
|
Minimal capacity test - no stegasoo code, just PIL.
|
|
"""
|
|
carrier = request.files.get('carrier')
|
|
if not carrier:
|
|
return jsonify({'error': 'No carrier image provided'}), 400
|
|
|
|
try:
|
|
# Read the file data
|
|
carrier_data = carrier.read()
|
|
|
|
# Method 1: Just get size from PIL
|
|
buffer = io.BytesIO(carrier_data)
|
|
img = Image.open(buffer)
|
|
width, height = img.size
|
|
fmt = img.format
|
|
mode = img.mode
|
|
img.close()
|
|
buffer.close()
|
|
|
|
# Simple capacity calculation (no scipy, no numpy)
|
|
pixels = width * height
|
|
lsb_bytes = (pixels * 3) // 8
|
|
blocks = (width // 8) * (height // 8)
|
|
dct_bytes = (blocks * 16) // 8 - 10
|
|
|
|
return jsonify({
|
|
'success': True,
|
|
'width': width,
|
|
'height': height,
|
|
'format': fmt,
|
|
'mode': mode,
|
|
'lsb': {
|
|
'capacity_bytes': lsb_bytes,
|
|
'capacity_kb': round(lsb_bytes / 1024, 1),
|
|
},
|
|
'dct': {
|
|
'capacity_bytes': dct_bytes,
|
|
'capacity_kb': round(dct_bytes / 1024, 1),
|
|
}
|
|
})
|
|
except Exception as e:
|
|
import traceback
|
|
return jsonify({'error': str(e), 'trace': traceback.format_exc()}), 500
|
|
|
|
|
|
# Alternative: completely bypass PIL too
|
|
@app.route('/test-capacity-nopil', methods=['POST'])
|
|
def test_capacity_nopil():
|
|
"""
|
|
Ultra-minimal test - no PIL, no stegasoo.
|
|
"""
|
|
carrier = request.files.get('carrier')
|
|
if not carrier:
|
|
return jsonify({'error': 'No carrier image provided'}), 400
|
|
|
|
try:
|
|
carrier_data = carrier.read()
|
|
|
|
# Just return size info, no image processing at all
|
|
return jsonify({
|
|
'success': True,
|
|
'data_size': len(carrier_data),
|
|
'first_bytes': carrier_data[:20].hex() if len(carrier_data) >= 20 else carrier_data.hex(),
|
|
})
|
|
except Exception as e:
|
|
import traceback
|
|
return jsonify({'error': str(e), 'trace': traceback.format_exc()}), 500
|