dchristl / macless-haystack

Create your own AirTag with OpenHaystack, but without the need to own an Apple device
GNU General Public License v3.0
356 stars 58 forks source link

no positions with multi key files #82

Closed dschense closed 5 months ago

dschense commented 5 months ago

I'm not quite sure if I'm not doing something wrong.

With a single key, generated via generate_keys.py, everything seems to work as intended. The firmware can be patched and the dongle can be flashed so that location data can also be retrieved.

But as soon as I generate multiple keys (no matter how many: 5, 20, 50, 100,..), I can flash the patched firmware to the NRF51822 dongle, but I never get a location. I have tested this procedure several times. Only once did I succeed in patching the firmware with a keyfile containing 20 keys and was able to send location data after the flash.

Is there anything I have overlooked?

1Richter commented 5 months ago

what was the command, where you added multiple keys to the .py script? Have you tried to change the generate_keys.py itself with changing MAX_KEYS to 20, and the default in the -n argument to 20 and then make the command as you would with 1 key? Maybe there is a missing blank line at the end of the keyfile? If this works, the keyfile parser woould't stop until blank line I guess.

dschense commented 5 months ago

Command: python3 generate_keys.py -tinfs i_agree -n 50 -v got the PREFIX Files in the output folder. Also tried to change the generation script to Default 50 like you told.

patched:

# For the nrf51
export LC_CTYPE=C
xxd -p -c 100000 PREFIX_keyfile | xxd -r -p | dd of=nrf51_firmware.bin skip=1 bs=1 seek=$(grep -oba OFFLINEFINDINGPUBLICKEYHERE! nrf51_firmware.bin | cut -d ':' -f 1) conv=notrunc

still the same problem. Dont get any location data from devices with more than 1 key included in the files.

dschense commented 5 months ago

Its fixed for me.

did not see the MAX_KEYS value within the firmware. Keyfile with 50, but firmware with 20 does not match. my fault.