انپیج فائل فارمیٹ پر تحقیق

پاک انپیج کنورٹر کی نئی اپ ڈیٹ آچکی ہے جس سے آپ کاپی پیسٹ کے ذریعے بھی کنورٹ کر سکتے ہیں‌،انپیج ٹو یونیکوڈ اور یونیکوڈ ٹو انپیج آپ نئی فائل یہاں سے ڈاونلوڈ کر سکتے ہیں یہاں ہم انپیج کی فارمیٹنگ پر بات کریں گے۔

ذرا اس کو دیکھیں اور اس کو سمجھنے کو کوشش کریں :eek:
:127:0:0:226:127:0:0:0:0:227:127:64:31:0:0:229:127:0:0:0:0:230:127:7:0:0:0:
78:111:114:109:97:108: Normal
0:231:127:
1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:
122:1:0:0:
78:111:111:114:105:32:78:97:115:116:97:108:105:113: NooriNastaliq
0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:
95:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:
65:97:115:97:97:114:0:98:101:114:115:0:66:111:108:100: Aasaar bers Bold
0:0:1:2:3:0:2:2:0:0:3:2:100:0:4:2:
95:2:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:
65:107:114:97:109: Akram
0:114:97:98:105:99:0:116:101:114:0:232:100:221:2:16:2:22:0:17:2:10:0:18:2:0:0:
95:2:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:
65:114:105:97:108: Arial
0:190:2:0:188:99:115:0:0:196:0:221:2:232:100:221:2:144:1:3:127:0:0:4:127:0:0:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:
83:105:109:112:108:105:102:105:101:100:32:65:114:97:98:105:99: SimplifiedArabic
0:0:0:0:0:131:127:0:0:0:0:132:127:1:0:178:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:
90:111:104:97:114:83:105:110:100:104:105: ZoharSindhi
0:221:2:232:100:221:2:1:0:142:127:0:0:0:0:143:127:0:0:0:0:
96:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:
65:115:119:97:100:0:114:97:98:105:99:32:66:111:108:100: Aswad rabicBold
0:
97:32:70:111:110:116:111:103:114:97:112:104:101:114:32: aFontographer
95:2:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:
ٹیکسٹ کا آغاز ہو رہا ہے 1:0:0:0:13:0:0:0:0:0:
پہلا پراگراف 3:0:0:0:4:203:13:
دوسرا پراگراف3:0:0:0:4:203:13:
تیسرا پیراگراف 3:0:0:0:4:203:13:
چوتھا پراگراف 3:0:0:0:4:203:13:
ٹیکسٹ فائل کا اختتام 0:0:0:0:0:255:255:255:255:​

یہ ایک انپیج کی فائل کو پڑھ کر جو ویلیوز ہمیں‌مل رہی ہیں اس کا ایک چھوٹا سا لیکن اہم حصہ ہے ( ٹوٹل تو ان کی تعداد تقریبا 10000 ہے ;) ایک صفحہ میں ) فائل چھوٹی سی ہے جس میں چار حروف ہیں‌صرف اور ہر حرف الگ پیرا گراف میں‌ہے،اور حرف ایک ہی ہے "للہ" جس کی ویلیو 203 اور 4 کے بعد دیکھائی دے رہا ہے۔ اس سے پہلے 3000 پیراگراف کی نشانی ہےجو کہ تبدیل بھی ہوتی رہتی ہے۔لیکن اس فائل میں سب ایک ہی نظر آرہی ہیں۔ اور " : " ایک ویلیو کو دوسری سے الگ کر رہی ہے جو کہ میں‌نے پروگرام کے ذریعے خود سے ڈالا ہے ۔ باقی انگلش یا اردو میں جو سرخ کلر میں نظر آرہا ہے وہ میں نے وضاحت کیلیے خود سے ڈالا ہے۔
اب فائل میں تبدیلی کر کے اس تبدیلی کو نوٹ کرنا پڑے گا۔کہ کہاں کہاں اور کیسے کیسے تبدیلیاں واقع ہو رہی ہیں

السلام علیکم،
یہ بات نہایت خوش آئند ہے کہ ابرار نے انپیج کی فائل فارمیٹ کے بارے میں تحقیق کا آغاز کر دیا ہے۔ میرے خیال میں پیراگراف کا پتا لگانا تو نسبتاً آسان ہے کہ جہاں لائن کے آخر میں اینٹر اور لائن فیڈ ملے وہاں نیا پیرا گراف شروع ہوگا۔ اصل چیلنج ٹیکسٹ کے ساتھ اس کے فارمیٹنگ اٹریبیوٹس کا پتا چلانا ہوگا، یعنی کہ کسی عبارت پر کونسا فونٹ سٹائل ، فونٹ سائز، فونٹ کلر وغیرہ اپلائی ہوئے ہوئے ہیں۔ اس کے علاوہ ایک اور چیلنج ٹیکسٹ باکسز کی پراپرٹیز کا پتا چلانا بھی ہے۔ میں ابرار حسین سے درخواست کروں گا کہ اس موضوع پر گفتگو کے لیے ایک نیا تھریڈ شروع کر لیں تاکہ اس کے نتائج سے بہتر فائدہ اٹھایا جا سکے۔ میرے خیال میں انپیج ڈاکومنٹ کی فارمیٹ کو ریورس انجینیر کرنے کا کام بھی زیادہ لوگوں کو مل کر کرنا چاہیے۔ اگر ایک مرتبہ لوگوں کو کچھ گائیڈلائن مل جائے کہ کس طرح ہیکس ایڈیٹر یا دوسرے ٹولز کا استعمال کرکے انپیج ڈاکومنٹ سے مختلف معلومات اخذ کی جا سکتی ہیں تو اس طرح زیادہ لوگ اس کام میں شریک ہو سکیں گے ۔ ایک مرتبہ اس سمت میں کافی خاطر خواہ معلومات اکٹھی ہو جاتی ہیں تو انپیج ڈاکومنٹس کو ورڈ ڈاکومنٹس میں کنورٹ کرنا آسان ہو جائے گا۔
اب نبیل بھائی ہیکس ایڈیٹر اور دوسرے ٹولز متعارف کروائیں تاکہ ہم جلدی اسے سمجھ سکیں :grin:

اور وہ فائل یہ ہے
 

سعادت

تکنیکی معاون
میں نے اپنی پچھلی پوسٹ میں ان پیج کے فارمیٹ کے بارے میں کی جانے والی سرسری سی تحقیق کے نتائج لکھے تھے۔ انہیں ایک بار پھر کچھ اضافے کے ساتھ دہرا دیتا ہوں۔

