Posted in: Vývoj počítačů, Windows server

Upgrade MS SQL serveru

Možné scénáře upgrade MS SQL serveru ve své přednášce popisuje Marek Chmel, přednáška je k dispozici na: SQL Server Bootcamp 2018: Upgrade SQL Serveru | Záznamy | Windows User Group – Czech Republic

Před Upgrade

  • Záloha všech databází
  • záloha loginů pomocí sp_help_revlogin
  • Záloha nastavení serveru

Po upgrade

V případě inplace upgrade je potřeba zkontrolovat a případně opravit:

  • Nastavení síťové komunikace, ztratilo se mi nastavení z obrázku
    Nastavení portu 1433 na IPALL
  • Zkontrolovat nastavení šifrování a připojení a nastavit dle možností aplikace
  • Zkontrolovat loginy

sp_help_revlogin

Volání:

USE master
GO
EXEC sp_help_revlogin

Založení, pokud neexistuje

USE master
GO
IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
  DROP PROCEDURE sp_hexadecimal
GO
CREATE PROCEDURE sp_hexadecimal
    @binvalue varbinary(256),
    @hexvalue varchar (514) OUTPUT
AS
DECLARE @charvalue varchar (514)
DECLARE @i int
DECLARE @length int
DECLARE @hexstring char(16)
SELECT @charvalue = '0x'
SELECT @i = 1
SELECT @length = DATALENGTH (@binvalue)
SELECT @hexstring = '0123456789ABCDEF'
WHILE (@i <= @length)
BEGIN
  DECLARE @tempint int
  DECLARE @firstint int
  DECLARE @secondint int
  SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
  SELECT @firstint = FLOOR(@tempint/16)
  SELECT @secondint = @tempint - (@firstint*16)
  SELECT @charvalue = @charvalue +
    SUBSTRING(@hexstring, @firstint+1, 1) +
    SUBSTRING(@hexstring, @secondint+1, 1)
  SELECT @i = @i + 1
END

SELECT @hexvalue = @charvalue
GO
 
IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
  DROP PROCEDURE sp_help_revlogin
GO
CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
DECLARE @name sysname
DECLARE @type varchar (1)
DECLARE @hasaccess int
DECLARE @denylogin int
DECLARE @is_disabled int
DECLARE @PWD_varbinary  varbinary (256)
DECLARE @PWD_string  varchar (514)
DECLARE @SID_varbinary varbinary (85)
DECLARE @SID_string varchar (514)
DECLARE @tmpstr  varchar (1024)
DECLARE @is_policy_checked varchar (3)
DECLARE @is_expiration_checked varchar (3)

DECLARE @defaultdb sysname
 
IF (@login_name IS NULL)
  DECLARE login_curs CURSOR FOR

      SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM 
sys.server_principals p LEFT JOIN sys.syslogins l
      ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <> 'sa'
ELSE
  DECLARE login_curs CURSOR FOR


      SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM 
sys.server_principals p LEFT JOIN sys.syslogins l
      ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_name
OPEN login_curs

FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
IF (@@fetch_status = -1)
BEGIN
  PRINT 'No login(s) found.'
  CLOSE login_curs
  DEALLOCATE login_curs
  RETURN -1
END
SET @tmpstr = '/* sp_help_revlogin script '
PRINT @tmpstr
SET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
PRINT @tmpstr
PRINT ''
WHILE (@@fetch_status <> -1)
BEGIN
  IF (@@fetch_status <> -2)
  BEGIN
    PRINT ''
    SET @tmpstr = '-- Login: ' + @name
    PRINT @tmpstr
    IF (@type IN ( 'G', 'U'))
    BEGIN -- NT authenticated account/group

      SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ']'
    END
    ELSE BEGIN -- SQL Server authentication
        -- obtain password and sid
            SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256) )
        EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT
        EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
 
        -- obtain password policy state
        SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
        SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
 
            SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ']'

        IF ( @is_policy_checked IS NOT NULL )
        BEGIN
          SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked
        END
        IF ( @is_expiration_checked IS NOT NULL )
        BEGIN
          SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checked
        END
    END
    IF (@denylogin = 1)
    BEGIN -- login is denied access
      SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name )
    END
    ELSE IF (@hasaccess = 0)
    BEGIN -- login exists but does not have access
      SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name )
    END
    IF (@is_disabled = 1)
    BEGIN -- login is disabled
      SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE'
    END
    PRINT @tmpstr
  END

  FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
   END
CLOSE login_curs
DEALLOCATE login_curs
RETURN 0
GO

Záloha konfigurace serveru

Stejně jako u sp_help_revlogin stačí pro vytvoření zálohy uložit výstup a na novém serveru výstup spustit.

