انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: دیکد فایل های تورنت(حل شد)  (دفعات بازدید: 1525 بار)

0 کاربر و 2 مهمان درحال مشاهده موضوع.

آفلاین سید وحید رضا برهانی

  • High Hero Member
  • *
  • ارسال: 1668
  • جنسیت : پسر
  • یک مخالف نرم افزار اوپن سورس
دیکد فایل های تورنت(حل شد)
« : 12 مهر 1394، 05:53 ق‌ظ »
سلام
من می خوام که فایل تورنت رو دیکد کنم و هش قطعات فایل را  استخراج کنم.
طبق گفته ی اینجاقطعات با sha1 هش می شوند ولی خروجی اش اصلا شبیه به خروجی sha1sum نیست. بعد اومدم از bencode.py استفاده کردم که مقدار hex هش رو برمی گردونه ولی بازم با خروجی sha1sum برابر نیست.
این قضیه اش چیه؟ و چطوری باید دیکد کنم؟
اگر کسی راه دیگه ای مثل یک نرم افزار آماده داره بهم بگه :)
« آخرین ویرایش: 16 مهر 1394، 10:41 ق‌ظ توسط سید وحید رضا برهانی »
نرم افزاری که نشه سیخ انگولکش کرد (به هر دلیلی چه به‌خاطر قانون و چه پیچیدگی یا توسعه سریع)نرم افزار آزاد نیست حالا مهم نیست چه بنیادی یا چه افرادی اون رو نوشته باشند یا GPL باشه یانه!
نرم افزار آزاد یک جنبش هست نه یک تیکه کاغذ پاره(GPL)
حق فهمیدن از حق خوندن مهمتره

آفلاین سید وحید رضا برهانی

  • High Hero Member
  • *
  • ارسال: 1668
  • جنسیت : پسر
  • یک مخالف نرم افزار اوپن سورس
پاسخ : دیکد فایل های تورنت
« پاسخ #1 : 16 مهر 1394، 10:39 ق‌ظ »
کسی چیزی نگفت ولی با سعی و خطا خودم فهمیدم ! :D
قضیه این هست که خروجی sha1 ۲۰ کاراکتری هست ولی چون خروجی اش شامل کاراکترهای غیر قابل چاپ هم می شود، نرم افزارها (مثل sha1sum) می آیند و کد هگز مربوط به اون کاراکتر رو چاپ می کنه که خب می دانیم که هربایت با دو کاراکتر هگز نمایش داده می شوند پس در نتیجه خروجی ۲۰ کاراکتری تبدیل به خروجی ۴۰ کاراکتری می شود.(خروجی sha1sum ۴۰ کاراکتری است) با این حساب الان همه چیز با هم جور در می یاد.
کسی اگر می خواد که تست کنه این کار ها رو به ترتیب بکنه
dd if=/dev/urandom of=/tmp/file.torrent bs=1 count=32768
بعد با نرم افزار ktorrent یک فایل تورنت ایجاد کنید و اندازه قطعات را ۳۲ کیلوبایت انتخاب کنید(البته با نرم افزارهای دیگه مثل mktorrent هم می شه)
بعد فایل تورنت را با okteta باز کنید (یا با hexdump -C ) وکد هگز مربوط به قطعه را (اگر دستورات را درست وارد کرده باشید یک قطعه بیشتر نخواهید داشت.) می تونید ببینید حالا با sha1sum از /tmp/file هش بگیرید و می بینید که با مقادیر اون قطعه (در okteta) با هم برابر هستند.

همه ی این حرف هام به زبان کد:
cd /tmp
dd if=/dev/urandom of=/tmp/file.torrent bs=1 count=32768
mktorrent -l 15 -a dd.dd /tmp/f
hexdump -C -s 139 /tmp/f.torrent
sha1sum /tmp/f

« آخرین ویرایش: 16 مهر 1394، 10:53 ق‌ظ توسط سید وحید رضا برهانی »
نرم افزاری که نشه سیخ انگولکش کرد (به هر دلیلی چه به‌خاطر قانون و چه پیچیدگی یا توسعه سریع)نرم افزار آزاد نیست حالا مهم نیست چه بنیادی یا چه افرادی اون رو نوشته باشند یا GPL باشه یانه!
نرم افزار آزاد یک جنبش هست نه یک تیکه کاغذ پاره(GPL)
حق فهمیدن از حق خوندن مهمتره