A tiny Python proxy that fixes IDA Pro's Lumina connection drops on limited upload bandwidth.
IDA sends all function hashes in a single giant TCP frame. On slow uplinks the OS aborts the connection mid-send:
lumina: connection closed (send: An established connection was aborted by the software in your host machine.). Trying to reconnect...
The proxy sits between IDA and your Lumina server. It receives the full PULL request locally (fast, loopback), splits the hash list into small batches, sends them one at a time to the real server, then returns a single merged response to IDA.
IDA ──(loopback)──► lumina_proxy.py ──(paced)──► ida.int.mov:1234
- Python 3.7+ (stdlib only, no pip installs)
1. Edit the config at the top of lumina_proxy.py:
LISTEN_ADDR = "127.0.0.1"
LISTEN_PORT = 20667 # IDA connects here
SERVER_HOST = "ida.int.mov" # your real Lumina server
SERVER_PORT = 1234
CHUNK_SIZE = 300 # hashes per batch (lower = safer on slow uplink)
INTER_BATCH_DELAY = 0.05 # seconds between batches (0 to disable)2. Run the proxy:
python lumina_proxy.py3. In IDA → Options → Lumina:
| Setting | Value |
|---|---|
| Host | 127.0.0.1 |
| Port | 20667 |
| TLS | off |
| Command | Behaviour |
|---|---|
| PULL (0x0e) | Chunked — split & merged transparently |
| PUSH (0x10) | Pass-through |
| HIST (0x2f) | Pass-through |
| DEL (0x18) | Pass-through |