Fórum Root.cz
Hlavní témata => Hardware => Téma založeno: Razmir 20. 12. 2018, 22:24:21
-
Ahoj mám v ruce flashdisk, který byl údajně jako read only HW klíč k nějakému zařízení nebo co. Zkouším ho přemluvit, aby se na něj dalo i zapisovat.
hdparm -r0 /dev/sda nepomohlo. Teda - teď můžu vytvářet a mazat diskové oddíly, ale na windows skončí pokus o formátování chybou a na linuxu ze zdánlivě souborový systém vytvoří, ale následně není rozpoznán.
hdparm -I /dev/sda je takové dost nešťastné:
/dev/sda:
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ATAPI , with removable media
Model Number: �|��t��L��|��
Serial Number: ����!���8
u
Firmware Revision: u����
Standards:
Likely used: 3
Configuration:
DRQ response: unknown.
Packet size: Unknown
cache/buffer size = unknown
Capabilities:
IORDY(may be)(cannot be disabled)
Buffer size: 16520.0kB bytes avail on r/w long: 65278
DMA: not supported
PIO: pio0
Máte někdo tip, jak ho rozjet?
-
A co zkusit primy zapis zda to pujde?
dd if=/dev/urandom of=/dev/sdX count=10000
-
Vyrobím deset mega náhodných dat:
dd if=/dev/urandom of=./pokus.data bs=1M count=10
10+0 záznamů přečteno
10+0 záznamů zapsáno
10485760 bajtů (10 MB, 10 MiB) zkopírováno, 1,33053 s, 7,9 MB/s
Zapíšu je na začátek disku:
dd if=./pokus.data of=/dev/sda bs=1M
10+0 záznamů přečteno
10+0 záznamů zapsáno
10485760 bajtů (10 MB, 10 MiB) zkopírováno, 0,790271 s, 13,3 MB/s
Přečtu do novýho souboru:
dd if=/dev/sda of=./pokus2.data bs=1M count=10
10+0 záznamů přečteno
10+0 záznamů zapsáno
10485760 bajtů (10 MB, 10 MiB) zkopírováno, 0,860205 s, 12,2 MB/s
A hle, je tam něco jinýho - nevim co, vypadá to náhodně, nejsou to třeba jen nuly
md5sum ./pokus.data
49d3ba85b09a262b1e37e16492dd1969 ./pokus.data
md5sum ./pokus2.data
b8baab349cdc836592adf1d173ec87dd ./pokus2.data
-
ja mel regularni flashku ktera se po case rozhodla ze bude po zapnuti reaodnly. pres hdparm jsem to mohl presvedcit do RW rezimu, ale to me flashka pak fungovala jen pod Linuxem. Pod win nebo osx to bylo RO a neslo to zformatovat...
Takze jsem dosel do ALZY a vyreklamovali to beze slova na miste.
Pokud je to "hw klic", tak neni jiste zda to je vubec mass storage s flash, nebo to virtualizuje nejaky procesor.
Jestli to je flaska, tak to musis rozebrat, podivat se co je tam za cip, pak stahnout z cerneho trhu tooly pro flashovani firmwaru, a tam mozna najdes option pro "RO by default".
Jednou jsem cetl taky nejaky clanek, jak reklamni flashky meli RO protected prvni partisny. Resi to asi stejny tool.
Tem amaterum co radi "dd" tady never, je videt ze netusi ktera bije. To co resis je vrstva pod tim.
-
no, k předchozímu pokusu s dd ještě doplním, že pokud jsem zapsal deset mega nul, tak jsem následovně přečetl zase náhodná data.
A mechanicky vypadá dost nedobytně - teda je to otázka síly, ale bude to jistě esteticky nevratný proces :) tak jsem to chtěl zatím odložit, jestli někoho ještě něco nenapadne
-
pokud jsem zapsal deset mega nul, tak jsem následovně přečetl zase náhodná data
A ta nahodna data po zapsani nul byla stejna, jako po zapsani nahodnych dat (viz vyse) nebo tam bylo neco jineho? Pokud tam bylo neco jineho, tak IMHO neni ani RO ani RW, ale RR (Read Random) cili vhodna tak akorat k fyzickemu odeslani do /dev/null.
-
Tady je ten zmiňovaný článek. Snad to pomůže. Už je 5 let starý
https://blog.root.cz/svatas/kdyz-usb-disk-neni-usb-disk/
-
Hele a zkoušel jsi tomu přehrát firmware? Já něco podobného řešil s FLASH od Dellu kde byl jen system a reed only...
Tímhle https://www.usbdev.ru/files/chipgenius/ (https://www.usbdev.ru/files/chipgenius/) jsem si zjistil FW ID. A podle FW ID jsem použil tady https://www.usbdev.ru/files/smi/smimptool/ (https://www.usbdev.ru/files/smi/smimptool/) tam narval odemčený FW...
-
Hele a zkoušel jsi tomu přehrát firmware?
Viz... (https://www.youtube.com/watch?v=prEVzshXY6A)
-
pokud jsem zapsal deset mega nul, tak jsem následovně přečetl zase náhodná data
A ta nahodna data po zapsani nul byla stejna, jako po zapsani nahodnych dat (viz vyse) nebo tam bylo neco jineho? Pokud tam bylo neco jineho, tak IMHO neni ani RO ani RW, ale RR (Read Random) cili vhodna tak akorat k fyzickemu odeslani do /dev/null.
Mno tak generátor náhodných dat se může taky hodit.
-
Co ti napise dmesg pri pripojeni? (jestli tedy mas zapnuto vypisovani vid/pid/model/sn v kernelu). Pripadne zkus lsusb, lsusb -v ... zajima nas pid/vid a pripadne textovy nazvy, nezminujes ani detekovanou kapacitu.
-
Tak mám výpis z toho programu ChipGenius:
Je mi podezřelý, že všude se ten flashdisk hlásí jako 16GB, ale ten ChipGenius v něm vidí jen 8GB čip, jestli tomu dobře rozumím.
Description: [E:]Velkokapacitní paměťové zařízení USB(JetFlash Transcend 16GB)
Device Type: Mass Storage Device
Protocal Version: USB 2.00
Current Speed: High Speed
Max Current: 300mA
USB Device ID: VID = 8564 PID = 1000
Serial Number: ZEU54A71D4HJMM4I
Device Vendor: JetFlash
Device Name: Mass Storage Device
Device Revision: 1100
Manufacturer: JetFlash
Product Model: Transcend 16GB
Product Revision: 1100
Controller Vendor: SMI
Controller Part-Number: SM3270AB - ISP 180329-0AC
Flash ID code: AD5A14F3 - Hynix - 1CE/Single Channel [MLC] -> Total Capacity = 8GB
Tools on web: http://dl.mydigit.net/special/up/smi.html
A výpis lsusb -v
Bus 001 Device 015: ID 8564:1000 Transcend Information, Inc. JetFlash
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x8564 Transcend Information, Inc.
idProduct 0x1000 JetFlash
bcdDevice 11.00
iManufacturer 1 JetFlash
iProduct 2 Mass Storage Device
iSerial 3 ZEU54A71D4HJMM4I
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 32
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 300mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk-Only
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 255
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 255
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)
A dmesg po připojení:
[ 1717.155826] usb 1-1.3.3: new high-speed USB device number 15 using dwc_otg
[ 1717.288194] usb 1-1.3.3: New USB device found, idVendor=8564, idProduct=1000
[ 1717.288218] usb 1-1.3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1717.288232] usb 1-1.3.3: Product: Mass Storage Device
[ 1717.288242] usb 1-1.3.3: Manufacturer: JetFlash
[ 1717.288251] usb 1-1.3.3: SerialNumber: ZEU54A71D4HJMM4I
[ 1717.306783] usb-storage 1-1.3.3:1.0: USB Mass Storage device detected
[ 1717.323459] scsi host0: usb-storage 1-1.3.3:1.0
[ 1718.900926] scsi 0:0:0:0: Direct-Access JetFlash Transcend 16GB 1100 PQ: 0 ANSI: 4
[ 1718.910346] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 1718.911758] sd 0:0:0:0: [sda] 30818304 512-byte logical blocks: (15.8 GB/14.7 GiB)
[ 1718.913047] sd 0:0:0:0: [sda] Write Protect is off
[ 1718.913073] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[ 1718.914205] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 1718.929952] sd 0:0:0:0: [sda] Attached SCSI removable disk
-
Hlásím, že se mi po troše zkoumání nástrojů, na které jste mě zde nasměrovali, podařilo přeflešovat FW a flashka jede! :)
Díky, borci! 8)
-
A kolik to teda má kapacitu? ;D
-
Tak zkusím obnovit toto vlákno, protože se to nepodařilo úplně na sto procent.
Fleshoval jsem firmware pomocí SMI Mass Production Tool, flashka má nyní neformátovatovanou kapacitu 15480 MB, před přehráním FW měla 15100 MB. Problémem ale je, že nejsou nyní všechny bloky funkční. Tváří se, že bez problému zapisuje a čte, ale u některých bloků čte nesmysly. Zapsal jsem celou flešku pseudonáhodnými daty, přečetl je zpět, rozdělil na megové intervaly, spočítal checksumy, u několika málo intervalů ty checksumy nesedí, při opakování se chová stejně - stejné bloky jsou špatné.
Takže má otazka zní, může mě někdo nakopnout, jak tu flashku otestovat a flashnout upravený firmware tak, aby nepoužíval nespolehlivé bloky (popř. byly i nějaké dobré rezervní, pokud to jde)?
-
...nyní má neformátovatovanou kapacitu 15480 MB, před přehráním FW měla 15100 MB. Problémem ale je, že nejsou nyní všechny bloky funkční....
Nejsou ty vadné bloky fejkové? Projeď ji H2testW (https://www.heise.de/download/product/h2testw-50539).
Jednou jsem dostal reklamní fake USB 4GB, reálně 512 MB. Vyzkoušel jsem ledacos a bez úspěchu. Demontáž jsem vzdal, protože byla zalisovaná v plechu a ten v gumě. Nakonec jsem vytvořil za začátku disku partition o nějaký MB menší, než je reálná kapacita. Zbytek jsem nechal volný. Ta partyšna funguje bez problémů. (ovšem vzhledem k velikosti je mimo provoz).
-
Fleshoval jsem firmware pomocí SMI Mass Production Tool, flashka má nyní neformátovatovanou kapacitu 15480 MB, před přehráním FW měla 15100 MB.
:
Takže má otazka zní, může mě někdo nakopnout, jak tu flashku otestovat a flashnout upravený firmware tak, aby nepoužíval nespolehlivé bloky (popř. byly i nějaké dobré rezervní, pokud to jde)?
Ano - SMI tool ma tuhle kontrolu, googli smerem na smi mass production tool bad block over setting - je tam pry nejaka funkce pretest, ktera smaze bad block info, a pak by si to ty spatne bloky melo najit v te fazi skenovani.
Viz: http://flashboot.ru/files/file/454/ .. nekde nize:
Scan USB (F5):
i.piccy.info/i9/40a90f4d41d97527e066fe4f73279128/1467801694/99388/1049411/01.jpg
Start (Space Key):
Warning: The pretest will erase bad block. Do you want Continuous?
a pokracuj podle rad ktere se vazou na ten post. Az bys objevil metodu ktera ti zkrouhne klicek na funkcni bloky, dej sem vedet :)
-
Funkce pretest mi pořád vyhazovala mně nicneříkající chybu "Pretest failed", ale našel jsem tam možnost omezení kapacity. Pravděpodobně se i nepoužité bloky využívají jako rezervní a při neúspěšném zápisu se použijí, protože po zmenšení kapacity jsem dělal opětovný test zápisu a čtení s kontrolou a nyní je celá viditelná oblast OK.
Takže snad úspěch.
-
Vidis to me nenapadlo - zrejme je radic chytrej a dela po zapisu zpetnou kontrolu. Pokud je to vadny, tak se blok nahradi s tim rezervnim v neviditelne casti (do doby nez se to konecne nezapise spravne), takze to hledani vadnych bloku probiha az on-demand a krome nastaveni mensi dostupne kapacity nebude potreba nic dalsiho udelat.