ان پیج "اسٹرکچرڈ اسٹوریج" نامی ایک کنٹینر فائل فارمیٹ کو استعمال کرتا ہے۔ اس فارمیٹ میں ڈیٹا کو ایک یا ایک سے زائد "اسٹریمز" (streams) میں محفوظ کیا جاتا ہے، اور یہ اسٹریمز کسی "اسٹوریج" (storage) کے اندر محفوظ ہوتی ہیں۔ کسی بھی اسٹرکچرڈ اسٹوریج فائل کو ہم ایک چھوٹے سے فائل سسٹم کے ساتھ تشبیہہ سے سکتے ہیں: "اسٹوریجز" فائل سسٹم کی ڈائریکٹریز کے طور پر کام کرتے ہیں، اور "اسٹریمز" فائلوں کے طور پر۔ اب یہ استعمال کرنے والے کی مرضی اور ضروریات پر منحصر ہے کہ وہ ایک اسٹریم کے اندر اپنے ڈیٹا کو کس طریقے یا فارمیٹ میں محفوظ کرتا ہے۔

اب آتے ہیں ان پیج کی طرف۔

ان پیج ۳ سے سابقہ ورژن کی فائیلز میں دو اسٹریمز ہوتی ہیں: DocumentInfo اور InPage100۔ (ہو سکتا ہے کہ بہت زیادہ حجم رکھنے والی فائلز میں اور بھی اسٹریمز موجود ہوں، لیکن میرے پاس چونکہ ان پیج کی کوئی ضخیم فائل موجود نہیں، اس لیے کچھ کہہ نہیں سکتا۔) DocumentInfo میں کمپیوٹر کے یوزر نیم کے علاوہ اور کچھ نہیں ہوتا -- کم از کم مجھے اپنی فائلز میں اور کچھ نظر نہیں آیا۔ InPage100 البتہ کافی دلچسپ ہے۔ اس میں فائل کا متن اور فانٹس وغیرہ کی تفصیلات (جو ابرار نے اوپر فراہم کی ہیں) موجود ہوتی ہیں۔ اسی اسٹریم میں موجود ڈیٹا کو ریورس انجینیئر کر کے ہم ان پیج کے فارمیٹ کو کھنگال سکتے ہیں۔
 

سعادت

تکنیکی معاون
اب ذرا ہیکس ایڈیٹرز کی بات ہو جائے۔

ہیکس ایڈیٹر (hex editor) ایک ایسا پروگرام ہوتا ہے جس کے ذریعے بائنری کمپیوٹر فائلز کے ساتھ چھیڑ چھاڑ کی جاتی ہے۔ :) یہ پروگرام ایک بائنری فائل کے اندر موجود تمام بائٹس کو دکھانے کی صلاحیت رکھتا ہے۔ کسی بھی بائنری فائل کو صحیح طور پر استعمال کرنے کے لیے اس سے منسلک کسی پروگرام یا سافٹوئیر کی ضرورت ہوتی ہے، جیسے کسی JPEG image کو دیکھنے کی لیے کوئی image viewer، اور ان پیج کی فائل کو پڑھنے اور استعمال کرنے کی لیے ان پیج۔ لیکن ایک ہیکس ایڈیٹر آپ کے سامنے اُس JPEG image یا ان پیج فائل کی raw bytes کو کھول کر رکھ دیتا ہے۔ اس طرح آپ اپنے مقاصد کے لیے اُن بائٹس کا مطالعہ کر سکتے ہیں۔ جیسا کہ نام سے ظاہر ہے، تمام بائٹس کی ویلیو hexadecimal میں ظاہر کی جاتی ہیں (لیکن کچھ ہیکس ایڈیٹرز binary، octal، اور decimal نیومرل سسٹمز میں بھی ظاہر کرنے کی سہولت دیتے ہیں۔)
 

سعادت

تکنیکی معاون
میں جس ہیکس ایڈیٹر کا ستعمال کرتا ہوں، وہ HxD ہے۔ یہ ہیکس ایڈیٹر نہ صرف فائلز بلکہ کمپیوٹر کی ڈِسکس اور RAM تک کے مطالعے کے لیے استعمال ہو سکتا ہے۔

HxD مفت پروگرام ہے، اور اس ربط سے حاصل کیا جا سکتا ہے: mh-nexus.de/en/hxd
 

سعادت

تکنیکی معاون
ان پیج کی فائلز میں سے کسی بھی اسٹریم کو ایکسٹریکٹ کرنے کے لیے مَیں SSView کا استعمال کرتا ہوں، جو کسی بھی اسٹرکچرڈ اسٹوریج فائل کی اسٹریمز کو دیکھنے کی صلاحیت رکھتا ہے۔ یہ بھی مفت سافٹ وئیر ہے، اور اس کی ویب سائٹ کا ربط یہ ہے: mitec.cz/ssv.html
 

سعادت

تکنیکی معاون
مندرجہ بالا ٹولز کے تفصیلی استعمال کے بارے میں کچھ دیر کے بعد پوسٹ کروں گا۔ مختصراً یہ کہ کسی بھی ان پیج فائل کو SSView میں کھولیے، اُس فائل میں سے InPage100 نامی اسٹریم کو کسی اور فائل میں محفوظ کیجیے، اور پھر اُس نئی فائل کو HxD میں کھول کر لطف اٹھائیے۔ HxD میں دو فائلز کا موازنہ بھی کیا جا سکتا ہے، چنانچہ دو مختلف ان پیج فائلز کی InPage100 اسٹریمز کا تقابل کر کے ان پیج کے فارمیٹ کو سمجھنے کی کوشش کی جا سکتی ہے۔
 

سعادت

تکنیکی معاون
HxD ہیکس ایڈیٹر کا استعمال

نیچے دی گئی تصویر کو دیکھیے۔ یہ HxD کا سکرین شاٹ ہے، جس میں ابرار کی فراہم کی گئی 1ab.inp فائل کھولی گئی ہے۔

hxd.png

فائل کی raw bytes سیاہ رنگ میں دکھائی گئی ہیں۔ آپ نوٹ کریں گے کہ ہر قطار میں 16 بائٹس موجود ہیں، جو کہ اوپر موجود ایک ڈراپ ڈاؤن باکس میں موجود 16 سے بھی ظاہر ہے۔ ہر بائٹ کو hexadecimal میں دکھایا گیا ہے۔ مثال کے طور پر سب سے پہلی بائٹ کی ویلیو D0 ہے، جو decimal میں 208 بنتی ہے۔

ہر قطار کے دائیں ہاتھ پر سولہ بائٹس کا ایک اور مجموعہ بھی ہے، جو ہر بائٹ کی نمائندہ ASCII ویلیو کو ظاہر کر رہا ہے۔ مثلا مَیں نے اس سکرین شاٹ میں چَھٹی بائٹ (B1) کو منتخب کر رکھا ہے، اور اس کی نمائندہ ASCII ویلیو (±) بھی ساتھ ہی منتخب ہو گئی ہے۔ HxD نیچے موجود اسٹیٹَس بار میں منتخب بائٹ کا اول ترین بائٹ سے فاصلہ (offset) بھی دکھا رہا ہے، جو کہ 5 ہے۔ یاد رہے کہ اکثر ہیکس ایڈیٹرز میں گنتی صفر سے شروع ہوتی ہے۔

یہاں ایک بات کی وضاحت ضروری ہے۔ دائیں ہاتھ پر موجود ASCII کے مجموعے میں صرف اُن بائٹس کی ویلیوز ظاہر ہوتی ہیں جن کا ASCII نمائندہ کوئی printable character ہوتا ہے۔ اگر کسی بائٹ کی ویلیو کا ASCII نمائندہ کوئی printable character نہیں ہے، تو اس کی جگہ صرف ایک dot ظاہر ہوتا ہے۔ مثال کے طور پر پہلی قطار میں موجود آخری آٹھ بائٹس کو دیکھیے، ان سب کی ویلیو صفر ہے، اور ASCII میں صفر کا مطلب null character ہوتا ہے، جو printable نہیں ہے۔

کسی بھی بائٹ کا offset آپ ایک اور طریقے سے بھی معلوم کر سکتے ہیں۔ مثلا پانچویں قطار میں موجود FE کو دیکھیے۔ HxD آپ کو اسٹیٹَس بار میں بتا دے گا کہ اس کا آف سیٹ 44 ہے۔ لیکن فرض کیجیے کہ آپ کے پاس یہ اسٹیٹَس بار موجود نہیں ہے۔ ایسی صورت میں آپ بائیں ہاتھ پر دیکھیے، جہاں نیلے رنگ میں ایک کالم موجود ہے۔ پانچویں قطار کے لیے اُس کالم میں ویلیو موجود ہے: 00000040۔ اب جس کالم میں FE موجود ہے، اس کے سب سے اوپر نیلے رنگ میں لکھے گئے عدد کو دیکھیے، جو 04 ہے۔ دونوں کو جمع کیجیے: 00000040 + 04 = 00000044 یا صرف 44۔ ایک بات جو ذہن میں رہے، کہ یہ سب کچھ hexadecimal میں ہو رہا ہے۔ نیلے رنگ میں موجود ویلیوز بھی hexadecimal میں ہیں۔ اس 44 کو اگر آپ decimal میں تبدیل کرنا چاہیں تو اس کی ویلیو 68 بنے گی۔ یعنی 1ab.inp فائل کی 68th بائٹ کی ویلیو FE ہے۔

یہ ہے ہیکس ایڈیٹر کا بنیادی استعمال، جس کے ذریعے آپ مختلف آف سیٹ پر موجود بائٹس کو دیکھ سکتے ہیں، اور ان کی ویلیوز پڑھنے کے بعد ان کے استعمال کے بارے میں قیاس آرائیاں کر سکتے ہیں۔ HxD کے اندر کسمٹائزیشن کے لیے آپشنز موجود ہیں، جن کو آپ اپنے طور پر ایکسپلور کر سکتے ہیں۔
 

سعادت

تکنیکی معاون
SSView کا استعمال

درج ذیل سکرین شاٹ SSView یا Structured Storage Viewer کا ہے، جس میں وہی 1ab.inp فائل کُھلی ہوئی ہے۔ فائل کی دونوں اسٹریمز، DocumentInfo اور InPage100، ظاہر ہو رہی ہیں۔ کسی بھی اسٹریم کے نام کو ڈبل کلک کریں تو اس کا ہیکس ڈَمپ ظاہر ہوتا ہے۔

ssview-1.png

اب ذرا اگلے سکرین شاٹ کو دیکھیے۔ اس میں InPage100 کا ہیکس ڈَمپ کُھلا ہے، اور منظر کسی ہیکس ایڈیٹر جیسا ہی ہے۔ فرق یہ ہے کہ بائٹس دو دو کے گروپس میں موجود ہیں۔

ssview-2.png

اِس ڈَمپ پر رائٹ کلک کریں تو ایک چھوٹا سا مینو کھلتا ہے جس کے ذریعے آپ اس اسٹریم کو کسی فائل میں محفوظ کر سکتے ہیں۔

اسی طرح مختلف انپیج فائلوں کی اسٹریمز محفوظ کر کے HxD یا کسی اور ہیکس ایڈیٹر میں تفصیلی مطالعے کے لیے کھولی جا سکتی ہیں۔
 

سعادت

تکنیکی معاون
نیچے دیا گیا سکرین شاٹ HxD کا ہے، جس میں دو انپیج فائلز کی InPage100 اسٹریمز کا موازنہ ہو رہا ہے۔ (HxD میں دو فائلز کا موازنہ کرنے کے لیے Ctrl + K دبائیں یا مین مینو میں Analysis -> File-compare -> Compare... منتخب کریں۔) InPage100-pakistan میں موجود متن 'پاکستان۔' ہے، اور InPage100-zindabad میں موجود متن 'زندہ باد۔' ہے۔

hxd-compare.png

آپ نوٹ کر سکتے ہیں کہ آف سیٹ E58 پر موجود بائٹس کی ویلیوز مختلف ہیں۔ InPage100-pakistan میں یہ ویلیو 'پ' کو ظاہر کر رہی ہے، اور InPage100-zindabad میں 'ز' کو۔ انپیج اردو کیریکٹرز کو محفوظ کرتے ہوئے ان کے ساتھ 04 کا اضافہ کر دیتا ہے۔ یعنی 'پ' کے لیے انپیج کی ویلیو ہے: 04 83، اور 'ز' کے لیے انپیج کی ویلیو ہے 04 90۔ شارق بھائی، نبیل بھائی، اور ابرار کے کنورٹرز اس بات کا علم رکھتے ہیں۔

ایک دلچسپ بات: آف سیٹ E53 پر موجود ویلیوز کو دیکھیے۔۔۔

InPage100-pakistan کے لیے وہ ویلیو ہے 11، یعنی decimal میں 17۔
InPage100-zindabad کے لیے وہ ویلیو ہے 13، یعنی decimal میں 19۔

اب ذرا InPage100-pakistan میں آف سیٹ E57 (یعنی 'پ') سے گِننا شروع کیجیے اور آف سیٹ E67 تک گنتے چلے جائیے۔ آپ نے 17 کیریکٹرز گِنے ہوں گے، جو لفظ 'پاکستان' کے حروف، نقطہ، اور 'اینٹر' پر مشتمل ہیں۔ کیا یہی 17، یا اس کا hexadecimal متبادل 11، آف سیٹ E53 پر موجود نہیں ہے؟

اسی طرح InPage100-zindabad میں 19 کیریکٹرز موجود ہیں، جس کا اندراج آف سیٹ E53 پر موجود ہے۔ یعنی ایک سادہ سی انپیج فائل کے اندر موجود کیرکٹرز کی تعداد معلوم کرنی ہو تو یہاں سے دیکھ کر کی جا سکتی ہے۔

اسی طرح کہیں نہ کہیں اس بات کا اندراج بھی ضرور ہو گا کہ متن کے کیریکٹرز کس آف سیٹ سے شروع ہو رہے ہیں۔ پہلے میرا خیال تھا کہ شاید ہر انپیج فائل میں کیریکٹرز کا آغاز ایک ہی آف سیٹ سے ہوتا ہو گا (اور سادہ انپیج فائلز میں ایسا ہی ہے) لیکن کچھ مزید فائلز کو دیکھنے کے بعد میرا یہ خیال غلط ثابت ہوا۔

بہر حال، raw bytes کے ساتھ ٹکریں مار مار کر ان کے اندر چھُپے مطلب کو ڈھونڈنے کا نام ہی ریورس انجینیئرنگ ہے۔ :)
 

نبیل

تکنیکی معاون
شکریہ ابرار کہ آپ نے اس اہم موضوع پر گفتگو کا آغاز کیا۔ میں نے اس تھریڈ کے عنوان میں معمولی سی ترمیم کی ہے۔ دوسرے ٹولز کے بارے میں جو کچھ میں بتانا چاہ رہا تھا، وہ سعادت نے پہلے ہی میرے سے بہت بہتر طریقے سے بتا دیا ہے۔ میں بھی ہیکس ایڈیٹرز اور فائلوں کے ہیکس کمپیریزن کے بارے میں بتانا چاہ رہا تھا۔ مجھے علم نہیں تھا کہ اس مقصد کے لیے کوئی فری ٹول بھی دستیاب ہے۔ یہ معلومات فراہم کرنے کے لیے سعادت کا بہت شکریہ۔

میں شاید کچھ دنوں تک ذاتی مصروفیات کی بنا پر اس موضوع پر تحقیق میں حصہ نہیں لے پاؤں گا، لیکن مجھے یقین ہے کہ آپ دوست اس سمت میں مفید نتائج حاصل کرنے میں کامیاب ہوں گے۔ میری گزارش ہے کہ پہلے مرحلے میں ہی انپیج کے مواد کو کسی فارمیٹ میں آؤٹ پٹ کرنے کی بجائے پہلے ایک ڈاٹ نیٹ لائبریری تیار کر لینی چاہیے جس کے ذریعے کسی بھی انپیج ڈاکومنٹ میں شامل متن کا ٹیکسٹ اور اس ٹیکسٹ پر اپلائی کیے گئے فارمیٹنگ اٹریبیوٹ حاصل ہو جائیں۔ ایک مرتبہ یہ کام ہو جاتا ہے تو اس کے بعد اس پروگرامنگ انٹرفیس کو استعمال کرکے اس مواد کو کسی بھی مطلوبہ فارمیٹ میں آؤٹ پٹ کیا جا سکے گا۔ میرے ذہن میں مجوزہ اے پی آئی سے حاصل ہونے والے آبجیکٹ ماڈل کا ذیل کا خاکہ ہے:

object_model.gif
 

سعادت

تکنیکی معاون
کیا اس جانب مزید تحقیق کی گئی ہے؟

نبیل بھائی، پہاڑ تو کھودا ہے، لیکن ابھی تک صرف چوہا ہی ہاتھ آیا ہے۔

میں نے متن کے فانٹ سائز اور رنگ کے بارے میں دیکھنا شروع کیا تھا۔ اس بات کا تعین تو نہیں کر سکا کہ متن کے جن کیریکٹرز پر فانٹ سائز اور رنگ اپلائی کیے گئے ہوں، ان کا اندراج کہاں ہے، البتہ اس بات کا کھوج لگانے میں کامیابی ہوئی ہے کہ انپیج خود رنگوں اور فانٹ سائز کی معلومات کس طرح محفوظ کرتا ہے۔

انپیج فائل کی InPage100 اسٹریم میں متن کے کیریکٹرز جہاں ختم ہوتے ہیں، اس سے تھوڑا آگے ہی چار بائٹس نظر آتی ہیں جن کی ویلیو FF ہے۔ ان بائٹس سے آگے دیکھیں تو کچھ فاصلے پر ایک بار پھر چار بائٹس کا ایسا مجموعہ آتا ہے جن کی ویلیو FF ہے۔ میری اب تک کی تحقیق کے مطابق رنگ اور فانٹ سائز کی ویلیوز ان کے درمیان محفوظ ہوتی ہیں۔ (میں نے ایسی انپیج فائلز پر تجربے کیے ہیں جو بالکل سادہ ہیں، یعنی کسی قسم کے ٹیکسٹ باکسز وغیرہ ان میں موجود نہیں ہیں۔) نیچے دیے گئے سکرین شاٹ میں مَیں نے انہی بائٹس کو منتخب کر رکھا ہے۔

hxd-color-fontsize.png

یہ سکرین شاٹ جس انپیج فائل کی اسٹریم کو دکھا رہا ہے، اس میں الفاظ "پاکستان زندہ باد" موجود ہیں۔ لفظ "پاکستان" کا رنگ سبز اور فانٹ سائز 36 پوائنٹس ہے، جبکہ "زندہ باد" کا رنگ نیلا اور فانٹ سائز 48 پوائنٹس ہے۔

رنگ
انتہائی سادہ سکیم ہے۔ انپیج مندرجہ ذیل رنگوں کو سپورٹ کرتا ہے، جو کہ اس کے انٹرفیس میں اس ترتیب سے نظر آتے ہیں:
White
Black
Gray
Red
Yellow
Green
Cyan
Blue
Magenta


اسی ترتیب کے ساتھ انپیج نے ان رنگوں کو کوڈ دے رکھے ہیں۔ یعنی:

White = 1
Black = 2
Gray = 3
Red = 4
Yellow = 5
Green = 6
Cyan = 7
Blue = 8
Magenta = 9


آف سیٹ EB0 پر دیکھیے: 7F 06۔ یہ "پاکستان" کا رنگ ہے۔ یہاں 06 سبز کو ظاہر کرتا ہے اور 7F ایسی ویلیو ہے جو انپیج نشاندہی کے لیے استعمال کرتا ہے (کم از کم فی الحال تو یہی معلوم ہوتا ہے)۔

اسی طرح آف سیٹ ECE پر موجود ویلیو "زندہ باد" کا رنگ ظاہر کر رہی ہے۔

فانٹ سائز:
فانٹ کا سائز چار بائٹس میں محفوظ کیا گیا نظر آ رہا ہوتا ہے۔ آف سیٹ EAA پر دیکھیے: 7F 40 19 01 00۔ یہاں 7F تو وہی نشاندہی والی بائٹ ہے، اور اگلی چار بائٹس لفظ "پاکستان" کا فانٹ سائز بتا رہی ہیں، جو 36 پوائنٹس ہے۔ اس کی وضاحت: سب سے پہلی بات تو یہ کہ انپیج فائل فارمیٹ میں کوئی بھی ایسی ویلیو جو ایک سے زیادہ بائٹس پر مشتمل ہو، لٹل اینڈین (little endian) طرز پر محفوظ کی جاتی ہے۔ (اصل میں endianness کی یہ انفارمیشن کمپاؤنڈ ڈاکیومنٹ کے ہیڈر میں موجود ہوتی ہے، جو کہ انپیج کا کنٹینر فارمیٹ ہے۔) چنانچہ یہ بائٹس جب پڑھی جائیں گی تو ان کی ویلیو کچھ یوں بنے گی: 00011940۔ اس کو decimal میں تبدیل کریں تو 72000 بنے گا۔ اس ویلیو کو 2000 پر تقسیم کر دیجیے، فانٹ سائز حاضر ہے۔

اسی طرح آف سیٹ EC8 پر "زندہ باد" کا فانٹ سائز موجود ہے: 7F 00 77 01 00۔ اک مرتبہ پھر 7F کو چھوڑ کر باقی بائٹس کو لٹل اینڈین طرز میں پڑھیے: 00017700، جو decimal میں 96000 ہے، جس کو 2000 پر تقسیم کرنے سے 48 حاصل ہو گا، جو "زندہ باد" کا فانٹ سائز ہے۔

کرنے کے کام:
انپیج فارمیٹ کی بائٹس میں یہ پتہ لگانا کہ رنگ اور فونٹ سائز کی تفصیلات (اگر موجود ہوں تو) متن کے کن کیریکٹرز پر اپلائی ہوتی ہیں، کیونکہ ان کے علم کے بغیر رنگ اور فانٹ سائز کی تفصیلات بے معنی ہیں۔

ایک اہم بات: میں نے یہاں تمام باتیں اسی طرح درج کی ہیں جس طرح میری سمجھ میں آئی ہیں، اور یہ غلط بھی ہو سکتی ہیں۔ اگر آپ دوستوں کے ذہن میں ان بائٹس کی کوئی بہتر تشریح آتی ہے تو ضرور تصحیح کریں۔ :)
 
جہاں سے نئا پراگراف شروع ہوتا ہے وہاں پر ایک آئڈ نٹیٹی ہوتی ہے اسے ٹیکسٹ فائل ختم ہونے کے تھوڑا بعد دیکھیں تو وہ وہاں عام طور پر اسی ترتیب سے آتی جاتی ہے۔اس میں میرے خیال میں پیراگراف کی انفارمیشن ملے گی میں اس میںسے لفٹ الائن اور جسٹیفائی نکال چکا ہوں ، رائٹ تو جو نہ ملے وہ رائٹ ;) لیکن مسلہ یہ ہے کہ رائٹ اور سنٹر ایک جیسا پیٹرن دکھائی دیتا ہے اور جو فرق ایک فائل میں ملتا ہے وہ دوسری میں نہیں‌ہوتا بلکہ دوسری میں ویلیو تبدیل ہو چکی ہوتی ہے عام طور پر۔
پراگراف کی ایک اور نشانی ڈیسمل میں 0 15 248 23 0 0 0 0 0 1 ہر پراگراف کی آئڈنٹی کے بعد تقریبا 18 ویں نمبر کے بعد لازمی آتی ہے اور یہ ویلیو جتنی بار ایک فائل مہں ہو گی اتنے پراگراف اس فائل میں‌ہوں‌گے اس کے بعد 6 سے آٹھ نمبر چھوڑ کر الائنمنٹ کی نشانیاں‌آتی ہیں جو کہ 8،10،12 کی تعداد میں سے ہوسکتی ہیں لیکن ان میں سے لفٹ اور جسٹیفائی کو 6 نمبرز میں آسانی سے پہچانا جا سکتا ہے۔ 0 0 0 0 255 255 لفٹ اور جسٹی فائی 0 0 -- --- 255 255 ڈیش کی جگہ پرکچھ بھی ہوسکتا ہے ،لیکن 0 0 نہ ہو ۔
اور ایک بات اور کہ فونٹ جو ایک فائل میں‌استمال ہوتے ہیں ، ٹیکسٹ سے پہلے ان کے صرف ایک دفعہ نام آتے ہیں خواہ وہ کتنی دفعہ استمال ہوں ان کااستمال بھی امید ہے یہاں ‌سے مل سکتا ہے۔
 
inpagec.jpg

تصویر کے پہلا حصے میں ایک پراگراف کی ایلائنمنٹ کی تبدیلیاں نوٹ کی گئی ہیں پہلی الائنمنٹ سنٹر اور دوسری رائٹ ہے۔
جو فرق نظر آرہے ہیں‌وہ بھی آپ دیکھ سکتے ہیں اور جو تبدیلیاں‌میں‌نے نوٹ کی ہیں وہ آپ کو بتاتا ہوں
جو ڈجٹس ایک جیسے ہیں انہیں چھوڑ دیں اس کے بعد جو پہلا دوڈجٹس کا سیٹ ہے اسے اگر جمع کیا جائے اور دوسرے سیٹ کو جمع کیا جائے تو ویلیو ایک ہی آرہی ہے( ہر دفعہ ) ۔ اور یہی صورت رائٹ الا ئنمنٹ کی بھی ہے اور ایک اور سیٹ اسی کلر میں نیجے نظر آرہا ہوگا انہیں‌ویلیوز کے ساتھ یہ بھی دونوں‌میں‌ایک جیسی ہی ہے مطلب ویلیوز تو الگ الگ رہتی ہیں لیکن ترتیب یہی رہتی ہے ۔ بیچ میں 0 2 اور نیچے 0 5 ہے یہ تبدیل ہوتا رہتا ہے 0 تو تبدیل نہیں‌ہوتا لیکن پہلا ڈجٹ 15 تک میں‌نے دیکھا ہے کچھ بھی ہو سکتا ہے۔ ہوسکتا ہے 15 سے زیادہ بھی ہو۔
لیکن پہلی لائن میں 94 40 تیسرا سیٹ انٹریسٹنگ ہے یہ چھوٹی فائل میں‌تو جو ایک دفعہ سیٹ ہو جائے باقی پوری فائل میں جہاں بھی سنٹر ہو گا یہی ویلیو آئے گی

اور دوسرے حصے میں ایک پراگراف کی انفارمیشن ہے سادہ لکھی ہوئی فائل کی اور نیچے اسی پراگراف میں صرف چندحروف کا کلر چینج کرنے پر اضافی انفارمیشن دکھا رہا ہے۔باقی امید ہے اب سعادت بھائی ان کو الگ کر لیں گے :laughing: اور انپیج جلد ہی :chatterbox:
 

الف نظامی

لائبریرین
شاباش ریورس انجینرو!!
بہت عمدہ diffing
ان پیج کے ایک ہی ورژن پر کام کیا جائے کیونکہ ممکن ہے کہ مختلف ورژنوں میں فائل فارمیٹ میں تبدیلی کی گئی ہو۔
 

سعادت

تکنیکی معاون
شکریہ ابرار۔ میں آپ کی فراہم کردہ معلومات کو ان شاء اللہ اِس ویک اینڈ پر تفصیل سے دیکھوں گا۔ آپ بھی اپنی کوششیں جاری رکھیں۔ امید ہے کہ انپیج کے فارمیٹ کی ایک معقول انڈر سٹینڈنگ جلد ہی سامنے آ جائے گی۔
 

سعادت

تکنیکی معاون
پچھلی پوسٹ میں مَیں نے انپیج کے فارمیٹ میں متن کے رنگوں اور فانٹ سائز کی معلومات کا ذکر کیا تھا۔ اس پوسٹ میں مَیں یہ بیان کر رہا ہوں کہ یہ معلومات متن کے متعلقہ کیریکٹرز پر کس طرح اپلائی ہوتی ہیں۔ (اس بار بھی میں نے جن انپیج فائلز پر تجربات کیے ہیں، وہ بالکل بنیادی فارمیٹنگ میں ہیں۔)

انپیج اردو کے تمام کیریکٹرز کو 2 بائٹس کی ترتیب میں محفوظ کرتا ہے۔ مثال کے طور پر "الف" کی ویلیو 04 81 ہوتی ہے، اور "ب" کی ویلیو 04 82۔ اسی طرح باقی تمام کیریکٹرز کی ویلیوز (بشمول سپیس) کے ساتھ بھی 04 کا اضافہ ہوتا ہے۔ ایک سادہ سی انپیج فائل میں متن کے کیریکٹرز اور ان کی فارمیٹنگ کا اندراج کچھ اس طرح ہوتا ہے:

-- 4 بائٹس: متن کے کیریکٹرز کی کُل تعداد۔ اس تعداد میں اوپر بیان کیا گیا 04 بھی شامل ہوتا ہے۔ مثلا اگر متن میں صرف ایک لفظ "پاکستان" ہو، تو ان چار بائٹس میں موجود ویلیو 14 ہو گی کیونکہ "پاکستان" میں 7 حروف ہیں اور انپیج ہر حرف کے ساتھ 04 کا اضافہ کر رہا ہے۔ (واضح رہے کہ ایک سے زیادہ بائٹس پر مشتمل ویلیو کو لٹل اینڈین طرز میں محفوظ کیا جا رہا ہے۔ ایک اور وضاحت یہ بھی کہ چونکہ اردو کے کیریکٹرز 2 بائٹس کی ترتیب میں محفوظ ہو رہے ہیں، اس لیے ان پر لٹل اینڈین والی اسکیم لاگو نہیں ہو رہی۔)
-- X بائٹس: پچھلی 4 بائٹس میں جو ویلیو موجود ہو گی، اتنی ہی بائٹس یہاں موجود ہوں گی۔ یہ بائٹس متن کے کیریکٹرز پر مشتمل ہوتی ہیں۔
-- 9 بائٹس: 00 00 00 00 00 FF FF FF FF۔ ان کا مقصد شاید نشاندہی کرنا ہے۔
-- 20 بائٹس: 01 00 00 00 0C 00 00 00 01 00 06 00 00 00 80 00 00 00 00 00۔ مقصد نا معلوم۔

اس کے بعد سے دلچسپ بائٹس کا آغاز ہوتا ہے۔۔۔

-- 4 بائٹس: متن کے اُن کیریکٹرز کی تعداد جن پر اگلی بائٹس میں موجود فارمیٹنگ کی تفصیلات لاگو ہوں گی۔
-- 4 بائٹس: اُن اگلی بائٹس کی تعداد جن میں فارمیٹنگ کی تفصیلات موجود ہیں۔ اِن چار بائٹس میں درج ذیل ویلیوز میں سے کوئی ایک ویلیو ہو سکتی ہے۔۔۔
0C 00 00 00 (کوئی فارمیٹنگ نہیں)
10 00 00 00 (صرف رنگ)
12 00 00 00 (صرف فانٹ سائز)
16 00 00 00 (رنگ اور فانٹ سائز دونوں)
-- 12 بائٹس: 01 00 XX 00 00 00 80 00 00 00 00 00۔ مقصد نا معلوم، لیکن یہ بائٹس ہمیشہ موجود ہوتی ہیں۔ (XX کی ویلیو اوپر دیے گئے چار کیسز کے مطابق 06 یا 0A یا 0C یا 10 میں بدلتی رہتی ہے۔ اس کے علاوہ ہو سکتا ہے کہ آخری 6 بائٹس میں حروف کی کرننگ اور کشیدہ وغیرہ کی تفصیلات محفوظ کی جاتی ہوں۔ بہر حال، اصل صورتحال چاہے جو بھی ہو، فی الحال ہم ان بائٹس کو نظر انداز کر سکتے ہیں۔)
-- 4 بائٹس: 07 7F XX XX۔ 07 7F اس بات کو ظاہر کرتی ہیں کہ اگلی 2 بائٹس میں رنگ موجود ہے۔
یا
-- 6 بائٹس: 00 7F XX XX XX XX۔ 00 7F اس بات کو ظاہر کرتی ہیں کہ اگلی 4 بائٹس میں فانٹ سائز موجود ہے۔
یا
-- 10 بائٹس: 00 7F XX XX XX XX 07 7F XX XX۔ فانٹ سائز اور رنگ دونوں کے لیے۔
-- 8 بائٹس: XX XX XX XX FF FF FF FF۔ اِن کا مقصد بھی شاید نشاندہی کرنا ہے۔ (XX اس لیے کیونکہ مختلف فائلز میں یہ ویلیوز مختلف آ رہی ہیں۔)

اوپر بیان کی گئی کہانی کو مثالوں کے بغیر واضح کرنا کافی مشکل ہے، اس لیے نیچے چند مثالیں بھی درج ہیں۔

مثال 1: سادہ متن
نیچے دیے گئے سکرین شاٹ میں مَیں نے اوپر بیان شدہ بائٹس کو منتخب کر رکھا ہے۔ فائل کا متن "اردو کا سبق" ہے، اور اس کی فارمیٹنگ بالکل سادہ ہے۔

format-ex-1.png

-- 4 بائٹس: 17 00 00 00 = 0x17 = 23۔ یعنی متن کے کُل کیریکٹرز 23 ہیں۔ (8 کیریکٹرز "اردو" کے، 2 کیریکٹرز سپیس کے، 4 کیریکٹرز "کا" کے، 2 کیریکٹرز پھر سپیس کے، 6 کیریکٹرز "سبق" کے، اور آخری 1 کیریکٹر 0D کا، جو ASCII میں کیرج ریٹرن (carriage return) کو ظاہر کرتا ہے۔)
-- 23 بائٹس: متن۔
-- 9 بائٹس: 00 00 00 00 00 FF FF FF FF۔
-- 20 بائٹس: 01 00 00 00 0C 00 00 00 01 00 06 00 00 00 80 00 00 00 00 00۔
-- 4 بائٹس: 17 00 00 00 = 0x17 = 23۔ یعنی متن کے 23 کیریکٹرز پر اگلی تفصیلات لاگو ہوں گی۔ (متن میں 23 کیریکٹرز ہی ہیں۔)
-- 4 بائٹس: 0C 00 00 00۔ اگلی 0xC یا 12 بائٹس میں فارمیٹنگ کی تفصیلات موجود ہیں۔ (اس کا مطلب یہ بھی ہے کم از کم رنگ اور فانٹ سائز کی کوئی تفصیل اگلی 12 بائٹس میں موجود نہیں۔)
-- 12 بائٹس: 01 00 06 00 00 00 80 00 00 00 00 00۔ فارمیٹنگ کی تفصیلات۔ جیسا کہ اوپر بیان ہوا، ہم فی الحال انہیں نظر انداز کر سکتے ہیں۔
فارمیٹنگ کی 12 بائٹس اب ختم ہو گئیں، اس لیے۔۔۔
-- 8 بائٹس: 14 00 50 00 FF FF FF FF۔

مثال 2: رنگ
متن ایک مرتبہ پھر "اردو کا سبق" ہے، لیکن سارے متن کا رنگ سرخ ہے۔

format-ex-2.png

-- 4 بائٹس: 17 00 00 00 = 0x17 = 23۔ متن کے کُل کیریکٹرز۔
-- 23 بائٹس: متن۔
-- 9 بائٹس: 00 00 00 00 00 FF FF FF FF۔
-- 20 بائٹس: 01 00 00 00 0C 00 00 00 01 00 06 00 00 00 80 00 00 00 00 00۔
-- 4 بائٹس: 16 00 00 00 = 0x16 = 22۔ متن کے 22 کیریکٹرز پر اگلی تفصیلات لاگو ہوں گی۔ (0D کو چھوڑ کر 22 کیریکٹرز ہی بچتے ہیں جن کا رنگ تبدیل کیا گیا ہے۔)
-- 4 بائٹس: 10 00 00 00۔ اگلی 0x10 یا 16 بائٹس میں فارمیٹنگ کی تفصیلات موجود ہیں۔
-- 12 بائٹس: 01 00 0A 00 00 00 80 00 00 00 00 00۔
-- 4 بائٹس: 07 7F 04 00۔ رنگ۔
فارمیٹنگ کی 16 بائٹس یہاں ختم ہو گئیں۔ ہمارے پاس اب صرف ایک کیریکٹر (0D) رہ گیا ہے، جس کی فارمیٹنگ سادہ ہی ہے، کیونکہ یہ ایک نان پرنٹیبل کیریکٹر ہے۔ اس نان پرنٹیبل کیریکٹر کی سادہ فارمیٹنگ کی تفصیل اگلی 20 بائٹس میں ہے، چنانچہ۔۔۔
-- 4 بائٹس: 01 00 00 00۔ متن کا اگلا ایک کیریکٹر۔
-- 4 بائٹس: 0C 00 00 00۔ اگلی 0xC یا 12 بائٹس میں اس اکلوتے کیریکٹر کی فارمیٹنگ کی تفصیلات درج ہیں۔
-- 12 بائٹس: 01 00 06 00 00 00 80 00 00 00 00 00۔
متن کے تمام کیریکٹرز کی فارمیٹنگ تفصیلات ختم۔
-- 8 بائٹس: 1C EA 12 00 FF FF FF FF۔

مثال 3: فانٹ سائز
متن ایک مرتبہ پھر "اردو کا سبق" ہے، لیکن سارے متن کا فانٹ سائز 36 پوائنٹس ہے۔

format-ex-3.png

-- 4 بائٹس: 17 00 00 00 = 0x17 = 23۔ متن کے کُل کیریکٹرز۔
-- 23 بائٹس: متن۔
-- 9 بائٹس: 00 00 00 00 00 FF FF FF FF۔
-- 20 بائٹس: 01 00 00 00 0C 00 00 00 01 00 06 00 00 00 80 00 00 00 00 00۔
-- 4 بائٹس: 16 00 00 00 = 0x16 = 22۔ متن کے 22 کیریکٹرز پر اگلی تفصیلات لاگو ہوں گی۔ (22 کیریکٹرز ہی کا فانٹ سائز تبدیل کیا گیا ہے۔)
-- 4 بائٹس: 12 00 00 00۔ اگلی 0x12 یا 18 بائٹس میں فارمیٹنگ کی تفصیلات موجود ہیں۔
-- 12 بائٹس: 01 00 0C 00 00 00 80 00 00 00 00 00۔
-- 6 بائٹس: 00 7F 40 19 01 00۔ فانٹ سائز۔ (فارمیٹنگ کی 16 بائٹس یہاں ختم ہو گئیں۔)
-- 20 بائٹس: 01 00 00 00 0C 00 00 00 01 00 06 00 00 00 80 00 00 00 00 00۔ (اکلوتے 0D کیریکٹر کی سادہ فارمیٹنگ کے لیے۔)
-- 8 بائٹس: 27 75 00 00 FF FF FF FF۔

