NRW Conf 09

Auch in diesem Jahr veranstaltet der Just Community e.V. wieder das größte Developer und IT-Pro Community Event. Unter dem Motto „Check-In zum Wissensvorsprung“ holen wir am 28.08.2009 zahlreiche nationale und internationale Speaker nach Wuppertal. Neben den Vorträgen haben Sie natürlich auch dieses Jahr wieder viel Zeit für das Networking mit anderen ITlern aus Nah und Fern. Alle Informationen, wie die Agenda und eine Übersicht über die Speaker gibt es unter http://www.nrwconf.de/. Wir freuen uns, Ihnen auch dieses Jahr sowohl bekannte Gesichter, als auch neue Speaker vorstellen zu dürfen. Die Veranstaltung wurde in diesem Jahr möglich durch unsere Sponsoren: Hewlett Packard, devcoach, Microsoft Deutschland, Brockhaus AG, Itemis AG, sepago GmbH, MT AG, sowie weiteren Unternehmen. Eine weitere Neuerung in diesem Jahr ist der Workshop Day, der am Vortag der eigentlichen Konferenz – sprich am 27.08.2009 – in den Räumlichkeiten unseres Sponsoren Ontaris GmbH stattfindet. Der Developer-Workshop befasst sich mit der Microsoft Web Platform und behandelt die Themen Rich Internet Applications mit Silverlight 3.0 und Web 2.0 Applikationen mit ASP.NET AJAX und JQuery. Die Workshops haben eine begrenzte Teilnehmerzahl (je acht) um den Lernerfolg zu garantieren. Also schnell einchecken…

Project Springboard

Am 5. Juni war ich als Sprecher beim “Project Springboard” zu Gast. Dennis Zielke und das Student Partner Team haben ganze Arbeit geleistet und ein Spitzen Event auf die Beine gestellt – nochmal nochmal nochmal! Mein Vortrag “IIS, PHP & WCF – Web Services InterOp” hat wirklich Laune gemacht und ist laut Feedback bester Vortrag der Konferenz – DANKE, IHR WARD EINE SUPER AUDIENCE!!!   Hier nun wie versprochen das Slide und der Code (PHP gehostet über FastCGI im IIS 7.0 ruft über SSL und Basic Athentication einen WCF Service mit einer Complex-SOAP-Message auf…): springbreak_IIS_PHP_und_WCF.zip

MSDN Germany - Security Editorial

Michael hat das Februar Editorial für das Security Portal von MSDN Germany geschrieben und wirft dabei interessante Vorschläge in den Raum: Wie wäre es, wenn bei den allseits bekannten Programmtests der Fachzeitschriften ein Non-Admin-Test hinzu käme? Wenn ein Programm auch danach beurteilt würde, ob es mit einem ganz normalen Benutzeraccount einwandfrei funktioniert? Meiner Meinung nach: Recht hat er. http://www.microsoft.com/germany/msdn/security/februareditorial.mspx

Encrypting Files using DPAPI

