Files

92 lines
2.1 KiB
Plaintext

seti $printhelp = $printhelp
seti $help = $help
if $help = 1
echo 'Western Digital (older) dump module 42 to file using vendor specific commands.'
echo 'This will dump the first 3 sectors of the module to the file "mod42.bin".'
echo 'It will also show it on the screen.'
if $printhelp = 1
exit 0
endif
echo 'Hit ENTER to continue...'
userinput $choicestring
previousscript
endif
include good_subroutines.osc
# set needed commands so they exist to pass checks
seti $command_failed = $command_failed
# set the filename to be written to
sets $filename = "mod42.bin"
# delete existing file so there is no confusion
deletefile $filename
# perform identify device command to get some info
echo "Performing identify device command"
buffersize 512
setreadpio
ata28cmd 0 0 0 0 0 0xa0 0xec
# check if command failed
gosub status_check
wordflipbuffer 0 512
sets $model = buffer 54 40
echo "Model= " $model
# Put the drive is a special mode (super on)
buffersize 0
clearbuffer
setreadpio
ata28cmd 0x57 0x44 0x43 0x00 0x00 0xa0 0x8a
# check if command failed
gosub status_check
# read sectors of the module
seti $count = 3
seti $buffer_size = $count * 512
buffersize $buffer_size
clearbuffer
setreadpio
ata28cmd 0x00 $count 0x00 0x00 0x0F 0xE0 0x21
# check if command failed
gosub status_check
# perform a reset since I don't know the super off command
gosub reset_device
# write the sector to a file
writebuffer $filename 0 0 $buffer_size
# show it on the screen
printbuffer 0 $buffer_size
# find the user and master passwords
# they seem to always be just before the model number
seti $count = 0
seti $count_max = $buffer_size - 40
seti $found_password = 0
while $count < $count_max
sets $model_check = buffer $count 40
if $model = $model_check
seti $found_password = 1
break
endif
seti $count = $count + 1
done
if $found_password = 1
echo ""
seti $user_offset = $count - 32
seti $master_offset = $count - 64
echo "Possible Master password:"
printbuffer $master_offset 32
echo "Possible User password:"
printbuffer $user_offset 32
else
echo "Unable to locate passwords"
endif
previousscript
end