مثال 4: سادہ متن، رنگ، اور فانٹ سائز ایک ساتھ
اب ذرا ایک پیچیدہ مثال لیتے ہیں۔ متن پھر وہی ہے، لیکن "اردو " بالکل سادہ ہے، "کا " کا رنگ سرخ ہے، اور "سبق" کا رنگ نیلا ہے اور فانٹ سائز 36 پوائنٹس۔ ایک اہم بات یہ کہ "اردو" اور "کا" کے آخر میں ایک ایک سپیس بھی شامل ہے۔

format-ex-4.png

-- 4 بائٹس: 17 00 00 00 = 0x17 = 23۔ متن کے کُل کیریکٹرز۔
-- 23 بائٹس: متن۔
-- 9 بائٹس: 00 00 00 00 00 FF FF FF FF۔
-- 20 بائٹس: 01 00 00 00 0C 00 00 00 01 00 06 00 00 00 80 00 00 00 00 00۔
-- 4 بائٹس: 0A 00 00 00 = 0x0A = 10۔ متن کے 10 کیریکٹرز پر اگلی تفصیلات لاگو ہوں گی۔ نوٹ کیجیے کہ لفظ "اردو " (بشمول سپیس) 10 کیریکٹرز ہی بنتے ہیں۔
-- 4 بائٹس: 0C 00 00 00۔ اگلی 0x0C یا 12 بائٹس میں فارمیٹنگ کی تفصیلات موجود ہیں۔ جیسا کہ مثال 1 میں بیان کیا گیا، اِس کا مطلب یہ بھی ہے کہ رنگ یا فانٹ سائز کی کوئی تبدیلی ان 10 کیریکٹرز ("اردو ") میں نہیں ہو رہی۔
-- 12 بائٹس: 01 00 06 00 00 00 80 00 00 00 00 00۔
یہاں پر 12 بائٹس ختم ہو گئیں، اور "اردو " کا معاملہ ختم۔ لیکن ہم بالکل شروع کی 4 بائٹس کی مدد سے جانتے ہیں کہ ابھی متن کے صرف 10 کیریکٹرز ختم ہوئے ہیں، اور 13 کیریکٹرز (23 منفی 10) ابھی باقی ہیں۔
-- 4 بائٹس: 06 00 00 00 = 0x6 = 6۔ متن کے اگلے 6 کیریکٹرز پر اب اگلی بائٹس میں درج تفصیلات لاگو ہوں گی۔ "کا " (بشمول سپیس) میں 6 کیریکٹرز ہی ہیں۔
-- 4 بائٹس: 10 00 00 00۔ اگلی 0x10 یا 16 بائٹس میں فارمیٹنگ کی تفصیلات موجود ہیں۔
-- 12 بائٹس: 01 00 0A 00 00 00 80 00 00 00 00 00۔
-- 4 بائٹس: 07 7F 04 00۔ رنگ۔
یہاں پر فارمیٹنگ کی 16 بائٹس ختم ہو گئیں، اور "کا " کی تفصیلات بھی ختم۔ ہمیں پتہ چل گیا کہ "کا " کا رنگ سرخ ہے۔ یہ بات بھی ہمارے علم میں ہے کہ اب تک متن کے 16 کیریکٹرز کا قصہ تمام ہوا ہے، اور 7 کیریکٹرز ابھی باقی ہیں۔
-- 4 بائٹس: 06 00 00 00 = 0x6 = 6۔ متن کے اگلے 6 کیریکٹرز پر اب اگلی بائٹس میں درج تفصیلات لاگو ہوں گی۔ "سبق" میں 6 کیریکٹرز ہی ہیں اور اس کے ساتھ کوئی سپیس نہیں۔
-- 4 بائٹس: 16 00 00 00۔ اگلی 0x16 یا 22 بائٹس میں فارمیٹنگ موجود ہے جو متن کے اگلے 6 کیریکٹرز ("سبق") پر اپلائی ہو گی۔
-- 12 بائٹس: 01 00 10 00 00 00 80 00 00 00 00 00۔
-- 6 بائٹس: 00 7F 40 19 01 00۔ فانٹ سائز ۔
-- 4 بائٹس: 07 7F 08 00۔ رنگ۔
یہاں پر فارمیٹنگ کی 22 بائٹس ختم۔ اب ہم جانتے ہیں کہ متن میں صرف ایک کیریکٹر (0D) باقی رہ گیا ہے، جس کی فارمیٹنگ ہمیشہ سادہ ہی ہوتی ہے اور 20 بائٹس میں بیان ہوتی ہے، چنانچہ۔۔۔
-- 20 بائٹس: 01 00 00 00 0C 00 00 00 01 00 06 00 00 00 80 00 00 00 00 00۔
-- 4 بائٹس: 17 A7 E4 73 FF FF FF FF۔

اور قصہ تمام۔ :)

اب آپ دوست بتائیے کہ اوپر بیان کی گئی تفصیلات میں کوئی الجھن تو موجود نہیں۔

ویسے اس ساری کہانی میں ایک چیز جو مجھے تنگ کر رہی ہے، وہ آغاز میں FF FF FF FF کے بعد آنے والی 20 بائٹس ہیں، کیونکہ یہ بالکل وہی ہیں جو آخر میں اکلوتے 0D کے لیے بھی استعمال ہوتی ہیں۔ اگر آپ میں سے کسی کے ذہن میں اس کی کوئی تشریح آتی ہے تو ضرور بتائیے۔
 

arifkarim

معطل
شاباش ریورس انجینرو!!
بہت عمدہ diffing
ان پیج کے ایک ہی ورژن پر کام کیا جائے کیونکہ ممکن ہے کہ مختلف ورژنوں میں فائل فارمیٹ میں تبدیلی کی گئی ہو۔
درست۔ انپیج کے ہر نئے ورژن میں فارمیٹ میں تبدیلی کر دی جاتی اور جدید فامیٹ میں سیو شدہ متن پرانے ورژن میں کھلنے کے قابل نہیں رہتا۔
 
Top