WannaCrypt জন্য GottaFix?


109

সতর্কতা

প্যাঁচের নির্দিষ্ট সংস্করণের জন্য এই চ্যালেঞ্জের পরীক্ষার উত্তরগুলি যা ওয়ানক্রিপট / ওয়ানা ক্রাই আক্রমণ বন্ধ করতে সহায়তা করে। আপনার অপারেটিং সিস্টেমের উপর নির্ভর করে আপনার আলাদা প্যাচ থাকতে পারে। নিজেকে রক্ষার সর্বোত্তম উপায় হ'ল আপনার পিসি সম্পূর্ণরূপে আপ টু ডেট রয়েছে এবং সংযুক্তি এবং ওয়েব লিঙ্কগুলি খোলার সময় সতর্কতা অবলম্বন করা।


ভূমিকা

আমি ভাবতে চাই যে প্রোগ্রামাররা অন্তর্নিহিত ভাল লোক, এমনকি কিছু এত ভাল না হলেও , তারা যাতে MS17-010 প্যাচ দিয়ে সুরক্ষিত তা নিশ্চিত করতে লোকদের সহায়তা করতে দিন ।

চ্যালেঞ্জ

আপনার চ্যালেঞ্জটি এমন একটি সম্পূর্ণ প্রোগ্রাম বা ফাংশন লিখতে হবে যা বর্তমান অপারেটিং সিস্টেমে এমএস 17-010 প্যাচ ইনস্টল করা আছে তার উপর নির্ভর করে সত্যবাদী বা মিথ্যা মান প্রদান করে।

ইনপুট এবং আউটপুট

ইনপুট: কোনও ইনপুট লাগবে না

আউটপুট: সত্যবাদী বা মিথ্যা মান (প্রতিটি ক্ষেত্রে যেটি ব্যবহৃত হয় তা নির্দেশ করুন)। একটি ত্রুটি / ব্যতিক্রম একটি মিথ্যা মান হিসাবে বিবেচনা করা যেতে পারে।

বিধি

  • আপনার কোডটি কমপক্ষে একটি উইন্ডোজ অপারেটিং সিস্টেমে চালানো উচিত (এবং সঠিকভাবে আউটপুট) যার জন্য প্যাচ উপলব্ধ রয়েছে, তবে প্রতিটি অপারেটিং সিস্টেমে চলতে হবে না (দয়া করে কোনও সীমাবদ্ধতা লিখুন)।
  • স্ট্যান্ডার্ড লুফোলস প্রযোজ্য
  • এটি , তাই সর্বনিম্ন পরিমাণ বাইটের সাথে জমাটি জয়!

3
হুঁ, একটি প্রশ্ন .. সত্য / মিথ্যা মান সম্পর্কে, একটি ত্রুটি মিথ্যা মান হিসাবে অনুমোদিত, এবং সত্য সত্য হিসাবে প্রত্যাশিত হিসাবে অনুমোদিত, বা এটি অনুমোদিত নয়?
কেভিন ক্রুইজসেন

3
@ কেভিন ক্রুজসেন আমি একটি ত্রুটিটিকে মিথ্যা মূল্য হিসাবে বিবেচনা করে খুশি। আমি মনে করি এটি একটি পরিষ্কার সূচক যে প্যাচ ইনস্টল করা হয়নি।
নোট 90

12
যদি ব্যবহারকারীরা এই প্যাচটি মিস করে তবে একটি পরে ইনস্টল করে তবে তারা সুরক্ষিত থাকবে যাতে এটি কিছু ব্যবহারকারীর জন্য মিথ্যা নেতিবাচক দিক দিতে পারে।
ইয়ান মিলার

2
@ মিশেল জনসন নিশ্চিত হন না যে কীভাবে দুর্বলতা কাজে লাগানো যায় তা প্রদর্শন করে কোড পোস্ট করতে লোকদের উত্সাহ দেওয়া বুদ্ধিমানের কাজ।
নোটস 90

7
হোস্ট পিসির সংক্রমণ কি একটি কার্যকর ভুয়া মূল্য? এটি স্পষ্টতই পয়েন্টটি পেয়ে যাবে
নিক রবার্টসন

উত্তর:


158

পাওয়ারশেল 2.0, 24 20 16 বাইট

hotfix KB4012212

