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

Langage Delphi Discussion :

Verrouiller des images


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 397
    Points : 165
    Points
    165
    Par défaut Verrouiller des images
    Bonjour,

    J'ai un petit problème avec des images de type JPG qui me sont confier (je n'en suis pas propriétaire).
    Ces images sont utilisées par le prog et donc diffusées avec le prog
    Afin de les protéger je modifie l'extension avant diffusion mais il suffit de remettre une extension de type image pour les voir et les copier.

    Comment je peux les protéger plus efficacement.
    75 ans quelques dents en moins, mais toujours envie d'apprendre

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 668
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 668
    Points : 7 008
    Points
    7 008
    Par défaut
    Peut-être en les cryptant de manière à ce que seule ton application puisse les relire.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  3. #3
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 397
    Points : 165
    Points
    165
    Par défaut
    Oui, mais comment ?
    Je ne suis pas un pro de la programmation.

    Merci
    75 ans quelques dents en moins, mais toujours envie d'apprendre

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Bonjour,

    Afin de les protéger je modifie l'extension avant diffusion mais il suffit de remettre une extension de type image pour les voir et les copier.
    Déjà rien qu'en modifiant seulement l'extension, en par exemple *.dat ou *.dll, il ne viendrait pas à l'utilisateur lambda l'idée d'en changer l'extension vu le risque de faire planter le prog.
    En plus pour remettre une extension de type image il a l'embarras du choix vu la pléthore d'extensions de type image.

    Pour protéger un peu plus, et sans aller jusqu'à crypter complétement il y a une solution intermédiaire qui consiste à sauver chaque image dans un fichier dont par exemple les 100 premiers octets sont du charabia de caractères de texte à la suite desquels on sauve les données du fichier image-source.
    Ensuite ton application pourra utiliser ce type de fichier en relisant simplement les datas depuis le 101ième octet jusqu'à la fin du fichier.
    (Un cryptage complet serait beaucoup plus compliqué à réaliser sans oublier qu'à chaque utilisation d'une image il faudrait la re-décrypter).

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  5. #5
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 668
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 668
    Points : 7 008
    Points
    7 008
    Par défaut
    Citation Envoyé par Gilbert Geyer Voir le message
    Pour protéger un peu plus, et sans aller jusqu'à crypter complétement il y a une solution intermédiaire qui consiste à sauver chaque image dans un fichier dont par exemple les 100 premiers octets sont du charabia de caractères de texte à la suite desquels on sauve les données du fichier image-source.
    Ensuite ton application pourra utiliser ce type de fichier en relisant simplement les datas depuis le 101ième octet jusqu'à la fin du fichier.
    (Un cryptage complet serait beaucoup plus compliqué à réaliser sans oublier qu'à chaque utilisation d'une image il faudrait la re-décrypter).
    Pas bête.
    Pour un premier niveau de protection, c'est simple et efficace.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Bonjour,

    Lung : Pour un premier niveau de protection, c'est simple et efficace
    ... Ben, à mon avis je crois même qu'il serait superflu d'aller plus loin avec un cryptage complet car :
    1) déjà rien que le changement de l'extension par exemple en *.dll dissuade d'en changer l'extension au risque de planter le programme.
    2) et même quelqu'un qui saurait que ce fichier *.dll est en fait un fichier image pourrait toujours essayer d'en changer l'extension en essayant sans succès la pléthore d'extensions possibles. (dans ce cas il faudrait utiliser un editeur Hexa pour voir à partir de quel octet débute réellement la partie des datas du fichier-image-source et créer un programme de lecture du fichier *.dll donc impossible pour un utilisateur lambda).

    Une autre possiblité consisterait, toujours sans crypter, de sauver le fichier-image-source à l'envers ce qui placerait son en-tête distinctive à la fin mais cela nécessiterait des sauvegardes/lectures octet par octet ce qui ralentit.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  7. #7
    ILP
    ILP est déconnecté
    Membre confirmé
    Avatar de ILP
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2002
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 258
    Points : 610
    Points
    610
    Par défaut
    Pourquoi ne pas les mettre dans une DLL de ressources que tu chargerais à partir de ton programme.
    http://delphicool.developpez.com/ressources/

    Voici un petit script Batch qui permet de créer automatiquement un fichier de ressources avec les images contenues dans un répertoire :
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    @ECHO OFF
    SET NomRes=Ressources
    ECHO ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
    ECHO º Cr‚ation du fichier de ressources. º
    ECHO ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
    DEL %NomRes%.rc
    DEL ListeRessources.txt
    FOR %%F IN (*.bmp) DO (
      ECHO %%~nF BITMAP %%~nF.bmp >> %NomRes%.rc
      ECHO '%%~nF', >> ListeRessources.txt
    )
    FOR %%F IN (_*.ico) DO (
      ECHO %%~nF ICON %%~nF.ico >> %NomRes%.rc
      ECHO '%%~nF', >> ListeRessources.txt
    )
    FOR %%F IN (*.png) DO (
      ECHO %%~nF PNG %%~nF.png >> %NomRes%.rc
    )
    FOR %%F IN (*.jpg) DO (
      ECHO %%~nF JPEG %%~nF.jpg >> %NomRes%.rc
    )
    ECHO ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
    ECHO ³ Compilation du fichier de ressources. ³
    ECHO ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
    BRCC32 -v %NomRes%.rc
    Et après tu peux utiliser UPX pour compresser ton programme, rendant les ressources contenues non chargable par les utilitaires tel que Resource Hacker.

  8. #8
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 367
    Points : 3 138
    Points
    3 138
    Par défaut
    Bonjour,

    je vais peut être dire une bêtise, mais s'il charge ses images dans un Timage, dans une Form qu'il n'affiche jamais, il peut utiliser les images en utilisant la propriété Picture des Timages ?

    il n'a qu'un seul exécutable dans lequel ces images sont compilées ?

    Cordialement,

    Charly

  9. #9
    Membre confirmé
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Points : 534
    Points
    534
    Par défaut
    Ces images sont utilisées par le prog et donc diffusées avec le prog
    Le plus simple serait donc de stocker ces images dans le fichier .exe de ton application, à la suite du code.
    Mais il ne faut cependant pas oublier qu'une simple copie d'écran suffit pour récupérer les images lorsqu'on a le prog.

  10. #10
    Membre confirmé
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Points : 534
    Points
    534
    Par défaut
    ... Ou comme Charly910 le propose, mais dans de simples TImage's avec la propriété visible := false

  11. #11
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Bonjour,

    Mais il ne faut cependant pas oublier qu'une simple copie d'écran suffit pour récupérer les images lorsqu'on a le prog
    ... exact, sauf si le programme intercepte les combinaisons de touches-clavier pour empêcher le déclenchement de la copie d'écran.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  12. #12
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 824
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 824
    Points : 15 249
    Points
    15 249
    Par défaut
    Salut à tous,
    Citation Envoyé par Gilbert Geyer Voir le message
    ... exact, sauf si le programme intercepte les combinaisons de touches-clavier pour empêcher le déclenchement de la copie d'écran.
    Et moi j'utilise une vieille version de PaintShopPro qui permet de choisir la combinaison de touches pour faire la copie d'écran,
    Donc à moins d'interdire toutes les touches du clavier, y aura toujours moyen de faire des copies...

    Par ailleurs, il y a un truc que je ne pige pas dans les propositions de certains intervenants, et ça serait bien que Michel71 nous précise ce point : les images sont-elles affichées ou pas ?
    Car quand certains disent
    de simples TImage's avec la propriété visible := false
    ou
    un Timage, dans une Form qu'il n'affiche jamais
    moi je me demande à quoi ça sert des images qu'on ne voit pas,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  13. #13
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Re-bonjour,

    Jipété : Et moi j'utilise une vieille version de PaintShopPro qui permet de choisir la combinaison de touches pour faire la copie d'écran,
    ... Oups, autant pour moi ... j'avais oublié ... d'autant plus que j'utilise également un truc de copie d'écran qui permet la même manip.

    Donc à moins d'interdire toutes les touches du clavier, y aura toujours moyen de faire des copies...
    ... cela me donne idée : dès la détection d'un appui-de-touche on fait un Image1.Visible:=False et au repos-des-touches un Image1.Visible:=True : Oui/Non ?

    Mais Michel71 a dit au début :
    J'ai un petit problème avec des images
    ... sans dire combien, donc il faudrait plus qu'un seul Timage,
    ... et s'il y a pléthore d'images embarquées cela risque d'alourdir le navire.

    Au fait, Michel71, faudrait peut-être participer un peu à la discussion si tu veux avancer.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  14. #14
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 367
    Points : 3 138
    Points
    3 138
    Par défaut
    Bonjour,

    @ Jipété : la fenêtre qui ne s'affiche pas sert de stockage pour les images - ensuite on peut "aller les chercher" pour les utiliser dans d'autres parties du programme. On peut aussi les cacher hors écran au démarrage de l'appli ....

    A+

    Charly

  15. #15
    Membre confirmé
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Points : 534
    Points
    534
    Par défaut
    Mais s'il y a vraiment beaucoup d'images, on ne peut pas faire ainsi car l'application va être très longue à se lancer et, surtout, tout sera chargé en Ram, même les images jamais consultées !

    C'est pour cette raison que la solution de stocker les images dans l'.exe, après le code, est préférable car alors seul le code est chargé et les images le seront en fonction des besoins; de la même façon que si elles étaient dans un fichier joint.

    Tout cela est d'ailleurs déjà prévu dans Delphi avec le fichier ressources...

Discussions similaires

  1. Afficher des images sous directX
    Par cyberlewis dans le forum DirectX
    Réponses: 17
    Dernier message: 12/07/2004, 12h07
  2. Permutter des images dans ImageList ?
    Par GoustiFruit dans le forum Composants VCL
    Réponses: 2
    Dernier message: 19/12/2003, 09h07
  3. Interbase 6 et le type des images?
    Par AnestheziE dans le forum InterBase
    Réponses: 6
    Dernier message: 30/10/2003, 10h48
  4. question sur le format des images ..
    Par vbcasimir dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 28/08/2003, 12h08
  5. [TP][MULTI-PROBLEME]Comment afficher des images pcx
    Par mikoeur dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 24/10/2002, 13h57

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