خود تصدیق کریں

signed by Lollyverify-yourself.htmlHTMLAI generatedgenerated by Geminiخود جانچیںGet the signed filepixels, not shapes10 KB

Lolly کے privacy اور security صفحات دعوے کرتے ہیں: کوئی analytics نہیں، کوئی tracking نہیں، فائلیں کبھی device سے باہر نہیں جاتیں، پورے سسٹم میں ایک cookie۔ یہ صفحہ مختلف ہے: یہ آپ سے ان میں سے کسی بات پر یقین کرنے کو نہیں کہتا۔ یہ طریقہ کار کی ایک فہرست ہے، ہر ایک کے ساتھ عین command یا click-path اور وہ نتیجہ جو آپ کو نظر آئے گا۔ یہاں ہر دعویٰ منٹوں میں جانچا جا سکتا ہے، اکثر بغیر کچھ انسٹال کیے۔

اگر اس صفحے پر کوئی چیک وہ نتیجہ نہیں دیتا جو دکھایا گیا ہے، تو یہ یا تو ایک bug ہے یا ٹوٹا ہوا وعدہ۔ اسے رپورٹ کریں دونوں صورتوں میں، اور ہم اسے اس شدت سے دیکھیں گے جو ایک ٹوٹے ہوئے وعدے کی مستحق ہے۔

اسے کام کرتے دیکھیں، دس سیکنڈ میں

طریقہ کار سے پہلے، نتیجہ۔ /verify کھولیں اور اس پر ایک فائل ڈالیں - نہ کوئی upload، نہ account، نہ کسی server کا انتظار۔ یہاں یہ ہمارے AI stance صفحے سے generated Queensland طوفان کو چیک کر رہا ہے: ایک Gemini تصویر جسے Lolly نے کھولا، resize کیا اور export کیا۔ نیچے ہر badge device پر ہی، فائل کے اپنے bytes سے حساب کیا گیا۔

Verify on a phone-width screen - the storm image, a green Made with Lolly verdict and the credential-intact and bytes-unchanged badges stacked beneath itsigned by Lollyvector SVGAI generatedخود جانچیںGet the signed file147 paths~9.4k nodes72 groups2 images254 KBVerify on a phone-width screen - the storm image, a green Made with Lolly verdict and the credential-intact and bytes-unchanged badges stacked beneath itsigned by Lollyvector SVGAI generatedخود جانچیںGet the signed file147 paths~9.4k nodes72 groups2 images254 KB

نتیجہ ایک badge نہیں بلکہ ان کا ایک چھوٹا ڈھیر ہے، ہر ایک ایک آزاد حقیقت:

اور پوری تاریخ فائل کے ساتھ سفر کرتی ہے۔ یہاں نو مراحل موجود ہیں - پانچ جو Google نے تصویر بناتے اور watermark کرتے وقت ریکارڈ کیے، پھر چار جو Lolly نے اس صفحے پر کاپی کھولتے، نشان زد کرتے اور بدلتے وقت ریکارڈ کیے - سیدھے bytes سے، آپ کے device پر، واپس پڑھے اور ایک ٹائم لائن کے طور پر پیش کیے گئے۔ یہ وہی تصویر ہے، اسی طرح تصدیق شدہ، جیسے AI stance صفحے پر C2PA ٹائم لائن میں۔

The change history Verify reads back out of the storm image - five steps recorded by Google, then four by Lolly, ending in the WebP on this pagesigned by Lollyvector SVGخود جانچیںGet the signed file71 paths~8.9k nodes78 groups111 KBThe change history Verify reads back out of the storm image - five steps recorded by Google, then four by Lolly, ending in the WebP on this pagesigned by Lollyvector SVGخود جانچیںGet the signed file71 paths~8.9k nodes78 groups111 KB

تاہم ان میں سے کوئی بھی اعتماد کا دعویٰ نہیں ہے - یہ صرف ڈیمو ہے۔ اس صفحے کا باقی حصہ اعتماد کا دعویٰ ہے: اوپر دیا گیا ہر بیج قابلِ تکرار ہے، اور یہاں یہ ہے کہ آپ ان کے پیچھے موجود ضمانتوں کو کیسے دوبارہ ثابت کر سکتے ہیں۔

آپ کے براؤزر میں، کسی ٹول کی ضرورت نہیں

1. نیٹ ورک دیکھیں۔ lolly.tools کھولیں، اپنے براؤزر کا DevTools (F12) کھولیں، Network ٹیب پر جائیں اور کوئی ٹول استعمال کریں - QR Code میں کوئی URL ٹائپ کریں، رنگ تبدیل کریں، PNG ایکسپورٹ کریں۔ ہر درخواست lolly.tools پر ہی رہتی ہے: ایپ شیل، ٹول کی اپنی فائلیں، کیٹلاگ اثاثے۔ نہ کوئی اینالیٹکس ہوسٹ، نہ CDN بیکن، نہ فونٹ سروس، نہ "error reporting" اینڈ پوائنٹ۔ آپ ٹول میں جو کچھ ٹائپ کرتے ہیں وہ کسی بھی درخواست میں شامل نہیں ہوتا - رینڈرنگ مقامی طور پر ہوتی ہے۔

دیانت دار مستثنیات - ہر ایک اختیاری، صارف کی جانب سے شروع کردہ اور وقوع پذیر ہوتے وقت اسی Network ٹیب میں نظر آنے والی: برانڈ ایڈیٹر میں Google Font شامل کرنا اس ایک فیملی کو گوگل سے حاصل کرتا ہے، ایک رضامندی کے ڈائیلاگ کے بعد جو پہلی درخواست سے پہلے، ایک بار، بالکل یہی بتاتا ہے؛ ICC press-profile preset پر کلک کرنے سے وہ پروفائل color.org پر ICC کی عوامی رجسٹری سے حاصل کی جاتی ہے؛ اختیاری بلٹ اِن ریڈیو چلانے سے اسٹیشن سے سٹریمنگ ہوتی ہے؛ Meeting Planner میں کوئی مقام درج کرنے سے وہ جگہ open-meteo کی جیو کوڈنگ سروس سے اس کے احداثیات اور ٹائم زون کے لیے تلاش کی جاتی ہے، فی شہر ایک بار (جوابات آپ کے آلے پر محفوظ ہو جاتے ہیں)، اور یہ افشا انہی جگہ ظاہر ہوتا ہے جہاں آپ ٹائپ کرتے ہیں؛ اور URL Screenshot لازمی طور پر وہ URL لوڈ کرتا ہے جو آپ نے ٹائپ کیا - یہی اس کا کام ہے، اور آپ اسے ہوتے ہوئے دیکھتے ہیں۔ جو ٹول نیٹ ورک صلاحیت کا اعلان کرتا ہے وہ صرف انہی ہوسٹس سے ڈیٹا حاصل کر سکتا ہے جو اس کے مینی فیسٹ میں اجازت یافتہ ہوں، اور یہ میکانزم fail-closed ہے؛ فی الحال شپ ہونے والا کوئی بھی ٹول اس کا اعلان نہیں کرتا، چنانچہ براؤزر کی نافذ کردہ Content-Security-Policy وہ حد ہے جو اوپر دی گئی فہرست کو واقعی انہی ہوسٹس تک محدود رکھتی ہے۔ privacy policy ان تمام کی معیاری جدول رکھتی ہے؛ اس کا مستقل اصول یہ ہے کہ جو نیٹ ورک رابطہ اس جدول میں نہیں وہ ہوتا ہی نہیں۔

2. پلگ نکال دیں۔ ایپ لوڈ کریں اور ایک یا دو ٹول کھولیں، پھر آف لائن ہو جائیں - ہوائی جہاز موڈ، یا DevTools → Network → Offline۔ دوبارہ لوڈ کریں۔ گیلری اور آپ کے کھولے گئے ہر ٹول کام کرتے رہتے ہیں، بشمول ان فارمیٹس میں رینڈرنگ اور ایکسپورٹ جو آپ نے استعمال کیے تھے - کسی ٹول کی فائلیں اور کسی فارمیٹ کا اینکوڈر پہلی بار استعمال کرنے پر کیش ہو جاتے ہیں، اس لیے آف لائن ٹیسٹ کرنے سے پہلے ٹول کو ایک بار آن لائن چلائیں۔ یہ اس صفحے کی سب سے مضبوط اکیلی جانچ ہے: وہ سافٹ ویئر جو گھر واپس رابطہ کرتا ہے وہ اپنی تار کٹنے پر زندہ نہیں رہتا۔

