این فایل رو عملا نمیشد هیچ دستوری روش ران کرد، نه strings و نه binwalk و نه هیچ چیز دیگه. چرا؟ چون فایل خیلی بزرگه و محتواش نمیتونه لود شه توی مموری. اگر یک اسکریپت میزدیم که بخوایم ۱۰ گیگ ۱۰ گیگ ازش بخونیم فقط (یعنی بیاریم تو مموری و بریزیم بیرون)، حدود ۱ روز کامل فقط طول میکشید. (لیترالی ۲۴ ساعت!) حالا بهتون میگم چجوری به این رسیدم.
ما یک مقدار زیادی سرچ کردیم که ببینیم چکارش میشه کرد. بعد از تایم خوبی سرچ و اینا ما رسیدیم به یک چیزی به اسم sparse file
حالا sparse file چیه؟ اینجا میتونید ببینید:
https://en.wikipedia.org/wiki/Sparse_file#:~:text=In%20computer%20science%2C%20a%20sparse,file%20itself%20is%20partially%20empty.
اگر زبون هیربد رو هم بهتر میفهمید، چیزی که هیربد گفت:
Hirbod Behnam
همینی که عملا نصف فایل ۰ هست و جا نمیگیره؟
Hirbod Behnam
fallocate
Hirbod Behnam
این qcow2 هم همین طوری هست فکر حنم
خلاصه، یک فایلیه که محتوا دارهها، ولی اومدن با x00\ یا همون صفر یا به طور دقیقتر nullbyte پرش کردن. یعنی تقریبا 9.2E بایت صفر گذاشتن برای این فایله ولی خب جایی اشغال نمیکنن روی سیستم.
ما فهمیدیم sparse file چیه ولی خیلی باز به چیزی نرسیدیم. در یک حرکت من اومدم روی فایله hexdump زدم و دیدم تا یه آدرسی رو میخونه و از یه جایی به بعد دیگه گیر میکنه و نمیخونه. خب مشخص بود که اونجا به صفرها رسیده. اومدم در یک حرک همهی این محتواهای قبل از صفر رو خوندم و ریختم در یک فایل مجزا، و خب بله. معنادار بودن و یک عکس ساخته شد.
ما یک مقدار زیادی سرچ کردیم که ببینیم چکارش میشه کرد. بعد از تایم خوبی سرچ و اینا ما رسیدیم به یک چیزی به اسم sparse file
حالا sparse file چیه؟ اینجا میتونید ببینید:
https://en.wikipedia.org/wiki/Sparse_file#:~:text=In%20computer%20science%2C%20a%20sparse,file%20itself%20is%20partially%20empty.
اگر زبون هیربد رو هم بهتر میفهمید، چیزی که هیربد گفت:
Hirbod Behnam
همینی که عملا نصف فایل ۰ هست و جا نمیگیره؟
Hirbod Behnam
fallocate
Hirbod Behnam
این qcow2 هم همین طوری هست فکر حنم
خلاصه، یک فایلیه که محتوا دارهها، ولی اومدن با x00\ یا همون صفر یا به طور دقیقتر nullbyte پرش کردن. یعنی تقریبا 9.2E بایت صفر گذاشتن برای این فایله ولی خب جایی اشغال نمیکنن روی سیستم.
ما فهمیدیم sparse file چیه ولی خیلی باز به چیزی نرسیدیم. در یک حرکت من اومدم روی فایله hexdump زدم و دیدم تا یه آدرسی رو میخونه و از یه جایی به بعد دیگه گیر میکنه و نمیخونه. خب مشخص بود که اونجا به صفرها رسیده. اومدم در یک حرک همهی این محتواهای قبل از صفر رو خوندم و ریختم در یک فایل مجزا، و خب بله. معنادار بودن و یک عکس ساخته شد.
🤯3
این اسکریپت پایتونی بود که عکس رو ساختم:
f = open("void_dread.jpg", "rb")
data = f.read(int("0064a80", 16))
f2 = open("/home/dutchman/Desktop/data.jpg", "wb")
f2.write(data)👌4
روی این عکسه هم هرچقدر باز آنالیز همیشگی مثل strings و سایز چیزا رو تکرار کردیم جواب نداد.
ما خلاصه چندساعت هی وقت میذاشتیم و دنبال میگشتیم ولی به چیزی نمیرسیدیم. یه سری از کارهامون هم الکی بود ولی خب دیگه مشخص نبود اولش که درسته یا نه. مثلا یه سری کارهای forensicای روی عکس میکردم. r g b شو تغییر میدادم. با toolهای آنلاین روش سرچ میکردم (چون حس میکردم که ممکنه توی عکس قایم کرده باشن) خلاصه نشد که نشد و چند ساعت هدر رفت اینجا
در نهایت ما برگشتیم به همون شعره، توی شعره که باز دقت کردیم دیدیم حدودا معنیش اینه که از بین هیچی یه چی پیدا میشه. و تقریبا معنیش این بود که از بین اون صفرها یه چی پیدا میشه.
من این فکر زد به سرم که برم شروع کنم ۱۰ گیگ ۱۰ گیگ لود کنم فایل رو و بیارم توی مموری و ببینم به جز این چندهزار بایت اول که برای عکس بود و بعدش به صفرها میرسید، توی اون صفرها یه جایی اون وسطش باید باز یه دیتایی باشه. یعنی اول یه عالمه صفره بعد یه سری دیتا بعد باز یه عالمه صفر. من یک اسکریپت زدم که شروع کنه ۱۰ گیگ ۱۰ گیگ بخونه و ببینه همش صفره یا نه و اگر نبود دیتا رو بده به ما.
اینجوری شد که من فهمیدم خیلی طول میکشه. حدود ۸ ساعت گذشت و حدود یک سوم فایل تازه خونده شده بود. در کل این ۸ ساعت هم ۱۶ گیگ رم از من درگیر بود.
خلاصه فهمیدیم که این راهش نیست. بعد از ۸ ساعت من کد رو قطع کردم و باز گشتم ببینم چجوری میشه محتوای یک sparse file رو خوند. (کاری که باید اولش میکردم ولی حماقت کردم که نکردم)
و فهمیدم با دستوری lseek خیلی راحت میشه دیتاها رو پیدا کرد. خلاصه یک اسکریپت زدم و تمام رنجهایی که توشون دیتا بود و صفر نبود رو با lseek پیدا کردم.
ما خلاصه چندساعت هی وقت میذاشتیم و دنبال میگشتیم ولی به چیزی نمیرسیدیم. یه سری از کارهامون هم الکی بود ولی خب دیگه مشخص نبود اولش که درسته یا نه. مثلا یه سری کارهای forensicای روی عکس میکردم. r g b شو تغییر میدادم. با toolهای آنلاین روش سرچ میکردم (چون حس میکردم که ممکنه توی عکس قایم کرده باشن) خلاصه نشد که نشد و چند ساعت هدر رفت اینجا
در نهایت ما برگشتیم به همون شعره، توی شعره که باز دقت کردیم دیدیم حدودا معنیش اینه که از بین هیچی یه چی پیدا میشه. و تقریبا معنیش این بود که از بین اون صفرها یه چی پیدا میشه.
من این فکر زد به سرم که برم شروع کنم ۱۰ گیگ ۱۰ گیگ لود کنم فایل رو و بیارم توی مموری و ببینم به جز این چندهزار بایت اول که برای عکس بود و بعدش به صفرها میرسید، توی اون صفرها یه جایی اون وسطش باید باز یه دیتایی باشه. یعنی اول یه عالمه صفره بعد یه سری دیتا بعد باز یه عالمه صفر. من یک اسکریپت زدم که شروع کنه ۱۰ گیگ ۱۰ گیگ بخونه و ببینه همش صفره یا نه و اگر نبود دیتا رو بده به ما.
اینجوری شد که من فهمیدم خیلی طول میکشه. حدود ۸ ساعت گذشت و حدود یک سوم فایل تازه خونده شده بود. در کل این ۸ ساعت هم ۱۶ گیگ رم از من درگیر بود.
خلاصه فهمیدیم که این راهش نیست. بعد از ۸ ساعت من کد رو قطع کردم و باز گشتم ببینم چجوری میشه محتوای یک sparse file رو خوند. (کاری که باید اولش میکردم ولی حماقت کردم که نکردم)
و فهمیدم با دستوری lseek خیلی راحت میشه دیتاها رو پیدا کرد. خلاصه یک اسکریپت زدم و تمام رنجهایی که توشون دیتا بود و صفر نبود رو با lseek پیدا کردم.
🔥5
خلاصه یک اسکریپت در stackoverflow پیدا کردم که دیتاهایی رو که در sparse file وجود دارن پیدا میکرد:
https://stackoverflow.com/questions/46100881/sparse-files-how-to-find-contents
بعد که ران کردم rangeهایی که دیتا داشتن توی اون sparse file پیدا شد. اولین range خب برای همون عکسی بود که ازش پیدا کردم. دومین رنج که یه رنج طولانی بود یک دیتایی بود که هنوز نمیدونستم چیه ولی خب حدسم این بود که باید باشه. سومین range هم فقط یه بایت دیتا بود که مشخص بود به درد نمیخوره.
خلاصه من دومین range رو برداشتم دیتاش رو و ریختم توی یک فایل جدا. شروع کردم روش strings و binwalk و اینها باز و مثل همیشه دیدم هیچ flagای توش نیست و خیلی ناراحت کننده بود دیگه. تا الان حدود ۱۰ ساعت وقت صرف همین سوال شده بود و حل نشده بود هنوز.
یک hexedit روی این دیتایی که بین صفرها بود زدم و خب یه چیز جالبی دیدم.
https://stackoverflow.com/questions/46100881/sparse-files-how-to-find-contents
بعد که ران کردم rangeهایی که دیتا داشتن توی اون sparse file پیدا شد. اولین range خب برای همون عکسی بود که ازش پیدا کردم. دومین رنج که یه رنج طولانی بود یک دیتایی بود که هنوز نمیدونستم چیه ولی خب حدسم این بود که باید باشه. سومین range هم فقط یه بایت دیتا بود که مشخص بود به درد نمیخوره.
خلاصه من دومین range رو برداشتم دیتاش رو و ریختم توی یک فایل جدا. شروع کردم روش strings و binwalk و اینها باز و مثل همیشه دیدم هیچ flagای توش نیست و خیلی ناراحت کننده بود دیگه. تا الان حدود ۱۰ ساعت وقت صرف همین سوال شده بود و حل نشده بود هنوز.
یک hexedit روی این دیتایی که بین صفرها بود زدم و خب یه چیز جالبی دیدم.
Stack Overflow
Sparse files: How to find contents
If I create a file, use lseek(2) to jump to a high position in the (empty) file, then write some valuable information there, I create a sparse file on Unix system (probably depending on the file sy...
🔥3
چیزی که مشخص بود این بود که این فایل PNGعه. ولی عکسش درست نبود و نمیشد بازش کرد. من دیدم خیلی صفر توی این عکس هست و حدسم این بود که اومدن باز رندوم صفر گذاشتن که خراب شه. اومدم یک اسکریپت نوشتم و هرچی صفر بود رو برداشتم و فایل رو مجدد ساختم ولی باز هم عکس نمایش داده نمیشد.
دیگه خیلی اعصابم خورد شده بود. حدود ۱۱ ساعت تا الان رفته. هیچی نخوابیدم. میگرنم گرفته. الانم باید میرفتم سرکار و نمیتونستم روش وقت بذارم.
من دیگه پیام دادم به صادق که من تا الان اینکارا رو کردم و نشد که نشد و دیگه دارم روانی میشم و بیا روش ببین باید چکارش کنیم تا حل شه.
بعد یکی دو ساعت دیدم صادق پیام داد که حل شد. راهشم همین بود ولی نباید همهی صفرها رو پاک میکردیم. باید یکی درمیون بایتها رو که صفر بودن پاک میکردیم. وقتی که همهی صفرها رو پاک میکردم باعث میشد یه سری صفر که مال فایل هستن هم خراب شن و باید صرفا یکی درمیون بایتها رو پاک میکردیم.
بعدش که یکی درمیون پاک شد، دیتای نهایی رو ریختیم تو یه فایل و عکس جدید ساخته شد.
دیگه خیلی اعصابم خورد شده بود. حدود ۱۱ ساعت تا الان رفته. هیچی نخوابیدم. میگرنم گرفته. الانم باید میرفتم سرکار و نمیتونستم روش وقت بذارم.
من دیگه پیام دادم به صادق که من تا الان اینکارا رو کردم و نشد که نشد و دیگه دارم روانی میشم و بیا روش ببین باید چکارش کنیم تا حل شه.
بعد یکی دو ساعت دیدم صادق پیام داد که حل شد. راهشم همین بود ولی نباید همهی صفرها رو پاک میکردیم. باید یکی درمیون بایتها رو که صفر بودن پاک میکردیم. وقتی که همهی صفرها رو پاک میکردم باعث میشد یه سری صفر که مال فایل هستن هم خراب شن و باید صرفا یکی درمیون بایتها رو پاک میکردیم.
بعدش که یکی درمیون پاک شد، دیتای نهایی رو ریختیم تو یه فایل و عکس جدید ساخته شد.
❤2
و اینجوری بود که بعد از ۱۲ ساعت با یار همیشگیم یعنی صادق، سوال رو زدیم. وقتی که این سوال رو حل کردیم ما ۴امین تیمی بودیم که حلش کرد. تا آخر مسابقه هم کلا ۸تا تیم حلش کردن.
❤15👏6❤🔥1
این جالب بود
SHA-512
از
SHA-256
سریعتره.
https://crypto.stackexchange.com/questions/26336/sha-512-faster-than-sha-256
SHA-512
از
SHA-256
سریعتره.
https://crypto.stackexchange.com/questions/26336/sha-512-faster-than-sha-256
Cryptography Stack Exchange
SHA-512 faster than SHA-256?
I'm getting this strange result that SHA-512 is around 50% faster than SHA-256. I'm using .net's SHA512Managed and SHA256Managed classes. The code is similar to the one posted here but I'm referrin...
❤6👍1
امروز واسه اولین بار اومدیم سنگنوردی. قبلا هم چندباری اومده بودم ولی چون این سری خیلی جدی تمرین کردیم واسه همین یجورایی اولین بار بود. خیلی کیف میده. برخلاف چیزی که فکر میکردم خیلی سختتره. خیلی استقامت زیادی میخواد و از همه بیشتر ساعدای دست درگیر میشن. خلاصه که حتما تجربهش کنید. یکبارشم میارزه.
🔥7👍4
اینجا کنار دانشگاه هم هست، آقاعه هم گفت واسه دانشجوها ۴ونیم تا ۶ونیم رایگانه ولی بعدش و قبلش پولیه. پولشم باز واسه دانشجوها ۲۰ درصد تخفیف داره که میشه ۱۲۰ تومن (لیمیت زمانی هم نداره موندن توش)
👍5🔥3