-4 বাইটস মুছে ফেলার মাধ্যমে @ যাইহোক ধন্যবাদ জানায় -id
থেকে -4 বাইট ধন্যবাদ @ DankoDurbić পরিবর্তন করে get-hotfixথেকে hotfix

KB4012212উইন্ডোজ for . এর জন্য প্যাচটি এটি প্যাচের লিঙ্কযুক্ত পৃষ্ঠা থেকে যে কোনও কেবি কোড দিয়ে প্রতিস্থাপন করা যেতে পারে ।

ফিরে আসবে উত্স , বর্ণনা , HotFixID , InstalledBy এবং InstalledOn তথ্য যখন এটি truthy মান হিসাবে ইনস্টল, এবং যদি এটা falsey মান হিসাবে এটি সন্ধান করতে অক্ষম এর একটি ত্রুটি দেব।

এখানে সত্যবাদী এবং মিথ্যা আউটপুট উভয়ের উদাহরণ রয়েছে (সুতরাং KB4012212আমার মেশিনে ইনস্টল করা আছে তবে KB4012215তা নয়):

এখানে চিত্র বর্ণনা লিখুন


82
পিপিসি-র একটি উত্তর যা বাস্তবিকভাবে ব্যবহারিক উদ্দেশ্যে কার্যকর? আমি অভিভূত.
জন ডিভোরাক

1
আপনার আইডি Get-HotFix KB4012212খুব বেশি কাজ করবে তা নির্দিষ্ট করার দরকার নেই । (কেবলমাত্র PSv4 দিয়ে পরীক্ষিত)। তবে আমি জান ডভোরাকের সাথে একমত, আমার মনে হয় না আউটপুট চ্যালেঞ্জের কাছে নিশ্চিত হয়ে গেছে।
যাই হোক না কেন

6
আপনি ইতিমধ্যে পরবর্তী বা পরবর্তী মাসিক রোল-আপে থাকলে কাজ করে না, কারণ এটি একে অপরের প্রতিস্থাপন করে।
সুমিরদা

6
@ নোটস 90, হ্যাঁ, মন্তব্যটি এমন লোকদের জন্য ইঙ্গিত হিসাবে বোঝানো হয়েছে যারা কোড চেষ্টা করে এবং একটি মিথ্যা নেতিবাচক পান।
সুমিরদা

10
শুধু hotfix KB4012212যথেষ্ট। পাওয়ারশেলে আপনাকে লেখার দরকার নেই get-
ডানকো দুর্বিć

43

ব্যাচ / উইন্ডোজ সিএমডি, 31 29 28 23 বাইট

wmic qfe|find "4012212"

-1 বাইট ধন্যবাদ @SteveFest পরিবর্তন করে findstr 4012212থেকে find "4012212"
-5 বাইট ধন্যবাদ @BassdropCumberwubwubwub সরিয়ে list

ব্যাখ্যা:

wmic          Windows Management Instrumentation Command-line
qfe           Quick Fix Engineering
|find "..."   Looks for the string in the complete output

কিছু প্যাচ তথ্য যদি এটি ইনস্টল করা হয় বা অন্যথায় কিছুই না Out
নীচের স্ক্রিনশটে প্যাচ 4012212ইনস্টল করা আছে এবং 4012215তা নেই।

এখানে চিত্র বর্ণনা লিখুন


5
40M আপডেটগুলি প্রায় একবার ঘুরে দেখলে এটি সমস্যাযুক্ত হয়ে উঠবে
জন ডিভোরাক

1
findপরিবর্তে ব্যবহার করুন findstr, এটি 3 বাইট সাশ্রয় করে
স্টিভেফস্টেল

2
আপনি ইতিমধ্যে পরবর্তী বা পরবর্তী মাসিক রোল-আপে থাকলে কাজ করে না, কারণ এগুলি একে অপরের প্রতিস্থাপন করে।
সুমিরদা

2
@ সুমিরদা এই নির্দিষ্ট প্যাচটি পরীক্ষা করা চ্যালেঞ্জ, এটি প্রতিস্থাপন প্যাচগুলির জন্য পরীক্ষা করতে হবে না।
নোটস 90

1
find "4012212"-1 বাইটের জন্যও কাজ করে, wmic qfe|find "4012212"খুব বেশি কাজ করছে বলে মনে হচ্ছে তবে আমি কি এখানে কিছু মিস করছি?
বাসড্রপ কম্বারবুবউবউব

