Question
Stockage de donnée binaire dans un script (Résolu)
- Jacques Barathon
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 16 ans 6 jours #2202
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Stockage de donnée binaire dans un script
L'encodage et le décodage de données Base64 sont tout à fait possibles avec PowerShell via le Framework .Net. Voir le blog suivant pour un exemple en C# mais qui ne devrait pas poser de problème particulier en PowerShell:
weblogs.asp.net/cfrazier/archive/2005/05/27/409405.aspx
L'exemple est également intéressant car il montre l'utilisation d'une Here String pour stocker les données dans le script lui-même. Je ne vais pas me lancer dans une explication détaillée des Here Strings, mais en très gros c'est un type de chaîne qui peut s'étendre sur un nombre à priori illimité de lignes et contenir n'importe quels caractères.
En PowerShell, une Here String a une syntaxe légèrement plus contraignante qu'en C#: il faut forcément aller à la ligne après le @\" qui signale le début de la chaîne, et la chaîne doit se terminer par les caractères \"@ qui doivent être tout seuls sur la dernière ligne. On aura même intérêt à utiliser @' et '@ pour éviter des substitutions inopinées de variables dans le texte si celui-ci contient des $.
Tout ça devrait permettre à tonic8 de démarrer en reproduisant à très peu de choses près le type de syntaxe de Rebol. Pour aller plus loin, il est possible de passer par les classes System.IO pour manipuler des flux de données binaires.
Janel
weblogs.asp.net/cfrazier/archive/2005/05/27/409405.aspx
L'exemple est également intéressant car il montre l'utilisation d'une Here String pour stocker les données dans le script lui-même. Je ne vais pas me lancer dans une explication détaillée des Here Strings, mais en très gros c'est un type de chaîne qui peut s'étendre sur un nombre à priori illimité de lignes et contenir n'importe quels caractères.
En PowerShell, une Here String a une syntaxe légèrement plus contraignante qu'en C#: il faut forcément aller à la ligne après le @\" qui signale le début de la chaîne, et la chaîne doit se terminer par les caractères \"@ qui doivent être tout seuls sur la dernière ligne. On aura même intérêt à utiliser @' et '@ pour éviter des substitutions inopinées de variables dans le texte si celui-ci contient des $.
Tout ça devrait permettre à tonic8 de démarrer en reproduisant à très peu de choses près le type de syntaxe de Rebol. Pour aller plus loin, il est possible de passer par les classes System.IO pour manipuler des flux de données binaires.
Janel
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
- Auteur du sujet
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 16 ans 1 jour #2240
par Gabriel
Réponse de Gabriel sur le sujet Re:Stockage de donnée binaire dans un script
ookkayyy Alors d'abord chapeau, merci, chapeau c'est pile poil ca. a pu qu'a en faire une fonction pour jouer avec plusieurs fichiers encodés...
Juste dans l'exemple que tu donnes il utilise System.Drawing. Et le total newbie que je suis comprend pas, l'encodage 64 convertie le fichier mais pourquoi pour le decoder il faut le \"redessiner\" (System.Drawing.Imaging.ImageFormat.Gif). Si ca vient d'un e-mail. Le monsieur il a bien des amis qui lui envoi pas que du gif par e-mail genre du ppt et autre. hors le logiciel e-mail prend la donnée et la decode sans se soucier de se que c'est, on peut meme dire que si je renomme un fichier gif en ppt que je l'envoie, au decodage il aura créé un fichier gif mais renommé en ppt.
Merchi de vos lumieres...
Juste dans l'exemple que tu donnes il utilise System.Drawing. Et le total newbie que je suis comprend pas, l'encodage 64 convertie le fichier mais pourquoi pour le decoder il faut le \"redessiner\" (System.Drawing.Imaging.ImageFormat.Gif). Si ca vient d'un e-mail. Le monsieur il a bien des amis qui lui envoi pas que du gif par e-mail genre du ppt et autre. hors le logiciel e-mail prend la donnée et la decode sans se soucier de se que c'est, on peut meme dire que si je renomme un fichier gif en ppt que je l'envoie, au decodage il aura créé un fichier gif mais renommé en ppt.
Merchi de vos lumieres...
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
- Auteur du sujet
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 15 ans 9 mois #2553
par Gabriel
Réponse de Gabriel sur le sujet Re:Stockage de donnée binaire dans un script
Alors j'ai trouvé plus simple
Il faut installer les \"PowerShell Community Extensions\", il y a directement la fonction pour convertir de/vers base64
[code:1]
$b64 = ConvertTo-Base64 \"C:\Documents and Settings\tonic8\My Documents\My Pictures\smileys\ange02.gif\"
[/code:1]
on obtient ca:
[code:1]
PS z:\> $b64
R0lGODlhEgAYANQUAAkJCaeFDe7KGLyPClJCCo9qB8fFw72zoHBdJ4qFeOfl5MyuEqioqF5GDZpt
BdnVzCIiIv7gIJuVhlxcXPX19dGeCnppPEIyEt+0EnJiOkJCQmhSErKysp96Cq6SDgAAACH/C05F
VFNDQVBFMi4wAwEAAAAh+QQJZAAfACwAAAAAEgAYAAAFyuBnTJoGAWgKlZPxSVPCGApFfZ+tGEwy
STAZzYbT8XwSEcmUUrFcuKh0Sq1ap5SHxNJoWCSPG1Uh2QQWAsEisJEopo9MRxCpR9KYQuYRfWwW
...
[/code:1]
pour l'extraire il suffit de l'enregistrer
[code:1]
$b64 | ConvertFrom-Base64 -OutputPath c:\toto.gif
[/code:1]
ca tient dans la main ca tient dans la main...
on peut donc par exemple inclure une dll a enregistrer dans le fichier ps1. ca peut etre tres pratique (comme très dangereux d'ailleurs...)
merci
Il faut installer les \"PowerShell Community Extensions\", il y a directement la fonction pour convertir de/vers base64
[code:1]
$b64 = ConvertTo-Base64 \"C:\Documents and Settings\tonic8\My Documents\My Pictures\smileys\ange02.gif\"
[/code:1]
on obtient ca:
[code:1]
PS z:\> $b64
R0lGODlhEgAYANQUAAkJCaeFDe7KGLyPClJCCo9qB8fFw72zoHBdJ4qFeOfl5MyuEqioqF5GDZpt
BdnVzCIiIv7gIJuVhlxcXPX19dGeCnppPEIyEt+0EnJiOkJCQmhSErKysp96Cq6SDgAAACH/C05F
VFNDQVBFMi4wAwEAAAAh+QQJZAAfACwAAAAAEgAYAAAFyuBnTJoGAWgKlZPxSVPCGApFfZ+tGEwy
STAZzYbT8XwSEcmUUrFcuKh0Sq1ap5SHxNJoWCSPG1Uh2QQWAsEisJEopo9MRxCpR9KYQuYRfWwW
...
[/code:1]
pour l'extraire il suffit de l'enregistrer
[code:1]
$b64 | ConvertFrom-Base64 -OutputPath c:\toto.gif
[/code:1]
ca tient dans la main ca tient dans la main...
on peut donc par exemple inclure une dll a enregistrer dans le fichier ps1. ca peut etre tres pratique (comme très dangereux d'ailleurs...)
merci
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.076 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Stockage de donnée binaire dans un script (Résolu)