این توییت یکی از دوستام فرستاده بود جالب بود گفتم با شما هم در میون بزارم.
به این پیلود نگاه کنید با حروف میخی نوشته شده و اگر توی کنسول مرورگرتون وارد کنید میبینید که پاپآپ بالا میاد.
توی این پیلود یه سری تکنیک استفاده شده که هر کدوم رو توضیح میدم
این تکنیکها به صورت زنجیرهای کار میکنن: اول با Unicode Obfuscation کد پنهان میشه، بعد با Type Coercion رشتههای پایه ساخته میشن، با String Manipulation حروف استخراج میشن، و در آخر با Dynamic Function Call کد اجرا میشه.
1. Unicode Obfuscation
این کد یه پیلود xss هست که با حروف خط میخی نوشته شده تا عجیب به نظر بیاد و از waf ها عبور کنه.
توی این پیلود از حروف میخی مثل 𒀱 به جای متغیر های معمولی مثل my_variable استفاده شده
جاوااسکریپت از استاندارد یونیکد پشتیبانی میکنه. هر کاراکتر یونیکد (مثل حروف خط میخی، ایموجی یا حروف چینی) میتونه بهعنوان اسم متغیر یا تابع استفاده بشه، مثل:
اگه پیلود رو با حروف انگلیسی جایگزین کنیم، به همچین چیزی میرسیم:
اگر این عبارت هم توی کنسول وارد کنید میبینید که کار میکنه.
2. Type Coercion (تبدیل خودکار نوع داده)
وقتی جاوااسکریپت خودش نوع دادهها رو تغییر میده (مثلاً عدد به رشته یا بولین به رشته) موقع عملیاتهایی مثل جمع (+) یا نقیض (!) به این کار میگن تبدیل نوع داده
چرا باید ازش استفاده کنیم؟
ساخت رشتههای بیخطر مثل "true", "false", "[object Object]" بدون نوشتن مستقیمشون. این رشتهها حروف لازم برای ساخت کلمات خطرناک (مثل "alert" یا "constructor") رو فراهم میکنن، بدون اینکه فایروالها بفهمن کد داره چیکار میکنه.
3. String Manipulation
جدا کردن حروف از یه رشته با استفاده از اندیس (مثل str[0] برای حرف اول).
رشتهها تو جاوااسکریپت مثل آرایههای حروفن که میتونی حرف به حرف بکشی بیرون.
توی این مرحله میاییم و حروفی که نیاز داریم از عبارت هایی که توی مرحله قبلی ساختیم میسازیم.
کلمات خطرناک مثل "alert" یا "constructor" با جدا کردن حروف از رشتههای بیخطر (مثل "true", "false", "[object Object]"). اینطوری فایروالها نمیفهمن کد داره کلمه خطرناک میسازه.
با اندیسها (مثل [0], [1]) به حروف رشته دسترسی پیدا میکنی.
4. Dynamic Function Call
صدا زدن یه تابع با استفاده از یه رشته (مثل "alert") به جای نوشتن مستقیم تابع (مثل alert()).
مثلاً میتونی به جای alert() بنویسی window["alert"]() یا "true"["constructor"]().
اجرای کد مخرب (مثل alert('XSS')) بدون نوشتن مستقیم تابع. اینطوری وف هایی که دنبال کلمات مثل alert یا eval میگردن، نمیتونن کد رو تشخیص بدن.
اسم تابع رو به صورت رشته بساز و با [] یا constructor صداش کن.
به این پیلود نگاه کنید با حروف میخی نوشته شده و اگر توی کنسول مرورگرتون وارد کنید میبینید که پاپآپ بالا میاد.
𒀱='',𒁍=!𒀱+𒀱,𒂖=!𒁍+𒀱,𒃵=𒀱+{},𒄿=𒁍[𒀱++],𒅗=𒁍[𒀲=𒀱],
𒆜=++𒀲+𒀱,𒇻=𒃵[𒀲+𒆜],
𒁍[𒇻+=𒃵[𒀱]+(𒁍.𒂖+𒃵)[𒀱]+𒂖[𒆜]+𒄿+𒅗+𒁍[𒀲]+𒇻+𒄿+𒃵[𒀱]+𒅗][𒇻](𒂖[𒀱]+𒂖[𒀲]+𒁍[𒆜]+𒅗+𒄿+"('𒀱𒀲𒀱𒋻𒆜𒀲𒁂𒐫𒉿𒀜𒅔')")()
توی این پیلود یه سری تکنیک استفاده شده که هر کدوم رو توضیح میدم
این تکنیکها به صورت زنجیرهای کار میکنن: اول با Unicode Obfuscation کد پنهان میشه، بعد با Type Coercion رشتههای پایه ساخته میشن، با String Manipulation حروف استخراج میشن، و در آخر با Dynamic Function Call کد اجرا میشه.
1. Unicode Obfuscation
این کد یه پیلود xss هست که با حروف خط میخی نوشته شده تا عجیب به نظر بیاد و از waf ها عبور کنه.
توی این پیلود از حروف میخی مثل 𒀱 به جای متغیر های معمولی مثل my_variable استفاده شده
جاوااسکریپت از استاندارد یونیکد پشتیبانی میکنه. هر کاراکتر یونیکد (مثل حروف خط میخی، ایموجی یا حروف چینی) میتونه بهعنوان اسم متغیر یا تابع استفاده بشه، مثل:
let 𒀱 = "hello";
console.log(𒀱);
اگه پیلود رو با حروف انگلیسی جایگزین کنیم، به همچین چیزی میرسیم:
a='',b=!a+a,c=!b+a,d=a+{},e=b[a++],f=b[a1=a],
g=++a1+a,h=d[a1+g],
b[h+=d[a]+(b.c+d)[a]+c[g]+e+f+b[a1]+h+e+d[a]+f][h](c[a]+c[a1]+b[g]+f+e+"('a1a1a1a1a1a1a1a1a1a1')")()اگر این عبارت هم توی کنسول وارد کنید میبینید که کار میکنه.
2. Type Coercion (تبدیل خودکار نوع داده)
وقتی جاوااسکریپت خودش نوع دادهها رو تغییر میده (مثلاً عدد به رشته یا بولین به رشته) موقع عملیاتهایی مثل جمع (+) یا نقیض (!) به این کار میگن تبدیل نوع داده
چرا باید ازش استفاده کنیم؟
ساخت رشتههای بیخطر مثل "true", "false", "[object Object]" بدون نوشتن مستقیمشون. این رشتهها حروف لازم برای ساخت کلمات خطرناک (مثل "alert" یا "constructor") رو فراهم میکنن، بدون اینکه فایروالها بفهمن کد داره چیکار میکنه.
3. String Manipulation
جدا کردن حروف از یه رشته با استفاده از اندیس (مثل str[0] برای حرف اول).
رشتهها تو جاوااسکریپت مثل آرایههای حروفن که میتونی حرف به حرف بکشی بیرون.
توی این مرحله میاییم و حروفی که نیاز داریم از عبارت هایی که توی مرحله قبلی ساختیم میسازیم.
کلمات خطرناک مثل "alert" یا "constructor" با جدا کردن حروف از رشتههای بیخطر (مثل "true", "false", "[object Object]"). اینطوری فایروالها نمیفهمن کد داره کلمه خطرناک میسازه.
با اندیسها (مثل [0], [1]) به حروف رشته دسترسی پیدا میکنی.
4. Dynamic Function Call
صدا زدن یه تابع با استفاده از یه رشته (مثل "alert") به جای نوشتن مستقیم تابع (مثل alert()).
مثلاً میتونی به جای alert() بنویسی window["alert"]() یا "true"["constructor"]().
اجرای کد مخرب (مثل alert('XSS')) بدون نوشتن مستقیم تابع. اینطوری وف هایی که دنبال کلمات مثل alert یا eval میگردن، نمیتونن کد رو تشخیص بدن.
اسم تابع رو به صورت رشته بساز و با [] یا constructor صداش کن.
👌22❤11👍6🔥3👏3⚡1
چند روز پیش یه گزارش منتشر شد که یه هکر تونسته از مرورگر کروم یه آسیب پذیری پیدا کنه و بعد از گزارش بهش 250,000 هزار دلار جایزه بدن.
https://issues.chromium.org/issues/412578726
تحلیل این آسیب پذیری رو براتون آماده کردم.
این آسیب خیلی عمیق تر از چیزی هست که نوشتم، پس اگر علاقه داشتین میتونید خودتون روش تحقیق بیشتری کنید.
خلاصه باگ هم این بوده که یه سایت رو باز میکردی و سیستمت هک میشده.
https://issues.chromium.org/issues/412578726
تحلیل این آسیب پذیری رو براتون آماده کردم.
این آسیب خیلی عمیق تر از چیزی هست که نوشتم، پس اگر علاقه داشتین میتونید خودتون روش تحقیق بیشتری کنید.
خلاصه باگ هم این بوده که یه سایت رو باز میکردی و سیستمت هک میشده.
❤36👨💻3
همونطور که میدونید فایل های javanoscript توی هانت خیلی مهم هستن
چون ممکنه توشون:
- کلید های api
- اطلاعات ورود مثل رمز های عبور یا اطلاعات ادمین
- توکن ها مثل توکن های auth
- داده های تنظیمات دیتابیس
پیدا بشه، که هر کدوم از اینا ممکنه منجر به آسیب پذیری بشه.
پس باید این فایل هارو تحلیل کنید و دنبال این اطلاعات حساس باشید.
یه متدولوژی برای هانت روی فایل های js میتونه این باشه:
1- لیستی از سابدامنه های تارگت رو توی یه فایل به اسم sub.txt ذخیره کنید.
2- با استفاده از ابزار های زیر که با هم ترکیب شدن فایل های js رو بدست بیارین.
از ابزار کاتانا برای کرال کردن استفاده میکنیم اینجا میتونید از کرالر های دیگه هم استفاده کنید.
3- برای پیدا کردن آسیب پذیری یا اطلاعات حساس میتونید از ابزار nuclei استفاده کنید.
4- یه روش دیگه این هست که همه فایل های js که پیدا کردیم توی مرحله 2 رو دانلود کنیم و به صورت دستی تحلیلشون کنیم.
با دستور زیر فایل هارو دانلود میکنیم.
اینجا میتونیم با دستور grep روی فایل های js که دانلود کردیم دنبال یه سری کلمات کلیدی باشیم.
این متدولوژی خوبه و عالی نیست. پس باید متدولوژی شما با بقیه یه تفاوت داشته باشه تا خروجی متفاوتی هم داشته باشه.
به عنوان مثال میتونید توی مرحله 3 از تمپلیت های که خودتون نوشتین استفاده کنید که هر کسی نداره.
یا توی مرحله ۴ از کلمات کلیدی بیشتری یا متفاوت تری استفاده کنید.
این یه مثال خیلی کوچیک از کشف آسیب پذیری روی فایل های js بود.
فکر میکنید دیگه چه کارایی میشه کرد؟
چون ممکنه توشون:
- کلید های api
- اطلاعات ورود مثل رمز های عبور یا اطلاعات ادمین
- توکن ها مثل توکن های auth
- داده های تنظیمات دیتابیس
پیدا بشه، که هر کدوم از اینا ممکنه منجر به آسیب پذیری بشه.
پس باید این فایل هارو تحلیل کنید و دنبال این اطلاعات حساس باشید.
یه متدولوژی برای هانت روی فایل های js میتونه این باشه:
1- لیستی از سابدامنه های تارگت رو توی یه فایل به اسم sub.txt ذخیره کنید.
2- با استفاده از ابزار های زیر که با هم ترکیب شدن فایل های js رو بدست بیارین.
cat sub.txt | katana | grep js | httpx -mc 200 | tee js.txt
از ابزار کاتانا برای کرال کردن استفاده میکنیم اینجا میتونید از کرالر های دیگه هم استفاده کنید.
3- برای پیدا کردن آسیب پذیری یا اطلاعات حساس میتونید از ابزار nuclei استفاده کنید.
nuclei -l js.txt -t ~/nuclei-templates/exposures/ -o js_bugs.txt
4- یه روش دیگه این هست که همه فایل های js که پیدا کردیم توی مرحله 2 رو دانلود کنیم و به صورت دستی تحلیلشون کنیم.
با دستور زیر فایل هارو دانلود میکنیم.
file="js.txt"
while IFS= read -r link
do
wget "$link"
done < "$file"
اینجا میتونیم با دستور grep روی فایل های js که دانلود کردیم دنبال یه سری کلمات کلیدی باشیم.
grep -r -E "aws_access_key|aws_secret_key|api key|passwd|pwd|heroku|slack|firebase|swagger|aws_secret_key|aws key|password|ftp password|jdbc|db|sql|secret jet|config|admin|pwd|json|gcp|htaccess|.env|ssh key|.git|access key|secret token|oauth_token|oauth_token_secret|smtp" *.js
این متدولوژی خوبه و عالی نیست. پس باید متدولوژی شما با بقیه یه تفاوت داشته باشه تا خروجی متفاوتی هم داشته باشه.
به عنوان مثال میتونید توی مرحله 3 از تمپلیت های که خودتون نوشتین استفاده کنید که هر کسی نداره.
یا توی مرحله ۴ از کلمات کلیدی بیشتری یا متفاوت تری استفاده کنید.
این یه مثال خیلی کوچیک از کشف آسیب پذیری روی فایل های js بود.
فکر میکنید دیگه چه کارایی میشه کرد؟
❤23👏5👍4
🕸 Articles
همونطور که میدونید فایل های javanoscript توی هانت خیلی مهم هستن چون ممکنه توشون: - کلید های api - اطلاعات ورود مثل رمز های عبور یا اطلاعات ادمین - توکن ها مثل توکن های auth - داده های تنظیمات دیتابیس پیدا بشه، که هر کدوم از اینا ممکنه منجر به آسیب پذیری بشه.…
همین متدلوژی سادهای که اینجا توضیح دادم، باهاش api key پیده شده.
🔥21
Domain_Discovery_Persian.pdf
8.3 MB
🔥50❤🔥8❤3👌3👏2
همونطور که دارید توی مباحث فنی آموزش میبینید و رشد میکنید، سعی کنید شخصیت خودتون رو هم رشد بدین.
اگر فکر میکنید توانایی و استعداد ثابت هست، باور کنید میتونید با تلاش و پشتکار اونها رو گسترش بدین. یه فرد موفق نمیگه: من توی این بخش ضعیفم بلکه میگه: من هنوز این مهارت رو یاد نگرفتم.
وقتی با چالشی رو به رو میشید اون رو فرصتی برای یادگیری ببینید نه مانعی که جلوی راهتونه. یه سیستم امن رو به چشم یه پازل سخت و جذاب ببینید که برای حلش باید مهارت های جدیدی یاد بگیرید.
- پیدا کردن یه باگ پیچیده زمان بره. باید صبر داشته باشی و قدم به قدم پیش بری. اگر یه حمله جواب نداد بهتره دنبال یه راه حل دیگه باشی. مهدی یه رایتاپ (https://mey-d.github.io/posts/zero-click-ato-persian/) نوشته بخونیدش تا متوجه این صبر بشید.
توانایی برگشتن از شکستها رو توی خودتون تقویت کنید.
- برای کارها و پروژهها باید برنامه ریزی کنیم و بهشون پایبند باشیم. به جای ساعتها کار بی وقفه، بهتره تمرکزمون رو روی جلسات کوتاه مدت و پربازده بزاریم. به خودتون استراحت بدین و کارهای غیر فنی انجام بدین. وقت گذروندن با دوستان، ورزش و سرگرمی های مورد علاقتون.
- همیشه بپرسید چرا؟ یا اگر... چی میشه؟
وقتی به یه صفحه لاگین میرسی، به جای اینکه فقط قانون تعیین شده برنامه نویس رو انجام بدین این سوال هارو از خودتون بپرسید:
اگر پسورد خالی بفرستم چی میشه؟
اگر من به جای نام کاربری، یه ایمیل یا شماره تلفن بفرستم چی میشه؟
اگر من به جای یه کاربر، درخواست ورود با یه ID کاربر دیگه رو بفرستم چی میشه؟
چرا این سیستم کلمهی عبور رو بعد از چند بار تلاش ناموفق بلاک نمیکنه؟
یا زمانی که آپلود فایل دارید:
اگر به جای عکس یه فایل php آپلود کنم چی میشه؟
اگر اسم فایل رو تغییر بدم از shell.php به shell.jpg چی میشه؟
یا اگر پارامتر دارید:
اگر به جای کلمات عادی، کاراکتر های خاص مثل &,',> رو وارد کنم چی میشه؟
چرا پارامتر های این url حساس هستن؟
اگر کلا پارامتر حذف کنم چی میشه؟
اگر مقدارش رو عوض کنم چی میشه؟
به جای استفاده از ابزارها به صورت کورکورانه درک کنید که پشت پرده چطور داره کار میکنه.
اگر فکر میکنید توانایی و استعداد ثابت هست، باور کنید میتونید با تلاش و پشتکار اونها رو گسترش بدین. یه فرد موفق نمیگه: من توی این بخش ضعیفم بلکه میگه: من هنوز این مهارت رو یاد نگرفتم.
وقتی با چالشی رو به رو میشید اون رو فرصتی برای یادگیری ببینید نه مانعی که جلوی راهتونه. یه سیستم امن رو به چشم یه پازل سخت و جذاب ببینید که برای حلش باید مهارت های جدیدی یاد بگیرید.
- پیدا کردن یه باگ پیچیده زمان بره. باید صبر داشته باشی و قدم به قدم پیش بری. اگر یه حمله جواب نداد بهتره دنبال یه راه حل دیگه باشی. مهدی یه رایتاپ (https://mey-d.github.io/posts/zero-click-ato-persian/) نوشته بخونیدش تا متوجه این صبر بشید.
توانایی برگشتن از شکستها رو توی خودتون تقویت کنید.
- برای کارها و پروژهها باید برنامه ریزی کنیم و بهشون پایبند باشیم. به جای ساعتها کار بی وقفه، بهتره تمرکزمون رو روی جلسات کوتاه مدت و پربازده بزاریم. به خودتون استراحت بدین و کارهای غیر فنی انجام بدین. وقت گذروندن با دوستان، ورزش و سرگرمی های مورد علاقتون.
- همیشه بپرسید چرا؟ یا اگر... چی میشه؟
وقتی به یه صفحه لاگین میرسی، به جای اینکه فقط قانون تعیین شده برنامه نویس رو انجام بدین این سوال هارو از خودتون بپرسید:
اگر پسورد خالی بفرستم چی میشه؟
اگر من به جای نام کاربری، یه ایمیل یا شماره تلفن بفرستم چی میشه؟
اگر من به جای یه کاربر، درخواست ورود با یه ID کاربر دیگه رو بفرستم چی میشه؟
چرا این سیستم کلمهی عبور رو بعد از چند بار تلاش ناموفق بلاک نمیکنه؟
یا زمانی که آپلود فایل دارید:
اگر به جای عکس یه فایل php آپلود کنم چی میشه؟
اگر اسم فایل رو تغییر بدم از shell.php به shell.jpg چی میشه؟
یا اگر پارامتر دارید:
اگر به جای کلمات عادی، کاراکتر های خاص مثل &,',> رو وارد کنم چی میشه؟
چرا پارامتر های این url حساس هستن؟
اگر کلا پارامتر حذف کنم چی میشه؟
اگر مقدارش رو عوض کنم چی میشه؟
به جای استفاده از ابزارها به صورت کورکورانه درک کنید که پشت پرده چطور داره کار میکنه.
❤30
سری مقالات رمزنگاری مقدماتی به زبان ساده از محمد حسن پزشکیان
🔸 1 بررسی مفاهیم اولیه رمزنگاری
🔸 2 بررسی Encoding and Encryption
🔸 3 بررسی Hash & HMAC
🔸 4 بررسی Password Storage, Salt & Pepper
🔸 5 رمزنگاری متقارن یا Symmetric Encryption
🔸6 رمزنگاری نامتقارن یا Asymmetric Encryption
🔸7 امضا و گواهینامه دیجیتال
🔸8 رمزنگاری سخت افزاری و خطرات دولت ها
🔸9 ریاضیات و شرح کارکرد الگریتم های نامتقارن
🔸10 رمزنگاری منحنی بیضوی یا Elliptic-Curve
🔸11 بررسی امنیت پروتوکول های شبکه
🔸12 بررسی حملات رمزنگاری
🔸13 مرور و جمع بندی
#crypto
🔸 1 بررسی مفاهیم اولیه رمزنگاری
🔸 2 بررسی Encoding and Encryption
🔸 3 بررسی Hash & HMAC
🔸 4 بررسی Password Storage, Salt & Pepper
🔸 5 رمزنگاری متقارن یا Symmetric Encryption
🔸6 رمزنگاری نامتقارن یا Asymmetric Encryption
🔸7 امضا و گواهینامه دیجیتال
🔸8 رمزنگاری سخت افزاری و خطرات دولت ها
🔸9 ریاضیات و شرح کارکرد الگریتم های نامتقارن
🔸10 رمزنگاری منحنی بیضوی یا Elliptic-Curve
🔸11 بررسی امنیت پروتوکول های شبکه
🔸12 بررسی حملات رمزنگاری
🔸13 مرور و جمع بندی
#crypto
ویرگول
رمزنگاری مقدماتی به زبان ساده : بررسی مفاهیم اولیه رمزنگاری
بررسی مفاهیم رمزنگاری به صورت ساده با ذکر مثال هایی از دنیای واقعی به همراه مثال های عملی متخص متخصصین حوزه امنیت
❤20🔥4❤🔥2
این کتاب توصیههای ارزشمند و کاربردی از گروهی از هکرهای با تجربه در حوزه باگبانتیه که برای موفقیت تو این عرصه جمعآوری شدن. این راهنماییها از تکنیکهای عمیق تست و استفاده از اتومیشن گرفته تا تمرکز روی نقاط ضعف خاص و مدیریت زمان، بهت کمک میکنه مهارتهات رو تقویت کنی و باگهای با ارزشی پیدا کنی.
❤36👏3👍1
تو خدای زمانی
زروان، نام ایزدی بود که آفریدگار زمان بود. بیآغاز و بیپایان.
زروان آرزو داشت که فرزندی نیک داشته باشد تا جهان را به او بسپارد. پس دعا میکرد و فدیه میداد؛ تا روزی که در بطنش چیزی جنبیدن گرفت.
دو فرزند توأمان.
زروان گفت: هر کدام که زودتر به دنیا بیایند جهان را به او خواهم سپرد.
زروان نمیدانست که یکی از پسرانش اهریمن است و آن دیگری اورمزد. اهریمن صدای زروان را شنید و زودتر به دنیا آمد.
زروان گفت: تو کیستی؟
تو که این همه ظلمانی و متعفن و ترسناکی؟
اهریمن گفت: من فرزند توام، فرزند زمان و تو قول دادهای که جهان را به من بسپاری.
زروان اندوهگین شد و جهان را به اهریمن سپرد اما امید داشت که اورمزد بتواند با برادر بویناک و تاریکش بجنگد و پیروز شود و جهان را پس بگیرد.
اورمزد، روشن و خوشبو و مهربان و زیبا و لطیف بود.
هر روز که از خواب بیدار میشوی، نامت زروان است، تو همان خدای زمانی و هر روز دو فرزند توامان در بطن تو آفریده میشود.
گاهی زمان را به اورمزدت میسپاری و گاهی به اهریمنت.
و فرزندانت جهانت را تاریک میکنند یا روشن.
و زمانت یا گرگ میشود یا میش.
در گرگ و میشِ هر روز باید از خودت بپرسی امروز چه زاییدم؟
امروز، روز گرگ بود یا روز میش.
امروز اهریمنم به دنیا آمد یا اورمزد؟
زروان، نام ایزدی بود که آفریدگار زمان بود. بیآغاز و بیپایان.
زروان آرزو داشت که فرزندی نیک داشته باشد تا جهان را به او بسپارد. پس دعا میکرد و فدیه میداد؛ تا روزی که در بطنش چیزی جنبیدن گرفت.
دو فرزند توأمان.
زروان گفت: هر کدام که زودتر به دنیا بیایند جهان را به او خواهم سپرد.
زروان نمیدانست که یکی از پسرانش اهریمن است و آن دیگری اورمزد. اهریمن صدای زروان را شنید و زودتر به دنیا آمد.
زروان گفت: تو کیستی؟
تو که این همه ظلمانی و متعفن و ترسناکی؟
اهریمن گفت: من فرزند توام، فرزند زمان و تو قول دادهای که جهان را به من بسپاری.
زروان اندوهگین شد و جهان را به اهریمن سپرد اما امید داشت که اورمزد بتواند با برادر بویناک و تاریکش بجنگد و پیروز شود و جهان را پس بگیرد.
اورمزد، روشن و خوشبو و مهربان و زیبا و لطیف بود.
هر روز که از خواب بیدار میشوی، نامت زروان است، تو همان خدای زمانی و هر روز دو فرزند توامان در بطن تو آفریده میشود.
گاهی زمان را به اورمزدت میسپاری و گاهی به اهریمنت.
و فرزندانت جهانت را تاریک میکنند یا روشن.
و زمانت یا گرگ میشود یا میش.
در گرگ و میشِ هر روز باید از خودت بپرسی امروز چه زاییدم؟
امروز، روز گرگ بود یا روز میش.
امروز اهریمنم به دنیا آمد یا اورمزد؟
❤44
JS for Hacker-Volume 1.pdf
691.5 KB
درود دوستان
کتاب جدید تقریبا تمومه سعی میکنم تا چند روز دیگه بزارمش. سرفصل هارو میتونید ببینید.
سعی کردم جاوااسکریپت رو از دو دیدگاه برنامه نویس و هکر بررسی کنیم.
این کتاب ترجمه نیست سرفصل هارو طوری چیدم که نیاز های یه هانتر پوشش بده چیزایی که توی هانت بهشون نیاز پیدا میکنید.
کتاب جدید تقریبا تمومه سعی میکنم تا چند روز دیگه بزارمش. سرفصل هارو میتونید ببینید.
سعی کردم جاوااسکریپت رو از دو دیدگاه برنامه نویس و هکر بررسی کنیم.
این کتاب ترجمه نیست سرفصل هارو طوری چیدم که نیاز های یه هانتر پوشش بده چیزایی که توی هانت بهشون نیاز پیدا میکنید.
❤61👍4🔥4
JS for Hacker-Volume 1.pdf
9.2 MB
🔥77❤18🙏3