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

WinDev Discussion :

Champ BLOB WDZIP10


Sujet :

WinDev

  1. #1
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut Champ BLOB WDZIP10
    Bonjour,

    Je dois récupérer des données dans une application WinDEV qui utilise une base MySQL...je pensais pouvoir m'en sortir facilement (sans WinDev), mais je trouve des champs BLOB qui contiennent des données binaires préfixées par "WDZIP10"

    je suppose que c'est le format ZIP à la sauce WinDev...est-ce que le format est connu, je suppose que quelque part là dedans j'ai du Inflate avec une entête spécifique WinDev; ou existe-il au moins un outils en ligne de commande que je puisse lancer pour déziper les données sur disque ?

    Merci
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    Oui, WDZIP est un utilitaire de compression de fichiers à la sauce Windev. Les informations sur ce soft sont ici : https://doc.pcsoft.fr/?3527005

    Je ne pense pas qu'il existe un système de ligne de commande.

    Cerise sur le gâteau, l'outil n'est pas redistribuable.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Oui, j'ai installé une version démo et j'ai vu leur outil qui sait en effet lire les données

    de ce que j'ai vu, le format du fichier est assez basique surtout que je n'ai qu'un fichier par blob

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    "WDZIP10", 0
    <méthode de compression, 0 = sans, 4 = ? >
    <Taille des données compressées - ou pas - (32bits)>
    <données non compressées - ou - données compressées + taille>
    <description du fichier>
     
    les données compressées contiennent:
    <Taille des données décompressées (32bits)>
    <les données compressées>
    par contre je ne sais pas quel algorithme de compression ils utilisent...manifestement pas quelque chose de très performant, un RTF de 54Ko passe à 20Ko en WDZ, 10Ko en ZIP et 9Ko en GZ

    du coup je suis bien embêté
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Comme c'est un algorithme maison, la solution est, je pense, de passer par programme.

    Effectivement, leur algorithme de compression n'est pas top. Je crois qu'il l'ont créé initialement pour leur installeur, pour "agglomérer" les fichiers donc. Puis, ils ont dû l'ouvrir pour que les développeurs puissent regarder ce qu'il y a dedans...
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  5. #5
    Membre actif
    Homme Profil pro
    Ingé Indus
    Inscrit en
    Juillet 2014
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingé Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 107
    Points : 241
    Points
    241
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    "WDZIP10", 0
    <méthode de compression, 0 = sans, 4 = ? >
    <Taille des données compressées - ou pas - (32bits)>
    <données non compressées - ou - données compressées + taille>
    <description du fichier>
     
    les données compressées contiennent:
    <Taille des données décompressées (32bits)>
    <les données compressées>
    par contre je ne sais pas quel algorithme de compression ils utilisent...manifestement pas quelque chose de très performant, un RTF de 54Ko passe à 20Ko en WDZ, 10Ko en ZIP et 9Ko en GZ

    du coup je suis bien embêté
    Tu as presque tout! L'algo est un simple: LZW

  6. #6
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    oui ça doit être quelque chose comme ça...mais je viens de tester avec https://sourceforge.net/projects/lzw/, je n'obtiens pas la même compression

    ça m'agace...voici ce que donne un WDZ pour un fichier comprenant 80 fois le même caractère


    Code : 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
    80 x '@' 1000000
    00 00 41 04 0e 24 58 d0 e0-41 84 09 15 2e 64 28
     
    80 x 'A' 1000001
    00 00 42 04 0e 24 58 d0 e0-41 84 09 15 2e 64 28
     
    80 x 'B' 1000010
    00 00 43 04 0e 24 58 d0 e0-41 84 09 15 2e 64 28
     
    80 x 'U' 1010101
    00 00 56 04 0e 24 58 d0 e0-41 84 09 15 2e 64 28
     
    80 x '*' 0101010
    00 00 2b 04 0e 24 58 d0 e0-41 84 09 15 2e 64 28
     
    @ 01000001.00000100000011100010010001011000110100001110000001000001100001000000100100010101001011100110010000101000
    A 01000010.00000100000011100010010001011000110100001110000001000001100001000000100100010101001011100110010000101000
    B 01000011.00000100000011100010010001011000110100001110000001000001100001000000100100010101001011100110010000101000
    U 01010110.00000100000011100010010001011000110100001110000001000001100001000000100100010101001011100110010000101000
    * 00101011.00000100000011100010010001011000110100001110000001000001100001000000100100010101001011100110010000101000
    je ne comprend pas le découpage...en LZW je devrais avoir "le caractère",256,257,258,259,260,261,262,263,264,265,266,267,259
    donc une séquence de 14 codes, soit 14 x 9 = 126 bits

    ça colle presque mais je n'arrive pas à trouver le découpage des bits...la nuit porte conseille, au lit !
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre actif
    Homme Profil pro
    Ingé Indus
    Inscrit en
    Juillet 2014
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingé Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 107
    Points : 241
    Points
    241
    Par défaut
    Oui, presque.
    Sauf que évidement c'est une implémentation à la PCSoft/Windev!
    Donc l'index commence à 1 et pas 0.
    D’où le @ que devient 0x41 et pas 0x40.

    Après pour comparer avec d'autre soft de compression,PCSoft :
    - ne rajoute pas la taille du buffer non compresser au début (contrairement au autre implémentation en général)
    - poids fort en premier

    Je pense que avec c'est info ça devrait être bon.

  8. #8
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    oh Yes !!! en fait ils stockent l'index + 1, les cons

    j'ai encore un truc qui coince mais j'ai bien le début de décodage de ma séquence

    Merci
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Ok, je résume pour ceux qui voudraient aussi déziper un WDZ

    Fichier WDZ:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    "WDZIP10", 0
    <fichiers compressés>
    <info sur les fichiers>
    Fichier compressé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Methode sur 1 octet (4 = WDZIP, 0 = stored)
    <taille des données sur 32bits>
    <données compressées ou données brutes>
    Données compressées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <taille décompressée sur 32bits>
    <zero sur 2 octets (ou taille sur 48bits ?)>
    <LZW sur 9bits avec des valeurs incrémentées de 1 !>
    pour la décompression LZW, on a donc un dictionnaire (1 => 0, 2 => 1, ... 256 => 255)
    il faut lire les valeurs sur 9bits au départ (étendre à 10, 11, 12 ... quand la taille du dictionnaire ne tient plus sur le nombre de bits)
    le code 257 est un reset du dictionnaire
    le code 0 ne serait jamais utilisé du coup

    pour les infos sur les fichiers je n'ai pas le détail, ni de méthode bien claire sur comment on passe de la compression aux infos, mon hypothèse est qu'on a
    <nombre de fichiers sur 32bits>,66
    comme indicateur de fin

    EDIT: ce n'est pas toujours 66...la logique doit être ailleurs

    donc sur 48bits, on a soit <méthode de compresssion sur 8 bits>+<taille sur 32bits>, soit <nombre de fichiers sur 32bits>+<un octet = 66>

    pour les infos sur le fichier je ne sais pas trop, mais ce sont des données variables

    après le 66 on a 3 fois 0

    ensuite la taille décompressée du 1er fichier sur 32 bits
    taille compressée + 11 (taille entête) sur 32 bits
    28 octets inconnus dont la date du fichier (EDIT:je pense que ce sont les dates de création, modification, et les attributs du fichier)
    le nom terminé par 0 (taille variable)
    18 octets inconnus à 0
    une valeur sur 32bits inconnue

    et la même chose pour chaque fichier
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  10. #10
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 180
    Points : 275
    Points
    275
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    ...
    ensuite la taille décompressée du 1er fichier sur 32 bits
    taille compressée + 11 (taille entête) sur 32 bits
    28 octets inconnus dont la date du fichier (EDIT:je pense que ce sont les dates de création, modification, et les attributs du fichier)
    le nom terminé par 0 (taille variable)
    18 octets inconnus à 0
    une valeur sur 32bits inconnue
    ...
    bonjour,

    je pense que cette partie doit correspondre à :
    Le nom du fichier et son chemin mémorisé.
    La taille originale du fichier.
    La taille compressée du fichier.
    La date et l'heure de création du fichier.
    La date et l'heure de modification du fichier.
    La date et l'heure d'accès du fichier.
    Les attributs du fichier.
    Le mode de cryptage du fichier.

    à remettre dans l'ordre, je ne suis pas un spécialiste du "découpage de fichier en bits"

    néanmoins pourquoi vouloir faire de la rétro-ingénierie sur un format uniquement utiliser par les outils PCSoft ?
    Cordialement JeAn-PhI

  11. #11
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par JeAn-PhI Voir le message
    néanmoins pourquoi vouloir faire de la rétro-ingénierie sur un format uniquement utiliser par les outils PCSoft ?
    Tout simplement car je fais une récupération de données sur une base MySQL alimentée par un logiciel développé sous WinDev qui a compressé certains champs BLOB en WDZIP.

    En fait je n'ai pas besoin des détails ci-dessus, le champ ne contient qu'un seul fichier et je peux me contenter de décompressé le premier flux, mais tant que j'y étais j'ai regardé un peu plus le format qui est non documenté sur le net
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. Champs BLOB avec une connexion ADO
    Par Ol' dans le forum Bases de données
    Réponses: 6
    Dernier message: 18/05/2004, 19h21
  2. Créer un champ BLOB
    Par Bweb dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/04/2004, 12h01
  3. [interbase] transferer un champ blob en par prog
    Par Harry dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/02/2004, 10h39
  4. Update d'un champ BLOB
    Par ZeKlubb dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 17/01/2004, 16h04
  5. faire un insert pour un champ blob
    Par tripper.dim dans le forum InterBase
    Réponses: 10
    Dernier message: 02/05/2003, 16h56

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