20

বাশ + সাইগউইন (বা ডাব্লুএসএল), 21 বাইট

এই উত্তরটি বেশিরভাগ কেভিনের উত্তর থেকে চুরি করা হয় । সুতরাং আপনি যদি মনে করেন যে এটির প্রাপ্য।

wmic qfe|grep 4012212

সিগউইনের কোর্টিল ছাড়াও উইন্ডোজ কমান্ডে অ্যাক্সেস রয়েছে। আমরা grepউইন্ডোজ এর পরিবর্তে কোর্টিলগুলি ব্যবহার করতে সক্ষম findতাই আমাদের উদ্ধৃতি ব্যবহার করার দরকার নেই। এই কারণে 2 বাইট সংরক্ষণ করা হয়।


1
ওহ আচ্ছা হ্যাঁ এটা আমার থেকেও খাটো; আমি ভাল এমএস ব্যবহারকারীর কাছ থেকে চুরি করিনি!
অ্যারন

2
কেউ "বা ডাব্লুএসএল" অন্তর্ভুক্ত করার জন্য এটি সম্পাদনা করেছিলেন যা আমার ধারণা সত্য তবে আপনাকে প্রথমে পথটি সংশোধন করতে হবে।
ক্যাপ্টেন ম্যান

17

পাওয়ারশেল 5.1, 245 212 207 বাইট

$S=New-Object -ComObject Microsoft.Update.Session;$T=$S.CreateUpdateSearcher();$H=$‌​T.GetTotalHistoryCo‌​unt();$p=0;$T.Query‌​History(0,$H)|ForEa‌​ch-Object -Process{if($_.Title -like"*KB4013429*"){$p=1;}};echo $p;

-৩৩ বাইটস @ কেভিন ক্রুইজসেনকে সাদা স্থান সরিয়ে এবং সত্য এবং মিথ্যাটিকে 1 এবং 0 দিয়ে প্রতিস্থাপনের জন্য ধন্যবাদ।

-5 বাইটস @ কেভিনিক্রুজসেনকে পরিবর্তনশীল নামগুলি সংক্ষিপ্ত করার জন্য ধন্যবাদ

স্পষ্টতই কোনও পুরষ্কার জিততে যাচ্ছে না, তবে এই পাওয়ারশেল স্ক্রিপ্টটি KB4013429 ( লিঙ্কে তালিকাভুক্ত প্যাচগুলির মধ্যে একটি) এর জন্য মাইক্রোসফ্ট আপডেটের ইতিহাস লগটি পরীক্ষা করবে এটি কোনও প্যাচগুলির সাথে প্রতিস্থাপন করা যেতে পারে। ভেবেছিলাম আমি এটি পোস্ট করেছি কারণ প্যাচটি পরে কোনও প্রতিস্থাপন করা থাকলে এটি একটু বেশি নির্ভরযোগ্য।


13
হাই, পিপিসিজিতে আপনাকে স্বাগতম! :) যেহেতু এই প্রশ্নটি কোড-গল্ফকে ট্যাগ করা হয়েছে, তাই চ্যালেঞ্জটি যতটা সম্ভব কম কয়েকটি বাইটে সম্পন্ন করার ধারণা। আমি জানি আপনার উত্তর সম্ভবত যাহাই হউক না কেন জিততে হবে, এবং আপনি আরো একটি সম্পূর্ণ পদ্ধতি চেয়ে আমি ব্যবহার করেছি, কিন্তু আপনি এখনও গলফ অপ্রয়োজনীয় অনুসরণকারী শূণ্যস্থান সরিয়ে আপনার বর্তমান উত্তর দিতে পারেন, এবং ব্যবহার 1/ 0পরিবর্তে এর true/ false$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;
এটির

2
ওহ, এবং অন্য একটি জিনিস আপনি গল্ফ করতে পারেন যা আমি এখনই লক্ষ্য করি: সর্বদা একক-চরিত্রের পরিবর্তনশীল / পদ্ধতি / শ্রেণীর নাম ব্যবহার করা ভাল। সুতরাং আপনি পরিবর্তন করতে পারেন Hcকরতে Hএবং Seকরতে T(অন্য একক অক্ষর বা ব্যতীত Hবা Sযা আপনি ইতিমধ্যে ব্যবহার করেছি) অন্য 5 বাইট সংরক্ষণ করুন। :)
কেভিন ক্রুইজসেন

