Blog du Pôle .NET

Partager pour mieux développer...

Security Identifier, Binaire et Base 64

clock September 23, 2009 14:11 by author dox

Je me suis laissé entendre dire que la migration des données SharePoint n’était pas ce qu’il y a de plus facile. Ah bon ?

Petite mise en situation : Prenez un expert SharePoint (un vrai hein, comme Yoann par exemple !), une base de données qui contient des informations codées dans un champ binaire, un fichier XML qui contient d’autres données (codées en… vous verrez plus loin) et vos identifiants Windows (les fameux SID qui ressemblent à ça : S-1-5-21-xxx). Vous mélangez bien, et vous obtenez ça :

  • 01050000000000051500000038EDA9CF33F7AFDD94FC17C4F4010000
  • S-1-5-21-3484020024-3719296819-3289906324-500
  • AQUAAAAAAAUVAAAAOO2pzzP3r92U/BfE9AEAAA==

Vous l’aurez deviné le premier est le champ binaire stocké dans SQL Server. Le second, notre fameux SID. Et le troisième : le même codé en Base64 ! (Et là on applaudit Arnaud, parce que c’est lui qui a trouvé !)

Yoann a beau être un expert en SharePoint (et je vous jure que c’est vrai), les méthodes de conversion d’une forme vers une autre ne sont pas si évidentes que ça à trouver. D’ailleurs, en fouillant bien, on n’en a pas trouvé beaucoup.

Alors sous vos yeux ébahis, voici une petite classe utilitaire avec les méthodes qui vont bien pour convertir les données d’une forme vers une autre. Si un jour vous avez une migration de données SharePoint, ça pourra toujours être utile.

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Principal;

public class SharePointUtils {

    private static byte[] BinaryStringToByteArray(string binaryString) {
        return Enumerable.Range(0, binaryString.Length).Where(x => x % 2 == 0).
            Select(x => Convert.ToByte(binaryString.Substring(x, 2), 16)).ToArray();
    }

    public static string BinaryStringToSidString(string binaryString) {
        return new SecurityIdentifier(BinaryStringToByteArray(binaryString), 0).ToString();
    }

    public static string SidStringToBinaryString(string sId) {
        StringBuilder sb = new StringBuilder();
        SecurityIdentifier si = new SecurityIdentifier(sId);
        byte[] array = new byte[si.BinaryLength];
        si.GetBinaryForm(array, 0);
        array.ToList<byte>().ForEach(x => sb.AppendFormat("{0:X2}", x));
        return sb.ToString();
    }

    public static string BinaryStringToBase64String(string binaryString) {
        byte[] array = BinaryStringToByteArray(binaryString);
        return Convert.ToBase64String(array);
    }

    public static string Base64StringToBinaryString(string base64String) {
        byte[] array = Convert.FromBase64String(base64String);
        return SidStringToBinaryString(new SecurityIdentifier(array, 0).ToString());
    }
}

Et un exemple d’utilisation :

    string mySid = 
        "S-1-5-21-3484020024-3719296819-3289906324-500";
    string myBinaryString = 
        "01050000000000051500000038EDA9CF33F7AFDD94FC17C4F4010000";
    string myBase64String = 
        "AQUAAAAAAAUVAAAAOO2pzzP3r92U/BfE9AEAAA==";

    string binaryString = SharePointUtils.SidStringToBinaryString(mySid);
    string sidString = SharePointUtils.BinaryStringToSidString(myBinaryString);
    string b64 = SharePointUtils.BinaryStringToBase64String(myBinaryString);
    binaryString = SharePointUtils.Base64StringToBinaryString(myBase64String);
}

Le coup du Linq dans les méthodes, c’est sur une idée d’Arnaud (perso, je l’avais joué à la McGyver, avec une boucle et un compteur…).

En espérant que ça puisse servir à quelqu’un d’autre.

Dom, bien aidé sur le coup d’Arnaud et Yo.

Currently rated 5.0 by 2 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Installer Virtual Server sous Windows Seven

clock September 21, 2009 11:48 by author adetemmerman

Aux dires de Microsoft, Virtual Server ne peut pas être installé sous Windows Seven… Effectivement, si on lance le setup, on a un beau message d’erreur et on ne peut pas aller plus loin. 

Heureusement, il existe un moyen de contournement, absolument pas supporté (bien entendu).

1.       Tout d’abord, il faut lancer « gpedit.msc », et activer les policies suivantes :

·         Computer Configuration\Administrative Templates\Windows Components\Application Compatibility\Turn off Application Telemetry

·         Computer Configuration\Administrative Templates\Windows Components\Application Compatibility\Turn off Application Compatibility Engine

·         Computer Configuration\Administrative Templates\Windows Components\Application Compatibility\Turn off Program Compatibility Assistant

·         Computer Configuration\Administrative Templates\Windows Components\Application Compatibility\Turn off Program Inventory

·         Computer Configuration\Administrative Templates\Windows Components\Application Compatibility\Turn off SwitchBack Compatibility Engine

·         Computer Configuration\Administrative Templates\Windows Components\Application Compatibility\Turn off Problem Steps Recorder

2.       Ensuite, il faut désactiver les policies suivantes :

·         Computer Configuration\Administrative Templates\System\Troubleshooting and Diagnostics\Application Compatibility Diagnostics\Notify Blocked drivers

·         Computer Configuration\Administrative Templates\System\Troubleshooting and Diagnostics\Application Compatibility Diagnostics\Detect application failures caused by deprecated COM obje...

·         Computer Configuration\Administrative Templates\System\Troubleshooting and Diagnostics\Application Compatibility Diagnostics\Detect application failures caused by deprecated Windows ...

·         Computer Configuration\Administrative Templates\System\Troubleshooting and Diagnostics\Application Compatibility Diagnostics\Detect application install failures

·         Computer Configuration\Administrative Templates\System\Troubleshooting and Diagnostics\Application Compatibility Diagnostics\Detect application installers that need to be run as administr...

·         Computer Configuration\Administrative Templates\System\Troubleshooting and Diagnostics\Application Compatibility Diagnostics\Detect appliations unable to launch installers under UAC

3.       Rebootez ensuite la machine, pour être sûr que les modifications de stratégies soient bien appliquées.

4.       Puis installez Virtual Server 2005 SP1 à partir du package MSI d’origine.

5.       Ensuite, renommez le fichier « Vssrvc.Exe » en « Vssrvc_Win7.Exe », dans le dossier C:\Program Files\Microsoft Virtual Server\

6.       Lancez ensuite Regedit.exe, et renommez toutes les clés de registre qui contiennent « Vssrvc.Exe » en « Vssrvc_Win7.Exe » (comptez environ 5 ou 6 entrées).

7.       Ensuite, relancez « gpedit.msc », et annulez toutes les modifications effectuées dans les étapes 1 et 2 de ce tutoriel.

8.       Rebootez, c’est terminé, Virtual Server devrait être opérationnel…

Merci à Thomas Lee pour le tuto original :

http://tfl09.blogspot.com/2009/08/windows-7-and-virtual-server.html

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Calendrier

<<  July 2010  >>
MoTuWeThFrSaSu
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
Afficher en pleine page

Visiteurs