انکودینگ Base64

منتشر شده در دسته : بلاگ, تست نفوذ وب

انکودینگ Base64 مکانیزیمی است که در اصل به منظور انکودینگ داده های باینری به فرمت متنی ایجاد شد. انکودینگ Base64 ابتدا در سیستم های ایمیل که نیاز به پیوست داده های باینری همچون تصویر و اسناد متنی داشتند استفاده شد. چرا که این نوع پیوست ها بایستی به فرمت اسکی (ASCII) ارسال می شد.

انکودینگ Base64

Base64 در وبسایت ها به صورت رایج استفاده می شد ولی نه به منظور انکودینگ داده های باینری بلکه برای مبهم کردن درخواست های پارامترها , نشست ها و … این جمله را زیاد شنیده ایم که امنیت از طریق ابهام به هیچ وجه سودمند نیست. توسعه دهندگان از این موضوع آگاهی ندارند که حتی یک شخص نیمه ماهر می تواند این مقادیر رشته های Base64 را دکود کند. انکودینگ Base64 به منظور انکود کردن رسانه هایی همچون تصاویر و فونت های از طریق داده های URI نیز استفاده می شد.

جاوا اسکریپت نیز توابعی درون ساخت برای انکودینگ و دکودینگ رشته های Base64 ارایه می کند. توابعی همچون :

atob() انکودینگ

bota() دکودینگ

مجموعه کاراکتری انکودینگ Base64

Base64 حاوی یک مجموعه کاراکتری از کاراکترهای اسکی قابل چاپ می باشد. ۶۲ مقدار اصلی در تمام انواع انکودینگ Base64 یکسان می باشد که شامل :

  • کاراکترهای حروف بزرگ زبان انگلیسی A تا Z
  • کاراکترهای حروف کوچک زبان انگلیسی a-z
  • اعداد ۰ تا ۹

کاراکتر های موجود در ایندکس ۶۲ و ۶۳ بر اساس نوع انکودینگ متفاوت می باشد. این کاراکترها شامل + / , – _ . : ! ~ می باشد. جدول زیر کاراکترهای نسخه اصلی Base64 را نشان می دهد :

انکودینگ base64 - فرآیند انکودینگ Base64 - مجموعه کاراکتری انکودینگ Base64

فرآیند انکودینگ Base64

برای انکودینگ یک رشته اسکی به صورت زیر عمل می کنیم :

  • داده های باینری یا غیرباینری از سمت چپ به راست خوانده شده
  • سه جفت داده هشت بیتی جداگانه از ورودی گرفته شده تا در مجموعه یک گروه ۲۴ بیتی را ایجاد کند.
  • این گروه ۲۴ بیتی در ادامه به ۴ گروه ۶ بیتی تقسیم می شود.
  • اکنون هر کدام از این شش بیت جداگانه توسط انکودینگ Base64 با استفاده از جدول ایندکس بالا فرمت دهی می شود. چگونه ؟

در مثال زیر واضح توضیح می دهیم . به جدول زیر دقت کنید. در اینجا می خواهیم کلمه God انکودینگ کنیم.

انکودینگ base64 - فرآیند انکودینگ Base64 - مجموعه کاراکتری انکودینگ Base64

ابتدا با استفاده از جدول اسکی اعداد که در زیر آمده معادل باینری هر کاراکتر ایجاد شده و در قالب سه گروه هشت بیتی نوشته می شود.

انکودینگ base64 - فرآیند انکودینگ Base64 - مجموعه کاراکتری انکودینگ Base64

سپس باینری به گروههای ۶ بیتی تبدیل شده. عدد باینری به دسیمال تبدیل شده و بر اساس جدول ایندکس ها معادل آن نوشته می شود. مثلا ایندکس ۱۷ متعلق به کاراکتر R و ایندکس ۳۶ متعلق به کاراکتر k و….

نتیجه اینکه معادل Base64 کلمه God می شود R29k

هرچند یک مشکلی در اینجا پدیدار می شود. اگر حرف ما بر اساس الگوی ۲۴ بیتی نباشد چه باید کرد ؟ مثلا کلمه Netamooz نمی توان آن را با این الگو تطبیق داد. Net می شود ۲۴ بیت , amo می شود ۲۴ بیت و oz می شود ۱۶ بیت !! با ۸ بیت آخر چه باید کرد.

این همان جایی است که مکانیزم پدینگ (Padding) وارد می شود.

پدینگ در انکودینگ Base64

هر کجا که ۸ بیت خالی بماند برای تبدیل شدن آن به یک مجموعه ۲۴ بیتی بایستی با کاراکتر = پر شود. و اگر ۱۶ بیت خالی باشد دو کاراکتر مساوی == اضافه می شود. دقیقا شبیه جدول زیر که به این مکانیزم پدینگ گویند.

انکودینگ base64 - فرآیند انکودینگ Base64 - مجموعه کاراکتری انکودینگ Base64

صاحب امتیاز نت آموز : نویسنده , مدرس و متخصص در زمینه امنیت شبکه های رایانه ای

تعداد پیام ها 2

    1. سلام
      دو کتاب یاد شده کاملا جداگانه بوده و مکمل یکدیگر نیستند و هر یک رویکردی جداگانه را دنبال کرده ولی در برخی مطالب نیز همپوشانی دارند.
      کتاب تست نفوذ با کالی پیشرفته می باشد پس اگر قصد مطالعه هر دو کتاب را دارید توصیه میشود ابتدا کتاب مقدمات رو مطالعه فرمایید.

نظرات غیرمرتبط با محتوای این مطلب تایید نخواهند شد.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *