প্রযুক্তিগতভাবে, আপনি কীওয়ার্ডগুলির জন্য সরাসরি বেস 64 এনকোডড ডেটা ফিল্টার করতে পারেন । আমি বলছি না এটা বাস্তবসম্মত বা করতে একটি যুক্তিসঙ্গত জিনিস, (উপরে এষা এর উত্তর বর্ণিত যেমন হিসাবে) ভাল এবং সহজ বিকল্প অস্তিত্ব দেওয়া, কিন্তু এটা হয় সম্ভব।
কৌশলটি অনুধাবন করা হয় যে বেস 6464 এনকোডিংটি কাঁচা আনইনকোডড ডেটার 3-বাইট ব্লকের বেস 64 অক্ষরের 4-অক্ষর ব্লকগুলিতে নির্ধারিত ম্যাপিং। সুতরাং, যে কোনও সময় আনইনকোডড ডেটাতে 3-বাইট ব্লকের একটি নির্দিষ্ট ক্রম উপস্থিত হবে, 4-অক্ষর ব্লকের একই ক্রমটি এনকোডড সংস্করণে উপস্থিত হবে।
উদাহরণস্বরূপ, আপনি যদি Quanzhoucooway
একটি বেস 64 এনকোডারটিতে স্ট্রিংটি প্রবেশ করেন তবে আপনি আউটপুট পাবেন UXVhbnpob3Vjb293YXk=
। যেহেতু ইনপুটটির দৈর্ঘ্য 3 বাইটের একাধিক নয়, আউটপুটটির শেষে কিছু প্যাডিং রয়েছে তবে আমরা যদি চূড়ান্ত =
লক্ষণগুলি এবং শেষ আসল বেস 64 অক্ষরটি ফেলে রাখি k
(যেহেতু এটি কিছু প্যাডিং বিটগুলিও এনকোড করে), আমরা স্ট্রিংটি পাই UXVhbnpob3Vjb293YX
যে Base64- এনকোডেড তথ্য প্রদর্শিত করতে যখনই বাইট Triplets নিশ্চিত করা হয় Qua
, nzh
, ouc
, oow
এবং আংশিক ত্রয়ী ay
, যাতে ইনপুট প্রদর্শিত হয়।
তবে, অবশ্যই, স্ট্রিংটি Quanzhoucooway
ট্রিপলেট সীমানায় ঠিক না শুরু হতে পারে। উদাহরণস্বরূপ, যদি আমরা XQuanzhoucooway
পরিবর্তে স্ট্রিংটি এনকোড করি তবে আমরা আউটপুটটি পাই WFF1YW56aG91Y29vd2F5
যা সম্পূর্ণ ভিন্ন looks এবার, ইনপুট দৈর্ঘ্যটি তিনটি দ্বারা বিভাজ্য, সুতরাং শেষে কোন প্যাডিং অক্ষর বাতিল করতে হবে না, তবে আমাদের প্রথম দুটি অক্ষর ( WF
) দুটি ফেলে দিতে হবে যা প্রতিটি প্রিপেন্ডেড X
বাইট থেকে কিছু বিট এনকোড করে আমাদের সাথে রেখে দেয় F1YW56aG91Y29vd2F5
।
অবশেষে, বেস 64 এনকোডিং XXQuanzhoucooway
আউটপুট দেয় WFhRdWFuemhvdWNvb3dheQ==
, যার উভয় প্রান্তে প্যাডিং রয়েছে। প্রথম তিনটি অক্ষর WFh
(যা XX
উপসর্গটি এনকোড করে ) এবং শেষ তিনটি অক্ষর Q==
(যা শেষে শূন্য বিট প্যাডিংকে এনকোড করে ) সরানো হচ্ছে , আমরা স্ট্রিংটি রেখে চলেছি RdWFuemhvdWNvb3dhe
। সুতরাং, আমরা নিম্নলিখিত তিনটি বেস 64-এনকোডযুক্ত স্ট্রিংগুলি পেয়েছি:
UXVhbnpob3Vjb293YX
F1YW56aG91Y29vd2F5
RdWFuemhvdWNvb3dhe
যার মধ্যে (কমপক্ষে) একটি অবশ্যই শব্দ অন্তর্ভুক্ত যে কোনও ইনপুট স্ট্রিংয়ের বেস 64 এনকোডড ফর্মটিতে উপস্থিত হবে Quanzhoucooway
।
অবশ্যই আপনি যদি দুর্ভাগ্য হন তবে বেস 64 টি এনকোডার কোনও দুটি এনকোডড ট্রিপল্টের মধ্যে তাদের মাঝখানে একটি লাইন ব্রেক সন্নিবেশ করিয়ে দিতে পারে। (আপনার উদাহরণ বার্তায়, উদাহরণস্বরূপ, F1YW56
এবং এর মধ্যে একটি রয়েছে aG91Y29vd2F5
)) সুতরাং, নির্ভরযোগ্যভাবে এই স্ট্রিংগুলিকে রিজেক্সপসের সাথে মেলাতে আপনার নিম্নলিখিতগুলির মতো কিছু প্রয়োজন (পিসিআরই সিনট্যাক্স ব্যবহার করে):
/UXVh\s*bnpo\s*b3Vj\s*b293\s*YX/ DISCARD
/F1\s*YW56\s*aG91\s*Y29v\s*d2F5/ DISCARD
/R\s*dWFu\s*emhv\s*dWNv\s*b3dh\s*e/ DISCARD
এই নিদর্শনগুলি হাতে হাতে তৈরি করা এক ধরণের বিরক্তিকর, তবে আপনার পছন্দসই প্রোগ্রামিং ভাষায় এটি করার জন্য একটি সহজ স্ক্রিপ্ট লেখা শক্ত হবে না, যতক্ষণ না এটি বেস 64৪ এনকোডার সরবরাহ করে।
আপনি যদি সত্যিই চেয়েছিলেন, আপনি এমনকি বেসওয়ার্ডের ছোট ছোট এবং বড় হাতের অক্ষর উভয়কেই এনওয়ার্ড করে কেস-সংবেদনশীল মিলটি প্রয়োগ করতে পেরেছিলেন এবং তাদের কোনও সংমিশ্রনের সাথে মিলে এমন একটি রেজিএক্সএক্সে সংযুক্ত করে। উদাহরণস্বরূপ, এর করুন Base64- এনকোডিং quanzhoucooway
হয় cXVhbnpob3Vjb293YXk=
যখন যে QUANZHOUCOOWAY
হয় UVVBTlpIT1VDT09XQVk=
, নিয়ম তাই হয়:
/[cU][XV]V[hB]\s*[bT][nl]p[oI]\s*[bT][31]V[jD]\s*[bT][20]9[3X]\s*[YQ][XV]/ DISCARD
বেস 64 এর এনকোডড শব্দের সাথে "কোয়ানজুউকোয়া" কোনও ক্ষেত্রেই মিলবে, তবে শর্ত থাকে যে এটি ট্রিপল সীমানায় শুরু হয়। স্থানান্তরিত সংস্করণগুলির জন্য অন্য দুটি সম্পর্কিত রেজেক্সপগুলি তৈরি করা অনুশীলন হিসাবে ছেড়ে যায়। ;)
হায়, এ জাতীয় সরল স্ট্রিংয়ের মিলের চেয়ে আরও জটিল কিছু করা দ্রুত অযৌক্তিক হয়ে ওঠে। তবে কমপক্ষে এটি একটি ঝরঝরে কৌশল। নীতিগতভাবে, এটি এমনকি কার্যকর হতে পারে, যদি আপনি কোনও কারণে স্প্যামআস্যাসিন বা অন্য কোনও ফিল্টার ব্যবহার করতে না পারেন যা ফিল্টারিংয়ের আগে বেস 64৪ এনকোডিংটি ডিকোড করতে পারে। তবে আপনি যদি এটি করতে পারেন তবে হ্যাক ব্যবহারের পরিবর্তে এটি অবশ্যই করা উচিত।