Vcpkg, Un Outil Pour Acquérir Et Compiler Plus Simplement Les Librairies Open Source C++ Sur Windows

Total Page:16

File Type:pdf, Size:1020Kb

Vcpkg, Un Outil Pour Acquérir Et Compiler Plus Simplement Les Librairies Open Source C++ Sur Windows 043_044_204 24/01/17 21:59 Page43 microsoft 43 # 204 Vcpkg, un outil pour acquérir et compiler plus simplement les librairies open source C++ sur Windows. Eric Mittelette Acquérir une librairie open source, la compiler sur Windows et l’intégrer dans son Microsoft Corp. projet C++ reste une opération délicate, voire une galère. Pour une librairie donnée, il faut trouver les sources, les installer localement, compiler la librairie et enfin la mettre à disposition du projet dans lequel vous souhaitez l’utiliser. a phase de build est de loin la plus subtile et complexe, elle nécessi- source de la librairie. Nous voulions que cette collection de « port files » te souvent un peu d’adaptation (patch) si la librairie n’est pas encore soit open source et que la communauté des développeurs C++ puisse y Ldisponible pour la version de compilateur que vous utilisez, cette contribuer en ajoutant les librairies qu’ils maintiennent ou utilisent. adaptation nécessite encore l’usage d’incantations (sous forme de scripts, L’architecture générale en découle assez naturellement : pas de magie noire…), que seuls les grands « faiseurs » maîtrisent réelle- • Créer une liste de « port file » dans un repo Github ; ment. Nous savons par sondage et les appels au support technique de • Créer un outil en ligne de commande qui exploite cette liste et capable Microsoft que les librairies tierces restent pour plus de 30% des cas le blo- de lancer le processus de compilation au regard des instructions de queur a la migration vers les dernières versions du compilateur C++. Nous chaque « port file » ; savons également que 80% des projets C++ utilisent 2 ou 3 librairies • Installer le résultat de la compilation dans un répertoire local « « LibFolder » ; tierces en moyenne, et que la vaste majorité d’entre elles sont aujourd’hui • Permettre une intégration simple avec Visual studio, CMake ou tout des librairies open source. Intéressant de noter que cette proportion s’est autre build system de ce « LibFolder ». inversée ces 10-15 dernières années ;, au départ c’étaient essentiellement Le « LibFolder » est distribuable par simple Xcopy, ou partageable sur un des librairies propriétaires qui étaient utilisées par les développeurs C++. réseau (pas de registry, gac…). Le « LibFolder » est indépendant de Vcpkg ; Aujourd’hui la seule solution proposée par Microsoft pour acquérir des li- on peut donc ajouter ce que l’on veut dedans, comme par exemple des li- brairies tierces C++, est NuGet, mais NuGet n’a pas été pensé pour le code brairies propriétaires ou personnelles. Le « LibFolder » peut être vu comme natif, mais pour le code managé. Bien sûr il est tout à fait possible d’utiliser un cache global pour les librairies C++. Un « LibFolder » est donc un en- NuGet, mais il est important de noter que le package a été produit pour semble de librairies stables et compatibles les unes avec les autres, il n’y une ligne de compilation donnée (si vous utilisez d’autres options pour aura donc qu’une seule version d’une librairie donnée dans un votre code, ça ne marchera pas correctement !) et comme vous n’avez pas « LibFolder ». Si l’on souhaite une seconde version (ou plus) d’une même accès au code source, vous ne pourrez pas utiliser cette librairie. Or nous librairie, il faudra créer un nouveau « LibFolder ». Vcpkg ne propose pas : savons grâce aux enquêtes et interviews réalisées que les développeurs • Un format d’archive. Le « LibFolder » n’est pas compressé ; C++ veulent avoir accès aux codes sources, soit pour debugger, soit tout • Un packaging des binaires. Même s’il est tout à fait possible de placer simplement pour vérifier la qualité du code qu’ils s’apprêtent à injecter dans le « LibFolder » ce que l’on veut, comme des librairies proprié- dans leur projet. Fort de ces constats, nous avons décidé de proposer une taires en binaire (exposant .h et .lib et dll). solution pour Windows. Le parti pris pour le design était de proposer une solution open source ou tout le monde peut participer, et de s’inspirer de Vcpkg en action ce qui marche sur les autres plateformes telle Linux ou Mac. Nous avons La première chose à faire, pour utiliser Vcpkg, est d’installer l’outil en clo- passé un bon moment à regarder Debian, app-get ou Homebrew, pour nant le repo GitHub : vérifier nos hypothèses, issues de nos dernières enquêtes sur le sujet : git clone https://github.com/microsoft/vcpkg.git • 80% des projets VC++ utilisent 2 à 3 librairies externes, donc plus de 80% sont des librairies en open source ; Ensuite il faut compiler Vcpkg lui-même en exécutant cette commande • Les Dev C++ veulent avoir accès au code, pour des raisons de revues depuis le répertoire ou a été cloné le repo : de qualité ou de débogage ; powershell -exec bypass scripts\bootstrap.ps1 • Maintenir un ensemble de librairies stables entre elles est un point cri- tique (« library hell ») ; Vcpkg.exe va alors être généré ainsi que le « LibFolder », celui-ci aura la • Proposer un ensemble de librairies sur les versions les plus récentes ; hiérarchie suivante : [1]. Les librairies installées sont dans le répertoire • Il est important de pouvoir disposer de plusieurs versions d’une même installed, soit en release, soit en debug. Pour une cible donnée (dans la lib sur un même poste (pas dans un même exécutable) ; 1 • Les développeurs doivent pouvoir modifier à loisir les options de compilation ; • Les librairies doivent être utilisable en statique ou dynamique (Link). Architecture globale Vcpkg a été conçue sur une approche « port tree ». Wikipedia (https://en.wikipedia.org/wiki/Ports_collection) définit cette approche comme suit : « un ensemble de makefile et patches …. comme méthode simple pour installer des logiciels ou créer des packages binaires ». Un « port file » décrit comment compiler une libraire, il ne contient pas le code programmez! - février 2017 043_044_204 24/01/17 21:59 Page44 44 microsoft # 204 figure ci-dessous x86-windows) vous trouverez le ré- Vcpkg integrate remove pertoire include contenant les headers(.h), le répertoire lib contenant les (.lib), et le répertoire bin Cette commande va supprimer uniquement l’intégration au niveau utili- 2 contenant les dll, idem pour le mode debug. [2] sateur, pour les intégrations au niveau projet il faudra désinstaller le pac- kage NuGet du projet. Il ne peut y avoir pour un projet donné deux inté- Installer et utiliser une librairie avec Vcpkg grations, donc si vous ajoutez un package NuGet, seul ce dernier comp- Rien de plus simple ! A quand remonte votre derrière expérience en la te et l’intégration niveau utilisateur est supprimée du projet courant. On matière ? Avez-vous déjà essayé d’installer Boost ou OpenCV ? Si c’est peut tout à fait utiliser Vcpkg et son LibFolder depuis CMake, il suffit alors le cas vous devez vous rappeler que ce n’est pas toujours trivial ! Avec d’ajouter le fichier toolchain (scripts\buildsystems\vcpkg.cmake) Vcpkg il suffit de faire appel à la commande install : dans votre fichier CMake : Vcpkg install boost -DCMAKE_TOOLCHAIN_FILE=D:\src\vcpkg\scripts\buildsystems\vcpkg.cmake Et voilà c’est fait ! Bon vous aurez le temps de boire un café, voir la cafetière selon Le fichier examples.md sur github [https://github.com/Microsoft/vcpkg/blob/mas- la puissance de votre machine, car il faut du temps pour compiler OpenCV ou ter/docs/EXAMPLES.md] explique plus avant la mise en œuvre. Boost ;-) Mais cette commande suffira ! Vcpkg travaille de manière récursive et La commande update, ne va pas modifier le contenu du LibFolder (ce installera en premier les librairies dont dépend la librairie que vous souhaitez ins- serait trop dangereux, aucune mise à jour est automatique par design). taller. En fait la première commande que vous allez utiliser sera : Cette commande va juste lister les librairies qui ont été mises à jour sur le repo GitHub. C’est au développeur de faire ou non la mise à jour. [3] Vcpkg search Celle-ci vous permettra de lister toute les librairies disponibles (à la date Ajouter une nouvelle librairie : création de rédaction de cet article elles sont au nombre d’environ 100). Le nom d’un nouveau port file listé est celui à utiliser pour installer la librairie, la commande liste égale- Pour ajouter une librairie au catalogue il faut fournir : ment le numéro de version et une description sommaire de quelques • Un fichier de contrôle : mots. Par défaut c’est la version x86 dynamique (dll) qui est installée, - Très simple il contient le nom, la version, une courte description et les pour préciser la plateforme cible on ajoutera un triplet : éventuelles dépendances de la librairie. • Un port file : Vcpkg instal zlib :x64-windows - Ecrit dans la syntaxe de CMake il permet toutefois de faire appel tous La liste des triplets disponibles est dans le répertoire triplets : x64- type de build system. Il faut : uwp.cmake ; x64-windows-static.cmake ; x64-windows.cmake ; x86- - Préciser ou télécharger les sources ; uwp.cmake ; x86-windows-static.cmake ; x86-windows.cmake. - Indiquer comment les décompresser et les préparer pour la compilation ; Note, il est possible d’installer plusieurs librairies en même temps : - Appliquer les patchs le cas échéant ; - Lancer le processus de build. Vcpkg install boost, openCV, SDL • Des fichier patchs : On pourra dans cette même commande préciser les architectures cibles. - Contiennent les instructions à appliquer pour préparer le projet à être Une fois installée, il faut rendre les librairies disponibles pour Visual compile avec VC2015. Studio 2015 ou VS2017 car seules ces versions sont supportées et utili- Un exemple de création de port file et de patch file sont disponibles sur GitHub. sées. Visual Studio 2015 et 2017 utilisent la même version de la CRuntime, n’avoir qu’une seule version de la CRuntime pour toute les Contribuez ! librairies est une garantie d’inter compatibilité.
Recommended publications
  • Thriving in a Crowded and Changing World: C++ 2006–2020
    Thriving in a Crowded and Changing World: C++ 2006–2020 BJARNE STROUSTRUP, Morgan Stanley and Columbia University, USA Shepherd: Yannis Smaragdakis, University of Athens, Greece By 2006, C++ had been in widespread industrial use for 20 years. It contained parts that had survived unchanged since introduced into C in the early 1970s as well as features that were novel in the early 2000s. From 2006 to 2020, the C++ developer community grew from about 3 million to about 4.5 million. It was a period where new programming models emerged, hardware architectures evolved, new application domains gained massive importance, and quite a few well-financed and professionally marketed languages fought for dominance. How did C++ ś an older language without serious commercial backing ś manage to thrive in the face of all that? This paper focuses on the major changes to the ISO C++ standard for the 2011, 2014, 2017, and 2020 revisions. The standard library is about 3/4 of the C++20 standard, but this paper’s primary focus is on language features and the programming techniques they support. The paper contains long lists of features documenting the growth of C++. Significant technical points are discussed and illustrated with short code fragments. In addition, it presents some failed proposals and the discussions that led to their failure. It offers a perspective on the bewildering flow of facts and features across the years. The emphasis is on the ideas, people, and processes that shaped the language. Themes include efforts to preserve the essence of C++ through evolutionary changes, to simplify itsuse,to improve support for generic programming, to better support compile-time programming, to extend support for concurrency and parallel programming, and to maintain stable support for decades’ old code.
    [Show full text]
  • Create Mobile Apps with HTML5, Javascript and Visual Studio
    Create mobile apps with HTML5, JavaScript and Visual Studio DevExtreme Mobile is a single page application (SPA) framework for your next Windows Phone, iOS and Android application, ready for online publication or packaged as a store-ready native app using Apache Cordova (PhoneGap). With DevExtreme, you can target today’s most popular mobile devices with a single codebase and create interactive solutions that will amaze. Get started today… ・ Leverage your existing Visual Studio expertise. ・ Build a real app, not just a web page. ・ Deliver a native UI and experience on all supported devices. ・ Use over 30 built-in touch optimized widgets. Learn more and download your free trial devexpress.com/mobile All trademarks or registered trademarks are property of their respective owners. Untitled-4 1 10/2/13 11:58 AM APPLICATIONS & DEVELOPMENT SPECIAL GOVERNMENT ISSUE INSIDE Choose a Cloud Network for Government-Compliant magazine Applications Geo-Visualization of SPECIAL GOVERNMENT ISSUE & DEVELOPMENT SPECIAL GOVERNMENT ISSUE APPLICATIONS Government Data Sources Harness Open Data with CKAN, OData and Windows Azure Engage Communities with Open311 THE DIGITAL GOVERNMENT ISSUE Inside the tools, technologies and APIs that are changing the way government interacts with citizens. PLUS SPECIAL GOVERNMENT ISSUE APPLICATIONS & DEVELOPMENT SPECIAL GOVERNMENT ISSUE & DEVELOPMENT SPECIAL GOVERNMENT ISSUE APPLICATIONS Enhance Services with Windows Phone 8 Wallet and NFC Leverage Web Assets as Data Sources for Apps APPLICATIONS & DEVELOPMENT SPECIAL GOVERNMENT ISSUE ISSUE GOVERNMENT SPECIAL DEVELOPMENT & APPLICATIONS Untitled-1 1 10/4/13 11:40 AM CONTENTS OCTOBER 2013/SPECIAL GOVERNMENT ISSUE OCTOBER 2013/SPECIAL GOVERNMENT ISSUE magazine FEATURES MOHAMMAD AL-SABT Editorial Director/[email protected] Geo-Visualization of Government KENT SHARKEY Site Manager Data Sources MICHAEL DESMOND Editor in Chief/[email protected] Malcolm Hyson ..........................................
    [Show full text]
  • Python for the C# Developer
    {SDD} 2014 Software Design & Development Python for the C# developer Michael Kennedy @mkennedy http://blog.michaelckennedy.net Objectives • Introduce the basics of the Python language • Review what is awesome about C# and .NET • Explore Python's version of each C# / .NET feature DEVELOPMENTOR Michael Kennedy | @mkennedy | blog.michaelckennedy.net What is Python? • High-level programming language • Interpreted (sometimes JIT compiled) • Object-oriented (especially Python 3) • Strongly-typed with dynamic semantics • Syntax emphasizes readability • Supports modules and packages • Batteries included (large standard library [1]) DEVELOPMENTOR Michael Kennedy | @mkennedy | blog.michaelckennedy.net The ‘shape’ of a Python program • Python defines code blocks (known as suites in Python) using whitespace and colons. Things to note: def somemethod(name): • No semicolons if name == "Michael": print("Hi old friend") • Code blocks start with ‘:’ else: • Whitespace really really matters print("Nice to meet you") • There are no braces print("My name is … ") • There are no parentheses • Tabs are not your friend def main(): somemethod() Code suites DEVELOPMENTOR Michael Kennedy | @mkennedy | blog.michaelckennedy.net Python language demo DEVELOPMENTOR Michael Kennedy | @mkennedy | blog.michaelckennedy.net What's awesome about C# and .NET? System.Object: Everything is an object. LINQ IEnumerable + foreach loops Visual Studio / IDEs Class properties ( int Age {get; set;} ) Side-by-side execution (isolation) Anonymous types Iterator methods / yield return
    [Show full text]
  • Imagine. Create. Deploy. Inspired? So Are We
    Imagine. Create. Deploy. Inspired? So Are We. Inspiration is all around us. From beautiful screens on the web to well-designed reports. New devices push the development envelope and ask that we consider new technologies. The latest release, DevExpress 12.2, delivers the tools you need to build the multi-channel solutions you can imagine: Windows 8-inspired applications with live tiles perfect for Microsoft Surface, multi-screen iOS and Android apps. It’s all possible. Let’s see what develops. Download your 30-day trial at www.DevExpress.com Copyright 1998-2013 Developer Express, Inc. All rights reserved. All trademarks are property of their respective owners. Untitled-9 1 1/8/13 2:10 PM THE MICROSOFT JOURNAL FOR DEVELOPERS FEBRUARY 2013 VOL 28 NO 2 magazine JavaScript API for Offi ce.........................20 Exploring the New JavaScript API for Offi ce COLUMNS Stephen Oliver and Eric Schmidt ........................................20 CUTTING EDGE Essential Facebook Async Causality Chain Tracking Programming: Andrew Stasyuk ...............................................................32 The JavaScript SDK Dino Esposito, page 6 Building a Simple Comet Application WINDOWS WITH C++ in the Microsoft .NET Framework Creating Desktop Apps Derrick Lau .....................................................................42 with Visual C++ 2012 Kenny Kerr, page 12 Detecting Abnormal Data Using TEST RUN k-Means Clustering Naive Bayes Classifi cation with C# ............................................................. James McCaffrey 54 James McCaffrey,
    [Show full text]
  • Teamcity 7.1 Documentation.Pdf
    1. TeamCity Documentation . 4 1.1 What's New in TeamCity 7.1 . 5 1.2 What's New in TeamCity 7.0 . 14 1.3 Getting Started . 26 1.4 Concepts . 30 1.4.1 Agent Home Directory . 31 1.4.2 Agent Requirements . 32 1.4.3 Agent Work Directory . 32 1.4.4 Authentication Scheme . 33 1.4.5 Build Agent . 33 1.4.6 Build Artifact . 34 1.4.7 Build Chain . 35 1.4.8 Build Checkout Directory . 36 1.4.9 Build Configuration . 37 1.4.10 Build Configuration Template . 38 1.4.11 Build Grid . 39 1.4.12 Build History . 40 1.4.13 Build Log . 40 1.4.14 Build Number . 40 1.4.15 Build Queue . 40 1.4.16 Build Runner . 41 1.4.17 Build State . 41 1.4.18 Build Tag . 42 1.4.19 Build Working Directory . 43 1.4.20 Change . 43 1.4.21 Change State . 43 1.4.22 Clean Checkout . 44 1.4.23 Clean-Up . 45 1.4.24 Code Coverage . 46 1.4.25 Code Duplicates . 47 1.4.26 Code Inspection . 47 1.4.27 Continuous Integration . 47 1.4.28 Dependent Build . 47 1.4.29 Difference Viewer . 49 1.4.30 Guest User . 50 1.4.31 History Build . 51 1.4.32 Notifier . 51 1.4.33 Personal Build . 52 1.4.34 Pinned Build . 52 1.4.35 Pre-Tested (Delayed) Commit . 52 1.4.36 Project . 53 1.4.37 Remote Run . ..
    [Show full text]
  • Q1 Where Do You Use C++? (Select All That Apply)
    2021 Annual C++ Developer Survey "Lite" Q1 Where do you use C++? (select all that apply) Answered: 1,870 Skipped: 3 At work At school In personal time, for ho... 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% ANSWER CHOICES RESPONSES At work 88.29% 1,651 At school 9.79% 183 In personal time, for hobby projects or to try new things 73.74% 1,379 Total Respondents: 1,870 1 / 35 2021 Annual C++ Developer Survey "Lite" Q2 How many years of programming experience do you have in C++ specifically? Answered: 1,869 Skipped: 4 1-2 years 3-5 years 6-10 years 10-20 years >20 years 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% ANSWER CHOICES RESPONSES 1-2 years 7.60% 142 3-5 years 20.60% 385 6-10 years 20.71% 387 10-20 years 30.02% 561 >20 years 21.08% 394 TOTAL 1,869 2 / 35 2021 Annual C++ Developer Survey "Lite" Q3 How many years of programming experience do you have overall (all languages)? Answered: 1,865 Skipped: 8 1-2 years 3-5 years 6-10 years 10-20 years >20 years 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% ANSWER CHOICES RESPONSES 1-2 years 1.02% 19 3-5 years 12.17% 227 6-10 years 22.68% 423 10-20 years 29.71% 554 >20 years 34.42% 642 TOTAL 1,865 3 / 35 2021 Annual C++ Developer Survey "Lite" Q4 What types of projects do you work on? (select all that apply) Answered: 1,861 Skipped: 12 Gaming (e.g., console and..
    [Show full text]
  • Microsoft / Vcpkg
    Microsoft / vcpkg master vcpkg / ports / Create new file Find file History Fetching latest commit… .. abseil [abseil][aws-sdk-cpp][breakpad][chakracore][cimg][date][exiv2][libzip… Apr 13, 2018 ace Update to ACE 6.4.7 (#3059) Mar 19, 2018 alac-decoder [alac-decoder] Fix x64 Mar 7, 2018 alac [ports] Mark several ports as unbuildable on UWP Nov 26, 2017 alembic [alembic] update to 1.7.7 Mar 25, 2018 allegro5 [many ports] Updates to latest Nov 30, 2017 anax [anax] Use vcpkg_from_github(). Add missing vcpkg_copy_pdbs() Sep 25, 2017 angle [angle] Add CMake package with modules. (#2223) Nov 20, 2017 antlr4 [ports] Mark several ports as unbuildable on UWP Nov 26, 2017 apr-util vcpkg_configure_cmake (and _meson) now embed debug symbols within sta… Sep 9, 2017 apr [ports] Mark several ports as unbuildable on UWP Nov 26, 2017 arb [arb] prefer ninja Nov 26, 2017 args [args] Fix hash Feb 24, 2018 armadillo add armadillo (#2954) Mar 8, 2018 arrow Update downstream libraries to use modularized boost Dec 19, 2017 asio [asio] Avoid boost dependency by always specifying ASIO_STANDALONE Apr 6, 2018 asmjit [asmjit] init Jan 29, 2018 assimp [assimp] Fixup: add missing patchfile Dec 21, 2017 atk [glib][atk] Disable static builds, fix generation to happen outside t… Mar 5, 2018 atkmm [vcpkg-build-msbuild] Add option to use vcpkg's integration. Fixes #891… Mar 21, 2018 atlmfc [atlmfc] Add dummy port to detect atl presence in VS Apr 23, 2017 aubio [aubio] Fix missing required dependencies Mar 27, 2018 aurora Added aurora as independant portfile Jun 21, 2017 avro-c
    [Show full text]
  • Didisoft Openssl Library for .NET / 1.4
    DidiSoft OpenSSL Library for .NET / 1.4 1 / 14 Table of contents Introduction .................................................................................................................................... 3 Installation folder ...................................................................................................................... 3 Library contents ....................................................................................................................... 3 Library DLL files ...................................................................................................................... 3 .NET Framework 4.5, 4.6 .................................................................................................. 3 .NET Framework 4.0 ......................................................................................................... 4 .NET Framework 2.0, 3.0, 3.5 .......................................................................................... 4 .NET Core ........................................................................................................................... 4 Referencing ............................................................................................................................. 4 Setup ............................................................................................................................................. 6 Deployment .............................................................................................................................
    [Show full text]
  • Visual Studio Manually Install Nuget Package
    Visual Studio Manually Install Nuget Package Woollen and ectomorphic Husein always revitalizing subglacially and exhumes his galvanizes. Persnickety Trent nibble his threadstransmissibility parasitically. sightsees audibly. Sometimes future Cory decreasing her insipidness apropos, but virile Alden bulk lazily or We check if you want the search for this topic describes a credential provider is not Give rank name the folder location. There a way is not need manual approval. Stay with protect young Padawan, we heard about money learn a lot. But mat you selected flexcel. Unless someone harm you cares a terrible awful and, nothing is rather to own better. Want a nuget website for that in use whatever you can manually add comment is only package manager in your folder source in a failure. It will show as entityframework. Net nuget package and visual studio by another one directory tree to manually if yes, nothing is specified, they are agreeing to? The rightmost value is called a patch version. Startup performance is substantially improved but is still slower than using NUnit directly. The suffer is built into Visual Studio on Windows. By default, console commands operate against taking specific package source free project were set in ride control at bank top label the window. The most popular extensions are displayed initially and you will notice the green check box means they are already installed. Parameterized tests and install your licensed account that out our visitors and install package will do i decided to json packages for that? Are head missing a using directive or an assembly reference? This nuget is nearly impossible for any visual studio.
    [Show full text]
  • Brno University of Technology Vysoké Učení Technické V Brně
    BRNO UNIVERSITY OF TECHNOLOGY VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FACULTY OF INFORMATION TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ DEPARTMENT OF INTELLIGENT SYSTEMS ÚSTAV INTELIGENTNÍCH SYSTÉMŮ AUTOMATED SECURITY COMPLIANCE SCANNING OF MS WINDOWS OPERATING SYSTEM USING OPENSCAP PROJECT AUTOMATIZOVANÉ OVĚŘOVÁNÍ KONFIGURACE OPERAČNÍHO SYSTÉMU MS WINDOWS POMOCÍ PROJEKTU OPENSCAP MASTER’S THESIS DIPLOMOVÁ PRÁCE AUTHOR Bc. JAN ČERNÝ AUTOR PRÁCE SUPERVISOR Ing. ALEŠ SMRČKA, Ph.D. VEDOUCÍ PRÁCE BRNO 2018 Abstract This work deals with security compliance of computer systems, namely operating systems, applications and system services. Concept of security policies, their evaluation and their enforcement is described. Security compliance automation and the SCAP standard are presented. OpenSCAP project, which is used as an SCAP scanner, is described together with its tools and its usage. An idea to add support of Microsoft Windows within Open- SCAP, which was previously unsupported, is presented. The core part of the thesis is to identify necessary changes of OpenSCAP and to design an extension of this project. All these modifications are implemented. The solution is demonstrated on security policies for Windows. The solution is evaluated and further improvements are discussed. Abstrakt Tato práce se zabývá problematikou bezpečné konfigurace výpočetních systémů, jako jsou operační systémy, aplikace a služby. Seznamuje čtenáře s konceptem bezpečnostních poli- tik a jejich ověřováním. Soustředí se na problematiku automatizace bezpečné konfigurace s důrazem na standard SCAP. Popisuje projekt OpenSCAP, který se používá jako SCAP scanner, jeho aplikace a jejich použití. Navrhuje rozšířit OpenSCAP i na operační sys- tém Microsoft Windows, který doposud nebyl podporován. Těžištěm práce je identifikace nutných změn projektu OpenSCAP a návrh jeho rozšíření.
    [Show full text]
  • NET Hacking & In-Memory Malware
    .NET Hacking & In-Memory Malware Shawn Edwards Shawn Edwards Cyber Adversarial Engineer The MITRE Corporation Hacker Maker Learner Take stuff apart. Change it. Put Motivated by an incessant Devoted to a continuous effort it back together. desire to create and craft. of learning and sharing knowledge. Red teamer. Adversary Numerous personal and emulator. professional projects. B.S. in Computer Science. Adversary Emulation @ MITRE • Red teaming, but specific threat actors • Use open-source knowledge of their TTPs to emulate their behavior and operations • Ensures techniques are accurate to real world • ATT&CK (Adversarial Tactics Techniques and Common Knowledge) • Public wiki of real-world adversary TTPs, software, and groups • CALDERA • Modular Automated Adversary Emulation framework Adversary Emulation @ MITRE • ATT&CK • Adversarial Tactics Techniques and Common Knowledge • Public wiki of real-world adversary TTPs, software, and groups • Lets blue team and red team speak in the same language • CALDERA • Modular Automated Adversary Emulation framework • Adversary Mode: • AI-driven “red team in a box” • Atomic Mode: • Define Adversaries, give them abilities, run operations. Customize everything at will. In-Memory Malware • Is not new • Process Injection has been around for a long time • Typically thought of as advanced tradecraft; not really • Surged in popularity recently • Made easier by open-source or commercial red team tools • For this talk, only discuss Windows malware • When relevant, will include the ATT&CK Technique ID In-Memory
    [Show full text]
  • Componentspace SAML for ASP.NET Core Installation Guide
    ComponentSpace SAML for ASP.NET Core Installation Guide Copyright © ComponentSpace Pty Ltd 2017-2021. All rights reserved. www.componentspace.com ComponentSpace SAML for ASP.NET Core Installation Guide Contents Introduction ............................................................................................................................................ 1 Installation .............................................................................................................................................. 1 NuGet Package Source ........................................................................................................................ 1 NuGet.config ................................................................................................................................... 1 NuGet Package Manager ................................................................................................................ 1 NuGet Package Installation ................................................................................................................. 3 Evaluation vs Licensed Version ............................................................................................................... 5 Upgrading to a Licensed Version ............................................................................................................ 6 Uninstallation .......................................................................................................................................... 7 i ComponentSpace SAML
    [Show full text]