MyCryptoChat, nouvelle version en PHP !
Tags de l'article : Actualité, Développement, Systèmes et réseaux
Et voilà, comme promis, je viens de mettre en ligne le code source de MyCryptoChat en PHP !
Pour ceux qui n'auraient pas suivi :
MyCryptoChat est une petite application de chat très simple, sécurisée à la ZeroBin. C’est-à-dire que les conversations sont intégralement chiffrées côté client.
Vous créez une conversation, vous donnez le lien à un ami, et hop, vous pouvez converser en toute sécurité.
Les seules personnes qui peuvent accéder à la conversation sont celles qui ont eu l’url de la conversation et la clef de chiffrement contenue dans l’ancre (après le # dans l’url).
Les fonctionnalités en détail :
- Ultra simple car seulement 2 boutons : “créer une salle de chat” et “envoyer le message”.
- Les chiffrements et déchiffrements sont intégralement réalisés par le navigateur. Le serveur ne sait absolument pas ce que vous dites.
- Chaque salle de chat a une durée de vie (de 15 minutes à 24 heures). A la fin, toute trace de la conversation aura disparu.
- Les données sont chiffrées avec AES 256bits.
- 1 minute après avoir quitté le chat, le serveur ne sait déjà plus qui vous étiez ni quelle était votre adresse IP (même les pseudos sont chiffrés !)
- Vous pouvez changer vous-même la clef de chiffrement en modifiant l’ancre dans l’url (la partie après le #) avant d’envoyer votre premier message.
- Le nombre de personnes qui suivent la conversation est affiché. (Buggué pour le moment)
- Génération d’avatars pour chaque utilisateur (afin d’éviter l’usurpation d’identité).
Le code source de l'application est disponible sur codeplex : http://mycryptochatphp.codeplex.com/
La première version de l'application en PHP est téléchargeable ici : http://mycryptochatphp.codeplex.com/releases/view/117318
A noter :
* Il n'y a pas d'installation, il suffit de copier/coller les données du zip dans un dossier, de donner les droits en écriture sur le fichier de base de données (dans le dossier db), et c'est parti !
* Votre serveur a juste besoin de PHP 5.4 et du module PDO pour SQLite.
* Il y a un bug avec le nombre de connectés, je le corrigerais quand j'aurais le temps...
Encore une fois, je suis disponible dans les commentaires si vous avez des questions.
Bonne journée à tous !
Photo Credit: rpongsaj
48 commentaires
Blogus - 15/01/2014 à 11:18:21
Bravo et merci !
Testé et adopté.
Blogus - 15/01/2014 à 11:36:22
Aïe...
J'ai un message d'erreur à chaque fois que j'écris un message après création d'un salon :
"clé corrompue, êtes vous sûr d'avoir copié entièrement l'url"
Je n'ai rien copié.... je viens de créer le salon!
Triton - 15/01/2014 à 11:54:15
Super ! J'ai utilisé quelques fois la première version, j'attendais avec impatience de voir ce que ça allait donner en PHP. :-) Je pense que je vais essayer de l'installer chez moi.
Tommy - 15/01/2014 à 12:05:12
@Blogus : Etrange :-o
Je n'ai pas eu ce souci. Ton JavaScript est bien activé ?
Je vais faire quelques tests dans le doute...
Blogus - 15/01/2014 à 12:19:03
@Tommy :
Affirmatif...
Même problème avec Firefox et IE
NiKaro - 15/01/2014 à 12:22:20
Une configuration particulière à apporter quelque part (php.ini, etc.) ?
La room est bien créée, mais il n'y a pas de clé (pas de # dans l'URL) et j'ai le message suivant si j'essaie de poster un message : « The key is missing (the part of the website url after '#'). ».
Et si je rajoute « #nimportequoi » dans l'URL, je n'ai plus le message d'erreur, mais rien ne s'affiche dans la conversation.
Debian Jessie (testing) : apache (2.4) installé, php5 installé, php5-sqlite installé.
PoGo - 15/01/2014 à 12:26:51
Salut,
Il faudrait inclure un test sur les droits d'écriture pour la base de données.
Si le script php n'a pas les droits, le chat s'ouvre dans clé et est marqué comme expiré :)
Tommy - 15/01/2014 à 12:28:40
@PoGo : Arf, bien vu, je n'ai pas pensé à ce test. Je l'ajouterais quand je pourrais.
Du coup, pour les autres, pensez à donner les droits d'accès à la base de données dans db :)
shaafilms - 15/01/2014 à 12:29:25
hello lors de la création de la room j'ai ceci http://prntscr.com/2jinvk
NiKaro - 15/01/2014 à 12:38:39
Effectivement, avec les bons droits ça passe mieux, thanks @Pogo et @Tommy ! Nickel.
Triton - 15/01/2014 à 12:54:21
@shaafilms : J'ai eu le même soucis et je l'ai corrigé en installant php5-sqlite que j'avais oublié. (J'ai installé apache, php5 et sqlite sur ma machine pour tester et j'avais oublié php5-sqlite.)
Maintenant je peux démarrer un nouveau chat mais il est effectivement sans clé et considéré comme expiré.
@Tommy et Pogo : C'est possible d'avoir une toute petite explication sur les droits à ajouter ? Où et comment ? Merci :-)
blogus - 15/01/2014 à 12:55:56
@Tommy :
Et comment fait-on cela, svp ?
V!nc3r - 15/01/2014 à 12:59:16
Yeah, la version php \o/
Tout comme certains, j'ai le fameux message
The key seems to be corrupted. Are you sure that you copied the full URL (with #xxxxxxxxxxxxxxxx-xxxxxxx-xxxxxxxx) ?
Je suis sur une offre perso d'OVH, et mon phpinfo() me donne :
PHP Version 5.3.16
PDO drivers mysql, pgsql, sqlite, sqlite2
J'ai testé les droits 777 et 707 sur le dossier db, et même sur le fichier inclu chatrooms.sqlite, rien n'y fait.
Pour voir le bug en live, mon site est en lien sur mon pseudo.
NiKaro - 15/01/2014 à 13:17:09
Moi j'ai passer l'utilisateur 'www-data' en propriétaire sur le dossier complet, et à partir de là ça a fonctionné.
chown -R www-data:www-data /srv/www/MyCryptoChat
V!nc3r - 15/01/2014 à 13:24:32
Je peux pas enfourner une telle commande sur mon mutualisé :/
juzam51 - 15/01/2014 à 13:30:17
super boulot, testé et approuvé sur mon hébergement web
NiKaro - 15/01/2014 à 13:32:43
@V!nc3r : avec ton client FTP tu devrais pouvoir changer le propriétaire des fichiers (FileZilla le permet il me semble), mais bon je ne sais pas si c'est recommandé ni ce que ça va donner, à voir.
Tommy - 15/01/2014 à 13:37:01
@V!nc3r : Oui normalement tu dois pouvoir modifier directement dans ton client FTP les droits d'écriture sur un fichier. Clic droit, Droits d'accès au fichier, droits d'écriture et de lecture sur le fichier.
V!nc3r - 15/01/2014 à 13:45:34
Ouep c'est ce que j'ai fait, cf mon premier message, c'est pour ça que ça m'intrigue (via http://filezilla.fr/files/filezilla_permissions_fichier1.jpg de filezilla)
J'ai testé les droits 777 et 707 sur le dossier db, et même sur le fichier inclu chatrooms.sqlite, rien n'y fait.
Je suis tout triste :'(
Tommy - 15/01/2014 à 13:48:51
Tu peux essayer de modifier le contenu de index.php par ça : http://sebsauvage.net/paste/?c5c7fe8ecf922831#7dtl7whfkSN+wDT+MRh1LfzzuV3xXsLAaboINxSC9Gk=
Comme ça tu sauras si le problème vient bien des droits d'écriture ou non :)
V!nc3r - 15/01/2014 à 13:55:55
Ça n'a pas l'air de venir de là, je viens de tester avec ton code. J'ai aussi testé avec un firefox par défaut (au cas où une de mes extensions foutait la merde) et sous opera, même problème.
Ce qui est marrant c'est que l'onglet stats fonctionne.
Bon je veux pas spammer les comm', j'attends d'être chez moi pour voir ça tranquillou et faire chauffer mes très maigres compétences héhé.
Tiger-222 - 15/01/2014 à 14:45:40
Excellent, ça fonctionne du tonnerre chez moi (après avoir mis les bons droits en écriture sur db et db/chatrooms.sqlite). Merci Tommy :)
Triton - 15/01/2014 à 16:54:26
Pour le problème de droits, j'ai finalement fait :
$ sudo chown -Rf www-data:www-data /var/www
Et ça fonctionne parfaitement ! Merci Tommy pour ton partage, c'est vraiment génial !
jerry wham - 15/01/2014 à 17:39:13
Merci beaucoup Tommy. J'attendais cette version php avec impatience. Encore merci.
Matronix - 15/01/2014 à 18:55:04
Marche parfaitement chez moi, merci !
http://mycryptochat.matronix.fr/
V!nc3r - 15/01/2014 à 20:31:00
Yeah c'est bon, problem solved.
J'avais à la racine de mon site un .htaccess indiquant
SetEnv PHP_VER 5_3
Il a suffit que je modifie en
SetEnv PHP_VER 5_4
Ça fait donc passer mon offre perso ovh de PHP Version 5.3.16 à PHP Version 5.4.6
Merci pour le travail fourni Tommy ! :)
IxeYgrek - 15/01/2014 à 22:12:35
Salut à tous et surtout merci à toi Tommy !!
Voici une traduction française un peu approximative que j'ai réalisé mais je suis preneur pour toute améliorations.
http://gamerz0ne.fr/data_other/gamerzone/Telechargements/MyCryptoChatPHP%20Web%20v1.0%20%5bFR%5d.zip
Blogus - 16/01/2014 à 08:17:41
Salut,
OK maintenant ça fonctionne en ayant modifié les droits lecture-écriture-exécution et en étant passé à PHP 5.4 côté serveur (1&1)
Blogus - 16/01/2014 à 08:19:49
PS : ça ne fonctionnait pas en PHP 5.2...
Tommy - 16/01/2014 à 08:31:20
Oui, je viens d'éditer l'article, en fait il faut PHP 5.4 pour que l'application fonctionne :'(
Alopex - 16/01/2014 à 20:37:57
Merci Tommy !
C'est installé (finger in da nose !) et fonctionnel ! c'est simple et efficace ! Bravo !
V!nc3r - 17/01/2014 à 08:15:40
Je me permet de faire suivre ces liens qu'on m'a fait suivre suite à une discussion sur myCryptoChat :
Why you should not use MyCryptoChat
Javascript Cryptography Considered Harmful
Moi j'y comprend rien à tout ça, mais ces articles vont probablement interesser certains.
Tommy - 17/01/2014 à 09:24:36
@V!nc3r : Merci pour les liens ! Je suis en train de regarder, c'est super intéressant ! Effectivement il y a des soucis avec MyCryptoChat, mais c'est un peu pour ça que j'ai publié le code source. Si un mec veut combler les failles il peut le faire et me soumettre les modifications (je suis d'ailleurs en train de travailler dessus...)
Par contre je trouve ça nul de dénigrer et d'exposer les failles sans m'avoir contacté pour m'en parler :-/
Dans tous les cas j'ai déjà comblé la XSS, j'ai ajouté tous les tests de compatibilité au chargement, je suis en train de regarder pour améliorer la partie JS (et quand j'aurais le temps j'essaierais de corriger le bug du nombre d'utilisateurs.)
Bref, tout ça sera pour la version 1.1 ;)
V!nc3r - 17/01/2014 à 09:28:26
Oui il aurait pu t'envoyer un ptit mail au minimum, c'est naze qu'il ne l'ait pas fait.
Encore bravo pour cet outil, et courage pour la correction de failles ^^
Cyril - 17/01/2014 à 10:14:33
La critique est facile j'avoue...
Certaines critiques de "Why you should not use MyCryptoChat" sont peut-être vraies mais il a peut-être oublié que c'était une première version de l'application. Qui pense à tout dès le début ? Personne.
Et l'application parfaite n'existe pas malheureusement...
Tommy - 17/01/2014 à 10:18:30
J'y ai répondu dans mon dernier article dans tous les cas :
http://blog.howtommy.net/index.php?d=2014/01/17/09/52/18-mycryptochat-polemique-et-failles
le hollandais volant - 17/01/2014 à 18:57:22
Yop, une idée d’amélioration : utiliser un champ <input> au lieu du <textarea>, c’est tout con, mais ça permet de poster le message directement avec la touche « entrée »
(et sur mobile, c’est également beaucoup plus pratique : la touche de validation est déjà sur le clavier d’android par exemple)
enzo - 18/01/2014 à 06:59:18
@NiKaro :
Yes ça marche, j'ai passé les droits sur les deux fichiers cité en 777 et modifier la clé dans le fichier constants.php, et tout fonctionne a merveille
Merci :)
tex0ttorn - 24/03/2014 à 19:29:22
merci beaucoup pour ce petit soft bien sympathique ! testé sur serveur dédié et ça marche au top :)
r0bert - 24/03/2014 à 19:46:39
j'attend la suite avec impatience !
IFNET - 28/09/2014 à 07:24:09
Marche Nikel !
hydrosiii - 23/11/2014 à 20:21:38
Hi, how do i destroy a unlimited created chat room?
Im thinking in wiping the sqlite db entirely but i hope there is one easier way.
Tommy - 24/11/2014 à 19:30:04
Right now... you can't. That's the point of unlimited chat rooms. The only way is to go in the sqlite database and to delete the chatroom and its messages from the database.
hydrosiii - 26/11/2014 à 06:51:17
Yes i have figured it out, now hehe, Now i always put a autodestruction password.
I have some more questions about these program.
Do you need to be using a https connection to the server to be safe??
Also where is the encryption? in the url ???
If i give the url to someone, then he can enter and see everything written in the chat
Tommy - 26/11/2014 à 07:46:22
You don't have to use a https connection, but it's better anyway.
The encryption key is the part after the # in the url. It's called the anchor. The anchor is never sent to the server, the webpage and the browser keep it.
So yes, if you give the URL, your friend can join the conversation.
Thibault - 09/12/2014 à 09:45:47
C'est vraiment bien que ce soit crypté comme ca et que ce soit fait en PHP. Une fois je m'étais mis en tête que j'allais réaliser ce genre d'application de chat en PHP. Je ne suis pas parvenu à créer une telle machine de guerre mais j'ai beaucoup appris et ça m'a été très utile pour la suite de ma carrière.
Richard - 21/01/2015 à 16:12:23
@Blogus , @Tommy
Désolé , je suis en utilisant Google translate de mettre cela en français !
L'erreur qui se affiche sur le "clé" peut être fixé par suppression de cette :
$key = substr(md5($key . SEED), 0, 20);
C'est newroom.php.
moi - 18/04/2015 à 01:01:56
j'ai pas compris , après avoir changer le seed , qu'est ce que je fait pour ouvrir le chat ???
Flux RSS des commentaires de cet article
Les commentaires sont fermés pour cet article
Derniers commentaires