SELECT 'EXEC sp_configure ''' + name + ''', ' + CAST(value AS VARCHAR(100))
FROM sys.configurations
ORDER BY name
Posted in: Windows 10, Windows 11, Windows server

ASR Pravidla Microsoft Defender

Dnes bych se rád podělil o malý kousek PowerShellu, který pomůže zabezpečit všechny uživatele MS Defender. Pro jeho pohodlné nastavení je potřeba Intune, je to možné také pomocí GPO nebo Local Policy, ale problém je v tom, že jednotlivá ASR pravidla se bez Intune nastavují pomocí GUID hodnot, které se musí do politky vložit z dokumentace.

Níže přikládám jedno z možných řešení, ke kterému mě inspiroval Mgr. Michael Grafnetter MVP, MCT, MCITP svou přednáškou Brána Firewall na DC, kdy můj kód se ani zdaleka neblíží Michaelovým kvalitám, ale i tak může být přínosný. Parametr doporučeno aktivuje ta nastavení, která si myslím, že jsou vhodná pro jednotlivce, malý podnik, školu, nebo středně velký podnik.

param(
    [switch]$BlockObfuscate,
    [switch]$BlockChiledProcessAdobePDF,
    [switch]$BlockChiledProcessOffice,
    [switch]$BlockExportLSASS,
    [switch]$BlockExecutableFromEmail,
    [switch]$BlockUntrustedExecutable,
    [switch]$BlockObfuscatedScripts,
    [switch]$BlockExecutableFomOffice,
    [switch]$BlockWMIpersitenc,
    [switch]$BlockCreaProcessWMIandPSexec,
    [switch]$BlockUntrustedExecutebleFromUSB,
    [switch]$BlockWebShell,
    [switch]$TurnOnAdvancedRansomwareProtection,
    [switch]$BlockExploitedDriveres,
    [switch]$BlockJSorVBSFromDownloaded,
    [switch]$BlockWMIObfuscateEvent,
    [switch]$BlockRebootInSafeMode,
    [switch]$BlockInpersonatedSystemTools,
    [switch]$BlockCallWin32FromMacros,
    [Switch]$Doporuceno,
    [switch]$ResetDeault
)
if($BlockObfuscate -or $Doporuceno){
    #Blokace obfuskovaného kódu 
    Add-MpPreference -AttackSurfaceReductionRules_Ids 56a863a9-875e-4185-98a7-b882c64b5ce5 -AttackSurfaceReductionRules_Actions Enabled 
}
if($ResetDeault){
    Add-MpPreference -AttackSurfaceReductionRules_Ids 56a863a9-875e-4185-98a7-b882c64b5ce5 -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids 7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids d4f940ab-401b-4efc-aadc-ad5f3c50688a -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids d9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2 -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids be9ba2d9-53ea-4cdc-84e5-9b1eeee46550 -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids 01443614-cd74-433a-b99e-2ecdc07bfc25 -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids 5beb7efe-fd9a-4556-801d-275e5ffc04cc -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids d3e037e1-3eb8-44c8-a917-57927947596d -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids 3b576869-a4ec-4529-8536-b80a7769e899 -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids 75668c1f-73b5-4cf0-bb93-3ecf5cb7cc84 -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids 26190899-1602-49e8-8b27-eb1d0a1ce869 -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids e6db77e5-3df2-4cf1-b95a-636979351e5b -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids d1e49aac-8f56-4280-b9ba-993a6d77406c -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids b2b3f03d-6a65-4f7b-a9c7-1c7ef74a9ba4 -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids a8f5898e-1dc8-49a9-9878-85004b8a61e6 -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids 92e97fa1-2edf-4476-bdd6-9dd0b4dddc7b -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids c1db55ab-c21a-4637-bb3f-a12568109d35 -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids 56a863a9-875e-4185-98a7-b882c64b5ce5 -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids d3e037e1-3eb8-44c8-a917-57927947596d -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids e6db77e5-3df2-4cf1-b95a-636979351e5b -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids 33ddedf1-c6e0-47cb-833e-de6133960387 -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids c0033c00-d16d-4114-a5a0-dc9b3a7d2ceb -AttackSurfaceReductionRules_Actions NotConfigured
    Add-MpPreference -AttackSurfaceReductionRules_Ids 92e97fa1-2edf-4476-bdd6-9dd0b4dddc7b -AttackSurfaceReductionRules_Actions NotConfigured
}
if($BlockChiledProcessAdobePDF -or $Doporuceno){
    #Blokace vytváření podřízených procesů pro Adobe PDF reader
    Add-MpPreference -AttackSurfaceReductionRules_Ids 7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockChiledProcessOffice -or $Doporuceno){
    #Blokace vytváření podřízených procesů z Office aplikací
    Add-MpPreference -AttackSurfaceReductionRules_Ids d4f940ab-401b-4efc-aadc-ad5f3c50688a -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockExportLSASS -or $Doporuceno){
    #Blokace vytvoření otisku paměti procesu LSASS
    Add-MpPreference -AttackSurfaceReductionRules_Ids d9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2 -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockExecutableFromEmail -or $Doporuceno){
    #Blokace spustitelného obsahu z emailu
    Add-MpPreference -AttackSurfaceReductionRules_Ids be9ba2d9-53ea-4cdc-84e5-9b1eeee46550 -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockUntrustedExecutable -or $Doporuceno){
    #Blokování spouštění spustitelných souborů, pokud nesplňují kritérium prevalence, stáří nebo důvěryhodného seznamu
    Add-MpPreference -AttackSurfaceReductionRules_Ids 01443614-cd74-433a-b99e-2ecdc07bfc25 -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockObfuscatedScripts -or $Doporuceno){
    #Blokace obfuskovaných skriptů
    Add-MpPreference -AttackSurfaceReductionRules_Ids 5beb7efe-fd9a-4556-801d-275e5ffc04cc -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockJSorVBSFromDownloaded -or $Doporuceno){
    #Blokování stahování spustitelného obsahu pomocí Javascript a VBscript 
    Add-MpPreference -AttackSurfaceReductionRules_Ids d3e037e1-3eb8-44c8-a917-57927947596d -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockExecutableFomOffice -or $Doporuceno){
    #Blokace vytváření spustitelného obsahu pomocí Office aplikací
    Add-MpPreference -AttackSurfaceReductionRules_Ids 3b576869-a4ec-4529-8536-b80a7769e899 -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockExecutableFomOffice -or $Doporuceno){
    #Blokace vkládání kódu do procesů z Office aplikací
    Add-MpPreference -AttackSurfaceReductionRules_Ids 75668c1f-73b5-4cf0-bb93-3ecf5cb7cc84 -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockChiledProcessOffice -or $Doporuceno){
    #Blokování komunikace aplikace Office při vytváření podřízených procesů
    Add-MpPreference -AttackSurfaceReductionRules_Ids 26190899-1602-49e8-8b27-eb1d0a1ce869 -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockWMIpersitenc -or $Doporuceno){
    #Blokování persistence pomocí WMI
    Add-MpPreference -AttackSurfaceReductionRules_Ids e6db77e5-3df2-4cf1-b95a-636979351e5b -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockCreaProcessWMIandPSexec -or $Doporuceno){
    #Blokování vytváření procesů z příkazů PSExec a WMI
    Add-MpPreference -AttackSurfaceReductionRules_Ids d1e49aac-8f56-4280-b9ba-993a6d77406c -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockUntrustedExecutebleFromUSB -or $Doporuceno){
    #Blokování nedůvěryhodného a nepodepsaného spustitelného obsahu na USB médiích
    Add-MpPreference -AttackSurfaceReductionRules_Ids b2b3f03d-6a65-4f7b-a9c7-1c7ef74a9ba4 -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockWebShell -or $Doporuceno){
    #Blokování vytvoření proscesu webshell
    Add-MpPreference -AttackSurfaceReductionRules_Ids a8f5898e-1dc8-49a9-9878-85004b8a61e6 -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockExecutableFomOffice -or $Doporuceno){
    #Blokování volání aplikací z Office makra
    Add-MpPreference -AttackSurfaceReductionRules_Ids 92e97fa1-2edf-4476-bdd6-9dd0b4dddc7b -AttackSurfaceReductionRules_Actions Enabled
}
if($TurnOnAdvancedRansomwareProtection -or $Doporuceno){
    #Pokročilá ochrana před Ramsomware
    Add-MpPreference -AttackSurfaceReductionRules_Ids c1db55ab-c21a-4637-bb3f-a12568109d35 -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockExploitedDriveres -or $Doporuceno){
    #Block abuse of exploited vulnerable signed drivers
    Add-MpPreference -AttackSurfaceReductionRules_Ids 56a863a9-875e-4185-98a7-b882c64b5ce5 -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockJSorVBSFromDownloaded -or $Doporuceno){
    #Block JavaScript or VBScript from launching downloaded executable content
    Add-MpPreference -AttackSurfaceReductionRules_Ids d3e037e1-3eb8-44c8-a917-57927947596d -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockWMIObfuscateEvent -or $BlockWMIpersitenc -or $Doporuceno){
    #Block persistence through WMI event subscription
    Add-MpPreference -AttackSurfaceReductionRules_Ids e6db77e5-3df2-4cf1-b95a-636979351e5b -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockRebootInSafeMode){
    #Block rebooting machine in Safe Mode
    Add-MpPreference -AttackSurfaceReductionRules_Ids 33ddedf1-c6e0-47cb-833e-de6133960387 -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockInpersonatedSystemTools -or $Doporuceno){
    #Block use of copied or impersonated system tools
    Add-MpPreference -AttackSurfaceReductionRules_Ids c0033c00-d16d-4114-a5a0-dc9b3a7d2ceb -AttackSurfaceReductionRules_Actions Enabled
}
if($BlockCallWin32FromMacros -or $Doporuceno){
    #Block Win32 API calls from Office macros
    Add-MpPreference -AttackSurfaceReductionRules_Ids 92e97fa1-2edf-4476-bdd6-9dd0b4dddc7b -AttackSurfaceReductionRules_Actions Enabled
} 
Posted in: Windows 10, Windows 11, Windows 8 a 8.1, Windows server, Základy PowerShellu

Jak stará je vaše instalace Windows a jak dlouho systém běží?

Nedávno jsem četl na Živě.cz článek: Jak stará je vaše instalace Windows a jak dlouho systém běží? Zjistíte to jednoduchým příkazem, který se zaobíral dobou běhu OS a datumem posledního upgrade OS. Ten běh OS tam napsali pěkně PowerShellově:

(gcim Win32_OperatingSystem).LastBootUpTime #datum a čas spuštění
#náže době běhu
(Get-Date) - (gcim Win32_OperatingSystem).LastBootUpTime | select Days, Hours, Minutes, Seconds

Ale co v tom článku měli již nepěkně, tak je datum a čas instalace, resp. posledního upgrade. Oni to tam parsovali textově z příkazu systeminfo, ale to je zbytečné a takováto data se špatně dále zpracovávají. Lepší cestou je využít WMI třídu Win32_OperatingSystem a vytáhnout to standardně PowerShellem:

(gcim Win32_OperatingSystem).InstallDate

což krásně vrátí objekt typu System.DateTime, takže je možné nyní si nechat spočítat stáří OS:

(get-date) - (gcim Win32_OperatingSystem).InstallDate | select days, hours, minutes
Posted in: Vývoj počítačů, Windows 10, Windows 11, Windows 8 a 8.1, Windows server

Informace o procesoru

Každý asi zná, soudě dle reakce mých studentů, možnost zjisti ze správce úloh model procesoru, který je v počítači instalovaný. Trošku jsem si lámal hlavu nad tím, jak to vytáhnout z více strojů a hlavně, jak zjisti více informací, které se často o stávajícím procesoru hledají. Postupně jsem dospěl k následujícímu příkazu v PowerShellu, který spíš připomíná skript:

$Architecture = @{
  Name = 'Architecture'
  Expression = {
    $value = $_.Architecture
    
    switch([int]$value)
      {
        0          {'x86'}
        1          {'MIPS'}
        2          {'Alpha'}
        3          {'PowerPC'}
        6          {'ia64'}
        9          {'x64'}
        5          {'ARM'}
        12         {'ARM64'}
        default    {"$value"}
      }
      
  }  
}
$UpgradeMethod = @{
  Name = 'UpgradeMethod'
  Expression = {
    # property is an array, so process all values
    $value = $_.UpgradeMethod
    
    switch([int]$value)
      {
        1          {'Other'}
        2          {'Unknown'}
        3          {'Daughter Board'}
        4          {'ZIF Socket'}
        5          {'Replacement/Piggy Back'}
        6          {'None'}
        7          {'LIF Socket'}
        8          {'Slot 1'}
        9          {'Slot 2'}
        10         {'370 Pin Socket'}
        11         {'Slot A'}
        12         {'Slot M'}
        13         {'Socket 423'}
        14         {'Socket A (Socket 462)'}
        15         {'Socket 478'}
        16         {'Socket 754'}
        17         {'Socket 940'}
        18         {'Socket 939'}
        default    {"$value"}
      }
      
  }  
}
$ProcessorType = @{
  Name = 'ProcessorType'
  Expression = {
    # property is an array, so process all values
    $value = $_.ProcessorType
    
    switch([int]$value)
      {
        1          {'Other'}
        2          {'Unknown'}
        3          {'Central Processor'}
        4          {'Math Processor'}
        5          {'DSP Processor'}
        6          {'Video Processor'}
        default    {"$value"}
      }
      
  }  
}
Get-WmiObject -Class Win32_Processor | select PSComputerName, Manufacturer, Name, $ProcessorType, AddressWidth, DataWidth, L2CacheSize, L3CacheSize, Caption, NumberOfCores, NumberOfLogicalProcessors, PowerManagementSupported, ProcessorId, VirtualizationFirmwareEnabled, VMMonitorModeExtensions, $Architecture, SocketDesignation, $UpgradeMethod, SecondLevelAddressTranslationExtensions, family

Family je pouze číslo, na konci článku nechám legendu z dokumentace MS. Pro koho je toto příliš složité a zdlouhavé, mám jednoduší verzi, která vypíše základnější informace.

Get-WmiObject -Class Win32_Processor | select PSComputerName, Name, AddressWidth, DataWidth, L2CacheSize, L3CacheSize, Caption, NumberOfCores, NumberOfLogicalProcessors

Přehled rodin, aneb klíč k vlastnosti family

Číslo v poslední závorce je hodnota, kterou vypíše první verze příkladu na stránce výše.

Other (1)
Unknown (2)
8086 (3)
80286 (4)
80386 (5)
80486 (6)
8087 (7)
80287 (8)
80387 (9)
80487 (10)
Pentium(R) brand (11)
Pentium(R) Pro (12)
Pentium(R) II (13)
Pentium(R) processor with MMX(TM) technology (14)
Celeron(TM) (15)
Pentium(R) II Xeon(TM) (16)
Pentium(R) III (17)
M1 Family (18)
M2 Family (19)
Intel(R) Celeron(R) M processor (20)
Intel(R) Pentium(R) 4 HT processor (21)
K5 Family (24)
K6 Family (25)
K6-2 (26)
K6-3 (27)
AMD Athlon(TM) Processor Family (28)
AMD(R) Duron(TM) Processor (29)
AMD29000 Family (30)
K6-2+ (31)
Power PC Family (32)
Power PC 601 (33)
Power PC 603 (34)
Power PC 603+ (35)
Power PC 604 (36)
Power PC 620 (37)
Power PC X704 (38)
Power PC 750 (39)
Intel(R) Core(TM) Duo processor (40)
Intel(R) Core(TM) Duo mobile processor (41)
Intel(R) Core(TM) Solo mobile processor (42)
Intel(R) Atom(TM) processor (43)
Alpha Family (48)
Alpha 21064 (49)
Alpha 21066 (50)
Alpha 21164 (51)
Alpha 21164PC (52)
Alpha 21164a (53)
Alpha 21264 (54)
Alpha 21364 (55)
AMD Turion(TM) II Ultra Dual-Core Mobile M Processor Family (56)
AMD Turion(TM) II Dual-Core Mobile M Processor Family (57)
AMD Athlon(TM) II Dual-Core Mobile M Processor Family (58)
AMD Opteron(TM) 6100 Series Processor (59)
AMD Opteron(TM) 4100 Series Processor (60)
MIPS Family (64)
MIPS R4000 (65)
MIPS R4200 (66)
MIPS R4400 (67)
MIPS R4600 (68)
MIPS R10000 (69)
SPARC Family (80)
SuperSPARC (81)
microSPARC II (82)
microSPARC IIep (83)
UltraSPARC (84)
UltraSPARC II (85)
UltraSPARC IIi (86)
UltraSPARC III (87)
UltraSPARC IIIi (88)
68040 (96)
68xxx Family (97)
68000 (98)
68010 (99)
68020 (100)
68030 (101)
Hobbit Family (112)
Crusoe(TM) TM5000 Family (120)
Crusoe(TM) TM3000 Family (121)
Efficeon(TM) TM8000 Family (122)
Weitek (128)
Itanium(TM) Processor (130)
AMD Athlon(TM) 64 Processor Family (131)
AMD Opteron(TM) Processor Family (132)
AMD Sempron(TM) Processor Family (133)
AMD Turion(TM) 64 Mobile Technology (134)
Dual-Core AMD Opteron(TM) Processor Family (135)
AMD Athlon(TM) 64 X2 Dual-Core Processor Family (136)
AMD Turion(TM) 64 X2 Mobile Technology (137)
Quad-Core AMD Opteron(TM) Processor Family (138)
Third-Generation AMD Opteron(TM) Processor Family (139)
AMD Phenom(TM) FX Quad-Core Processor Family (140)
AMD Phenom(TM) X4 Quad-Core Processor Family (141)
AMD Phenom(TM) X2 Dual-Core Processor Family (142)
AMD Athlon(TM) X2 Dual-Core Processor Family (143)
PA-RISC Family (144)
PA-RISC 8500 (145)
PA-RISC 8000 (146)
PA-RISC 7300LC (147)
PA-RISC 7200 (148)
PA-RISC 7100LC (149)
PA-RISC 7100 (150)
V30 Family (160)
Quad-Core Intel(R) Xeon(R) processor 3200 Series (161)
Dual-Core Intel(R) Xeon(R) processor 3000 Series (162)
Quad-Core Intel(R) Xeon(R) processor 5300 Series (163)
Dual-Core Intel(R) Xeon(R) processor 5100 Series (164)
Dual-Core Intel(R) Xeon(R) processor 5000 Series (165)
Dual-Core Intel(R) Xeon(R) processor LV (166)
Dual-Core Intel(R) Xeon(R) processor ULV (167)
Dual-Core Intel(R) Xeon(R) processor 7100 Series (168)
Quad-Core Intel(R) Xeon(R) processor 5400 Series (169)
Quad-Core Intel(R) Xeon(R) processor (170)
Dual-Core Intel(R) Xeon(R) processor 5200 Series (171)
Dual-Core Intel(R) Xeon(R) processor 7200 Series (172)
Quad-Core Intel(R) Xeon(R) processor 7300 Series (173)
Quad-Core Intel(R) Xeon(R) processor 7400 Series (174)
Multi-Core Intel(R) Xeon(R) processor 7400 Series (175)
Pentium(R) III Xeon(TM) (176)
Pentium(R) III Processor with Intel(R) SpeedStep(TM) Technology (177)
Pentium(R) 4 (178)
Intel(R) Xeon(TM) (179)
AS400 Family (180)
Intel(R) Xeon(TM) processor MP (181)
AMD Athlon(TM) XP Family (182)
AMD Athlon(TM) MP Family (183)
Intel(R) Itanium(R) 2 (184)
Intel(R) Pentium(R) M processor (185)
Intel(R) Celeron(R) D processor (186)
Intel(R) Pentium(R) D processor (187)
Intel(R) Pentium(R) Processor Extreme Edition (188)
Intel(R) Core(TM) Solo Processor (189)
K7 (190)
Intel(R) Core(TM)2 Duo Processor (191)
Intel(R) Core(TM)2 Solo processor (192)
Intel(R) Core(TM)2 Extreme processor (193)
Intel(R) Core(TM)2 Quad processor (194)
Intel(R) Core(TM)2 Extreme mobile processor (195)
Intel(R) Core(TM)2 Duo mobile processor (196)
Intel(R) Core(TM)2 Solo mobile processor (197)
Intel(R) Core(TM) i7 processor (198)
Dual-Core Intel(R) Celeron(R) Processor (199)
S/390 and zSeries Family (200)
ESA/390 G4 (201)
ESA/390 G5 (202)
ESA/390 G6 (203)
z/Architectur base (204)
Intel(R) Core(TM) i5 processor (205)
Intel(R) Core(TM) i3 processor (206)
Intel(R) Core(TM) i9 processor (207)
VIA C7(TM)-M Processor Family (210)
VIA C7(TM)-D Processor Family (211)
VIA C7(TM) Processor Family (212)
VIA Eden(TM) Processor Family (213)
Multi-Core Intel(R) Xeon(R) processor (214)
Dual-Core Intel(R) Xeon(R) processor 3xxx Series (215)
Quad-Core Intel(R) Xeon(R) processor 3xxx Series (216)
VIA Nano(TM) Processor Family (217)
Dual-Core Intel(R) Xeon(R) processor 5xxx Series (218)
Quad-Core Intel(R) Xeon(R) processor 5xxx Series (219)
Dual-Core Intel(R) Xeon(R) processor 7xxx Series (221)
Quad-Core Intel(R) Xeon(R) processor 7xxx Series (222)
Multi-Core Intel(R) Xeon(R) processor 7xxx Series (223)
Multi-Core Intel(R) Xeon(R) processor 3400 Series (224)
Embedded AMD Opteron(TM) Quad-Core Processor Family (230)
AMD Phenom(TM) Triple-Core Processor Family (231)
AMD Turion(TM) Ultra Dual-Core Mobile Processor Family (232)
AMD Turion(TM) Dual-Core Mobile Processor Family (233)
AMD Athlon(TM) Dual-Core Processor Family (234)
AMD Sempron(TM) SI Processor Family (235)
AMD Phenom(TM) II Processor Family (236)
AMD Athlon(TM) II Processor Family (237)
Six-Core AMD Opteron(TM) Processor Family (238)
AMD Sempron(TM) M Processor Family (239)
i860 (250)
i960 (251)
Reserved (SMBIOS Extension) (254)
Reserved (Un-initialized Flash Content – Lo) (255)
SH-3 (260)
SH-4 (261)
ARM (280)
StrongARM (281)
6×86 (300)
MediaGX (301)
MII (302)
WinChip (320)
DSP (350)
Video Processor (500)

Posted in: Windows 11

Windows 11 na starý HW

Na webu je k dispozici celá řada návodů, jak dostat Windows 11 na nepodporovaný HW. Většina spočívá v úpravě registru pomocí klíče LabConfig (viz starší článek https://petrasekjan.cz/jak-obejit-kontrolu-hw-pri-instalaci-windows-11/), nebo užití nástroje Rufus. Obojí krásně funguje pro čistou instalaci, ale pro upgrade (přesněji inplace upgrade) je to složitější. Nedávno jsem objevil primitivní cestu, která spočívá pouze v kopírování souborů a použití oficiálních instalačních médií.

Tento postup vyžaduje, aby procesor podporoval instrukční sadu SSE4.2, což není tak těžké, procesory Intel Cotre i3, i5, i7 to podporují od 1. generace a AMD Ryzen rovněž od 1. generace. Doporučuji, aby počítač měl nějaké TPM (nemusí) a určitě aby musí mít 4 GB RAM, použitelné jsou 11 od 8 GB RAM.

Příprava

Budeme potřebovat nějaký USB klíč (flash disk), nebo v případě upgrade nějakou složku. Pokud již máte instalační flashku Windows 10 x64, máte většinu úspěchu.

Pokud máte instalační otisk Windows 10 22H2 x64 (ISO soubor), tak z něj vyrobte instalační flash disk, nebo jej rozbalte do složky. Pokud instalačku Windows 10 nemáte, stáhněte si ji https://www.microsoft.com/cs-cz/software-download/windows10 (do konce podpory) a vyrobte si instalační USB klíč.

Stáhněte si aktuální ISO Windows 11 https://www.microsoft.com/cs-cz/software-download/windows11 na webu užijte stažení pod nadpisem: Stažení bitové kopie disku (souboru ISO) systému Windows 11 pro zařízení x64

Vlastní úprava instalačního média

Nyní přijde primitivní krok, ve složce Sources na instalačním USB vyhledejte install.esd

Install.esd

Soubor install.esd smažte, nebo přejmenujte na Win10.esd (budete potřebovat 5 GB volného místa).

Nyní otevřete ISO soubor s Windows 11 a vyhledejte soubor install.wim ve složce Sources (pokud jste ISO vytvořili nástrojem pro upgrade, pak hledáte soubor install.esd).

Tento soubor zkopírujte do složky Sources na instalační USB Windows 10.

Instalace / upgrade

Nyní již běžným spuštěním setuzp.exe z kořenového adresáře instalačního USB flash disku můžeme spustit proces Upgrade. Využíváme instalátor pro Windows 10, takže náš PC musí vyhovět jen HW požadavkům na Windows 10. Reálně vybalení Windnows na disk provádí nástroje dism.exe, kterému je jedno, jaký wim, esd nebo ffu soubor mu přehodíme.

Licenční smlouvu obdržíme pro Windows 11, vezme se z wim souboru, stejně tak v potvrzovací akci budeme mít napsán Windows 11, v průběhu procesu nám setup.exe bude psát o instalaci Windows 10, ale to je jen grafika programu setup.exe, který na pozadí provádí příslušné vybalení wim obrazu.

Po 2. restartu již obvykle vidíte nové provedení grafiky spouštění Windows.

Posted in: Windows 10, Windows 11, Windows server

ASR pravidla

MS Defender umí rozšíření zabezpečení formou tzv. ASR pravidel. Jejich úkolem je omezovat útočníkovi možnosti toho, co může využít k provedení útoku tím, že některé akce automaticky blokují. Originální dokumentace je zde: https://learn.microsoft.com/en-us/defender-endpoint/enable-attack-surface-reduction#group-policy a oficiální PowerShell pak zde: https://learn.microsoft.com/en-us/defender-endpoint/enable-attack-surface-reduction#powershell

Dnes bych se rád podělil o PowerShell kód, který umožní domácím uživatelům Windows 10 a starupům tato nastavení jednoduše využívat tím, že si zkopírují příkazy pro pravidla, která chtějí využívat. Požadavkem je edice Pro Windows 10 a vyšší edice, stejně tak Windows 11 a Windows Server 2012R2 a novější.

Sada příkazů k nastavení jednotlivých možností

#Blokace obfuskovaného kódu 
Add-MpPreference -AttackSurfaceReductionRules_Ids 56a863a9-875e-4185-98a7-b882c64b5ce5 -AttackSurfaceReductionRules_Actions Enabled 
#Blokace vytváření podřízených procesů pro Adobe PDF reader
Add-MpPreference -AttackSurfaceReductionRules_Ids 7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c -AttackSurfaceReductionRules_Actions Enabled
#Blokace vytváření podřízených procesů z Office aplikací
Add-MpPreference -AttackSurfaceReductionRules_Ids d4f940ab-401b-4efc-aadc-ad5f3c50688a -AttackSurfaceReductionRules_Actions Enabled
#Blokace vytvoření otisku paměti procesu LSASS
Add-MpPreference -AttackSurfaceReductionRules_Ids d9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2 -AttackSurfaceReductionRules_Actions Enabled
#Blokace spustitelného obsahu z emailu
Add-MpPreference -AttackSurfaceReductionRules_Ids be9ba2d9-53ea-4cdc-84e5-9b1eeee46550 -AttackSurfaceReductionRules_Actions Enabled
#Blokování spouštění spustitelných souborů, pokud nesplňují kritérium prevalence, stáří nebo důvěryhodného seznamu
Add-MpPreference -AttackSurfaceReductionRules_Ids 01443614-cd74-433a-b99e-2ecdc07bfc25 -AttackSurfaceReductionRules_Actions Enabled
#Blokace obfuskovaných skriptů
Add-MpPreference -AttackSurfaceReductionRules_Ids 5beb7efe-fd9a-4556-801d-275e5ffc04cc -AttackSurfaceReductionRules_Actions Enabled
#Blokování stahování spustitelného obsahu pomocí Javascript a VBscript 
Add-MpPreference -AttackSurfaceReductionRules_Ids d3e037e1-3eb8-44c8-a917-57927947596d -AttackSurfaceReductionRules_Actions Enabled
#Blokace vytváření spustitelného obsahu pomocí Office aplikací
Add-MpPreference -AttackSurfaceReductionRules_Ids 3b576869-a4ec-4529-8536-b80a7769e899 -AttackSurfaceReductionRules_Actions Enabled
#Blokace vkládání kódu do procesů z Office aplikací
Add-MpPreference -AttackSurfaceReductionRules_Ids 75668c1f-73b5-4cf0-bb93-3ecf5cb7cc84 -AttackSurfaceReductionRules_Actions Enabled
#Blokování komunikace aplikace Office při vytváření podřízených procesů
Add-MpPreference -AttackSurfaceReductionRules_Ids 26190899-1602-49e8-8b27-eb1d0a1ce869 -AttackSurfaceReductionRules_Actions Enabled
#Blokování persistence pomocí WMI
Add-MpPreference -AttackSurfaceReductionRules_Ids e6db77e5-3df2-4cf1-b95a-636979351e5b -AttackSurfaceReductionRules_Actions Enabled
#Blokování vytváření procesů z příkazů PSExec a WMI
Add-MpPreference -AttackSurfaceReductionRules_Ids d1e49aac-8f56-4280-b9ba-993a6d77406c -AttackSurfaceReductionRules_Actions Enabled
#Blokování nedůvěryhodného a nepodepsaného spustitelného obsahu na USB médiích
Add-MpPreference -AttackSurfaceReductionRules_Ids b2b3f03d-6a65-4f7b-a9c7-1c7ef74a9ba4 -AttackSurfaceReductionRules_Actions Enabled
#Blokování vytvoření proscesu webshell
Add-MpPreference -AttackSurfaceReductionRules_Ids a8f5898e-1dc8-49a9-9878-85004b8a61e6 -AttackSurfaceReductionRules_Actions Enabled
#Blokování volání aplikací z Office makra
Add-MpPreference -AttackSurfaceReductionRules_Ids 92e97fa1-2edf-4476-bdd6-9dd0b4dddc7b -AttackSurfaceReductionRules_Actions Enabled
#Pokročilá ochrana před Ramsomware
Add-MpPreference -AttackSurfaceReductionRules_Ids c1db55ab-c21a-4637-bb3f-a12568109d35 -AttackSurfaceReductionRules_Actions Enabled
Posted in: Vývoj počítačů, Windows 10, Windows 11, Windows server, Základy PowerShellu

Výpis pravidel Windows Firewall

Určitě každý admin někdy narazí na to, že něco nefunguje kvůli chybám v síťové komunikaci. Někdy za to může nastavení Firewallu. Originální konzole je přehledná a super, ale ve velkém množství pravidel se špatně hledá, respektive jsou tam filtry, které fungují, ale fultextové vyhledání je problém. Zkuste využít předností PowerShellu a jeho výstupu GridView k hledání aktivních pravidel.

Get-NetFirewallRule | select Name, DisplayName, DisplayGroup,
@{Name='Protocol';Expression={($PSItem | Get-NetFirewallPortFilter).Protocol}},
@{Name='LocalPort';Expression={($PSItem | Get-NetFirewallPortFilter).LocalPort}},
@{Name='RemotePort';Expression={($PSItem | Get-NetFirewallPortFilter).RemotePort}},
@{Name='RemoteAddress';Expression={($PSItem | Get-NetFirewallAddressFilter).RemoteAddress}},
Enabled, Profile, Direction, Action | Out-GridView

Další zajímavou možností je odnést si seznam běžících pravidel a jejich konfigurace v textovém souboru, který si člověk může v klidu analyzovat, nebo takto porovnávat změny.

Get-NetFirewallRule | select Name, DisplayName, DisplayGroup,
@{Name='Protocol';Expression={($PSItem | Get-NetFirewallPortFilter).Protocol}},
@{Name='LocalPort';Expression={($PSItem | Get-NetFirewallPortFilter).LocalPort}},
@{Name='RemotePort';Expression={($PSItem | Get-NetFirewallPortFilter).RemotePort}},
@{Name='RemoteAddress';Expression={($PSItem | Get-NetFirewallAddressFilter).RemoteAddress}},
Enabled, Profile, Direction, Action | Out-File -FilePath C:\Firewall.txt
Posted in: Vývoj počítačů, Windows 10, Windows 11, Windows 8 a 8.1, Windows server, Základy PowerShellu

Hash textu v PowerShellu

PowerShell nativně již nějaký pátek umí vypočítat hash souboru, což je velmi užitečné pro hledání duplicit, ověření po síti přeneseného souboru, ověření shody dvou souborů apod., takže super funkce.

Někdy je také potřeba spočítat hash z textu a nemusí jít zrovna jen nutně o heslo…. Na to PowerShell již vestavěnou funkci nemá, pro hash využívaný v AD již funkci implementoval Michael Grafnetter ve svém modulu DS Internals, já tedy zde uvedu funkci, která počítá především SHA, ale zvládne také MD5.

Function Get-StringHash {
    [cmdletbinding()]
    [OutputType([String])]
    param(
        [parameter(ValueFromPipeline, Mandatory = $true, Position = 0)][String]$String,
        [parameter(ValueFromPipelineByPropertyName, Mandatory = $true, Position = 1)]
        [ValidateSet("MD5", "RIPEMD160", "SHA1", "SHA256", "SHA384", "SHA512")][String]$HashName
    )
    begin {

    }
    Process {
        $StringBuilder = New-Object System.Text.StringBuilder
        [System.Security.Cryptography.HashAlgorithm]::Create($HashName).ComputeHash([System.Text.Encoding]::UTF8.GetBytes($String))| foreach-object {
            [Void]$StringBuilder.Append($_.ToString("x2"))
        }
        $output = $StringBuilder.ToString()
    }
    end {
        return $output
    }
}

Funkce přijímá 2 povinné parametry, text k výpočtu hash a požadovaný algoritmus.

Posted in: Vývoj počítačů, Windows 10, Windows 11, Windows 8 a 8.1, Windows server, Základy PowerShellu

Čtení velkých textových souborů PowerShell

Určitě nejsem sám, kdo narazil u velkých souborů na to, že rutina Get-Content zabírá příliš mnoho RAM, u cca 150 MB txt souboru i více jak 4 GB RAM, pokud potřebuji zpracovávat soubor po jednotlivých řádcích. Obecně se doporučuje využít .NET rutiny, jak popisuje Yusuf Ozturk » PowerShell Performance Tips for Large Text Operations – Part 1: Reading Files

Z výše uvedeného se mi v praxi nejvíce osvědčilo:

$LogFilePath = Read-Host -Promt "Zadej cestu k souboru"
$Lines = [io.file]::ReadAllLines($LogFilePath)
[int]$LineNumber = 0;
 
# Read Lines
foreach ($Line in $Lines)
{
	$LineNumber++
        Write-Host $Line #vypíše aktuální řádek
}

V proměnné Line se nachází aktuální řádek souboru, takže je možné s nám dále pracovat.

Posted in: Windows 10, Windows 11, Windows 8 a 8.1

Vypnutí FastBoot

Nastavení v GUI: Ovládací panely\Všechny položky Ovládacích panelů\Možnosti napájení\Nastavení systému\Nastavení vypnutí – odškrtnutí checkboxu „Zapnout rychlé spuštění (doporučeno)

Pomocí reg souboru

Níže přikládám zdrojový kód regsouboru.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power]
"HiberbootEnabled"=dword:00000000
Back to Top