A private Lumina server for IDA Pro
A private Lumina server that can be used with IDA Pro 7.2+.
lumen.abda.nl runs this server.
You can read about the protocol research here.
In this method precompiled docker images will be downloaded, All you need is docker-compose.yml.
docker-engine and docker-compose..p12/.pfx extension) to ./dockershare and set the key password in .env as PKCSPASSWD../dockershare/config.toml.docker-compose up.config.toml, a hexrays.crt will be generated in ./dockershare to be copied to the IDA install directory.git clone https://github.com/naim94a/lumen.git
Get a rust toolchain: https://rustup.rs/
cd lumen
Setup a the database
install postgres
install diesel-cli and run migrations:
cargo install diesel_cli --no-default-features -Fpostgres
diesel --config-file common/diesel.toml \
--database-url postgres://postgres:password@localhost/lumen \
migration runcargo build --release
./lumen -c config.tomlIf you used LUMEN in the past, remove the LUMINA settings in the ida.cfg or idauser.cfg files, otherwise you will get a warning about bad config parameters.
#!/bin/sh
export LUMINA_TLS=false
$1set LUMINA_TLS=false
%1LUMINA_HOST, LUMINA_PORT, and change their values to the address of your lumen server.LUMINA_PORT.Example:
LUMINA_HOST = "192.168.1.1";
LUMINA_PORT = 1234
// Only if TLS isn't used:
LUMINA_TLS = NOA listener is plain TCP unless its tls table includes a certificate. This permits both connection types on separate ports:
[lumina]
server_name = "lumen"
[[lumina.listeners]]
bind_addr = "0.0.0.0:1234" # TLS
[lumina.listeners.tls]
server_cert = "lumen.p12"
[[lumina.listeners]]
bind_addr = "0.0.0.0:1235" # plain TCPConfigure TLS-capable IDA clients to use port 1234; configure plain clients to use port 1235 and set LUMINA_TLS = NO.
IDA Pro uses a pinned certificate for Lumina's communcation, so adding a self-signed certificate to your root certificates won't work. Luckily, we can override the hard-coded public key by writing a DER-base64 encoded certificate to "hexrays.crt" in IDA's install directory.
You may find the following commands useful:
# create a certificate
openssl req -x509 -newkey rsa:4096 -keyout lumen_key.pem -out lumen_crt.pem -days 365 -nodes
# convert to pkcs12 for lumen; used for `lumen.tls` in config
openssl pkcs12 -export -out lumen.p12 -inkey lumen_key.pem -in lumen_crt.pem
# export public-key for IDA; Copy hexrays.crt to IDA installation folder
openssl x509 -in lumen_crt.pem -out hexrays.crtNo attempt is made to merge function data - this may cause a situation where metadata is inconsistent. Instead, the metadata with the highest calculated score is returned to the user.
Developed by Naim A.; License: MIT.
No open issues yet, or sync has not completed.