IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Lecteur vidéo fichiers cachés


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Par défaut Lecteur vidéo fichiers cachés
    Bonjour à tous!

    Alors je viens vers vous aujourd'hui pour avoir des informations concernant un projet que je commence,
    Tout d'abord je vais vous expliquer mon objectif, je doit développer une application bureau en Java en utilisant swing, celle ci doit pouvoir télécharger une vidéo sur le net et l'enregistrer sur la machine de l'utilisateur de manière caché afin qu'il ne puisse pas y avoir accès sans l'application.
    Je ne sais pas trop comment faire cela, est ce que je doit développer mon propre lecteur ? Comment enregistré les vidéos sur la machine de l'utilisateur sans qu'il puisse les retrouver et les lire ?

    Je ne sais pas si vous avez une solution ou juste une idée de la marche à suivre,
    merci de votre lecture,

    A bientôt !

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    difficile de charger des fichiers sur un disque local sans que l'utilisateur puisse retrouver ces fichiers et les lire au final. tout dépend de l'utilisateur déjà, de sa curiosité, de ces connaissances... tu ne pourras jamais empêcher un utilisateur d'accèder à tes fichiers et les regarder : tu ne pourras que le forcer à déployer des efforts pour le faire et jouer avec sa détermination à le faire


    il y'a plusieurs voies à explorer :

    1) travailler sur les fichiers eux même
    - par exemple, les nommer avec un nom qui ne ressemble pas à nom de fichier vidéo : change l'extension, voire ne pas mettre d'extension, les nommer avec un nom non lisible, par exemple une série de chiffres hexa,
    - modifier le format de données, le crypter par exemple avec un codage réversible (bien sûr un utilisateur malin pourra le décrypter sous certaines conditions, mais la plupart des utilisateurs ne pourra pas lire le fichier avec un lecteur standard) que ton appli décryptera (il suffit de décoder au chargement, pas besoin d'écrire son propre lecteur). tu peux jouer sur certains artifices, comme simplement ajouter des données à toi au début du fichier, un header qui te permettrait de reconnaitre le fichier, un nom de vidéo, des informations annexes, etc...
    2) travailler sur l'emplacement
    - le stocker dans un dossier caché (la aussi certains utilisateurs sauront le retrouver évidement)
    - utiliser les droits d'accès de ton os
    - utiliser un système de fichier qui gère des droits (comme une base de données par exemple)
    3) il est à noter que si tu fais ton programme en java, il est décompilable, donc un utilisateur pourra en lire le code et comprendre comment récupérer les vidéos. et même si tu fais un petit module en c par exemple, que tu utilises via jni, un développeur qui s'y connait un peu, pourra analyser le binaire et comprendre comment il marche, et finalement faire un décodeur
    enfin, quelque soit ce tu feras, il existe des logiciels de capture video, comme freecorder sur windows : quelque soit les efforts que tu pourras déployer pour cacher, crypter, masquer tes fichiers, ou même stocker en externe, sur un cloud par exemple, ils pourront être récupérés au moment de la lecture !
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Par défaut
    D'accord donc en gros je ne pourrais pas rendre inaccessible les vidéos mais je pourrais rendre la tache un peu plus difficile,
    voila je pense faire comme tu me la conseillé, renommé le fichier, retirer l'extension, tenter de le crypter avec une clé dans mon code.

    Et je voudrais aussi avoir des infos sur le reverse engineering, mon code java sera dé-compilable comme tu me la expliqué dans ta réponse, or mon application se compose d'un formulaire de login, je vérifie alors dans la bdd que l'utilisateur existe bien et que son compte est toujours valide,
    c'est alors qu'il pourra avoir accès à des vidéos. Il aura alors le choix entre enregistrer sur son disque dur pour une utilisation offline ou alors les regarder en streaming,

    Pour ce qui est des informations de connexion à la bdd comment dois-je faire pour qu'elles ne soient pas visible en clair dans mon code source? J'ai entendu parler d'obfuscation du code (en utilisant proguard par exemple) mais je pense que ça ne changeras rien au problème.

    Si ta une idée à ce sujet merci de m'en faire part!

    A bientôt !

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par marouanes Voir le message
    Pour ce qui est des informations de connexion à la bdd comment dois-je faire pour qu'elles ne soient pas visible en clair dans mon code source?
    Tu peux pas. L'accès à cette BDD doit être fait de sorte que ça ne te dérange pas si n'importe qui le fait.
    En gros, il vaut mieux mettre un service web intermédiaire plutôt que se connecter directement à la base de données (car l'accès direct requiert en général ton mot de passe personnel, et il ne faut le fournir à personne, donc pas à un programme que tu redistribuerais.)

    Citation Envoyé par marouanes Voir le message
    J'ai entendu parler d'obfuscation du code (en utilisant proguard par exemple) mais je pense que ça ne changeras rien au problème.
    Pas suffisant pour masquer la connexion à la BDD en tout cas, et de toute façon, comme dit au-dessus, ce qu'il faut faire est ne pas avoir besoin de le masquer.

    Mais ce n'est pas trop mal pour compliquer la vie de quelqu'un qui cherche à contourner les restrictions de ton programme. En contrepartie, ça veut dire que le programme sera obfusqué même quand tu essaieras de déboguer une panne chez un utilisateur, autant dire que tu ne pourras juste pas faire de dépannage avec les outils classiques.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par marouanes Voir le message
    Et je voudrais aussi avoir des infos sur le reverse engineering, mon code java sera dé-compilable comme tu me la expliqué dans ta réponse, or mon application se compose d'un formulaire de login, je vérifie alors dans la bdd que l'utilisateur existe bien et que son compte est toujours valide,


    c'est alors qu'il pourra avoir accès à des vidéos. Il aura alors le choix entre enregistrer sur son disque dur pour une utilisation offline ou alors les regarder en streaming,
    ton appli devra créer la base (soit dans un process d'install, soit en dynamique au premier démarrage : si elle existe pas, tu la crées)
    c'est l'appli qui créera le compte et qui s'y connectera : pas besoin de demander de login à l'utilisateur (si tu veux tu peux, mais c'est mieux à mon avis qu'il ne soit même pas au courant que tu utilises une base)
    ensuite je pensais stocker les fichiers vidéos dans la base pour utiliser les capacités de la base en terme de droit d'accès : ainsi même avec un soft type squirrel, il faudrait connaitre le user et le mot de passe pour s'y connecter

    Citation Envoyé par marouanes Voir le message
    Pour ce qui est des informations de connexion à la bdd comment dois-je faire pour qu'elles ne soient pas visible en clair dans mon code source? J'ai entendu parler d'obfuscation du code (en utilisant proguard par exemple) mais je pense que ça ne changeras rien au problème.
    l'obsfuscation permet de rendre le code moins lisible mais il existe des desobsfuscateur : donc en effet ça ralentit et ça gène, mais au final on peut toujours réussir par un moyen ou un autre à accèder au code.

    Dans la partie connexion (et création du compte), tu peux essayer de compliquer inutilement le programme pour rendre plus fastidieux le décodage en faisant plein de manip et en utilisant des variables différentes (qui compliqueront le travail de désofuscation),

    il faudra éviter également de stocker en mémoire (je veux dire directement dans des variables) les coordonnées de l'utilisateur : toujours les générer à la volée (sinon on pourrait les lire avec un profiler ou un débugger trop facilement) : tu peux mettre en place un nom d'utilisateur et un mot de passe qui correspond à l'exécution d'un code assez compliqué pour ralentir et rendre fastidieux le process de reengeneering
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Je suis parti du principe que tout était en local et qu'on avait pas accès à Internet : tu peux évidement conditionner l'utilisation de ton programme à une connexion obligatoire à Internet : ainsi tu pourrais mettre en place un web service sécurisé qui fournit des fonctions indispensable à l'accès à ta base ou au décryptage de tes fichiers : ainsi il faudrait hacker le site pour connaitre le code de ces fonctions. bien sur comme on peut sniffer les échanges réseaux, il faudrait aussi crypter les messages échangés de manière suffisamment aléatoire pour gêner l'analyse du protocole (sinon facile de simuler ces fonctions )
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Par défaut
    En faite la partie création du compte se fait sur le site internet, l'application desktop ne va servir en gros uniquement à télécharger des vidéos et avoir la possibilité de les visionner en offline. Ce qui permet à l'utilisateur d'avoir accès aux ressources pré enregistré sur son ordinateur afin de pouvoir les visionner sans connexion internet,
    Donc j'ai pensé à faire l'application java avec tout d'abord le formulaire de login, la première utilisation de l'application se fera alors obligatoirement connecté, il va choisir les ressources vidéos qu'il souhaite avoir sur son ordinateur en offline, (par exemple pour visionner la vidéo lors d'un voyage) la vidéo est alors enregistré sur l'ordinateur mais n'est pas sensé être accessible en dehors de l'application pour un utilisateur normal.
    L'idée du web service est plutôt bonne, je pense que c'est cette voix que je vais explorer.

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/12/2005, 13h40
  2. Afficher les fichiers cachés avec apache ?
    Par Michaël dans le forum Apache
    Réponses: 2
    Dernier message: 20/12/2004, 09h56
  3. fso et fichiers cachés
    Par audrey_ dans le forum ASP
    Réponses: 4
    Dernier message: 29/09/2004, 10h20
  4. [VB6] supprimer fichier caché
    Par camyo dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 28/07/2004, 13h45
  5. Ouvrir (fopen) un fichier caché
    Par shef dans le forum C
    Réponses: 2
    Dernier message: 09/09/2002, 09h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo