Ru-Board.club
← Вернуться в раздел «Магнитные носители информации»

» Ремонт накопителей Seagate. Часть 4

Автор: tametung
Дата сообщения: 28.08.2012 01:27

Цитата:
Комплекс PC3000-UDMA пароль по ATA интерфейсу снимает, но команд кроме разработчиков ни кто не знает, все засекречено.

А вот и нет. Комплекс снимает не по интерфейсу.


ВНИМАНИЕ! Накопитель защищен паролем.

Ошибка инициализации COM порта!
COM Port in not available. Port selection canceled

Tech Key...
Ошибка запуска команды "En Tech" (ABR)



Автор: HDstuff
Дата сообщения: 28.08.2012 02:07
Нестабильная прошивки или интерфейс проблемой?
Винт U7 ST340012A (с Vendor и OVL tracks от ST340017A - спасибо GennadyIS!!!) завершила SELFSCAN с ограниченной здоровья:


Код: T>Pgm=00 Trk=0C97B(0C9F4).0(0).200(000) Zn=9 Err=00 ErCt=0000 Hlth=0018 CHlth=0000 Ready LBA=00000000

Log 1E - Health 0008 - Time = 00:06:14 Log Type = 01
[...]
Log 20 - Health 0010 - Time = 00:04:48 Log Type = 01
Автор: GennadyIS
Дата сообщения: 28.08.2012 07:05
HDstuff
1.Такие большие значения этих атрибутов для Seagate - норма, можете не волноваться.
2. Под рукой нет U7 посмотреть размер кэш, по моему у них 1 Mbyte , а у ST340017A - 2Mbyte.
Попробуйте изменить 15-й ключик стаффа:
T>F
Set Stuff => ASCI150400
Автор: YuryBogdanov
Дата сообщения: 28.08.2012 10:20
//понято
Автор: tametung
Дата сообщения: 28.08.2012 10:50

Цитата:
первый S-1A (родной слитый)

значит слито не правильно (либо маска)
Автор: GennadyIS
Дата сообщения: 28.08.2012 10:52

Цитата:
первый S-1A (родной слитый)

А каким образом сливали? Неправильно считано.
Автор: YuryBogdanov
Дата сообщения: 28.08.2012 11:36
//усвоено
Автор: GennadyIS
Дата сообщения: 28.08.2012 11:47
Так байтики по адресу 0х140- 0х167 в serialfl.bin кто за вас править будет?

Добавлено:

Цитата:
STR/e2,140,0/1/rep_0x140-0x167.log/1/0/1
~~~~~~
STR/e2,167,0/1/rep_0x140-0x167.log/0/0/1

Вот это в скрипте зачем по вашему?
Автор: YuryBogdanov
Дата сообщения: 28.08.2012 12:16
GennadyIS
вот я олень... сам же высмотрел различие, сам же указал адреса... отныне ясно
Автор: tametung
Дата сообщения: 28.08.2012 12:26
GennadyIS

Цитата:
Так байтики по адресу 0х140- 0х167 в serialfl.bin кто за вас править будет?

на .10 можно получать дамп целиком сразу
F>e5
F>e4,200,800,0
и забирать B880,880....B8FF,8FF
так много быстрее

YuryBogdanov

Цитата:
а вот маска вряд ли.

если отрабатывает e5 то не маска. были
Цитата:
NIGHTHAWKPLUS
масочные.



Автор: GennadyIS
Дата сообщения: 28.08.2012 13:06
tametung
Знаю, поэтому и спросил " каким образом сливали?"
Автор: YuryBogdanov
Дата сообщения: 28.08.2012 16:40
GennadyIS

как вы и советовали, пустил тест с f/w 3.AAA и S-20 с двумя головами. уже прошел 31ый тест и начался 32ой. такого, что творилось на S-1A не наблюдается.
Автор: REY113
Дата сообщения: 28.08.2012 16:46
AntiMember
Скачал, поставил. Запустил скрипт.
Кстати... он сильно ругался на 127-ю строчку. Неверный, мол, параметр, =.
Убрал "=" - пошел работать!
Только, вот на скорости выше 38400 у меня почему-то связи нет (или я не знаю как переключать в "железяке" корректно скорость....

В данный момент скрипт "в работе" (читает). Оставлю, наверное, на ночь. Раз со скоростью не прокатило (я полагаю, виной тому TTL-переходник, собранный на ТЛ2-ой микросхеме, а не на "МАКСе". Но на "Максе" у меня почему-то даже в терминале не заработал...
Ладно... До утра время терпит. Пусть читает!
Как я потом из считанного бинарник сделаю? Через меню "transfer"?

А вообще,.... свинья я! Забыл с первых строк выразить Вам благодарность за помощь!
Автор: AlexTAT
Дата сообщения: 28.08.2012 18:07
Подскажите , что я не так делаю, Винт ST380215A 7200.10, изначально карта голов была такая


Код: k
Head Mask = FE
Map 00 to 01 00
Map 01 to 00 00
Автор: igor_me
Дата сообщения: 28.08.2012 19:04

Цитата:
тест успешно завершается, винт выходит на уровень 50


Цитата:
Сразу после подачи питания, запускается тест 74

Однако . Ау, спецы, тоже хочу послушать ответ...
Автор: HDstuff
Дата сообщения: 28.08.2012 20:47
GennadyIS:

Цитата:
Попробуйте изменить 15-й ключик стаффа:
T>F
Set Stuff => ASCI150400

Я и сделал. То же самое сообщение об ошибке.
Проверка RAM чипа:
EltronTech EM636165TS-6
это 1M x 16 (2MB), в соответствии с загрузкой сообщение:

Код: Interface task reset
1024k x 16 buffer detected
Автор: tametung
Дата сообщения: 28.08.2012 20:53

Цитата:
В данный момент скрипт "в работе" (читает). Оставлю, наверное, на ночь.

А можно посмотреть скрипт ? Вообще при работе с памятью,скрипт должен отработать в минуты.
Автор: AntiMember
Дата сообщения: 28.08.2012 22:17
tametung

Цитата:
Вообще при работе с памятью,скрипт должен отработать в минуты.

Нет. Там скрипт чтения дорожек служебки. Просто зачем все читать...
REY113

Цитата:
Как я потом из считанного бинарник сделаю? Через меню "transfer"?

Там и так дорожки в винарном виде. 00.000.BIN, 00.001.BIN и т.д.
Автор: tametung
Дата сообщения: 29.08.2012 00:49
AntiMember

Цитата:
Нет. Там скрипт чтения дорожек служебки. Просто зачем все читать...

а зачем для снятия пароля читать трэки ? Вы же сами признавали что оптимальней читать память.
Тем более что для этого не нужно читать всю память. Я же давал на ihdd cкрипт,снимающий со всех
семейств Seagate. (oт 7200.7 до .F3) там даже буффера уже были подобраны.

Автор: AntiMember
Дата сообщения: 29.08.2012 01:02
tametung

Цитата:
Я же давал на ihdd cкрипт,снимающий со всех
семейств Seagate. (oт 7200.7 до .F3) там даже буффера уже были подобраны.

Отдал то, что помнил, где лежит. Ссылки на ваше под рукой нет. Дайте ему,
если не далеко. Я читал память целиком для дизассембла. Точного смещения
пароля для его вари не знаю, потому скрипт под память и не давал. По дорожкам
легче ориентироваться при поиске. Да и прочитать их, думаю, штук двадцать
хватит. А это не долго.
Автор: tametung
Дата сообщения: 29.08.2012 01:14
AntiMember

Цитата:
Да и прочитать их, думаю, штук двадцать хватит. А это не долго.

Увы это не так. Может понадобится и 40 и больше.

Цитата:
По дорожкам легче ориентироваться при поиске.

В чем ориентироваться ? Какая разница где он лежит ? Проще выделить пароль и снять через интерфейс,а не
писать в SA. (а замена на известный в памяти не так проста,у меня на ура не получилось)

Цитата:
Точного смещения пароля для его вари не знаю

смещение (номер буфера) скрипт должен находить автоматом.А вот поиск _с какого места начать_ - да,должен быть выбран на основе статистики снятий. Или вы про смещение от сигнатуры ?

Цитата:
Дайте ему, если не далеко.

У меня нет под руками (да и не храню я их.Когда знаешь принцип быстро можно собрать из блоков.Тем более что там никаких извратов кроме парсинга буферов не нужно.)

p.s.А какой вообще диск ?


Автор: AntiMember
Дата сообщения: 29.08.2012 01:18

Цитата:
ST9500325AS

Автор: tametung
Дата сообщения: 29.08.2012 01:26
Вот какой то нашел.Может он ?

Код:
Скрипт не верно работает на ST1000DL002.
Нужна более новая версия.

Автор: GennadyIS
Дата сообщения: 29.08.2012 06:23
AlexTAT
Переписать флешь, изменив байт по адресу 0x13B c FD на FE.
tametung
Вот ещё Ваш :
[more]/* REXX */
    cls
    call ZocTimeout 3
    call GET_LEVEL
    abst=_IN("?",0.6)
    i=pos("-",abst,1)+1
    j=pos(" ",abst,i)
    DFB=substr(abst,i,j-i)
    CMD="B" ; DR="C:\_DUMPS" ; LOC=""
MEM:    
    ADDR=GET("CMD="||CMD||" ADDRESS?","0980",len_ADDR)
    if x2d(ADDR) >= x2d(DFB) then do
     say
     say ADDR "not in the INTERVAL 000000-"||DFB||" RETRY"
     signal MEM
    end
    DUMPLEN=d2x(x2d(DFB)-x2d(ADDR))
    
/*    
    ADDR=GET("CMD="||CMD||" ADDRESS?",d2x(0,len_ADDR),len_ADDR)
    DUMPLEN=GET("CMD="||CMD||" ADDRESS="||ADDR||" LENGTH?","000E22",len_ADDR)
    if x2d(DUMPLEN)=0 then DUMPLEN=d2x(1,len_ADDR)
    FILE=F_CREATE(DR,CMD||"."||ADDR||"."||DUMPLEN||".BIN") ; t1=time(S)
*/
    
    
    
    NXTADDR=GET_DATA("B",ADDR,DUMPLEN)
    call DONE "PWD NOT FOUND"
ZSEND:
    parse arg R4,R5
    if R5="" then do
     if len_ADDR=8 then call ZocSend R4
     else do
     do m=1 to length(R4)
     TMP=substr(R4,m,1)
     call ZocSend TMP
     call ZocWait TMP
     end
     end
     call ZocSend "^M"
     call ZocWait LEVEL
    end
    else do
     call ZocSend R4
     call ZocDelay R5
    end
RETURN    
_IN:
    parse arg R1,R2,R3
    if arg(3)="" then R3=4096
    call ZocReceiveBuf R3
    call ZSend R1,R2
RETURN ZocReceiveBuf(0)
GET_LEVEL:
    i=0 ; j=0
BEGIN:
    if i=0 then do
     j=j+1
     if j=3 then do
ERROR: say "COMMUNICATION PROBLEM.SCRIPT STOP"
exit
end
abst=_IN("^Z",0.4)
i=pos(">",abst,1)
     call ZocDelay 0.4
signal BEGIN
    end
    LEVEL=substr(abst,i-1,2)
    len_ADDR=6
    if pos("F3",abst,1)\=0 then len_ADDR=8
    call SET_LEVEL "T>"
    nASCII=""
    do j=0 to 127
     if \datatype(d2c(j),x)=1 then do
nASCII=nASCII||d2c(j)
end
end
ZocSuppressOutput 1
RETURN
SET_LEVEL:
    if LEVEL\=arg(1) & LEVEL\="F>" then do
     LEVEL=arg(1)
     TMP="/"||left(LEVEL,1)
     if LEVEL="T>" then TMP="/"
     call ZSend TMP
    end
RETURN
GET_DATA:
    parse arg _CMD,_ADDR,_COUNT,C_SECTOR,_DMP

    G1="1>" ; _WAIT=0 ; LEN_RESULT=1

    if _CMD="B" then do
     G1="2>"
     _ADDR=d2x(x2d(_ADDR)*512,len_ADDR)
    end
    call SET_LEVEL G1

    if _CMD="D"|_CMD="B" then LEN_RESULT=512

    if _CMD="-"|_CMD="m" then do
     LEN_RESULT=2
     G1=x2d(_ADDR)//2
     _ADDR=d2x(x2d(_ADDR)-G1,len_ADDR)
    end

    do x2d(_COUNT)

     _ADDR=right(_ADDR,len_ADDR,"0")
     ADRLO=right(_ADDR,4)
     ADRHI=left(_ADDR,len_ADDR-4)
     NBUFF=d2x(x2d(_ADDR)%512,4)
     _MSG="ADDR: "||_ADDR
     _TASK=_CMD||ADRHI||","||ADRLO

     if _CMD="e2" then do    
     _MSG="ADDR:"||ADRLO
     _TASK=_CMD||","||ADRLO
     end    
     if _CMD="B" then do
     _MSG="BUFF: "||NBUFF
     _TASK=_CMD||NBUFF||","||NBUFF
     end
     if C_SECTOR\="" then do
     _MSG=D_MSG||C_SECTOR
     C_SECTOR=d2x(x2d(C_SECTOR)+1,03)
     end

     call RECEIVE
     _ADDR=d2x(x2d(_ADDR)+LEN_RESULT,len_ADDR)
    end

RETURN _ADDR
RECEIVE:
    RTR=0
    PATTERN=LEVEL
    N_STR=16
    if len_ADDR=8 then do
     PATTERN="F3 "||LEVEL
     N_STR=32
    end
    if _CMD="S"|_CMD="U"|_CMD="m" then do
     _WAIT=1
     LEVEL="-->"
     PATTERN="-->"
    end
RETRY:

    call ZocNotify _MSG
    abst=_IN(_TASK)

if _WAIT=1 then do
LEVEL="1>"
call ZocSend "^M"
end
if LEN_RESULT=512 then do
abst=translate(abst," ",nASCII)
     PATTERN=_ADDR
end

    i=pos(PATTERN,abst,1)
    if i=0 then do
     RTR=RTR+1
     if RTR<3 then do
     say "RETRY "||MSG
     signal RETRY
     end
     say TASK||"ERROR"
     signal ERROR
    end
    if LEN_RESULT<512 then do
     abst=delstr(abst,i,)
     abst=translate(abst," ",nASCII)
     abst=space(abst,0)
     abst=x2c(right(abst,2*LEN_RESULT))
     abst=reverse(abst)
    end
    else do
     abst=delstr(abst,1,i-1)
     abst=space(abst,0)
     i=1
     j=(32/N_STR)*(x2d(10))*2
     do N_STR
     abst=delstr(abst,i,len_ADDR)
     i=i+j
     end
     abst=delstr(abst,i,)
     i=pos("EDFE0D90",abst,1)
     if i\=0 then do
     TMP=substr(abst,i+100,64)
     abst=x2c(TMP)
     TMP=d2x(x2d(_ADDR)/512,len_ADDR-4)
     FILE=F_CREATE(DR,"_"||TMP||".BIN") ; t1=time(S)
     call charout FILE,abst
     call DONE
     end
    end
    if _DMP="" then call charout FILE,abst
RETURN
F_CREATE:
    parse arg D1,F1
    if stream(D1,"C","QUERY EXISTS")="" then do
call ZocShell MD D1,1
    end
    F1=D1||"\"||F1
    if stream(F1,"C","QUERY EXISTS")\="" then do
call ZocShell DEL F1,1
    end
    call stream F1,"C","OPEN WRITE"
RETURN F1
GET:
    parse arg MSG,DEFAULT,TYPE
L0:     TMP=word(ZocAsk(MSG,DEFAULT),1)
    if TMP="" | TMP="##CANCEL##" then call CHK_NO(L0)
    if TYPE="" then RETURN TMP
    if datatype(TMP,X)=0 then do
     say "PARAM ["||TMP||"] not HEX.RETRY"
     signal L0
    end
RETURN right(TMP,TYPE,"0")
CHK_NO:
    parse arg V1,V2
    V2=LOC
    answer= ZocMsgBox(V2||" CONTINUE ?",2)
    if answer=##YES## then signal value V1
/*    if V1\=EXITDOOR then signal value EXITDOOR */
    say "BYE!"
    exit
DONE:
    if arg(1)="" then do
     call stream FILE,"C","CLOSE"
     R1=FILE||" done in "||time(S)-t1||" sec."
    end
    else R1="PWD NOT FOUND"

    say
    say R1
    exi[/more]
Автор: REY113
Дата сообщения: 29.08.2012 06:54
tametung
Вы очень хороший человек!!! Благодаря приведенному Вами скрипту я получил пароль через 3 секунды!!!
Да хранит Вас Бог!
Спасибо!
Автор: GennadyIS
Дата сообщения: 29.08.2012 07:36
To HDstuff
Покажите лог старта с отключенным интерфейсным кабелем.

Добавлено:
И проинициализируйте SMART
1>N1
Автор: tametung
Дата сообщения: 29.08.2012 07:53
GennadyIS

Цитата:
Вот ещё Ваш

Cпасибо

REY113
И Вам спасибо.


Автор: AlexTAT
Дата сообщения: 29.08.2012 09:19
GennadyIS
Спасибо, помогло. После подачи питания начался 83 тест, я его прервал, залил оверлей и вендор. Поставил его на secure erase, думаю нормально будет работать.
Автор: YuryBogdanov
Дата сообщения: 29.08.2012 11:58
Завершился тест NIGHTHAWKPLUS STM3250310AS. Успешно влиты оверлей и вендор.
Итог:

Цитата:
SLIPPED = 529928 ALLOWED = 1999998
SLIPPED at Hd00 = 55333 Hd01 = 474595

Интересно, насколько хватит второй поверхности...
Автор: HDstuff
Дата сообщения: 29.08.2012 12:29
Все нормально. Я сделал 1> N1 уже (после SELFSCAN и загрузки Vendor и OVL)


Цитата:
Interface task reset
1024k x 16 buffer detected
AVALANCHE - 1_Disk S.30 08-30-02 15:13 rcwood

Buzz - Head Mask 000F - Switch to full int.
Spin Ready
3.31 09-09-02 11:30 rcwood
(P)ATReset
Master

[Ожидание несколько минут для сообщения ... ничего ... ^Z]
T>/1
1>N1

Initializing SMART

Sectors...................................
1>

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112

Предыдущая тема: Оптимален ли дефолтный размер блока 128Кб для RAID0 (Intel)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.