In one of my current projects (yes, there are more at the moment and yes that is the reason why it's a bit quiet around here) i neede to write an encrypted file to the hard disc using DPAPI (Data Protection API). After I unsuccessfully searched the web and the msdn (the sample reads all bytes to the buffer at once - not so nice), I wrote the following sample app: using System; using System.IO; using System.Security.Cryptography;   public class DataProtectionSample {     public static void Main()     {         using(MemoryStream ms = new MemoryStream())         {             StreamWriter swriter = new StreamWriter(ms);             swriter.WriteLine("Text to encrypt to file.");             swriter.Flush();               Console.WriteLine("Protecting data ...");             DataProtection.Protect("D:\\_temp\\DPAPI.dat", ms, false);         }         Console.WriteLine("Unprotecting data ...");         using(MemoryStream ms2 =             (MemoryStream)DataProtection.Unprotect("D:\\_temp\\DPAPI.dat", false))        {             StreamReader sreader = new StreamReader(ms2);             Console.WriteLine("");             Console.WriteLine("Decrypted string: " + sreader.ReadToEnd());         }         Console.ReadLine();     } }   public class DataProtection {     private static byte[] _additionalEntropy = { 9, 8, 7, 6, 5 };     private static int _bufferLength = 1024;       public static void Protect(string filename, Stream stream,         bool machineLevel)     {         if (File.Exists(filename))         {             File.Delete(filename);         }         using (FileStream fs = new FileStream(filename, FileMode.CreateNew))         {             byte[] buffer = new byte[_bufferLength];             long byteCount;             stream.Position = 0;             while ((byteCount =                stream.Read(buffer, 0, buffer.Length)) > 0)             {                 buffer = ProtectedData.Protect(buffer, _additionalEntropy,                     ((machineLevel) ? DataProtectionScope.LocalMachine :                     DataProtectionScope.CurrentUser));                 fs.Write(buffer, 0, buffer.Length);                 fs.Flush();             }         }     }       public static Stream Unprotect(string filename, bool machineLevel)     {         MemoryStream ms = new MemoryStream();                 using (FileStream fs = new FileStream(filename, FileMode.Open))         {             byte[] buffer = new byte[_bufferLength + 146];             long byteCount;               while ((byteCount =                fs.Read(buffer, 0, buffer.Length)) > 0)             {                 buffer = ProtectedData.Unprotect(buffer, _additionalEntropy,                     ((machineLevel) ? DataProtectionScope.LocalMachine :                     DataProtectionScope.CurrentUser));                 ms.Write(buffer, 0, buffer.Length);                 ms.Flush();             }         }         ms.Position = 0;         return ms;     } }      

Friday Night Andreas Hoffmann 2nd Lead Of The VfLNiederRhein User Group Picked Me Up Ad We Drove The Long Way Down To The

Friday night Andreas Hoffmann (2nd lead of the VfL-NiederRhein user group) picked me up ad we drove the long way down to the south.   Our destination for Saturday morning was the “Chaostage” event of the .NET user group Deggendorf  (http://dotnet-deggendorf.sefnet.de/). I had a session “Introducing the concepts and architecture of ASP.NET“ in the morning and a second one “Hello WebServices – Message-Oriented Programming for distributed systems” in the evening. We checked in at our hotel in Garching (I won’t tell the name but I’ll tell you a bit about the worst service). Because the waitress served me frozen potatoes with my steak I stood up and walked over to the bar. Just in this moment a voice behind me asked “Is this a codezone keychain? Are you gonna be at Microsoft on Monday?” It was Nicki Wruck (http://spaces.msn.com/members/icebloginfo/PersonalSpace.aspx) the organizer of the ICE 2005 Community together with Frank Solinske (http://spaces.msn.com/members/solinske/PersonalSpace.aspx) IT-Pro Security Guru. Only one nano-second later we drank the first beer together. The geek meet was so exciting that I was just about to forget the bad service of our hotel J Sunday we fetched Stephan Oetzel (http://stephanon.net/) in Poing. We picked up Michael Willers (http://www.staff.newtelligence.net/michaelw/) Developer Security Guru from the Airport to merge the Security guys in the “Hofbräukeller”. Uwe Baumann (http://blogs.msdn.com/uweinside/) discussed about technical stuff with Andreas and me meanwhile. Later Nicki joined us together with Nico Lüdemann (https://www.openbc.com/hp/Nico_Luedemann/) and Carola Helfert (https://www.openbc.com/hp/Carola_Helfert/). Monday - Launch Day – started with the Community GetTogether. Stephan and Andreas and I presented the results of the .NET Summit NRW (our community event). As always the time to do some “networking” was toooooooo short - even if we had at least the day before to talk to a few guys. The Launch Party was great. Steve Balmer’s Launch talk was transmitted per satellite into the Lobby of Microsoft in Germany – Great. The only problem again: So many people and such a small amount of time :-) 

Don't mess with sharepoint...

Carefully said I do not like that sharepoint "hijacks" the Internet Information Server. When you create a virtual directory it is just not accessable because SharePoint took over IIS. Funny fact: This is the second post how to fix issues with IIS and "extension" that cause issues :-) So i decided to hack a small utility serving my needs: ExcludeFromSharepoint.zip (3.46 KB) Enables to exclude applications from sharepoint services through the directory context menu. Install using the "-install" switch; Uninstall using "-uninstall" switch. Because I'm running my machine under a LUA (Limited User Account) i wrote the tool in a way that you can install and uninstall it without administative rights - the contextmenu will be installed per user! if(args[0]=="-install") {     RegistryKey _rkey = Registry.CurrentUser;     _rkey = _rkey.OpenSubKey("SOFTWARE\\Classes",true);     _rkey = _rkey.CreateSubKey("Folder").CreateSubKey("shell");     _rkey = _rkey.CreateSubKey("Exclude from Sharepoint");     _rkey = _rkey.CreateSubKey("command");     _rkey.SetValue(null, App.Application.ExecutablePath + " \"%1\""); } else if(args[0]=="-uninstall") {     RegistryKey _rkey = Registry.CurrentUser;     _rkey = _rkey.OpenSubKey("SOFTWARE\\Classes\\Folder\\shell",true);     _rkey.DeleteSubKeyTree("Exclude from Sharepoint"); } else { ... }   The Implementation works with the webserver extensions version 4.0 or higher       RegistryKey _rkey = Registry.LocalMachine;     _rkey = _rkey.OpenSubKey("SOFTWARE\\Microsoft\\Shared Tools\\" +         "Web Server Extensions",true);         foreach(string _subKeyName in _rkey.GetSubKeyNames())     {         try         {             int.Parse(_subKeyName.Replace(".",""));             RegistryKey _fpKey = _rkey.OpenSubKey(_subKeyName,true);             _fpDir = (string)_fpKey.GetValue("Location");         }         catch(Exception _ex)         {             string _err = _ex.ToString();             break;         }     }   and uses the stsadm.exe from the shared tools of the server extensions.     System.Diagnostics.Process _p = new System.Diagnostics.Process();     _p.StartInfo.FileName = Path.Combine(_fpDir, "BIN\\stsadm.exe");     _p.StartInfo.Arguments = "-o addpath -url http://localhost/" +         _strProjectName + " -type exclusion";     ...     _p.Start();