ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





نمایش نتایج: از 1 به 2 از 2
  1. #1
    تاریخ عضویت
    2018/09/03
    نوشته ها
    868
    امتیازها
    12,082
    سطح
    72
    1,124
    مشاور انجمن

    آموزش دیکریپت کردن هارد دیسک های wd my book در صورت آسیب دیدن برد و شناخته نشدن در ویندوز

    خلاصه:

    • مخصوص اکثر هارد های وسترن دیجیتال از نوع مای بوک که برد واسط اونها مشکل پیدا کرده و هارد شناخته نمی شود.
    • در این روش هارد از قاب درآمده و به شکل اینترنال استفاده می شود
    • این روش دائمی نیست و بصورت موقت (تا خاموش کردن سیستم) هارد شما mount می شود، پس اطلاعات خودتان را باید به هارد دیگری انتقال دهید.
    • تحت لینوکس اجرا می شود
    • بعد از اتمام انتقال اطلاعات، اگر برد آسیب دیده تعمیر نمی شود با بالا آمدن ویندوز در قسمت کنسول disk management هارد مذکور را فرمت کنید و مانند یک هارد اینترنال می توانید استفاده کنید.
    • لینک روش های مشابه دیکریپت کردن هارد های وسترن هم برای my passport و هم برای my book ها تحت ویندوز و لینوکس حتی در صورت فراموشی رمز عبور قرار داده می شود.


    چند روز پیش حین کار با هارد اکسترنال mybook وسترن دیجیتال، هارد از کار می افتد و دیگه شناسایی نمی شد و دور هم برنمی داشت. اون چراغش هم ثابت می ماند. این جور مواقع اول به آداپتور هارد باید مشکوک شد و با آداپتور شبیه خودش امتحان کرد. اگر مشکل از آداپتور نبود، باید یک هارد مای بوک دقیقا با همون مشخصات پیدا بشه که برد واسط رو از روی هارد سالم برداشته و روی هارد معیوب گذاشت تا هارد شناسایی و قابل استفاده شود که اطلاعات رو بتوانید در یک هارد دیگه کپی کنید. یه راه هم تعمیر همون برد واسط هست و راه بعدی سپردن هارد به مراکز معتبر ریکاوری.
    با آداپتور مشابه هم هارد من بالا نیامد و مشخص شد که برد هارد مشکل دارد. از اونجایی که روی این pcb ها چیپی وجود دارد که اطلاعات رو رمزگذاری می کند و اگر اون برد آسیب ببیند اطلاعات رمزگذاری شده هستند و اگر هم از قاب اکسترنال هم درآورده شود و به عنوان هارد اینترنال استفاده شود، هارد شما unlocated نشان داده میشود. در صورت ریکاوری، بهترین نرم افزارها هم کاری از پیش نمی برند.
    بعضی از هاردهای مای بوک قدیمی اگر از قاب در آورده شود و بعد اتصال به PC با سیستم عامل های لینوکسی، هارد بالا می آیند و محتویات هارد نمایش داده می شوند ولی اگر دفعه اولی که وصل می کنید به سیستمی که ویندوز دارد باشد، دیگر این امکان از شما سلب سلب می شود.
    از اونجایی که ایام کرونا بوده و این مراکز ریکاوری هم تعطیل و اطلاعات توی هارد اکسترنال ضروری بود با جستجو در اینترنت چند راه برای رفع این مشکل پیدا شد. آموزشهای مربوطه در یوتیوب و گیت هاب موجود هست. برای هاردهای پاسپورتی هم به همین شکل راههای وجود داره.

    اما شیوه ای که خودم انتخاب کردم رو اینجا توضیح می دهم.
    اول اینکه اگر هارد رو از قابش در آورده باشید و تحت ویندوز، رایانه شما بالا اومده باشد هم باز این روش کار می کند. فقط هارد رو نباید فرمت کرده باشید که کار سخت میشه و در اینصورت پارتیشن ساخته شده رو باید دلیت کرده و بعد از اتمام مراحل کار با این روش در محیط لینوکس با ابزارهای ریکاوری لینوکسی اقدام به بازیابی کنید.
    این روش فقط در محیط سیستم عامل های لینوکسی قابل اجرا می باشد. چون کدهایی که نوشته شده مخصوص کرنل خاصی هست، ورژن های خاصی فقط جوابگو هستند. شما باید ubuntu 16.04.7 رو دانلود و با rufus روی فلش مموری رایت و موقعی که سیستم رو از طریق فلش بوت می کنید گزینه try ubuntu را انتخاب کنید. قبلش هم باید هارد رو از قابش در بیارید و به شکل هارد اینترنال به کیس متصل کرده باشید یا اینکه داخل باکس های هارد اکسترنال دیگر که اطلاعات را رمزگذاری نمی کنند، قرار دهید. این روش فقط بطور موقت هارد شما رو باز میکنه و باید اقدام به کپی اطلاعاتتون کنید و با ریستارت سیستم و خروج از محیط اوبونتو دوباره هارد شما به شکل سابق بر می گردد. پس از قبل به فکر فضای کافی برای کپی اطلاعاتتون باشید.
    اگر فضای کافی برای انتقال همه اطلاعاتتون ندارید یا زمان کافی ندارید و کار رو می خواهید در دو یا چند مرحله انجام دهید، بهتر است که ubuntu رو نصب کنید تا نصف مراحل کار ذخیره شده و زحمت شما کمتر شود (تا دستور sudo modprobe rev16 و بقیه مراحل کار رو با اجرای این دستور ادامه می دهید).

    یه روش نصب ابونتو، نصب روی هارد دیسک هست و یه روش هم نصب روی فلش مموری. اگر می خواهید روی فلش مموری نصب کنید، یه فلش مموری دیگر با ظرفیت 16 گیگابایت به بالا به سیستم متصل کرده و install ubuntu روی دسکتاپ رو کلیک کنید؛ مراحل کار در لینک پایین صفحه که بصورت تجمیعی قرار داده شده موجود می باشد.
    فایل پی دی اف مشروح کار نیز در همان لینک موجود می باشد. این روش مربوط به آقای Tomas Kaeding هست که در گیت هاب قرار دادند و صدها نفر با موفقیت از این روش استفاده کرده اند که به عنوان مثال در فروم wd می توانید مشاهده کنید.
    بعد اینکه هارد رو از قاب در آوردید و برد اولی رو باز کردید روی برد دقت کنید یک چیپ مرکزی بزرگ هست که اسم چیپ روی اون نوشته شده. اکثر هاردهای مای بوک دارای چیپ هایی هستن که این روش برای اونها قابل استفاده می باشد. با کمک یک ذره بین اسم چیپ رو می توانید بخوانید و اگر یکی از چیپ های زیر بود این روش قابل استفاده می باشد و الا خیر. روش کار هم برای هر چیپ متفاوت می باشد چون اون چیپ به روش متفاوتی اطلاعات رو به رمز در می آورد.

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 5e8c33e9a2ab7835fab50220b5c9ba7bb9cb7264.jpeg
مشاهده: 33
حجم: 144.6 کیلو بایت

    JMicron JMS538S
    Symwave SW6316
    Initio INIC-1607E
    PLX OXUF943SE

    از بین پکیج های نرم افزاری برای این روش اکثر آنها تو همین ورژن موجود می باشند. فقط cryptsetup رو باید نصب کنید. این پکیج رو یا باید آنلاین نصب کنید یا اینکه از قبل دانلود کرده و کلیک راست و گزینه install رو بزنید. برای نصب آنلاین، تو دسکتاپ کلیک راست کنید و open terminal را انتخاب و دستور زیر رو کپی پیست کرده، اینتر را بزنید:

    کد:
    sudo apt-get update
    sudo apt-get install cryptsetup
    در این آموزش دیکریپت کردن هاردهایی که چیپ Jmicron دارند توضیح داده میشود، بقیه چیپ ها هم مشابه همین مورد هست که آموزش آنها در فایل پی دی اف موجود می باشد. (لینک در انتهای پست)
    قدم اول فهمیدن این هست که هاردی که unlocated شده به عنوان چندمین هارد در اوبونتو شناخته شده است. تو همون دسکتاپ آیکون اولی سرچ باکس هست؛ disks رو تایپ و باز کنید از میان هاردها، هاردی که از قاب در آوردید رو انتخاب کنید و ببینید در قسمت پایین به عنوان چندمین هارد شناخته شده با این توضیح که مثلا سه تا هارد متصل باشند، توزیع های لینوکسی به این شکل این هارد ها رو شناسایی می کنند:

    /dev/sda
    /dev/sdb
    /dev/sdc

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

    sda1
    sda2
    sda3

    ابزار دیگه ای که برای این منظور می تواند کمک کند gparted هست که نیاز به دانلود و نصب دارد.
    برای قدم دوم، در دسکتاپ یک پوشه به اسم wd بسازید و پوشه رو باز کنید. اینجا باید فایل KEK رو بسازیم. اگر روی هارد پسورد گذاشته بودید تو همون پوشه کلیک راست کرده و یک فایل متنی با برنامه qt creator باز کنید، کدهای Appendix A رو کپی و داخل فایل متنی باز شده paste کرده ذخیره کنید و نام فایل متنی رو wd_kdf.sh بگذارید. داخل پوشه کلیک راست کرده و ترمینال رو انتخاب کنید، عبارت
    کد:
    chmod +x wd_kdf.sh
    کپی پیست و اینتر کنید. در نهایت فایل KEK رو با این دستور در ترمینال
    کد:
    /wd_kdf.sh mypassword > kek.hex
    بسازید. به جای mypassword پسوردتون رو باید تایپ کنید.

    اگر هم که روی هارد پسورد نگذاشتید ، فایل kek رو با اجرا کردن دستور زیر بسازید:
    کد:
    echo 03141592653589793238462643383279fcebea6d9aca7686cdc7b9d9bcc7cd86 > kek.hex
    این چیپ، keyblock رو در بلاک پایانی دیسک قرار میدهد. بسته به اینکه هارد شما چه ظرفیتی دارد عدد مربوط به خودش رو در دستور زیر وارد کرده و در ترمینال اجرا کنید. اگر هارد شما 1.5 ترا بایت ظرفیت دارد به نگارنده ایمیل بزنید.

    500 GB 976769056
    750 Gb 1465143328
    1 TB 1953519648
    1.5 TB 2930272288
    2 TB 3907024928
    3 TB 5860528160
    4 Tb 7814031392


    این دستور برای هارد 4 ترابایتی و شناخته شده در sdc است:
    کد:
    sudo dd if=/dev/sdc bs=512 skip=7814031392 count=1 of=kb.bin
    حالا شما یک hexdump باید انجام دهید. با اجرای دستور زیر ( حرف c فرضی است و شما باید حرف مربوط به هارد خودتان را وارد کنید)

    کد:
    hexdump -C kb.bin
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 111.jpg
مشاهده: 33
حجم: 116.1 کیلو بایت

    در انتهای خط اول، باید عبارت WDv1 مشاهده کنید، در غیر اینصورت باید اسکریپت موجود در Appendix E اجرا کنید.
    این چیپ همه چیز رو برعکس می کند پس با این دستور باید بایتهای فایل KEK رو برعکس کنیم:
    کد:
    cat kek.hex | grep -o .. | tac | echo "$(tr -d '\n')" > kek1.hex
    حالا باید رمز بازگشایی هارد رو که به اختصار DEK می نامیم رو بسازیم. با اجرای دستورات زی رتمام بلاک های 16 بایتی برعکس شده و در مود ECB به شیوه AES رمزگذاری می شوند. سه دستور هستند که هر سه رو با هم می توان کپی و اجرا کرد:
    کد:
    for i in `seq 0 31`; do
    dd if=kb.bin bs=16 count=1 skip=$i status=none | \
    xxd -p | grep -o .. | tac | echo "$(tr -d '\n')" | \
    xxd -p -r >> kb1.bin
    done
    openssl enc -d -aes-256-ecb -K `cat kek1.hex` \
    -nopad -in kb1.bin -out kb2.bin
    for i in `seq 0 31`; do
    dd if=kb2.bin bs=16 count=1 skip=$i status=none | \
    xxd -p | grep -o .. | tac | echo "$(tr -d '\n')" | \
    xxd -p -r >> kb3.bin
    done
    در همه مراحل کار نباید اروری مشاهده کنید و اگر اروری مشاهده کردید به معنای انجام نادرست دستورات است.
    حالا با دستور زیر، تست می کنیم که ببینیم درست انجام شده یا نه. (c مفروض است)
    کد:
    hexdump -C kb3.bin
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 122.jpg
مشاهده: 32
حجم: 38.2 کیلو بایت

    در خط 17 باید عبارت DEK1 رو ببینیم
    با اجرای دو دستور زیر فایل DEK رو استخراج می کنیم:
    کد:
    dd if=kb3.bin bs=1 skip=268 count=16 of=dek0.bin status=none
    dd if=kb3.bin bs=1 skip=288 count=16 status=none >> dek0.bin
    و در نهایت با دستور زیر به hexadecimal تبدیل و برعکس می کنیم:
    کد:
    xxd -p -c 32 dek0.bin | grep -o .. | tac | \
    echo "$(tr -d '\n')" > dek.hex
    تا اینجا فایل DEK رو هم بدست آوردیم. نوبت به ساخت encryption module جدید برای kernel می رسد.
    این ماژول ترتیب بلاک های 16 بایتی روبرعکس می کند. C code لازم برای این منظور در Appendix D وجود دارد. داخل همان پوشه wd کلیک راست کرده و فایل متنی جدید ایجاد و کد مربوطه روبه شکل کامل کپی پیست و ذخیره کرده نام فایل رو rev16.c بگذارید.
    با دستور زیر
    یک makefile بسازید.
    کد:
    echo "obj-m := rev16.o" > Makefile
    حالا این دستور را اجرا نمایید:
    کد:
    make -C /lib/modules/`uname -r`/build M=$PWD
    این دستور هم ماژول ساخته شده را درون کرنل بارگذاری می کند:
    کد:
    sudo insmod rev16.ko
    اگر این ماژول را به طور دائم روی سیستم می خواهید داشته باشید دستور زیر را اجرا کنید:
    کد:
    sudo cp rev16.ko /lib/modules/3.13.2/kernel/crypto/
    و با این دستور تنظیم کنید:
    کد:
    sudo depmod
    برای دفعات بعدی هر موقع که بخواهید ماژول مذکور را اجرایی کنید کافیست دستور زیر را اجرا کنید:
    کد:
    sudo modprobe rev16
    تا به اینجا DEK و ماژول جدید رو داریم. نوبت به تنظیم فیلتر encryption می رسد. با فرض اینکه هارد شما /dev/sdc باشد، این دستورات رو اجرایی کنید:
    کد:
    echo | sudo cryptsetup -d - -c rev16-ecb \
    create wd-layer1 /dev/sdc
    cat dek.hex | xxd -p -r | sudo cryptsetup -d - --hash=plain \
    --key-size=256 -c aes-ecb create wd-layer2 /dev/mapper/wd-layer1
    echo | sudo cryptsetup -d - -c rev16-ecb \
    create wd /dev/mapper/wd-layer2
    با دستور
    کد:
    sudo file -sL /dev/mapper/wd
    چک می کنیم و اگر چیزی شبیه /dev/mapper/wd: DOS/MBR boot sector … مشاهده کردیم، هارد شما به طور اتوماتیک decrypt و mount می شود و بروید برای کپی و انتقال اطلاعات. اگر هم پیغام بالا مشاهده شد ولی هارد شما بصورت اتوماتیک mount نشد باید تغییراتی در partition table ایجاد و نتایج رو در کرنل بارگذاری کنیم. اگر هم عبارت مذکور مشاهده نشد به قسمت بارگذاری با استفاده از یک loop device مراجعه کنید.
    با این دستور پارتیشن ها رو بارگذاری می کنیم:
    کد:
    sudo kpartx -a /dev/mapper/wd
    و با این دستورات mount می کنیم:
    کد:
    sudo mkdir -p /mnt/wd
    sudo mount /dev/mapper/wd1 /mnt/wd
    حالا پارتیشن شما در قسمت /mnt/wd بارگذاری شده است.

    Mount کردن هارد با استفاده از یک loop device
    اگر هارد رو بعد اینکه از قاب در آوردید به سیستمی که ویندوز دارد متصل کرده باشید با این مشکل مواجه می شوید و mbr رو خراب می کند.
    با فرض اینکه به عنوان هارد سوم شناخته شده است یعنی /dev/sdc دستورات زیر را وارد می کنیم:
    کد:
    sudo file -s /dev/sdc
    sudo dd if=/dev/sdc skip=2048 count=16 | file -
    sudo file -s /dev/mapper/wd
    sudo dd if=/dev/mapper/wd skip=2048 count=16 | file –
    اگر فقط جواب دستور دوم و سوم data بود mbr خراب شده است و دستور kpartx درقسمت بالا هم با خطا همراه شده است. بقیه دستورات این بخش باعث تعمیرmbr می شود. دستور چهارم فرض می کند که شما یک پارتیشن داشتید وآن پارتیشن از سکتور 2048 که رایج در پارتیشن بندی بوسیله ویندوز است، شروع می شود.
    حالا loop device رو تنظیم کنید:
    کد:
    sudo losetup -o 1048576 -f /dev/mapper/wd
    در این قسمت باید هارد شما mount بشود و اگر چنین نشده نیاز به چند دستوردیگر دارید. از کامپیوتر بپرسید کدام loop device دارد استفاده میشود؟
    کد:
    sudo losetup -j /dev/mapper/wd
    در این مثال دیوایس لوپ من /dev/loop2 می باشد و این دستور رو برای mount کردن هارد اجرا کنید:
    کد:
    sudo mkdir -p /mnt/wd
    sudo mount /dev/loop2 /mnt/wd
    حالا هارد شما در قسمت /mnt/wd. بارگذاری شده است.


    Appendix A
    :Code for the bash script wd_kdf.sh
    کد:
    #!/usr/bin/python
    کد:
    import struct
    from Crypto.Cipher import AES
    QUAD = struct.Struct('>Q')
    def aes_unwrap_key_and_iv(kek, wrapped):
    n = len(wrapped)/8 - 1
    R = [None]+[wrapped[i*8:i*8+8] for i in range(1, n+1)]
    A = QUAD.unpack(wrapped[:8])[0]
    decrypt = AES.new(kek).decrypt
    for j in range(5,-1,-1): #counting down
    for i in range(n, 0, -1): #(n, n-1, ..., 1)
    ciphertext = QUAD.pack(A^(n*j+i)) + R[i]
    B = decrypt(ciphertext)
    A = QUAD.unpack(B[:8])[0]
    R[i] = B[8:]
    return "".join(R[1:]), A
    def aes_unwrap_key(kek, wrapped, iv=0xa6a6a6a6a6a6a6a6):
    key, key_iv = aes_unwrap_key_and_iv(kek, wrapped)
    if key_iv != iv:
    raise ValueError("Integrity Check Failed: "+hex(key_iv)+
    " (expected "+hex(iv)+")")
    return key
    if __name__ == "__main__":
    import sys
    import binascii
    CIPHER = binascii.unhexlify(sys.argv[1])
    KEK = binascii.unhexlify(sys.argv[2])
    print binascii.hexlify(aes_unwrap_key(KEK, CIPHER)) 
    
    


    Appendix B
    Code for the RFC 3394 unwrapping program unwrap.py, modified from https://gist.github.com/
    kurtbrose/4243633. It requires that the pycrypto package be installed.
    کد:
    #!/usr/bin/python
    کد:
    import struct
    from Crypto.Cipher import AES
    QUAD = struct.Struct('>Q')
    def aes_unwrap_key_and_iv(kek, wrapped):
    n = len(wrapped)/8 - 1
    R = [None]+[wrapped[i*8:i*8+8] for i in range(1, n+1)]
    A = QUAD.unpack(wrapped[:8])[0]
    decrypt = AES.new(kek).decrypt
    for j in range(5,-1,-1): #counting down
    for i in range(n, 0, -1): #(n, n-1, ..., 1)
    ciphertext = QUAD.pack(A^(n*j+i)) + R[i]
    B = decrypt(ciphertext)
    A = QUAD.unpack(B[:8])[0]
    R[i] = B[8:]
    return "".join(R[1:]), A
    def aes_unwrap_key(kek, wrapped, iv=0xa6a6a6a6a6a6a6a6):
    key, key_iv = aes_unwrap_key_and_iv(kek, wrapped)
    if key_iv != iv:
    raise ValueError("Integrity Check Failed: "+hex(key_iv)+
    " (expected "+hex(iv)+")")
    return key
    if __name__ == "__main__":
    import sys
    import binascii
    CIPHER = binascii.unhexlify(sys.argv[1])
    KEK = binascii.unhexlify(sys.argv[2])
    print binascii.hexlify(aes_unwrap_key(KEK, CIPHER)) 
    
    


    Appendix C
    Code for the cryptographic module that simply reverses every 4 bytes. This was written for linux kernel
    3.13.2. You may need to modify it to fit your system. Instructions for building are below

    کد:
    #include <linux/module.h>
    کد:
    #include <linux/crypto.h>
    int rev4_setkey(struct crypto_tfm *tfm, const u8 *in_key,
    unsigned int key_len)
    {
    return 0;
    }
    static void rev4_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)
    {
    int i;
    u8 temp[16];
    for (i=0;i<16;i++)
    temp[i] = in[i];
    for (i=0;i<4;i++) {
    out[0+4*i] = temp[3+4*i];
    out[1+4*i] = temp[2+4*i];
    out[2+4*i] = temp[1+4*i];
    out[3+4*i] = temp[0+4*i];
    }
    return;
    }
    static struct crypto_alg rev4_alg = {
    .cra_name = "rev4",
    .cra_driver_name = "rev4",
    .cra_priority = 100,
    .cra_flags = CRYPTO_ALG_TYPE_CIPHER,
    .cra_blocksize = 16,
    .cra_ctxsize = 0,
    .cra_alignmask = 3,
    .cra_module = THIS_MODULE,
    .cra_u = {
    .cipher = {
    .cia_min_keysize = 0,
    .cia_max_keysize = 32,
    .cia_setkey = rev4_setkey,
    .cia_encrypt = rev4_encrypt,
    .cia_decrypt = rev4_encrypt
    }
    }
    };
    static int __init rev4_init(void)
    {
    return crypto_register_alg(&rev4_alg);
    }
    static void __exit rev4_fini(void)
    {
    crypto_unregister_alg(&rev4_alg);
    }
    module_init(rev4_init);
    module_exit(rev4_fini);
    MODULE_DESCRIPTION("reverses the bytes of each 4-byte block");
    MODULE_LICENSE("GPL");
    MODULE_ALIAS("rev4");
    /* end */ 
    
    



    Appendix D
    Code for the cryptographic module that simply reverses every 16 bytes. This was written for linux
    kernel 3.13.2. You may need to modify it to fit your system. Instructions for building are below.
    کد:
    #include <linux/module.h>
    کد:
    #include <linux/crypto.h>
    int rev16_setkey(struct crypto_tfm *tfm, const u8 *in_key,
    unsigned int key_len)
    {
    return 0;
    }
    static void rev16_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)
    {
    int i;
    u8 temp[16];
    for (i=0;i<16;i++)
    temp[i] = in[i];
    for (i=0;i<16;i++)
    out[i] = temp[15-i];
    return;
    }
    static struct crypto_alg rev16_alg = {
    .cra_name = "rev16",
    .cra_driver_name = "rev16",
    .cra_priority = 100,
    .cra_flags = CRYPTO_ALG_TYPE_CIPHER,
    .cra_blocksize = 16,
    .cra_ctxsize = 0,
    .cra_alignmask = 3,
    .cra_module = THIS_MODULE,
    .cra_u = {
    .cipher = {
    .cia_min_keysize = 0,
    .cia_max_keysize = 32,
    .cia_setkey = rev16_setkey,
    .cia_encrypt = rev16_encrypt,
    .cia_decrypt = rev16_encrypt
    }
    }
    };
    static int __init rev16_init(void)
    {
    return crypto_register_alg(&rev16_alg);
    }
    static void __exit rev16_fini(void)
    {
    crypto_unregister_alg(&rev16_alg);
    }
    module_init(rev16_init);
    module_exit(rev16_fini);
    MODULE_DESCRIPTION("reverses the bytes of each 16-byte block");
    MODULE_LICENSE("GPL");
    MODULE_ALIAS("rev16");
    /* end */ 
    
    



    Appendix E
    Bash script to help find the keyblock at the end of a disk, after it has been removed from the original
    enclosure. This script is called with one argument, which is the name of the drive in linux, such as “/
    dev/sdc”.
    کد:
    #!/bin/bash
    کد:
    FILE="$1"
    DEVICE="`echo $FILE | cut -d / -f 3`"
    SIZE=`cat /proc/partitions | grep -e "$DEVICE" | awk '{print $3}' | head -n 1`
    SIZE=`expr $SIZE \* 2`
    LOWERLIMIT=`expr $SIZE - 8192` # 4 MB should be enough
    FOUND="n"
    for i in `seq $SIZE -1 $LOWERLIMIT`; do
    FIRSTLINE=`dd if=/dev/$DEVICE skip=$i count=1 status=none \
    | xxd -p | head -n 1`
    if [ `echo $FIRSTLINE | grep "^57447631"` ]; then
    echo "found JMicron keyblock at sector $i"
    FOUND="y"
    break
    fi
    if [ `echo $FIRSTLINE | grep "^574d5953"` ]; then
    echo "found Symwave keyblock at sector $i"
    FOUND="y"
    break
    fi
    if [ `echo $FIRSTLINE | grep "^57440114"` ]; then
    echo "found Initio keyblock at sector $i"
    FOUND="y"
    break
    fi
    if [ `echo $FIRSTLINE | grep "^53496e45"` ]; then
    echo "found PLX keyblock at sector $i"
    FOUND="y"
    break
    fi
    done
    if [ "$FOUND" = "y" ]; then
    echo "dumping to keyblock-$i.bin"
    dd if=/dev/$DEVICE skip=$i count=1 of=keyblock-$i.bin status=none
    exit
    fi
    echo "keyblock not found" 
    
    



    Appendix F
    Patch to add the plain64be tweak for XTS mode, from Milan Broz.* number, padded with zeros if necessary
    کد:
    diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
    کد:
    index ebf9e72d479b..d0a0d1bcb42b 100644
    --- a/drivers/md/dm-crypt.c
    +++ b/drivers/md/dm-crypt.c
    @@ -246,6 +246,9 @@ static struct crypto_aead *any_tfm_aead(struct crypt_config *cc)
    * plain64: the initial vector is the 64-bit little-endian version of the sector
    * number, padded with zeros if necessary.
    *
    + * plain64be: the initial vector is the 64-bit big-endian version of the sector
    + * number, padded with zeros if necessary.
    + *
    * essiv: "encrypted sector|salt initial vector", the sector number is
    * encrypted with the bulk cipher using a salt as key. The salt
    * should be derived from the bulk cipher's key via hashing.
    @@ -302,6 +305,15 @@ static int crypt_iv_plain64_gen(struct crypt_config *cc, u8 *iv,
    return 0;
    }
    +static int crypt_iv_plain64be_gen(struct crypt_config *cc, u8 *iv,
    + struct dm_crypt_request *dmreq)
    +{
    + memset(iv, 0, cc->iv_size);
    + *(__be64 *)&iv[cc->iv_size - sizeof(u64)] = cpu_to_be64(dmreq->iv_sector);
    +
    + return 0;
    +}
    +
    /* Initialise ESSIV - compute salt but no local memory allocations */
    static int crypt_iv_essiv_init(struct crypt_config *cc)
    {
    @@ -835,6 +847,10 @@ static const struct crypt_iv_operations crypt_iv_plain64_ops = {
    .generator = crypt_iv_plain64_gen
    };
    +static const struct crypt_iv_operations crypt_iv_plain64be_ops = {
    + .generator = crypt_iv_plain64be_gen
    +};
    +
    static const struct crypt_iv_operations crypt_iv_essiv_ops = {
    .ctr = crypt_iv_essiv_ctr,
    .dtr = crypt_iv_essiv_dtr,
    @@ -2208,6 +2224,8 @@ static int crypt_ctr_ivmode(struct dm_target *ti, const char *ivmode)
    cc->iv_gen_ops = &crypt_iv_plain_ops;
    else if (strcmp(ivmode, "plain64") == 0)
    cc->iv_gen_ops = &crypt_iv_plain64_ops;
    + else if (strcmp(ivmode, "plain64be") == 0)
    + cc->iv_gen_ops = &crypt_iv_plain64be_ops;
    else if (strcmp(ivmode, "essiv") == 0)
    cc->iv_gen_ops = &crypt_iv_essiv_ops;
    else if (strcmp(ivmode, "benbi") == 0)
    @@ -2986,7 +3004,7 @@ static void crypt_io_hints(struct dm_target *ti, struct queue_limits *l
    static struct target_type crypt_target = {
    .name = "crypt",
    - .version = {1, 17, 0},
    + .version = {1, 17, 1},
    .module = THIS_MODULE,
    .ctr = crypt_ctr,
    .dtr = crypt_dtr, 
    
    

  2. #2
    تاریخ عضویت
    2017/03/06
    نوشته ها
    2
    امتیازها
    4,926
    سطح
    44
    0
    کاربر جدید
    سلام
    متاسفانه برد هارد 3 ترابایت مای بوک بنده هم دچار مشکل شده
    منتها چیپست برد من : asmedia asm 1051w هست که در لیست چیپست های شما نیست
    میشه بررسی کنید ببینید راه حلی داره ؟
نمایش نتایج: از 1 به 2 از 2

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. فروش لپ تاپ سرفیس بوک Surface Book 128GB
    توسط iKeyvan در انجمن خرید و فروش لپ تاپ - لوازم جانبی
    پاسخ: 3
    آخرین نوشته: 2017/08/24, 04:05
  2. HP pro Book 4530s
    توسط it6572 در انجمن خرید و فروش لپ تاپ - لوازم جانبی
    پاسخ: 2
    آخرین نوشته: 2014/09/03, 01:04
  3. مشکل در صحه بوت تبلت ایسوس مدل vivo book
    توسط navid4132 در انجمن نوت بوک و تبلت
    پاسخ: 0
    آخرین نوشته: 2013/10/28, 07:16
  4. عرضه سری جدید MAC Book از تابستان
    توسط th e nd در انجمن اخبار، آموزش و بررسی لپ تاپ ها، نت بوک ها و All in One ها
    پاسخ: 0
    آخرین نوشته: 2013/04/26, 09:36
  5. ویندوز 8 در روح اولترابوک ASUS Vivo Book S400
    توسط Beni7192 در انجمن اخبار سایت سخت افزار
    پاسخ: 0
    آخرین نوشته: 2012/10/15, 10:32

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •