Jerome-PS / JN516xSniffer

Transform a Xiaomi Zigbee gadget into a Zigbee sniffer.
40 stars 14 forks source link

Sous Linux: Deuxieme experience #8

Open KiwiHC16 opened 6 years ago

KiwiHC16 commented 6 years ago

./Sniff.py /dev/ttyUSB0 ne demarre pas:

root@Abeille:/var/www/JN516xSniffer/JN516xSniffer/wireshark_plugin# ./Sniff.py /dev/ttyUSB0
Traceback (most recent call last):
  File "./Sniff.py", line 363, in <module>
    main(sys.argv)
  File "./Sniff.py", line 31, in main
    parser = argparse.ArgumentParser(description="interface between wireshark and a JN516x chip used as a ZigBee traffic sniffer", epilog=listcomports())
  File "./Sniff.py", line 16, in listcomports
    import serial.tools.list_ports
ImportError: No module named 'serial'

=> modifier la doc.

python Sniff.py /dev/ttyUSB0 plante sur del pipe:

root@Abeille:/var/www/JN516xSniffer/JN516xSniffer/wireshark_plugin# python Sniff.py /dev/ttyUSB0
WARNING this program has only been tested with Python 3!
Detected platform is Linux
~~~~~~~~~~~~~~~~~~
Warning, user not in group 'wireshark', you might not be able to use wireshark
    Try: sudo usermod -a -G wireshark $USER
~~~~~~~~~~~~~~~~~~
Using serial port '/dev/ttyUSB0' at 115200 Baud
Traceback (most recent call last):
  File "Sniff.py", line 363, in <module>
    main(sys.argv)
  File "Sniff.py", line 144, in main
    pipeRx = PyFIFO(pipeRxName, "w")
  File "Sniff.py", line 245, in __init__
    self.delfifo()
  File "Sniff.py", line 256, in delfifo
    except FileNotFoundError as e:
NameError: global name 'FileNotFoundError' is not defined

=> Faire un petit correctif.

Pour premier lancement j ai commenté la ligne 256

os.remove(self.path)

Apres avoir quitté wireshark, le script ne me rend pas la main, je suis obligé de le tuer. => Une petite modif ?

Je passe sous un utilisateur autre que root, wireshark est ok maintenant pour lancer lua mais je vois pas de trace dans wireshark (J'ai utilisé le bin pour le JN5168).

Je vais tester avec ma vieille version...

KiwiHC16 commented 6 years ago

Ma vieille version marche toujours... Je vais compiler la version JN5168 sous windows IDE NXP.

Dans la conf du projet ajouth de la variable PATH

Modif du makefile:

SDK_BASE_DIR ?= $(abspath ../../sdk/$(JENNIC_SDK)/)

TOOL_COMMON_BASE_DIR= c:\nxp\bstudio_nxp\sdk\Tools

JENNIC_CHIP ?= JN5168

Compile Ok,

Je lance Sniff et magie ca marche !!! Je vois des ACK.

MERCI JEROME !!!

Jerome-PS commented 6 years ago

Salut,

Merci d'avoir testé! Quand tu lances "python Sniff.py /dev/ttyUSB0", c'est Python 2 qui est utilisé, et en fait c'est un peu galère d'avoir du code qui est compatible Python 2 et Python 3, d'où le message d'avertissement qui dit qu'il vaut mieux utiliser Python 3 (mais je crois que je vais forcer cette version...).

J'ai corrigé le Sniff.py, il devrait maintenant te dire ce qui ne va pas si tu le lances avec python3 ou avec ./Sniff.py... (je le sais d'après le message d'erreur, mais il devrait te le dire de manière plus explicite maintenant et même te proposer la commende pour corriger le problème...).

Pour les chemins du Makefile, c'est toujours chiant, parce que ça dépend de la machine, mais je pense qu'en fait ce que tu as fait en remettant le chemin d'origine est bien, parce que sous Eclipse il faut creuser pour changer les chemins, alors que chez moi je peux passer en ligne de commande facilement...

Bien content que les ACK marchent finalement, dommage qu'il ait fallu jouer du objdump pour en arriver jusque là, j'aurais préféré lire la doc...

PS.: ç'en est où du capteur de piscine?

A+, Jérôme.

KiwiHC16 commented 6 years ago

Salut,

Comment as tu trouvé les commandes XCV_vDevWriteReg32 et les XCV_REG_SCTL et autres ?

Ce n’est pas objdump qui donne ces infos !?

Pour la piscine pas trop avancé car je suis sur des problèmes de perte d’équipement après un certain temp et sur des problèmes de routage. Mais il va falloir que je les mette de côté car la piscine tourne et attend son thermomètre.

Mais demain je vais regarder la sonde qui est en erreur sur la pompe à chaleur qui fait que celle ci ne tourne plus...

Ben

Le 30 avr. 2018 à 22:10, Jerome-PS notifications@github.com a écrit :

Salut,

Merci d'avoir testé! Quand tu lances "python Sniff.py /dev/ttyUSB0", c'est Python 2 qui est utilisé, et en fait c'est un peu galère d'avoir du code qui est compatible Python 2 et Python 3, d'où le message d'avertissement qui dit qu'il vaut mieux utiliser Python 3 (mais je crois que je vais forcer cette version...).

J'ai corrigé le Sniff.py, il devrait maintenant te dire ce qui ne va pas si tu le lances avec python3 ou avec ./Sniff.py... (je le sais d'après le message d'erreur, mais il devrait te le dire de manière plus explicite maintenant et même te proposer la commende pour corriger le problème...).

Pour les chemins du Makefile, c'est toujours chiant, parce que ça dépend de la machine, mais je pense qu'en fait ce que tu as fait en remettant le chemin d'origine est bien, parce que sous Eclipse il faut creuser pour changer les chemins, alors que chez moi je peux passer en ligne de commande facilement...

Bien content que les ACK marchent finalement, dommage qu'il ait fallu jouer du objdump pour en arriver jusque là, j'aurais préféré lire la doc...

PS.: ç'en est où du capteur de piscine?

A+, Jérôme.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Jerome-PS/JN516xSniffer/issues/8#issuecomment-385514054, or mute the thread https://github.com/notifications/unsubscribe-auth/AIJ1Kj7SMovjCdJr9xj9G8daYBZyszklks5tt2_LgaJpZM4TsZBQ.

Jerome-PS commented 6 years ago

Ben avec objdump tu as des adresses et puis tu cherches à quels registres ça correspond, par exemple dans #include ... C'est un travail de fourmi et de script python qui fait l'arithmétique et qui essaye de deviner les noms de registres à ta place pour automatiser le processus.

Aïe, aïe, quand les ennuis s'entassent, ça peut devenir décourageant. Mais en même temps c'est sympa de profiter de la piscine!

J'ai réussis à faire marcher la stack NXP avec les capteurs Xiaomi, mais je n'arrive toujours pas à comprendre pourquoi le join codé à la main ne fonctionne pas... Faut que je fasse tourner mon capteur d'humidité et je me remettrais peut-être au code plus tard, à moins que je n'arrive à mettre la main sur du Tradfri en panne dont je pourrait récupérer les proc pour voir si la doc est meilleure de ce côté-là...

Jérôme.

KiwiHC16 commented 6 years ago

D’après les log que je prend actuellement les Tradfri utiliseraient du silicon lab (d apres les mac adresse).

Le 30 avr. 2018 à 22:25, Jerome-PS notifications@github.com a écrit :

Ben avec objdump tu as des adresses et puis tu cherches à quels registres ça correspond, par exemple dans #include ... C'est un travail de fourmi et de script python qui fait l'arithmétique et qui essaye de deviner les noms de registres à ta place pour automatiser le processus.

Aïe, aïe, quand les ennuis s'entassent, ça peut devenir décourageant. Mais en même temps c'est sympa de profiter de la piscine!

J'ai réussis à faire marcher la stack NXP avec les capteurs Xiaomi, mais je n'arrive toujours pas à comprendre pourquoi le join codé à la main ne fonctionne pas... Faut que je fasse tourner mon capteur d'humidité et je me remettrais peut-être au code plus tard, à moins que je n'arrive à mettre la main sur du Tradfri en panne dont je pourrait récupérer les proc pour voir si la doc est meilleure de ce côté-là...

Jérôme.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Jerome-PS/JN516xSniffer/issues/8#issuecomment-385517884, or mute the thread https://github.com/notifications/unsubscribe-auth/AIJ1KpGPm1jbLKblMd2dolrOX4DVGphcks5tt3MugaJpZM4TsZBQ.