FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Form(résolu)
PAC : chiffrage de toute sorte de fichiers Emptypar leclode Aujourd'hui à 17:59

» trop de fichiers en cours
PAC : chiffrage de toute sorte de fichiers Emptypar Marc Aujourd'hui à 11:42

» Bataille navale SM
PAC : chiffrage de toute sorte de fichiers Emptypar jjn4 Hier à 17:39

» Une calculatrice en une ligne de programme
PAC : chiffrage de toute sorte de fichiers Emptypar jean_debord Hier à 8:01

» Gestion d'un système client-serveur.
PAC : chiffrage de toute sorte de fichiers Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
PAC : chiffrage de toute sorte de fichiers Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
PAC : chiffrage de toute sorte de fichiers Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
PAC : chiffrage de toute sorte de fichiers Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
PAC : chiffrage de toute sorte de fichiers Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
PAC : chiffrage de toute sorte de fichiers Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
PAC : chiffrage de toute sorte de fichiers Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
PAC : chiffrage de toute sorte de fichiers Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
PAC : chiffrage de toute sorte de fichiers Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
PAC : chiffrage de toute sorte de fichiers Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
PAC : chiffrage de toute sorte de fichiers Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
-20%
Le deal à ne pas rater :
Ecran PC GIGABYTE 28″ LED M28U 4K ( IPS, 1 ms, 144 Hz, FreeSync ...
399 € 499 €
Voir le deal

 

 PAC : chiffrage de toute sorte de fichiers

Aller en bas 
+2
JL35
Marc
6 participants
AuteurMessage
Marc

Marc


Nombre de messages : 2380
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

PAC : chiffrage de toute sorte de fichiers Empty
MessageSujet: PAC : chiffrage de toute sorte de fichiers   PAC : chiffrage de toute sorte de fichiers EmptyVen 22 Oct 2021 - 22:12

.
AVIS : Le programme -Pac- que vous allez découvrir est un logiciel expérimental et gratuit. Personne ne serait être tenu responsable des dommages ou des pertes de données résultant de son utilisation.


Bonjour à tous !

Après PanoCrypt, voici un autre petit utilitaire de chiffrage de fichier : Pac.

Pac est un programme qui sait chiffrer toute sorte de fichiers : exe, pdf, jpg, bmp, docx, …

Pac ne modifie pas le fichier original, il crée un nouveau fichier chiffré.

Un fichier chiffré Pac prend la forme d’une image bitmap avec l’extension .bmp .

PAC : chiffrage de toute sorte de fichiers Pac_bm10


CHIFFRAGE :
1) Cliquez dans la zone blanche "Fichier source à traiter :" pour sélectionner le fichier à chiffrer ;
2) Saisissez éventuellement un mot de passe ;
3) Cliquez dans la zone blanche "Destination :" pour définir le répertoire et le nom du fichier une fois chiffré ;
4) Cliquez sur le bouton "Chiffrer le fichier !". La légende de ce bouton vous indiquera la progression en % pendant le processus de chiffrage.

DECHIFFRAGE :
Effectuez les mêmes manœuvres que pour le chiffrage ! Le programme reconnaîtra s’il est en présence d’un fichier chiffré Pac. Dans ce cas, il passera automatiquement en mode déchiffrage.

Le code-source :
Code:
' PAC : Chiffrer un fichier sous forme d'image BMP
' Marc - octobre 2021
dim nomAbsoluFichierSource$, nomAbsoluFichierDestination$, nomNatifFichier$, flagMdp%
dim fichierPac%, tailleFichier%

label ouvrir, destination, afficherMdP, chiffrerDechiffrer, redim, quitter

interfaceUtilisateur()


end


sub interfaceUtilisateur()
    caption 0,"PAC : Chiffrer un fichier"
    width 0,width(0) - width_client(0) + 750
    height 0,height(0) - height_client(0) + 280
    left 0,(screen_x - width(0)) / 2
    top 0,(screen_y - height(0)) / 2
    color 0,230,230,230
    font_name 0,"Arial"
    font_size 0,"10"
    on_resize 0,redim
    on_close 0,quitter

    alpha 1
    top 1,30
    left 1,33
    caption 1,"Fichier source à traiter :"

    picture 2
    height 2,24
    width 2,690
    left 2,30
    top 2,50
    color 2,255,255,255
    cursor_point 2
    on_click 2,ouvrir
    
    alpha 3
    left 3,32
    top 3,54
    color 3,255,255,255
    cursor_point 3
    on_click 3,ouvrir

    alpha 4
    top 4,104
    left 4,194
    caption 4,"Mot de passe :"
    
    edit 5
    width 5,180
    height 5,24
    top 5,100
    left 5,284
    secret_on 5
    
    picture 6
    width 6,28
    height 6,28
    top 6,100
    left 6,469
    color 6,230,230,230    
    2d_target_is 6
    2d_pen_color 0,0,0
    2d_line 12,7,17,7
    2d_line 10,8,13,8
    2d_line 16,8,19,8
    2d_line 8,9,11,9
    2d_line 18,9,21,9
    2d_line 7,10,9,10
    2d_line 20,10,22,10
    2d_line 6,11,8,11
    2d_line 21,11,23,11
    2d_line 5,12,7,12
    2d_line 22,12,24,12
    2d_line 4,13,6,13
    2d_line 23,13,25,13
    2d_line 5,14,7,14
    2d_line 22,14,24,14
    2d_line 6,15,8,15
    2d_line 21,15,23,15
    2d_line 7,16,9,16
    2d_line 20,16,22,16
    2d_line 8,17,11,17
    2d_line 18,17,21,17
    2d_line 10,18,13,18
    2d_line 16,18,19,18
    2d_line 12,19,17,19
    ' centre de l'oeil
    2d_line 13,10,16,10
    2d_line 12,11,14,11
    2d_line 15,11,17,11
    2d_line 11,12,13,12
    2d_line 16,12,18,12
    2d_point 11,13
    2d_point 17,13
    2d_line 11,14,13,14
    2d_line 16,14,18,14
    2d_line 12,15,14,15
    2d_line 15,15,17,15
    2d_line 13,16,16,16
    cursor_point 6
    MotDePasseVisibleOuiNon()
    on_click 6,afficherMdP
    
    alpha 7
    top 7,132
    left 7,33
    caption 7,"Destination :"

    picture 8
    height 8,24
    width 8,690
    left 8,30
    top 8,152
    cursor_point 8
    on_click 8,destination

    alpha 9
    left 9,32
    top 9,156          
    color 9,255,255,255
    cursor_point 9
    on_click 9,destination
    
    button 10
    width 10,150
    height 10,30
    top 10,210
    left 10,300
    caption 10,"Chiffrer le fichier !"
    on_click 10,chiffrerDechiffrer

    picture 11
    hide 11

    open_dialog 20
    save_dialog 21
end_sub


afficherMdP:
    MotDePasseVisibleOuiNon()
return


sub MotDePasseVisibleOuiNon()
    2d_target_is 6
    if flagMdP% = 0
        secret_on 5
        caret_position 5,len(text$(5))
        hint 6,"Afficher le mot de passe"
        flagMdP% = 1
        2d_pen_color 255,0,0
        2d_line 6,5,23,22
        2d_line 7,5,23,21
        2d_line 6,6,22,22
    else
        secret_off 5
        caret_position 5,len(text$(5))
        flagMdP% = 0
        hint 6,"Cacher le mot de passe"
        2d_pen_color 230,230,230
        2d_line 6,5,23,22
        2d_line 7,5,23,21
        2d_line 6,6,22,22
        2d_pen_color 0,0,0
        2d_line 9,9,11,9
        2d_point 10,8
        2d_line 12,11,14,11
        2d_line 15,15,17,15
        2d_line 18,17,20,17
        2d_point 18,18
    end_if    
end_sub


ouvrir:
    ouvrirFichier()
return


sub ouvrirFichier()
    dim_local tailleHexaFichier$, addenda%(268), longueurfichier%, a$, p%, stringTailleFichier$
    dim_local octetHexa1$, octetHexa2$, octetHexa3$, octetHexa4$, index%, annonce$

    nomAbsoluFichierSource$ = ""
    caption 3,nomAbsoluFichierSource$      :' effacer le nom du fichier à traiter
    text 5,""                              :' effacer le mot depasse
    nomAbsoluFichierDestination$ = ""
    caption 9,nomAbsoluFichierDestination$ :' effacer le nom de fichier destination
    fichierPac% = 0                        :' le fichier à traiter n'est pas un fichier "Pac"
    caption 10,"Chiffrer le fichier !"     :' légende du bouton
    nomNatifFichier$ = ""
    
    file_dialog 20,""
    filter 20,"Tous les types de fichiers (*.*)"
    nomAbsoluFichierSource$ = file_name$(20)

    if nomAbsoluFichierSource$ ="_"
        nomAbsoluFichierSource$ = ""
        exit_sub
    end_if

    filebin_open_read 25,nomAbsoluFichierSource$

    ' vérification que le fichier ne soit pas vide
    tailleFichier% = filebin_size(25)
    if tailleFichier% = 0
        annonce$ = chr$(34) + nomAbsoluFichierSource$ + chr$(34) + chr$(13) + chr$(13)
        annonce$ = annonce$ + "Ce fichier est vide, il ne peut pas être chiffré !"
        if message_warning_ok(annonce$) < 3
            nomAbsoluFichierSource$ = ""
            filebin_close 25
            exit_sub
        end_if
    end_if

' ///// déterminer si le fichier choisi est chiffré "Pac" /////
    ' vérifier si le fichier est un ".bmp"
    a$ = upper$(nomAbsoluFichierSource$)
    if file_extract_extension$(a$) = ".BMP"
        ' vérifier si le fichier possède une taille > 300 octets puis lecture des 267 derniers octets
        if tailleFichier% > 300
            filebin_position 25,tailleFichier% - 267
            filebin_block_read 25,267,addenda%(1)

            ' vérifier la présence de l'identificateur "Pac"
            if addenda%(1)=80 and addenda%(2)=97 and addenda%(3)=99

                ' extraction taille du fichier natif
                octetHexa1$ = hex$(addenda%(4))
                if len(octetHexa1$) = 1
                    octetHexa1$ = "0" + octetHexa1$
                end_if
                octetHexa2$ = hex$(addenda%(5))
                if len(octetHexa2$) = 1
                    octetHexa2$ = "0" + octetHexa2$
                end_if
                octetHexa3$ = hex$(addenda%(6))
                if len(octetHexa3$) = 1
                    octetHexa3$ = "0" + octetHexa3$
                end_if
                octetHexa4$ = hex$(addenda%(7))
                if len(octetHexa4$) = 1
                    octetHexa4$ = "0" + octetHexa4$
                end_if
                tailleHexaFichier$ = octetHexa1$ + octetHexa2$ + octetHexa3$ + octetHexa4$
                tailleFichier% = hex(tailleHexaFichier$)

                ' ajout séparateur de milliers pour l'affichage de la taille du fichier
                stringTailleFichier$ = str$(tailleFichier%)
                p% = len(stringTailleFichier$)+1
                while p% > 4
                    p% = p% - 3
                    stringTailleFichier$=insert$(stringTailleFichier$,chr$(32),p%)
                end_while

                ' extraction du nom natif du fichier
                index% = 8
                while addenda%(index%) <> 0
                    nomNatifFichier$ = nomNatifFichier$ + chr$(addenda%(index%))
                    index% = index% + 1
                end_while
            
                fichierPac% = 1
            end_if
        end_if
    end_if
    
    filebin_close 25

    if fichierPac% = 1
        annonce$ = "L'image " + chr$(34) + file_extract_name$(nomAbsoluFichierSource$) + chr$(34) + " est un fichier PAC chiffré."
        annonce$ = annonce$ + chr$(13) + chr$(13)
        annonce$ = annonce$ + "- Son nom natif est : " + chr$(34) + nomNatifFichier$ + chr$(34)
        annonce$ = annonce$ + chr$(13) + chr$(13)
        annonce$ = annonce$ + "- La taille du fichier est de :  " + stringTailleFichier$ + " octets"
        annonce$ = annonce$ + chr$(13) + chr$(13)
        annonce$ = annonce$ + "Voulez-vous le déchiffrer ?"
        if message_information_yes_no(annonce$) <> 1
            nomAbsoluFichierSource$ = ""
            exit_sub
        end_if
        caption 10,"Déchiffrer le fichier"
    end_if

    caption 3,nomAbsoluFichierSource$
    set_focus 5
end_sub


destination:
    enregistrerSous()
return


sub enregistrerSous()
    dim_local b$,c$,longueurnomFichier%, n%, pos%, annonce$

    ' préréglage de l'objet SAVE_DIALOG 21
    if fichierPac% = 1
        filter 21,""
        file_dialog 21,nomNatifFichier$
    else
        filter 21,"Fichier image BMP|*.bmp"
        file_dialog 21,""
    end_if

    nomAbsoluFichierDestination$ = file_name$(21)

    if nomAbsoluFichierDestination$ = "_" or nomAbsoluFichierDestination$ = ""
        nomAbsoluFichierDestination$ = ""
        caption 9,""
        exit_sub
    end_if

    ' gestion de l'extension du nom de fichier destination
    b$ = upper$(nomAbsoluFichierDestination$)
    c$ = upper$(file_extract_extension$(nomNatifFichier$))
    if fichierPac% = 0
        if file_extract_extension$(b$) <> ".BMP"
            nomAbsoluFichierDestination$ = nomAbsoluFichierDestination$ + ".bmp"
        end_if
    else
        if file_extract_extension$(b$) <> c$
            nomAbsoluFichierDestination$ = nomAbsoluFichierDestination$ + file_extract_extension$(nomNatifFichier$)
        end_if
    end_if
    
    if nomAbsoluFichierDestination$ = nomAbsoluFichierSource$
        annonce$ = "Les noms des fichiers SOURCE et DESTINATION sont identiques !" + chr$(13) + chr$(13)
        annonce$ = annonce$ + "Impossible de copier un fichier sur lui-même !"
        if message_warning_ok(annonce$) <> 3
            nomAbsoluFichierDestination$ = ""
            caption 9,""
            exit_sub
        end_if
    end_if

    if file_exists(nomAbsoluFichierDestination$) = 1
        annonce$ = chr$(34) + nomAbsoluFichierDestination$ + chr$(34) + chr$(13) + chr$(13)
        annonce$ = annonce$ + "Ce nom de fichier existe dejà !  Le remplacer ?"
        if message_warning_yes_no(annonce$) <> 1
            nomAbsoluFichierDestination$ = ""
            caption 9,""
            exit_sub
        end_if    
    end_if

    caption 9,nomAbsoluFichierDestination$    
end_sub


chiffrerDechiffrer:
    if nomAbsoluFichierDestination$ = "" or nomAbsoluFichierSource$ = ""
        return
    end_if

    if fichierPac% = 0
        chiffrage()
    else
        if fichierPac% = 1
            dechiffrage()
        end_if    
    end_if    
return


sub chiffrage()
    dim_local cleHexa$, octet1%, octet2%, octet3%, dimCoteImage%, suffixe%(268)
    dim_local longueurFichierSourceHexa$, nomRelatifFichierSource$, index%, rang%, annonce$
    dim_local longueurFichierSource%, complement%, x%, y%, r%, v%, b%, ratio, n%
  
    inactive 0
    
    ' création des clés de chiffrage
    cleHexa$ = genererCleChiffrage$(text$(5))
    octet1% = hex(left$(cleHexa$,2))
    octet2% = hex(mid$(cleHexa$,3,2))
    octet3% = hex(right$(cleHexa$,2))

    ' ouverture fichier source binaire à chiffrer
    filebin_open_read 23,nomAbsoluFichierSource$

    ' calcul de la dimension de l'image carrée qui sera produite
    longueurFichierSource% = filebin_size(23)
    dimCoteImage% = int(sqr((longueurFichierSource%+2)/3))
    if (dimCoteImage%*dimCoteImage%) < longueurFichierSource%/3
        dimCoteImage% = dimCoteImage% + 1
    end_if

    ' dimensionnement du picture accueillant l'image
    height 11,dimCoteImage%
    width 11,dimCoteImage%
    2d_target_is 11

    ' dessiner l'image
    ratio = dimCoteImage%*dimCoteImage% / 100 :' utilisé pour le calcul du % d'avancement du chiffrage du fichier

    if text$(5) = ""
        ' dessiner l'image sans mot de passe
        for y% = 0 to dimCoteImage% - 1
            for x% = 0 to dimCoteImage% - 1
                r% = filebin_read(23)
                v% = filebin_read(23)
                b% = filebin_read(23)
                2d_pen_color r%,v%,b%  
                2d_point x%,y%
                n% = n% + 1
            next x%
            caption 10,str$(int(n% / ratio)) + " %"
            display
        next y%
    else
        ' dessiner l'image avec mot de passe
        for y% = 0 to dimCoteImage% - 1
            for x% = 0 to dimCoteImage% - 1
                r% = bin_xor(filebin_read(23),octet1%)
                v% = bin_xor(filebin_read(23),octet2%)
                b% = bin_xor(filebin_read(23),octet3%)
                2d_pen_color r%,v%,b%  
                2d_point x%,y%
                n% = n% + 1
            next x%
            caption 10,str$(int(n% / ratio)) + " %"
            display
        next y%
    end_if

    caption 10,"100 %"
    
    ' enregistrement de l'image créée
    file_save 11,nomAbsoluFichierDestination$

    ' Ajout d'une trame de 268 octets au bout du fichier image BMP dans lequel sont chiffrés la taille du fichier
    ' d'origine + son nom
    ' format suffixe : 3 octets d'identification (Pac)
    '                  4 octets big-endian : longueur du fichier source
    '                  de 1 à 260 octets  : nom du fichier source
    '                  complétion par octet NULL pour atteindre un total de 268 octets.

    ' creer identificateur : 3 octets
    suffixe%(1) = asc("P")
    suffixe%(2) = asc("a")
    suffixe%(3) = asc("c")
    
    ' creer 4 octets (ordre big_endian) indiquant la longueur en octets du fichier source
    longueurFichierSource% = filebin_size(23)
    longueurFichierSourceHexa$ = hex$(longueurFichierSource%)
    while len(longueurFichierSourceHexa$) < 8
        longueurFichierSourceHexa$ = "0" + longueurFichierSourceHexa$
    end_while
    suffixe%(4) = hex(left$(longueurFichierSourceHexa$,2))
    suffixe%(5) = hex(mid$(longueurFichierSourceHexa$,3,2))
    suffixe%(6) = hex(mid$(longueurFichierSourceHexa$,5,2))
    suffixe%(7) = hex(right$(longueurFichierSourceHexa$,2))

    ' nom du fichier source
    nomRelatifFichierSource$ = file_extract_name$(nomAbsoluFichierSource$)
    index% = 8
    for rang% = 1 to len(nomRelatifFichierSource$)
        suffixe%(index%) = asc(mid$(nomRelatifFichierSource$,rang%,1))
        index% = index% + 1
    next rang%
        
    ' complétion
    while index% < 269
        suffixe%(index%) = 0
        index% = index% + 1
    end_while
    
    filebin_open_write 24,nomAbsoluFichierDestination$
    filebin_position 24,filebin_size(24)
    filebin_block_write 24,267,suffixe%(1)
    filebin_close 24
    filebin_close 23
    
    annonce$ = "Chiffrage effectué !" + chr$(13) + chr$(13)
    annonce$ = annonce$ + "Retrouvez votre fichier ici :" + chr$(13) + chr$(13)
    annonce$ = annonce$ + chr$(34) + nomAbsoluFichierDestination$ +chr$(34)
    message annonce$

    nomAbsoluFichierSource$ = ""
    caption 3,nomAbsoluFichierSource$      :' effacer le nom du fichier à traiter
    text 5,""                              :' effacer le mot depasse
    nomAbsoluFichierDestination$ = ""
    caption 9,nomAbsoluFichierDestination$ :' effacer le nom de fichier destination
    fichierPac% = 0                        :' le fichier à traiter n'est pas un fichier "Pac"
    caption 10,"Chiffrer le fichier !"     :' légende du bouton
    nomNatifFichier$ = ""
    active 0
end_sub


sub dechiffrage()
    dim_local cleHexa$, annonce$, octet1%, octet2%, octet3%, y%, x%, index%
    dim_local enteteFichier%(25), l%, h%, ratio
    
    inactive 0

    ' effacer le fichier destination s'il existe déjà
    if file_exists(nomAbsoluFichierDestination$) = 1
        file_delete nomAbsoluFichierDestination$
    end_if
    
    ' creation des clés de déchiffrage
    cleHexa$ = genererCleChiffrage$(text$(5))
    octet1% = hex(left$(cleHexa$,2))
    octet2% = hex(mid$(cleHexa$,3,2))
    octet3% = hex(right$(cleHexa$,2))

    ' lecture entête fichier à déchiffrer
    filebin_open_read 26,nomAbsoluFichierSource$
    filebin_block_read 26,25,enteteFichier%(0)    
    filebin_close 26

    ' vérifier la conformité du fichier
    if enteteFichier%(0) <> 66 and enteteFichier%(1) <> 77
        MessageFichierCorrompu()
        active 0
        exit_sub
    end_if

    ' lecture des dimensions de l'image
    l% = hex(hex$(enteteFichier%(21)) + hex$(enteteFichier%(20)) + hex$(enteteFichier%(19)) + hex$(enteteFichier%(18)))
    h% = hex(hex$(enteteFichier%(25)) + hex$(enteteFichier%(24)) + hex$(enteteFichier%(23)) + hex$(enteteFichier%(22)))

    if l% <> h%
        MessageFichierCorrompu()
        active 0
        exit_sub
    end_if

    width 11,l%
    height 11,h%

    ' chargement du fichier à déchiffrer dans l'objet PICTURE 11
    file_load 11,nomAbsoluFichierSource$

    ' créer le fichier binaire en écriture
    filebin_open_write 27,nomAbsoluFichierDestination$
    filebin_position 27,0
    
    ' déchiffrer l'image de l'objet PICTURE 11
    ratio = tailleFichier% / 100 :' utilisé pour le calcul du % d'avancement du déchiffrage
    if text$(5) = ""
        ' déchiffrer sans mot de passe
        index% = 0
        for y% = 0 to h% - 1
            for x% = 0 to l% - 1
                filebin_write 27,color_pixel_red(11,x%,y%)
                index% =index% + 1
                if index% = tailleFichier%
                    exit_for
                end_if
                filebin_write 27,color_pixel_green(11,x%,y%)
                index% = index% + 1
                if index% = tailleFichier%
                    exit_for
                end_if
                filebin_write 27,color_pixel_blue(11,x%,y%)
                index% = index% + 1
                if index% = tailleFichier%
                    exit_for
                end_if
            next x%
            if index% = tailleFichier%
                exit_for
            end_if
        caption 10,str$(int(index% / ratio)) + " %"
        display
        next y%    
    else
        ' déchiffrer avec mot de passe
        index% = 0
        for y% = 0 to h% - 1
            for x% = 0 to l% - 1
                filebin_write 27,bin_xor(color_pixel_red(11,x%,y%),octet1%)
                index% =index% + 1
                if index% = tailleFichier%
                    exit_for
                end_if
                filebin_write 27,bin_xor(color_pixel_green(11,x%,y%),octet2%)
                index% =index% + 1
                if index% = tailleFichier%
                    exit_for
                end_if
                filebin_write 27,bin_xor(color_pixel_blue(11,x%,y%),octet3%)
                index% =index% + 1
                if index% = tailleFichier%
                    exit_for
                end_if
            next x%
            if index% = tailleFichier%
                exit_for
            end_if
            caption 10,str$(int(index% / ratio)) + " %"
            display
        next y%    
    end_if

    caption 10,"100 %"
    filebin_close 27

    annonce$ = "Déchiffrage effectué !" + chr$(13) + chr$(13)
    annonce$ = annonce$ + "Retrouvez votre fichier ici :" + chr$(13) + chr$(13)
    annonce$ = annonce$ + chr$(34) + nomAbsoluFichierDestination$ +chr$(34)
    message annonce$

    nomAbsoluFichierSource$ = ""
    caption 3,nomAbsoluFichierSource$      :' effacer le nom du fichier à traiter
    text 5,""                              :' effacer le mot depasse
    nomAbsoluFichierDestination$ = ""
    caption 9,nomAbsoluFichierDestination$ :' effacer le nom de fichier destination
    fichierPac% = 0                        :' le fichier à traiter n'est pas un fichier "Pac"
    caption 10,"Chiffrer le fichier !"     :' légende du bouton
    nomNatifFichier$ = ""
    active 0
end_sub


fnc genererCleChiffrage$(mdp$)
    dim_local cle24Bits, clefHexa$, c$, p%, i%, j%, t$

    for i% = 1 to len(mdp$)
        c$ = mid$(mdp$,i%,1)
        t$ = t$ + hex$(asc(c$))
    next i%

    p% = 1
    cle24Bits = hex("e959e3")

    for i% = len(t$) to 1 step -2
        c$ = mid$(t$,p%,2)
        cle24Bits = bin_xor(cle24Bits,hex(c$))
        p% = P% + 2
        for j% = 0 to 7
            if bin_and(cle24Bits,hex("000001")) = 1
                cle24Bits = bin_xor(int(cle24Bits/2),hex("5D6DCB"))
            else
                cle24Bits = int(cle24Bits/2)
            end_if
        next j%
    next i%

    clefHexa$ = hex$(cle24Bits)

    while len(clefHexa$) < 6
        clefHexa$ = "0" + clefHexa$
    end_while

    result clefHexa$
end_fnc


sub MessageFichierCorrompu()
    if message_warning_ok("Impossible de déchiffrer ce fichier !") < 2
    end_if
end_sub


redim:
    width 0,width(0) - width_client(0) + 750
    height 0,height(0) - height_client(0) + 280
return


quitter:
    close_inactive
    if nomAbsoluFichierDestination$ <> "" or nomAbsoluFichierSource$ <> ""
        if message_warning_yes_no("Vous avez commencé une tâche, voulez-vous quitter quand même ?") <> 1
            return
        end_if
    end_if
    close_active
return

Voilà, il n’y a plus qu’à tester ! Si vous rencontrez une anomalie de fonctionnement ou si vous souhaitez en savoir plus sur la technique employée, dites-le moi !

A bientôt !


Dernière édition par Marc le Dim 31 Oct 2021 - 11:14, édité 1 fois
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

PAC : chiffrage de toute sorte de fichiers Empty
MessageSujet: Re: PAC : chiffrage de toute sorte de fichiers   PAC : chiffrage de toute sorte de fichiers EmptyVen 22 Oct 2021 - 22:45

Merci Marc, on va regarder ça de près

A première vue, impeccable et très rapide !
J'avais fait un truc du même genre mais je n'avais pas finalisé...
Ton programme est super, avec en plus la possibilité de crypter sans mot de passe.
Encore merci Marc, j'adopte !
Revenir en haut Aller en bas
jean_debord

jean_debord


Nombre de messages : 1249
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

PAC : chiffrage de toute sorte de fichiers Empty
MessageSujet: Re: PAC : chiffrage de toute sorte de fichiers   PAC : chiffrage de toute sorte de fichiers EmptySam 23 Oct 2021 - 9:12

Bonjour Marc,

Pourrait-on faire la même chose en Base64 (coder le fichier en Base64, puis le décoder sous forme d'image) ?
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

PAC : chiffrage de toute sorte de fichiers Empty
MessageSujet: Re: PAC : chiffrage de toute sorte de fichiers   PAC : chiffrage de toute sorte de fichiers EmptySam 23 Oct 2021 - 9:49

Bonjour Marc

J'ai testé avec un fichier ODT (Open office) de 330ko et plus de 200 pages de texte.
J'ai codé avec ou sans mdp et ça fonctionne parfaitement ! cheers
Juste quelques secondes de conversion dans un sens comme dans l'autre.

C'est beaucoup plus pratique qu'avec le memo. Le but étant de coder ou décoder.
Et donc c'est parfait !

Merci pour cette réalisation Marc. Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Froggy One

Froggy One


Nombre de messages : 584
Date d'inscription : 06/01/2012

PAC : chiffrage de toute sorte de fichiers Empty
MessageSujet: Re: PAC : chiffrage de toute sorte de fichiers   PAC : chiffrage de toute sorte de fichiers EmptySam 23 Oct 2021 - 18:25

Idem avec WORD, cela fonctionne très bien !!! super, merci !
Revenir en haut Aller en bas
http://gaeldwest.wordpress.com
Marc

Marc


Nombre de messages : 2380
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

PAC : chiffrage de toute sorte de fichiers Empty
MessageSujet: Re: PAC : chiffrage de toute sorte de fichiers   PAC : chiffrage de toute sorte de fichiers EmptySam 23 Oct 2021 - 23:01

Bonjour à tous !

Merci pour vos gentils commentaires et vos retours sur le bon fonctionnement de ce petit programme.

Minibug a écrit:
C'est dommage que tu abandonnes l'idée du fichier image, c'était la base de PanoCrypt !

Que tu retires le memo ok mais tu devrais garder le principe de sauvegarde en image.
Sinon il existe plein de logiciels de cryptage ! Après c'est ton choix.

Oui tu as raison, Minibug, j’ai donc conservé le principe de l’image BMP.


Klaus a écrit:
Prévois dans ton interface visuelle une barre de progression qui sera utile pour les grands fichiers...

Oui, c'est une bonne idée. J'ai procédé ainsi : lors des opérations de chiffrage et déchiffrage, la légende du (seul) bouton indique la progression en pourcentage.
Spoiler:


Jean_Debord a écrit:
Pourrait-on faire la même chose en Base64 (coder le fichier en Base64, puis le décoder sous forme d'image) ?

Oui, tout à fait, mais cela risque d’augmenter la durée des chiffrages et déchiffrages.
Tu m’as donné idée de faire un petit codeur expérimental en base64. Je le publie dans quelques minutes…


A bientôt !
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

PAC : chiffrage de toute sorte de fichiers Empty
MessageSujet: Re: PAC : chiffrage de toute sorte de fichiers   PAC : chiffrage de toute sorte de fichiers EmptyLun 25 Oct 2021 - 17:52

Bizarre, je ne vois nulle part de référence à ces deux instructions
CLOSE_INACTIVE (ligne 542)
CLOSE_ACTIVE (ligne 536)
non répertoriées dans l'aide (Panoramic version 0.9.29i9)
et pourtant ça ne cause pas d'erreur à l'exécution...
C'est quoi ?
Revenir en haut Aller en bas
Marc

Marc


Nombre de messages : 2380
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

PAC : chiffrage de toute sorte de fichiers Empty
MessageSujet: Re: PAC : chiffrage de toute sorte de fichiers   PAC : chiffrage de toute sorte de fichiers EmptyLun 25 Oct 2021 - 18:10

Bonjour JL35 !

Voici le lien qui mène au fil de discussion sur ces deux "nouveaux" mots-clés : CLOSE_ACTIVE et CLOSE_INACTIVE.

https://panoramic.1fr1.net/t6009-version-instantanee-v-0-9-29i4-du-9-11-2018
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

PAC : chiffrage de toute sorte de fichiers Empty
MessageSujet: Re: PAC : chiffrage de toute sorte de fichiers   PAC : chiffrage de toute sorte de fichiers EmptyLun 25 Oct 2021 - 19:22

Merci Marc, je vais regarder ça.
Bonne soirée !

PS en effet, ça ne date pas d'hier...
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2690
Date d'inscription : 13/09/2009

PAC : chiffrage de toute sorte de fichiers Empty
MessageSujet: Re: PAC : chiffrage de toute sorte de fichiers   PAC : chiffrage de toute sorte de fichiers EmptySam 30 Oct 2021 - 16:06

Carrément FA-BU-LIS-SI-ME, ce programme de cryptage !
Bravo, Marc, chapeau bas !!!
J'ai tout essayé, les .doc les .txt les .pdf les .bmp les .jpg
avec ou sans mot de passe, tout marche super, bravo !!!!!!
cheers
Petite question :
Le cryptage est le même que celui de PanoCrypt ?
Petite remarque :
Si, une fois un programme codé en bmp,
on veut le décoder et qu'on met la copie décodée du fichier
au même endroit que l'original et qu'on ne veut pas qu'il
écrase l'original, mais qu'il l'enregistre avec un autre nom :
par exemple : Fichier.pdf --> PAC.bmp --> Fichier-2.pdf
alors, il perd la précision de l'extension et enregistre
le nouveau fichier décodé sous le nom de : Fichier-2 (sans extension).
Bon, c'est un détail, d'accord, mais avec un truc d'une telle perfection... Laughing
king
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2380
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

PAC : chiffrage de toute sorte de fichiers Empty
MessageSujet: Re: PAC : chiffrage de toute sorte de fichiers   PAC : chiffrage de toute sorte de fichiers EmptyDim 31 Oct 2021 - 11:26

Bonjour à tous !

Merci JJN4 !
JJN4 a écrit:
Le cryptage est le même que celui de PanoCrypt ?

Il y a des similitudes entre le programme PanoCrypt et Pac, mais ils sont totalement incompatibles.

Les grandes lignes :
J’ai gardé ce principe (sur les conseils de Minibug) : 3 octets codent les valeurs R.V.B. d’un pixel.
Dans Pac, c’est une lecture binaire du fichier-source qui est faite, ce qui permet d’encoder n’importe quel type de fichier. A l’image BMP créée, j’ajoute en fin de fichier une trame dans laquelle on retrouve :
- un identifiant sur 3 octets qui permet de savoir si le fichier entrant est un "BMP Pac". Le programme ne peut pas confondre un "BMP PAC" avec un BMP ordinaire ;
- puis 4 octets informent de la longueur exacte du fichier d’origine ;
- et pour finir, un nombre variable d’octets destinés à l’information du nom avec l’extension du fichier d’origine.

JJN4 a écrit:
Fichier.pdf --> PAC.bmp --> Fichier-2.pdf
alors, il perd la précision de l'extension...

Je comprends ton explication. En cas de changement du nom d’origine, je pourrais forcer le nouveau nom à reprendre la même extension que le fichier natif…
Ta remarque est très pertinente, je modifie de suite !

Le code-source (situé dans le premier post) a été mis à jour.

Merci JJN4 pour tous tes essais !
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2690
Date d'inscription : 13/09/2009

PAC : chiffrage de toute sorte de fichiers Empty
MessageSujet: Re: PAC : chiffrage de toute sorte de fichiers   PAC : chiffrage de toute sorte de fichiers EmptyDim 31 Oct 2021 - 12:28

Impecc !
cheers
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Contenu sponsorisé





PAC : chiffrage de toute sorte de fichiers Empty
MessageSujet: Re: PAC : chiffrage de toute sorte de fichiers   PAC : chiffrage de toute sorte de fichiers Empty

Revenir en haut Aller en bas
 
PAC : chiffrage de toute sorte de fichiers
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
»  - Bacong V1.0 - Sorte de Pong traduit depuis Aurel Basic
» HISTORAMIC - C'est toute une histoire...
» lire un fichier toute les 30' sans bloquer le prog
» Visualisation des fichiers CSV
» Une forêt (pas toute la forêt) pour faire plaisir à Minibug

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: