Ftp: user, pass, ip apparaissent dans binaire...
Résolu/Fermé
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
-
6 juil. 2014 à 19:03
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 8 juil. 2014 à 21:00
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 8 juil. 2014 à 21:00
A voir également:
- Ftp: user, pass, ip apparaissent dans binaire...
- Core ftp - Télécharger - Téléchargement & Transfert
- Filezilla ftp - Télécharger - Téléchargement & Transfert
- Ftp utility - Forum Réseau
- Ftp localhost ✓ - Forum Réseau
- Ftp //192.168.l.2121 - Forum Réseau
5 réponses
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
Modifié par gravgun le 6/07/2014 à 19:14
Modifié par gravgun le 6/07/2014 à 19:14
'lut, tu peux utiliser un truc style le cryptage XOR et décoder ton IP+mdp au lancement, mais une analyse de paquets ou un désassemblage révèlera tout aussi facilement le MDP.
C'est selon les circonstances... si tu redistribues le programme tu ne peux pas empêcher que IP+mdp circulent si tu veux garder les mêmes infos de connexion partout. Dans le cas où tu veux qu'on puisse changer cet IP+mdp, créé un/des fichier(s) de config que tu lis et utilises (et ne distribue pas ces fichiers de config).
from human import idiocy
del idiocy
C'est selon les circonstances... si tu redistribues le programme tu ne peux pas empêcher que IP+mdp circulent si tu veux garder les mêmes infos de connexion partout. Dans le cas où tu veux qu'on puisse changer cet IP+mdp, créé un/des fichier(s) de config que tu lis et utilises (et ne distribue pas ces fichiers de config).
from human import idiocy
del idiocy
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
6 juil. 2014 à 20:10
6 juil. 2014 à 20:10
Il faut se dire que si ton programme peut se connecter à ce ftp et que tu distribues ce programme, tu donnes les moyens de s'y connecter...
La question est donc : En quoi cela te gêne que l'on voie les identifiants de ton ftp ?
Cdlt,
La question est donc : En quoi cela te gêne que l'on voie les identifiants de ton ftp ?
Cdlt,
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
6 juil. 2014 à 20:54
6 juil. 2014 à 20:54
Merci,
dans le cadre d'une distribution justement, j'effectue certains transferts de fichier légitime mais le client ne doit pas connaitre les login et mot de passe.
En gros le client lance le programme qui travail tout seul
(question ftp, pass en clair sur le reseau, je sais je sais, je passerais une couche ssl dessus.)
Du coup je repose ma question, comment faire pour ne pas que ca se voit ?
dans le cadre d'une distribution justement, j'effectue certains transferts de fichier légitime mais le client ne doit pas connaitre les login et mot de passe.
En gros le client lance le programme qui travail tout seul
(question ftp, pass en clair sur le reseau, je sais je sais, je passerais une couche ssl dessus.)
Du coup je repose ma question, comment faire pour ne pas que ca se voit ?
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
Modifié par gravgun le 6/07/2014 à 20:58
Modifié par gravgun le 6/07/2014 à 20:58
"comment faire pour ne pas que ca se voit": bah tu peux pas, tout simplement. Il faut que le mdp soit transféré au serveur pour qu'il accepte la connexion, quoi qu'il en soit. Tu peux "retarder" l'extraction du MDP avec comme j'ai dit un décryptage lors de l'exécution, mais une analyse réseau donnera toujours le mot de passe.
Si tu peux créer des comptes sur le FTP en question, créé des comptes anonymes/"secondaires" avec un mot de passe qui n'est pas le tien.
Si tu peux créer des comptes sur le FTP en question, créé des comptes anonymes/"secondaires" avec un mot de passe qui n'est pas le tien.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
6 juil. 2014 à 21:29
6 juil. 2014 à 21:29
le client ne doit pas connaitre les login et mot de passe.
Je répète. Ton programme contient les identifiants pour se connecter au serveur. Donc, si tu distribues ce programme, une personne malicieuse pourra forcément les récupérer.
Tu peux en effet le chiffrer et faire une procédure de déchiffrement à la volée. Mais on pourra quand même récupérer le mot de passe.
Je répète. Ton programme contient les identifiants pour se connecter au serveur. Donc, si tu distribues ce programme, une personne malicieuse pourra forcément les récupérer.
Tu peux en effet le chiffrer et faire une procédure de déchiffrement à la volée. Mais on pourra quand même récupérer le mot de passe.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
Modifié par [Dal] le 7/07/2014 à 11:12
Modifié par [Dal] le 7/07/2014 à 11:12
Bonjour à tous, et bonjour LezardMoo,
Le problème est ici que tu sembles dire que ton identifiant et mot de passe ftp vont être en dur dans le fichier exécutable et qu'ils seront utilisés, semble-t-il (mais ce n'est pas clair) pour plusieurs "clients".
Cela n'est pas une bonne pratique.
Tu devrais utiliser ton serveur ftp qui permet de créer des comptes utilisateurs personnels à chaque utilisateur, ainsi tu peux :
- savoir qui s'est connecté et quand et pour quoi faire, avec les logs du serveur,
- révoquer un accès dont la sécurité serait compromise, sans affecter le fonctionnement des autres accès,
- communiquer l'identifiant et le mot de passe à la personne qui le droit de l'utiliser.
Si tu veux faciliter la vie de l'utilisateur, tu peux préconfigurer son programme pour qu'il n'ait pas à saisir les identifiants et mots de passe. Tu fais une compilation pour chaque client, ou tu crées un fichier de paramétrage.
Mais le mieux est de communiquer les identifiants et mots de passe aux personnes concernées, et de responsabiliser l'utilisateur sur leur utilisation.
Pour la transmission, curl gère sftp. Je ne l'ai jamais utilisé personnellement.
Il te faut un serveur sftp.
La version curl en ligne de commande est utile pour faire des tests et vérifier que tout fonctionne comme tu l'attends. Ensuite, tu ajoutes l'option
https://curl.se/docs/manpage.html#--libcurl
Dal
Le problème est ici que tu sembles dire que ton identifiant et mot de passe ftp vont être en dur dans le fichier exécutable et qu'ils seront utilisés, semble-t-il (mais ce n'est pas clair) pour plusieurs "clients".
Cela n'est pas une bonne pratique.
Tu devrais utiliser ton serveur ftp qui permet de créer des comptes utilisateurs personnels à chaque utilisateur, ainsi tu peux :
- savoir qui s'est connecté et quand et pour quoi faire, avec les logs du serveur,
- révoquer un accès dont la sécurité serait compromise, sans affecter le fonctionnement des autres accès,
- communiquer l'identifiant et le mot de passe à la personne qui le droit de l'utiliser.
Si tu veux faciliter la vie de l'utilisateur, tu peux préconfigurer son programme pour qu'il n'ait pas à saisir les identifiants et mots de passe. Tu fais une compilation pour chaque client, ou tu crées un fichier de paramétrage.
Mais le mieux est de communiquer les identifiants et mots de passe aux personnes concernées, et de responsabiliser l'utilisateur sur leur utilisation.
Pour la transmission, curl gère sftp. Je ne l'ai jamais utilisé personnellement.
Il te faut un serveur sftp.
La version curl en ligne de commande est utile pour faire des tests et vérifier que tout fonctionne comme tu l'attends. Ensuite, tu ajoutes l'option
--libcurl <file>et cela te produit un code C fonctionnel qui réplique le fonctionnement de la ligne de commande que tu as mise au point, que tu peux utiliser dans tes programmes avec libcurl.
https://curl.se/docs/manpage.html#--libcurl
Dal
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
7 juil. 2014 à 11:27
7 juil. 2014 à 11:27
Salut Dal,
Oui login et pass seront en dur, en fait, c'est pour de la sauvegarde interne du coup c'est déployé sur les machines des clients(internes du coup) et c'est censé etre invisible pour eux.
En gros, sauvegarde de données sur lesquelles ils travaillent mais interdit d'aller se connecter sur le ftp pour recup ou modifier le fichier.
Devoir dire au gens de se connecter et d'uploader eux meme me laisse penser que ca va etre fait pendant une semaine et après pour n'importe quelle raison ca ne sera plus respecté, on les connait les utilisateurs hein ^^ !
Pas mal pour curl, je ne connaissais pas, en meme temps je ne l'utilise jamais, à part la dans mon code.
Oui login et pass seront en dur, en fait, c'est pour de la sauvegarde interne du coup c'est déployé sur les machines des clients(internes du coup) et c'est censé etre invisible pour eux.
En gros, sauvegarde de données sur lesquelles ils travaillent mais interdit d'aller se connecter sur le ftp pour recup ou modifier le fichier.
Devoir dire au gens de se connecter et d'uploader eux meme me laisse penser que ca va etre fait pendant une semaine et après pour n'importe quelle raison ca ne sera plus respecté, on les connait les utilisateurs hein ^^ !
Pas mal pour curl, je ne connaissais pas, en meme temps je ne l'utilise jamais, à part la dans mon code.
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
Modifié par [Dal] le 7/07/2014 à 13:09
Modifié par [Dal] le 7/07/2014 à 13:09
Et le ftp est interne aussi, ou il est chez toi ?
Je pense qu'on n'a pas une bonne vision de ce que tu fais et de tes contraintes pour te conseiller utilement.
En gros, sauvegarde de données sur lesquelles ils travaillent mais interdit d'aller se connecter sur le ftp pour recup ou modifier le fichier.
Si ton serveur ftp est suffisamment paramétrable, tu peux le configurer pour accepter les commande STOR, mais interdire les commandes RETR et d'autres qui te gêneraient (Proftpd permet ce genre de chose, par exemple). Tu interdiras efficacement la récupération. Par contre, si ton programme peut uploader des fichiers, il utilise STOR, et un utilisateur déterminé arrivera à étudier le fonctionnement du programme et à le reproduire (c'est ce que veut te faire comprendre fiddy., je pense).
Cela dit, pour de la sauvegarde, je préfère utiliser rsync en environnement Linux ou BSD. Cela ne copie que les fichiers modifiés, la transmission peut être compressée et chiffrée en utilisant le transport ssh, et les accès peuvent être gérés avec des certificats. C'est le serveur de sauvegarde qui déclenche les sauvegardes avec un cron (pas les machines sauvegardées), et les machines sauvegardées n'ont pas à avoir accès au serveur de sauvegarde. La machine à sauvegarder contient juste une clef publique correspondant à la clef privée stockée sur le serveur de sauvegarde, ce qui permet au serveur de sauvegarde d'accéder aux machines contenant les fichiers à sauvegarder.
Cela fonctionne avec un serveur ssh, et c'est mieux d'être en environnement de type Unix (même si tu as des serveurs ssh et des clients rsync pour Windows aussi).
Tu peux aussi attaquer avec rsync un share Windows (en le montant avec Samba) : https://www.thanassis.space/backup.html
Tu perds alors le bénéfice de l'usage de certificats, et tu es dépendant de ce que le mot de passe d'accès au share ne change pas, mais cela peut être plus simple à mettre en oeuvre en environnement Windows.
Dal
Je pense qu'on n'a pas une bonne vision de ce que tu fais et de tes contraintes pour te conseiller utilement.
En gros, sauvegarde de données sur lesquelles ils travaillent mais interdit d'aller se connecter sur le ftp pour recup ou modifier le fichier.
Si ton serveur ftp est suffisamment paramétrable, tu peux le configurer pour accepter les commande STOR, mais interdire les commandes RETR et d'autres qui te gêneraient (Proftpd permet ce genre de chose, par exemple). Tu interdiras efficacement la récupération. Par contre, si ton programme peut uploader des fichiers, il utilise STOR, et un utilisateur déterminé arrivera à étudier le fonctionnement du programme et à le reproduire (c'est ce que veut te faire comprendre fiddy., je pense).
Cela dit, pour de la sauvegarde, je préfère utiliser rsync en environnement Linux ou BSD. Cela ne copie que les fichiers modifiés, la transmission peut être compressée et chiffrée en utilisant le transport ssh, et les accès peuvent être gérés avec des certificats. C'est le serveur de sauvegarde qui déclenche les sauvegardes avec un cron (pas les machines sauvegardées), et les machines sauvegardées n'ont pas à avoir accès au serveur de sauvegarde. La machine à sauvegarder contient juste une clef publique correspondant à la clef privée stockée sur le serveur de sauvegarde, ce qui permet au serveur de sauvegarde d'accéder aux machines contenant les fichiers à sauvegarder.
Cela fonctionne avec un serveur ssh, et c'est mieux d'être en environnement de type Unix (même si tu as des serveurs ssh et des clients rsync pour Windows aussi).
Tu peux aussi attaquer avec rsync un share Windows (en le montant avec Samba) : https://www.thanassis.space/backup.html
Tu perds alors le bénéfice de l'usage de certificats, et tu es dépendant de ce que le mot de passe d'accès au share ne change pas, mais cela peut être plus simple à mettre en oeuvre en environnement Windows.
Dal
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
7 juil. 2014 à 15:09
7 juil. 2014 à 15:09
Oui le serveur aussi est en interne.
Effectivement rsync pourrait etre pas mal aussi, les postes clients sont tous sous windows donc je n'y avait meme pas pensé ^^
Merci
Effectivement rsync pourrait etre pas mal aussi, les postes clients sont tous sous windows donc je n'y avait meme pas pensé ^^
Merci
sambia39
Messages postés
610
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
9 février 2023
49
Modifié par sambia39 le 7/07/2014 à 16:36
Modifié par sambia39 le 7/07/2014 à 16:36
Je pense à une idée moins complexe si tu souhaites à ce que ton application ne divulgue pas les informations d'authentification de connexion entre ton client FTP et le serveur, tu peux soit te renseigner sur le FTPS et comment l'implémenter , ou tu te tourne vers une autre solution
où bien implémenter ton code de manière pas très conventionnel, "un système d'authentification qui va ressemblé au final à un proxy ftp".
C'est-à-dire, sur ta machine cliente, tu incite l'utilisateur à fournir un identifiant, adresse Mac( fournis au préalable ) où le nom du PC sur lequel il se trouve (cela te servira à savoir qui c'est loger et le rediriger sur son répertoire ou autres) vers un serveur qui fait office d'authentification un peu comme RADUS et c'est lui qui va par la suite va se chargé de faire tout le boulout ( ce connecter vers ton serveur FTP ) toute réponse passe par lui toute commande également, tu peux tout à fait mettre en plus un mécanisme de chiffrement simple de bout à bout vers le serveur d'authentification si tu le souhaites mais sérieusement, la manière sûr est d'utiliser un client FTPS qui va se connecter à ton serveur FTP.
à bientôt
où bien implémenter ton code de manière pas très conventionnel, "un système d'authentification qui va ressemblé au final à un proxy ftp".
C'est-à-dire, sur ta machine cliente, tu incite l'utilisateur à fournir un identifiant, adresse Mac( fournis au préalable ) où le nom du PC sur lequel il se trouve (cela te servira à savoir qui c'est loger et le rediriger sur son répertoire ou autres) vers un serveur qui fait office d'authentification un peu comme RADUS et c'est lui qui va par la suite va se chargé de faire tout le boulout ( ce connecter vers ton serveur FTP ) toute réponse passe par lui toute commande également, tu peux tout à fait mettre en plus un mécanisme de chiffrement simple de bout à bout vers le serveur d'authentification si tu le souhaites mais sérieusement, la manière sûr est d'utiliser un client FTPS qui va se connecter à ton serveur FTP.
à bientôt
LezardMoo
Messages postés
554
Date d'inscription
mercredi 5 janvier 2011
Statut
Membre
Dernière intervention
21 janvier 2015
14
8 juil. 2014 à 10:14
8 juil. 2014 à 10:14
Bien vu ! En plus je voulais monter un RADIUS (parce que jamais encore utilisé) donc parfait si en plus j'en ai une utilité ^^
Je vais aussi regarder dans cette voie
Merci
Je vais aussi regarder dans cette voie
Merci
6 juil. 2014 à 21:00
Sinon pour le coup du fichier de config je n'ai pas compris. comment ca je ne dois pas le distribuer ?
Modifié par gravgun le 6/07/2014 à 21:06
"pour le coup du fichier de config": Bah c'était au cas où les utilisateurs auraient pu entrer leur propres identifiants; tu aurais créé une/des fonction(s) pour lire un fichier de config qui contiendrait IP+username+mdp (que les utilisateurs peuvent modifier), mais toi tu n'aurais pas distribué le tien (avec ton mdp perso), évidemment.
Si la logique veut qu'on ne puisse pas cacher quelque chose là où on veut, c'est qu'il faut chercher à le cacher autre part.
6 juil. 2014 à 21:10
Maintenant je pense qu'avec XOR ca devrait suffir, le prog reste en interne.
Me reste plus qu'a trouver comment utiliser ca en C.
6 juil. 2014 à 21:12
Modifié par LezardMoo le 6/07/2014 à 23:41
#include <string.h>
int encode_decode(char *string, char *key){
int i;
printf("String :");
for(i=0; i<strlen(string); i++){
string[i]=string[i]^key[i];
}
printf("%s\n",string);
return 0;
}
int main(){
char chaine[100]="";
char key[100]="!@#$%^&*()_";
printf("Enter string to encode/decode:\n");
scanf("%s",&chaine);
printf("\nencode\n");
encode_decode(chaine,key);
printf("\ndecode\n");
encode_decode(chaine,key);
}