2
আপনি স্টোর $H করার পরিবর্তে সরাসরি পাস করতে পারবেন না ? এছাড়াও %{ }এবং ?{ }পরিবর্তে ForEach-Objectএবং if। খুব নিশ্চিত যে আপনি প্রতিধ্বনির পরিবর্তে কেবল পাইপলাইনে আউটপুট দিতে পারবেন কারণ আপনার কেবল একটি ফলাফলের ম্যাচ হওয়া উচিত এবং আমি মনে করি যে এটি ওপির উপর ভিত্তি করে সত্য হিসাবে গণ্য হবে
গোলাপিফ্লয়েডএক্স 33

16

সি #, 178 143 141 134 বাইট

_=>new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_QuickFixEngineering WHERE HotFixID='KB3150513'").Get().Count>0;

ইনপুটটি Func<int, bool>অব্যবহৃত এমন জায়গায় সংকলন করে ।

@ রায়ান এর সাহায্যে 35 বাইট সংরক্ষণ করা
হয়েছে @ কেভিন ক্রুজসেনকে ধন্যবাদ 2 বাইট
সংরক্ষিত

ফর্ম্যাট সংস্করণ:

System.Func<int, bool> f = _ =>
    new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_QuickFixEngineering WHERE HotFixID = 'KB3150513'")
                         .Get().Count > 0;

নয় if(h["HotFixID"]=="KB4012212")return 1>0;return 1<0;হিসাবে একই return h["HotFixID"]=="KB4012212"?
জুলিয়ান ওল্ফ

@ জুলিয়ানওল্ফ নো, কারণ পরবর্তীতে কেবল প্রথম আইটেমটি ফিরে আসে যা প্রতিটি পুনরাবৃত্তির পূর্ববর্তী পরীক্ষা করে।
TheLethalCoder

1
আপনি ম্যানেজমেন্টঅবজেক্টসারক ক্যোয়ারিতে একটি ক্লজ যুক্ত countকরতে এবং শেষের দিকে একটি যুক্ত করতে পারেন .get()? এমন: _=>{if (new System.Management.ManagementObjectSearcher("SELECT HotFixID FROM Win32_QuickFixEngineering WHERE HotFixID = 'KB3150513'").Get().Count > 0)return 1>0;return 1<0;};। 4 বাইট সংরক্ষণ করতে
রায়ান

5
+1 শেল স্ক্রিপ্টিং ভাষায় না থাকার জন্য।
Hjulle

2
এরিক কার্লসন (যার কাছে মন্তব্য করার মতো পর্যাপ্ত প্রতিনিধি নেই) একটি সম্পাদনাতে প্রতিস্থাপন SELECT HotFixIDকরে by বাইট সংরক্ষণ করার পরামর্শ দিয়েছেন SELECT *
মার্টিন ইন্ডার

14

সাইগউইন, 31 বাইট

শুধু বিদ্রোহী খেলতে

