Jerome-PS / JN516xSniffer

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

Sous Linux: Premiere experience #2

Open KiwiHC16 opened 6 years ago

KiwiHC16 commented 6 years ago

Je viens de faire un test rapide dans une VM debian 9 avec deport d'écran X11.

Le port pour moi est /dev/ttyUSB0

le stty ne veut pas un -f mais un -F (corriger la doc pour linux).

Si je me mets root, wireshark desactive lua ;-( Si je me mets user normal wireshark fonctionne bien mais quand je lance la commande complete: wireshark -k -i sharkfifo -X lua_script:zb.lua -X lua_script1:comport=/dev/ttyUSB0 -X lua_script1:channel=25 apres avoir fait: as root

wireshark n est pas content et j ai:

capture d ecran 2018-01-30 a 14 53 32

Si j essaye de rouvrir depuis wireshark le pipe j'ai le meme message.

J ai bien le menu Lua:

capture d ecran 2018-01-30 a 14 58 46

La suite dans les jours à venir....

KiwiHC16 commented 6 years ago

Un bon vieux usermod -a -G wireshark ben sous root resoud le probleme dumpcap. Maintenant quand je fais menu-lua-zb-start, le cat /dev/ttyUSB0 tombe et j'ai

capture d ecran 2018-01-30 a 15 07 33

a suivre ....

KiwiHC16 commented 6 years ago

prwxrwxrwx 1 ben ben 0 janv. 30 15:08 sharkfifo -rw-r--r-- 1 ben ben 4 janv. 30 15:08 sharkfifoTx prwxrwxrwx 1 ben ben 0 janv. 30 14:58 sharkfifoTX -rwxrwxrwx 1 ben ben 5341 janv. 30 14:57 zb.lua

C est le bazar .... 2 sharkfifoTX, j ai oublié de dire que j ai change le nom du pipe dans lua pour avoir sharkfifoTX mais il crééé un fichier et pas un pipe...

Jerome-PS commented 6 years ago

Non, il ne faut pas faire ça! sharkfifoTx c'est une merde que j'ai du faire pour windows, sous Linux/Mac, il faut écrire directement dans le port série (d'où les paramètres en ligne de commande)

KiwiHC16 commented 6 years ago

J ai code en dur dans zb.lua le port: comport = '/dev/ttyUSB0', Pour avoir la commande toute simple: wireshark -k -i sharkfifo -X lua_script:zb.lua

Apres lancement, je ne touche a rien et le cat /dev/ttyUSB > sharkfifo tombe et je reçois :

capture d ecran 2018-01-30 a 15 22 55

KiwiHC16 commented 6 years ago

Bon bein c est pas mon jour.... la suite plus tard...

Jerome-PS commented 6 years ago

Si ton micro contrôleur est en train d’envoyer des datas, Wireshark est pas content. Essaye de le reset et de lui redemander l’envoi des trames avec le menu start...

Le 30 janv. 2018 à 15:24, Ben notifications@github.com a écrit :

Bon bein c est pas mon jour.... la suite plus tard...

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

KiwiHC16 commented 6 years ago

reset plus chmod 777 /dev/ttyUSB0 plus sous root echo /dev/ttyUSB0 > sharkfifo alors ca parle dans wireshark par contre cela ne reagit pas aux commandes lua.

KiwiHC16 commented 6 years ago

reset du JN5168, chmod 777 /dev/ttyUSB0; cat /dev/ttyUSB0 > /home/ben/sharkfifo as root puis wireshark -k -i sharkfifo -X lua_script:zb.lua as user puis lua->start

capture d ecran 2018-01-30 a 15 57 21

Wireshark indique ch20 alors que lua est sur ch 11 channel = 11 par défaut. Et apres aucune commande ne semble vouloir le faire réagir.

Jerome-PS commented 6 years ago

Si tu deviens membre du groupe dialout, t’as plus besoin de bricoler les droits de ttyUSB0 (en tout cas sous Ubuntu), sinon tu peux voir ce que ls -l /dev/ttyUSB0 te dit...

Sinon, le JN envoie le canal sur lequel il est lorsque tu fais start. Par contre j’ai pas encore fait l’envoi du canal par défaut du lua, donc il faut que je le fasse... Pour changer de canal (autre que celui compilé en dur dans le mcu, il faut passer par la boîte de dialogues ZB/Options.

Le 30 janv. 2018 à 15:58, Ben notifications@github.com a écrit :

reset du JN5168, chmod 777 /dev/ttyUSB0; cat /dev/ttyUSB0 > /home/ben/sharkfifo as root puis wireshark -k -i sharkfifo -X lua_script:zb.lua as user puis lua->start

Wireshark indique ch20 alors que lua est sur ch 11 channel = 11 par défaut. Et apres aucune commande ne semble vouloir le faire réagir.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

KiwiHC16 commented 6 years ago

dialout sous debian aussi, il faut que je le fasse cela sera plus simple.

Peux tu me faire une capture d'écran du comportement wireshark quand tu fais un changement de canal car moi je ne vois rien et il continu a me montrer les échange sur le canal initial (en gros je ne parviens pas à le faire changer de canal).

Est ce que dans la version actuelle je peux changer le canal utilisé et si oui comment ?

Jerome-PS commented 6 years ago

Comme écrit dans la doc

sudo usermod -a -G dialout $USER

Alors il y avait un bug avec le changement de canal dans le script lua... Mais ça devrait être corrigé là.

Jerome-PS commented 6 years ago

capture d ecran 2018-01-30 a 21 47 12 capture d ecran 2018-01-30 a 21 47 25

Jerome-PS commented 6 years ago

Précision, tant que tu ne fais pas start, tu ne verras rien dans Wireshark...

KiwiHC16 commented 6 years ago

Tests du jour: je suis www-data et j'ai les droits wireshark and dialout. restart JN5168 cat /dev/ttyUSB0 > /tmp/sharkfifo en place

dans zb.lua default_settings set to comport='/dev/ttyUSB0' et channel=11

wireshark -k -i /tmp/sharkfifo -X lua_script:zb.lua -X lua_script1:comport=/dev/ttyUSB0 -X lua_script1:channel=12

capture d ecran 2018-01-31 a 14 21 31

menu start: capture d ecran 2018-01-31 a 14 21 23

Visiblement lua ne prend pas en compte les infos en ligne de commande. Je demande 12, il prend 11 et demarre en 20.

Rien ne se produit si je fais le menu test, rien non plus avec le menu Options.

Peux tu me faire une capture d ecran quand tu fais test ou option.

KiwiHC16 commented 6 years ago

echo "STA\n" > /dev/ttyUSB0 demarre les traces echo "C:12\n" > /dev/ttyUSB0 ne fait rien echo "STO\n" > /dev/ttyUSB0 n'arrete pas la trace.

Jerome-PS commented 6 years ago

Hello, tu peux me mettre le texte que crache Wireshark sur la ligne de commande aussi?

Le 31 janv. 2018 à 14:24, Ben notifications@github.com a écrit :

Tests du jour: je suis www-data et j'ai les droits wireshark and dialout. restart JN5168 cat /dev/ttyUSB0 > /tmp/sharkfifo en place

dans zb.lua default_settings set to comport='/dev/ttyUSB0' et channel=11

wireshark -k -i /tmp/sharkfifo -X lua_script:zb.lua -X lua_script1:comport=/dev/ttyUSB0 -X lua_script1:channel=12

menu start:

Visiblement lua ne prend pas en compte les infos en ligne de commande. Je demande 12, il prend 11 et demarre en 25.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

Jerome-PS commented 6 years ago

Est-ce que tu es sûr que ton \n est interprété et qu’il n’envoie pas '\' et 'n'?

Le 31 janv. 2018 à 14:40, Ben notifications@github.com a écrit :

echo "STA\n" > /dev/ttyUSB0 demarre les traces echo "C:12\n" > /dev/ttyUSB0 ne fait rien

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

KiwiHC16 commented 6 years ago

zb.lua local default_settings = { -- comport = '\\.\pipe\wiresharkTx', -- channel = 20 comport = '/dev/ttyUSB0', channel = 11 }

wireshark -k -i /tmp/sharkfifo -X lua_script:zb.lua

www-data@Abeille:~$ echo "C:21\n" > /dev/ttyUSB0

www-data@Abeille:~$ echo "STA\n" > /dev/ttyUSB0

www-data@Abeille:~$ echo "STO\n" > /dev/ttyUSB0

www-data@Abeille:~$ echo "C:22\n" > /dev/ttyUSB0

www-data@Abeille:~$ echo "STA\n" > /dev/ttyUSB0

www-data@Abeille:~$ echo "STO\n" > /dev/ttyUSB0

www-data@Abeille:~$ echo "C:13\n" > /dev/ttyUSB0

www-data@Abeille:~$ echo "STA\n" > /dev/ttyUSB0

www-data@Abeille:~$ echo "STO\n" > /dev/ttyUSB0

capture d ecran 2018-01-31 a 14 46 10

Jerome-PS commented 6 years ago

J’ai eu des pb de stty aussi, d’où la commande ‘’’ stty -f /dev/ttyUSB0 38400 raw & cat /dev/ttyUSB0 > /tmp/sharkfifo ‘’’

Le 31 janv. 2018 à 14:24, Ben notifications@github.com a écrit :

Tests du jour: je suis www-data et j'ai les droits wireshark and dialout. restart JN5168 cat /dev/ttyUSB0 > /tmp/sharkfifo en place

dans zb.lua default_settings set to comport='/dev/ttyUSB0' et channel=11

wireshark -k -i /tmp/sharkfifo -X lua_script:zb.lua -X lua_script1:comport=/dev/ttyUSB0 -X lua_script1:channel=12

menu start:

Visiblement lua ne prend pas en compte les infos en ligne de commande. Je demande 12, il prend 11 et demarre en 25.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

Jerome-PS commented 6 years ago

Bizarre... tu utilises mon dernier commit ou tu as fait des modifs ?

Le 31 janv. 2018 à 14:46, Ben notifications@github.com a écrit :

www-data@Abeille:$ echo "C:21\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STA\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STO\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "C:22\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STA\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STO\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "C:13\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STA\n" > /dev/ttyUSB0 www-data@Abeille:~$ echo "STO\n" > /dev/ttyUSB0

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

Jerome-PS commented 6 years ago

Quand-même, t’es certain de ton echo ? Parce qu’il pourrait prendre une commande sur 2 là...

Le 31 janv. 2018 à 14:46, Ben notifications@github.com a écrit :

www-data@Abeille:$ echo "C:21\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STA\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STO\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "C:22\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STA\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STO\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "C:13\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STA\n" > /dev/ttyUSB0 www-data@Abeille:~$ echo "STO\n" > /dev/ttyUSB0

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

Jerome-PS commented 6 years ago

Enlève le \n du echo

Le 31 janv. 2018 à 14:46, Ben notifications@github.com a écrit :

www-data@Abeille:$ echo "C:21\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STA\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STO\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "C:22\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STA\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STO\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "C:13\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STA\n" > /dev/ttyUSB0 www-data@Abeille:~$ echo "STO\n" > /dev/ttyUSB0

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

Jerome-PS commented 6 years ago

Si tu tapes echo "xxx\n" xxx\n

Le 31 janv. 2018 à 14:46, Ben notifications@github.com a écrit :

www-data@Abeille:$ echo "C:21\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STA\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STO\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "C:22\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STA\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STO\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "C:13\n" > /dev/ttyUSB0 www-data@Abeille:$ echo "STA\n" > /dev/ttyUSB0 www-data@Abeille:~$ echo "STO\n" > /dev/ttyUSB0

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

KiwiHC16 commented 6 years ago

Dernier commit, git clone d'il y a 44 min

Jerome-PS commented 6 years ago

Ok, si tu mets pas le \n dans ton echo ça devrait mieux marcher... Tu peux me donner ce que Wireshark envoie dans la console quand tu essayes de changer de canal ?

Le 31 janv. 2018 à 15:08, Ben notifications@github.com a écrit :

Dernier commit, git clone d'il y a 44 min

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

KiwiHC16 commented 6 years ago

Wireshark ne met rien dans la console. J ai lua du commit d aujourd'hui mais le firmaware est celui d hier, as tu fait des changements dans le firmware ?

Peux tu faire un changement dans le firmware pour qu il envoie un message vers wireshark pour indiquer qu il a bien recu la commande, car la je suis dans le noir, je ne sais pas si le firmware fait qq chose.

echo avec ou sans \n ne change pas grand chose

KiwiHC16 commented 6 years ago

Je vois des commit sur le firmware, je recompile avec la derniere version Meme resultat. Bon je mets un mode trace sur UART1 sinon je ne vais pas avancer.

Jerome-PS commented 6 years ago

Pff, le passage de paramètres dans WS est buggé... Oui, je vais faire causer un peu plus ce soir...

Le 31 janv. 2018 à 15:29, Ben notifications@github.com a écrit :

Wireshark ne met rien dans la console. J ai lua du commit d aujourd'hui mais le firmaware est celui d hier, as tu fait des changements dans le firmware ?

Peux tu faire un changement dans le firmware pour qu il envoie un message vers wireshark pour indiquer qu il a bien recu la commande, car la je suis dans le noir, je ne sais pas si le firmware fait qq chose.

echo avec ou sans \n ne change pas grand chose

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

Jerome-PS commented 6 years ago

Au fait, t’as pas un cat ou un Wireshark mal tué dans un coin? Ça m’est déjà arrivé de me faire piéger à cause de ça...

Le 31 janv. 2018 à 15:29, Ben notifications@github.com a écrit :

Wireshark ne met rien dans la console. J ai lua du commit d aujourd'hui mais le firmaware est celui d hier, as tu fait des changements dans le firmware ?

Peux tu faire un changement dans le firmware pour qu il envoie un message vers wireshark pour indiquer qu il a bien recu la commande, car la je suis dans le noir, je ne sais pas si le firmware fait qq chose.

echo avec ou sans \n ne change pas grand chose

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

KiwiHC16 commented 6 years ago

Non (meme fait des reboot de machine)

KiwiHC16 commented 6 years ago

J ai un JN5168 avec des logs sur le UART1, on va pouvoir avancer....

Jerome-PS commented 6 years ago

J'ai ajouté un message d'erreur quand il ne comprend pas ce qu'on lui demande... STA et C:xx renvoient le canal. STO ne peut rien renvoyer. Il y a aussi des traces dans lua. Il faut prendre le nouveau script lua, ainsi que recopier le firmware... Les paramètres marchent très bien sous macOS avec la version 2.4.4 de wireshark. Sous windows ça n'a pas l'air de marcher. Sous Unbuntu wireshark 2.2.6 ça ne marche pas non plus. Mais les paramètres (dans menu Edit/Preferences) devrait marcher et mémoriser tes choix.

Tu peux faire ça pour regarder ce que reçoit wireshark:

stty -F /dev/ttyUSB0 38400 raw & cat /dev/ttyUSB0 | tee /tmp/sf.bin > /tmp/sharkfifo
hexdump -C /tmp/sf.bin

Je pense qu'il y a des problèmes de réglage de baudrate du PC, au moins sous macOS et peut-être sous Linux aussi... (faudrait que je vérifie au scope et faudra que j'essaye éventuellement de régler le baudrate avec lua).

Jerome-PS commented 6 years ago

OK, je ne trouve pas le code qui gère les paramètres dans le script lua, donc j'ai du faire une connerie et me marcher sur les pieds en faisant un commit... Je vais voir à corriger ça si je retrouve mon code, sinon je vais le réécrire...

KiwiHC16 commented 6 years ago

Ca y est j'ai une version qui marche sur linux !!!!

Premier point, il faut enlever echo sur ttyUSB0 sinon tout les octets de capture sont renvoyés sur le JN516x !!!!! stty -F /dev/ttyUSB0 115200 raw; stty -F /dev/ttyUSB0 115200 -echo Je suis aussi passé en 115200

J ai UART1 qui crache des logs a 115200 8N1

J'ai changé les caracteres de contrôles pour les commandes de "\n" à + et - et je filtre les caractères pour ne prendre que ceux dont j ai besoin (surtout quand echo est en place et que je prends des octets a ne plus finir).

Pour éviter le pipe non vide, je fais rm /tmp/sharkfifo; mkfifo /tmp/sharkfifo; cat /dev/ttyUSB0 > /tmp/sharkfifo

J'ai fait une difference entre INIT et START. INIT permet d envoyer les premiers trames a wireshark pour qu il sache quel type de capture arrive (A faire une seule fois apres le lancement de Wireshark). START permet de reprendre la capture apres un STOP.

On peut tester en ligne de commande avec: echo "+INIT-" > /dev/ttyUSB0 echo "+START-" > /dev/ttyUSB0 echo "+STOP-" > /dev/ttyUSB0

Ce qui est bien c est que seules lres 3 premiers char de la commande sont testés mais on peut envoyer le mot complet, c est plus facile a lire. On envoyer +STA- ou +START-

Les retour a la ligne '\n' ne sont pas pris en compte.

Je vais mettre a jour mon git avec cette version.

Jerome-PS commented 6 years ago

Ok, c'est un peu la merde, parce que normalement stty raw, ça vire l'echo... Ca y est j'ai ajouté le code de gestion de la ligne de commande, ça marche sous Linux, sous macOS et sous Windows...

Jerome-PS commented 6 years ago

En tout cas beau boulot!

KiwiHC16 commented 6 years ago

"Ok, c'est un peu la merde, parce que normalement stty raw, ça vire l'echo..." Visiblement pas sur une debian 9 en VM sur un mac....

La version que j ai est dans mon repo sous le nom Butineuse. J'ai fait un début de doc mais je vais laisser passer qq jours avant d'essayer de la faire plus propre.

Je n'ai pas encore regardé les derniers commit que tu as fait.

La je bloque sur un cat /dev/ttyUSB0 > fofi que je veux mettre en tache de fond avec un & mais le cat ne tiens pas et s'arrête alors quand sans le & pas de soucis.

Jerome-PS commented 6 years ago

Le 1 févr. 2018 à 17:32, Ben notifications@github.com a écrit :

"Ok, c'est un peu la merde, parce que normalement stty raw, ça vire l'echo..." Visiblement pas sur une debian 9 en VM sur un mac....

Ben sous mon Ubuntu non plus... Bon en fait raw c’est pourri, je vais mettre tous le flags qui m’intéressent moi-même, c’est plus sûr... La version que j ai est dans mon repo sous le nom Butineuse. J'ai fait un début de doc mais je vais laisser passer qq jours avant d'essayer de la faire plus propre.

Je n'ai pas encore regardé les derniers commit que tu as fait.

La je bloque sur un cat /dev/ttyUSB0 > fofi que je veux mettre en tache de fond avec un & mais le cat ne tiens pas et s'arrête alors quand sans le & pas de soucis.

Bizarre, là sous Ubuntu ça marche...

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

KiwiHC16 commented 6 years ago

stty n'est pas mon amis, j'ai toujours galéré avec. Je fini toujours à avoir une ligne de commande avec tous les paramètres .... peut être avec sane au lieu de raw....

Oui, bizarre le truc du cat &, peut être la fatigue.

Est ce que Jerome-PS et Jerome H..... des échanges de mails est la meme personne ?

bedenko commented 6 years ago

You can try switch echo command with printf. It works better. Or use -n and -e flags with echo command.

command printf "STA\n" > /dev/ttyUSB0 works for me.