3. کوکیز گنیں۔ DevTools → Application (Firefox: Storage) → Cookies → https://lolly.tools۔ فہرست خالی ہے - ایپ کوئی کوکی سیٹ نہیں کرتی۔ یا کنسول میں document.cookie پیسٹ کریں: آپ کو "" ملے گا۔ (پورے سسٹم میں موجود واحد کوکی، lolly_ca_state، ایک اختیاری شناختی سائن اِن کے دوران زیادہ سے زیادہ دس منٹ رہتی ہے - سائن اِن مکمل ہوتے ہی حذف ہو جاتی ہے - /api/ca تک محدود ہے اور HttpOnly ہے: privacy policy اسے درست تفصیل سے بیان کرتی ہے۔)

4. اپنا ذخیرہ پڑھیں۔ وہی Application پینل: Lolly جو کچھ بھی رکھتا ہے وہ آپ کے سامنے قابلِ معائنہ ہے - سادہ localStorage کیز کی تقریباً دو درجن اقسام (تھیم، زبان، سائیڈبار چوڑائی، آواز اور ویو کی ترتیبات، نیز عوامی ٹول کیٹلاگ انڈیکس کی ایک کیش شدہ کاپی)، اور IndexedDB میں آپ کی اپنی دستاویزات۔ ہر قدر پڑھی جانے والی سٹرنگ یا JSON ہے - کچھ بھی مبہم نہیں کیا گیا، کچھ بھی پڑھنے سے روکنے کے لیے اینکوڈ نہیں کیا گیا۔ Profile → Clear all my data اسے مٹا دیتا ہے؛ براؤزر میں سائٹ ڈیٹا صاف کرنے سے بھی یہی ہوتا ہے، کیونکہ اس سے بچنے کے لیے کوئی سرور سائیڈ کاپی موجود ہی نہیں۔

5. تصدیق کریں کہ افشا رابطہ موجود ہے۔ /.well-known/security.txt ایک HTML صفحہ نہیں بلکہ RFC 9116 رابطہ بلاک کے ساتھ جواب دیتا ہے۔

ٹرمینل سے

6. رینڈر اینڈ پوائنٹ lolly.tools پر بند ہے۔ سرور کی وہ واحد خصوصیت جو صارف کے ٹائپ کردہ ان پٹس کو URL میں شامل کر دیتی - hot-link renders - یہاں اس وقت تک غیر فعال ہے جب تک سروس تنظیم کی اپنی ملکیتی ہوسٹنگ پر منتقل نہیں ہوتی (privacy policy اس کی وجہ بیان کرتی ہے):

curl -s -o /dev/null -w '%{http_code}\n' 'https://lolly.tools/tool/qr-code.svg?url=test'
# 404

یہ سوئچ فی تعیناتی (per-deployment) ہے (LOLLY_DISABLE_RENDER_GET=1): lolly.art پر، جو عوامی ڈیمو انسٹینس ہے، hot-link renders جان بوجھ کر فعال رکھے گئے ہیں، اس لیے وہاں وہی جانچ ایک تصویر لوٹاتی ہے - یہ فرق فلیگ کے کام کرنے کی علامت ہے، نہ کہ کوئی تضاد۔

7. سرور کی سطح شمار کی جا سکتی ہے۔ Server Surface موجود ہر سرور سائیڈ روٹ کی فہرست دیتا ہے، اس مستقل اصول کے ساتھ کہ جو اینڈ پوائنٹ اس صفحے پر نہیں وہ Lolly کا حصہ نہیں۔ انہیں curl کریں؛ اس کے سوا کچھ اور ملنے کو نہیں۔

سورس کوڈ میں

اوپر بیان کردہ سب کچھ پھر بھی محض دکھاوا ہو سکتا ہے اگر تعینات کردہ کوڈ عوامی کوڈ سے مختلف ہو۔ تو کوڈ چیک کریں - تعیناتی عوامی ریپوزٹری سے بلڈ ہوتی ہے:

git clone --recurse-submodules https://github.com/lolly-tools/lolly.git
cd lolly

8. کہیں بھی کوئی ٹریکر، کوئی اینالیٹکس SDK نہیں۔ شپ ہونے والے کوڈ کو تلاش کریں - انجن، ہر شیل (بشمول براؤزر ایکسٹینشن، Tauri bridge overrides اور سروس ورکر)، سرور فنکشنز اور ٹول پیکس - عام مشتبہ افراد کے لیے:

grep -rn --include='*.ts' --include='*.js' --include='*.mjs' --include='*.html' \
  -e googletagmanager -e google-analytics -e posthog -e mixpanel -e hotjar \
  -e sentry.io -e segment.com -e '@vercel/analytics' \
  engine/src shells/*/src shells/chrome-extension shells/*/bridge-overrides \
  shells/web/public/sw.js services packages api community brands/*/tools
# (no output)

9. کوئی تھرڈ پارٹی DNS ریزولور نہیں۔ Verify کی SEAL جانچ کبھی بھی لُک اپس کو DNS-over-HTTPS فراہم کنندہ کے ذریعے نہیں بھیجتی - ویب ایپ میں سرے سے کوئی ریزولور موجود ہی نہیں:

grep -rn --include='*.ts' --include='*.js' --include='*.mjs' \
  -e cloudflare-dns.com -e dns.google -e /dns-query \
  engine/src shells/*/src shells/chrome-extension shells/*/bridge-overrides \
  shells/web/public/sw.js services packages api community brands/*/tools
# (no output: outside this page and its built copies, the only place those
#  hostnames appear in the repo is tests/no-trackers.test.ts, the test that
#  bans them)

10. سرٹیفکیٹ سروس کچھ بھی محفوظ نہیں رکھتی۔ شناختی CA کا کوئی اجرائی لاگ نہیں - نہ آپ کا ای میل، نہ کوئی ٹائم اسٹیمپ، نہ کوئی ویب ہک۔ یہ غیر موجودگی grep کے ذریعے تصدیق کی جا سکتی ہے:

grep -rn logIssuance services/ca api/ca
# (no output)

وعدوں سے نہیں، ٹیسٹس سے نافذ

اوپر دی گئی تینوں سورس جانچیں کوئی یک بارگی آڈٹ نہیں ہیں - وہ ٹیسٹ سویٹ میں پن کی گئی ہیں، اس لیے وہ خاموشی سے زائل نہیں ہو سکتیں۔ tests/no-trackers.test.ts بلڈ کو ناکام کر دیتا ہے اگر:

انہیں اپنے کلون میں خود چلائیں (Node 22.18+؛ اس فائل کے لیے npm install کی ضرورت نہیں):

node --test tests/no-trackers.test.ts
# ✔ no analytics or tracking SDK appears anywhere in shipped source
# ✔ no third-party DNS-over-HTTPS resolver is contacted
# ✔ the certificate service logs no personal data
# ✔ privacy policy states a controller, a legal basis and a right to complain

مکمل سویٹ (npm install && npm test) مزید کئی ہزار ٹیسٹ چلاتی ہے، بشمول وہ مخالفانہ کرپٹوگرافی ٹیسٹس جو Security & Verification میں بیان کیے گئے ہیں۔

جو آپ باہر سے تصدیق نہیں کر سکتے - صاف الفاظ میں

اس جیسا صفحہ اپنی حدود کو واضح طور پر بیان کر کے اعتماد کماتا ہے:

اگر کوئی جانچ ناکام ہو جائے

اس صفحے اور مشاہدہ کردہ رویے کے درمیان کوئی تضاد ایک سیکیورٹی رپورٹ ہے، اور ہم واقعی چاہتے ہیں کہ آپ اسے نہ سنانے کے بجائے سنائیں: fitzy+security@suse.com، کسی بھی lolly-tools repository پر موجود Report a vulnerability بٹن، یا /.well-known/security.txt میں دیا گیا رابطہ۔ ہم آہنگ افشا (coordinated disclosure) اور رپورٹر کریڈٹ مستقل پالیسی ہے - تفصیلات SECURITY.md میں موجود ہیں۔