Attention
Les réponses à cette épreuve testent une version spécifique du correctif qui aide à arrêter les attaques WannaCrypt / WannaCry. Selon votre système d'exploitation, vous pouvez avoir un correctif différent. Le meilleur moyen de vous protéger est de vous assurer que votre PC est complètement à jour et de faire attention lorsque vous ouvrez des pièces jointes et des liens Web.
introduction
J'aime penser que les programmeurs sont de bonnes personnes, même si certaines ne le sont pas , alors aidons les gens à s'assurer qu'ils sont protégés avec le correctif MS17-010 .
Défi
Votre défi consiste à écrire un programme complet ou une fonction qui renvoie une valeur de vérité ou de falsey selon que le correctif MS17-010 est installé sur le système d'exploitation actuel.
Entrée et sortie
Entrée: Aucune entrée requise
Sortie: une valeur de vérité ou de falsey (indiquez ce qui est utilisé pour chaque cas). Une erreur / exception peut être considérée comme une valeur de falsey.
Règles
- Votre code doit être exécuté (et émis correctement) sur au moins un système d'exploitation Windows pour lequel le correctif est disponible, mais ne doit pas nécessairement s'exécuter sur tous les systèmes d'exploitation (veuillez indiquer les limitations éventuelles).
- Les failles standard s'appliquent
- C'est du code-golf , donc la soumission avec le moins d'octets gagne!
Réponses:
PowerShell 2.0,
242016 octets-4 octets grâce à @ importe quoi en supprimant
-id
.-4 octets grâce à @ DankoDurbić en changeant
get-hotfix
àhotfix
.KB4012212
est le correctif pour Windows 7. Celui-ci peut être remplacé par n’importe quel code KB de la page liée du correctif .Renverra les informations Source , Description , HotFixID , InstalledBy et InstalledOn lorsqu'il sera installé en tant que valeur de vérité et donnera une erreur s'il est impossible de le trouver en tant que valeur falsey.
Voici un exemple de sortie vérité et falsey (elle
KB4012212
est donc installée sur ma machine maisKB4012215
ne l’est pas):la source
Get-HotFix KB4012212
fonctionnera aussi. (Testé avec PSv4 uniquement). Mais je suis d'accord avec Jan Dvorak, je ne pense pas que la sortie confirme le défi.hotfix KB4012212
suffit. Dans Powershell, vous n'avez pas besoin d'écrireget-
.Lot / Windows CMD,
31292823 octets-1 octet grâce à @SteveFest en passant
findstr 4012212
àfind "4012212"
.-5 octets grâce à @BassdropCumberwubwubwub en supprimant
list
.Explication:
Affiche des informations de correctif s’il est installé ou rien d’autre.
Dans la capture d'écran ci-dessous, le correctif
4012212
est installé et4012215
ne l'est pas.la source
find
au lieu defindstr
, il sauve 3 octetsfind "4012212"
fonctionne également pour -1 octet,wmic qfe|find "4012212"
semble fonctionner aussi mais peut-être que quelque chose me manque?Bash + Cygwin (ou WSL), 21 octets
Cette réponse est principalement volée de la réponse de Kevin . Alors jetez un vote positif de cette façon aussi si vous pensez que cela en mérite un.
Cygwin a accès aux commandes Windows en plus de coreutils. Nous sommes en mesure d'utiliser Coreutils au
grep
lieu de Windows,find
nous n'avons donc pas besoin d'utiliser des guillemets. 2 octets sont enregistrés pour cette raison.la source
Powershell 5.1,
245212207 octets-33 octets grâce à @KevinCruijssen qui supprime les espaces et remplace true et false par 1 et 0.
-5 octets grâce à @KevinCruijssen en raccourcissant les noms de variables
Évidemment, il ne va pas gagner de prix, mais ce script PowerShell vérifiera dans le journal d'historique de Microsoft Update KB4013429 (l'un des correctifs répertoriés sur le lien ) et pourra être remplacé par n'importe lequel des correctifs. Je pensais le poster car c'est un peu plus fiable si le patch a été remplacé par un plus récent.
la source
1
/0
au lieu detrue
/false
. Comme ceci:$S=New-Object -ComObject Microsoft.Update.Session;$Se=$S.CreateUpdateSearcher();$Hc=$Se.GetTotalHistoryCount();$p=0;$Se.QueryHistory(0,$Hc)|ForEach-Object -Process{if($_.Title -like"*KB4013429*"){$p=1;}};echo $p;
( 212 octets )Hc
toH
etSe
toT
(ou une autre lettre en plusH
ouS
que vous avez déjà utilisée) pour enregistrer 5 octets supplémentaires. :)$H
directement au lieu de stocker? Aussi%{ }
et?{ }
au lieu deForEach-Object
etif
. Plutôt sûr que vous pouvez simplement sortir vers le pipeline plutôt que sur l'écho puisque vous ne devriez avoir qu'un seul résultat. Je pense que cela compterait comme une vérité basée sur l'OPC #,
178143141134 octetsCompile vers un
Func<int, bool>
emplacement où l'entrée est inutilisée.35 octets sauvés avec l'aide de @Ryan
2 octets sauvés grâce à @KevinCruijssen
7 octets sauvegardés grâce à @ErikKarlsson
Version formatée:
la source
if(h["HotFixID"]=="KB4012212")return 1>0;return 1<0;
la même chosereturn h["HotFixID"]=="KB4012212"
?count
à la fin de.get()
? Comme ceci:_=>{if (new System.Management.ManagementObjectSearcher("SELECT HotFixID FROM Win32_QuickFixEngineering WHERE HotFixID = 'KB3150513'").Get().Count > 0)return 1>0;return 1<0;};
. Pour économiser 4 octetsSELECT HotFixID
parSELECT *
.Cygwin, 31 octets
Juste pour jouer le rebelle
le code de retour sera 0 si le correctif a été appliqué, ou 1 s'il ne l'a pas été.
Testé sous Windows 7 avec Cygwin 2.6.0
la source
KB
?KB
car il est plutôt improbable que4012212
ce soit là, sauf dans le chemin. Vous pouvez également enregistrer 1 octet si vous ne supprimez que le K, car vous n'allez pas chercherB4012212
au hasard sans le chemin.K
premier semble raisonnable, maisB...
devient alors une représentation hexadécimale valide permettant une collision avec les UID et les codes hexadécimauxPowerShell v4, 64 octets
Vérifie toutes les références KB en utilisant un RegEx (maintenant vous avez deux problèmes)
la source
Invite de commandes / commandes,
2725 octetsSi KB4012212 est trouvé, sortie, sinon rien n'est sorti.
Merci à @ Kevin pour avoir économisé 2 octets :)
la source
systeminfo|find "4012212"
pour -2 octets.Powershell 2.0, 142 octets
Ci-dessous, tous les KB de mars, mais les besoins ont été étendus avec avril, les KB de mai étant donné que tous les remplacent.
la source
(Get-HotFix | where
en(HotFix|where
(espaces supprimés, etGet-
supprimés.)Powershell 5.1 134 octets
Identique à celle de Mark Pippin, mais a changé Get-Hotfix en Hotfix et où aller? économiser 8 octets
Je ne peux pas obtenir moins d'octets que la réponse de Kevin
la source
(HotFix|? HotFixID ...
pour -2 octets.DISM , 40 octets
Explication:
Affiche l'identité du paquet s'il est installé, ou rien sinon.
Dans la capture d'écran ci-dessous, le correctif
4012212
est installé et4012215
ne l'est pas.la source