Jump to content

rodyefew

Member
  • Posts

    11
  • Joined

  • Last visited

  • Donations

    0.00 USD 
  • Country

    Australia

About rodyefew

rodyefew's Achievements

0

Reputation

  1. Hi jaclaz, The command sequence is most likely the same as the one you quote, which is the (second) sequence of commands. Sorry I can't be more certain than that. I presume the problem I had was a BSY (i.e. not detected *at all* by BIOS, momentatily hangs system, not detectable by any other software). Thanks, rodyefew
  2. Thanks for the suggestion. The only parts I haven't been able to test are the CPU / mobo. I've checked everything else with working replacements, and haven't been able to make the problem go away. I suppose using one of a pair of identical sticks of RAM could have a slim chance of slipping through the tests, but I would be greatly surprised if this were the case.
  3. Hi, I have 2x ST32000641AS drives. One of them went into a coma a few months ago. Some background info: My computer has a peculiar problem when it is asked to (soft) switch on - most of the time it will power on for a few seconds, then off for a few seconds; then on for a few seconds, then off for a few seconds; - 3 cycles - and then on the fourth power-on, it will usually POST. If I've been using the machine and just switch it on (or restart - PITA) it will hang before POST, with CPU at max and even reset won't work. I have to switch it off at the PSU, then switch it on and let it go through the motions as mentioned. Only sometimes it will power on from the first button press (soft switch), usually after I haven't used it for a while (1/2 a day or so). Note that discharging the motherboard and then switching it on is not the same as not using it for a few hours. Thermals are okay. There is something more sinister at play. The on/off for a few seconds isn't enough for the hard drives to fully spin up / down. The next power-ons happen before the drives fully stop spinning. These drives take about 14 seconds to spin down. I *think* up is a bit faster. The important parts: So one day one of the the drives causes the computer to hang for a few seconds when the BIOS detects the drives on boot, and then the computer will proceed without detecting the drive in question. Seatools, etc - nothing managed to have it show up. After searching, it looked like a typical 7200.11 issue, and I proceeded to repair it in the same manner as described on other threads and sites. I don't know which specific issue this was - LBA0, BSY, etc. I trawled a bit of info to determine into which category this fits in, but couldn't work it out. I cut a CA-42 cable and successfully established a terminal link to the PCB. No batteries involved. I found that if I disconnected the heads or the motor, I could not communicate with PCB at all. If both were connected, I could. I didn't try completely disconnecting the PCB. So I issued all commands with the PCB fully connected. I tried the usual sequence of commands. Sin Down, Spin Up, and then N1. As soon as I get to the N1 command, I get what seems to be a continuous loop of errors likeso: LED:000000CC FAddr:00??????? I saw an article (http://computersciencelabs.blogspot.com/2011/02/seagate-720012-sim-error-firmware-fault.html) which mentioned issuing the m0 command after spin-up and then the N1 command later, quoted below: That worked. I got access to my data. Also, after the successful N1 command, I got the following messages: F3 1>N1 Clear SMART is completed. F3 1> Rst 0x??? (P) SATA Reset This is the first time I saw the message "(P) SATA Reset", even though the page referenced in the URL above shows that appearing in various locations before this last appearance. I hope this helps someone. If I have to repeat this on another of my drives, I'll remember to take more detailed notes. After preparing the cable, I found that the biggest throw-offs were trying to figure out why the HDD wouldn't talk with the heads or motor isolated, and the sequence of commands. I must say thanks to all those people who discovered the problems in the first place and then went to the trouble of preparing images and guides for all to benefit, and the others who help in the forums. Poo on Seagate.
  4. Ahh.. I suppose they're not. I assumed it was just a beefier version. Hmm. To be honest, I don't know which problem I had, only that it failed to be detected in BIOS (and would hang it for a while) or Windows or any software. No funny clicks or whirrs. Funnily enough, I "read" it, but didn't think too much and plunged into it. I appreciate your reply and will try and piece together what I did in a new thread, as you mentioned. Perhaps when the second XT dies, I would have more solid information. Just hoping it doesn't come to that, or if it does, that it would be as painless as this time to fix it. (Although it took me a good month or two to get around to it). Thank you jaclaz rodyefew
  5. Hi All, I have 2x Seagate Barracuda XT ST32000641AS drives. CC13 firmware. One of them dropped out of BIOS, and I lost access to valuable data (no recent backup). I cut a CA-42 cable and could access the terminal, however, the methods of disconnecting the motor or heads from the PCB didn't work. Whenever either was disconnected and power switched on to the Hard Drive, there would be no terminal access at all. Not sure if this is a symptom of voltage or whatnot. I didn't muck around with any batteries or test the voltage. So I basically just worked with the terminal and issued the various commands. Also, as described here: http://computersciencelabs.blogspot.com/2011/02/seagate-720012-sim-error-firmware-fault.html I had SMART failing when I type N1, so I had to issue the m0 command first. I had slightly different output to the page, but that was the first time I saw the "(P) SATA Reset" message. So yay my data is back. I'm putting them in mirror mode now. Can't trust them any more. I hope this helps someone. Also, thought I'd add - these drives are just under 8m old. My PC has an oddity - when I touch the power switch, it switches on for a few seconds and then switches off - 3 times. After that sometimes it POSTs, and other times the fan goes crazy and it hangs. Even reset doesn't work. I then need to flip the power switch on the PSU, then switch it on again, then press the power button. Usually after this it works. So that's 4 power cycles to get the machine going. I haven't been able to figure this problem out yet, but I suspect it had at least contributed to the SMART problem. I usually leave my machine running to avoid the power cycling. My mobo / CPU combo is probably shot. Checked thermals, PSU, power overloading, different RAM sticks, removal of all extra peripherals, CMOS reset, etc.
  6. Hi, This is the (somewhat) modified code (above). The original is here: http://www.911cd.net/forums/index.php?showtopic=19316 I couldn't get the original code to compile for some reason. Probably just a bad copy / paste job. Regards, rodyefew
  7. Ah - there's two versions linked a few posts back in this thread (just tried to download and it worked). One version requires VC2008 runtime and the other (larger) one doesn't.
  8. I've only tested this on XP 32-bit. I dare-say that there may be UAC issues and other untolds with any combination of Win V/7/64. Will be interested in hearing feedback. Here's the somewhat modified code. Full credits where due. #include <windows.h> #include <wincrypt.h> #include <stdio.h> #define HP_HASHVALUE HP_HASHVAL /* This program turns the Driver signing Policy On/Off for Windows XP * Written by Stefan `Sec` Zehl <sec@xxxxxx>, 15.11.2004 * * Thanks to sysinternals.com for regmon and apispy * to msdn.microsoft.com for windows reference * to cygwin for their environment */ void MyHandleError(char *s){ printf("Error: %s, number %x\n.",s,(unsigned int)GetLastError()); exit(1); } //-------------------------------------------------------------------- int main(int argc, char* argv[]) { if ((argc < 2) || (argc > 2)) { printf( "usage: %s [on|off]", argv[0] ); exit(1); } //printf("argc = %x\n",argc); //for(int i = 0; i < argc; i++) // printf("argv[%x] = %s\n",i,argv[i]); //return 0; BYTE ignoreOn; if (strcmp(argv[1], "on")) { ignoreOn=0; } else if (strcmp(argv[1], "off")) { ignoreOn=1; } else { printf( "usage: %s [on|off]", argv[0] ); exit(1); } printf("yay=%x",ignoreOn); //exit(1); HCRYPTPROV hCryptProv; HCRYPTHASH hHash; BYTE data[16]; DWORD len; DWORD seed; HKEY hkey; // BYTE ignoreOn=0; // This is the On/Off toggle char input[4]; int x; // HKLM\System\WPA\PnP\seed if(RegOpenKeyEx( HKEY_LOCAL_MACHINE, L"System\\WPA\\PnP", 0, KEY_READ, &hkey )==ERROR_SUCCESS){ printf("RegOpenKey sucess\n"); }else{ printf("RegOpenKey failure\n"); }; len=sizeof(seed); if(RegQueryValueEx( hkey, L"seed", NULL, NULL, (BYTE*)&seed, &len )==ERROR_SUCCESS){ printf("RegQueryValue sucess\n"); }else{ printf("RegQueryValue failure\n"); }; if(hkey) RegCloseKey(hkey); printf("Seed=%x\n",(unsigned int)seed); if(CryptAcquireContext( &hCryptProv, NULL, NULL, PROV_RSA_FULL, 0)) // flag values { printf("A cryptographic context has been acquired.\n\n"); } else { if (GetLastError() == NTE_BAD_KEYSET) { if(CryptAcquireContext( &hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET)) { printf("A new key container has been created.\n"); } else { printf("Could not create a new key container.\n"); exit(1); } } else { printf("A cryptographic service handle could not be " "acquired.\n"); exit(1); } } // End of else. //-------------------------------------------------------------------- // Create a hash object. if(CryptCreateHash( hCryptProv, CALG_MD5, 0, 0, &hHash)) { printf("An empty hash object has been created. \n"); } else { MyHandleError("Error during CryptBeginHash!\n"); } //-------------------------------------------------------------------- // Compute the cryptographic hash on the data. input[0]=0; input[1]=ignoreOn; // This is the Value! input[2]=0; input[3]=0; if(CryptHashData( hHash, (BYTE*)input, sizeof(input), 0)) { printf("The data has been hashed. \n"); } else { MyHandleError("Error during CPHashData!\n"); } //-------------------------------------------------------------------- if(CryptHashData( hHash, (BYTE*)&seed, sizeof(seed), 0)) { printf("The data has been hashed. \n"); } else { MyHandleError("Error during CPHashData!\n"); } //-------------------------------------------------------------------- len=sizeof(data); if( CryptGetHashParam( hHash, HP_HASHVALUE, data, &len, 0)) { printf("The hash has been retrieved. \n"); } else { MyHandleError("Error during CPGetHashParam!\n"); } //-------------------------------------------------------------------- // Clean up. // Destroy the hash object. if(hHash) { if(!(CryptDestroyHash(hHash))) MyHandleError("Error during CryptDestroyHash"); } // Release the CSP. if(hCryptProv) { if(!(CryptReleaseContext(hCryptProv,0))) MyHandleError("Error during CryptReleaseContext"); } printf("Hash: "); for(x=0;x<sizeof(data);x++){ printf("%x ",data[x]); }; printf("\nCreate md5 hash completed without error. \n"); //-------------------------------------------------------------------- // HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\PrivateHash if(RegOpenKeyEx( HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion\\Setup", 0, KEY_WRITE, &hkey )==ERROR_SUCCESS){ printf("RegOpenKey sucess\n"); }else{ printf("RegOpenKey failure\n"); }; len=sizeof(seed); if(RegSetValueEx( hkey, L"PrivateHash", 0, REG_BINARY, data, sizeof(data) )==ERROR_SUCCESS){ printf("RegSetValueEx sucess\n"); }else{ printf("RegSetValueEx failure\n"); }; if(hkey) RegCloseKey(hkey); //-------------------------------------------------------------------- // HKLM\Software\Microsoft\Driver Signing\Policy if(RegOpenKeyEx( HKEY_CURRENT_USER, L"Software\\Microsoft\\Driver Signing", 0, KEY_WRITE, &hkey )==ERROR_SUCCESS){ printf("RegOpenKey sucess\n"); }else{ printf("RegOpenKey failure\n"); }; len=sizeof(seed); if(RegSetValueEx( hkey, L"Policy", 0, REG_BINARY, &ignoreOn, 1 )==ERROR_SUCCESS){ printf("RegSetValueEx sucess\n"); }else{ printf("RegSetValueEx failure\n"); }; if(hkey) RegCloseKey(hkey); //-------------------------------------------------------------------- // HKLM\Software\Microsoft\Driver Signing\Policy if(RegOpenKeyEx( HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Driver Signing", 0, KEY_WRITE, &hkey )==ERROR_SUCCESS){ printf("RegOpenKey sucess\n"); }else{ printf("RegOpenKey failure\n"); }; len=sizeof(seed); if(RegSetValueEx( hkey, L"Policy", 0, REG_BINARY, &ignoreOn, 1 )==ERROR_SUCCESS){ printf("RegSetValueEx sucess\n"); }else{ printf("RegSetValueEx failure\n"); }; if(hkey) RegCloseKey(hkey); exit(0); }
  9. Just want to add that the version posted above relies on VC++ 2008 runtime being installed. I'm attaching a version that should be statically linked (slightly larger). Please let me know how you go! SigVerifOnOff.exe
  10. And the single-file source code for the same exe above. Compiles in VS2008. Doesn't need / use any funny header / resource file (stdafx, etc). As a person who doesn't understand C++ very well at all, those files confuse the nuts out of me. Just remove them after creating a new project, paste this source code in, and try to compile. I hope MS doesn't change the algo.
  11. Hi There, I've tried the certificate import method on XP, to no avail. I've adapted some code, credit to the following: See also, at http://www.911cd.net/forums/index.php?showtopic=19316 and have come up with the attached exe file. Fixed some basic logic bugs. Works on my XP like this: @echo off SigVerifOnOff.exe off start /wait SetupVirtualCloneDrive5432.exe /S SigVerifOnOff.exe on del "C:\Documents and Settings\All Users\Desktop\Virtual CloneDrive.lnk" cscript /nologo fixLetter.vbs I also ripped most of this code form somewhere to ensure a drive letter. Note that each instance of VCD will be changing instance numbers, so some more smarts needs to be built into it: On Error Resume Next 'Device IDs DeviceID1 = "SCSI\CDROM&VEN_ELBY&PROD_CLONEDRIVE&REV_1.4\1&2AFD7D61&0&000" DeviceID2 = "SCSI\CDROM&VEN_ELBY&PROD_CLONEDRIVE&REV_1.4\1&2AFD7D61&1&000" DeviceID3 = "SCSI\CDROM&VEN_ELBY&PROD_CLONEDRIVE&REV_1.4\1&2AFD7D61&2&000" DeviceID4 = "SCSI\CDROM&VEN_ELBY&PROD_CLONEDRIVE&REV_1.4\1&2AFD7D61&3&000" DeviceID5 = "SCSI\CDROM&VEN_ELBY&PROD_CLONEDRIVE&REV_1.4\1&2AFD7D61&4&000" strComputer = "." Dim nRtn, WshShell Set WshShell = WScript.CreateObject("WScript.Shell") Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_CDROMDrive") Dim driveFound driveFound = False For Each objItem in colItems 'WScript.Echo objItem.DeviceID & "=" & objItemDrive If driveFound Then Exit For Select Case (objItem.DeviceID) Case DeviceID1 x = ChgDrv ("I:", objItem.Drive) driveFound = True Case DeviceID_2 x = ChgDrv ("I:", objItem.Drive) driveFound = True Case DeviceID3 x = ChgDrv ("I:", objItem.Drive) driveFound = True Case DeviceID4 x = ChgDrv ("I:", objItem.Drive) driveFound = True Case DeviceID5 x = ChgDrv ("I:", objItem.Drive) driveFound = True End Select Next Function ChgDrv(Drive, theDrive) If theDrive <> Drive Then wscript.echo theDrive & " => " & Drive 'Create File strFilename = "chgdrv" & Left(Drive,1) & ".txt" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.CreateTextFile(strFilename) objFile.Close 'Write Data to File Set objFile = objFSO.OpenTextFile (strFilename, 2) objFile.WriteLine "select volume " & theDrive objFile.WriteLine "assign letter=" & Drive objFile.WriteLine "exit" objFile.Close 'Run Diskpart calling the script just created strRun = "diskpart /s " & strFilename nRtn = wshShell.Run(strRun, 2 , True) 'Delete File objFSO.DeleteFile(strFilename) Else WScript.Echo "Drive is already " & Drive End If End Function Let's see if this .exe posts... SigVerifOnOff.exe
×
×
  • Create New...