প্রকল্প সম্পর্কে

SUNGLASSES হলো AI এজেন্টদের জন্য একটি ওপেন-সোর্স, স্থানীয়ভাবে পরিচালিত ইনপুট পরীক্ষামূলক স্তর, যাকে এর README-এ ইনপুট ফায়ারওয়াল বলা হয়েছে। এটি Python ভাষায় লেখা এবং MIT License আওতায় প্রকাশিত। প্রকল্পটি কোনো এজেন্ট কর্তৃক কাজ শুরু করার আগেই বিষয়বস্তু স্ক্যান করে এবং চুপচাপ পরিবর্তন বা বাদ না দিয়ে তা নিয়ে রিপোর্ট দেয়। এটি ছয়টি মিডিয়া প্রকার সমর্থন করে: টেক্সট, ইমেজ, অডিও, ভিডিও, PDF এবং QR/বারকোড। ইমেজ স্ক্যানিংয়ে OCR, EXIF মিটাডাটা এবং গোপন পাঠ্য শনাক্তকরণ ব্যবহৃত হয়; PDF স্ক্যানিং পৃষ্ঠা পাঠ্য, মিটাডাটা এবং অনুবাদের পাঠ্য পড়ে; অডিও ও ভিডিও গভীর স্ক্যানিংয়ে speech-to-text এবং সাবটাইটেল নিষ্কাশন করা হয়। স্ক্যানার মূলত প্যারামিটার ইনজেকশন, ক্রেডেনশিয়াল এক্সফিল্ট্রেশন, কম্যান্ড ইনজেকশন, মেমরি পয়জন, সামাজিক প্রকৌশল এবং Unicode কৌশল, RTL অবফাস্কেশন, লিটস্পিক, Base64 এনকোডিং ও হোমোগ্লাফ প্রতিস্থাপনের মতো কৌশলগুলোর বিরুদ্ধে কাজ করে। SUNGLASSES প্রধানত ইংরেজি ভাষা ভিত্তিক। README-তে বলা হয়েছে পুরো রুলসেট ইংরেজিতেই সম্পূর্ণ; ১৩টি ভাষার প্রতিটিতে মাত্র দুটি নির্দিষ্ট প্যাটার্ন আছে; ৭টি ভাষা শুধুমাত্র কীওয়ার্ড-স্তরের; আর পারস্য ও বাংলা শুধুমাত্র নামের পরিচয়ে তালিকাভুক্ত, কোনো নির্দিষ্ট প্যাটার্ন বা কীওয়ার্ড নেই। ভাষা-নিরপেক্ষ নরমালাইজেশন থাকলেও README স্পষ্টভাবে বলে যে ইংরেজির সমমানের অন্য ভাষাগত ক্ষমতা প্রত্যাশা করা যায় না এবং গভীর ভাষা সমর্থন v0.6+ সংস্করণে থাকতে পারে। ইনস্টলেশন pip ব্যবহার করে করা যায়: `pip install sunglasses` দিয়ে শূন্য নির্ভরতা সহ শুধুমাত্র টেক্সট স্ক্যানিং পাওয়া যায়, আর ইমেজ, PDF, QR কোড, অডিও ও ভিডিওর জন্য `media` বা `all` এক্সট্রা যোগ করতে হয়। CLI-তে `scan`, `check`, `demo`, `info`, `report` কমান্ড আছে। Python API-তে `SunglassesEngine` টেক্সট এবং `SunglassesScanner` মিডিয়া স্ক্যানিংয়ের জন্য সরবরাহ করে। অন্যান্য ইন্টিগ্রেশন সূক্ষ্ম হিসেবে MCP সার্ভার, LangChain, CrewAI, SARIF 2.1.0 আউটপুট CI-এর জন্য এবং ব্রাউজার-ভিত্তিক ডেমো টেক্সট, GitHub রিপোজিটরি ও ইমেজের জন্য রয়েছে। CLI-তে স্পষ্ট এক্সিট-কোড সংবিধান রয়েছে: ০ মানে ইনপুট সম্পূর্ণ পড়া হয়েছে এবং কোনো হুমকি পাওয়া যায়নি; ১ মানে হুমকি পাওয়া গেছে; ২ মানে ব্যবহার বা অপারেশনাল ত্রুটি যেখানে চাহিদা মোতাবেক কিছুই স্ক্যান হয়নি; ৩ মানে অসম্পূর্ণ পরীক্ষা যেখানে পড়া যায়নি এমন অংশ আছে, যেমন আর্কাইভ, অডিও ফাইল যা গভীর স্ক্যান ছাড়া, অথবা আকার সীমা অতিক্রান্ত ইনপুট। অগ্রাধিকার ক্রম হলো ১ > ৩ > ২ > ০। JSON আউটপুটে `threat_found`, `inspection_complete`, `is_clean`, ট্রাঙ্কেশন ও নিষ্কাশন সম্পন্নতা পৃথক করা থাকে। এঞ্জিন ডিফল্টভাবে সর্বোচ্চ ১ MB পড়ে; সীমায় পৌঁছালে `truncated` ও `bytes_scanned` দেখায়, চুপচাপ পরিষ্কার পাਸ নয়। v0.4 ফায়ারওয়াল Claude Code-এর PreToolUse হুকের মাধ্যমে ইনস্টল হয় এবং এটি সর্বোচ্চ চেষ্টাভিত্তিক: ১০ সেকেন্ড টাইমআউট থাকে, টাইমআউট হলে কল অবরুদ্ধ হয় না। এটি MCP টুল ডেসক্রিপ্টর পিন করতে পারে, পরিবর্তন পর্যবেক্ষণ করতে পারে, সার-লাইনে বাইট পাঠানো টুল কলে নির্দিষ্ট ফরম্যাটের গোপন তথ্য অবরুদ্ধ করতে পারে, ইউজার পলিসি ফাইল বলবৎ করতে পারে এবং receipt লিখে কেবল SHA-256 সংরক্ষণ করে, আসল ইনপুট নয়। প্রকল্প নির্ণায়ক তথ্যকে হার্ড-ব্লক করা যায় এবং শনাক্তকরণগুলোকে ইউজারের দিকে তোলার জন্য নির্দেশ করে, স্বয়ংক্রিয় ব্লক করে না। যখন কোনো কল চেক করা হয়নি, তখন এটি খোলা অবস্থায় ব্যর্থ হয় ও রেকর্ড করে। README স্পষ্ট সীমা উল্লেখ করে: ডেসক্রিপ্টর পিনিং লাইভ নয়; হুকে টুল কলের পাঠ্য দেখা যায়, কিন্তু তার পিছনের ফাইল নয়; ইন্টারপ্রিটার বা সকেট এক-লাইনার মাধ্যমে egress লুকানো যেতে পারে; আর WARN লেন ডিফল্টভাবে বন্ধ থাকে। প্রকাশিত কার্যকরিতা ও ব্যাঞ্চমার্ক ফলাফল বলছে ১,৫৪০টি প্যাটার্ন, ৬,৯৩১টি অনন্য কীওয়ার্ড, ১১৮টি আক্রমণ বিভাগ, ১৭টি নরমালাইজেশন কৌশল এবং ভেতরের রিকল ৬৪/৬৪। README ব্যাঞ্চমার্ক ৩৮টি বাস্তব এজেন্ট-ইনপুট আক্রমণ এবং ৭৬টি পরিচিত ওপেন-সোর্স README-কে নেগেটিভ হিসেবে ব্যবহার করে precision 86.1%, recall 97.4%, F1 0.914, ৩০/৩০ পরিচিত আকারের আক্রমণ ধরা পড়েছে এবং ৭/৮ নতুন-সেম্যান্টিক প্যারাফ্রেজ ধরা পড়েছে। জানা একমাত্র মিস হলো একটি শেল-ইনস্টল পাইপ লাইন যা পরিষ্কার README-তেও থাকে, এবং টেস্ট এটি ফ্ল্যাগ করে না। ল্যাটেন্সি প্রায় ০.৭ ms শর্ট ইনপুট, ৪.২ ms টাইপিক্যাল আক্রমণ স্ট্রিং, ৩১১ ms রিয়েল README, আর ২৬ KB/s সিংহেল-থ্রেডে স্থায়ী থ্রুপুট। README বলে এগুলো রিপোজিটরি-ভেতরের কর্পাস থেকে পুনরুৎপাদনযোগ্য এবং হার্ডওয়্যার ভিন্ন হতে পারে। গভীর অডিও ও ভিডিও স্ক্যানিং Whisper ও FFmpeg দাবি করে, আর এই মিডিয়া স্ক্যানগুলো পরীক্ষামূলক হিসেবে চিহ্নিত করা হয়। স্ক্যানিং সম্পূর্ণরূপে স্থানীয়ভাবে চলে; README দাবি করে কোনো ক্লাউড, কোনো API কি নয়, কোনো টেলিমেট্রি নয়। স্ট্যাটিক স্ক্যানার স্ক্যান করা বিষয়বস্তু চালনা করে না; pin কমান্ড consent না নিলে MCP সার্ভার চালু করে না, আর consent ছাড়া অ্যাকাউন্টেন্স ছাড়াই প্রত্যাখ্যান করে। প্রকল্পকে স্থানীয় ফাউন্ডেশন স্তর হিসেবে উপস্থাপন করা হয়েছে, যা একা অথবা ক্লাউড গার্ডরেইল টুলের সাথে ব্যবহার করা যায়।