grep KB4012212 "$WINDIR"/*e.log

প্যাচ প্রয়োগ করা থাকলে রিটার্ন কোড 0 হবে, বা না থাকলে 1 হবে।

উইন্ডোজ 7 এর অধীনে সাইগউইন 2.6.0 এর সাথে পরীক্ষিত


আপনি কি সরান তাহলে এই কাজ করবে KB?
TheLethalCoder

@ লেটলকোডার আমি নিশ্চিত নই, এবং আমি এটি খুঁজে বের করতে পারি বলে মনে করি না। আমার উত্তরটি রায়ান থেকে প্রাপ্ত এবং আমরা উভয়ই বিশাল উইন্ডোজআপডেট.লগে পাঠ্য অনুসন্ধান করি যা কেবি নামগুলির চেয়ে অনেক বেশি রয়েছে, আমি এই সংখ্যাটি অন্য প্রসঙ্গে হাজির করতে পারব না
হারুন

মোটামুটি যথেষ্ট আমি আপনার কী করছিলাম সে সম্পর্কে যথেষ্ট জানতাম না তাই প্রশ্নটি কোনও পরামর্শ নয় :)
TheLethalCoder

3
আপনি যদি অপসারণ করেন তবে এটি কাজ করা উচিত KBকারণ 4012212পথটি ব্যতীত অন্য কোনও ক্ষেত্রে এটির সম্ভাবনা নেই। আপনি কেবল কে কে সরিয়ে দিলে আপনি 1 বাইটও বাঁচাতে পারেন কারণ আপনি B4012212পথ ছাড়াই এলোমেলোভাবে খুঁজে পাচ্ছেন না ।
সাইরেনস

4
@ সাইরেনস আমি কেবল সংখ্যার পরীক্ষার বিষয়ে আত্মবিশ্বাসী নই, আমি স্থানান্তরিত বাইটের সংখ্যা 1), হালনাগাদ, ইভেন্ট এবং জব ইউআইডি বা 3) হেক্স ত্রুটি (এবং অন্যদের) কোডগুলি মেলাতে ভয় পাব। কেবল Kপ্রথমটিকে অপসারণ করা যুক্তিসঙ্গত বলে মনে হয় তবে তার পরে B...বৈধ হেক্স উপস্থাপনা হয়ে যায়, ইউআইডি এবং হেক্স কোডগুলির সাথে সংঘর্ষ তৈরি করে
অ্যারন

12

পাওয়ারশেল ভি 4, 64 বাইট

HotFix|? HotFixID -m "401(221[2-7])|(2598)|(2606)|(3198)|(3429)"

একটি রেগেক্স ব্যবহার করে সমস্ত কেবি রেফের জন্য চেক করুন (এখন আপনার দুটি সমস্যা আছে)


3
সাইটে স্বাগতম! প্রথম উত্তর!
প্রোগ্রামার

7

ব্যাচ / কমান্ড প্রম্পট, 27 25 বাইট

systeminfo|find "4012212"

যদি KB4012212 এর আউটপুট পাওয়া যায় তবে অন্যথায় কিছুই আউটপুট হয় না।

2 কে বাইট বাঁচানোর জন্য কেভিনকে ধন্যবাদ জানাই :)


1
আমি মনে করি আপনি পাইপের চারপাশের স্পেসগুলি সরাতে পারবেন: systeminfo|find "4012212"-২ বাইটের জন্য।
কেভিন ক্রুইজসেন 21'17

5

পাওয়ারশেল 2.0, 142 বাইট

  • "সত্য" এর জন্য প্যাচড নয়, "মিথ্যা" এর জন্য 0 প্রদান করে <

নীচে মার্চ থেকে সমস্ত কেবি রয়েছে তবে এপ্রিল, মে কেবি এর সাথে পূর্ববর্তী প্রতিটিকে ছাড়িয়ে দেওয়া দরকার।

(Get-HotFix | where HotFixID -match "4012598","4012216","4012213","4012217","4012214","4012215","4012212","4013429","4012606","4013198").Count

আমি নিশ্চিত নই, কিন্তু আমি মনে করি আপনি পরিবর্তন করতে পারেন (Get-HotFix | whereথেকে (HotFix|where(ব্যবধান সরানো এবং Get-সরানো হয়েছে।
কেভিন Cruijssen

3

পাওয়ারশেল 5.1 134 বাইট

মার্ক পিপ্পিনের মতো তবে গেট-হটফিক্সকে হটফিক্সে পরিবর্তন করেছেন এবং কোথায়? 8 বাইট সংরক্ষণ

(HotFix | ? HotFixID -match 
 "4012598","4012216","4012213","4012217","4012214","4012215","4012212","4013429","4012606","4013198").Count

আমি কেভিনের উত্তরের চেয়ে এটি বাইট-কাউন্টে কম পেতে পারি না


1
আপনি পাইপের চারপাশের স্পেসগুলি সরিয়ে ফেলতে পারেন: (HotFix|? HotFixID ...-২ বাইটের জন্য।
কেভিন ক্রুইজসেন 21'17

2

ডিআইএসএম , 40 বাইট

dism/online /get-packages|find "4012212"

ব্যাখ্যা:

dism             Deployment Image Servicing and Management command-line
/online          Look at current running PC's Operating System
/get-packages    Display some basic information about all packages in the image
|find "..."      Looks for the string in the complete output

প্যাকেজ পরিচয় যদি এটি ইনস্টল করা হয় তবে অন্যথায় কিছু না।
নীচের স্ক্রিনশটে প্যাচ 4012212ইনস্টল করা আছে এবং 4012215তা নেই।

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.