diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..45afc37 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +files \ No newline at end of file diff --git a/README.md b/README.md index 78f4446..ce6824d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -# SEGA dumptools +# SEGA Dump Tools -source: emuline.org and 1cc (websites and discord) - -Additions and documentation appreciated. +A compilation of scripts and documents regarding SEGA update encryption. diff --git a/docs/ALL.NET ID List/README.md b/docs/ALL.NET ID List/README.md new file mode 100644 index 0000000..311499c --- /dev/null +++ b/docs/ALL.NET ID List/README.md @@ -0,0 +1,3 @@ +# ALL.NET ID List + +You'll find the most up to date info on DataMonster's [spreadsheet](https://docs.google.com/spreadsheets/d/1RMhj6GlQoehH7AEOl1sSRKCGD3pEUNd8spki5Bhw7sw/edit#gid=916792653). diff --git a/docs/SEGA_PCB_CODES/SEGA_PCB_CODES.xlsx b/docs/ALL.NET ID List/SEGA_PCB_CODES.xlsx old mode 100755 new mode 100644 similarity index 100% rename from docs/SEGA_PCB_CODES/SEGA_PCB_CODES.xlsx rename to docs/ALL.NET ID List/SEGA_PCB_CODES.xlsx diff --git a/docs/SEGA_PCB_CODES/html/ALLS.html b/docs/ALL.NET ID List/html/ALLS.html similarity index 100% rename from docs/SEGA_PCB_CODES/html/ALLS.html rename to docs/ALL.NET ID List/html/ALLS.html diff --git a/docs/SEGA_PCB_CODES/html/Extra-reminders.html b/docs/ALL.NET ID List/html/Extra-reminders.html similarity index 100% rename from docs/SEGA_PCB_CODES/html/Extra-reminders.html rename to docs/ALL.NET ID List/html/Extra-reminders.html diff --git a/docs/SEGA_PCB_CODES/html/Keychip Shape.html b/docs/ALL.NET ID List/html/Keychip Shape.html similarity index 100% rename from docs/SEGA_PCB_CODES/html/Keychip Shape.html rename to docs/ALL.NET ID List/html/Keychip Shape.html diff --git a/docs/SEGA_PCB_CODES/html/Lindbergh.html b/docs/ALL.NET ID List/html/Lindbergh.html similarity index 100% rename from docs/SEGA_PCB_CODES/html/Lindbergh.html rename to docs/ALL.NET ID List/html/Lindbergh.html diff --git a/docs/SEGA_PCB_CODES/html/Namco PCBs.html b/docs/ALL.NET ID List/html/Namco PCBs.html similarity index 100% rename from docs/SEGA_PCB_CODES/html/Namco PCBs.html rename to docs/ALL.NET ID List/html/Namco PCBs.html diff --git a/docs/SEGA_PCB_CODES/html/Nu Series.html b/docs/ALL.NET ID List/html/Nu Series.html similarity index 100% rename from docs/SEGA_PCB_CODES/html/Nu Series.html rename to docs/ALL.NET ID List/html/Nu Series.html diff --git a/docs/SEGA_PCB_CODES/html/Other or Unknown PCB.html b/docs/ALL.NET ID List/html/Other or Unknown PCB.html similarity index 100% rename from docs/SEGA_PCB_CODES/html/Other or Unknown PCB.html rename to docs/ALL.NET ID List/html/Other or Unknown PCB.html diff --git a/docs/SEGA_PCB_CODES/html/Ring Series.html b/docs/ALL.NET ID List/html/Ring Series.html similarity index 100% rename from docs/SEGA_PCB_CODES/html/Ring Series.html rename to docs/ALL.NET ID List/html/Ring Series.html diff --git a/docs/SEGA_PCB_CODES/html/Sega HW Type.html b/docs/ALL.NET ID List/html/Sega HW Type.html similarity index 100% rename from docs/SEGA_PCB_CODES/html/Sega HW Type.html rename to docs/ALL.NET ID List/html/Sega HW Type.html diff --git a/docs/SEGA_PCB_CODES/html/resources/sheet.css b/docs/ALL.NET ID List/html/resources/sheet.css similarity index 100% rename from docs/SEGA_PCB_CODES/html/resources/sheet.css rename to docs/ALL.NET ID List/html/resources/sheet.css diff --git a/keys/AES128_Nu_ALLS/OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDBT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDBT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDBT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDBT.BIN diff --git a/keys/AES128_Nu_ALLS/SDBZ.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDBZ.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDBZ.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDBZ.BIN diff --git a/keys/AES128_Nu_ALLS/SDDD.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDDD.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDDD.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDDD.BIN diff --git a/keys/AES128_Nu_ALLS/SDDF.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDDF.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDDF.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDDF.BIN diff --git a/keys/AES128_Nu_ALLS/SDDT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDDT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDDT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDDT.BIN diff --git a/keys/AES128_Nu_ALLS/SDED.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDED.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDED.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDED.BIN diff --git a/keys/AES128_Nu_ALLS/SDEE.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDEE.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDEE.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDEE.BIN diff --git a/keys/AES128_Nu_ALLS/SDEJ.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDEJ.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDEJ.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDEJ.BIN diff --git a/keys/AES128_Nu_ALLS/SDEZ.bin b/docs/Decryption Keys/AES128_Nu_ALLS/SDEZ.bin similarity index 100% rename from keys/AES128_Nu_ALLS/SDEZ.bin rename to docs/Decryption Keys/AES128_Nu_ALLS/SDEZ.bin diff --git a/keys/AES128_Nu_ALLS/SDFB.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDFB.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDFB.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDFB.BIN diff --git a/keys/AES128_Nu_ALLS/SDFD.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDFD.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDFD.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDFD.BIN diff --git a/keys/AES128_Nu_ALLS/SDFD12_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDFD12_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDFD12_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDFD12_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDFE.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDFE.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDFE.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDFE.BIN diff --git a/keys/AES128_Nu_ALLS/SDFF.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDFF.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDFF.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDFF.BIN diff --git a/keys/AES128_Nu_ALLS/SDFH.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDFH.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDFH.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDFH.BIN diff --git a/keys/AES128_Nu_ALLS/SDFJ.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDFJ.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDFJ.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDFJ.BIN diff --git a/keys/AES128_Nu_ALLS/SDFM.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDFM.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDFM.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDFM.BIN diff --git a/keys/AES128_Nu_ALLS/SDFR.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDFR.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDFR.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDFR.BIN diff --git a/keys/AES128_Nu_ALLS/SDFU.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDFU.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDFU.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDFU.BIN diff --git a/keys/AES128_Nu_ALLS/SDGA.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGA.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGA.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGA.BIN diff --git a/keys/AES128_Nu_ALLS/SDGB.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGB.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGB.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGB.BIN diff --git a/keys/AES128_Nu_ALLS/SDGC.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGC.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGC.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGC.BIN diff --git a/keys/AES128_Nu_ALLS/SDGF.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGF.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGF.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGF.BIN diff --git a/keys/AES128_Nu_ALLS/SDGM.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGM.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGM.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGM.BIN diff --git a/keys/AES128_Nu_ALLS/SDGM10_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGM10_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGM10_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGM10_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDGM11_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGM11_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGM11_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGM11_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDGM12_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGM12_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGM12_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGM12_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDGR.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGR.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGR.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGR.BIN diff --git a/keys/AES128_Nu_ALLS/SDGR10_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGR10_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGR10_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGR10_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDGT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGT.BIN diff --git a/keys/AES128_Nu_ALLS/SDGU.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGU.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGU.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGU.BIN diff --git a/keys/AES128_Nu_ALLS/SDGW.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGW.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGW.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGW.BIN diff --git a/keys/AES128_Nu_ALLS/SDGX.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGX.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGX.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGX.BIN diff --git a/keys/AES128_Nu_ALLS/SDGX14_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGX14_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGX14_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGX14_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDGX15_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDGX15_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDGX15_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDGX15_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDHB.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHB.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHB.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHB.BIN diff --git a/keys/AES128_Nu_ALLS/SDHD.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHD.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHD.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHD.BIN diff --git a/keys/AES128_Nu_ALLS/SDHF.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHF.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHF.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHF.BIN diff --git a/keys/AES128_Nu_ALLS/SDHF10_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHF10_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHF10_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHF10_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDHF11_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHF11_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHF11_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHF11_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDHF12_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHF12_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHF12_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHF12_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDHF13_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHF13_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHF13_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHF13_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDHF14_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHF14_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHF14_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHF14_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDHN.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHN.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHN.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHN.BIN diff --git a/keys/AES128_Nu_ALLS/SDHP.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHP.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHP.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHP.BIN diff --git a/keys/AES128_Nu_ALLS/SDHP10_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHP10_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHP10_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHP10_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDHP11_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHP11_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHP11_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHP11_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDHP12_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHP12_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHP12_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHP12_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDHV.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHV.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHV.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHV.BIN diff --git a/keys/AES128_Nu_ALLS/SDHV10_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHV10_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHV10_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHV10_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDHW.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHW.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHW.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHW.BIN diff --git a/keys/AES128_Nu_ALLS/SDHW10_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHW10_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHW10_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHW10_OPT.BIN diff --git a/keys/AES128_Nu_ALLS/SDHW11_OPT.BIN b/docs/Decryption Keys/AES128_Nu_ALLS/SDHW11_OPT.BIN similarity index 100% rename from keys/AES128_Nu_ALLS/SDHW11_OPT.BIN rename to docs/Decryption Keys/AES128_Nu_ALLS/SDHW11_OPT.BIN diff --git a/docs/Decryption Keys/README.md b/docs/Decryption Keys/README.md new file mode 100644 index 0000000..0d644bc --- /dev/null +++ b/docs/Decryption Keys/README.md @@ -0,0 +1,3 @@ +# Encryption Keys + +This folder contains most encryption keys used for sega games. diff --git a/docs/Decryption Keys/sega encryption keys.html b/docs/Decryption Keys/sega encryption keys.html new file mode 100644 index 0000000..950c7e8 --- /dev/null +++ b/docs/Decryption Keys/sega encryption keys.html @@ -0,0 +1,392 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Game IDRegionModel TypeFlagsDevelopALL.NetDeliverBindingBillingRentalBilling FormPlatform IDIPv4 SubnetIPv6 SubnetGame KeyGame IVOpt KeyOpt IV
SBZSALLSatellite (ST)24XX0Nu SX (AAW)192.168.0.00000::0000A53780999F0DF49CBD8075C86D150566E2048E0E673CD0C8F3A79E72FEAF4A625C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZSALLSatellite (ST)25XXX0Nu (AAV)192.168.0.00000::0000A53780999F0DF49CBD8075C86D150566E2048E0E673CD0C8F3A79E72FEAF4A625C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZSALLSatellite (ST)25XXX0Nu SX (AAW)192.168.0.00000::0000A53780999F0DF49CBD8075C86D150566E2048E0E673CD0C8F3A79E72FEAF4A625C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZUJPNSatellite (ST)000Nu (AAV)192.168.1.00000::0000E6EF248B72D31DEAB42FE73906C4C9F00A7D94EC3DAFD9CCCF9F599CB245BDB15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZUEXPSatellite (ST)24XX0Nu SX (AAW)192.168.1.00000::0000E6EF248B72D31DEAB42FE73906C4C9F00A7D94EC3DAFD9CCCF9F599CB245BDB15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZUALLSatellite (ST)24XX0Nu SX (AAW)192.168.1.00000::0000E6EF248B72D31DEAB42FE73906C4C9F00A7D94EC3DAFD9CCCF9F599CB245BDB15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZUCHNSatellite (ST)24XX0Nu (AAV)192.168.1.00000::0000E6EF248B72D31DEAB42FE73906C4C9F00A7D94EC3DAFD9CCCF9F599CB245BDB15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZUJPNSatellite (ST)24XX0Nu (AAV)192.168.1.00000::0000E6EF248B72D31DEAB42FE73906C4C9F00A7D94EC3DAFD9CCCF9F599CB245BDB15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZUALLSatellite (ST)24XX0Nu (AAV)192.168.1.00000::0000E6EF248B72D31DEAB42FE73906C4C9F00A7D94EC3DAFD9CCCF9F599CB245BDB15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZUJPNSatellite (ST)24XX0Nu SX (AAW)192.168.1.00000::0000E6EF248B72D31DEAB42FE73906C4C9F00A7D94EC3DAFD9CCCF9F599CB245BDB15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZUALLSatellite (ST)24XX0Nu SX (AAW)192.168.0.00000::0000E6EF248B72D31DEAB42FE73906C4C9F00A7D94EC3DAFD9CCCF9F599CB245BDB15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZUEXPSatellite (ST)24XX0Nu (AAV)192.168.1.00000::0000E6EF248B72D31DEAB42FE73906C4C9F00A7D94EC3DAFD9CCCF9F599CB245BDB15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZUCHNSatellite (ST)24XX0Nu SX (AAW)192.168.1.00000::0000E6EF248B72D31DEAB42FE73906C4C9F00A7D94EC3DAFD9CCCF9F599CB245BDB15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZUJPNSatellite (ST)24XX0Nu SX (AAW)192.168.0.00000::0000E6EF248B72D31DEAB42FE73906C4C9F00A7D94EC3DAFD9CCCF9F599CB245BDB15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZVJPNSatellite (ST)64XXX0Nu (AAV)192.168.78.00000::00001EB26F806696CD872DEA14262F8C7B4CEB0A261B4DB7ED9D89FE5EB24AF7054D5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZVEXPSatellite (ST)64XXX0Nu (AAV)192.168.78.00000::00001EB26F806696CD872DEA14262F8C7B4CEB0A261B4DB7ED9D89FE5EB24AF7054D5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZVEXPSatellite (ST)65XXXX0Nu (AAV)192.168.78.00000::00001EB26F806696CD872DEA14262F8C7B4CEB0A261B4DB7ED9D89FE5EB24AF7054D5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SBZVJPNSatellite (ST)65XXXX0Nu (AAV)192.168.78.00000::00001EB26F806696CD872DEA14262F8C7B4CEB0A261B4DB7ED9D89FE5EB24AF7054D5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDAPJPNTerminal (??)64XXX0Nu (AAV)192.168.126.00000::0000A8FEEA8AF2950EA933392A7E7A515AC26C7E0E3B88CE678FB033E456E5343D725C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDAPJPNSatellite (ST)64XXX0Nu (AAV)192.168.126.00000::0000A8FEEA8AF2950EA933392A7E7A515AC26C7E0E3B88CE678FB033E456E5343D725C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDAPJPNSatellite (ST)65XXXX0Nu (AAV)192.168.126.00000::0000A8FEEA8AF2950EA933392A7E7A515AC26C7E0E3B88CE678FB033E456E5343D725C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDAPJPNTerminal (??)65XXXX0Nu (AAV)192.168.126.00000::0000A8FEEA8AF2950EA933392A7E7A515AC26C7E0E3B88CE678FB033E456E5343D725C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDAQJPNSatellite (ST)04X0Nu SX (AAW)192.168.125.00000::0000C5DEF48491A17ABFAF14F70ACC068C4D3E416A45DC0E442A13FC058F36DEBE895C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDAVJPNSatellite (ST)64XXX0Nu SX (AAW)192.168.130.00000::00006F239C60B73FB2259A40ECFDC1FF541AA5E047B8A29F27014E4D512E08954FF05C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDBTJPNSatellite (ST)64XXX0Nu (AAV)192.168.139.00000::0000F65A75BEC7F0DD4D08A690F219AB14EFCAE2CEE2CC88188F661893E0696BBE2A5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDBTJPNSatellite (ST)65XXXX0Nu (AAV)192.168.139.00000::0000F65A75BEC7F0DD4D08A690F219AB14EFCAE2CEE2CC88188F661893E0696BBE2A5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDBZJPNSatellite (ST)64XXX0Nu (AAV)192.168.144.00000::0000A09F1E9AED8E14B3F2D285E50FA4DCBC3282AB559319FB67A168E0803B2350915C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDBZJPNSatellite (ST)65XXXX0Nu (AAV)192.168.144.00000::0000A09F1E9AED8E14B3F2D285E50FA4DCBC3282AB559319FB67A168E0803B2350915C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDCAJPNSatellite (ST)24XX0Nu (AAV)192.168.150.00000::000048FF08937104B2A83CCB282468A5C702D7782A8594B74BC91491EA9DBC6933955C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDCDEXPSatellite (ST)64XXX0Nu SX (AAW)192.168.147.00000::00009DA25C8104D3CD5A3161229DE221ACE98BC818BEF7FF3C3431BA11EDA5C5FB485C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDCDJPNSatellite (ST)64XXX0Nu SX (AAW)192.168.147.00000::00009DA25C8104D3CD5A3161229DE221ACE98BC818BEF7FF3C3431BA11EDA5C5FB485C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDCFJPNSatellite (ST)24XX0Nu (AAV)192.168.148.00000::0000E45390726D4747CA28086C667214CFE736336C65FC649205231745CE6A9CE0B85C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDCHJPNSatellite (ST)64XXX0Nu (AAV)192.168.149.00000::0000260B3364400E701920B6DED70BC392715EAB7342D2D79B09FE0E00F81E3253075C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDDJPNSatellite (ST)24XX0Nu (AAV)192.168.157.00000::0000619410D29DF4F940177ACCD859D97E8E16497FE160E28E601A49D16DB18F25415C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDDJPNSatellite (ST)25XXX0Nu (AAV)192.168.157.00000::0000619410D29DF4F940177ACCD859D97E8E16497FE160E28E601A49D16DB18F25415C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDDJPNSatellite (ST)25XXX0Nu (AAV)192.169.96.100000::00006591D8D2E84B21D197753804D47C2E48D842A5C6F75B35C7257C0EC9BA30DED15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDDJPNServer (SV)2cXXX0Nu (AAV)192.168.157.00000::0000619410D29DF4F940177ACCD859D97E8E16497FE160E28E601A49D16DB18F25415C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDDJPNServer (SV)2dXXXX0Nu (AAV)192.168.157.00000::0000619410D29DF4F940177ACCD859D97E8E16497FE160E28E601A49D16DB18F25415C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDDJPNSatellite (ST)64XXX0Nu (AAV)192.168.157.00000::0000619410D29DF4F940177ACCD859D97E8E16497FE160E28E601A49D16DB18F25415C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDDEXPSatellite (ST)64XXX0Nu (AAV)192.168.157.00000::0000619410D29DF4F940177ACCD859D97E8E16497FE160E28E601A49D16DB18F25415C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDDJPNSatellite (ST)65XXXX0Nu (AAV)192.168.157.00000::0000619410D29DF4F940177ACCD859D97E8E16497FE160E28E601A49D16DB18F25415C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDDEXPSatellite (ST)65XXXX0Nu (AAV)192.168.157.00000::0000619410D29DF4F940177ACCD859D97E8E16497FE160E28E601A49D16DB18F25415C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDDEXPServer (SV)6cXXXX0Nu (AAV)192.168.157.00000::0000619410D29DF4F940177ACCD859D97E8E16497FE160E28E601A49D16DB18F25415C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDDJPNServer (SV)6cXXXX0Nu (AAV)192.168.157.00000::0000619410D29DF4F940177ACCD859D97E8E16497FE160E28E601A49D16DB18F25415C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDDJPNServer (SV)6dXXXXX0Nu (AAV)192.168.157.00000::0000619410D29DF4F940177ACCD859D97E8E16497FE160E28E601A49D16DB18F25415C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDDEXPServer (SV)6dXXXXX0Nu (AAV)192.168.157.00000::0000619410D29DF4F940177ACCD859D97E8E16497FE160E28E601A49D16DB18F25415C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDFEXPSatellite (ST)64XXX0Nu (AAV)192.168.158.00000::0000A6497BC4BB114A1F8F24AA756D2AF2D200BBACA3CDCE3DCA0174C9F26DC651205C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDFJPNSatellite (ST)64XXX0Nu (AAV)192.168.158.00000::0000A6497BC4BB114A1F8F24AA756D2AF2D200BBACA3CDCE3DCA0174C9F26DC651205C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDLALLSatellite (ST)25XXX0Nu Lv 3.1 (AAZ)192.168.0.00000::00005A837D9EC1B3FB37F844E3ECD40ACACDAD46FDC45AC915D55C5DCBA55A600D395C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDMALLSatellite (ST)000Nu Lv 3.1 (AAZ)192.168.69.00000::00007A5F4E97AB1790DFF41C1CA4A061AC12410280B2458399D7CA59283AB4AB46E15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDNJPNSatellite (ST)24XX0ALLS X2 (ACB)192.168.1.00000::00009B3B2090947A2486F0F3555C6DB98E56D5BE04A1303C1DD9385486CF0DF680885C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDNEXPSatellite (ST)24XX0ALLS X (ACA)192.168.1.00000::00009B3B2090947A2486F0F3555C6DB98E56D5BE04A1303C1DD9385486CF0DF680885C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDNCHNSatellite (ST)24XX0ALLS X (ACA)192.168.1.00000::00009B3B2090947A2486F0F3555C6DB98E56D5BE04A1303C1DD9385486CF0DF680885C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDNEXPSatellite (ST)24XX0ALLS X2 (ACB)192.168.1.00000::00009B3B2090947A2486F0F3555C6DB98E56D5BE04A1303C1DD9385486CF0DF680885C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDNALLSatellite (ST)24XX0ALLS X (ACA)192.168.1.00000::00009B3B2090947A2486F0F3555C6DB98E56D5BE04A1303C1DD9385486CF0DF680885C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDNCHNSatellite (ST)24XX0Nu Lv 3.1 (AAZ)192.168.1.00000::00009B3B2090947A2486F0F3555C6DB98E56D5BE04A1303C1DD9385486CF0DF680885C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDNJPNSatellite (ST)24XX0Nu Lv 3.1 (AAZ)192.168.1.00000::00009B3B2090947A2486F0F3555C6DB98E56D5BE04A1303C1DD9385486CF0DF680885C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDNCHNSatellite (ST)24XX0ALLS X2 (ACB)192.168.1.00000::00009B3B2090947A2486F0F3555C6DB98E56D5BE04A1303C1DD9385486CF0DF680885C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDNALLSatellite (ST)24XX0Nu Lv 3.1 (AAZ)192.168.1.00000::00009B3B2090947A2486F0F3555C6DB98E56D5BE04A1303C1DD9385486CF0DF680885C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDNJPNSatellite (ST)24XX0ALLS X (ACA)192.168.1.00000::00009B3B2090947A2486F0F3555C6DB98E56D5BE04A1303C1DD9385486CF0DF680885C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDNEXPSatellite (ST)24XX0Nu Lv 3.1 (AAZ)192.168.1.00000::00009B3B2090947A2486F0F3555C6DB98E56D5BE04A1303C1DD9385486CF0DF680885C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDNJPNSatellite (ST)34XXX0ALLS X (ACA)192.168.1.00000::00009B3B2090947A2486F0F3555C6DB98E56D5BE04A1303C1DD9385486CF0DF680885C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDNJPNSatellite (ST)e4XXX0ALLS X (ACA)192.168.69.00000::00009B3B2090947A2486F0F3555C6DB98E56D5BE04A1303C1DD9385486CF0DF680885C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDPJPNTerminal (??)64XXX0ALLS X (ACA)192.168.155.00000::0000E6E91C814845C68667950B52774E610F43227E2DCD1A1A1134E4F60BDB6E1D895C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDPJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.155.00000::0000E6E91C814845C68667950B52774E610F43227E2DCD1A1A1134E4F60BDB6E1D895C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDPJPNTerminal (??)65XXXX0ALLS X (ACA)192.168.155.00000::0000E6E91C814845C68667950B52774E610F43227E2DCD1A1A1134E4F60BDB6E1D895C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDPJPNSatellite (ST)65XXXX0ALLS X (ACA)192.168.155.00000::0000E6E91C814845C68667950B52774E610F43227E2DCD1A1A1134E4F60BDB6E1D895C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDSJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.160.00000::00005272EA6AE573FD2ED90FFBFF4E3B170C45437CA754B19C4B9F70C4DD0331F4325C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDSJPNSatellite (ST)64XXX0Nu Lv 3.1 (AAZ)192.168.160.00000::00005272EA6AE573FD2ED90FFBFF4E3B170C45437CA754B19C4B9F70C4DD0331F4325C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDTJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.162.00000::0000764B8462192DBA6655E2A0E49635A90B9BF8267AD7E3C7B3179F5ECD661DE76A5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDWALLSatellite (ST)25XXX0ALLS X2 (ACB)192.168.0.00000::0000C1F88053CCF85D67CB8556D9A0CA7CC3085CA00674C1C4EB142FCF0A3495856B5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDDWALLSatellite (ST)25XXX0ALLS X (ACA)192.168.0.00000::0000C1F88053CCF85D67CB8556D9A0CA7CC3085CA00674C1C4EB142FCF0A3495856B5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEBJPNSatellite (ST)24XX0ALLS X (ACA)192.168.163.00000::0000DFD69032CEA0AAB606EB2C4A409F2D35F55F915DC3608ABB127C5D0CF7826AC95C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEBJPNTerminal (??)24XX0ALLS X (ACA)192.168.163.00000::0000DFD69032CEA0AAB606EB2C4A409F2D35F55F915DC3608ABB127C5D0CF7826AC95C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEBEXPTerminal (??)24XX0ALLS X (ACA)192.168.163.00000::0000DFD69032CEA0AAB606EB2C4A409F2D35F55F915DC3608ABB127C5D0CF7826AC95C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEBEXPSatellite (ST)24XX0ALLS X (ACA)192.168.163.00000::0000DFD69032CEA0AAB606EB2C4A409F2D35F55F915DC3608ABB127C5D0CF7826AC95C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEBEXPSatellite (ST)25XXX0ALLS X (ACA)192.168.163.00000::0000DFD69032CEA0AAB606EB2C4A409F2D35F55F915DC3608ABB127C5D0CF7826AC95C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEBJPNSatellite (ST)25XXX0ALLS X (ACA)192.168.163.00000::0000DFD69032CEA0AAB606EB2C4A409F2D35F55F915DC3608ABB127C5D0CF7826AC95C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEBJPNTerminal (??)25XXX0ALLS X (ACA)192.168.163.00000::0000DFD69032CEA0AAB606EB2C4A409F2D35F55F915DC3608ABB127C5D0CF7826AC95C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEBEXPTerminal (??)25XXX0ALLS X (ACA)192.168.163.00000::0000DFD69032CEA0AAB606EB2C4A409F2D35F55F915DC3608ABB127C5D0CF7826AC95C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEBJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.163.00000::0000DFD69032CEA0AAB606EB2C4A409F2D35F55F915DC3608ABB127C5D0CF7826AC95C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEBJPNTerminal (??)64XXX0ALLS X (ACA)192.168.163.00000::0000DFD69032CEA0AAB606EB2C4A409F2D35F55F915DC3608ABB127C5D0CF7826AC95C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEBEXPSatellite (ST)64XXX0ALLS X (ACA)192.168.163.00000::0000DFD69032CEA0AAB606EB2C4A409F2D35F55F915DC3608ABB127C5D0CF7826AC95C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEBJPNTerminal (??)65XXXX0ALLS X (ACA)192.168.163.00000::0000DFD69032CEA0AAB606EB2C4A409F2D35F55F915DC3608ABB127C5D0CF7826AC95C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEBJPNSatellite (ST)65XXXX0ALLS X (ACA)192.168.163.00000::0000DFD69032CEA0AAB606EB2C4A409F2D35F55F915DC3608ABB127C5D0CF7826AC95C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDECJPNTerminal (??)64XXX0ALLS X (ACA)192.168.155.00000::000002AF292B025A67EE82BED12E8898BF344B143B304693B5238BAAF8FC5A6E5C015C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDECJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.155.00000::000002AF292B025A67EE82BED12E8898BF344B143B304693B5238BAAF8FC5A6E5C015C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDECJPNTerminal (??)64XXX0ALLS X (ACA)192.168.164.00000::000002AF292B025A67EE82BED12E8898BF344B143B304693B5238BAAF8FC5A6E5C015C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDECJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.164.00000::000002AF292B025A67EE82BED12E8898BF344B143B304693B5238BAAF8FC5A6E5C015C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDECJPNSatellite (ST)65XXXX0ALLS X (ACA)192.168.164.00000::000002AF292B025A67EE82BED12E8898BF344B143B304693B5238BAAF8FC5A6E5C015C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDECJPNTerminal (??)65XXXX0ALLS X (ACA)192.168.164.00000::000002AF292B025A67EE82BED12E8898BF344B143B304693B5238BAAF8FC5A6E5C015C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDECJPNTerminal (??)65XXXX0ALLS X (ACA)192.168.155.00000::000002AF292B025A67EE82BED12E8898BF344B143B304693B5238BAAF8FC5A6E5C015C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDECJPNSatellite (ST)65XXXX0ALLS X (ACA)192.168.155.00000::000002AF292B025A67EE82BED12E8898BF344B143B304693B5238BAAF8FC5A6E5C015C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEDJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.165.00000::00002687C32336142426FD927613D0925133A1CAE504C8C5E08C04D992EDBC5A4E3A5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEEJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.69.00000::00003A72741FF61D178AFB79FF1BB160728F2DA1CD60559BC9F3450AFD13F220A49E5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEGJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.166.00000::00008F14C90D89EC333DF010F9942CDC5676E1F1BC99B8E3BA5F63322363DB7C6D515C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEGJPNSatellite (ST)65XXXX0ALLS X (ACA)192.168.166.00000::00008F14C90D89EC333DF010F9942CDC5676E1F1BC99B8E3BA5F63322363DB7C6D515C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEJJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.167.00000::0000F4A506F8906C19C4639110EA0D84ABFE5E1F6C4A1188EECBB758787DF1FDD2D95C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEMJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.168.00000::0000464B92E7D9E50CE6D92C9E370D5FDF2B5076349FDD5839D0C94E6271D1B7E2FB5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEMJPNUNKNOWN:564XXX0ALLS X (ACA)192.168.168.00000::0000464B92E7D9E50CE6D92C9E370D5FDF2B5076349FDD5839D0C94E6271D1B7E2FB5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEMJPNSatellite (ST)65XXXX0ALLS X (ACA)192.168.168.00000::0000464B92E7D9E50CE6D92C9E370D5FDF2B5076349FDD5839D0C94E6271D1B7E2FB5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEPJPNUNKNOWN:2264XXX0ALLS X (ACA)192.168.175.00000::0000ABDCD0D2E165F26C4CAEB58CEE0734B4CEA3E44F35FD6C3D1D74B78BE73847825C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEPJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.175.00000::0000ABDCD0D2E165F26C4CAEB58CEE0734B4CEA3E44F35FD6C3D1D74B78BE73847825C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEPJPNSatellite (ST)65XXXX0ALLS X (ACA)192.168.175.00000::0000ABDCD0D2E165F26C4CAEB58CEE0734B4CEA3E44F35FD6C3D1D74B78BE73847825C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDERCHNSatellite (ST)64XXX0Nu (AAV)192.168.158.00000::0000F0903BC3FF83434CC45893290257A7F7B8151112A3E81CA7049EAE11A36F73625C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDEZJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.172.00000::0000EB7B708E6D996ED3241F1769F82BA4F0110BB7D93549498351E4E4A455E113EB5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFGJPNSatellite (ST)65XXXX0ALLS X (ACA)192.168.176.00000::00005703455E6C6387B456240FFB1D37D9D52E6B48A1B83FB3F157F4203EF0E74FDB5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFLJPNSatellite (ST)64XXX0Nu SX (AAW)192.168.179.00000::0000E06C1C41A89E29724479CB3546D9BF5C014FA325941612C624490F496854A79A5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFLJPNSatellite (ST)65XXXX0Nu SX (AAW)192.168.179.00000::0000E06C1C41A89E29724479CB3546D9BF5C014FA325941612C624490F496854A79A5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFTJPNLive (LV)64XXX0ALLS X (ACA)192.168.86.00000::0000F23FCA0721136FEF222343A9971C8D6CA915572D4AC5CF70BDF3ED5F592D56195C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFTJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.86.00000::0000F23FCA0721136FEF222343A9971C8D6CA915572D4AC5CF70BDF3ED5F592D56195C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFTJPNUNKNOWN:2264XXX0ALLS X (ACA)192.168.86.00000::0000F23FCA0721136FEF222343A9971C8D6CA915572D4AC5CF70BDF3ED5F592D56195C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFTJPNUNKNOWN:1264XXX0ALLS X (ACA)192.168.86.00000::0000F23FCA0721136FEF222343A9971C8D6CA915572D4AC5CF70BDF3ED5F592D56195C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFTJPNLive (LV)65XXXX0ALLS X (ACA)192.168.86.00000::0000F23FCA0721136FEF222343A9971C8D6CA915572D4AC5CF70BDF3ED5F592D56195C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFTJPNUNKNOWN:1265XXXX0ALLS X (ACA)192.168.86.00000::0000F23FCA0721136FEF222343A9971C8D6CA915572D4AC5CF70BDF3ED5F592D56195C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFTJPNSatellite (ST)65XXXX0ALLS X (ACA)192.168.86.00000::0000F23FCA0721136FEF222343A9971C8D6CA915572D4AC5CF70BDF3ED5F592D56195C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFTJPNUNKNOWN:116cXXXX0ALLS X (ACA)192.168.86.00000::0000F23FCA0721136FEF222343A9971C8D6CA915572D4AC5CF70BDF3ED5F592D56195C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFTJPNUNKNOWN:216cXXXX0ALLS X (ACA)192.168.86.00000::0000F23FCA0721136FEF222343A9971C8D6CA915572D4AC5CF70BDF3ED5F592D56195C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFTJPNServer (SV)6cXXXX0ALLS X (ACA)192.168.86.00000::0000F23FCA0721136FEF222343A9971C8D6CA915572D4AC5CF70BDF3ED5F592D56195C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFTJPNServer (SV)6dXXXXX0ALLS X (ACA)192.168.86.00000::0000F23FCA0721136FEF222343A9971C8D6CA915572D4AC5CF70BDF3ED5F592D56195C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFTJPNUNKNOWN:116dXXXXX0ALLS X (ACA)192.168.86.00000::0000F23FCA0721136FEF222343A9971C8D6CA915572D4AC5CF70BDF3ED5F592D56195C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFVJPNSatellite (ST)64XXX0Nu (AAV)192.168.149.00000::000041E88EF71E353A8118C265CA1C5411DED973F89D7E1B730FC5B69AF73047ADAB5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDFVJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.149.00000::000041E88EF71E353A8118C265CA1C5411DED973F89D7E1B730FC5B69AF73047ADAB5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGAEXPSatellite (ST)64XXX0ALLS X (ACA)192.168.172.00000::000048E025DB167E6DDBD644470761B8F13A77A5DAB4A96DA910769F8177B5CC83145C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGBCHNSatellite (ST)64XXX0ALLS X (ACA)192.168.172.00000::000065BF2FD5B58BD9F152201493B26D22C4496836BEFDAD86ACD968A2B00576042A5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGHJPNSatellite (ST)01X0ALLS X (ACA)192.168.185.00000::000036D93AA95A3AF61F381B1A966B022D4AC9B6E4E9DDE93B52981AC59C43BA405A5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGKEXPTerminal (??)64XXX0ALLS X (ACA)192.168.163.00000::00009B6A779462BADCA6AB9D31EB4CAA82D347E4949A368E6FBEEC411AB6593BA6E15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGKEXPSatellite (ST)64XXX0ALLS X (ACA)192.168.163.00000::00009B6A779462BADCA6AB9D31EB4CAA82D347E4949A368E6FBEEC411AB6593BA6E15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGKEXPSatellite (ST)65XXXX0ALLS X (ACA)192.168.163.00000::00009B6A779462BADCA6AB9D31EB4CAA82D347E4949A368E6FBEEC411AB6593BA6E15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGKEXPTerminal (??)65XXXX0ALLS X (ACA)192.168.163.00000::00009B6A779462BADCA6AB9D31EB4CAA82D347E4949A368E6FBEEC411AB6593BA6E15C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGQJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.187.00000::00004BA8B06F1D06642D95C2FE3637E8AA143276BFD62B11A0623CF7E00D3D35A9695C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGSEXPSatellite (ST)64XXX0ALLS X (ACA)192.168.139.00000::00009359E460857ADE9D8C6848FFC6DBCE12DEE1137D3075F6342E5414EE020C8DDA5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGSEXPSatellite (ST)74XXXX0ALLS X (ACA)192.168.139.00000::00009359E460857ADE9D8C6848FFC6DBCE12DEE1137D3075F6342E5414EE020C8DDA5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGTJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.158.00000::0000B7317E58BA349BD5083BEDE40ED460113496BD50B3A8219CA683AEDF65F880125C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGTEXPSatellite (ST)64XXX0ALLS X (ACA)192.168.158.00000::0000B7317E58BA349BD5083BEDE40ED460113496BD50B3A8219CA683AEDF65F880125C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGYJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.189.00000::00004A90AE39D573B7467584EDA2A75D57C74E658B8254EA74A5947052FDF84802835C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGYJPNSatellite (ST)65XXXX0ALLS X (ACA)192.168.189.00000::00004A90AE39D573B7467584EDA2A75D57C74E658B8254EA74A5947052FDF84802835C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGYJPNServer (SV)6cXXXX0ALLS X (ACA)192.168.189.00000::00004A90AE39D573B7467584EDA2A75D57C74E658B8254EA74A5947052FDF84802835C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDGYJPNServer (SV)6dXXXXX0ALLS X (ACA)192.168.189.00000::00004A90AE39D573B7467584EDA2A75D57C74E658B8254EA74A5947052FDF84802835C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDHDJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.139.00000::00005B7C9D1CADC06352B2FB13625CA847513283E14746A69FDA67F2EF8F97B0049E5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDHDJPNSatellite (ST)65XXXX0ALLS X (ACA)192.168.139.00000::00005B7C9D1CADC06352B2FB13625CA847513283E14746A69FDA67F2EF8F97B0049E5C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDHJCHNSatellite (ST)65XXXX0ALLS X (ACA)192.168.139.00000::00003988C8ED7CCA22C396E6CA1600C712BFBAB62A0484C6EF1B516F04EAF97924115C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDHRJPNSatellite (ST)64XXX0ALLS X (ACA)192.168.166.00000::00002E7A6DBA5533FB29F8B575FDFF55AE448FBA8203E734CF2A884FC1C699A953795C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
SDHRJPNSatellite (ST)65XXXX0ALLS X (ACA)192.168.166.00000::00002E7A6DBA5533FB29F8B575FDFF55AE448FBA8203E734CF2A884FC1C699A953795C84A9E726EAA5DD351F2B0750C23697C063BF6F562D084D7963C987F5281761
+ \ No newline at end of file diff --git a/docs/SEGA_PCB_CODES/README.txt b/docs/SEGA_PCB_CODES/README.txt deleted file mode 100644 index 059c64c..0000000 --- a/docs/SEGA_PCB_CODES/README.txt +++ /dev/null @@ -1 +0,0 @@ -https://docs.google.com/spreadsheets/d/17hDcZzN3F0lNbihgEcAQURs3ff0AuPZgS66Dly2iZ3Q/ diff --git a/docs/SEGA_PCB_CODES/SEGA_PCB_CODES.ods b/docs/SEGA_PCB_CODES/SEGA_PCB_CODES.ods deleted file mode 100755 index 94e039b..0000000 Binary files a/docs/SEGA_PCB_CODES/SEGA_PCB_CODES.ods and /dev/null differ diff --git a/tools/Crackproof/DecryptCrackproofExe64/README.txt b/tools/Crackproof/DecryptCrackproofExe64/README.md similarity index 100% rename from tools/Crackproof/DecryptCrackproofExe64/README.txt rename to tools/Crackproof/DecryptCrackproofExe64/README.md diff --git a/tools/Crackproof/Umamusume64/README.txt b/tools/Crackproof/Umamusume64/README.md similarity index 100% rename from tools/Crackproof/Umamusume64/README.txt rename to tools/Crackproof/Umamusume64/README.md diff --git a/tools/Filesystem/Extra/ExFat7z/ExFat7z.32.dll b/tools/Filesystem/Extra/ExFat7z/ExFat7z.32.dll new file mode 100644 index 0000000..2451ffa Binary files /dev/null and b/tools/Filesystem/Extra/ExFat7z/ExFat7z.32.dll differ diff --git a/tools/Filesystem/Extra/ExFat7z/ExFat7z.64.dll b/tools/Filesystem/Extra/ExFat7z/ExFat7z.64.dll new file mode 100644 index 0000000..2379196 Binary files /dev/null and b/tools/Filesystem/Extra/ExFat7z/ExFat7z.64.dll differ diff --git a/tools/Filesystem/Extra/ExFat7z/ReadMe.txt b/tools/Filesystem/Extra/ExFat7z/ReadMe.txt new file mode 100644 index 0000000..768d433 --- /dev/null +++ b/tools/Filesystem/Extra/ExFat7z/ReadMe.txt @@ -0,0 +1,15 @@ +ExFat7z + +http://www.tc4shell.com/en/7zip/ExFat7z/ +Copyright (C) 2019 Dec Software. + +ExFat7z is a small plugin for the popular 7-Zip archiver. You can use ExFat7z +with 7-Zip to open ExFat disk images. + +INSTALLATION + +To install the plugin into the 7-Zip installation folder, you need to create the +"Formats" subfolder. After that, copy ExFat7z.64.dll or ExFat7z.32.dll (depending on +your 7-Zip edition) to that subfolder. If you do that, each time you launch +7-Zip, it will automatically find ExFat7z and use it when opening ExFat disk +images. diff --git a/tools/Filesystem/Extra/OsfMount/osfmount.exe b/tools/Filesystem/Extra/OsfMount/osfmount.exe new file mode 100644 index 0000000..28a834d Binary files /dev/null and b/tools/Filesystem/Extra/OsfMount/osfmount.exe differ diff --git a/tools/Filesystem/Fsdecrypt/.gitignore b/tools/Filesystem/Fsdecrypt/.gitignore new file mode 100644 index 0000000..302b41a --- /dev/null +++ b/tools/Filesystem/Fsdecrypt/.gitignore @@ -0,0 +1,8 @@ +/target +*.zip +*.app +*.opt +*.vhd +*.ntfs +*.exfat +flamegraph.svg diff --git a/tools/Filesystem/Fsdecrypt/Cargo.lock b/tools/Filesystem/Fsdecrypt/Cargo.lock new file mode 100644 index 0000000..4824116 --- /dev/null +++ b/tools/Filesystem/Fsdecrypt/Cargo.lock @@ -0,0 +1,276 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "anyhow" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + +[[package]] +name = "block-padding" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +dependencies = [ + "cipher", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys", +] + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "fsdecrypt" +version = "0.1.1" +dependencies = [ + "aes", + "anyhow", + "cbc", + "crc32fast", + "hex-literal", + "indicatif", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "indicatif" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +dependencies = [ + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.155" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "portable-atomic" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-width" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" diff --git a/tools/Filesystem/Fsdecrypt/Cargo.toml b/tools/Filesystem/Fsdecrypt/Cargo.toml new file mode 100644 index 0000000..fd5fd16 --- /dev/null +++ b/tools/Filesystem/Fsdecrypt/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "fsdecrypt" +version = "0.1.1" +edition = "2021" + +[dependencies] +aes = "0.8.4" +anyhow = "1.0.86" +cbc = "0.1.2" +crc32fast = "1.4.2" +hex-literal = "0.4.1" +indicatif = "0.17.8" diff --git a/tools/Filesystem/Fsdecrypt/LICENSE b/tools/Filesystem/Fsdecrypt/LICENSE new file mode 100644 index 0000000..458d470 --- /dev/null +++ b/tools/Filesystem/Fsdecrypt/LICENSE @@ -0,0 +1,14 @@ +BSD Zero Clause License + +Copyright (c) 2024 beerpsi + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. diff --git a/tools/Filesystem/Fsdecrypt/README.md b/tools/Filesystem/Fsdecrypt/README.md new file mode 100644 index 0000000..a4280fd --- /dev/null +++ b/tools/Filesystem/Fsdecrypt/README.md @@ -0,0 +1,4 @@ +# Fsdecrypt + +This tool was made by beerpsi and it's latest version is available [here](https://gitea.tendokyu.moe/beerpsi/fsdecrypt) +For simplicity's sake, you can use the pre-compiled [.exe](./fsdecrypt.exe) diff --git a/tools/Filesystem/Fsdecrypt/fsdecrypt.exe b/tools/Filesystem/Fsdecrypt/fsdecrypt.exe new file mode 100644 index 0000000..efaf0b7 Binary files /dev/null and b/tools/Filesystem/Fsdecrypt/fsdecrypt.exe differ diff --git a/tools/Filesystem/Fsdecrypt/src/bootid.rs b/tools/Filesystem/Fsdecrypt/src/bootid.rs new file mode 100644 index 0000000..24e7733 --- /dev/null +++ b/tools/Filesystem/Fsdecrypt/src/bootid.rs @@ -0,0 +1,77 @@ +use std::fmt::Display; + +use hex_literal::hex; + +pub const BOOTID_KEY: [u8; 16] = hex!("09ca5efd30c9aaef3804d0a7e3fa7120"); +pub const BOOTID_IV: [u8; 16] = hex!("b155c22c2e7f0491fa7f0fdc217aff90"); + +#[allow(non_snake_case)] +pub mod ContainerType { + pub const OS: u8 = 0x00; + pub const APP: u8 = 0x01; + pub const OPTION: u8 = 0x02; +} + +#[derive(Clone, Copy, Debug)] +#[repr(C)] +pub struct Timestamp { + pub year: u16, + pub month: u8, + pub day: u8, + pub hour: u8, + pub minute: u8, + pub second: u8, + unk1: u8, +} + +impl Display for Timestamp { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!( + f, + "{:<04}{:<02}{:<02}{:<02}{:<02}{:<02}", + self.year, self.month, self.day, self.hour, self.minute, self.second + ) + } +} + +#[derive(Clone, Copy, Debug)] +#[repr(C)] +pub struct Version { + pub release: u8, + pub minor: u8, + pub major: u16, +} + +#[derive(Clone, Copy)] +#[repr(C)] +pub union GameVersion { + pub version: Version, + pub option: [u8; 4], +} + +#[derive(Clone, Copy)] +#[repr(C)] +pub struct BootId { + pub crc32: u32, + pub length: u32, + pub signature: [u8; 4], + unk1: u8, + pub container_type: u8, + pub sequence_number: u8, + pub use_custom_iv: bool, + pub game_id: [u8; 4], + pub target_timestamp: Timestamp, + pub target_version: GameVersion, + pub block_count: u64, + pub block_size: u64, + pub header_block_count: u64, + unk2: u64, + pub os_id: [u8; 3], + pub os_generation: u8, + pub source_timestamp: Timestamp, + pub source_version: Version, + pub os_version: Version, + pub padding: [u8; 8], + // We don't need the entire bootID, so keep size down by not including the string table. + // pub strings: [u8; 10156], +} diff --git a/tools/Filesystem/Fsdecrypt/src/crypto.rs b/tools/Filesystem/Fsdecrypt/src/crypto.rs new file mode 100644 index 0000000..6fb09be --- /dev/null +++ b/tools/Filesystem/Fsdecrypt/src/crypto.rs @@ -0,0 +1,516 @@ +use std::path::Path; + +use aes::cipher::{block_padding::NoPadding, BlockDecryptMut, KeyIvInit}; +use anyhow::{anyhow, Result}; +use hex_literal::hex; + +pub const NTFS_HEADER: [u8; 16] = hex!("eb52904e544653202020200010010000"); +pub const EXFAT_HEADER: [u8; 16] = hex!("eb769045584641542020200000000000"); + +pub const OPTION_KEY: [u8; 16] = hex!("5c84a9e726eaa5dd351f2b0750c23697"); +pub const OPTION_IV: [u8; 16] = hex!("c063bf6f562d084d7963c987f5281761"); + +pub type Aes128CbcDec = cbc::Decryptor; + +pub struct GameKeys { + pub key: [u8; 16], + pub iv: Option<[u8; 16]>, +} + +pub fn calculate_page_iv(file_offset: u64, file_iv: &[u8], page_iv: &mut [u8]) { + for (i, (fbyte, pbyte)) in file_iv.iter().zip(page_iv.iter_mut()).enumerate() { + *pbyte = fbyte ^ (file_offset >> (8 * (i % 8))) as u8; + } +} + +pub fn calculate_file_iv( + key: [u8; 16], + expected_header: [u8; 16], + first_page: &[u8], +) -> Result<[u8; 16]> { + let mut iv = [0u8; 16]; + let mut header = [0u8; 16]; + + header.copy_from_slice(&first_page[..16]); + + calculate_page_iv(0, &expected_header, &mut iv); + + let cipher = Aes128CbcDec::new_from_slices(&key, &iv).map_err(|e| anyhow!(e))?; + + cipher + .decrypt_padded_mut::(&mut header) + .map_err(|e| anyhow!(e))?; + + Ok(header) +} + +pub fn get_game_keys(game_id: &str) -> Option { + match game_id { + // Nu Firmware / Hardware Test + "SBZS" => Some(GameKeys { + key: hex!("2ecbcff65ce0abecc10547f8ac8351d8"), + iv: Some(hex!("f2ac6c2817d0574bba113d497e319f3e")), + }), + + // KEY CHIP NU FACTORY / KEY CHIP NUSX FACTORY + "SBZT" => Some(GameKeys { + key: hex!("9ab9ce55ed9c194a715a73a7699f795b"), + iv: Some(hex!("8552de88fedda6e859369fb000f44d5b")), + }), + + // Nu Firmware / Hardware Test + "SBZU" => Some(GameKeys { + key: hex!("eb1228254cdd3077eb3e441c0227bf40"), + iv: Some(hex!("3f9b4676118cee129fe2f1cb2747bca5")), + }), + + // Project DIVA Arcade Future Tone + "SBZV" => Some(GameKeys { + key: hex!("3274a399594d84779625940b69c02d3f"), + iv: Some(hex!("675ba66d29c87923f5f154c406afee42")), + }), + + // Wonderland Wars + "SDAP" => Some(GameKeys { + key: hex!("41b5027c5e99d94aa9335d6d71838ecf"), + iv: Some(hex!("41b5027c5e99d94aa9335d6d71838ecf")), + }), + + // Herobank Arcade + "SDAQ" => Some(GameKeys { + key: hex!("c28f22bc1b339ae64180739886dc83d6"), + iv: Some(hex!("0a29fd145d72bf8dedd436025df0a9fc")), + }), + + // Uranai Collection: Torotte + "SDAV" => Some(GameKeys { + key: hex!("eed95513266a499a55e265b049169c44"), + iv: Some(hex!("84c0e5931d91a6a477d62c271546056e")), + }), + + // Shin Kouchuu Ouja Mushiking + "SDBE" => Some(GameKeys { + key: hex!("7053fb944572e5b631a665cef4b5bcdd"), + iv: Some(hex!("ae4d7e884002c79eb35711554d613057")), + }), + + // E-DEL Sand + "SDBN" => Some(GameKeys { + key: hex!("c1f14ae2e85b095e313c8baec125805e"), + iv: Some(hex!("3c538eea66251acd5404b93f8976a7f7")), + }), + + // CHUNITHM + "SDBT" => Some(GameKeys { + key: hex!("a6a870671fd432ec637adf7a822f97da"), + iv: Some(hex!("2c277f31cd550cfa2c993b4dd56b85ae")), + }), + + // Sonic Dash Extreme + "SDBX" => Some(GameKeys { + key: hex!("3dc19c2d0c20ac199d5fa46e7f6335a6"), + iv: Some(hex!("d8f029ec90fe55be67584f742c55ef8b")), + }), + + // Kancolle Arcade + "SDBZ" => Some(GameKeys { + key: hex!("521bde4460f4184edd879136adeea5ee"), + iv: Some(hex!("1b8324032db69d7b0954794aa229fe68")), + }), + + // crossbeats REV. + "SDCA" => Some(GameKeys { + key: hex!("1649490a03d6c2aec1c496982cb0405c"), + iv: Some(hex!("4680711c7e67a26f9230d5af74b5dcfb")), + }), + + // nailpuri + "SDCD" => Some(GameKeys { + key: hex!("43b38502d8f6d3c7b02b95fc28db5308"), + iv: Some(hex!("6dfcb94bf74f152b55f3e0c7f35b44b5")), + }), + + // Luigi's Mansion Arcade + "SDCF" => Some(GameKeys { + key: hex!("df986883da837538e37b959a3e4117cd"), + iv: Some(hex!("dabf539738852f17714811af70435a83")), + }), + + // Mario & Sonic at Rio Olympic Games + "SDCH" => Some(GameKeys { + key: hex!("e2da769e94f1d3aca1930cdbe0708c9f"), + iv: Some(hex!("c7dcce203c84ab0477236d697570dadc")), + }), + + // KEY CHIP NUSX EDB SOC + "SDCR" => Some(GameKeys { + key: hex!("4961a51fd36f14e72664f52373052160"), + iv: Some(hex!("25d7d1341a282c5e0a34c64562c023ec")), + }), + + // Celevie + "SDCT" => Some(GameKeys { + key: hex!("d6ae51f10ec76da93c981800fc3ad3cb"), + iv: Some(hex!("fb8e43e280d330d06581732f2e11a6dc")), + }), + + // CYTUS Ω + "SDCX" => Some(GameKeys { + key: hex!("79504ccc509b67d1f7a3f593e6f9d9d6"), + iv: Some(hex!("1551ea8926f2aee233eec309de3e5f3c")), + }), + + // KEY CHIP NUSX1.1 TDW + "SDDB" => Some(GameKeys { + key: hex!("875679b2cd1637962b0db25c51fb21a6"), + iv: Some(hex!("8ef44722a0566e8f572356245687fbe5")), + }), + + // Sangokushi Taisen + "SDDD" => Some(GameKeys { + key: hex!("564e967873de6cbcd22efeca6952e9dc"), + iv: Some(hex!("4e3dd465cf09cd82b259f7bed5fc2d6d")), + }), + + // Initial D Arcade Stage Zero + "SDDF" => Some(GameKeys { + key: hex!("65058573a0cb81749e694ae164c61b04"), + iv: Some(hex!("981c4f45e3c6958f054e5d00916bdf2b")), + }), + + // KEY CHIP NU1.1 ESC + "SDDJ" => Some(GameKeys { + key: hex!("630fe52276537bd7fb267adf175f4e99"), + iv: Some(hex!("dc5755be57ded2cdb34433bbba2204ff")), + }), + + // APM3 Sample Program 2 + "SDDL" => Some(GameKeys { + key: hex!("992458295fd06d6a8af0dfb3f6854c19"), + iv: Some(hex!("8484906d4cd5fd225e032843ed37495d")), + }), + + // ALLS MX Factory Dummy + "SDDM" => Some(GameKeys { + key: hex!("0127958210f6ae9bdeb8975018b5af24"), + iv: Some(hex!("181716badccff4bc2b1e29ae02a1bbbb")), + }), + + // Demo ID + "SDDN" => Some(GameKeys { + key: hex!("41dd8e66290117ac67d311a2f0a6416e"), + iv: Some(hex!("73e18e8418f6ceefb11e2767fdea190c")), + }), + + // Soul Reverse + "SDDP" => Some(GameKeys { + key: hex!("cf6d64427eeca47674e17bcd46d1ea8c"), + iv: Some(hex!("ce5174093d26ca2a31b58541e85ac276")), + }), + + // SEGA World Driver Championship + "SDDS" => Some(GameKeys { + key: hex!("161bec6d90989d0e26d791170607a440"), + iv: Some(hex!("81dc26a27028e2092332038aa1bffc47")), + }), + + // O.N.G.E.K.I. + "SDDT" => Some(GameKeys { + key: hex!("3f7658728b9517d3314e684fa2e2a045"), + iv: Some(hex!("41578833c547aaff04db597a6e9eb784")), + }), + + "SDDU" => Some(GameKeys { + key: hex!("649ae9982625f90c55af86713c55d3fd"), + iv: Some(hex!("187116fc4647a7d3b6f2303a34f0a2fe")), + }), + + // ALLS X / X2 Research & Development + "SDDW" => Some(GameKeys { + key: hex!("118565d344f3e14ca69299eeac049bb9"), + iv: Some(hex!("9d6d392ec35ed94ef9fe0a5be0573981")), + }), + + // KEY CHIP ALLS X FACTORY + "SDDX" => Some(GameKeys { + key: hex!("428bff0f9e7aafc169a7a75751ffda98"), + iv: Some(hex!("f8250594f425332c6d349d7ea0e86669")), + }), + + // Shin Kouchuu Ouja Mushiking TWN + "SDEA" => Some(GameKeys { + key: hex!("9f9cf148ac3c50aaf925af1dfb27f58b"), + iv: Some(hex!("4d8ebbd971896b8a4a3dd84a23b329fc")), + }), + + // WCCF FOOTISTA + "SDEB" => Some(GameKeys { + key: hex!("d511ed690415f6359843a134fd47836a"), + iv: Some(hex!("ac139b382acdd112e31564ea7f38186c")), + }), + + // Chrono Regalia + "SDEC" => Some(GameKeys { + key: hex!("f272e5016863af2ba0337f50de686f6e"), + iv: Some(hex!("5327e132631e7f71b61be7cc0df382ce")), + }), + + // CARD MAKER + "SDED" => Some(GameKeys { + key: hex!("21fcec779a16769f5277a36fb542992c"), + iv: Some(hex!("22b50239f1b40ccc3e55a2d69c69b160")), + }), + + // House of the Dead: Scarlet Dawn + "SDEE" => Some(GameKeys { + key: hex!("191eb7440672dab08ddbb7195efb356f"), + iv: Some(hex!("c278b5386dc38bd76d71dbcd826954cf")), + }), + + // FiZ + "SDEG" => Some(GameKeys { + key: hex!("721853dbe2d30bafe24f0edbd210deeb"), + iv: Some(hex!("4dfb0bcec86159aab297166bcd509e6f")), + }), + + // Fate/Grand Order Arcade + "SDEJ" => Some(GameKeys { + key: hex!("9de1ea6ae38d9011f55d8ee864395d24"), + iv: Some(hex!("f60cde21982876d12d17662a48d90836")), + }), + + // ALL.Net P.ras multi Ver.3 + "SDEM" => Some(GameKeys { + key: hex!("700617f293696c07fb9f356d3b99240d"), + iv: Some(hex!("667d026d6cdf329ff351dbaf7098e81d")), + }), + + // StarHorse4 (Server) / MESTA Medal Station + "SDEP" => Some(GameKeys { + key: hex!("fa2b7ca53a823c152d940972cbf532f5"), + iv: Some(hex!("f4af35120c48617704bb5b8471797a62")), + }), + + // Initial D Arcade Stage Zero (CHN) + "SDER" => Some(GameKeys { + key: hex!("7d73367ebb218ec82930d58dc6d7950b"), + iv: Some(hex!("9788c3eca2db6ba92bac4f6f7b706308")), + }), + + // House of the Dead: Scarlet Dawn (EXP) + "SDET" => Some(GameKeys { + key: hex!("4643e7b2c3006e0264163edc8545fb72"), + iv: Some(hex!("612bca81ea2958ffbac36f780f1ed688")), + }), + + // KEY CHIP ALLS X HDZ + "SDEU" => Some(GameKeys { + key: hex!("23b3e9bb47e3ac9998f6e6c1adc4ae33"), + iv: Some(hex!("a964714cea60688407bf554bd1c27ec2")), + }), + + // House of the Dead: Scarlet Dawn (CHN) + "SDEV" => Some(GameKeys { + key: hex!("3c1f018d88926d98163b07a1563a4818"), + iv: Some(hex!("ca7373c9c7dfebac0fc24254c030e4ad")), + }), + + // maimai DX + "SDEZ" => Some(GameKeys { + key: hex!("d136eba05d40e82682e6aad8d9e8688c"), + iv: Some(hex!("c484deeaa0249ef46695f63694b7372f")), + }), + + // KEY CHIP ALLS X REC + "SDFA" => Some(GameKeys { + key: hex!("8e816b4362db24a230877885864d206d"), + iv: Some(hex!("8e5a0ba6a0a1150d47d12bdb64debba7")), + }), + + // WACCA + "SDFE" => Some(GameKeys { + key: hex!("f61719c371e5bca6788c139a53091617"), + iv: Some(hex!("67d43173e343813fa2097fd32992a8e2")), + }), + + // SANDRA + "SDFG" => Some(GameKeys { + key: hex!("3398fb86bfe630a14979411879861ac7"), + iv: Some(hex!("a794c49c2c7639cd80571807c17246ff")), + }), + + // Kemono Friends 3: Planet Tours + "SDFL" => Some(GameKeys { + key: hex!("2449b48067b9176a6e0f9563481e97f4"), + iv: Some(hex!("616f8710454632eb4fb1d89d8c19c19a")), + }), + + // KEY CHIP ALLS X CASJ + "SDFN" => Some(GameKeys { + key: hex!("29f62e22c6a9fd8be327631c68546405"), + iv: Some(hex!("2a860976e6d98513825f291e56cfb5ee")), + }), + + // KEY CHIP NUSX FUTURE + "SDFP" => Some(GameKeys { + key: hex!("570b87263a7ca0aa4c1388e204ee6d4b"), + iv: Some(hex!("7640886011a2300a91fad9f36a8c4775")), + }), + + // StarHorse4 + "SDFT" => Some(GameKeys { + key: hex!("92a25f388c50737e39c3c2f006645f31"), + iv: Some(hex!("a97e72f990417488cb4c67f8f0c3fb25")), + }), + + // Mario & Sonic at TOKYO Olympic + "SDFV" => Some(GameKeys { + key: hex!("fe82db9a60295d829b95f03c2276018b"), + iv: Some(hex!("34d82772ae18174f0a181dc53399ea9c")), + }), + + // maimai DX (EXP) + "SDGA" => Some(GameKeys { + key: hex!("0a6610a62ef670c65b7e7b1750ffb7a1"), + iv: Some(hex!("17a2a22915f81c5896edbba4c412585e")), + }), + + // maimai DX (CHN) + "SDGB" => Some(GameKeys { + key: hex!("7ca4e6b6f3d6e8b26472973887d7fa3a"), + iv: Some(hex!("53fe7135762de3f97e7fe76b0fef3f27")), + }), + + // Puyo Puyo e-Sports Arcade + "SDGH" => Some(GameKeys { + key: hex!("b3e30e7eabac3767ade13c69c9b2f22b"), + iv: Some(hex!("03deaea3742d69675b36cddc8b15ac91")), + }), + + // WCCF FOOTISTA (EXP) + "SDGK" => Some(GameKeys { + key: hex!("9dc4a17fc39fca5a8a358984801caaa7"), + iv: Some(hex!("e0445b11dcfa0dae56c85e8787e11d9b")), + }), + + // KEY CHIP ALLS X HDZ CASJ + "SDGP" => Some(GameKeys { + key: hex!("c87ab31247e7b6ff95fdd79fb91f9f37"), + iv: Some(hex!("2467ab3c031e3dc0568b7077efd27c36")), + }), + + // ROKUMEN + "SDGQ" => Some(GameKeys { + key: hex!("c5356dae7b066bce88984aec36deb62d"), + iv: Some(hex!("4e9f2982460e2fd907bde15709edfba7")), + }), + + // CHUNITHM (EXP) + "SDGS" => Some(GameKeys { + key: hex!("a5150cc5065d2c59ee2f8f332cbd29d5"), + iv: Some(hex!("84014d26696f290ad7ead70c7549bd81")), + }), + + // Initial D THE ARCADE + "SDGT" => Some(GameKeys { + key: hex!("9d0bba20d1e84f2459399f5383beee72"), + iv: Some(hex!("5d340013fdfb2464d253093602fe4b64")), + }), + + "SDGV" => Some(GameKeys { + key: hex!("573f5c8cc44f10f31ec749b695ebe886"), + iv: Some(hex!("6bfca86f9d208a7944cdfc25ea3cd220")), + }), + + // "Eiketsu Taisen: Sanzensekai no Hadou + "SDGY" => Some(GameKeys { + key: hex!("c04b663a59055acbdfebc6d3df0e6a04"), + iv: Some(hex!("76fc5f1d88605107947d0c1ff347022d")), + }), + + // Hori a Tale + "SDGZ" => Some(GameKeys { + key: hex!("9ad74efb208d6ee4fe5ee770331712cf"), + iv: Some(hex!("45f6e53f0eb8fae6665b45444a61e266")), + }), + + // CHUNITHM NEW!! + "SDHD" => Some(GameKeys { + key: hex!("3abd00d7a820ce862eaf474bf6c8f33e"), + iv: Some(hex!("0f1e7eea78da7e037e0552c2843e1b6a")), + }), + + "SDHH" => Some(GameKeys { + key: hex!("fc6f887f3717c5d6713113b92fa3fb27"), + iv: Some(hex!("ad76606460dbe1e91e41bef7ab0c1535")), + }), + + // CHUNITHM (CHN) + "SDHJ" => Some(GameKeys { + key: hex!("985ea66ecb5b1f208c90e2b898f0b073"), + iv: Some(hex!("164a65422e7f01b7f1b0849fc7737cdb")), + }), + + // UFO CATCHER LINK STATION + "SDHK" => Some(GameKeys { + key: hex!("bc92d63c2a099ca2315a483c3041fdd7"), + iv: Some(hex!("b14d8449b6d4325d83a2774b13dd21ff")), + }), + + // WACCA (CHN) + "SDHN" => Some(GameKeys { + key: hex!("892123a26d7c03d49edd12a80ee0c58f"), + iv: Some(hex!("76aa15a6868b8dbdf7207906354d5169")), + }), + + // meityromantic + "SDHR" => Some(GameKeys { + key: hex!("1fb897cab97c8170a6ac0a21685c58d9"), + iv: Some(hex!("f9b60f65b01e8e836a4bc20f7d39faf5")), + }), + + // ALLS System + "ACA" => Some(GameKeys { + key: hex!("e4281bcf48c4d28eb05772ce6f98587a"), + iv: Some(hex!("6cee7f5a2c4b5f1e93c5949114ff0b74")), + }), + + // Read from {game_id}.bin for unknown keys. + _ => { + let filename = format!("{}.bin", game_id); + let path = Path::new(&filename); + + if !path.exists() { + return None; + } + + let Ok(metadata) = path.metadata() else { + return None; + }; + + let size = metadata.len(); + + match size { + 16 => Some(GameKeys { + key: std::fs::read(filename) + .map(|v| v.try_into().unwrap()) + .unwrap(), + iv: None, + }), + 32 => { + let keyiv = std::fs::read(filename).unwrap(); + let key = keyiv[..16].try_into().unwrap(); + let iv: [u8; 16] = keyiv[16..].try_into().unwrap(); + let iv = if iv == NTFS_HEADER || iv == EXFAT_HEADER { + None + } else { + Some(iv) + }; + + Some(GameKeys { key, iv }) + } + _ => None, + } + } + } +} diff --git a/tools/Filesystem/Fsdecrypt/src/main.rs b/tools/Filesystem/Fsdecrypt/src/main.rs new file mode 100644 index 0000000..09bf4ff --- /dev/null +++ b/tools/Filesystem/Fsdecrypt/src/main.rs @@ -0,0 +1,193 @@ +use std::{ + fs::File, + io::{BufReader, BufWriter, Read, Seek, SeekFrom, Write}, + path::Path, +}; + +use aes::{ + cipher::{block_padding::NoPadding, BlockDecryptMut, InnerIvInit, KeyInit, KeyIvInit}, + Aes128Dec, +}; +use anyhow::{anyhow, Result}; +use bootid::{BootId, ContainerType, BOOTID_IV, BOOTID_KEY}; +use crypto::{ + calculate_file_iv, calculate_page_iv, get_game_keys, Aes128CbcDec, GameKeys, EXFAT_HEADER, + NTFS_HEADER, OPTION_IV, OPTION_KEY, +}; +use indicatif::{ProgressBar, ProgressStyle}; + +mod bootid; +mod crypto; + +const PAGE_SIZE: u64 = 4096; + +fn main() -> Result<()> { + let args = std::env::args().collect::>(); + + if args.len() < 2 { + println!("Usage: fsdecrypt [ ...]"); + return Ok(()); + } + + let bootid_cipher = + Aes128CbcDec::new_from_slices(&BOOTID_KEY, &BOOTID_IV).map_err(|e| anyhow!(e))?; + let mut bootid_bytes = [0u8; std::mem::size_of::()]; + let mut page: Vec = Vec::with_capacity(PAGE_SIZE as usize); + let mut page_iv = [0u8; 16]; + + for path in args.iter().skip(1) { + let path = Path::new(path); + let file = File::open(path)?; + let mut reader = BufReader::with_capacity(0x40000, file); + + reader.read_exact(&mut bootid_bytes)?; + + if let Err(e) = bootid_cipher + .clone() + .decrypt_padded_mut::(&mut bootid_bytes) + { + println!("ERROR: Could not decrypt BootID: {e:#?}"); + continue; + } + + let bootid = unsafe { std::mem::transmute::<[u8; 96], BootId>(bootid_bytes) }; + + if bootid.container_type != ContainerType::OS + && bootid.container_type != ContainerType::APP + && bootid.container_type != ContainerType::OPTION + { + println!("ERROR: Unknown container type {}", bootid.container_type); + continue; + } + + let os_id = std::str::from_utf8(&bootid.os_id)?; + let game_id = std::str::from_utf8(&bootid.game_id)?; + let id = match bootid.container_type { + ContainerType::OS => os_id, + _ => game_id, + }; + + let keys = match bootid.container_type { + ContainerType::OS => get_game_keys(os_id), + ContainerType::APP => get_game_keys(game_id), + _ => Some(GameKeys { + key: OPTION_KEY, + iv: Some(OPTION_IV), + }), + }; + + let Some(keys) = keys else { + println!("ERROR: Key not found for {id}. If you're using a custom key file, ensure the key file is 16/32 bytes and named {id}.bin."); + continue; + }; + + let data_offset = bootid.header_block_count * bootid.block_size; + let key = keys.key; + let iv = if bootid.use_custom_iv { + None + } else { + keys.iv + }; + let iv = match iv { + Some(iv) => iv, + None => { + reader.seek(SeekFrom::Start(data_offset))?; + + let reference = Read::by_ref(&mut reader); + + reference.take(4096).read_to_end(&mut page)?; + + if bootid.container_type == ContainerType::OPTION { + calculate_file_iv(key, EXFAT_HEADER, &page)? + } else { + calculate_file_iv(key, NTFS_HEADER, &page)? + } + } + }; + + let output_filename = match bootid.container_type { + ContainerType::OS => format!( + "{os_id}_{:<04}.{:<02}.{:<02}_{}_{}.ntfs", + bootid.os_version.major, + bootid.os_version.minor, + bootid.os_version.release, + bootid.target_timestamp, + bootid.sequence_number + ), + ContainerType::APP => { + if bootid.sequence_number > 0 { + format!( + "{game_id}_{}.{:<02}.{:<02}_{}_{}_{}.{:<02}.{:<02}.ntfs", + unsafe { bootid.target_version.version.major }, + unsafe { bootid.target_version.version.minor }, + unsafe { bootid.target_version.version.release }, + bootid.target_timestamp, + bootid.sequence_number, + bootid.source_version.major, + bootid.source_version.minor, + bootid.source_version.release, + ) + } else { + format!( + "{game_id}_{}.{:<02}.{:<02}_{}_{}.ntfs", + unsafe { bootid.target_version.version.major }, + unsafe { bootid.target_version.version.minor }, + unsafe { bootid.target_version.version.release }, + bootid.target_timestamp, + bootid.sequence_number, + ) + } + } + _ => format!( + "{game_id}_{}_{}_{}.exfat", + unsafe { std::str::from_utf8(&bootid.target_version.option)? }, + bootid.target_timestamp, + bootid.sequence_number, + ), + }; + let output_path = path.with_file_name(&output_filename); + let output_file = File::create(&output_path)?; + let output_size = (bootid.block_count - bootid.header_block_count) * bootid.block_size; + + output_file.set_len(output_size)?; + + let mut writer = BufWriter::with_capacity(0x40000, output_file); + let cipher = Aes128Dec::new_from_slice(&key).map_err(|e| anyhow!(e))?; + + let pb = ProgressBar::new(output_size) + .with_style( + ProgressStyle::default_bar() + .template("{prefix} [{bar:20!.bright.yellow/dim.white}] {bytes:>8} [{elapsed}<{eta}, {bytes_per_sec}]")? + ); + + pb.set_prefix(output_filename); + reader.seek(SeekFrom::Start(data_offset))?; + + for _ in 0..output_size / PAGE_SIZE { + let file_offset = reader.stream_position()? - data_offset; + let reference = Read::by_ref(&mut reader); + + calculate_page_iv(file_offset, &iv, &mut page_iv); + page.clear(); + reference.take(PAGE_SIZE).read_to_end(&mut page)?; + + let page_cipher = Aes128CbcDec::inner_iv_slice_init(cipher.clone(), &page_iv) + .map_err(|e| anyhow!(e))?; + page_cipher + .decrypt_padded_mut::(&mut page) + .map_err(|e| anyhow!(e))?; + + writer.write_all(&page)?; + pb.inc(PAGE_SIZE); + } + + writer.flush()?; + pb.finish(); + + page.clear(); + page_iv.fill(0); + bootid_bytes.fill(0); + } + + Ok(()) +} diff --git a/tools/Filesystem/README.txt b/tools/Filesystem/README.txt deleted file mode 100644 index 35b63d8..0000000 --- a/tools/Filesystem/README.txt +++ /dev/null @@ -1,42 +0,0 @@ -╔═════════════════════╗ - SEGA Decryption Guide -╚═════════════════════╝ - -╭─────────╮ - app files -╰─────────╯ - -1. create a new file titled .bin - -2. fill in the first 16 bytes of .bin with -the AES key. (e.g. 9D 0B BA 20 D1 E8 4F 24 59 39 9F 53 83 BE EE 72) - -3. the next 16 bytes will be the NTFS header (EB 52 90 4E 54 46 53 20 20 20 20 00 10 01 00 00) -the NTFS header is always the same - -4. save this file, then decrypt the app files with the following command: -fsdecrypt .bin 0x200000 - -5. once it finishes decrypting, run the calculate_iv.py script -save the output of key 1. script is found here: https://discord.com/channels/162861213309599744/243895668790394882/995170669329391706 - -6. open .bin inside the hex editor once more, replace the NTFS header with -the key 1 - -7. run "fsdecrypt .bin 0x200000 " once more - -8. your app is now decrypted, you can extract the internal_0 with poweriso or any other tool - -╭─────────╮ - opt files -╰─────────╯ - -1. decrypt the opt file using fstools with the following command: -fstool dec OPT.bin in.opt out.vhd - -2. run the calculate_iv.py script and save key 3 -script is found here: https://discord.com/channels/162861213309599744/243895668790394882/995170669329391706 - -3. replace the IV key of the OPT.bin with key 3, the IV key of OPT.bin are the second 16 bytes - -4. decrypt the opt file once more with the new key diff --git a/tools/Filesystem/Unsega/unsega_v0.1727.exe b/tools/Filesystem/Unsega/unsega_v0.1727.exe new file mode 100644 index 0000000..2998975 Binary files /dev/null and b/tools/Filesystem/Unsega/unsega_v0.1727.exe differ diff --git a/tools/Filesystem/readme.md b/tools/Filesystem/readme.md new file mode 100644 index 0000000..a41a5e1 --- /dev/null +++ b/tools/Filesystem/readme.md @@ -0,0 +1,46 @@ +# Filesystem + +The scripts in this folder are used to extract .app and .opt files. + +## Decryption + +There are two tools you can use to decrypt and extract updates. + +* [unsega_v0.1727.exe](./Unsega/unsega_v0.1727.exe): Fast but closed source. +* [fsdecrypt.exe](./Fsdecrypt/fsdecrypt.exe): Slow but open source. + +Unsega is sourced directly from 1cc and should be totally safe but if you don't feel like running shady .exe's, you can build fsdecrypt from source instead. +Both tools do exactly the same thing and work in a very similar way so use whatever you like. + +### .app decryption and extraction + +1) Drag and drop the .app file on [unsega_v0.1727.exe](./Unsega/unsega_v0.1727.exe) or [fsdecrypt.exe](./Fsdecrypt/fsdecrypt.exe) +2) Mount the resulting .vhd(unsega) or .ntfs(fsdecrypt) file with [osfmount.exe](./Extra/osfmount.exe) (using default settings) +3) Copy the internal_x.vhd partition from the vhd you just mounted. + * If the extracted vhd is named **internal_0.vhd**, you can just double click it to open it. + * If the extracted vhd is named **internal_X.vhd** where X is anything else than 0, you'll need to merge the file with it's base ! See [Merging incremental updates](#merging-incremental-updates) + +### .opt decryption and extraction + +You'll need to install the [ExFat7z](./Extra/ExFat7z/) 7zip plugin before proceeding. Install instructions are in the plugin's folder. +You can find the original download page for the plugin [here](https://www.tc4shell.com/en/7zip/exfat7z/) + +1) Drag and drop the .opt file on [fsdecrypt.exe](./Fsdecrypt/fsdecrypt.exe) or [unsega_v0.1727.exe](./Unsega/unsega_v0.1727.exe) +2) Extract the resulting .vhd(unsega) or .exfat(fsdecrypt) file with 7zip. + +## Merging incremental updates + +Sega updates are incremental, you'll need to merge them if you want to open the latest versions. +Here's an example on how to do so : + +```powershell +Set-VHD -Path "internal_3.vhd" -ParentPath "internal_2.vhd" +Set-VHD -Path "internal_2.vhd" -ParentPath "internal_1.vhd" +Set-VHD -Path "internal_1.vhd" -ParentPath "internal_0.vhd" +Merge-VHD -Path "internal_3.vhd" -DestinationPath "internal_2.vhd" +Merge-VHD -Path "internal_2.vhd" -DestinationPath "internal_1.vhd" +Merge-VHD -Path "internal_1.vhd" -DestinationPath "internal_0.vhd" +``` + +You'll need Hyper-V to be enabled for these commands to work. +You'll also need administrator privileges! diff --git a/tools/Filesystem/sega_iv_chinese.txt b/tools/Filesystem/sega_iv_chinese.txt deleted file mode 100644 index a3e4330..0000000 --- a/tools/Filesystem/sega_iv_chinese.txt +++ /dev/null @@ -1,6 +0,0 @@ -1.Create SDDT.bin with 16 bytes of 0 written in the iv key -2.Decrypt only the first 16 bytes once with fsdecrypt or fstool -3.The first 16 bytes of the decrypted file is the iv key -1.创建SDDT.bin,在iv键中写入16个字节的0 -2.用fsdecrypt或fstool只对前16个字节进行一次解密 -3.解密后的文件的前16个字节是iv密钥 diff --git a/tools/Download/DownloadOrder_V1_CLI.php b/tools/Legacy/Download/DownloadOrder_V1_CLI.php old mode 100755 new mode 100644 similarity index 94% rename from tools/Download/DownloadOrder_V1_CLI.php rename to tools/Legacy/Download/DownloadOrder_V1_CLI.php index 7bce2e8..eca83fb --- a/tools/Download/DownloadOrder_V1_CLI.php +++ b/tools/Legacy/Download/DownloadOrder_V1_CLI.php @@ -1,56 +1,56 @@ - array( - - 'header' => array("Pragma: DFI", "User-Agent: ALL.Net"), - - 'method' => 'POST', - - 'content' => $compressed - - ) - - ); - - $context = stream_context_create($options); - - $result = file_get_contents('http://naominet.jp/sys/servlet/DownloadOrder', false, $context); - - if ($result === FALSE) { exit("error dl\n"); /* Handle error */ } - - //print($result); - - $response = gzuncompress(base64_decode($result)); - - print($response); - - print("\n"); - -?> + array( + + 'header' => array("Pragma: DFI", "User-Agent: ALL.Net"), + + 'method' => 'POST', + + 'content' => $compressed + + ) + + ); + + $context = stream_context_create($options); + + $result = file_get_contents('http://naominet.jp/sys/servlet/DownloadOrder', false, $context); + + if ($result === FALSE) { exit("error dl\n"); /* Handle error */ } + + //print($result); + + $response = gzuncompress(base64_decode($result)); + + print($response); + + print("\n"); + +?> diff --git a/tools/Download/DownloadOrder_V1_original.php b/tools/Legacy/Download/DownloadOrder_V1_original.php old mode 100755 new mode 100644 similarity index 94% rename from tools/Download/DownloadOrder_V1_original.php rename to tools/Legacy/Download/DownloadOrder_V1_original.php index a84cba0..5000efc --- a/tools/Download/DownloadOrder_V1_original.php +++ b/tools/Legacy/Download/DownloadOrder_V1_original.php @@ -1,55 +1,55 @@ - array( - - 'header' => "Pragma: DFI", - - 'method' => 'POST', - - 'content' => $compressed - - ) - - ); - - $context = stream_context_create($options); - - $result = file_get_contents('http://naominet.jp/sys/servlet/DownloadOrder', false, $context); - - if ($result === FALSE) { exit("error dl\n"); /* Handle error */ } - - //print($result); - - $response = gzuncompress(base64_decode($result)); - - print($response); - -} - -?> - -SEGA DOWNLOADORDER - -
- -GAME ID: - -GAME VERSION: - -
- + array( + + 'header' => "Pragma: DFI", + + 'method' => 'POST', + + 'content' => $compressed + + ) + + ); + + $context = stream_context_create($options); + + $result = file_get_contents('http://naominet.jp/sys/servlet/DownloadOrder', false, $context); + + if ($result === FALSE) { exit("error dl\n"); /* Handle error */ } + + //print($result); + + $response = gzuncompress(base64_decode($result)); + + print($response); + +} + +?> + +SEGA DOWNLOADORDER + + + +GAME ID: + +GAME VERSION: + +
+
\ No newline at end of file diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/7z.exe b/tools/Legacy/Filesytem/Data_monster_Script_Suite/7z.exe new file mode 100644 index 0000000..6a34fc6 Binary files /dev/null and b/tools/Legacy/Filesytem/Data_monster_Script_Suite/7z.exe differ diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/APM3KeyGenerator.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/APM3KeyGenerator.py new file mode 100644 index 0000000..752cd24 --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/APM3KeyGenerator.py @@ -0,0 +1,44 @@ +import sys + +from Crypto.Cipher import AES + + +if len(sys.argv) != 2: + print(f"Usage: {sys.argv[0]} ") + quit() +if len(sys.argv[1]) != 4: + print("Game ID must be 4 characters (eg SDFD)") + quit() + +SEED = bytes.fromhex( + "C73CDDBF7AFB0EBCE6DED4D9B3DF3B03" + "3FE140E4F4FF96C579908B5B696ABEEE" + "326C5EEA47C0A34051DC55BF8C2A807B" + "E4C6E3EF2F153084693CE2D21EF1BB13" + "DCC96D317C3FCC7AB944636D65C28BB8" + "E2F7748DC64208A873414B787E3F1866" +) +data = AES.new( + key=bytes.fromhex("873df632b988ae14aa9f736b03a51c4f"), + iv=bytes.fromhex("357dc19030d8e8d4941a7e6aceb94e4c"), + mode=AES.MODE_CBC +).decrypt(SEED) +data = AES.new(key=data[0:16], iv=data[16:32], mode=AES.MODE_CBC).encrypt(data[64:96]) + +szSubGameId = sys.argv[1].encode("latin-1") + +pKey = bytearray(data[0:16]) +pIv = bytearray(data[16:32]) + +for i in range(16): + pKey[i] ^= szSubGameId[i % 4] + pIv[i] ^= szSubGameId[i % 4] + +print("Key:", pKey.hex()) +print("IV: ", pIv.hex()) +output_file = f'{sys.argv[1]}.bin' +with open(output_file, "wb") as file: + file.write(bytes.fromhex(pKey.hex())) + file.write(bytes.fromhex(pIv.hex())) + +print("Hex data has been written to", output_file) diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/AppCheck.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/AppCheck.py new file mode 100644 index 0000000..b051367 --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/AppCheck.py @@ -0,0 +1,478 @@ +import secrets +import struct +import zlib +import sys +import os + +from dataclasses import dataclass + +from Crypto.Cipher import AES +from Crypto.Hash import HMAC, SHA1 + + +class CheckFailed(BaseException): + pass + + +class FixFailed(BaseException): + pass + + +class FsCryptError(BaseException): + pass + + +@dataclass +class Timestamp: + year: int + month: int + day: int + hour: int + minute: int + second: int + + +@dataclass +class BootId: + unk0: int + unk1: int + unk2: int + unk3: int + game_id: str + game_timestamp: Timestamp + game_ver: tuple[int, int, int] + block_count: int + block_size: int + header_count: int + hw: str + orgtime: Timestamp + orgver: tuple[int, int, int] + osver: tuple[int, int, int] + + @property + def data_offset(self) -> int: + return self.header_count * self.block_size + + +class Bar: + def __init__(self, msg: str, max_: int, width: int = 30): + self.msg = msg + self.max = max(0, max_) + self.width = width + self.last_n = 0 + + def __iter__(self): + with self: + for i in range(self.max): + yield i + self.update(i) + + def __enter__(self): + self.update(0) + return self + + def __exit__(self, *_): + self.clear() + + def update(self, n: int) -> None: + n = max(0, min(n, self.max)) + self.last_n = n + bar = round((n / self.max) * self.width) * "=" + print(f"{self.msg} [{bar}{' ' * (self.width - len(bar))}] {n/self.max * 100:.2f}%", end="\r", flush=True) + + def print_over(self, *args) -> None: + self.clear() + print(*args) + self.update(self.last_n) + + def clear(self) -> None: + print(" " * (len(self.msg) + 2 + self.width + 2 + len("100.00%")), end="\r", flush=True) + + +class AppChecker: + BTKEY = bytes.fromhex("09ca5efd30c9aaef3804d0a7e3fa7120") + BTIV = bytes.fromhex("b155c22c2e7f0491fa7f0fdc217aff90") + SIGKEY = bytes.fromhex( + "e1bdcb2d5e9ed3b5de234364dfa4d126849edff769fc6c28fba5f43bc482bd74" + "79d676afce8188e1d3a6852f4ebce45cde46bd15e8ee5fe84d197f945a54518f" + ) + + BOOTID_OFFSET = 0 + BOOTID_SIZE = 0x2800 + + SIGNATURE_OFFSET = BOOTID_OFFSET + BOOTID_SIZE # 0x2800 + SIGNATURE_SIZE = 0x200 + + CRC_OFFSET = SIGNATURE_OFFSET + SIGNATURE_SIZE # 0x2a00 + + def __init__(self, filename: str, write: bool = False): + self.filename = filename + self.write = write + self.file = None + self.bootid = None + self.block_size = -1 + self.block_count = -1 + + def __enter__(self): + self.open() + return self + + def __exit__(self, *args): + self.close() + + def open(self) -> None: + self.file = open(self.filename, "r+b" if self.write else "rb") + + def close(self) -> None: + if self.file is not None: + self.file.close() + self.file = None + + def _crc(self, buffer: bytes, nbytes: int = -1) -> int: + if nbytes == -1: + nbytes = len(buffer) + return zlib.crc32(buffer) & 0xffffffff + + def read_bootid(self) -> BootId: + if self.file is None: + raise CheckFailed("File not open") + self.file.seek(self.BOOTID_OFFSET) + + btid = self.file.read(self.BOOTID_SIZE) + aes = AES.new(self.BTKEY, AES.MODE_CBC, self.BTIV) + btid = aes.decrypt(btid) + + parts = struct.unpack( + "<" + "II4s4B" + "4sH5BxBBH" + "QQQ8x" + "3sBH5BxBBH" + "BBH12x", + btid[:96] + ) + + if self._crc(btid[4:]) != parts[0]: + raise CheckFailed("Boot ID CRC failed") + if parts[1] != self.BOOTID_SIZE: + raise CheckFailed(f"Boot ID length invalid ({parts[1]:4x})") + if parts[2] != b"BTID": + raise CheckFailed(f"Boot ID signature invalid ({parts[2]})") + + parts = list(parts[3:]) + self.bootid = BootId( + parts.pop(0), parts.pop(0), parts.pop(0), parts.pop(0), + parts.pop(0).decode(), + Timestamp(parts.pop(0), parts.pop(0), parts.pop(0), parts.pop(0), parts.pop(0), parts.pop(0)), + (parts.pop(0), parts.pop(0), parts.pop(0))[::-1], + parts.pop(0), parts.pop(0), parts.pop(0), parts.pop(0).decode(), + Timestamp(parts.pop(0), parts.pop(0), parts.pop(0), parts.pop(0), parts.pop(0), parts.pop(0)), + (parts.pop(0), parts.pop(0), parts.pop(0))[::-1], + (parts.pop(0), parts.pop(0), parts.pop(0))[::-1], + ) + self.block_size = self.bootid.block_size + self.block_count = self.bootid.block_count + return self.bootid + + def _get_file_signature(self) -> bytes: + if self.file is None: + raise CheckFailed("File not open") + + if self.block_size == -1: + self.read_bootid() + + self.file.seek(self.CRC_OFFSET) + hmac = HMAC.new(self.SIGKEY, digestmod=SHA1) + to_read = self.block_size * 8 - self.CRC_OFFSET + while to_read: + block = self.file.read(min(0x1000, to_read)) + if len(block) == 0: + raise CheckFailed("Ran out of data checking signature") + + hmac.update(block) + to_read -= len(block) + + return hmac.digest() + + def verify_signature(self) -> bool: + if self.file is None: + raise CheckFailed("File not open") + + self.file.seek(self.SIGNATURE_OFFSET) + signature = self.file.read(self.SIGNATURE_SIZE) + if len(signature) != self.SIGNATURE_SIZE: + raise CheckFailed("Ran out of data reading signature") + + if len(signature) < SHA1.digest_size: + raise CheckFailed("File signature impossibly small") + + digest = self._get_file_signature() + return digest == signature[:len(digest)] + + def repair_signature(self, reseed: bool = False) -> None: + if self.file is None: + raise CheckFailed("File not open") + + digest = self._get_file_signature() + if len(digest) > self.SIGNATURE_SIZE: + raise FixFailed("New signature impossibly long") + + if reseed and len(digest) < self.SIGNATURE_SIZE: + digest += secrets.token_bytes(self.SIGNATURE_SIZE - len(digest)) + + self.file.seek(self.SIGNATURE_OFFSET) + self.file.write(digest) + + def verify_block(self, block_n: int) -> bool: + if self.block_size == -1: + self.read_bootid() + + if self.file is None: + raise CheckFailed("File not open") + + self.file.seek(self.CRC_OFFSET + 4 * block_n) + crc = self.file.read(4) + if len(crc) != 4: + raise CheckFailed(f"Ran out of data reading block {block_n} CRC") + expected_crc = struct.unpack(" None: + if self.block_size == -1: + self.read_bootid() + + if self.file is None: + raise CheckFailed("File not open") + if not self.write: + raise FixFailed("File not open for writing") + + block_length = self.block_size + if block_n == 0: + self.file.seek(0) + block = self.file.read(self.SIGNATURE_OFFSET) + skip = self.SIGNATURE_SIZE + 4 + self.file.seek(skip, 1) + block += self.file.read(self.block_size - (self.SIGNATURE_OFFSET + skip)) + block_length -= skip + else: + self.file.seek(block_n * self.block_size) + block = self.file.read(self.block_size) + + self.file.seek(self.CRC_OFFSET + 4 * block_n) + self.file.write(struct.pack(" bool: + if self.block_count == -1: + self.read_bootid() + + ret = True + bar = Bar("Verifying blocks", self.block_count) + for i in bar: + if not ac.verify_block(i): + bar.print_over(f"Block {i} failed verification") + ret = False + return ret + + def repair_all_block_crcs(self) -> None: + if not self.write: + raise FixFailed("File not open for writing") + + if self.block_count == -1: + self.read_bootid() + + ret = True + bar = Bar("Repairing block CRCs", self.block_count) + for i in bar: + if not ac.verify_block(i): + bar.print_over(f"Block {i} failed verification") + ret = False + return ret + + +def size(x: int | float) -> str: + suffix = ("B", "KiB", "MiB", "GiB") + thresh = 1024 + for i in suffix: + if x < thresh: + x = round(x / (thresh / 1024), 2) + if x == round(x): + return f"{int(x)}{i}" + return f"{x} {i}" + thresh *= 1024 + return f"{x:.2} TiB" + + +def print_help() -> None: + print(f"Usage: {sys.argv[0]} [--repair] ") + + +class FsCrypt: + PAGE_SIZE = 0x1000 + + def __init__(self, filename: str, offset: int = 0, size: int = -1, write: bool = False): + self.filename = filename + self.offset = offset + self.size = size + self.write = write + self.file = None + self.ptr = 0 + + self.iv = b'\0' * 16 + self.key = None + self._page_buffer = (-1, b"") + + def __enter__(self): + self.open() + return self + + def __exit__(self, *args): + self.close() + + def set_key(self, key: bytes, iv: bytes): + self.key = key + self.iv = iv + + def open(self) -> None: + self.file = open(self.filename, "r+b" if self.write else "rb") + if self.size == -1: + self.file.seek(0, 2) + self.size = self.file.tell() + + def close(self) -> None: + if self.file is not None: + self.file.close() + self.file = None + + def seek(self, offset: int, whence: int = 0) -> None: + if self.file is None: + raise FsCryptError("Cannot possibly seek without an open file") + + if whence == 0: + self.ptr = offset + elif whence == 1: + self.ptr += offset + elif whence == 2: + self.ptr = self.size - offset + else: + raise ValueError("Invalid whence") + + if self.ptr < 0: + self.ptr = 0 + + def _get_page_iv(self, page: int) -> bytes: + page_iv = bytearray(16) + + file_offset = page * self.PAGE_SIZE + for i in range(16): + page_iv[i] = self.iv[i] ^ (file_offset >> (8 * (i % 8))) & 0xff + + return bytes(page_iv) + + def _read_page(self, page: int) -> bytes: + if self.key is None: + raise FsCryptError("Key not set") + if self.file is None: + raise FsCryptError("File not open") + + iv = self._get_page_iv(page) + cipher = AES.new(self.key, AES.MODE_CBC, iv) + + self.file.seek(self.offset + self.PAGE_SIZE * page) + block = self.file.read(self.PAGE_SIZE) + if len(block) != self.PAGE_SIZE: + raise FsCryptError(f"Ran out of data reading page {page}") + + block = cipher.decrypt(block) + self._page_buffer = (page, block) + return block + + def read(self, n: int) -> bytes: + if self.file is None: + raise FsCryptError("File not open") + + result = b"" + to_read = n + while to_read: + page = self.ptr // self.PAGE_SIZE + page_offset = self.ptr % self.PAGE_SIZE + page_size = min(self.PAGE_SIZE, to_read) + + if self._page_buffer[0] != page: + self._read_page(page) + + if page_offset == 0: + block = self._page_buffer[1][:page_size] + else: + block = self._page_buffer[1][page_offset:page_offset + page_size] + + result += block + to_read -= len(block) + + self.ptr += len(result) + return result + +if __name__ == "__main__": + if len(sys.argv) == 2: + repair = False + app_path = sys.argv[1] + elif len(sys.argv) == 3: + if sys.argv[1] != "--repair": + print_help() + quit() + repair = True + app_path = sys.argv[2] + else: + print_help() + quit() + + if not os.path.exists(app_path) or not os.path.isfile(app_path): + print(f"No such file: {app_path}") + + with AppChecker(app_path, True) as ac: + bootid = ac.read_bootid() + gt = bootid.game_timestamp + print( + f"Found {bootid.game_id}" + f" {bootid.game_ver[0]}.{bootid.game_ver[1]:02}.{bootid.game_ver[2]:02}" + f", {gt.year}-{gt.month:02}-{gt.day:02}T{gt.hour:02}:{gt.minute:02}:{gt.second:02}" + f" for {bootid.hw}" + ) + + print(f" Block size: {size(bootid.block_size)} \t(0x{bootid.block_size:x})") + print(f" Header blocks: {bootid.header_count} \t({size(bootid.header_count * bootid.block_size)})") + print(f" Data blocks: {bootid.block_count} \t({size(bootid.block_count * bootid.block_size)})") + print(f" Data offset: 0x{bootid.data_offset:08x}") + + if repair: + print("=== File repair ===") + print("Repairing signature") + ac.repair_signature() + print("Reparing block CRCs") + ac.repair_all_block_crcs() + + print("=== File validation ===") + if not ac.verify_signature(): + print("Signature: NG") + else: + print("Signature: OK") + + if ac.verify_all_blocks(): + print("All blocks intact") + else: + print("Some blocks invalid") diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/AutoZip.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/AutoZip.py new file mode 100644 index 0000000..4ae82aa --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/AutoZip.py @@ -0,0 +1,36 @@ +import os +import subprocess +from send2trash import send2trash + +# Set the directory to start searching from +start_directory = os.getcwd() +def run_command(command): + os.system(command) + +# Get a list of all subdirectories in the starting directory +subdirectories = [x for x in os.listdir(start_directory) if os.path.isdir(os.path.join(start_directory, x))] +subdirectories.remove("Resource") +#game_name = input("Input game name: ") +# Loop through each subdirectory and create a 7z file for its contents +for directory in subdirectories: + # Set the name of the 7z file to be the name of the subdirectory + seven_zip_filename = os.path.join(start_directory, directory + ".7z") + + # Build the command to execute 7zip + command = ["7z", "a", seven_zip_filename, os.path.join(start_directory, directory, "*")] + + # Execute the command using subprocess + subprocess.run(command) + +api_key = "insert api key here" +# Get the list of files in the current directory +files = [file for file in os.listdir('.') if file.endswith('.7z')] + +# Iterate over each .7z file +for filename in files: + # Construct the command with the filenames + command = f"pd --api-key {api_key} upload \"{filename}\"" + print(f"Now uploading {filename}. Please wait patiently.") + # Execute the command + run_command(command) + send2trash(f"{filename}") \ No newline at end of file diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/AutoZipDaemon.bat b/tools/Legacy/Filesytem/Data_monster_Script_Suite/AutoZipDaemon.bat new file mode 100644 index 0000000..8344841 --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/AutoZipDaemon.bat @@ -0,0 +1,13 @@ +@echo off +:loop +echo Running autozip.py upload... +autozip.py both + +if %errorlevel% neq 0 ( + echo An error occurred. Restarting... + timeout /t 5 > nul + goto loop +) + +echo Script completed successfully. +pause diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/BulkDownloadAndSort.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/BulkDownloadAndSort.py new file mode 100644 index 0000000..8034dfe --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/BulkDownloadAndSort.py @@ -0,0 +1,124 @@ +#What is this script for? + +#This script will download all of the files from a text file and sort them by Game ID. +#This is very useful if you have a large list or PDF of URLs from Sega but don't want to download and sort them manually. + +#What do I need to run this script? + +#You will need an installation of python, and the requests library. +#You can use the command "pip install requests" to install the requests library. + +#How do I run this script? + +#Open command prompt, and run the script. +#Input the filename of the text file. +#Your text file should be formatted like this: + +#||||||||||||||||||||||||||||||||||||||||||| +#||http://example.com/SDAA_12345678910.app|| +#||http://example.com/SDAA_12345678910.app|| +#||http://example.com/SDAA_12345678910.app|| +#||http://example.com/SDAA_12345678910.app|| +#||||||||||||||||||||||||||||||||||||||||||| + +#The text file should ONLY have the URLs you are trying to download from, and each should be separated by a line break. +#The script will find the game ID within the URL and sort it into the correct folder of the same ID. +#If no game ID can be found in the URL, it will be moved a folder titled "unknown". +#The script will also download any .txt and .info files and move them into a subfolder within a game ID folder. + +#This script may take a very long time to run. It's an arduous process. + + +#It's not working. + +#I've never had any errors using this. Feel free to message me if you come across one. + +import os +import re +import urllib.request + +# define regular expression pattern to match game IDs +def get_file_name(url): + # Extract the path from the URL + path = os.path.basename(url) + + # Use os module to get the file name with extension + file_name = os.path.splitext(path)[0] + extension = os.path.splitext(path)[1] + file_name_with_extension = file_name + extension + return file_name_with_extension + +def get_file_extension(url): + # Extract the path from the URL + path = os.path.basename(url) + + # Use os module to get the file extension + file_extension = os.path.splitext(path)[1] + + return file_extension + +# read URLs from file +urlist = input("Input file name here: ") +with open(urlist, "r") as f: + urls = f.read().splitlines() + +# loop through URLs +for url in urls: + # extract game ID from URL + path = url + print(path) + + # Use regular expressions to find the game ID + match = re.search("(sd|sb)[a-z]{2}", path, re.IGNORECASE) + if match: + game_id = match.group(0).upper() + else: + game_id = "unknown" + #print(game_id) + # create game ID folder if it does not exist + if not os.path.exists(game_id): + os.makedirs(game_id) + + # prepare to download files + try: + with urllib.request.urlopen(url) as response: + # loop through response headers to get file name and extension + filename = get_file_name(url) + extension = get_file_extension(url) + for header in response.headers: + if "filename" in header: + filename = header.split("=")[1].strip('"') + extension = os.path.splitext(filename)[1] + break + # skip if file name or extension not found + if not filename or not extension: + continue + + # determine destination folder based on file extension + if extension in [".app", ".opt", ".pack"]: + folder = game_id + elif extension in [".txt", ".info"]: + folder = os.path.join(game_id, "text") + if not os.path.exists(folder): + os.makedirs(folder) + else: + continue + + # check if file already exists in game ID folder or its subfolders + found = False + for root, dirs, files in os.walk(game_id): + if filename in files: + found = True + print(f"{filename} already exists in {os.path.join(root, filename)}") + break + if found: + continue + + # download file and report success + opener = urllib.request.build_opener() + opener.addheaders = [('User-agent', 'Mozilla/5.0')] + urllib.request.install_opener(opener) + urllib.request.urlretrieve(url, os.path.join(folder, filename)) + print(f"{filename} downloaded to {folder}") + except Exception as e: + print(f"Error downloading {url}: {e}") diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/Compare.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/Compare.py new file mode 100644 index 0000000..fb99dec --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/Compare.py @@ -0,0 +1,81 @@ +#What is this script for? + +#This script will compare all of the files in two given folders, and separate the differences. +#This is best used with child .apps, where this is the only way to find the changed files in the update. + +#What do I need to run this script? + +#You will need an installation of python. + +#How do I run this script? + +#Open command prompt, and run the script. " +#"Previous Update" is the first update you extracted, this is a folder path. +#"Current Update" is the folder you are comparing it to, this is also a folder path. +#"Destination" is a new folder where the differences will be copied to. + +#This script may take a very long time to run. It's an arduous process. + +#It's not working. + +#I've never had any errors using this. Feel free to message me if you come across one. + +import os +import hashlib +import shutil +import sys + +def get_file_hash(file_path): + """Get the MD5 hash of a file""" + with open(file_path, "rb") as f: + bytes = f.read() + return hashlib.md5(bytes).hexdigest() + +def compare_folders(folder1, folder2): + """Compare the contents of two folders""" + folder1_files = {} + folder2_files = {} + + # Get the MD5 hash of each file in folder1 + for root, dirs, files in os.walk(folder1): + for file in files: + file_path = os.path.relpath(os.path.join(root, file), folder1) + file_hash = get_file_hash(os.path.join(folder1, file_path)) + folder1_files[file_path] = file_hash + print("1:", file, file_hash) + + # Get the MD5 hash of each file in folder2 + for root, dirs, files in os.walk(folder2): + for file in files: + file_path = os.path.relpath(os.path.join(root, file), folder2) + file_hash = get_file_hash(os.path.join(folder2, file_path)) + folder2_files[file_path] = file_hash + print("2:", file, file_hash) + + # Compare the files in both folders + for file_path in folder2_files: + if file_path not in folder1_files or folder1_files[file_path] != folder2_files[file_path]: + yield file_path + +def copy_files(src_folder, dest_folder, file_paths): + """Copy files from one folder to another, creating new folders if necessary""" + for file_path in file_paths: + src_file = os.path.join(src_folder, file_path) + dest_file = os.path.join(dest_folder, file_path) + + dest_dir = os.path.dirname(dest_file) + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) + + shutil.copy2(src_file, dest_file) + print("+++++", dest_file) + +folder1 = sys.argv[1] +folder2 = sys.argv[2] +dest_folder = sys.argv[3] + +# Compare the contents of folder1 and folder2 +file_paths = compare_folders(folder1, folder2) + +# Copy the different files from folder2 to dest_folder +copy_files(folder2, dest_folder, file_paths) diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/DecryptApps.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/DecryptApps.py new file mode 100644 index 0000000..ad1a677 --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/DecryptApps.py @@ -0,0 +1,43 @@ +#What is this script for? + +#This script will decrypt .opt files with the same decryption key (OPT.bin) +#This is useful if you have a bunch of .opt files that you need to turn into VHDs. + +#What do I need to run this script? + +#You will need an installation of python, OPT.bin and fstool.exe placed in the same location as this script. +#fstool can be downloaded in 1cc. +#OPT.bin can be downloaded in 1cc. + +#How do I run this script? + +#Open command prompt, and run this script in the same location as the .opt files. + +#It's not working. + +#I've never had any errors using this. Feel free to message me if you come across one. + +import os +import sys +from send2trash import send2trash + +def run_command(command): + os.system(command) + +# Get the list of files in the current directory +#files = [file for file in os.listdir('.') if file.endswith('.app')] + +# Iterate over each .opt file +#for filename in files: +# Remove the .opt extension from the filename +filename = sys.argv[1] +output_filename = filename[:-4] +game_ID = filename[:4] +# Construct the command with the filenames +command = f"fsdecrypt Resource\{game_ID}.bin 0x200000 {filename} {output_filename}.vhd" +print(f"Now Decrypting {filename}. Please wait patiently.") +# Execute the command +run_command(command) +#send2trash(f"{filename}") + + diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/DecryptAppsWithUniqueKey.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/DecryptAppsWithUniqueKey.py new file mode 100644 index 0000000..4b9dacb --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/DecryptAppsWithUniqueKey.py @@ -0,0 +1,68 @@ +#What is this script for? + +#This script will decrypt .app files with unique decryption keys into a .vhd form. +#This is not needed for .apps that can be decrypted with the same IV. + +#What do I need to run this script? + +#You will need an installation of python, the AES key and fstool.exe placed in the same location as this script. +#fstool can be downloaded in 1cc. +#the needed AES key can be downloaded in 1cc. + +#How do I run this script? + +#Open command prompt, and run this script in the same location as the .app files. + +#It's not working. + +#I've never had any errors using this. Feel free to message me if you come across one. + +import os +import glob +import subprocess +import time + +# Step 1: Get all the .app files in the current directory +app_files = glob.glob("*.app") + +# Step 2: Loop over each .app file and run the fstool command +for app_file in app_files: + temp_file = app_file[:-4] + ".temp" + command = f"fsdecrypt {app_file[:4]}.aes 0x200000 {app_file} {temp_file}" + print("Creating temp file..") + # Run the command with a timeout of 2 seconds + try: + process = subprocess.Popen(command, shell=True) + time.sleep(2) # Wait for 2 seconds + process.terminate() # Terminate the process after the timeout + except subprocess.TimeoutExpired: + process.kill() # Kill the process if it doesn't terminate + + # Step 3: Get the first 16 bytes of the temp file and XOR with exfat header + print("Done!") + with open(temp_file, "rb") as f: + first_16_bytes = f.read(16) + ntfs_header = bytes.fromhex("EB52904E544653202020200010010000") + xor_result = bytes([a ^ b for a, b in zip(first_16_bytes, ntfs_header)]) + + # Step 4: XOR with last 16 bytes of app.bin + with open(f"{app_file[:4]}.aes", "rb") as f: + key_bytes = f.read() + last_16_bytes = key_bytes[-16:] + xor_result = bytes([a ^ b for a, b in zip(xor_result, last_16_bytes)]) + + # Step 5: Create new key file with XOR result + new_key_file = app_file[:-4] + ".bin" + with open(new_key_file, "wb") as f: + f.write(key_bytes[:16] + xor_result) + + # Step 6: Run fstool command with new key file + vhd_file = app_file[:-4] + ".vhd" + command = f"fsdecrypt {new_key_file} 0x200000 {app_file} {vhd_file}" + print(f"Decrypting {app_file}. Please wait patiently.") + os.system(command) + + # Cleanup: Delete temp file and new key file + os.remove(temp_file) + os.remove(new_key_file) + #os.remove(app_file) diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/DecryptOpts.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/DecryptOpts.py new file mode 100644 index 0000000..3c8e417 --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/DecryptOpts.py @@ -0,0 +1,46 @@ +#What is this script for? + +#This script will decrypt .opt files with the same decryption key (OPT.bin) +#This is useful if you have a bunch of .opt files that you need to turn into VHDs. + +#What do I need to run this script? + +#You will need an installation of python, OPT.bin and fstool.exe placed in the same location as this script. +#fstool can be downloaded in 1cc. +#OPT.bin can be downloaded in 1cc. + +#How do I run this script? + +#Open command prompt, and run this script in the same location as the .opt files. + +#It's not working. + +#I've never had any errors using this. Feel free to message me if you come across one. + +import os +import sys +from send2trash import send2trash + +def run_command(command): + os.system(command) + +# Get the list of files in the current directory +#files = [file for file in os.listdir('.') if file.endswith('.opt')] +#apm3 = input("Extract? TRUE/FALSE: ") + +# Iterate over each .opt file +#for filename in files: +# Remove the .opt extension from the filename +filename = sys.argv[1] +output_filename = filename[:-4] +# Construct the command with the filenames +command = f"fsdecrypt \"Resource\\OPT.bin\" 0x200000 {filename} {output_filename}.exfat" +print(f"Now Decrypting {filename}. Please wait patiently.") +# Execute the command +run_command(command) +#send2trash(f"{filename}") +if sys.argv[2] == "--extract": + folder_filename = filename.split("_")[1] + extract = f"7z -o\"Option\\{folder_filename}\" x {output_filename}.exfat" + run_command(extract) + os.remove(f"{output_filename}.exfat") diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/DecryptOptsWithUniqueKey.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/DecryptOptsWithUniqueKey.py new file mode 100644 index 0000000..17c9d7e --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/DecryptOptsWithUniqueKey.py @@ -0,0 +1,68 @@ +#What is this script for? + +#This script will decrypt .opt files with unique decryption keys into a .vhd form. +#This is not needed for .opts that can be decrypted with the OPT.bin key. + +#What do I need to run this script? + +#You will need an installation of python, OPT.bin and fstool.exe placed in the same location as this script. +#fstool can be downloaded in 1cc. +#OPT.bin can be downloaded in 1cc. + +#How do I run this script? + +#Open command prompt, and run this script in the same location as the .opt files. + +#It's not working. + +#I've never had any errors using this. Feel free to message me if you come across one. + +import os +import glob +import subprocess +import time + +# Step 1: Get all the .opt files in the current directory +opt_files = glob.glob("*.opt") + +# Step 2: Loop over each .opt file and run the fstool command +for opt_file in opt_files: + temp_file = opt_file[:-4] + ".temp" + command = f"fsdecrypt \"Resource\\OPT.bin\" 0x200000 {opt_file} {temp_file}" + # Run the command with a timeout of 2 seconds + try: + process = subprocess.Popen(command, shell=True) + time.sleep(2) # Wait for 2 seconds + process.terminate() # Terminate the process after the timeout + except subprocess.TimeoutExpired: + process.kill() # Kill the process if it doesn't terminate + + # Step 3: Get the first 16 bytes of the temp file and XOR with exfat header + with open(temp_file, "rb") as f: + first_16_bytes = f.read(16) + exfat_header = bytes.fromhex("EB769045584641542020200000000000") + xor_result = bytes([a ^ b for a, b in zip(first_16_bytes, exfat_header)]) + + # Step 4: XOR with last 16 bytes of OPT.bin + with open("Resource\\OPT.bin", "rb") as f: + key_bytes = f.read() + last_16_bytes = key_bytes[-16:] + xor_result = bytes([a ^ b for a, b in zip(xor_result, last_16_bytes)]) + + # Step 5: Create new key file with XOR result + new_key_file = opt_file[:-4] + ".key" + with open(new_key_file, "wb") as f: + f.write(key_bytes[:16] + xor_result) + + # Step 6: Run fstool command with new key file + vhd_file = opt_file[:-4] + ".vhd" + command = f"fsdecrypt {new_key_file} 0x200000 {opt_file} {vhd_file}" + os.system(command) + # Cleanup: Delete temp file and new key file + os.remove(temp_file) + os.remove(new_key_file) + + folder_filename = opt_file.split("_")[1] + extract = f"7z -o\"Option\\{folder_filename}\" x {vhd_file}" + os.system(extract) + os.remove(f"{vhd_file}") diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/Delete.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/Delete.py new file mode 100644 index 0000000..3c6a9da --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/Delete.py @@ -0,0 +1,24 @@ +import os +import sys +import shutil + +def delete_folder(folder_path): + try: + # Check if the folder exists + if not os.path.exists(folder_path): + print(f"Folder '{folder_path}' does not exist.") + return + + # Delete the folder + shutil.rmtree(folder_path) + print(f"Folder '{folder_path}' has been deleted.") + except Exception as e: + print(f"An error occurred while deleting the folder: {str(e)}") + +if __name__ == '__main__': + # Check if a folder path is provided as an argument + if len(sys.argv) != 2: + print("Please provide the folder path as an argument.") + else: + folder_path = sys.argv[1] + delete_folder(folder_path) diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/Discord.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/Discord.py new file mode 100644 index 0000000..e5f1b8b --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/Discord.py @@ -0,0 +1,51 @@ +import os + +def get_dir_size(path): + total = 0 + if os.path.isdir(path): + with os.scandir(path) as it: + for entry in it: + if entry.is_file(): + total += entry.stat().st_size + elif entry.is_dir(): + total += get_dir_size(entry.path) + return total + +def convert_bytes(size): + for x in ['bytes', 'KB', 'MB', 'GB', 'TB']: + if size < 1024.0: + return "%3.1f %s" % (size, x) + size /= 1024.0 + + return size + +def get_amfs(path): + if os.path.exists(f"{path}\\amfs"): + if os.path.isfile(f"{path}\\amfs\\ICF1"): + amfs = ":white_check_mark:" + else: + amfs = ":no_entry_sign:" + else: + amfs = ":no_entry_sign:" + return amfs +def get_option(path): + optionlist = [] + if os.path.exists(f"{path}\\Option"): + for file in os.listdir(f"{path}\\Option"): + option = os.path.join(file) + optionlist.append(option) + options = f"[{', '.join(optionlist)}]"[1:-1] + else: + options = "None" + return options + +rootdir = os.getcwd() +for file in os.listdir(rootdir): + d = os.path.join(file) + location = os.path.join(rootdir, file) + realsize = get_dir_size(location) + if os.path.isdir(d): + print("**" + d + ":** `" + str(convert_bytes(realsize)) + "`") + #print("Option Data:") + #print("`" + get_option(location) + "`") + #print("ICF Files " + get_amfs(location)) \ No newline at end of file diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/ExtractInternal.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/ExtractInternal.py new file mode 100644 index 0000000..8d3d93c --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/ExtractInternal.py @@ -0,0 +1,10 @@ +import os +import sys + +def run_command(command): + os.system(command) + +filename = sys.argv[1] +extract = f"7z -o\"App\" x {filename}" +run_command(extract) +#os.remove(f"{filename}") \ No newline at end of file diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/ExtractVHD1.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/ExtractVHD1.py new file mode 100644 index 0000000..0953443 --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/ExtractVHD1.py @@ -0,0 +1,18 @@ +import os +import shutil +import time + +source_path = "K:\internal_0.vhd" +destination_path = os.getcwd() + +def run_command(command): + os.system(command) + +files = [file for file in os.listdir('.') if file.endswith('.vhd') ] +for file in files: + command = f"OSFMount.com -a -t file -f {file} -m K:" + run_command(command) + time.sleep(5) + shutil.copy(source_path, destination_path) + command = f"OSFMount.com -D -m K:" + run_command(command) \ No newline at end of file diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/MD5.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/MD5.py new file mode 100644 index 0000000..ab829d8 --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/MD5.py @@ -0,0 +1,30 @@ +#What is this script for? + +#This script will calculate the md5 hash of a file. +#You may want to do this if you're concerned a file download didn't work correctly; you can use the md5 I or someone else has provided to see if it matches. + +#What do I need to run this script? + +#You will need an installation of python. + +#How do I run this script? + +#Open command prompt, and run the script. Input the path of the file when it asks. + +#It's not working. + +#I've never had any errors using this. Feel free to message me if you come across one. + +import os +import hashlib +import shutil + +def get_file_hash(file_path): + """Get the MD5 hash of a file""" + with open(file_path, "rb") as f: + bytes = f.read() + society = hashlib.md5(bytes).hexdigest() + print(society) + +path = input("Paste the path of the file here: ") +get_file_hash(path) \ No newline at end of file diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/MD5Folder.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/MD5Folder.py new file mode 100644 index 0000000..b4fddd0 --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/MD5Folder.py @@ -0,0 +1,22 @@ +import os +import hashlib +import shutil +import sys + +def get_file_hash(file_path): + with open(file_path, "rb") as f: + bytes = f.read() + return hashlib.md5(bytes).hexdigest() + +def compare_folders(folder1): + folder1_files = {} + + for root, dirs, files in os.walk(folder1): + for file in files: + file_path = os.path.relpath(os.path.join(root, file), folder1) + file_hash = get_file_hash(os.path.join(folder1, file_path)) + folder1_files[file_path] = file_hash + print(file, file_hash) + +file_paths = sys.argv[1] +compare_folders(file_paths) \ No newline at end of file diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/MasterDecryptorDM.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/MasterDecryptorDM.py new file mode 100644 index 0000000..ab4ea69 --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/MasterDecryptorDM.py @@ -0,0 +1,29 @@ +import subprocess +import os + +files = [file for file in os.listdir('.') if file.endswith('.app') or file.endswith('.opt') ] +print("Welcome to the DataMonster Decryption Automator.\nPlease make sure all of your .apps and .opts are in this directory.") +decrypt = input("Type \"Decrypt\" to decrypt apps and opts, or \"Upload\" to upload your files: ") +vhd_name = "vhd" +if decrypt == "Decrypt": + for file in files: + subprocess.run(["python", "AppCheck.py", file]) + if file.endswith('.app'): + try: + subprocess.Popen(["start", "cmd", "/k", "python", "ProgressBar.py", file, file[:-3] + vhd_name], shell=True) + except Exception as e: + print(f"An error occurred: {e}") + subprocess.run(["python", "DecryptApps.py", file]) + try: + subprocess.Popen(["start", "cmd", "/k", "python", "ProgressBar.py", "K:\\internal_0.vhd", "internal_0.vhd"], shell=True) + except Exception as e: + print(f"An error occurred: {e}") + subprocess.run(["python", "ExtractVHD1.py"]) + subprocess.run(["python", "ExtractInternal.py", "internal_0.vhd"]) + else: + subprocess.run(["python", "AppCheck.py", file]) + subprocess.run(["python", "DecryptOpts.py", file, "--extract"]) +elif decrypt == "Upload": + subprocess.run(["AutoZipDaemon.bat"]) +else: + exit() diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/Namco VHD/auto.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/Namco VHD/auto.py new file mode 100644 index 0000000..2b6d048 --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/Namco VHD/auto.py @@ -0,0 +1,13 @@ +import subprocess + +for i in range(00, 32): + num1 = f"{i:02d}" + num2 = f"{i + 1:02d}" + + file1 = f"JJL10JPN-{num1}" + file2 = f"JJL10JPN-{num2}" + + command = f"python Compare.py {file1} {file2} \"JoJo's Bizarre Adventure Last Survivor (SDEX {num2})\"" + + print(f"Running command: {command}") + subprocess.run(command, shell=True) \ No newline at end of file diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/Namco VHD/unzip.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/Namco VHD/unzip.py new file mode 100644 index 0000000..86cd528 --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/Namco VHD/unzip.py @@ -0,0 +1,11 @@ +import os + +# Get the list of files in the current directory +files = os.listdir() + +# Iterate over the files +for file in files: + if file.endswith(".vhdx"): + # Run the command with the ID + command = f"7z x {file} -o\"{file[:-5]}\"" + os.system(command) \ No newline at end of file diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/Namco VHD/ver.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/Namco VHD/ver.py new file mode 100644 index 0000000..95a485e --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/Namco VHD/ver.py @@ -0,0 +1,30 @@ +import configparser +import os + +# Define the folder path where the .ini files are located +folder_path = os.getcwd() + "\\JJL10JPN-{XX}\\AJB\\Binaries\\Win64\\AMCUS" + +# Create a function to extract and write game_ver to a single text file +def extract_and_write_game_ver_to_single_file(folder_path, output_file_path): + with open(output_file_path, 'w') as output_file: + for xx in range(18): + xx_str = str(xx).zfill(2) # Convert xx to a zero-padded string (e.g., "01" instead of "1") + ini_file_path = os.path.join(folder_path.replace('{XX}', xx_str), 'AMConfig.ini') + print(ini_file_path) + + if os.path.exists(ini_file_path): + config = configparser.ConfigParser() + config.read(ini_file_path) + + if 'cacfg-game_ver' in config['MuchaCAConfig']: + game_ver = config['MuchaCAConfig']['cacfg-game_ver'] + print(game_ver) + output_file.write(f"XX.{xx_str}: {game_ver}\n") + +# Define the output file path for writing all game_ver values +output_file_path = 'game_ver_values.txt' + +# Call the function to extract and write game_ver values to the single text file +extract_and_write_game_ver_to_single_file(folder_path, output_file_path) + +print("Game version extraction and writing to a single file completed.") diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/OSFMount.com b/tools/Legacy/Filesytem/Data_monster_Script_Suite/OSFMount.com new file mode 100644 index 0000000..99088c1 Binary files /dev/null and b/tools/Legacy/Filesytem/Data_monster_Script_Suite/OSFMount.com differ diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/DiscImageCreator.exe b/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/DiscImageCreator.exe new file mode 100644 index 0000000..baad366 Binary files /dev/null and b/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/DiscImageCreator.exe differ diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/ReadErrorProtect.txt b/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/ReadErrorProtect.txt new file mode 100644 index 0000000..b601cc7 --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/ReadErrorProtect.txt @@ -0,0 +1,2 @@ +# This is a file not to read sector. Please write the file name you want to read skipping +SYSTEM.LSK diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/alphaDvd.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/alphaDvd.py new file mode 100644 index 0000000..0a7e54b --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/alphaDvd.py @@ -0,0 +1,728 @@ +import random +import struct +import zlib +import time +import sys +import os + +from dataclasses import dataclass + + +""" +Full trace: (start sector, sector count) + +[ header scan, found in sector 1 ] +16, 1 ; pre-read +16, 1 ; sector 16: no header found + 1, 1 ; sector 1: header found + ; sector 17: skipped + +; header reads: +; magic: f1ffff1f (VALID) +; auth disk offset: 1264 sectors +; auth sector 2 pre-seek: 512 +; auth sector 3 pre-seek: 720 +; start sector: 1264 +; ??: 0 (unused?) +; name: SEGA_DVD201510261118 (VALID) +; encryption seed: 0 +; active section: f101 (-> 01) + +[ alpha disk auth, n = 0x140, offset = 1264 ] +; auth sector = (n - 1 + offset) & 0xfffffff0 = 1568 +1248, 16 ; offset - 16 +1568, 16 ; auth sector (1) +1248, 16 ; offset - 16 +1768, 16 ; auth sector 2 pre-seek = as2ps - 8 + offset +1568, 16 ; auth sector (2) +1992, 16 ; auth sector 3 pre-seek = as3ps - 8 + offset +1568, 16 ; auth sector (3) + +[ key disk auth ] + 1264, 5 ; FUN_00401c30 +2084013, 6 ; + 560303, 5 ; + 894866, 3 ; +1280073, 4 ; + 14293, 2 ; + 362313, 4 ; + 458249, 4 ; +1581741, 6 ; +1276777, 6 ; +1999268, 3 ; +1840256, 5 ; + 672110, 5 ; + 45923, 3 ; + 199033, 3 ; +1492613, 6 ; +1657305, 5 ; + 405869, 5 ; +1925076, 5 ; + 222170, 6 ; +1210772, 2 ; +1931135, 5 ; +1765245, 6 ; +1254277, 5 ; + +[ header scan, found in sector 1 ] +16, 1 ; + 1, 1 ; + +[ alpha disk auth, n = 0x180, offset = 1264 ] +; auth sector = (n - 1 + offset) & 0xfffffff0 = 1632 +1248, 16 ; offset - 16 +1632, 16 ; auth sector (1) +1248, 16 ; offset - 16 +1768, 16 ; auth sector 2 pre-seek = as2ps - 8 + offset +1632, 16 ; auth sector (2) +1992, 16 ; auth sector 3 pre-seek = as3ps - 8 + offset +1632, 16 ; auth sector (3) + +""" + +""" +Different trace: + +randoms: + 0x40e620aa -> rand1 = 46 + 0x704a8ebf -> rand2 = 9 + 0xa93353c0 -> rand3 = 2 + 0xbbc22e57 -> uVar1 = 3150065239, uVar3 = 1050021746 + > sectorSize = 11 + + # Initialised four LCGs + 0x86a4e1c1 -> seed[0] = 41 + 2390420364 + (60 * 0) + 0x861237d2 -> seed[1] = 42 + 2390420364 + (60 * 1) + 0x2fd140fb -> seed[2] = 31 + 2390420364 + (60 * 2) + 0x9003866e -> seed[3] = 46 + 2390420364 + (60 * 3) + +1264, 11 ; FUN_00401c30 + +randoms: + # Re-initialised the four LCGs + 0x0eef4a18 -> seed[0] = 36 + 2390420544 + (60 * 0) + 0x51edeee6 -> seed[1] = 6 + 2390420544 + (60 * 1) + 0xb5469a90 -> seed[2] = 24 + 2390420544 + (60 * 2) + 0x9d7224a0 -> seed[3] = 32 + 2390420544 + (60 * 3) + +FUN_00402380(rand2); +FUN_004024b0(); +FUN_00402380(rand3); +FUN_004024b0(); +FUN_00402380(sectorSize); +return iVar2; +""" + + +def amAuthDiskInitKey(seed): + cache = f"AlphaAuthKey_{seed:04x}.bin" + + if os.path.exists(cache): + return open(cache, "rb").read() + + key = bytearray(0x8000) + + for i in range(0x8000): + uVar1 = (seed * 2 >> 4 ^ seed * 2) >> 10 & 2 | seed << 2 + uVar2 = uVar1 * 2 + uVar3 = ((seed << 2) >> 4 ^ uVar1) >> 10 & 2 | uVar2 + uVar1 = uVar3 * 2 + uVar3 = (uVar2 >> 4 ^ uVar3) >> 10 & 2 | uVar1 + uVar2 = uVar3 * 2 + uVar3 = (uVar1 >> 4 ^ uVar3) >> 10 & 2 | uVar2 + uVar1 = uVar3 * 2 + uVar3 = (uVar2 >> 4 ^ uVar3) >> 10 & 2 | uVar1 + uVar2 = uVar3 * 2 + uVar3 = (uVar1 >> 4 ^ uVar3) >> 10 & 2 | uVar2 + uVar1 = uVar3 * 2 + uVar2 = (uVar2 >> 4 ^ uVar3) >> 10 & 2 | uVar1 + seed = uVar2 | (uVar1 >> 4 ^ uVar2) >> 11 & 1 + + key[i] = seed & 0xff + + open(cache, "wb").write(key) + return key + + +def decrypt(buffer, key): + out = bytearray(len(buffer)) + for i in range(len(buffer)): + out[i] = buffer[i] ^ key[i & 0x7ff] + return out + + +@dataclass +class AlphaHeader: + magic: int + auth_offset: int + auth_pre_seek_2: int + auth_pre_seek_3: int + start_sector: int + unused: int + name: str + seed: int + dummy_section: int + + +RET_OPEN_MASK = 0b11 +RET_OPEN_NOCHECK = 0 +RET_OPEN_OK = 1 +RET_OPEN_NG = 2 + +RET_ALPHA_MASK = 0b11 << 2 +RET_ALPHA_OK = 1 << 2 +RET_ALPHA_NG = 2 << 2 + +RET_AUTH_MASK = 0b11 << 4 +RET_AUTH_OK = 1 << 4 +RET_AUTH_NG = 2 << 4 + +RET_OK = 1 << 6 + + +class AlphaDvd: + TESTS = [0x140, 0x150, 0x160, 0x170, 0x180, 0x190] + + def __init__(self, path): + self.path = path + + self.sector_key = None + self.rand_sector = 0 + self.sections = [[0] * 4 for _ in range(4)] + + self.sectorToRead = 0 + self.sectorSize = 0 + self.lcgs = [0] * 4 + self.rand1 = self.rand2 = self.rand3 = 0 + + # Header info + self.offset = 0 + self.authSector2PS = 0 + self.authSector3PS = 0 + self.start_sector = 0 + self.f5 = 0 + self.name = "" + self.key_seed = 0 + self.dummy_section = 0 + + self.reads = [] + + def log(self, *args, **kwargs): + print(*args, **kwargs, file=sys.stderr) + + def am_auth_disk_open(self): + try: + self.alpha = open(self.path, "rb") + return True + except Exception: + return False + + def read_sector(self, sector, count, reason=""): + self.reads.append(sector) + + if reason: + self.log(f"{sector: 8}, {count: 3} ; {reason}") + else: + self.log(f"{sector: 8}, {count: 3}") + try: + self.alpha.seek(sector * 2048) + return self.alpha.read(count * 2048) + except Exception: + return None + + def decrypt_header(self, buffer, which): + self.sector_key = amAuthDiskInitKey(5369) + offset = 318 if which == 1 else 508 + + header = decrypt(buffer[offset: offset + 53], self.sector_key) + header = struct.unpack(" 3: + return random.randint(0, self.sectorToRead + 0x1fdffa) + + # The LCG four times + seed1 = (self.lcgs[which_generator] * 0x343fd + 0x269ec3) & 0xffffffff + seed2 = (seed1 * 0x343fd + 0x269ec3) & 0xffffffff + seed3 = (seed2 * 0x343fd + 0x269ec3) & 0xffffffff + seed4 = (seed3 * 0x343fd + 0x269ec3) & 0xffffffff + self.lcgs[which_generator] = seed4 + + # Calculate the actual 15-bit values from those LCG calls + val1 = (seed1 >> 0x10) & 0x7FFF + val2 = (seed2 >> 0x10) & 0x7FFF + val3 = (seed3 >> 0x10) & 0x7FFF + val4 = (seed4 >> 0x10) & 0x7FFF + + return ( + # 11 33 22 44 + (val1 << 16) & 0xff000000 + | (val3 << 8) & 0x00ff0000 + | (val2 & 0xff00) + | (val4 >> 8) + ) % (self.sectorToRead + 0x1fdffa) + + def rand3_SectorRead(self): + sector = self.get_random_number(3) + count = random.randint(2, 7) + # read 2-7 sectors at [rand 3] + self.read_sector(sector, count) + + def FUN_00401c30(self): + buffer = self.read_sector(self.sectorToRead, self.sectorSize) + if buffer is None: + return -6 + + crcFeed = bytearray(2048) + for i in range(len(crcFeed)): + crcFeed[i] = buffer[i] + + calcCrc = zlib.crc32(crcFeed[:1920]) + val = struct.unpack(" 7: + i = ((temp[1] ^ 0x6bf0b800) >> 11) + self.sectorToRead + uVar4 = temp[2] >> 30 + # Both unused? + self.field45_0x84bc = i + self.field50_0x84c4 = uVar4 + 2 + return -(self.sectorToRead + 0x1fdfff < uVar4 + 1 + i) & 0xfffffff8 + + return -8 + + def FUN_00402380(self, count): + which = [0] * 32 + which[0] = 2 + if count > 1: + for i in range(1, count): + rand = random.randint(0, 5) + if rand < 3: + which[i] = 0 + elif rand < 5: + which[i] = 1 + else: + which[i] = -1 + + for i in range(count): + rand = random.randint(0, count - 1) + which[i], which[rand] = which[rand], which[i] + + for i in range(count): + sector = self.get_random_number(which[i]) + self.read_sector(sector, random.randint(2, 7)) + + def auth_key(self, param_1): + self.log(f"\n[ key disc auth, offset = {param_1} ]") + + self.sectorToRead = param_1 + + self.rand1 = random.randint(0, 59) + self.rand2 = random.randint(2, 9) + self.rand3 = random.randint(2, 9) + + param_1 = random.randint(0, 0xffffffff) + self.sectorSize = (((7 - (param_1 // 3)) * 3 - self.rand3) - self.rand2) + param_1 + + LCGS_SEED = 2390420364 + self.lcgs[0] = random.randint(0, 59) + LCGS_SEED + (60 * 0) + self.lcgs[1] = random.randint(0, 59) + LCGS_SEED + (60 * 1) + self.lcgs[2] = random.randint(0, 59) + LCGS_SEED + (60 * 2) + self.lcgs[3] = random.randint(0, 59) + LCGS_SEED + (60 * 3) + + LCGS_SEED = 2390420544 + iVar2 = self.FUN_00401c30() + if iVar2: + self.lcgs[0] = random.randint(0, 59) + LCGS_SEED + (60 * 0) + self.lcgs[1] = random.randint(0, 59) + LCGS_SEED + (60 * 1) + self.lcgs[2] = random.randint(0, 59) + LCGS_SEED + (60 * 2) + self.lcgs[3] = random.randint(0, 59) + LCGS_SEED + (60 * 3) + + self.FUN_00402380(self.rand2) + self.rand3_SectorRead() + self.FUN_00402380(self.rand3) + self.rand3_SectorRead() + self.FUN_00402380(self.sectorSize) + return iVar2 + + raise NotImplementedError + + def validate_sections(self): + match self.header.dummy_section & 0xff: + case 1: + if self.sections[2][1] != 0xf2ffff2f: + return -7 + if self.sections[3][1] != 0xf3ffff3f: + return -7 + if self.sections[1][1] == 0xf2ffff2f: + return -7 + if self.sections[1][1] == 0xf3ffff3f: + return -7 + case 2: + if self.sections[1][1] != 0xf1ffff1f: + return -7 + if self.sections[3][1] != 0xf3ffff3f: + return -7 + if self.sections[2][1] == 0xf1ffff1f: + return -7 + if self.sections[2][1] == 0xf3ffff3f: + return -7 + case 3: + if self.sections[1][1] != 0xf1ffff1f: + return -7 + if self.sections[2][1] != 0xf2ffff2f: + return -7 + if self.sections[3][1] == 0xf1ffff1f: + return -7 + if self.sections[3][1] == 0xf2ffff2f: + return -7 + case _: + return -7 + return 0 + + def am_auth_disk_read_info(self): + if not self.locate_header(): + return 1 + + n = random.choice(self.TESTS) + self.log(f"\n[ alpha disc auth, n = 0x{n:03x} ]") + self.rand_sector = n - 1 + self.offset + + self.read_sector(self.offset - 16, 16, "offset - 16") + ret = self.read_section(1) + if ret: + self.log(f"; Dup 1 {'(dummy) ' if self.header.dummy_section & 0xff == 1 else ''}NG") + return ret + self.log(f"; Dup 1 {'(dummy) ' if self.header.dummy_section & 0xff == 1 else ''}OK") + + self.read_sector(self.offset - 16, 16, "offset - 16") + self.read_sector(self.offset + self.authSector2PS - 8, 16, "pre-seek 2 - 8 + offset") + ret = self.read_section(2) + if ret: + self.log(f"; Dup 2 {'(dummy) ' if self.header.dummy_section & 0xff == 2 else ''}NG") + return ret + self.log(f"; Dup 2 {'(dummy) ' if self.header.dummy_section & 0xff == 2 else ''}OK") + + self.read_sector(self.offset + self.authSector3PS + 8, 16, "pre-seek 3 - 8 + offset") + ret = self.read_section(3) + if ret: + self.log(f"; Dup 3 {'(dummy) ' if self.header.dummy_section & 0xff == 3 else ''}NG") + return ret + self.log(f"; Dup 3 {'(dummy) ' if self.header.dummy_section & 0xff == 3 else ''}OK") + + ret = self.validate_sections() + if ret: + self.log("; section validation failed") + return ret + + def am_auth_disk_read_info_all(self): + if not self.locate_header(): + return 1 + + for n in self.TESTS: + self.log(f"\n[ alpha disc auth, n = 0x{n:03x} ]") + self.rand_sector = n - 1 + self.offset + + self.read_sector(self.offset - 16, 16, "offset - 16") + ret = self.read_section(1) + if ret: + self.log(f"; Dup 1 {'(dummy) ' if self.header.dummy_section & 0xff == 1 else ''}NG") + return ret + self.log(f"; Dup 1 {'(dummy) ' if self.header.dummy_section & 0xff == 1 else ''}OK") + + self.read_sector(self.offset - 16, 16, "offset - 16") + self.read_sector(self.offset + self.authSector2PS - 8, 16, "pre-seek 2 - 8 + offset") + ret = self.read_section(2) + if ret: + self.log(f"; Dup 2 {'(dummy) ' if self.header.dummy_section & 0xff == 2 else ''}NG") + return ret + self.log(f"; Dup 2 {'(dummy) ' if self.header.dummy_section & 0xff == 2 else ''}OK") + + self.read_sector(self.offset + self.authSector3PS + 8, 16, "pre-seek 3 - 8 + offset") + ret = self.read_section(3) + if ret: + self.log(f"; Dup 3 {'(dummy) ' if self.header.dummy_section & 0xff == 3 else ''}NG") + return ret + self.log(f"; Dup 3 {'(dummy) ' if self.header.dummy_section & 0xff == 3 else ''}OK") + + ret = self.validate_sections() + if ret: + self.log("; section validation failed") + + return 0 + + def alpha_disc_auth(self): + if "-n" in sys.argv: + self.am_auth_disk_open() + retval = RET_OPEN_NOCHECK + else: + if self.am_auth_disk_open(): + retval = RET_OPEN_OK + else: + retval = RET_OPEN_NG + + ret = self.am_auth_disk_read_info() + if ret == -7: + retval |= RET_ALPHA_NG + elif ret == -6: + retval = RET_OPEN_NG + elif ret == 0: + retval |= RET_ALPHA_OK + else: + retval |= RET_ALPHA_NG + + print(f"retval={retval}") + print(f"sector={self.start_sector}") + return retval + + def alpha_disc_auth_all(self): + if "-n" in sys.argv: + self.am_auth_disk_open() + retval = RET_OPEN_NOCHECK + else: + if self.am_auth_disk_open(): + retval = RET_OPEN_OK + else: + retval = RET_OPEN_NG + + ret = self.am_auth_disk_read_info_all() + if ret == -7: + retval |= RET_ALPHA_NG + elif ret == -6: + retval = RET_OPEN_NG + elif ret == 0: + retval |= RET_ALPHA_OK + else: + retval |= RET_ALPHA_NG + + print(f"retval={retval}") + print(f"sector={self.start_sector}") + return retval + + def key_disc_auth(self, sector): + if "-n" in sys.argv: + self.am_auth_disk_open() + retval = RET_OPEN_NOCHECK + else: + if self.am_auth_disk_open(): + retval = RET_OPEN_OK + else: + retval = RET_OPEN_NG + + ret = self.auth_key(sector) + if ret == -8: + retval |= RET_AUTH_NG + elif ret == -6: + retval = RET_OPEN_NG + elif ret == 0: + retval |= RET_AUTH_OK + else: + retval |= RET_AUTH_NG + + print(f"retval={retval}") + return retval + + def alpha_and_key_auth(self): + if "-n" in sys.argv: + self.am_auth_disk_open() + retval = RET_OPEN_NOCHECK + else: + if self.am_auth_disk_open(): + retval = RET_OPEN_OK + else: + retval = RET_OPEN_NG + + if retval & RET_OPEN_MASK != RET_OPEN_NG: + ret = self.am_auth_disk_read_info() + if ret == -7: + retval |= RET_ALPHA_NG + elif ret == -6: + retval = RET_OPEN_NG + elif ret == 0: + retval |= RET_ALPHA_OK + else: + retval |= RET_ALPHA_NG + + # 0: 00000000 00000000 00000000 00000000 + # 1: 00000000 00000000 00000000 00000000 + # 2: 1FFFFFF1 2FFFFFF2 xxxx0000 F111111F + # 3: 1FFFFFF1 3FFFFFF3 xxxx0000 F111111F + + if retval & RET_ALPHA_MASK != RET_ALPHA_NG: + ret = self.auth_key(self.start_sector) + if ret == -8: + retval |= RET_AUTH_NG + elif ret == -6: + retval = 2 + elif ret == 0: + retval |= RET_AUTH_OK + else: + retval |= RET_AUTH_NG + + ret = self.am_auth_disk_read_info() + if ret == -7: + retval = (retval & 0xffffffcb) | RET_ALPHA_NG + elif ret == -6: + retval = RET_OPEN_NG + elif ret != 0: + retval = (retval & 0xffffffcb) | RET_ALPHA_NG + + print(f"retval={retval}") + print(f"sector={self.start_sector}") + return retval + + def print_version(self): + print("amAuthDisc Ver.1.01 Build:Jun 30 2011 05:18:04") + print(f"retval={RET_OK}") + return RET_OK + + def print_help(self): + print( + "mxauthdisc\n" + "(C) Copyright 2009 SEGA Corporation.\n" + "usage: mxauthdisc option\n" + "option: -m : Alpha-DISC authentication & key disc authentication\n" + " -a : Alpha-DISC authentication\n" + " -k sector : key disc authentication\n" + " -n : no check drive (with -m, -k, -a option)\n" + " -v : Print Alpha-DISC lib version\n" + " -h : Print this help\n" + " v > m > k > a" + ) + print(f"retval={RET_OK}") + return RET_OK + + def main(self): + self.log(f"; Started at at time {time.strftime('%Y-%m-%d %H:%M:%S')}") + self.log(f"; Arguments: '{' '.join(sys.argv[1:])}'") + self.log(f"; Using device: {self.path}") + + if "-h" in sys.argv: + retval = self.print_help() + elif "-v" in sys.argv: + retval = self.print_version() + elif "-k" in sys.argv: + retval = self.key_disc_auth(int(sys.argv[sys.argv.index("-k") + 1])) + elif "-a" in sys.argv: + retval = self.alpha_disc_auth() + elif "-A" in sys.argv: + retval = self.alpha_disc_auth_all() + elif "-m" in sys.argv: + retval = self.alpha_and_key_auth() + else: + retval = self.print_help() + + if retval & RET_OPEN_NG: + self.log("; retval: open NG") + if retval & RET_ALPHA_NG: + self.log("; retval: alpha NG") + if retval & RET_AUTH_NG: + self.log("; retval: auth NG") + + self.log(f"; Completed at time {time.strftime('%Y-%m-%d %H:%M:%S')}") + + return retval + + +if __name__ == "__main__": + sys.exit(AlphaDvd(r"\\.\F:").main()) diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/auto.bat b/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/auto.bat new file mode 100644 index 0000000..db07981 --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/auto.bat @@ -0,0 +1,9 @@ +set /p name=Enter DVD name: +echo DVD is %name% + +DiscImageCreator.exe dvd F "%name%" 10 +alphadvd.py -m +partition.py %name% +echo Set objShell = CreateObject("WScript.Shell") > %temp%\BringToFront.vbs +echo objShell.AppActivate(WScript.ScriptFullName) >> %temp%\BringToFront.vbs +cscript //nologo %temp%\BringToFront.vbs \ No newline at end of file diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/default.dat b/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/default.dat new file mode 100644 index 0000000..34ceeef --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/default.dat @@ -0,0 +1,21 @@ + +
+ -insert name- + -insert description- + + -insert version- + -insert date- + -insert author- + + -insert homepage- + -insert url- + + +
+ + Games + foo + + + +
diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/driveOffset.txt b/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/driveOffset.txt new file mode 100644 index 0000000..493cbc3 --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/driveOffset.txt @@ -0,0 +1,4321 @@ + +Perfect Digital Audio Extraction + + + +Each CD drive reads audio discs slightly out (a number of samples), if your CD drive supports 'Accurate Stream' it will be a constant value, this value tends to be the same for each particular make and model of CD Drive. A small number of drives have [Purged] as the offset, these drives were found not to have a constant drive offset (perhaps different manufacturing batches, or firmwares), as such they have been removed from AccurateRip's drive database (should you have one of these drives, 3 matching key disks will be required to configure AccurateRip). +This list contains submitted drive read offsets in a format compatible with dBpowerAMP Music Converter (dMC) and Exact Audio Copy (EAC). + +Information: JLMS drives are listed as Lite-ON, HL-DT-ST as LG Electronics & Matshita as Panasonic + +CD Drive Correction Offset Submitted By Percentage Agree +- 16X12 DVD DUAL +91 10 100% +- 16X16 DVD DUAL +91 5 100% +- 16X52X32X52COMBO +738 8 100% +- 16X8 DVD DUAL +91 13 100% +- 24X10X40 CD-RW +97 8 100% +- 32X12X48 CD-RW +97 2 100% +- 36X CD-ROM +12 2 100% +- 40X CD-ROM +12 3 100% +- 40X12X48 CD-RW +97 7 100% +- 48X12X50 CD-RW +97 6 100% +- 52X CD-ROM +12 3 100% +- 52X24X52 CD-RW +97 6 100% +- 52X32COMBO +738 5 100% +- 52X32X52 CD-RW +97 15 100% +- 52X32XCOMBO +738 1 100% +- 54X CD-ROM +12 4 100% +- 56X CD-ROM +12 11 100% +- ATAPI CDROM 48X +691 4 100% +- ATAPI CDROM 52X +691 7 100% +- ATAPI CDROM.40X +12 1 100% +- ATAPI CDROM.48X +12 10 100% +- ATAPI CDROM.52X +12 1 100% +- ATAPI DVDROM 16X +12 14 100% +- ATAPI DVDROM-F +704 4 100% +- ATAPI DVDROM +704 1 100% +- BD-C26SS-A +6 1 100% +- BD-COMBO-T01 +6 1 100% +- BDROM-400 +618 1 100% +- BPN-KM52X16 +6 4 100% +- CB-5216A +6 2 100% +- CD-R-RW RW7060S +685 1 100% +- CD-R-RW RW7063A +97 2 50% +- CD-R-RW RW7083A +97 2 100% +- CD-R-RW RW7120A +97 1 100% +- CD-R-RW RW7200A +97 1 100% +- CD-R-RW RW8080A +685 1 100% +- CD-S520B +6 1 100% +- COMBO-52X16 +6 1 100% +- COMBO-52X16C +6 14 100% +- CQ5252PRO +97 4 100% +- CRW-5224A +6 3 100% +- CRW-5232AS -582 1 100% +- CRW9624 +685 1 100% +- DRIDE1648 +594 3 100% +- DRW-1608P2 +48 2 100% +- DRW-1608P2S +48 5 100% +- DRW-1608P +48 4 100% +- DRW-24B1ST a +6 1 100% +- DVD RW DVR-MCC +48 28 100% +- DVD RW TP2 +6 1 100% +- DVD Writer 1260v +6 1 100% +- DVD+RW RW5120 +120 1 100% +- DVD+RW RW5125 +120 9 100% +- DVD+RW RW5240 +91 22 100% +- DVD+RW RW8160 +91 14 100% +- DVD+RW RW8165 +91 4 100% +- DVD-CDRW RW9120 +690 1 100% +- DVD-E616A +6 14 100% +- DVD-E616P2 +738 3 100% +- DVDR PX-891SA +6 4 100% +- DVDROM GO-D1600B +12 1 100% +- DVDRW DRP160 +48 1 100% +- hp DVDRAM +102 2 50% +- LG Electronics DVD+--R +48 2 100% +- LG Electronics DVDRW-B +102 1 100% +- Optiarc BD RW BD +48 1 100% +- Panasonic DVD+--R +6 3 66% +- Panasonic DVD-RAM +138 1 100% +- PanasonicBD-CMB U +103 26 100% +- PanasonicBD-MLT U +103 8 100% +- PIONEER DVD-RW D +6 5 100% +- PLDS DVD+--RW DS +6 1 100% +- PLDS DVD+--RW DU +6 4 100% +- PLDS DVD-RW DS8A +6 4 100% +- RW-201040 +97 2 100% +- RW-241040 +97 5 100% +- Slimtype BD E +6 7 100% +- Slimtype DVD A +6 13 100% +- TECLAST DHB16X2 +6 2 100% +- TSSTcorp BDDVDW +6 1 100% +- TSSTcorp CDDVDW +6 32 100% +- TSSTcorp DVD+--R +6 3 100% +- TSSTcorp DVDWBD +6 2 100% +- VOM-12E48X +12 23 100% +16X DVD- - ROM +738 4 100% +52XATAPI - CD-ROM +108 1 100% +900 40X - CD-ROM DRIVE +12 1 100% +Actima - CD-RW CRW4012A +685 4 100% +ALERATEC - DVDRW 20A1H +6 1 100% +AOpen - 12X DVD-ROM-AMH +691 4 100% +AOpen - 12X DVD-ROM-ASH +564 4 100% +AOpen - 12xDVD-ROM DRIVE +691 2 100% +AOpen - 12xDVD-ROM-AMH +691 1 100% +AOPEN - 16XDVD-ROM-AMH +102 17 100% +AOPEN - 8X8 DVD Dual AAN +48 7 100% +AOPEN - 8X8 DVD Dual APP +48 2 100% +AOPEN - CD-RW CRW1232 A +97 4 100% +AOPEN - CD-RW CRW1232PRO +97 7 100% +AOPEN - CD-RW CRW1632 +97 2 100% +AOPEN - CD-RW CRW2040 +97 1 100% +AOPEN - CD-RW CRW2440 +97 31 100% +AOPEN - CD-RW CRW3248 +97 11 100% +AOPEN - CD-RW CRW4048 +97 17 100% +AOPEN - CD-RW CRW4850 +97 8 100% +AOPEN - CD-RW CRW4852 +97 9 100% +AOPEN - CD-RW CRW5224 +97 50 100% +AOPEN - CD-RW CRW5232 +97 34 100% +AOPEN - COM4824-AAH +738 2 100% +AOPEN - COM4824 +6 6 100% +AOPEN - COM5232-AAH PRO +738 34 100% +AOPEN - COM5232-AAH SL +738 1 100% +AOPEN - COM5232-AAH +738 12 100% +AOPEN - CRW1232 +97 6 100% +AOPEN - CRW5232-AAO PRO +738 16 100% +AOPEN - CRW5232-AAO SL +738 3 100% +AOPEN - CRW5232-AAO +1336 1 100% +AOpen - DRW4410 +91 4 100% +AOPEN - DUW1608-12X +91 7 100% +AOPEN - DUW1608-ARR +91 82 100% +AOPEN - DUW1616-ARR +91 40 100% +AOPEN - DVD RW ISU8424E +1292 5 100% +AOPEN - DVD RW ISU8484G +1292 2 100% +AOpen - DVD-9632 +691 3 100% +AOPEN - DVD1648-AAP PRO +738 79 100% +AOPEN - DVD1648-AAP +738 76 100% +AOPEN - DVD1648-LKY +12 10 100% +AOPEN - DVRW2412PRO +120 5 100% +ARCHOS - MiniCDRW XS8432 -436 1 100% +ARK - CD-DVD VD8 A +48 1 100% +ARK - DVDROM VD800 A +102 3 33% +ARTEC - BKM-52X16 +6 10 100% +ARTEC - WRA-OA40 +97 1 100% +ARTEC - WRA-WA48 +97 9 100% +ARTEC - WRR-4048 +97 4 100% +ARTEC - WRR-4848 +97 8 100% +ARTEC - WRR-52X +97 12 100% +ARTEC - WRR-52Z +97 27 100% +ARTEC - WSM-52X +6 1 100% +ARTEC - WSM-YG52 +12 2 100% +ASUS - BC-06B1ST +6 7 100% +ASUS - BC-08B1LT +6 15 100% +ASUS - BC-08B1ST +6 48 100% +ASUS - BC-1205PT +667 13 100% +ASUS - BC-12B1LT +702 15 100% +ASUS - BC-12B1ST a +667 25 100% +ASUS - BC-12B1ST b +6 52 100% +ASUS - BC-12B1ST +702 187 100% +ASUS - BC-12D1ST +667 20 100% +ASUS - BC-12D2HT +6 197 100% +ASUS - BR-04B2T +696 56 100% +ASUS - BW-12B1LT +6 98 100% +ASUS - BW-12B1ST a +6 89 100% +ASUS - BW-12B1ST +6 340 100% +ASUS - BW-12D1S-U +667 152 100% +ASUS - BW-14D1XT +6 27 100% +ASUS - BW-16D1H-U +6 2 100% +ASUS - BW-16D1HT +6 239 100% +ASUS - CB-5216A +6 49 100% +ASUS - CD-S400-A +1194 8 100% +ASUS - CD-S450-A +1194 2 100% +ASUS - CD-S480-A5 +1776 1 100% +ASUS - CD-S480-AH +12 35 100% +ASUS - CD-S480B +6 1 100% +ASUS - CD-S500-A +1194 22 100% +ASUS - CD-S520-A4 +12 18 100% +ASUS - CD-S520-A5 +1130 3 100% +ASUS - CD-S520-A +1194 34 100% +ASUS - CD-S520B2 +6 9 100% +ASUS - CD-S520B +6 5 100% +ASUS - CRW-1610A +12 12 100% +ASUS - CRW-2410A +12 5 100% +ASUS - CRW-3212A +12 3 100% +ASUS - CRW-4012A +12 27 100% +ASUS - CRW-4816A +12 22 100% +ASUS - CRW-4824A +6 16 100% +ASUS - CRW-4824AH +6 12 100% +ASUS - CRW-4832AS +6 9 100% +ASUS - CRW-4832AX +6 1 100% +ASUS - CRW-5224A +6 106 100% +ASUS - CRW-5232A1-T +6 2 100% +ASUS - CRW-5232A3 +6 26 100% +ASUS - CRW-5232A4 +6 19 100% +ASUS - CRW-5232AS +6 110 100% +ASUS - CRW-5232AX +6 38 100% +ASUS - DRW 20B1LT +6 1 100% +ASUS - DRW-0402P-D +48 8 100% +ASUS - DRW-0804P +48 26 100% +ASUS - DRW-1604P +48 64 100% +ASUS - DRW-1608P2 +48 48 100% +ASUS - DRW-1608P2S +48 114 100% +ASUS - DRW-1608P3S +48 216 100% +ASUS - DRW-1608P +48 113 100% +ASUS - DRW-1612BL +6 125 100% +ASUS - DRW-1612BLT +6 4 100% +ASUS - DRW-1814BL +6 579 100% +ASUS - DRW-1814BLT +6 880 100% +ASUS - DRW-2014L1 +6 161 100% +ASUS - DRW-2014L1T +6 1056 100% +ASUS - DRW-2014S1 +6 136 100% +ASUS - DRW-2014S1T +6 194 100% +ASUS - DRW-20B1LT +6 226 100% +ASUS - DRW-20B1S +6 10 100% +ASUS - DRW-20B1ST +6 59 100% +ASUS - DRW-22B1L +6 12 100% +ASUS - DRW-22B1LT +6 46 100% +ASUS - DRW-22B1S +6 31 100% +ASUS - DRW-22B1ST +6 25 100% +ASUS - DRW-22B2L b +6 7 100% +ASUS - DRW-22B2L +6 35 100% +ASUS - DRW-22B2S +6 85 100% +ASUS - DRW-22B2ST +6 73 100% +ASUS - DRW-22B3L +6 15 100% +ASUS - DRW-22B3S +6 35 100% +ASUS - DRW-22D1S +102 7 100% +ASUS - DRW-24B1LT +6 147 100% +ASUS - DRW-24B1ST a +6 487 100% +ASUS - DRW-24B1ST c +6 403 100% +ASUS - DRW-24B1ST i +6 189 100% +ASUS - DRW-24B1ST j +6 79 100% +ASUS - DRW-24B1ST +6 581 100% +ASUS - DRW-24B3LT +6 228 100% +ASUS - DRW-24B3ST c +6 28 100% +ASUS - DRW-24B3ST i +6 12 100% +ASUS - DRW-24B3ST j +6 1 100% +ASUS - DRW-24B3ST +6 437 100% +ASUS - DRW-24B5ST +6 325 99% +ASUS - DRW-24D1ST a +6 17 100% +ASUS - DRW-24D1ST +667 18 100% +ASUS - DRW-24D3ST +6 129 100% +ASUS - DRW-24D5MT +6 4 100% +ASUS - DRW-24F1MT +6 49 100% +ASUS - DRW-24F1ST a +6 388 100% +ASUS - DRW-24F1ST b +6 42 100% +ASUS - DRW-24F1ST c +6 14 100% +ASUS - DRW-24F1ST +6 25 100% +ASUS - DVD-E616A2 +6 103 100% +ASUS - DVD-E616A3 +6 97 100% +ASUS - DVD-E616A3T +6 152 100% +ASUS - DVD-E616A +6 140 100% +ASUS - DVD-E616P2 +738 95 100% +ASUS - DVD-E616P3 +738 76 100% +ASUS - DVD-E616P3H +738 48 100% +ASUS - DVD-E616P +102 154 100% +ASUS - DVD-E818A2 +6 6 100% +ASUS - DVD-E818A2T +6 6 100% +ASUS - DVD-E818A3 +6 8 100% +ASUS - DVD-E818A3T +6 47 100% +ASUS - DVD-E818A4 +6 24 100% +ASUS - DVD-E818A4T +6 1 100% +ASUS - DVD-E818A6T +6 29 100% +ASUS - DVD-E818A7T a +6 7 100% +ASUS - DVD-E818A7T +6 9 100% +ASUS - DVD-E818A9T b +6 9 100% +ASUS - DVD-E818A9T +6 8 100% +ASUS - DVD-E818A +6 34 100% +ASUS - DVD-E818AAT +6 2 100% +ASUS - DVD-E818AT +6 60 100% +ASUS - DVD-ROM E608 +116 4 100% +ASUS - DVD-ROM E612 +594 8 100% +ASUS - DVD-ROM E616 +594 77 100% +ASUS - DVD-RW DRW-0402P +48 2 100% +ASUS - SBC-04D1S-U +667 7 100% +ASUS - SBC-06D1S-U +102 37 100% +ASUS - SBC-06D2X-U [Purged] +ASUS - SBR-02E1S-U +102 8 100% +ASUS - SBW-06C1S-U +48 28 100% +ASUS - SBW-06C2X-U +48 7 100% +ASUS - SBW-06D2X-U [Purged] +ASUS - SBW-S1 +103 2 100% +ASUS - SCB-2408 -582 2 100% +ASUS - SCB-2424V -582 6 100% +ASUS - SDR-08B1-U A +6 3 100% +ASUS - SDR-08B1-U +6 16 100% +ASUS - SDRW-0806T-D +704 3 100% +ASUS - SDRW-08D1S-U [Purged] +ASUS - SDRW-08D2S-U [Purged] +ASUS - SDRW-08D3S-U +6 17 100% +ASUS - SDRW-08U5S-U +6 17 100% +ASUS - SDRW-08U7M-U +6 1 100% +ASUS - SH-224DB +6 23 100% +ASUS - SH-224FB +6 1 100% +ASUS - VARIDRIVE +103 3 100% +ASUS DVD - RAM GH75N +667 9 100% +ASUS DVD - RAM GH92N +6 14 100% +ASUS DVD - RAM GH95N +6 21 100% +ASUS DVD - RAM GHB1N +6 21 100% +ASUS DVD - RAM GHC1N +6 2 100% +ATAPI - BD B DH12B2SH +6 9 100% +ATAPI - BD B DH2B1S +618 3 100% +ATAPI - BD B DH4B1S +618 21 100% +ATAPI - BD B DH6E2L +6 26 100% +ATAPI - BD B DH6E2S +6 15 100% +ATAPI - BD B DH8B2SH +6 2 100% +ATAPI - BD E DH12E3SH +702 41 100% +ATAPI - BD E DH8E2S +6 2 100% +ATAPI - BD O DH4O1S +6 225 100% +ATAPI - BD O DH4O3S +696 56 100% +ATAPI - CD N DH48N1P +6 8 100% +ATAPI - CD N DH48N1S +6 3 100% +ATAPI - CD N DH52N2P +6 3 100% +ATAPI - CD R DH52R1P +6 1 100% +ATAPI - CD R DH52R2P +6 13 100% +ATAPI - CD R DH52RYP +6 4 100% +ATAPI - CD-R-RW 12X8X32 +692 3 100% +ATAPI - CD-R-RW 32X10 +1508 10 100% +ATAPI - CD-R-RW 40X12 +1473 7 100% +ATAPI - CD-R-RW 48X16 +1473 9 100% +ATAPI - CD-R-RW 4X2X32 +740 1 100% +ATAPI - CD-R-RW 4X4X32 +740 3 100% +ATAPI - CD-R-RW 6X4X32 +740 4 100% +ATAPI - CD-R-RW 8X4X32 +692 1 100% +ATAPI - CD-R-RW CRW6206A +675 4 100% +ATAPI - CD-ROM 44X +106 3 100% +ATAPI - CD-ROM 50X +106 6 100% +ATAPI - CD-ROM 52X +106 9 100% +ATAPI - CD-ROM 52XMax +12 5 100% +ATAPI - CD-ROM DRIVE-20X +1262 1 100% +ATAPI - CD-ROM DRIVE-40X +686 9 100% +ATAPI - CD-ROM MAX 52X +12 1 100% +ATAPI - CD-ROM MAX 58X +12 2 100% +ATAPI - CD-ROM +680 1 100% +ATAPI - CD-RW 16-12-40X +733 2 100% +ATAPI - CD-RW 24X10X40 +12 2 100% +ATAPI - CD-RW 32X10X40 +12 4 100% +ATAPI - CD-RW 40-12-48X +688 1 100% +ATAPI - CD-RW 40X12 +12 5 100% +ATAPI - CD-RW 48-16-48X +733 2 100% +ATAPI - CD-RW 48X16 +12 17 100% +ATAPI - CD-RW 52X24X +738 12 100% +ATAPI - CD-RW 52X32 +6 1 100% +ATAPI - CD-RW 52X32X +738 4 100% +ATAPI - CD-RW 52XMax +688 28 100% +ATAPI - CD-RW 52XMaxx +688 2 100% +ATAPI - CD-RW CW4801 +688 4 100% +ATAPI - CD-RW CW5205 +688 4 100% +ATAPI - CD-RW52XMAX +6 10 100% +ATAPI - CDRW 5232X +738 2 100% +ATAPI - CDRW 52X32 +738 45 100% +ATAPI - COMBO 52X32 +6 1 100% +ATAPI - COMBO24XMAX +6 1 100% +ATAPI - COMBO48XMAX +6 10 100% +ATAPI - COMBO52XMAX +6 10 100% +ATAPI - DH 52CYP +6 1 100% +ATAPI - DH-24AESH +6 2 100% +ATAPI - DH-24AFSH +6 1 100% +ATAPI - DVD A DH-3H20A +6 7 100% +ATAPI - DVD A DH16A1L +6 203 100% +ATAPI - DVD A DH16A1P +6 41 100% +ATAPI - DVD A DH16A1S +6 52 100% +ATAPI - DVD A DH16A3L +6 121 100% +ATAPI - DVD A DH16A3P +6 1 100% +ATAPI - DVD A DH16A3S +6 52 100% +ATAPI - DVD A DH16A6L-C +6 64 100% +ATAPI - DVD A DH16A6L +6 76 100% +ATAPI - DVD A DH16A6S +6 214 100% +ATAPI - DVD A DH16AAL +6 33 100% +ATAPI - DVD A DH16AAS +6 33 100% +ATAPI - DVD A DH16AASH +6 314 100% +ATAPI - DVD A DH16ABS +6 6 100% +ATAPI - DVD A DH16ABSH +6 177 100% +ATAPI - DVD A DH16ACSH +6 23 100% +ATAPI - DVD A DH16AESH +6 2 100% +ATAPI - DVD A DH16AYH +6 37 100% +ATAPI - DVD A DH18A1P +6 22 100% +ATAPI - DVD A DH18A3P +6 2 100% +ATAPI - DVD A DH20A1H +6 6 100% +ATAPI - DVD A DH20A1L +6 31 100% +ATAPI - DVD A DH20A1P +6 46 100% +ATAPI - DVD A DH20A1S +6 84 100% +ATAPI - DVD A DH20A3H +6 116 100% +ATAPI - DVD A DH20A3L +6 29 100% +ATAPI - DVD A DH20A3P +6 161 100% +ATAPI - DVD A DH20A3S +6 81 100% +ATAPI - DVD A DH20A4H +6 231 100% +ATAPI - DVD A DH20A4P +6 689 100% +ATAPI - DVD A DH20A6L +6 4 100% +ATAPI - DVD A DH20A6LE +6 4 100% +ATAPI - DVD A DH20A6S +6 14 100% +ATAPI - DVD A DH22A8S +6 2 100% +ATAPI - DVD A DH22A9P +6 10 100% +ATAPI - DVD A DH22AWP +6 2 100% +ATAPI - DVD A DH24AAS +6 30 100% +ATAPI - DVD A DH24ABS +6 55 100% +ATAPI - DVD A DH24ACSH +6 22 100% +ATAPI - DVD A DH24ADSH +6 1 100% +ATAPI - DVD A DH24AFSH +6 1 100% +ATAPI - DVD A DH24AYL +48 14 100% +ATAPI - DVD A DH24AYS +48 12 100% +ATAPI - DVD A LH-1H18A +6 2 100% +ATAPI - DVD A LH-1P20A +6 3 100% +ATAPI - DVD A DH16ABS +6 7 100% +ATAPI - DVD A DH18A3L +6 1 100% +ATAPI - DVD C DH48C1P +6 5 100% +ATAPI - DVD C DH48C2S +6 22 100% +ATAPI - DVD C DH48CYS +6 5 100% +ATAPI - DVD C DH52C1P +6 2 50% +ATAPI - DVD C DH52C2P +6 37 100% +ATAPI - DVD C DH52C2S +6 14 100% +ATAPI - DVD C DH52C2S +6 1 100% +ATAPI - DVD D DH16D1P +6 6 100% +ATAPI - DVD D DH16D1S +6 12 100% +ATAPI - DVD D DH16D2P +6 129 100% +ATAPI - DVD D DH16D2S +6 135 100% +ATAPI - DVD D DH16D3P +6 24 100% +ATAPI - DVD D DH16D3S +6 74 100% +ATAPI - DVD D DH16D4S +6 2 100% +ATAPI - DVD D DH16D5S +6 15 100% +ATAPI - DVD D DH16D5SH +6 2 100% +ATAPI - DVD D DH16D6SH +6 1 100% +ATAPI - DVD D DH16DYP +6 15 100% +ATAPI - DVD D DH16DYS +6 14 100% +ATAPI - DVD D DH18D4P +6 1 100% +ATAPI - DVD D DH18D5S +6 1 100% +ATAPI - DVD DC 16X8X5 +102 55 100% +ATAPI - DVD DC 8X16X8X +102 4 100% +ATAPI - DVD DD 2X16X4X16 +618 132 100% +ATAPI - DVD DD 8X16X8X16 +618 9 100% +ATAPI - DVD DUAL 16X4X12 +618 7 100% +ATAPI - DVD DUAL 4XMax +689 12 100% +ATAPI - DVD DUAL 8X4X12 +1292 72 100% +ATAPI - DVD DW 8X16X8X16 +618 55 100% +ATAPI - DVD LS 8X16X8X16 +30 10 100% +ATAPI - DVD RW 12XMax +691 1 100% +ATAPI - DVD RW 16XMax +691 1 100% +ATAPI - DVD RW 4XMax +688 4 100% +ATAPI - DVD RW 8XMax +689 25 100% +ATAPI - DVD RW +618 6 100% +ATAPI - DVD W DH16W1P +6 63 100% +ATAPI - DVD W DH16W1S +6 10 100% +ATAPI - DVD W DH16WZS +618 1 100% +ATAPI - DVD+--R-RW8XMAX +12 8 100% +ATAPI - DVD+RW 4X4X12 +1292 13 100% +ATAPI - DVD+RW 8X4X12 +1292 22 100% +ATAPI - DVD+RW +1292 1 100% +ATAPI - DVD-ROM 16XMax +12 86 100% +ATAPI - DVD-ROM STAR2000 +564 4 100% +ATAPI - eHAU324 A +6 87 100% +ATAPI - eHAU424 A +6 19 100% +ATAPI - eHBU212 2 +6 30 100% +ATAPI - eHBU312 2 +6 7 100% +ATAPI - iHAP122 8 +6 38 100% +ATAPI - iHAP122 9 +6 65 100% +ATAPI - iHAP122 W +6 50 100% +ATAPI - iHAP222 8 +6 6 100% +ATAPI - iHAP222 9 +6 25 100% +ATAPI - iHAP222 W +6 3 100% +ATAPI - iHAP322 8 +6 75 100% +ATAPI - iHAP322 9 +6 62 100% +ATAPI - iHAP322 W +6 7 100% +ATAPI - iHAP422 8 +6 48 100% +ATAPI - iHAP422 9 +6 76 100% +ATAPI - iHAP422 W +6 15 100% +ATAPI - iHAS120 6 +6 326 100% +ATAPI - iHAS120 D +6 15 100% +ATAPI - iHAS120 X +48 32 100% +ATAPI - iHAS122 8 +6 52 100% +ATAPI - iHAS122 A +6 1 100% +ATAPI - iHAS122 B +6 9 100% +ATAPI - iHAS122 C +6 61 100% +ATAPI - iHAS122 E +6 16 100% +ATAPI - iHAS122 W +48 31 100% +ATAPI - iHAS122 +6 188 100% +ATAPI - iHAS124 A +6 101 100% +ATAPI - iHAS124 B +6 753 100% +ATAPI - iHAS124 C +6 155 100% +ATAPI - iHAS124 D +6 152 100% +ATAPI - iHAS124 E +6 200 100% +ATAPI - iHAS124 F +6 47 100% +ATAPI - iHAS124 W +48 265 100% +ATAPI - iHAS124 Y +48 344 100% +ATAPI - iHAS220 6 +6 117 100% +ATAPI - iHAS222 8 +6 36 100% +ATAPI - iHAS224 B +6 124 100% +ATAPI - iHAS224 Y +48 45 100% +ATAPI - iHAS320 +6 6 100% +ATAPI - iHAS322 8 +6 90 100% +ATAPI - iHAS324 A +6 234 100% +ATAPI - iHAS324 B +6 407 100% +ATAPI - iHAS324 C +6 60 100% +ATAPI - iHAS324 E +6 65 100% +ATAPI - iHAS324 F +6 22 100% +ATAPI - iHAS324 W +48 51 100% +ATAPI - iHAS324 Y +48 366 100% +ATAPI - iHAS422 8 +6 146 100% +ATAPI - iHAS424 A +6 108 100% +ATAPI - iHAS424 Y +48 252 100% +ATAPI - iHAS524 A +6 168 100% +ATAPI - iHAS524 B +6 222 100% +ATAPI - iHAS524 C +6 9 100% +ATAPI - iHAS524 D +6 76 100% +ATAPI - iHAS624 A +6 4 100% +ATAPI - iHAS624 B +6 488 100% +ATAPI - iHBS112 2 +6 607 100% +ATAPI - iHBS212 2 +6 289 100% +ATAPI - iHBS312 2 +6 92 100% +ATAPI - iHDP118 2 +6 6 100% +ATAPI - iHDP118 4 +6 45 100% +ATAPI - iHDS118 2 +6 8 100% +ATAPI - iHDS118 4 +6 33 100% +ATAPI - iHDS118 5 +6 77 100% +ATAPI - iHDS118 6 +6 28 100% +ATAPI - iHDS118 7 +6 13 100% +ATAPI - iHDS118 8 +6 2 100% +ATAPI - iHES106 2 +6 62 100% +ATAPI - iHES112 3 +702 126 100% +ATAPI - iHES206 2 +6 17 100% +ATAPI - iHES208 2 +6 190 100% +ATAPI - iHES212 3 +702 61 100% +ATAPI - iHES312 3 +702 14 100% +ATAPI - iHOS104 +696 769 100% +ATAPI - 12X DVD-ROM +594 2 100% +ATAPI - 40X CDROM +12 1 100% +ATAPI - 48X CDROM +12 8 100% +ATAPI - 50X CDROM +12 1 100% +ATAPI - 52X CDROM +12 12 100% +ATAPI 16 - X DVDROM VA100 +738 1 100% +ATAPI CD - ROM +12 1 100% +ATAPI CD - -ROM +12 1 100% +ATAPI CD - ROM DRIVE 50MAX +12 1 100% +ATAPI-CD - ROM DRIVE-50MAX +12 5 100% +ATAPI-CD - ROM-DRIVE-48MAX +691 2 100% +ATAPI-CD - ROM-DRIVE-50MAX +12 12 100% +ATAPI-CD - ROM-DRIVE-56MAX +12 18 100% +BCD 32XH - CD-ROM +12 1 100% +BCD 44XH - CD-ROM +12 2 100% +BCD24XHM - CD-ROM -1164 2 100% +BDROM - 4X12X32X +6 13 100% +BENQ - BD ROM BR1000 +6 1 100% +BENQ - CD-ROM 652M +6 2 100% +BENQ - CD-ROM 656M +6 4 100% +BENQ - CDRW 5232X +738 41 100% +BENQ - COMBO CB523B -589 1 100% +BENQ - COMBO CB523C +6 5 100% +BENQ - DVD DC DW24AS +6 1 100% +BENQ - DVD DC DQ60 +102 32 100% +BENQ - DVD DC DW1670 +102 119 100% +BENQ - DVD DC DW1680 +6 4 100% +BENQ - DVD DC DW1800 +6 12 100% +BENQ - DVD DC DW1810 +6 2 100% +BENQ - DVD DC DW2000 +6 7 100% +BENQ - DVD DC DW200S +6 7 100% +BENQ - DVD DC DW2010 +6 18 100% +BENQ - DVD DC DW205S +6 1 100% +BENQ - DVD DC DW2200 +6 5 100% +BENQ - DVD DC DW220P +6 3 100% +BENQ - DVD DC DW220S +6 7 100% +BENQ - DVD DC DW22AP +6 1 100% +BENQ - DVD DC DW240S +6 18 100% +BENQ - DVD DC DW24AS +6 1 100% +BENQ - DVD DC EW200G +6 3 100% +BENQ - DVD DD DW1620 +618 482 100% +BENQ - DVD DD DW1625 +618 80 100% +BENQ - DVD DD DW1640 +618 932 100% +BENQ - DVD DD EW162I +618 25 100% +BENQ - DVD DD EW164B +618 93 100% +BENQ - DVD DD EW167B +102 3 100% +BENQ - DVD DUAL DW1610 +618 23 100% +BENQ - DVD-ROM 16X +738 69 100% +BENQ - DVDROM 165N +6 3 100% +BENQ - DVDROM DD165G +6 5 100% +BENQ - DVDROM DD185G +6 7 100% +BENQ - DVDROM DD18SA 2 +6 1 100% +BENQ - SDVD LD2000 +6 3 100% +BENQ - SLIM DD SW200D +618 1 100% +BENQ DVD - -ROM JOYBEE610 +691 1 100% +BGRIBGP - TQBWXIVS +48 1 100% +BTC - BCE1610IM +12 11 100% +BTC - BCE2410IM +12 5 100% +BTC - BCE3212IM +12 6 100% +BTC - BCE4012IM +12 8 100% +BTC - BCE4816IM +12 1 100% +BTC - BCO4016IM +6 2 100% +BTC - BDV-316E 0 47 100% +BTC - CD-ROM F523E +12 9 100% +CD-956B +12 1 100% +CD-R-RW - 52X24X52X +97 2 100% +CD-R-RW - CW079D CD-R-RW +12 2 100% +CD-R-RW - CW088D CD-R-RW +733 1 100% +CD-R-RW - CW089D CD-R-RW +12 1 100% +CD-R-RW - CW099D CD-R-RW +6 10 100% +CD-ROM - 52X-B0 +12 1 100% +CD-ROM - CCD-52X6S +600 11 100% +CD-ROM - CCD-7T48 +12 2 100% +CD-ROM - Drive-F5A +12 4 100% +CD-ROM - Drive-F5B +12 9 100% +CD-ROM - Drive-F5D +12 6 100% +CD-ROM - Drive-F5E +12 19 100% +CD-ROM - Drive-G6D +12 7 100% +CD-ROM - F565E +12 12 100% +CD-ROM - GO-C5200E +12 2 100% +CD-RW - 5232IA +6 1 100% +CD-RW - 52X32-L0 +6 1 100% +CD-RW - CDR-2440MB +12 3 100% +CD-RW - CDR-5S40 +12 5 100% +CD-RW - CDR-5W40 +12 1 100% +CD-RW - CDR-5W48 +12 10 100% +CD-RW - CDR-6S48 +6 5 100% +CD-RW - CDR-6S52 +6 31 100% +CD-RW - CDR-7S52 +6 13 100% +CD-RW - CDR-8S52 +6 3 100% +CD-RW - CDR-9V52 +6 7 100% +CD-RW - CXR-3X40 +6 3 100% +CD-RW - DX-ECDRW100 +6 8 100% +CD-RW - GO-R5232B +6 2 100% +CDRW - 52X32X +6 9 100% +CDRW - USB5232 +6 4 100% +CDWRITER - IDE1610 +12 6 100% +CDWRITER - IDE2410 +12 5 100% +CDWRITER - IDE3212 +12 7 100% +CDWRITER - IDE4816 +12 8 100% +CDWRITER - IDE5224 +6 79 100% +CDWRITER - IDE5232 +6 56 100% +CENDYNE - 522452AU +6 3 100% +CENDYNE_ - 481648AX +733 4 100% +CntxCorp - C-DVD-ROM +6 1 100% +COMBI - RW16x10-DVD +692 7 100% +COMBI - RW32-DVD +692 3 66% +COMBO - 5216IA +6 2 100% +COMBO - 52X32X52X +6 2 100% +COMBO - BCO5232IM +6 5 100% +COMBO - COB-2K5216 +6 3 100% +COMBO - COB-6V5216 +6 3 100% +COMBO - IDE2408SU +6 2 100% +COMBO - IDE4016CO +6 2 100% +COMBO - IDE4816CO +6 3 100% +COMBO - IDE5216CO +6 16 100% +COMBO - IDE5232CO +6 19 100% +COMBO - USB5232 +6 1 100% +COMPAL - TSB24H1 DVD-CDRW +6 11 100% +COMPAL - TSB24H2 DVD-CDRW +6 1 100% +COMPAL - TSD80Y1 DVD RW +691 3 100% +Compaq - 8120B +594 1 100% +COMPAQ - CD-224E +684 21 100% +COMPAQ - CD-ROM CDRU241 -24 1 100% +COMPAQ - CD-ROM CR-587 +103 1 100% +COMPAQ - CD-ROM CR-588 +103 2 100% +COMPAQ - CD-ROM CR-589 +102 1 100% +COMPAQ - CD-ROM CRD-8402B -24 3 100% +COMPAQ - CD-ROM CRD-8484B -491 22 100% +COMPAQ - CD-ROM CRN-8245B -491 5 100% +COMPAQ - CD-ROM LTN403 -1164 9 100% +COMPAQ - CD-ROM LTN485 -1164 4 100% +COMPAQ - CD-ROM LTN486S +600 62 100% +Compaq - CD-ROM SC-148E -491 11 100% +COMPAQ - CD-ROM SN-124 +564 1 100% +COMPAQ - CRD-8322B -24 6 100% +COMPAQ - CRD-8400B -24 2 100% +COMPAQ - CRD-8401B -24 1 100% +COMPAQ - CRD-8402B -24 4 100% +COMPAQ - CRD-8481B -24 2 100% +COMPAQ - DVD-ROM DRD8120B +594 8 100% +Compaq - DVD-ROM DV-5700B +116 1 100% +Compaq - DVD-ROM DV28EA01 +690 3 100% +Compaq - DVD-ROM DV28EB +102 5 100% +Compaq - DVD-ROM DVD-113R +691 1 100% +Compaq - DVD-ROM DVD-114 +690 6 100% +Compaq - DVD-ROM DVD-115 +690 6 100% +Compaq - DVD-ROM DVD-116 +102 6 100% +Compaq - DVD-ROM DVD-117 +102 9 100% +COMPAQ - DVD-ROM GD-2500 +564 6 100% +COMPAQ - DVD-ROM GD-8000 +667 13 100% +Compaq - DVD-ROM GDR8081N +667 6 100% +COMPAQ - DVD-ROM GDR8160B +102 25 100% +COMPAQ - DVD-ROM LTD163 +594 5 100% +COMPAQ - DVD-ROM SD-612B +704 8 100% +Compaq - DVD-ROM SD-616T +1182 4 100% +Compaq - DVD-ROM SD-C2402 -472 9 100% +Compaq - DVD-ROM SD-C2512 -472 7 100% +Compaq - DVD-ROM SD-C2612 -472 10 100% +Compaq - DVD-ROM SD-M1612 -472 8 100% +COMPAQ - DVD-ROM SR-8583 +691 1 100% +COMPAQ - DVD-ROM SR-8587 +103 1 100% +COMPAQ - SC-140S +600 4 75% +COMPAQ - SC-148F +600 4 100% +COMPAQ - XM-6402B +94 1 100% +CREATIVE - CD-RW RW8438E +86 3 100% +CREATIVE - CD4834E FC101 +12 4 100% +CREATIVE - CD4834E FC102 +12 2 100% +CREATIVE - CD5233E-N +12 18 100% +CREATIVE - CD5233E +12 16 100% +CREATIVE - CD821E tw960527 +961 1 100% +CREATIVE - CD-RW RW121032E +99 4 100% +CREATIVE - CD-RW RW1210E +688 14 100% +CREATIVE - CD-RW RW1611E +12 2 100% +CREATIVE - CD-RW RW2410E +12 5 100% +CREATIVE - CD-RW RW4020E +12 1 100% +CREATIVE - CD-RW RW8432E +355 1 100% +CREATIVE - CD4020E ST980828 +679 1 100% +CREATIVE - CD4820E CS990211 +679 3 100% +CREATIVE - CD4821E JJ990629 +12 1 100% +CREATIVE - CD5220 SB991119 +694 1 100% +CREATIVE - CD5220-F 0225 +694 3 100% +CREATIVE - CD5220E SB991026 +694 1 100% +CREATIVE - CD5230E +12 3 100% +CREATIVE - CD5233E-CF +696 2 100% +CREATIVE - CD5233E +12 10 100% +CREATIVE - DVD-RAM RAM1216S -495 1 100% +CREATIVE - DVD-ROM DVD1241E +594 10 100% +CREATIVE - DVD-ROM DVD1242E +704 1 100% +CREATIVE - DVD-ROM DVD1610E +594 9 100% +CREATIVE - DVD-ROM DVD6240E +564 29 100% +CREATIVE - DVD1240E +691 5 100% +CREATIVE - DVD5240E-1 +691 9 100% +CREATIVE - DVD5241E +691 1 100% +CREATIVE - DVD6630E +691 5 100% +CREATIVE - DVD8400E +691 15 100% +CREATIVE - DVDRW DR1620E +12 1 100% +CREATIVE - iR CD5222E-B +12 2 100% +CyberDrv - CB511D Combo +6 1 100% +CyberDrv - CW018D CD-R-RW +86 2 100% +CyberDrv - CW038D CD-R-RW +733 25 100% +CyberDrv - CW058D CD-R-RW +733 48 100% +CyberDrv - CW068D CD-R-RW +733 5 100% +CyberDrv - CW078D CD-R-RW +733 12 100% +CyberDrv - CW088D CD-R-RW +733 28 100% +CyberDrv - CW089D CD-R-RW +6 5 100% +CyberDrv - CW099D CD-R-RW +6 17 100% +DAEWOO - CD-RW RW5224 +97 1 100% +DAVILON - DVD-ROM LV-1015 0 5 100% +DAVILON - LV-1015 0 5 100% +Dell - DVD+--RW DW316 +6 8 100% +Dell - DVD+--RW DW514 +103 25 100% +DELTA - OIP-SD2400A-BM +12 1 100% +DEXPRESO - DVDRW +6 3 100% +DEXPRESO - DVDRW D20A1P +6 1 100% +DM126D - DVDROM '01-02-28 +564 2 100% +DM126D - DVDROM '01-11-27 +564 1 100% +DM166D - DVD-ROM +564 4 100% +DQ1724I - BWY124C +102 1 100% +DVD - 16X +6 11 100% +DVD DUAL - GO-W0404A +12 7 100% +DVD DUAL - GO-W1616B +12 9 100% +DVD ROM - CI-BDV316E +12 1 100% +DVD ROM - DX-DVDR100 +12 3 100% +DVD+R-RW - DX082D +1292 6 100% +DVD-16X - BDV316B +594 1 100% +DVD-16X - BDV316C +12 1 100% +DVD-16X - DVD-ROM BDV316C +12 46 100% +DVD-16X - DVD-ROM BDV316E +12 49 100% +DVD-16X - DVD-ROM BDV316G +6 21 100% +DVD-16X - DVD1648-BKH +12 9 100% +DVD-16X - OEM316B +594 18 100% +DVD-ROM - 16X +691 26 100% +DVD-ROM - DVD-16X3H +594 4 100% +DVD-ROM - DVD-16X6S +12 39 100% +DVD-ROM - DVD-1S16P +6 1 100% +DVD-ROM - DVD-7T16 +12 3 100% +DVD-ROM - LTD-16X5H +12 3 100% +DVDR-RW - DX162D-A +618 20 100% +DVDROM - GO-D1600B +12 1 100% +DVDROM - GO-D1600D +12 3 100% +DVDROM - PATA 16X48X +6 1 100% +DVDROM - +564 1 100% +DVDROM 1 - 0X +564 8 100% +DVDROM 8 - X +564 2 100% +DVDRW - 1008IB +12 1 100% +DVDRW - 16X16 +6 22 100% +DVDRW - 16X16X5X +6 2 100% +DVDRW - 16X16X +6 36 100% +DVDRW - 18X18X12X +6 18 100% +DVDRW - 20X20X12X +6 15 100% +DVDRW - DRW-1S41 +12 4 100% +DVDRW - DRW-1S45 +12 7 100% +DVDRW - DRW-1S81 +12 4 100% +DVDRW - DRW-2S81 +12 8 100% +DVDRW - DRW-3S121 +12 1 100% +DVDRW - DRW-3S163 +12 8 100% +DVDRW - DRW-3S165 +12 7 100% +DVDRW - DRW-3S167 +12 3 100% +DVDRW - DRW-5S163 +6 11 100% +DVDRW - DRW-6S160H +6 5 100% +DVDRW - DRW-6S160P +6 22 100% +DVDRW - DUALS801E +688 1 100% +DVDRW - IDE 16X +12 300 100% +DVDRW - IDE H16X +6 49 100% +DVDRW - IDE1004 +12 76 100% +DVDRW - IDE1008 +12 121 100% +DVDRW - IDE1108 +12 34 100% +DVDRW - LIGHTSCRIBE 18X +6 1 100% +DVDRW - PATA 20X20X12X +6 10 100% +DVDRW - SATA 20X20X12X +6 21 100% +DVDRW - SATA 20X +6 1 100% +DVDRW - SATA 24X24X12X +48 3 100% +DVDRW - SATA 24X +6 1 100% +DVDRW - SATA H16X +6 3 100% +DVDRW - USB 16X +12 43 100% +DVDRW - USB H16X +6 7 100% +DVDRW - USB1008UI +12 4 100% +DVDRW - USB1108 +12 4 100% +DVSKOREA - DVS-LDR DRL-200 +102 1 100% +E-IDE - CD-950E-AKU +680 1 100% +E-IDE - CD-950E-TKU +12 10 100% +E-IDE - CD-952E-TKU +12 2 100% +E-IDE - CD-ROM 24X-AKOx +679 1 100% +E-IDE - CD-ROM 32X-AKU +1268 7 100% +E-IDE - CD-ROM 36X-AKU +1268 4 100% +E-IDE - CD-ROM 36X-AKW +1268 2 100% +E-IDE - CD-ROM 40X-AKH +106 1 100% +E-IDE - CD-ROM 40X-AKU +1268 12 100% +E-IDE - CD-ROM 48X-AKH +106 1 100% +E-IDE - CD-ROM 48X-TKU +12 4 100% +E-IDE - CD-ROM 50X L +108 3 100% +E-IDE - CD-ROM 50X +682 3 100% +E-IDE - CD-ROM 52X L +682 5 80% +E-IDE - CD-ROM 52X-AKH +106 30 100% +E-IDE - CD-ROM 56X L +682 2 100% +E-IDE - CD-ROM 56X-AKH +106 11 100% +E-IDE - CD-ROM 56X +682 1 100% +E-IDE - CD-ROM CR-856E +12 1 100% +E-IDE - CD-ROM Max 54X +12 1 100% +E-IDE - DVD-ROM DVD-8210 +594 1 100% +E-IDE CD - -952E-AKV +691 8 100% +E-IDE CD - -956E-AKV +691 8 100% +EPO - CR-844S +12 1 100% +eSATA - CDDVDW SH-S202N +6 1 100% +eSATA - DVD-RAM GSA-H55L +102 1 100% +ezDISK - EZ360 +6 1 100% +FREECOM - CDRW52J +6 18 100% +FREECOM_ - BDCOMBO12H +6 5 100% +FREECOM_ - BDCOMBO8H +6 2 100% +FREECOM_ - Combo48K +6 1 100% +FREECOM_ - DVD+--RW16B6 +48 4 100% +FREECOM_ - DVD+--RW16B9 +48 31 100% +FREECOM_ - DVD+--RW16H4 +48 2 100% +FREECOM_ - DVD+--RW16H8 +6 9 100% +FREECOM_ - DVD+--RW16J6 +6 3 100% +FREECOM_ - DVD+--RW16J8 +6 5 100% +FREECOM_ - DVD+--RW16J9 +6 9 100% +FREECOM_ - DVD+--RW16N8 +6 1 100% +FREECOM_ - DVD+--RW16N9 +704 13 100% +FREECOM_ - DVD+--RW18H9 +6 13 100% +FREECOM_ - DVD+--RW18J9 +6 5 100% +FREECOM_ - DVD+--RW20J5 +6 21 100% +FREECOM_ - DVD+--RW20J6 +6 17 100% +FREECOM_ - DVD+--RW20J7 +6 7 100% +FREECOM_ - DVD+--RW20J8 +6 1 100% +FREECOM_ - DVD+--RW20J9 +6 8 100% +FREECOM_ - DVD+--RW22J8 +6 5 100% +FREECOM_ - DVD+--RW22J9 +6 3 100% +FREECOM_ - DVD+--RW22JS8 +6 2 100% +FREECOM_ - DVD+--RW4B +48 3 100% +FREECOM_ - DVD+--RW8B9 +48 7 100% +FREECOM_ - DVD+--RW8J1 +12 4 100% +FREECOM_ - DVD+--RW8J +12 1 100% +FREECOM_ - DVDRW22H9 +697 2 100% +FREECOM_ - DVDRW24H8 +6 3 100% +GENERIC - CDRCB02 +690 5 100% +GENERIC - CDRCB03 +102 1 100% +GENERIC - CDRCB04 +102 1 100% +GENERIC - CDRCB05 +102 15 100% +GENERIC - CDRCB06 +102 7 100% +GENERIC - CRD-BP1300P +688 5 100% +GENERIC - CRD-BP1400P +688 3 100% +GENERIC - CRD-BP1500P +688 8 100% +GENERIC - CRD-BP1600P +688 5 100% +GENERIC - CRD-BP1700P +688 4 100% +GENERIC - CRD-BP3 +688 4 100% +GENERIC - CRD-BP4 +688 1 100% +GENERIC - CRD-BP5 +688 1 100% +GENERIC - DSW2080 +691 1 100% +GENERIC - DVD RW 12XMax +691 3 100% +GENERIC - DVD RW 16XMax +691 11 100% +GENERIC - DVD RW 4XMax +688 5 100% +GENERIC - DVD RW 8XMax +689 18 100% +GENERIC - DVD+RW 4XMax +688 3 100% +GENERIC - DVD-RAM MLT04 +102 2 100% +GENERIC - DVD-RAM MLT05 +102 4 100% +GENERIC - FREECOM16B +685 1 100% +GENERIC - FREECOM24B +685 8 100% +GENERIC - FREECOM32A +688 7 100% +GENERIC - FREECOM40B1 +685 3 100% +Generic_ - DVD-ROM 0 5 100% +GFO - 2VS1EJW +12 1 100% +GIGABYTE - GO-B5232A +6 4 100% +GIGABYTE - GO-B5232C +6 4 100% +GIGABYTE - GO-D1600A +12 1 100% +GIGABYTE - GO-D1600C +12 4 100% +GIGABYTE - GO-R5232A +6 6 100% +GIGABYTE - GO-W0808A +12 3 100% +GIGABYTE - GO-W1608A +6 2 100% +GIGABYTE - GO-W1623A +6 5 100% +GIGABYTE - GO-W20MA +6 1 100% +GIGABYTE - GO-W20MB +6 1 100% +GoldStar - CD-ROM CRD-8322B -24 5 100% +GoldStar - CD-ROM CRD-8482B -24 3 100% +GoldStar - CD-ROM CRN-8243B -24 1 100% +GoldStar - CD-RW CED-8080B +86 2 100% +GoldStar - CD-RW CED-8120B +685 3 100% +HIGH - SPEED CD ROM +600 3 100% +HITACHI - CDR-8335 +1272 11 100% +HITACHI - CDR-8435 +684 1 100% +HITACHI - DVD-RAM GF-2050 +667 1 100% +HITACHI - DVD-ROM GD-2500 +564 46 100% +HITACHI - DVD-ROM GD-3000 +667 2 100% +HITACHI - DVD-ROM GD-5000 +667 44 100% +HITACHI - DVD-ROM GD-7000 +667 15 100% +HITACHI - DVD-ROM GD-7500 +667 44 100% +HITACHI - DVD-ROM GD-8000 +667 26 100% +HITACHI - DVD-ROM GD-S200 +667 21 100% +HITACHI - DVD-ROM GD-S250 +667 10 100% +HITACHI - DVD-ROM GD-SS20 +667 1 100% +HL)DP-ST - RW+DRD GCC)M10J +102 1 100% +hp - BD B DH8B2LH +6 13 100% +hp - BD B DH8B2SHB +6 10 100% +hp - BD B DH8E2L +6 27 100% +hp - BD E DC6E2LHB +6 2 100% +hp - BD E DH12E3LH +702 2 100% +hp - BD E DH12E3SHB +702 32 100% +hp - BD E DL4ETS +6 2 100% +hp - BD O DH4O3S +696 14 100% +hp - BD CMB UJ141AF +103 27 100% +hp - BD CMB UJ160 +103 24 100% +hp - BD CMB UJ162 +103 10 100% +HP - BD Combo 240d +6 24 100% +HP - BD COMBO bd530s +6 7 100% +hp - BD DRV BD-5841H5 +48 3 100% +hp - BD DRV BD-5850H5 +48 1 100% +hp - BD E DS6E2LH +6 25 100% +hp - BD E DS6E2SH +6 5 100% +hp - BD MLT UJ240 +103 10 100% +hp - BD MLT UJ240AF +103 20 100% +hp - BD MLT UJ260 +103 5 100% +hp - BD MLT UJ260AF +103 3 100% +hp - BD MLT UJ262 +103 4 100% +hp - BD ROM BC-5500S +48 13 100% +hp - BD ROM BC-5501H +48 54 100% +hp - BD ROM BC-5501S +48 5 100% +hp - BD ROM BC-5541H +48 44 100% +hp - BD ROM BC-5550H +48 33 100% +hp - BD ROM BC-5600S +48 2 100% +hp - BD RW BD-5730H +48 6 100% +hp - BD RW BD-5740H +48 4 100% +hp - BD RW BD-5750H +48 18 100% +HP - BD Writer bd335e +6 4 100% +HP - BD Writer bd335i +6 12 100% +HP - BD Writer bd340i +6 49 100% +hp - BD-RE BH20L +667 40 100% +hp - BD-RE BH30L +667 51 100% +hp - BD-RE BH38L +667 7 100% +hp - BD-RE BH40L +6 3 100% +hp - BD-RE BH40N +6 12 100% +hp - BD-RE BT10N +667 2 100% +hp - BD-RE BT11N +667 14 100% +hp - BD-RE BT20N +667 5 60% +hp - BD-RE BT30N +667 2 100% +hp - BD-RE BU10N +6 3 100% +hp - BD-RE BU20N +6 1 100% +hp - BD-ROM BDCTD03HA +667 15 100% +hp - BDCMB UJ172 +103 1 100% +hp - BDDVDRW CA21N +102 27 100% +hp - BDDVDRW CA30N +102 2 100% +hp - BDDVDRW CA30P +102 18 100% +hp - BDDVDRW CH10L +667 8 100% +hp - BDDVDRW CH20L +667 115 100% +hp - BDDVDRW CH28N +667 26 100% +hp - BDDVDRW CH30L +6 22 100% +hp - BDDVDRW CT10L +667 26 100% +hp - BDDVDRW CT21L +102 68 100% +hp - BDDVDRW CT30K +102 11 100% +hp - BDDVDRW CT30L +102 14 100% +hp - BDDVDRW CT40N +102 21 100% +hp - BDDVDRW CT41N +102 3 100% +hp - BDDVDRW CU20N +6 1 100% +hp - BDRW BR-TD01HA +667 3 100% +hp - BDRW BU20N +6 1 100% +hp - BDRW UJ272 +103 3 100% +HP - CD Writer 52r +6 5 100% +HP - CD-ROM CD32X +679 1 100% +HP - CD-ROM CD40X +676 2 100% +HP - CD-Writer cd16b +12 11 100% +HP - CD-Writer cd16e +12 1 100% +HP - CD-Writer cd16f +733 23 100% +HP - CD-Writer cd16n +685 1 100% +HP - CD-Writer cd16r +12 10 100% +HP - CD-Writer cd4f +674 1 100% +HP - CD-Writer+ 7100 +675 5 100% +HP - CD-Writer+ 7200 +1263 2 100% +HP - CD-Writer+ 7500 +1160 5 100% +HP - CD-Writer+ 8000 +686 5 100% +HP - CD-Writer+ 8100 +1160 29 100% +HP - CD-Writer+ 8200 +1160 32 100% +HP - CD-Writer+ 8200a +572 14 100% +HP - CD-Writer+ 8200f +674 4 100% +HP - CD-Writer+ 8290 +686 14 100% +HP - CD-Writer+ 9100 +572 80 100% +HP - CD-Writer+ 9100b +86 15 100% +HP - CD-Writer+ 9100c -436 3 100% +HP - CD-Writer+ 9200 +572 14 100% +HP - CD-Writer+ 9300 +572 25 100% +HP - CD-Writer+ 9500 +572 17 100% +HP - CD-Writer+ 9500b +685 6 100% +HP - CD-Writer+ 9600 +572 9 100% +HP - CD-Writer+ 9700k +733 3 100% +hp - CDDVDW GP60NB50 +6 18 100% +hp - CDDVDW GP60NB60 +6 6 100% +hp - CDDVDW SH-216AL +6 7 100% +hp - CDDVDW SH-216ALN +6 53 100% +hp - CDDVDW SH-216BB +6 59 100% +hp - CDDVDW SH-216DB +6 57 100% +hp - CDDVDW SN-208BB +6 146 100% +hp - CDDVDW SN-208DB +6 59 100% +hp - CDDVDW SN-208FB +6 20 100% +hp - CDDVDW SU-208BB +6 6 100% +hp - CDDVDW SU-208CB +6 26 100% +hp - CDDVDW SU-208FB +6 28 100% +hp - CDDVDW SU-208GB +6 3 100% +hp - CDDVDW TS-H653R +6 386 100% +hp - CDDVDW TS-H653T +6 140 100% +hp - CDDVDW TS-H653TN +6 33 100% +hp - CDDVDW TS-L633J +6 47 100% +hp - CDDVDW TS-L633M +6 113 100% +hp - CDDVDW TS-L633N +6 380 100% +hp - CDDVDW TS-L633R +6 289 100% +hp - CDDVDW TS-T633C +6 4 100% +hp - CDDVDW TS-T633L +6 3 100% +hp - CDDVDW TS-T633P +6 12 100% +hp - CDDVDW TS-T633PN +6 4 100% +hp - CDDVDW TS-U633F +6 13 100% +hp - CDDVDW TS-U633J +6 45 100% +hp - DVD A DC8A2LH +6 1 100% +hp - DVD A DC8A2SH +6 1 100% +hp - DVD A DH16AAL +6 256 100% +hp - DVD A DH16ABLH +6 158 100% +hp - DVD A DH16ABSH +6 79 100% +hp - DVD A DH16ACSH +6 26 100% +hp - DVD A DH16ACSHR +6 66 100% +hp - DVD A DH16AESH +6 16 100% +hp - DVD A DH16AFSH +6 3 100% +hp - DVD A DL8A4SH +6 7 100% +hp - DVD A DL8ATL +6 11 100% +hp - DVD A DS8A4LH +6 11 100% +hp - DVD A DS8A5LH +6 145 100% +hp - DVD A DS8A5SH +6 2 100% +hp - DVD A DS8A8SH +6 128 100% +hp - DVD A DS8A9SH +6 33 100% +hp - DVD A DS8ABSH +6 3 100% +hp - DVD A DU8A5SH +6 33 100% +hp - DVD D DH16D5S +6 34 100% +hp - DVD D DH16D6SH +6 4 100% +hp - DVD D DH16D7SH +6 1 100% +hp - DVD D DS8D3SH +6 1 100% +hp - DVD RAM UJ892 +102 11 100% +hp - DVD RAM UJ897 +102 24 100% +hp - DVD RAM UJ8A2 +102 13 92% +hp - DVD RAM UJ8A7 +102 4 100% +hp - DVD RAM UJ8B2 +102 10 100% +hp - DVD RAM UJ8C2 +103 27 100% +hp - DVD RAM UJ8E0 +103 1 100% +hp - DVD RAM UJ8E2 +103 8 100% +HP - DVD ROM 435r +6 5 100% +HP - DVD ROM 455d +6 1 100% +HP - DVD ROM 465d +6 1 100% +HP - DVD ROM 465r +6 5 100% +hp - DVD RW AD-7250H5 +48 13 100% +hp - DVD RW AD-7251H5 +48 103 100% +hp - DVD RW AD-7290H5 +48 4 100% +hp - DVD RW AD-7290HR +48 5 100% +hp - DVD RW AD-7561S +6 74 100% +hp - DVD RW AD-7581S +6 39 100% +hp - DVD RW AD-7586H +6 116 100% +hp - DVD RW AD-7691H6 +48 2 100% +hp - DVD RW AD-7701H +48 134 100% +hp - DVD RW AD-7711H +48 74 100% +hp - DVD RW AD-7721H +48 14 100% +hp - DVD RW AD-7740H +48 22 100% +hp - DVD RW AD-7760H +48 11 100% +hp - DVD RW AD-7930H +48 5 100% +HP - DVD Writer 100j +120 6 100% +HP - DVD Writer 1035r +6 9 100% +HP - DVD Writer 1040d +6 142 100% +HP - DVD Writer 1040r +6 135 100% +HP - DVD Writer 1060d +6 12 100% +HP - DVD Writer 1060r +6 12 100% +HP - DVD Writer 1070d +6 58 100% +HP - DVD Writer 1070r +6 25 100% +HP - DVD Writer 1135r +6 3 100% +HP - DVD Writer 1140d +6 18 100% +HP - DVD Writer 1140i +6 1 100% +HP - DVD Writer 1140r +6 27 100% +HP - DVD Writer 1160d +6 11 100% +HP - DVD Writer 1170d +6 44 100% +HP - DVD Writer 1170r +6 31 100% +HP - DVD Writer 1260d +6 59 100% +HP - DVD Writer 1260r +48 35 100% +HP - DVD Writer 1260t +6 110 100% +HP - DVD Writer 1260v +6 31 100% +HP - DVD Writer 1265d +48 14 100% +HP - DVD Writer 1265t +6 3 100% +HP - DVD Writer 1265v +6 1 100% +HP - DVD Writer 1270d +6 121 100% +HP - DVD Writer 1270e +6 23 100% +HP - DVD Writer 1270r +48 39 100% +HP - DVD Writer 1270t +6 60 100% +HP - DVD Writer 200j +120 62 100% +HP - DVD Writer 300c +1292 44 100% +HP - DVD Writer 300n +48 139 100% +HP - DVD Writer 400c +1292 51 100% +HP - DVD Writer 420n +48 26 100% +HP - DVD Writer 520n +48 1 100% +HP - DVD Writer 530r +12 13 100% +HP - DVD Writer 550r +6 12 100% +HP - DVD Writer 550t +6 6 100% +HP - DVD Writer 555r +6 7 100% +HP - DVD Writer 555s +6 7 100% +HP - DVD Writer 556s +6 30 100% +HP - DVD Writer 557r +6 9 100% +HP - DVD Writer 557s +6 9 100% +HP - DVD Writer 560r +6 10 100% +HP - DVD Writer 565s +6 10 100% +HP - DVD Writer 600r +6 9 100% +HP - DVD Writer 600y +6 3 100% +HP - DVD Writer 630c +618 56 100% +HP - DVD Writer 635d +12 6 100% +HP - DVD Writer 640b +102 85 100% +HP - DVD Writer 640c +618 178 100% +HP - DVD Writer 640v +618 31 100% +HP - DVD Writer 735d +6 1 100% +HP - DVD Writer 740b +102 126 100% +HP - DVD Writer 740e +102 10 100% +HP - DVD Writer 740r +6 6 100% +HP - DVD Writer 840b +102 70 100% +HP - DVD Writer 840d +6 36 100% +HP - DVD Writer 840e +102 20 100% +HP - DVD Writer 840x +102 23 100% +HP - DVD Writer 840y +102 6 100% +HP - DVD Writer 940d +6 98 100% +hp - DVD-RAM GH40L +667 303 100% +hp - DVD-RAM GH60L +667 243 100% +hp - DVD-RAM GH80N +667 108 100% +hp - DVD-RAM GH82N +667 59 100% +hp - DVD-RAM GHA3N +667 40 100% +hp - DVD-RAM GHB0N +6 31 100% +hp - DVD-RAM GHC0N +6 7 100% +hp - DVD-RAM SW810 +6 21 100% +hp - DVD-RAM SW810A +6 3 100% +hp - DVD-RAM SW820 +6 32 100% +hp - DVD-RAM SW830 +6 18 100% +hp - DVD-RAM UJ8B1 +6 130 100% +hp - DVD-RAM UJ8D1 +6 61 100% +hp - DVD-RAM UJ8DB +6 23 100% +hp - DVD-RAM UJ8E1 +6 5 100% +hp - DVD-ROM DT30N +103 5 100% +hp - DVD-ROM DT31N +103 1 100% +hp - DVD-ROM DT50N +103 2 100% +hp - DVD-ROM DTB0N +102 1 100% +hp - DVD-ROM DU20N +667 2 100% +HP - DVD-ROM rm475e +6 7 100% +hp - DVD-ROM SH-116BB +6 1 100% +hp - DVD-ROM SN-108DB +6 2 100% +hp - DVD-ROM SN-108FB +6 1 100% +hp - DVD-ROM TS-H353B +6 8 100% +hp - DVD-ROM TS-H353C +6 14 100% +hp - DVD-ROM TS-L333B +6 1 100% +hp - DVD-ROM TS-L333F +6 1 100% +hp - DVDRAM GA31N +103 2 100% +hp - DVDRAM GS20N +667 7 100% +hp - DVDRAM GS30N +667 14 100% +hp - DVDRAM GSA-U20N +667 5 100% +hp - DVDRAM GT20L +667 161 100% +hp - DVDRAM GT30L +103 376 100% +hp - DVDRAM GT30N +103 2 100% +hp - DVDRAM GT31L +103 136 100% +hp - DVDRAM GT31N +103 24 100% +hp - DVDRAM GT50N +103 173 100% +hp - DVDRAM GT80N +102 64 100% +hp - DVDRAM GTA0N +102 13 100% +hp - DVDRAM GTB0N +102 5 100% +hp - DVDRAM GU10N +667 16 100% +hp - DVDRAM GU40N +103 12 100% +hp - DVDRAM GU60N +6 14 100% +hp - DVDRAM GU70N +48 37 100% +hp - DVDRAM GU90N +102 63 100% +hp - DVDRAM GUB0N +102 7 100% +hp - DVDROM DH20N +6 16 100% +hp - DVDROM DH40N +6 12 100% +hp - DVDROM DH41N +6 6 100% +hp - DVDROM DH51N +6 1 100% +hp - DVDROM DT30N +103 1 100% +hp - DVDROM DT50N +103 1 100% +hp - DVDRW DU8A5SHL +6 20 100% +hp - DVDRW DU8A6SH +6 29 100% +hp - DVDRW GUB0N +102 36 100% +hp - DVDRW SU208FB +6 22 100% +hp - DVDRW SU208GB +6 32 100% +hp - DVDRW SU208HB +6 4 100% +hp - DVDRW UJ8FBA +6 8 100% +hp - DVDRW UJ8G2A +103 3 100% +hp - DVDRW GUC0N +6 3 100% +hp - DVDWBD SN-406AB +6 3 100% +hp - DVDWBD TS-HB43LB +6 1 100% +hp - DVDWBD TS-LB23L +6 64 100% +hp - DVDWBD TS-LB23P +6 22 100% +hp - DVDWBD TS-TB23L +6 20 100% +hp - DW-224S-V +102 1 100% +HP - PhotoSmart DVD +667 3 100% +hp DVD - DE8A3L +6 10 100% +hp HLDS - DVDRW GUD0N +102 4 100% +hp TSST - DVDRW SU-208HB +6 2 100% +IBM - CD-RW-DVD-ROM +102 8 100% +IBM - CDRW-USB2 +685 5 100% +IBM - DVRM00203 +103 1 100% +IBM - RMBO0020311 +102 3 100% +IBM - USB CD-ROM +678 13 100% +IBM - USB2 MultiBurner +102 7 100% +IDE-CD - CROM6048 +691 1 100% +IDE-CD - CDRW7352 +738 1 100% +IDE-CD - R-RW 12x8x32 +692 2 100% +IDE-CD - R-RW 16x10A +733 10 100% +IDE-CD - R-RW 16x12A +733 2 100% +IDE-CD - R-RW 48xC +738 4 100% +IDE-CD - R-RW 4x4x32 -436 23 100% +IDE-CD - R-RW 8x4x32 -436 21 100% +IDE-CD - ReWritable-2x2x6 +1263 2 100% +IDE-DVD - DROM6216 +738 143 100% +IDE-DVD - DVDRW6002 +120 1 100% +IDE-DVD - DVDRW8631 +618 3 100% +IDE-DVD - DVDRW8651 +618 26 100% +IDE-DVD - DVDRW8801 +618 7 100% +IDE-DVD - ROM 16x +691 59 100% +IDE-DVD - ROM 6116 +691 63 100% +IMATION - DVD+-RAM ELITE +48 2 100% +Imation - IMW16DL84I +6 2 100% +Imation - IMW18DL88RAME +6 1 100% +Imation - IMW20DL88RAMI +6 1 100% +Imation - IMW241040IAB +97 1 100% +Imation - IMW242424DV8E +6 2 100% +Imation - IMW4222DV8E +12 2 100% +Imation - IMWDVRW16DL84E +6 1 100% +Imation - IMWDVRW16DL84I +6 1 100% +IMATION - IMWDVRW16DLI +12 1 100% +Imation - Slim DVD +6 21 100% +IN-CDRW - DX-CDRW +6 1 100% +IOMEGA - CDDVD482416E23-C +6 8 100% +IOMEGA - CDDVD522416EC3-C +6 5 100% +IOMEGA - CDDVD523216E23-B +6 1 100% +IOMEGA - CDRW19200INT-A +98 2 100% +IOMEGA - CDRW19202EXT2-B +12 1 100% +IOMEGA - CDRW23042EXT3-C +12 5 100% +IOMEGA - CDRW2304FEXT-B +12 1 100% +IOMEGA - CDRW55292EXT3-B +6 9 100% +IOMEGA - CDRW55292EXT3-C +6 7 100% +IOMEGA - CDRW55296INT-C +6 1 100% +IOMEGA - CDRW6402EXT-B +12 12 100% +IOMEGA - CDRW64892EXT3-B +6 12 100% +IOMEGA - CDRW64892EXT3-C +6 4 100% +IOMEGA - CDRW86522EXT3-B +6 18 100% +IOMEGA - CDRW86522EXT3-C +6 14 100% +IOMEGA - CDRW9602EXT-B +12 10 100% +IOMEGA - CDRW9602EXT3-B +12 2 100% +IOMEGA - DVDRW12448E2D-B +12 1 100% +IOMEGA - DVDRW4216IND-A +48 6 100% +IOMEGA - DVDRW4216INP-A +48 2 100% +IOMEGA - DVDRW4224E2Q-D +667 18 100% +IOMEGA - DVDRW4224INQ-D +667 24 100% +IOMEGA - DVDRW8440E2D-B +12 1 100% +Iomega - Slimline DVD +6 32 100% +Iomega - Super DVD +6 3 100% +IOMEGA - ZIPCD 650 USB -436 8 100% +IOMEGA - ZIPCD-DVDROM +708 3 100% +IOMEGA - ZIPCD1024INT-A -436 3 100% +IOMEGA - ZIPCD3840INT-A +99 2 100% +JUMBO - CDRW-DVD DBW521A +6 1 100% +JVC - DVD CU-VD40 +30 1 100% +KENWOOD - CD-ROM UCR-415 +12 1 100% +KENWOOD - CD-ROM UCR-421 +12 13 100% +KiSS - DVD-ROM DR-1712 -472 2 100% +KiSS - DVD-ROM DR-1802 +691 2 100% +KiSS - DVD-ROM DR2012C +6 1 100% +LACIE - CDBP-241040A +688 3 100% +LENOVO - BURNER GP80N +103 1 100% +Lenovo - Slim_USB_Burner +6 67 100% +LENOVO - USB MultiBurner2 +102 4 100% +Lenovo - USB_DVD_Burner5 +6 22 100% +LENOVO - USB_MultiBurner3 +594 17 100% +LENOVO - USB_SATA_Burner3 +6 24 100% +LENOVO - USB_SATA_Burner4 +6 7 100% +LG - CD-DVD-ROM 0 2 100% +LG - CD-ROM CRD-8400B -24 20 100% +LG - CD-ROM CRD-8480B -24 2 100% +LG - CD-ROM CRD-8480C -24 5 100% +LG - CD-ROM CRD-8480M -24 6 100% +LG - CD-ROM CRD-8481B -24 2 100% +LG - CD-ROM CRD-8482B -24 34 100% +LG - CD-ROM CRD-8483B +12 14 100% +LG - CD-ROM CRD-8484B -491 15 100% +LG - CD-ROM CRD-8485B +12 2 100% +LG - CD-ROM CRD-8520B +12 10 100% +LG - CD-ROM CRD-8521B +12 45 100% +LG - CD-ROM CRD-8522B -491 58 100% +LG - CD-ROM CRN-8241B -24 2 100% +LG - CD-ROM CRN-8245B -491 49 100% +LG - CD-RW CED-8080B +86 113 100% +LG - CD-RW CED-8081B +86 6 100% +LG - CD-RW CED-8083B +86 22 100% +LG - CD-RW CED-8120B +685 54 100% +LG - DVD-RAM DAD8020B +667 1 100% +LG - DVD-ROM DRD8120B +594 84 100% +LG - DVD-ROM DRD8160B +594 164 100% +LG - DVD-ROM DRN8080B -24 12 100% +LG - GCE-8483B +6 1 100% +LG - CD-ROM CRD-8322B -24 13 100% +LG - CD-ROM CRD-8360B -24 1 100% +LG - CD-ROM CRN-8241B -24 2 100% +LG (KOR) - CD-ROM CRD-8520B +12 2 100% +LG (KOR) - CD-ROM CRD-8523B -24 1 100% +LG (KOR) - DVD-ROM DRD8120B +594 4 100% +LG (KOR) - DVD-ROM DRD8160B +594 4 100% +LG (OEM) - CD-ROM CRD-8521B +12 2 100% +LG Electronics - BD-RE GGW-H10N +667 4 100% +LG Electronics - BD-RE BE06LU10 +667 93 100% +LG Electronics - BD-RE BE06LU11 +667 1 100% +LG Electronics - BD-RE BE08LU20 +667 50 100% +LG Electronics - BD-RE BE12LU30 +667 89 100% +LG Electronics - BD-RE BE12LU38 +667 74 100% +LG Electronics - BD-RE BE14NU40 +6 163 100% +LG Electronics - BD-RE BH08LS20 +667 315 100% +LG Electronics - BD-RE BH08NS20 +667 117 100% +LG Electronics - BD-RE BH10LS30 +667 1718 100% +LG Electronics - BD-RE BH10LS38 +667 696 100% +LG Electronics - BD-RE BH10NS30 +667 241 100% +LG Electronics - BD-RE BH10NS38 +667 56 100% +LG Electronics - BD-RE BH12LS30 +667 18 100% +LG Electronics - BD-RE BH12LS35 +667 88 100% +LG Electronics - BD-RE BH12LS38 +667 168 100% +LG Electronics - BD-RE BH12NS30 +667 72 100% +LG Electronics - BD-RE BH12NS38 +667 38 100% +LG Electronics - BD-RE BH14NS40 +6 179 100% +LG Electronics - BD-RE BH14NS48 +6 86 100% +LG Electronics - BD-RE BH16NS40 +6 899 100% +LG Electronics - BD-RE BH16NS48 +6 73 100% +LG Electronics - BD-RE BH16NS55 +6 32 100% +LG Electronics - BD-RE BH16NS58 +6 1 100% +LG Electronics - BD-RE BH20F +667 6 100% +LG Electronics - BD-RE BH20N +667 70 100% +LG Electronics - BD-RE BH30N +667 79 100% +LG Electronics - BD-RE BH40N +6 9 100% +LG Electronics - BD-RE GBW-B10N +667 27 100% +LG Electronics - BD-RE GBW-H10N +667 12 100% +LG Electronics - BD-RE GBW-H20L +667 62 100% +LG Electronics - BD-RE GBW-H20N +667 4 75% +LG Electronics - BD-RE GBW-T10N +667 1 100% +LG Electronics - BD-RE GGW-H20L +667 1293 100% +LG Electronics - BD-RE GGW-H20N +667 117 100% +LG Electronics - BD-RE UH10LS20 +667 68 100% +LG Electronics - BD-RE UH12LS28 +667 9 100% +LG Electronics - BD-RE WH08LS20 +667 48 100% +LG Electronics - BD-RE WH10LS30 +667 367 100% +LG Electronics - BD-RE WH12LS30 +667 102 100% +LG Electronics - BD-RE WH12LS38 +667 65 100% +LG Electronics - BD-RE WH12LS39 +667 93 100% +LG Electronics - BD-RE WH14NS40 +6 483 100% +LG Electronics - BD-RE WH16NS40 +6 230 100% +LG Electronics - BD-RE _GBW-T10N +667 2 100% +LG Electronics - BD-RE BP06LU10 +667 54 100% +LG Electronics - BD-RE BP06LU11 +667 10 100% +LG Electronics - BD-RE BP30N +667 1 100% +LG Electronics - BD-RE BP40NB30 +667 21 100% +LG Electronics - BD-RE BP40NS20 +667 78 100% +LG Electronics - BD-RE BP50NB40 +6 11 100% +LG Electronics - BD-RE BP55EB40 +6 2 100% +LG Electronics - BD-RE BT10F +667 9 100% +LG Electronics - BD-RE BT10N +667 51 100% +LG Electronics - BD-RE BT11F +667 12 100% +LG Electronics - BD-RE BT20F +667 7 100% +LG Electronics - BD-RE BT20N +667 25 100% +LG Electronics - BD-RE BT30N +667 18 100% +LG Electronics - BD-RE BU10N +6 3 100% +LG Electronics - BD-RE BU20N +6 9 100% +LG Electronics - BD-RE WP40NB30 +667 6 100% +LG Electronics - BD-RE_BT10N +667 4 100% +LG Electronics - BD-RE_BT20N +667 18 100% +LG Electronics - BD-RE_BT30N +667 1 100% +LG Electronics - BDDVDRW CA10N +667 6 100% +LG Electronics - BDDVDRW CA21N +102 4 100% +LG Electronics - BDDVDRW CA30N +102 3 100% +LG Electronics - BDDVDRW CA30P +102 3 100% +LG Electronics - BDDVDRW CA40N +102 4 100% +LG Electronics - BDDVDRW CH08LS10 +667 430 100% +LG Electronics - BDDVDRW CH08NS10 +667 28 100% +LG Electronics - BDDVDRW CH10F +667 6 100% +LG Electronics - BDDVDRW CH10L +667 25 100% +LG Electronics - BDDVDRW CH10LS20 +667 479 100% +LG Electronics - BDDVDRW CH10LS28 +667 133 100% +LG Electronics - BDDVDRW CH10N +667 16 100% +LG Electronics - BDDVDRW CH10NS20 +667 5 100% +LG Electronics - BDDVDRW CH12LS28 +667 121 100% +LG Electronics - BDDVDRW CH12NS28 +667 7 100% +LG Electronics - BDDVDRW CH12NS30 +6 80 100% +LG Electronics - BDDVDRW CH20N +667 5 100% +LG Electronics - BDDVDRW CH29N +667 3 100% +LG Electronics - BDDVDRW CH30N +6 13 100% +LG Electronics - BDDVDRW CP40NG10 +102 47 100% +LG Electronics - BDDVDRW CP50NS20 +6 6 100% +LG Electronics - BDDVDRW CT10L +667 60 100% +LG Electronics - BDDVDRW CT10N +667 116 100% +LG Electronics - BDDVDRW CT21N +102 115 100% +LG Electronics - BDDVDRW CT30F +102 26 100% +LG Electronics - BDDVDRW CT30N +102 59 100% +LG Electronics - BDDVDRW CT30P +102 12 100% +LG Electronics - BDDVDRW CT31F +102 8 100% +LG Electronics - BDDVDRW CT40N +102 18 100% +LG Electronics - BDDVDRW GBC-H20L +667 137 100% +LG Electronics - BDDVDRW GBC-H20N +667 26 100% +LG Electronics - BDDVDRW GGC-H20L +667 1627 100% +LG Electronics - BDDVDRW GGC-H20N +667 154 100% +LG Electronics - BDDVDRW UH08LS10 +667 27 100% +LG Electronics - BDDVDRW UH10LS20 +667 9 100% +LG Electronics - BDDVDRW UH12LS28 +667 18 100% +LG Electronics - BDDVDRW UH12LS29 +667 42 100% +LG Electronics - BDDVDRW UH12NS29 +667 35 100% +LG Electronics - BDDVDRW UH12NS30 +6 93 100% +LG Electronics - CD-ROM CRD-8484B -491 1 100% +LG Electronics - CD-ROM GCR-8240N +687 10 100% +LG Electronics - CD-ROM GCR-8480B -491 41 100% +LG Electronics - CD-ROM GCR-8481B -24 56 100% +LG Electronics - CD-ROM GCR-8483B -24 88 100% +LG Electronics - CD-ROM GCR-8485B -24 7 100% +LG Electronics - CD-ROM GCR-8486B +6 1 100% +LG Electronics - CD-ROM GCR-8520B -491 57 100% +LG Electronics - CD-ROM GCR-8521B -24 37 100% +LG Electronics - CD-ROM GCR-8522B -489 7 100% +LG Electronics - CD-ROM GCR-8523B -24 93 100% +LG Electronics - CD-ROM GCR-8525B -24 13 100% +LG Electronics - CD-ROM GCR-8526B +6 8 100% +LG Electronics - CD-ROM GCR-H10N +6 1 100% +LG Electronics - CD-RW GCE-8080N +733 9 100% +LG Electronics - CD-RW GCE-8160B +12 119 100% +LG Electronics - CD-RW GCE-8240B +733 66 100% +LG Electronics - CD-RW GCE-8320B +12 139 100% +LG Electronics - CD-RW GCE-8321B +12 1 100% +LG Electronics - CD-RW GCE-8400B +12 244 100% +LG Electronics - CD-RW GCE-8480B +6 51 100% +LG Electronics - CD-RW GCE-8481B +6 211 100% +LG Electronics - CD-RW GCE-8483B +6 198 100% +LG Electronics - CD-RW GCE-8486B +6 11 100% +LG Electronics - CD-RW GCE-8487B +6 70 100% +LG Electronics - CD-RW GCE-8520B +6 210 100% +LG Electronics - CD-RW GCE-8522B +689 4 100% +LG Electronics - CD-RW GCE-8523B +6 75 100% +LG Electronics - CD-RW GCE-8523BS +6 2 100% +LG Electronics - CD-RW GCE-8524B +689 3 100% +LG Electronics - CD-RW GCE-8525B +6 229 100% +LG Electronics - CD-RW GCE-8526B +6 204 100% +LG Electronics - CD-RW GCE-8527B +6 142 100% +LG Electronics - CDRW/DVD GCC4244 +102 235 100% +LG Electronics - CDRW/DVD GCC4247 +102 7 100% +LG Electronics - CDRW/DVD GCC4482 +6 96 100% +LG Electronics - CDRW/DVD GCCH10N +6 45 100% +LG Electronics - CDRW/DVD GCCH30N +6 8 100% +LG Electronics - CDRW/DVD GCCT10N +102 65 100% +LG Electronics - CDRW/DVD GCCT20N +102 2 100% +LG Electronics - CDRWDVD MU10N +102 35 100% +LG Electronics - DVD RAM GSA-T20L +667 1 100% +LG Electronics - DVD+-RW GA10N +667 65 100% +LG Electronics - DVD+-RW GA11N +667 62 100% +LG Electronics - DVD+-RW GA31N +103 141 100% +LG Electronics - DVD+-RW GA50N +6 15 100% +LG Electronics - DVD+-RW GH30N +102 196 100% +LG Electronics - DVD+-RW GH50N +667 494 100% +LG Electronics - DVD+-RW GH70N +667 120 100% +LG Electronics - DVD+-RW GH82N +667 62 100% +LG Electronics - DVD+-RW GHA2N +667 55 100% +LG Electronics - DVD+-RW GHB0N +6 79 100% +LG Electronics - DVD+-RW GP60N +103 19 100% +LG Electronics - DVD+-RW GS20N +667 96 100% +LG Electronics - DVD+-RW GS30N +667 137 100% +LG Electronics - DVD+-RW GS40N +6 44 100% +LG Electronics - DVD+-RW GSA-H21L +102 75 100% +LG Electronics - DVD+-RW GSA-H21N +102 154 100% +LG Electronics - DVD+-RW GSA-H31L +102 109 100% +LG Electronics - DVD+-RW GSA-H31N +102 299 100% +LG Electronics - DVD+-RW GSA-H53L +102 6 100% +LG Electronics - DVD+-RW GSA-H53N +102 46 100% +LG Electronics - DVD+-RW GSA-H73N +102 336 100% +LG Electronics - DVD+-RW GSA-S10N +667 38 100% +LG Electronics - DVD+-RW GSA-T11N +667 333 100% +LG Electronics - DVD+-RW GSA-T21N +667 345 100% +LG Electronics - DVD+-RW GSA-T40N +667 15 100% +LG Electronics - DVD+-RW GSA-U10N +667 7 100% +LG Electronics - DVD+-RW GSA-U20N +667 65 100% +LG Electronics - DVD+-RW GT10N +102 144 100% +LG Electronics - DVD+-RW GT30N +103 42 100% +LG Electronics - DVD+-RW GT32N +103 164 100% +LG Electronics - DVD+-RW GT50N +103 66 100% +LG Electronics - DVD+-RW GT60N +103 39 100% +LG Electronics - DVD+-RW GT80N +102 78 100% +LG Electronics - DVD+-RW GTA0N +102 13 100% +LG Electronics - DVD+-RW GU10N +667 76 100% +LG Electronics - DVD+-RW GU40N +103 114 100% +LG Electronics - DVD+-RW GU60N +6 56 100% +LG Electronics - DVD+-RW GU70N +48 47 100% +LG Electronics - DVD+-RW GU90N +102 108 100% +LG Electronics - DVD+-RW GWA4040N +48 23 100% +LG Electronics - DVD+-RW GWA4083N +667 16 100% +LG Electronics - DVD+-RW GWA4164B +102 210 100% +LG Electronics - DVD+-RW GX10N +667 13 100% +LG Electronics - DVD+RW GCA-4040N +48 125 100% +LG Electronics - DVD+RW GRA-4120B +667 23 100% +LG Electronics - DVD-RAM GH10L +667 223 100% +LG Electronics - DVD-RAM GH10N +667 29 100% +LG Electronics - DVD-RAM GH15L +667 192 100% +LG Electronics - DVD-RAM GH20LP20 +102 22 100% +LG Electronics - DVD-RAM GH22LP20 +102 793 100% +LG Electronics - DVD-RAM GH22LP21 +102 18 100% +LG Electronics - DVD-RAM GH22LS30 +102 679 100% +LG Electronics - DVD-RAM GH22NP20 +102 1374 100% +LG Electronics - DVD-RAM GH22NP21 +102 87 100% +LG Electronics - DVD-RAM GH22NS30 +102 1120 100% +LG Electronics - DVD-RAM GH40L +667 192 100% +LG Electronics - DVD-RAM GH40N +667 29 100% +LG Electronics - DVD-RAM GH60L +667 1 100% +LG Electronics - DVD-RAM GH60N +667 41 100% +LG Electronics - DVD-RAM GH70N +667 25 100% +LG Electronics - DVD-RAM GH82N +667 14 100% +LG Electronics - DVD-RAM GHA2N +667 10 100% +LG Electronics - DVD-RAM GHB0N +6 19 100% +LG Electronics - DVD-RAM GHC0N +6 12 100% +LG Electronics - DVD-RAM GSA-E20N +102 12 100% +LG Electronics - DVD-RAM GSA-E60L +102 200 100% +LG Electronics - DVD-RAM GSA-E60N +102 147 100% +LG Electronics - DVD-RAM GSA-H20L +102 316 100% +LG Electronics - DVD-RAM GSA-H20N +102 48 100% +LG Electronics - DVD-RAM GSA-H22L +102 203 100% +LG Electronics - DVD-RAM GSA-H22N +102 286 100% +LG Electronics - DVD-RAM GSA-H30N +102 178 100% +LG Electronics - DVD-RAM GSA-H40N +667 15 100% +LG Electronics - DVD-RAM GSA-H50L +102 153 100% +LG Electronics - DVD-RAM GSA-H50N +102 41 100% +LG Electronics - DVD-RAM GSA-H54L +102 127 100% +LG Electronics - DVD-RAM GSA-H54N +102 161 100% +LG Electronics - DVD-RAM GSA-H55L +102 626 100% +LG Electronics - DVD-RAM GSA-H55N +102 1082 100% +LG Electronics - DVD-RAM GSA-H58N +102 393 100% +LG Electronics - DVD-RAM GSA-H60L +667 128 100% +LG Electronics - DVD-RAM GSA-H60N +667 35 100% +LG Electronics - DVD-ROM DH10N +102 86 100% +LG Electronics - DVD-ROM DH16NS10 +102 143 100% +LG Electronics - DVD-ROM DH20N +6 30 100% +LG Electronics - DVD-ROM DH30N +6 14 100% +LG Electronics - DVD-ROM DH40N +6 14 100% +LG Electronics - DVD-ROM DH41N +6 6 100% +LG Electronics - DVD-ROM DH50N +6 4 100% +LG Electronics - DVD-ROM DP10N +102 1 100% +LG Electronics - DVD-ROM DP61N +6 1 100% +LG Electronics - DVD-ROM DTA0N +102 3 100% +LG Electronics - DVD-ROM DU10N +102 32 100% +LG Electronics - DVD-ROM DU20N +667 4 100% +LG Electronics - DVD-ROM DU30N +103 6 100% +LG Electronics - DVD-ROM DU60N +6 7 100% +LG Electronics - DVD-ROM DU70N +48 4 100% +LG Electronics - DVD-ROM DU90N +102 5 100% +LG Electronics - DVD-ROM GDR-D10N +102 5 100% +LG Electronics - DVD-ROM GDR-D20N +102 2 100% +LG Electronics - DVD-ROM GDR-H30N +6 250 100% +LG Electronics - DVD-ROM GDR-M10N +102 3 100% +LG Electronics - DVD-ROM GDR-R10N +102 1 100% +LG Electronics - DVD-ROM GDR-T10N +102 3 100% +LG Electronics - DVD-ROM GDR-T20N +102 8 100% +LG Electronics - DVD-ROM GDR3120L +102 1 100% +LG Electronics - DVD-ROM GDR8081N +667 57 100% +LG Electronics - DVD-ROM GDR8082N +102 114 100% +LG Electronics - DVD-ROM GDR8083N +102 58 100% +LG Electronics - DVD-ROM GDR8084N +102 30 100% +LG Electronics - DVD-ROM GDR8085N +102 3 100% +LG Electronics - DVD-ROM GDR8087N +102 22 100% +LG Electronics - DVD-ROM GDR8160B +102 101 100% +LG Electronics - DVD-ROM GDR8161B +102 430 100% +LG Electronics - DVD-ROM GDR8162B +102 703 100% +LG Electronics - DVD-ROM GDR8163B +102 1185 100% +LG Electronics - DVD-ROM GDR8164B +102 1222 100% +LG Electronics - DVD-ROM GDRH10N +102 197 100% +LG Electronics - DVD-ROM GDRH20N +102 467 100% +LG Electronics - DVD-RW GCA-4020B +667 1 100% +LG Electronics - DVD-RW GCA-4080N +667 112 100% +LG Electronics - DVD-RW GH41N +667 49 100% +LG Electronics - DVD-RW GH61N +667 15 100% +LG Electronics - DVD-RW GH80N +667 2 100% +LG Electronics - DVD-RW GRA-4082N +667 3 100% +LG Electronics - DVD-RW GSA-H11N +667 46 100% +LG Electronics - DVD-RW GSA-H60L +667 161 100% +LG Electronics - DVD-RW GSA-T11N +667 1 100% +LG Electronics - DVD-RW GWA-4040B +667 4 100% +LG Electronics - DVD-RW GWA-4040N +48 44 100% +LG Electronics - DVD-RW GWA-4080N +667 82 100% +LG Electronics - DVD-RW GWA-4082B +667 3 100% +LG Electronics - DVD-RW GWA-4082N +667 261 100% +LG Electronics - DVD-RW GWA-4160B +667 36 100% +LG Electronics - DVD-RW GWA-4163B +667 16 100% +LG Electronics - DVD-RW GWA-4165B +667 46 100% +LG Electronics - DVD-RW_GSA-H11N +667 70 100% +LG Electronics - DVD-RW_GSA-H41N +667 87 100% +LG Electronics - DVDRAM AP70NS50 +6 12 100% +LG Electronics - DVDRAM GA10F +667 23 100% +LG Electronics - DVDRAM GA10N +667 14 100% +LG Electronics - DVDRAM GA31F +103 2 100% +LG Electronics - DVDRAM GA31N +103 21 100% +LG Electronics - DVDRAM GA50N +6 3 100% +LG Electronics - DVDRAM GDA-4040B +667 3 100% +LG Electronics - DVDRAM GDA-4120B +667 2 100% +LG Electronics - DVDRAM GE20LU10 +667 299 100% +LG Electronics - DVDRAM GE20LU11 +667 108 100% +LG Electronics - DVDRAM GE20NU10 +667 192 100% +LG Electronics - DVDRAM GE20NU11 +667 72 100% +LG Electronics - DVDRAM GE24LU20 +667 80 100% +LG Electronics - DVDRAM GE24LU21 +667 13 100% +LG Electronics - DVDRAM GE24NU21 +667 32 100% +LG Electronics - DVDRAM GE24NU30 +667 28 100% +LG Electronics - DVDRAM GE24NU40 +6 58 100% +LG Electronics - DVDRAM GH10L +667 1 100% +LG Electronics - DVDRAM GH10N +667 85 100% +LG Electronics - DVDRAM GH15F +667 262 100% +LG Electronics - DVDRAM GH20LS10 +667 161 100% +LG Electronics - DVDRAM GH20LS15 +667 171 100% +LG Electronics - DVDRAM GH20NS10 +667 1268 100% +LG Electronics - DVDRAM GH20NS15 +667 550 100% +LG Electronics - DVDRAM GH22LS40 +667 178 100% +LG Electronics - DVDRAM GH22LS50 +667 782 100% +LG Electronics - DVDRAM GH22LS51 +667 8 100% +LG Electronics - DVDRAM GH22LS70 +667 20 100% +LG Electronics - DVDRAM GH22NS40 +667 1409 100% +LG Electronics - DVDRAM GH22NS50 +667 2552 100% +LG Electronics - DVDRAM GH22NS51 +667 5 100% +LG Electronics - DVDRAM GH22NS70 +667 470 100% +LG Electronics - DVDRAM GH22NS90 +6 130 100% +LG Electronics - DVDRAM GH24LS50 +667 177 100% +LG Electronics - DVDRAM GH24LS70 +667 83 100% +LG Electronics - DVDRAM GH24NS50 +667 462 100% +LG Electronics - DVDRAM GH24NS70 +667 354 100% +LG Electronics - DVDRAM GH24NS71 +667 15 100% +LG Electronics - DVDRAM GH24NS72 +667 70 100% +LG Electronics - DVDRAM GH24NS90 +6 550 100% +LG Electronics - DVDRAM GH24NS95 +6 685 100% +LG Electronics - DVDRAM GH24NS96 +6 6 100% +LG Electronics - DVDRAM GH24NSB0 +6 541 100% +LG Electronics - DVDRAM GH24NSC0 +6 257 100% +LG Electronics - DVDRAM GH24NSD0 +6 2 100% +LG Electronics - DVDRAM GH24NSD1 +6 46 100% +LG Electronics - DVDRAM GH40F +667 178 100% +LG Electronics - DVDRAM GH40L +667 8 100% +LG Electronics - DVDRAM GH40N +667 123 100% +LG Electronics - DVDRAM GH41N +667 218 100% +LG Electronics - DVDRAM GH50N +667 4 100% +LG Electronics - DVDRAM GH60L +667 1 100% +LG Electronics - DVDRAM GH60N +667 224 100% +LG Electronics - DVDRAM GH70N +667 103 100% +LG Electronics - DVDRAM GH80N +667 3 100% +LG Electronics - DVDRAM GH82N +667 27 100% +LG Electronics - DVDRAM GHA2N +667 21 100% +LG Electronics - DVDRAM GHB0N +6 32 100% +LG Electronics - DVDRAM GHC0N +6 3 100% +LG Electronics - DVDRAM GMA-4020B +667 67 100% +LG Electronics - DVDRAM GMA-4040B +667 1 100% +LG Electronics - DVDRAM GMA-4080N +667 61 100% +LG Electronics - DVDRAM GMA-4082N +667 740 100% +LG Electronics - DVDRAM GMA-4084N +667 18 100% +LG Electronics - DVDRAM GMA4082Nf +667 3 100% +LG Electronics - DVDRAM GMA4082Nj +667 8 100% +LG Electronics - DVDRAM GP08LU10 +667 171 100% +LG Electronics - DVDRAM GP08LU11 +667 45 100% +LG Electronics - DVDRAM GP08LU30 +103 11 100% +LG Electronics - DVDRAM GP08NU10 +667 74 100% +LG Electronics - DVDRAM GP08NU11 +667 5 100% +LG Electronics - DVDRAM GP08NU20 +102 190 100% +LG Electronics - DVDRAM GP08NU30 +103 5 100% +LG Electronics - DVDRAM GP08NU40 +667 23 100% +LG Electronics - DVDRAM GP08NU6B +103 95 100% +LG Electronics - DVDRAM GP08NU6R +103 1 100% +LG Electronics - DVDRAM GP08NU6W +103 36 100% +LG Electronics - DVDRAM GP10NB20 +6 85 100% +LG Electronics - DVDRAM GP10NB21 +6 18 100% +LG Electronics - DVDRAM GP10NW20 +6 15 100% +LG Electronics - DVDRAM GP20N +102 50 100% +LG Electronics - DVDRAM GP30NB20 +6 36 100% +LG Electronics - DVDRAM GP30NB30 +103 9 100% +LG Electronics - DVDRAM GP30NB40 +6 26 100% +LG Electronics - DVDRAM GP30NW20 +6 5 100% +LG Electronics - DVDRAM GP30NW40 +6 9 100% +LG Electronics - DVDRAM GP40LB10 +6 14 100% +LG Electronics - DVDRAM GP40NB40 +6 28 100% +LG Electronics - DVDRAM GP40NW10 +6 5 100% +LG Electronics - DVDRAM GP50NB40 +6 138 100% +LG Electronics - DVDRAM GP50NB41 +6 4 100% +LG Electronics - DVDRAM GP50NW40 +6 28 100% +LG Electronics - DVDRAM GP50NW41 +6 1 100% +LG Electronics - DVDRAM GP55NB40 +6 12 100% +LG Electronics - DVDRAM GP55NW40 +6 7 100% +LG Electronics - DVDRAM GP57EB40 +6 21 100% +LG Electronics - DVDRAM GP57ES40 +6 4 100% +LG Electronics - DVDRAM GP57EW40 +6 6 100% +LG Electronics - DVDRAM GP60NB50 +6 82 100% +LG Electronics - DVDRAM GP60NB60 +6 1 100% +LG Electronics - DVDRAM GP60NS50 +6 35 97% +LG Electronics - DVDRAM GP60NS51 +6 2 100% +LG Electronics - DVDRAM GP65NB60 +6 17 100% +LG Electronics - DVDRAM GP65NG60 +6 3 100% +LG Electronics - DVDRAM GP65NS60 +6 3 100% +LG Electronics - DVDRAM GP65NW60 +6 5 100% +LG Electronics - DVDRAM GP67EB60 +6 1 100% +LG Electronics - DVDRAM GP67ES60 +6 1 100% +LG Electronics - DVDRAM GP70NS50 +6 10 100% +LG Electronics - DVDRAM GS20F +667 3 100% +LG Electronics - DVDRAM GS20N +667 7 100% +LG Electronics - DVDRAM GS30N +667 4 100% +LG Electronics - DVDRAM GS40N +6 5 100% +LG Electronics - DVDRAM GSA-4040B +667 530 100% +LG Electronics - DVDRAM GSA-4080N +667 49 100% +LG Electronics - DVDRAM GSA-4081B +667 277 100% +LG Electronics - DVDRAM GSA-4082B +667 384 100% +LG Electronics - DVDRAM GSA-4082N +667 134 100% +LG Electronics - DVDRAM GSA-4083N +667 391 100% +LG Electronics - DVDRAM GSA-4084N +667 297 100% +LG Electronics - DVDRAM GSA-4120B +667 712 100% +LG Electronics - DVDRAM GSA-4160B +667 514 100% +LG Electronics - DVDRAM GSA-4163B +667 2250 100% +LG Electronics - DVDRAM GSA-4165B +667 175 100% +LG Electronics - DVDRAM GSA-4167B +667 2064 100% +LG Electronics - DVDRAM GSA-5120D +667 45 100% +LG Electronics - DVDRAM GSA-5160D +667 33 100% +LG Electronics - DVDRAM GSA-5163D +667 164 100% +LG Electronics - DVDRAM GSA-E10L +667 209 100% +LG Electronics - DVDRAM GSA-E10N +667 74 100% +LG Electronics - DVDRAM GSA-E30L +667 29 100% +LG Electronics - DVDRAM GSA-E30N +667 4 100% +LG Electronics - DVDRAM GSA-E40L +667 167 100% +LG Electronics - DVDRAM GSA-E40N +667 132 100% +LG Electronics - DVDRAM GSA-E50L +667 119 100% +LG Electronics - DVDRAM GSA-E50N +667 33 100% +LG Electronics - DVDRAM GSA-E60N +102 1 100% +LG Electronics - DVDRAM GSA-H10A +667 420 100% +LG Electronics - DVDRAM GSA-H10L +667 143 100% +LG Electronics - DVDRAM GSA-H10N +667 1175 100% +LG Electronics - DVDRAM GSA-H12L +667 199 100% +LG Electronics - DVDRAM GSA-H12N +667 433 100% +LG Electronics - DVDRAM GSA-H40N +667 84 100% +LG Electronics - DVDRAM GSA-H42L +667 577 100% +LG Electronics - DVDRAM GSA-H42N +667 669 100% +LG Electronics - DVDRAM GSA-H44L +667 51 100% +LG Electronics - DVDRAM GSA-H44N +667 420 100% +LG Electronics - DVDRAM GSA-H60N +667 99 100% +LG Electronics - DVDRAM GSA-H62L +667 130 100% +LG Electronics - DVDRAM GSA-H62N +667 855 100% +LG Electronics - DVDRAM GSA-H66N +667 250 100% +LG Electronics - DVDRAM GSA-T10N +667 541 100% +LG Electronics - DVDRAM GSA-T20F +667 32 100% +LG Electronics - DVDRAM GSA-T20L +667 499 100% +LG Electronics - DVDRAM GSA-T20N +667 1154 100% +LG Electronics - DVDRAM GSA-T30L +667 58 100% +LG Electronics - DVDRAM GSA-T30N +667 49 100% +LG Electronics - DVDRAM GSA-T40F +667 10 100% +LG Electronics - DVDRAM GSA-T40L +667 71 100% +LG Electronics - DVDRAM GSA-T40N +667 419 100% +LG Electronics - DVDRAM GSA-T50F +667 44 100% +LG Electronics - DVDRAM GSA-T50L +667 263 100% +LG Electronics - DVDRAM GSA-T50N +667 674 100% +LG Electronics - DVDRAM GSA-U10F +667 2 100% +LG Electronics - DVDRAM GSA-U10N +667 463 100% +LG Electronics - DVDRAM GSA-U20F +667 1 100% +LG Electronics - DVDRAM GSA-U20N +667 368 100% +LG Electronics - DVDRAM GT10N +102 83 100% +LG Electronics - DVDRAM GT20F +667 58 100% +LG Electronics - DVDRAM GT20L +667 112 100% +LG Electronics - DVDRAM GT20N +667 282 100% +LG Electronics - DVDRAM GT30F +103 27 100% +LG Electronics - DVDRAM GT30N +103 704 100% +LG Electronics - DVDRAM GT31N +103 55 100% +LG Electronics - DVDRAM GT32N +103 309 100% +LG Electronics - DVDRAM GT33N +103 255 100% +LG Electronics - DVDRAM GT34N +103 118 100% +LG Electronics - DVDRAM GT40N +103 108 100% +LG Electronics - DVDRAM GT50N +103 189 100% +LG Electronics - DVDRAM GT51N +103 114 100% +LG Electronics - DVDRAM GT60N +103 51 100% +LG Electronics - DVDRAM GT70N +103 52 100% +LG Electronics - DVDRAM GT80N +102 115 100% +LG Electronics - DVDRAM GT90N +6 27 100% +LG Electronics - DVDRAM GTA0N +102 51 100% +LG Electronics - DVDRAM GTB0N +102 17 100% +LG Electronics - DVDRAM GTC0N +102 2 100% +LG Electronics - DVDRAM GU10N +667 289 100% +LG Electronics - DVDRAM GU40N +103 88 100% +LG Electronics - DVDRAM GU60N +6 12 100% +LG Electronics - DVDRAM GU61N +6 48 100% +LG Electronics - DVDRAM GU70N +48 83 100% +LG Electronics - DVDRAM GU71N +6 67 100% +LG Electronics - DVDRAM GU90N +102 59 100% +LG Electronics - DVDRAM GUA0N +6 84 100% +LG Electronics - DVDRAM GUB0N +102 20 100% +LG Electronics - DVDRAM GUC0N +6 60 100% +LG Electronics - DVDRAM GUD0N +102 2 100% +LG Electronics - DVDRAM GUE0N +102 1 100% +LG Electronics - DVDRAM GUE1N +6 12 100% +LG Electronics - DVDRAM SP60NB50 +6 57 100% +LG Electronics - DVDRAM SP80NB60 +6 23 100% +LG Electronics - DVDRAM_GH10N +667 25 100% +LG Electronics - DVDRAM_GH15N +667 42 100% +LG Electronics - DVDRAM_GH40N +667 9 100% +LG Electronics - DVDRAM_GHA2N +667 1 100% +LG Electronics - DVDRAM_GSA-4165B +667 10 100% +LG Electronics - DVDRAM_GSA-H10A +667 1 100% +LG Electronics - DVDRAM_GSA-H10L +667 6 100% +LG Electronics - DVDRAM_GSA-H10N +667 37 100% +LG Electronics - DVDRAM_GSA-H40N +667 23 100% +LG Electronics - DVDRAM_GSA-H60N +667 90 100% +LG Electronics - DVDRAM_GSA-T10N +667 6 100% +LG Electronics - DVDRAM_GSA-T20N +667 109 100% +LG Electronics - DVDRAM_GSA-T50N +667 43 100% +LG Electronics - DVDRAM_GT30N +103 24 100% +LG Electronics - DVDROM DH16NS30 +6 84 100% +LG Electronics - DVDROM DH18NS40 +6 35 100% +LG Electronics - DVDROM DH18NS41 +6 1 100% +LG Electronics - DVDROM DH18NS50 +6 12 100% +LG Electronics - DVDROM DH18NS60 +6 2 100% +LG Electronics - DVDROM DH20N +6 4 100% +LG Electronics - DVDROM DH30N +6 4 100% +LG Electronics - DVDROM DH40N +6 29 100% +LG Electronics - DVDROM DH50N +6 2 100% +LG Electronics - DVDRRW GCA-4164B +102 34 100% +LG Electronics - DVDRRW GCA-4166B +102 20 100% +LG Electronics - DVDRRW GSA-2164D +102 106 100% +LG Electronics - DVDRRW GSA-2166D +102 147 100% +LG Electronics - DVDRRW GSA-4164B +102 22 100% +LG Electronics - DVDRRW GSA-4166B +102 131 100% +LG Electronics - DVDRRW GSA-5169D +102 34 100% +LG Electronics - DVDRRW GSA-H20L +102 101 100% +LG Electronics - DVDRRW GSA-H21L +102 21 100% +LG Electronics - DVDRRW GSA-H21N +102 3 100% +LG Electronics - DVDRRW GSA-H30L +102 278 100% +LG Electronics - DVDRRW GWA-4083B +102 41 100% +LG Electronics - DVDRRW GWA-4161B +102 31 100% +LG Electronics - DVDRRW GWA-4162B +102 9 100% +LG Electronics - DVDRRW GWA-4164B +102 70 100% +LG Electronics - DVDRRW GWA-4166B +102 62 100% +LG Electronics - DVDRW GA11N +667 66 100% +LG Electronics - DVDRW GA32N +103 115 100% +LG Electronics - DVDRW GS21N +667 69 100% +LG Electronics - DVDRW GS22N +667 6 100% +LG Electronics - DVDRW GS23N +667 148 100% +LG Electronics - DVDRW GS31N +667 25 100% +LG Electronics - DVDRW GS41N +6 6 100% +LG Electronics - DVDRW GSA-S10N6 +667 2 100% +LG Electronics - DVDRW GSA-S10N +667 158 100% +LG Electronics - DVDRW GX30N +6 99 100% +LG Electronics - DVDRW GX40N +6 104 100% +LG Electronics - DVDRW GX50N +6 26 100% +LG Electronics - DVDRW GWA4080M +667 7 100% +LG Electronics - DVDRW GWA4080MA +667 18 100% +LG Electronics - DVDRW GWA4080MB +667 4 100% +LG Electronics - DVDRWBD CA10N +667 143 100% +LG Electronics - DVDRWBD CA30N +102 27 100% +LG Electronics - DVDRWBD CA40N +102 54 100% +LG Electronics - DVDRWBD CH20N +667 92 100% +LG Electronics - DVDRWBD CH30N +6 32 100% +LG Electronics - DVDRWBD CT10N +667 16 100% +LG Electronics - DVDRWBD CT30N +102 98 100% +LG Electronics - DVDRWBD CT40N +102 61 100% +LG Electronics - DVDRWBD GBC-H20N +667 62 100% +LG Electronics - GCE-8483B 0 2 100% +LG Electronics - LENOVO BURNER +102 7 100% +LG Electronics - RW/DVD GCC-4080N +733 6 100% +LG Electronics - RW/DVD GCC-4120B +733 39 100% +LG Electronics - RW/DVD GCC-4160N +102 15 100% +LG Electronics - RW/DVD GCC-4240N +102 218 100% +LG Electronics - RW/DVD GCC-4241N +102 298 100% +LG Electronics - RW/DVD GCC-4242N +102 295 100% +LG Electronics - RW/DVD GCC-4243N +102 160 100% +LG Electronics - RW/DVD GCC-4244N +102 185 100% +LG Electronics - RW/DVD GCC-4246N +102 67 100% +LG Electronics - RW/DVD GCC-4247N +102 197 100% +LG Electronics - RW/DVD GCC-4320B +6 99 100% +LG Electronics - RW/DVD GCC-4480B +6 293 100% +LG Electronics - RW/DVD GCC-4481B +6 228 100% +LG Electronics - RW/DVD GCC-4482B +6 102 100% +LG Electronics - RW/DVD GCC-4520B +6 66 100% +LG Electronics - RW/DVD GCC-4521B +6 102 100% +LG Electronics - RW/DVD GCC-4522B +6 40 100% +LG Electronics - RW/DVD GCC-4522C +6 2 100% +LG Electronics - RW/DVD GCC-5241P +102 1 100% +LG Electronics - RW/DVD GCC-C10N +102 20 100% +LG Electronics - RW/DVD GCC-C20N +102 1 100% +LG Electronics - RW/DVD GCC-H10N +6 14 100% +LG Electronics - RW/DVD GCC-H20N +6 12 100% +LG Electronics - RW/DVD GCC-H21N +6 9 100% +LG Electronics - RW/DVD GCC-H23N +6 6 100% +LG Electronics - RW/DVD GCC-H30N +6 16 100% +LG Electronics - RW/DVD GCC-H31N +6 1 100% +LG Electronics - RW/DVD GCC-M10N +102 54 100% +LG Electronics - RW/DVD GCC-T10N +102 40 100% +LG Electronics - RW/DVD GCC-T20N +102 7 100% +LG Electronics - RW/DVD MU10N +102 61 100% +LG Electronics - RW/DVD_GCC-4241N +102 1 100% +LG Electronics - RW/DVD_GCC-4244N +102 2 100% +LG Electronics - RW/DVD_GCC-4480B +6 1 100% +LG Electronics - RW/DVD_GCC-T10N +102 5 100% +LGHL-04P - LG HL-04P MT8575 +6 2 100% +LGHL-05P - LG HL-05P MT8575 +6 3 100% +Lite-ON - DVD-ROM LTD-165H +12 49 100% +Lite-ON - DVD-ROM LTD-166S +12 49 100% +Lite-ON - DVD-ROM LTD163 +594 4 100% +Lite-ON - DVD-ROM LTD163D +594 6 100% +Lite-ON - DVD-ROM XJ-HD166 +12 145 100% +Lite-ON - XJ-HD163 +594 35 100% +Lite-ON - XJ-HD163D +594 27 100% +Lite-ON - XJ-HD165H +12 145 100% +Lite-ON - XJ-HD166S +12 720 100% +Lite-ON - DVD-ROM LTD-166S +12 41 100% +LITE-ON - BD O DH4O1S +6 19 100% +LITE-ON - BD B LH-2B1S +618 21 100% +LITE-ON - CD N LH52N1P +6 11 100% +LITE-ON - CD R LH52R1P +6 19 100% +LITE-ON - CD-ROM LTN-487T +12 15 100% +LITE-ON - CD-ROM LTN-4891S +6 29 100% +LITE-ON - CD-ROM LTN-489S +12 62 100% +LITE-ON - CD-ROM LTN-527T +12 12 100% +LITE-ON - CD-ROM LTN-5291S +6 13 100% +LITE-ON - CD-ROM LTN-529S +12 18 100% +LITE-ON - CD-ROM LTN-529SV +12 1 100% +LITE-ON - CD-ROM LTN-52S1S +6 24 100% +LITE-ON - CD-RW SOHR-4838S +6 2 100% +LITE-ON - CD-RW SOHR-4839S +6 8 100% +LITE-ON - CD-RW SOHR-4839V +6 1 100% +LITE-ON - CD-RW SOHR-5238S +6 244 100% +LITE-ON - CD-RW SOHR-5239S +6 63 100% +LITE-ON - CD-RW SOHR-5239V +6 136 100% +LITE-ON - COMBO LTC-48161H +6 201 100% +LITE-ON - COMBO SHC-48S7K +6 9 100% +LITE-ON - COMBO SHC-52S7K +6 8 100% +LITE-ON - COMBO SOHC-4832K +6 65 100% +LITE-ON - COMBO SOHC-4836K +6 67 100% +LITE-ON - COMBO SOHC-4836V +6 17 100% +LITE-ON - COMBO SOHC-5232K +6 158 100% +LITE-ON - COMBO SOHC-5235K +6 40 100% +LITE-ON - COMBO SOHC-5236K +6 31 100% +LITE-ON - COMBO SOHC-5236V +6 89 100% +lite-on - DDU605U +667 1 100% +LITE-ON - DVD A DH20A4H +6 2 100% +LITE-ON - DVD C LH52C1P +6 21 100% +LITE-ON - DVD D LH-16D1P +6 61 100% +LITE-ON - DVD SHD-16P1S +6 174 100% +LITE-ON - DVD SHD-16S1S +6 58 100% +LITE-ON - DVD SOHD-167T +12 318 100% +LITE-ON - DVD SOHD-16P1S +6 2 100% +LITE-ON - DVD SOHD-16P9S +6 273 100% +LITE-ON - DVD SOHD-16P9SV +6 100 100% +LITE-ON - DVD+RW LDW-401S +12 43 100% +LITE-ON - DVD+RW SOHW-802S +12 17 100% +LITE-ON - DVD+RW SOHW-822S +12 3 66% +LITE-ON - DVDRW DDW-813S +12 1 100% +LITE-ON - DVDRW LDW-400D +120 2 100% +LITE-ON - DVDRW LDW-411S +12 105 100% +LITE-ON - DVDRW LDW-451S +12 96 100% +LITE-ON - DVDRW LDW-811S +12 116 100% +LITE-ON - DVDRW LDW-851S +12 102 100% +LITE-ON - DVDRW LH-16A1S +6 9 100% +LITE-ON - DVDRW LH-16W1P +6 18 100% +LITE-ON - DVDRW LH-18A1H +6 96 100% +LITE-ON - DVDRW LH-18A1P +6 211 100% +LITE-ON - DVDRW LH-20A1H +6 704 100% +LITE-ON - DVDRW LH-20A1L +6 763 100% +LITE-ON - DVDRW LH-20A1P +6 605 100% +LITE-ON - DVDRW LH-20A1S +6 898 100% +LITE-ON - DVDRW SH-16A7S +6 100 100% +LITE-ON - DVDRW SHM-165H6S +6 351 100% +LITE-ON - DVDRW SHM-165P6S +6 406 100% +LITE-ON - DVDRW SHM-165S6S +6 12 100% +LITE-ON - DVDRW SHW-160H6S +6 44 100% +LITE-ON - DVDRW SHW-160P6S +6 439 100% +LITE-ON - DVDRW SHW-1635S +6 232 100% +LITE-ON - DVDRW SHW-16H5S +6 166 100% +LITE-ON - DVDRW SOHW-1213S +12 65 100% +LITE-ON - DVDRW SOHW-1613S +12 5 100% +LITE-ON - DVDRW SOHW-1633S +12 364 100% +LITE-ON - DVDRW SOHW-1653S +12 188 100% +LITE-ON - DVDRW SOHW-1673S +12 309 100% +LITE-ON - DVDRW SOHW-1693S +12 463 100% +LITE-ON - DVDRW SOHW-812S +12 138 100% +LITE-ON - DVDRW SOHW-832S +12 327 100% +Lite-On - LTN483S 48x Max -1164 25 100% +Lite-On - LTN486 48x Max +600 26 100% +Lite-On - LTN486S 48x Max +600 128 100% +LITE-ON - LTR-0841 +688 6 100% +LITE-ON - LTR-12101B +688 42 100% +LITE-ON - LTR-12102B +12 4 100% +LITE-ON - LTR-12102C +12 7 100% +LITE-ON - LTR-16101B +690 15 100% +LITE-ON - LTR-16102B +12 69 100% +LITE-ON - LTR-24102B +12 165 100% +LITE-ON - LTR-24102M +12 40 100% +LITE-ON - LTR-24103S +12 13 100% +LITE-ON - LTR-32123S +12 117 100% +LITE-ON - LTR-32125W +12 6 100% +LITE-ON - LTR-40125S +12 240 100% +LITE-ON - LTR-40125W +12 30 100% +LITE-ON - LTR-48125S +12 68 100% +LITE-ON - LTR-48125W +12 107 100% +LITE-ON - LTR-48126S +6 10 100% +LITE-ON - LTR-48246K +6 38 100% +LITE-ON - LTR-48246S +6 245 100% +LITE-ON - LTR-48247S +6 11 100% +LITE-ON - LTR-48327S +6 31 100% +LITE-ON - LTR-52246S +6 412 100% +LITE-ON - LTR-52327S +6 611 100% +LITE-ON - LXR-24101A +12 1 100% +LITE-ON - LXR-40122 +12 10 100% +LITE-ON - LXR-40243 +6 7 100% +LITE-ON - SOHW-1673SU +6 9 100% +LITEON - CD-ROM LTN323 -1164 3 100% +LITEON - CD-ROM LTN403 -1164 10 100% +LITEON - CD-ROM LTN403L -1164 13 100% +LITEON - CD-ROM LTN483 -1164 3 100% +LITEON - CD-ROM LTN483L -1164 7 100% +LITEON - CD-ROM LTN485S -1164 16 100% +LITEON - CD-ROM LTN486S +600 49 100% +LITEON - CD-ROM LTN525 -1164 3 100% +LITEON - CD-ROM LTN526 +600 36 100% +LITEON - CD-ROM LTN526D +600 42 100% +LITEON - CD-ROM LTN526S +600 25 100% +LITEON - DVD-ROM LTD-165H +12 29 100% +LITEON - DVD-ROM LTD-165P +12 2 100% +LITEON - DVD-ROM LTD122 +594 53 100% +LITEON - DVD-ROM LTD163 +594 397 100% +LITEON - DVD-ROM LTD163D +594 89 100% +Logitec - LDR-PS8WU2BKW +6 3 100% +Logitec - LDR +6 9 88% +Logitec - LDV-P8U2L +6 25 100% +MAD DOG - 56X CDROM +691 1 100% +MAD DOG - CDDVDW TS-H653B +6 1 100% +MAD DOG - LS-DVDRW TSH652M +6 12 100% +MAD DOG - MD-16X2DVD9-8X +48 4 100% +MAD DOG - MD-16X3DVD9-8X +48 35 100% +MAD DOG - MD-16X3DVD9-8XB +48 4 100% +MAD DOG - MD-16XDVD9 +48 42 100% +MAD DOG - MD-16XDVD9A2 +48 41 100% +MAD DOG - MD-16XDVD9A4 +48 26 100% +MAD DOG - TF-DVDRW TSH652D +6 25 100% +MAD DOG - TF-DVDRW TSH652G +6 1 100% +MAD DOG - TF-DVDRW TSH652N +6 8 100% +Maxell - MCD-RW84-32 +688 1 100% +Memorex - 16X DVD-ROM AJiA +12 4 100% +Memorex - 16X-DDL-ILO +6 8 100% +Memorex - 16X-DDL-IN +48 39 100% +Memorex - 24MAXX 1040 +12 3 100% +Memorex - 32MAXX 1240AJ +12 3 100% +Memorex - 32MAXX 1240AK +12 1 100% +Memorex - 40EMAX 1240AJ +12 1 100% +Memorex - 40EMAX 2440AJ +6 2 100% +Memorex - 40MAXX 1248AJ +12 9 100% +Memorex - 48MAX 244816AJ +6 8 100% +Memorex - 48MAXX 2448AJ +6 5 100% +Memorex - 52MAX 325216AJ +6 12 100% +Memorex - 52MAX 325216AJv2 +6 12 100% +Memorex - 52MAXX 2452AJ +6 38 100% +Memorex - 52MAXX 3252AJ1 +6 25 100% +Memorex - 52MAXX 3252AJ1v2 +6 35 100% +Memorex - 52MAXX 3252AJ +6 14 100% +Memorex - 52X CD-ROM AJiA +600 1 100% +Memorex - 52X CDROM AJiAv2 +12 2 100% +Memorex - BD Combo 700L v1 +6 1 100% +Memorex - BDBurner 800L v1 +6 2 100% +MEMOREX - CD-MAXX52 +12 2 100% +Memorex - CD-ROM 52X v2 +6 4 100% +Memorex - CD-RW 310L v1 +6 1 100% +Memorex - CDRW-4420 +685 2 100% +Memorex - DVD+--DLRWL1 F16 +12 26 100% +Memorex - DVD+--DLRWN16 D2 +48 4 100% +Memorex - DVD+--RW Dual-X1 +48 22 100% +Memorex - DVD+--RW True-8X +48 14 100% +Memorex - DVD+--RW True8XI +12 8 100% +Memorex - DVD+--RW True8Xn +48 2 100% +Memorex - DVD+-RAM 510L v1 +6 44 100% +Memorex - DVD+-RAM 525G v1 +102 33 100% +Memorex - DVD+-RAM 530L v1 +6 118 100% +Memorex - DVD+-RAM 550L v1 +6 41 100% +Memorex - DVD+-RAM 550L v2 +48 1 100% +Memorex - DVD+R-RW 2.4x8AA +120 13 100% +Memorex - DVD-MAXX 1648 AJ +594 18 100% +MEMOREX - DVD-MAXX1240 +594 1 100% +Memorex - DVD-ROM 210L v1 +6 4 100% +Memorex - DVD-ROM 16X v2 +6 10 100% +Memorex - DVD16+--DL4RWlD2 +12 67 100% +Memorex - DVD16+--DL4RWnD2 +48 8 100% +Memorex - DVDUR-RW 8412AJ +12 1 100% +Memorex - MRX 800LU v1 +6 1 100% +Memorex - MRX-550L v8 +6 1 100% +Memorex - MRX-600LE v1 +6 1 100% +Memorex - MRX-650LE v1 +6 5 100% +Memorex - MRX-650LE v3 +6 2 100% +Memorex - MRX-650LE v4 +6 6 100% +Memorex - MRX-650LE v5 +6 3 100% +Memorex - MRX-650LE v7 +6 10 100% +Memorex - MRX-800LU v2 +6 8 100% +Memorex - SixteenMAXX 1040 +690 1 100% +Memorex - Twelve MAXX 1032 +688 3 100% +Memup - DRW1108IM +12 1 100% +Memup - DVD-ROM BDV316C +12 3 100% +MEMUP - IDE1008 +12 1 100% +Microtek - DVD-ROM DRL-160 +594 1 100% +MIDA - 40XB -1164 4 100% +MITSUMI - CD-ROM FX48++M +12 6 100% +MITSUMI - CD-ROM FX48++W +694 13 100% +MITSUMI - CD-ROM FX4820T!B +680 8 100% +MITSUMI - CD-ROM FX4821T!A +680 1 100% +MITSUMI - CD-ROM FX4824T!B +694 3 100% +MITSUMI - CD-ROM FX4830T!B +694 18 100% +MITSUMI - CD-ROM FX4831T!A +694 8 100% +MITSUMI - CD-ROM FX54++M +12 13 100% +MITSUMI - CD-ROM FX54++W +694 10 100% +MITSUMI - CD-ROM SR243T +694 4 100% +MITSUMI - CD-ROM SR244W1 +694 1 100% +MITSUMI - CD-ROM SR244W +694 6 100% +MITSUMI - CR-4804TE +686 50 100% +MITSUMI - CR-486ETE +6 15 100% +MITSUMI - CR-487ETE +6 14 100% +MITSUMI - CR-48X5TE +674 9 88% +MITSUMI - CR-48X8TE +733 10 100% +MITSUMI - CR-48X9TE +733 21 100% +MITSUMI - CR-48XATE +733 46 100% +MITSUMI - CR-48XCTE +733 15 100% +MITSUMI - CR-48XETE +12 18 100% +MITSUMI - CR-48XFTE +733 3 100% +MITSUMI - CR-48XGTE +733 10 100% +MITSUMI - DR-6800TE +6 5 80% +MITSUMI - DW-7801TE +48 2 100% +MITSUMI - DW-7802TE +48 1 100% +MITSUMI - DW-7872TE +12 1 100% +MOSER - BAER DH-20A3S +6 2 100% +MOSER - BAER DH-20A4P +6 1 100% +MOSER - BAER DH-22A8P +6 2 100% +MOSER - BAER DH-22A8S +6 2 100% +MSI - CD-RW 52X32X52X +738 4 100% +MSI - CD-RW CR52 +6 56 100% +MSI - CD-RW MS-8332 +733 1 100% +MSI - CD-RW MS-8340S +688 1 100% +MSI - CD-RW MS-8348 +733 11 100% +MSI - DSE-8AS +6 2 100% +MSI - DVD-ROM 16X +738 12 100% +msi - DVD-RW DH24AS +6 3 100% +MSI - WIND DRIVE UO882 +6 2 100% +MSI - Wind Drive +6 7 100% +Nakamich - Dragon 05 +30 1 100% +NEC - CD-ROM DRIVE;282 +680 17 100% +NEC - CD-ROM DRIVE;28C +974 3 100% +NEC - CD-ROM DRIVE;28D +974 2 100% +NEC - CD-ROM DRIVE;28G +680 3 100% +NEC - CD-ROM DRIVE;291 +680 2 100% +NEC - CD-ROM DRIVE;465 +92 6 100% +NEC - CD-ROM DRIVE;466 +680 5 100% +NEC - CB-2100A +48 1 100% +NEC - CD-ROM CD-3002A +600 18 100% +NEC - CD-ROM CD-3002C +6 8 100% +NEC - CD-RW NR-9100A +685 81 100% +NEC - CD-RW NR-9200A +685 17 100% +NEC - CD-RW NR-9300A +685 59 100% +NEC - CD-RW NR-9400A +145 18 100% +NEC - CD-RW NR-9500A +145 8 100% +NEC - CD-RW NR-9500B +145 12 100% +NEC - CDRW-DVD CB1100A +6 8 100% +NEC - CDRW-DVD CB1100B +6 9 100% +NEC - DV-5500A +116 8 100% +NEC - DV-5700A +116 57 100% +NEC - DV-5700B +116 18 100% +NEC - DV-5800A +116 93 100% +NEC - DV-5800C +12 60 100% +NEC - DV-5800E +6 35 100% +NEC - DVD+-RW ND-2510A +48 35 100% +NEC - DVD+-RW ND-3450A +48 132 100% +NEC - DVD+-RW ND-3530A +48 244 100% +NEC - DVD+-RW ND-3650A +48 82 100% +NEC - DVD+-RW ND-6450A +48 8 100% +NEC - DVD+-RW ND-6500A +48 419 100% +NEC - DVD+-RW ND-6650A +48 659 100% +NEC - DVD+RW ND-1000A +48 17 100% +NEC - DVD+RW ND-1100A +48 336 100% +NEC - DVD+RW ND-2100AD +48 134 100% +NEC - DVD+RW ND-3100AD +48 22 100% +NEC - DVD+RW ND-5100A +48 49 100% +NEC - DVD+RW ND-6100A +48 58 100% +NEC - DVD-ROM DV-5700A +116 2 100% +NEC - DVD_RW ND-1300A +48 571 100% +NEC - DVD_RW ND-2500A +48 696 100% +NEC - DVD_RW ND-2510A +48 688 100% +NEC - DVD_RW ND-3500AG +48 1524 100% +NEC - DVD_RW ND-3520A +48 830 100% +NEC - DVD_RW ND-3520AW +48 872 100% +NEC - DVD_RW ND-3530A +48 79 100% +NEC - DVD_RW ND-3540A +48 1456 100% +NEC - DVD_RW ND-3550A +48 1374 100% +NEC - DVD_RW ND-3551A +48 67 100% +NEC - DVD_RW ND-3570A +48 62 100% +NEC - DVD_RW ND-4550A +48 627 100% +NEC - DVD_RW ND-4551A +48 382 100% +NEC - DVD_RW ND-4570A +48 289 100% +NEC - DVD_RW ND-4571A +48 392 100% +NEC - DVD_RW ND-5500A +48 3 100% +NEC - DVD_RW ND-6750A +48 70 100% +NEC - DVD_RW ND-7550A +48 40 100% +NEC - DVD_RW ND-7551A +48 17 100% +NEC - DVD_RW ND-7551B +48 1 100% +NEC - DVD_RW ND-XXX 0 1 100% +NEC - NR-7500A +685 11 100% +NEC - NR-7700A +685 37 100% +NEC - NR-7800A +685 52 100% +NEC - NR-7800B +685 14 100% +NEC - NR-7900A +685 103 100% +NU - CDRW-DVD DBW-521 +6 4 100% +NU - DVDRW DDW-081 +1292 10 100% +NU - DVDRW DDW-082 +1292 34 100% +NU - DVDRW SDW-042 +1292 1 100% +OEM - CD-ROM 48SSB +12 2 100% +OEM - CD-ROM CMD5211 +691 1 100% +OEM - CD-ROM F522B +12 1 100% +OEM - CD-ROM F522E +12 8 100% +OEM - CD-ROM F563E +12 9 100% +OEM - CD-ROM F564E +12 15 100% +OEM - CD-ROM F566E +691 2 100% +OIPD42T - OPC-K101-ST1 +30 1 100% +OLYMPUS - S-DVD-100 +48 3 100% +Opriarc - DVD RW AD-7173A +48 1 100% +Optiarc - BD DRV BC-5600S +48 25 100% +Optiarc - BD ROM BC-5100S +667 22 100% +Optiarc - BD ROM BC-5500A +48 226 100% +Optiarc - BD ROM BC-5500H +48 97 100% +Optiarc - BD ROM BC-5500S4 +48 86 100% +Optiarc - BD ROM BC-5500S +48 523 100% +Optiarc - BD ROM BC-5530H +48 6 100% +Optiarc - BD ROM BC-5540H +48 13 100% +Optiarc - BD ROM BC-5550H +48 34 100% +Optiarc - BD ROM BC-5600S +48 44 100% +Optiarc - BD ROM BC-5640H +48 27 100% +Optiarc - BD ROM BC-5650H +48 7 100% +Optiarc - BD RW BD-5300S +6 195 100% +Optiarc - BD RW BD-5730S6 +48 28 100% +Optiarc - BD RW BD-5730S +48 58 100% +Optiarc - BD RW BD-5740H +48 19 100% +Optiarc - BD RW BD-5740L +48 17 100% +Optiarc - BD RW BD-5750H +48 85 100% +Optiarc - BD RW BD-5750L +48 12 100% +Optiarc - BD RW BD-5840H +48 18 100% +Optiarc - BD RW BD-5850H +48 42 100% +Optiarc - BD-ROM BR-5100S +79 58 100% +Optiarc - BDRW BD-M100A +102 1 100% +Optiarc - CD-RW CRX870A +6 1 100% +Optiarc - CD-RW CRX880A +6 43 100% +Optiarc - CDRWDVD CRX890A +6 14 100% +Optiarc - CDRWDVD CRX890S +6 6 100% +Optiarc - DVD ROM DDU7700H +48 4 100% +Optiarc - DVD ROM DDU7710H +48 1 100% +Optiarc - DVD ROM DDU7740H +48 3 100% +Optiarc - DVD ROM DDU7930H +48 1 100% +Optiarc - DVD RW AD-5170A +48 589 100% +Optiarc - DVD RW AD-5170S +48 4 100% +Optiarc - DVD RW AD-5200A +48 315 100% +Optiarc - DVD RW AD-5200S +48 114 100% +Optiarc - DVD RW AD-5240S +48 366 100% +Optiarc - DVD RW AD-5260S +48 356 100% +Optiarc - DVD RW AD-5280S +48 229 100% +Optiarc - DVD RW AD-5530A +6 17 100% +Optiarc - DVD RW AD-5540A +48 91 100% +Optiarc - DVD RW AD-5540B +48 3 100% +Optiarc - DVD RW AD-5590A +48 12 100% +OPTIARC - DVD RW AD-5630A +48 97 100% +OPTIARC - DVD RW AD-5670S +48 59 100% +OPTIARC - DVD RW AD-5670SC +48 4 100% +OPTIARC - DVD RW AD-5680H +48 149 100% +OPTIARC - DVD RW AD-5690H +48 42 100% +OPTIARC - DVD RW AD-5960S +48 9 100% +OPTIARC - DVD RW AD-5970H +48 24 100% +Optiarc - DVD RW AD-7170A +48 710 100% +Optiarc - DVD RW AD-7170S +48 596 100% +Optiarc - DVD RW AD-7173A +48 970 100% +Optiarc - DVD RW AD-7173S +48 425 100% +Optiarc - DVD RW AD-7190A +6 115 100% +Optiarc - DVD RW AD-7190S +6 45 100% +Optiarc - DVD RW AD-7191A +6 94 100% +Optiarc - DVD RW AD-7191S +6 253 100% +Optiarc - DVD RW AD-7200A +48 528 100% +Optiarc - DVD RW AD-7200S +48 941 100% +Optiarc - DVD RW AD-7201A +48 77 100% +Optiarc - DVD RW AD-7201S5 +48 55 100% +Optiarc - DVD RW AD-7201S6 +48 24 100% +Optiarc - DVD RW AD-7201S +48 246 100% +Optiarc - DVD RW AD-7203A +48 295 100% +Optiarc - DVD RW AD-7203S +48 653 100% +Optiarc - DVD RW AD-7220A +6 23 100% +Optiarc - DVD RW AD-7220S +6 53 100% +Optiarc - DVD RW AD-7221A +6 5 100% +Optiarc - DVD RW AD-7221S +6 5 100% +Optiarc - DVD RW AD-7230S +48 54 100% +Optiarc - DVD RW AD-7231S5 +48 18 100% +Optiarc - DVD RW AD-7233S +48 20 100% +Optiarc - DVD RW AD-7240S +48 1450 100% +Optiarc - DVD RW AD-7241S +48 530 100% +Optiarc - DVD RW AD-7243S +48 189 100% +Optiarc - DVD RW AD-7250H +48 60 100% +Optiarc - DVD RW AD-7260S +48 829 100% +Optiarc - DVD RW AD-7261S +48 266 100% +Optiarc - DVD RW AD-7263S +48 121 100% +Optiarc - DVD RW AD-7270H +48 10 100% +Optiarc - DVD RW AD-7280S +48 562 100% +Optiarc - DVD RW AD-7283S +48 50 100% +Optiarc - DVD RW AD-7290H +48 35 100% +Optiarc - DVD RW AD-7530A +6 171 100% +Optiarc - DVD RW AD-7530B +6 202 100% +Optiarc - DVD RW AD-7540A +48 304 100% +Optiarc - DVD RW AD-7543A +48 88 100% +Optiarc - DVD RW AD-7543B +48 10 100% +Optiarc - DVD RW AD-7543C +48 10 100% +Optiarc - DVD RW AD-7560A +6 337 100% +Optiarc - DVD RW AD-7560S +6 277 100% +Optiarc - DVD RW AD-7561A +6 141 100% +Optiarc - DVD RW AD-7561S +6 344 100% +Optiarc - DVD RW AD-7563A +6 58 100% +Optiarc - DVD RW AD-7580A +6 34 100% +Optiarc - DVD RW AD-7580S +6 363 100% +Optiarc - DVD RW AD-7581A +6 25 100% +Optiarc - DVD RW AD-7581S +6 58 100% +Optiarc - DVD RW AD-7583S +6 24 100% +Optiarc - DVD RW AD-7585H +6 249 100% +Optiarc - DVD RW AD-7590A +48 96 100% +Optiarc - DVD RW AD-7590B +48 13 100% +Optiarc - DVD RW AD-7590S +48 112 100% +Optiarc - DVD RW AD-7590T +48 6 100% +Optiarc - DVD RW AD-7591S +48 17 100% +Optiarc - DVD RW AD-7593A +48 38 100% +Optiarc - DVD RW AD-7593B +48 3 100% +Optiarc - DVD RW AD-7630A +48 33 100% +Optiarc - DVD RW AD-7633A +48 24 100% +Optiarc - DVD RW AD-7640A +6 24 100% +Optiarc - DVD RW AD-7640S +6 37 100% +Optiarc - DVD RW AD-7643S +6 8 100% +Optiarc - DVD RW AD-7670S +48 16 100% +Optiarc - DVD RW AD-7690H +48 33 100% +Optiarc - DVD RW AD-7700H +48 173 100% +Optiarc - DVD RW AD-7700S +48 184 100% +Optiarc - DVD RW AD-7700T +48 30 100% +Optiarc - DVD RW AD-7703S +48 12 100% +Optiarc - DVD RW AD-7710H +48 247 100% +Optiarc - DVD RW AD-7710I +48 10 100% +Optiarc - DVD RW AD-7713H +48 4 100% +Optiarc - DVD RW AD-7717H +48 20 100% +Optiarc - DVD RW AD-7730U +6 1 100% +Optiarc - DVD RW AD-7740H +48 138 100% +Optiarc - DVD RW AD-7740I +48 8 100% +Optiarc - DVD RW AD-7760H +48 33 100% +Optiarc - DVD RW AD-7760I +48 1 100% +Optiarc - DVD RW AD-7800H +48 13 100% +Optiarc - DVD RW AD-7803H +48 5 100% +Optiarc - DVD RW AD-7910A +48 155 100% +Optiarc - DVD RW AD-7910S +48 173 100% +Optiarc - DVD RW AD-7913A +48 3 100% +Optiarc - DVD RW AD-7930H +48 162 100% +Optiarc - DVD RW AD-7930V +48 6 66% +Optiarc - DVD RW AD-7940H +48 20 100% +Optiarc - DVD RW AD-7980H +48 2 100% +Optiarc - DVD+-RW AD-5170S +48 143 100% +Optiarc - DVD+-RW AD-5540A +48 267 100% +Optiarc - DVD+-RW AD-5560A +6 198 100% +Optiarc - DVD+-RW AD-7200S +48 312 100% +Optiarc - DVD+-RW AD-7230S +48 85 100% +Optiarc - DVD+-RW AD-7250H +48 38 100% +Optiarc - DVD+-RW AD-7270H +48 9 100% +Optiarc - DVD+-RW AD-7560S +6 34 100% +Optiarc - DVD+-RW AD-7580A +6 26 100% +Optiarc - DVD+-RW AD-7580S +6 57 100% +Optiarc - DVD+-RW AD-7585H +6 34 100% +Optiarc - DVD+-RW AD-7640A +6 175 100% +Optiarc - DVD+-RW AD-7640S +6 172 100% +Optiarc - DVD+-RW AD-7700H +48 39 100% +Optiarc - DVD+-RW AD-7717H +48 63 100% +Optiarc - DVD+-RW AD-7747H +48 9 100% +Optiarc - DVD+-RW AD-7760H +48 2 100% +Optiarc - DVD+-RW AD-7930H +48 31 100% +Optiarc - DVD+-RW ND-3570A +48 78 100% +Optiarc - DVD-ROM DDU1671S +6 86 100% +Optiarc - DVD-ROM DDU1675A +6 8 100% +Optiarc - DVD-ROM DDU1675S +6 23 100% +OPTIARC - DVD-ROM DDU1678A +6 22 100% +OPTIARC - DVD-ROM DDU1681S +6 106 100% +Optiarc - DVD-ROM DDU820A +6 1 100% +Optiarc - DVD-ROM DDU820S +6 1 100% +Optiarc - DVD-RW AD-7173A +48 1 100% +Optiarc - DVDRWBD BC-5540H +48 53 100% +Optiarc - DVDRWBD BC-5550H +48 2 100% +Optiarc - DVDRWBD BC-5600S +48 72 100% +OPTORITE - CD-RW CW4802 +733 8 100% +OPTORITE - CD-RW CW5201 +688 10 100% +OPTORITE - CD-RW CW5202 +688 1 100% +OPTORITE - CD-RW CW5205 +688 12 100% +OPTORITE - CD-RW CW5207 +733 5 100% +OPTORITE - COMBO DC4801 +738 1 100% +OPTORITE - DVD RW DD0201 +689 6 100% +OPTORITE - DVD RW DD0203 +688 9 100% +OPTORITE - DVD RW DD0401 +689 5 100% +OPTORITE - DVD RW DD0405 +689 31 100% +OPTORITE - DVD RW DD1203 +691 3 100% +OPTORITE - DVD RW DD1205 +691 5 100% +OPTORITE - DVD RW DD1603 +691 1 100% +OTUL - 0H6RCLQ7G5MJ +6 2 100% +Panasonic - BD-CMB UJ-110 +102 11 100% +Panasonic - BD-CMB UJ-120 +102 163 100% +Panasonic - BD-CMB UJ130A +102 7 100% +Panasonic - BD-CMB UJ130AS +102 42 100% +Panasonic - BD-CMB UJ140AS +103 9 100% +Panasonic - BD-CMB UJ141AF +103 88 100% +Panasonic - BD-CMB UJ141AJ +103 6 100% +Panasonic - BD-CMB UJ141AL +103 39 100% +Panasonic - BD-CMB UJ141AS +103 83 100% +Panasonic - BD-CMB UJ141EF +103 19 100% +Panasonic - BD-CMB UJ141EL +103 30 100% +Panasonic - BD-CMB UJ141ES +103 22 100% +Panasonic - BD-CMB UJ152 +103 15 100% +Panasonic - BD-CMB UJ160 +103 118 100% +Panasonic - BD-CMB UJ160B +103 11 100% +Panasonic - BD-CMB UJ162 +103 14 100% +Panasonic - BD-CMB UJ162ABW +103 6 100% +Panasonic - BD-CMB UJ165 +103 3 100% +Panasonic - BD-CMB UJ167 +103 4 100% +Panasonic - BD-CMB UJ167AM +103 3 100% +Panasonic - BD-CMB UJ172 S +103 16 100% +Panasonic - BD-CMB UJ172 +103 3 100% +Panasonic - BD-CMB UJ242AS +103 14 100% +Panasonic - BD-CMB UJ265 +103 1 100% +Panasonic - BD-MLT LF-MB121 +102 3 100% +Panasonic - BD-MLT LF-PB271 +102 7 100% +Panasonic - BD-MLT LF-PB371 +102 12 100% +Panasonic - BD-MLT SW-4583 +102 12 100% +Panasonic - BD-MLT SW-5582 +102 11 100% +Panasonic - BD-MLT SW-5583 +102 35 100% +Panasonic - BD-MLT SW-5584 +102 66 100% +Panasonic - BD-MLT UJ-210S +102 54 100% +Panasonic - BD-MLT UJ-215S +102 4 100% +Panasonic - BD-MLT UJ-220 +102 1 100% +Panasonic - BD-MLT UJ-220S +102 141 100% +Panasonic - BD-MLT UJ-220V +102 10 100% +Panasonic - BD-MLT UJ-225S +102 17 100% +Panasonic - BD-MLT UJ230AS +102 138 100% +Panasonic - BD-MLT UJ232A +102 2 100% +Panasonic - BD-MLT UJ232AS +102 29 100% +Panasonic - BD-MLT UJ235AS +102 8 100% +Panasonic - BD-MLT UJ240 +103 3 100% +Panasonic - BD-MLT UJ240AF +103 139 100% +Panasonic - BD-MLT UJ240AFW +103 43 100% +Panasonic - BD-MLT UJ240AS +103 287 100% +Panasonic - BD-MLT UJ240EF +103 15 100% +Panasonic - BD-MLT UJ240ES +103 129 100% +Panasonic - BD-MLT UJ242 +103 3 100% +Panasonic - BD-MLT UJ242AS +103 30 100% +Panasonic - BD-MLT UJ252 +103 6 100% +Panasonic - BD-MLT UJ252E +103 1 100% +Panasonic - BD-MLT UJ260 +103 111 100% +Panasonic - BD-MLT UJ260AF +103 205 100% +Panasonic - BD-MLT UJ260B +103 11 100% +Panasonic - BD-MLT UJ260E +103 9 100% +Panasonic - BD-MLT UJ260F +103 15 100% +Panasonic - BD-MLT UJ262 +103 38 100% +Panasonic - BD-MLT UJ262ABW +103 4 100% +Panasonic - BD-MLT UJ265 +103 76 100% +Panasonic - BD-MLT UJ267 +103 11 100% +Panasonic - BD-MLT UJ267AM +103 12 100% +Panasonic - BD-MLT UJ272 S +103 8 100% +Panasonic - BD-MLT UJ272 +103 73 100% +Panasonic - BD-MLT UJ272Q +103 6 100% +Panasonic - BD-MLT UJ273 +103 14 100% +Panasonic - BD-MLT UJDE267 +103 2 100% +Panasonic - BD-RE UJ-210 +102 2 100% +Panasonic - BD-RE UJ-220 +102 21 100% +Panasonic - BD-RE UJ-225S +102 55 100% +Panasonic - BD-RE UJ232A +102 14 100% +Panasonic - BD-RE UJ235A +102 43 100% +Panasonic - BD-RE UJ240 +103 7 100% +Panasonic - BD-RE UJ240AF +103 27 100% +Panasonic - BD-RE UJ242 +103 12 100% +Panasonic - BD-RE UJ252 +103 8 100% +Panasonic - BD-RE UJ260 +103 3 100% +Panasonic - BD-RE UJ260AF +103 1 100% +Panasonic - BD-RE UJ262 +103 3 100% +Panasonic - BD-RE UJ272 +103 2 100% +Panasonic - CD-R CW-7502 +122 3 100% +Panasonic - CD-R CW-7503 +103 1 100% +Panasonic - CD-ROM CR-175 +102 3 100% +Panasonic - CD-ROM CR-176 +99 1 100% +Panasonic - CD-ROM CR-177 +99 18 100% +Panasonic - CD-ROM CR-584 +122 5 100% +Panasonic - CD-ROM CR-585 +103 18 100% +Panasonic - CD-ROM CR-587 +103 5 100% +Panasonic - CD-ROM CR-588 +103 12 100% +Panasonic - CD-ROM CR-589 +103 2 100% +Panasonic - CD-ROM CR-594 +99 9 100% +Panasonic - CD-RW CW-8571 +103 3 100% +Panasonic - CD-RW CW-7585 +99 1 100% +Panasonic - CD-RW CW-7586 +86 10 100% +Panasonic - CD-RW CW-8121 +103 7 100% +Panasonic - CD-RW CW-8123 +102 14 100% +Panasonic - CD-RW CW-8124 +102 60 100% +Panasonic - CD-RW CW-8221 +102 46 100% +Panasonic - CD-RW CW-8572 +103 7 100% +Panasonic - CDRRW05 +687 1 100% +Panasonic - CDRW-DVD UJDA740 +102 24 100% +Panasonic - CDRW-DVD UJDA760 +102 4 100% +Panasonic - DVD RAM UJ862A +102 4 100% +Panasonic - DVD+-RW SW820 +6 18 100% +Panasonic - DVD+-RW SW830 +6 21 100% +Panasonic - DVD+-RW UJ-857G +102 180 100% +Panasonic - DVD+-RW UJ-867S +102 44 100% +Panasonic - DVD+-RW UJ-875S +102 99 100% +Panasonic - DVD+-RW UJ862A +102 72 100% +Panasonic - DVD+-RW UJ890 +102 10 100% +Panasonic - DVD+-RW UJ892 +102 70 100% +Panasonic - DVD+-RW UJ8A2 +102 68 100% +Panasonic - DVD+-RW UJ8A7 +102 35 100% +Panasonic - DVD+-RW UJ8B1 +6 31 100% +Panasonic - DVD+-RW UJ8B2 +102 34 100% +Panasonic - DVD+-RW UJ8C1 +6 23 100% +Panasonic - DVD+-RW UJ8C2 +103 37 100% +Panasonic - DVD+-RW UJ8C7 +103 3 100% +Panasonic - DVD+-RW UJ8D1 +6 31 100% +Panasonic - DVD+-RW UJ8DB +6 5 100% +Panasonic - DVD+-RW UJ8E1 +6 10 100% +Panasonic - DVD+-RW UJ8E2 +103 35 100% +Panasonic - DVD+-RW UJ8FB +6 17 100% +Panasonic - DVD-CDRW UJDA770 +102 38 100% +Panasonic - DVD-CDRW UJDA775 +102 156 100% +Panasonic - DVD-CDRW UJDA780 +102 7 100% +Panasonic - DVD-CDRW UJDA782 +102 4 100% +Panasonic - DVD-R UJ-825 +102 2 100% +Panasonic - DVD-R UJ-845F +102 1 100% +Panasonic - DVD-R UJ-846 +102 60 100% +Panasonic - DVD-R UJ-857 +102 57 100% +Panasonic - DVD-R UJ-857D +102 65 100% +Panasonic - DVD-R UJ-857E +102 129 100% +Panasonic - DVD-R UJ-85J +102 149 100% +Panasonic - DVD-R UJ-867 +102 45 100% +Panasonic - DVD-R UJ-868 +102 166 100% +Panasonic - DVD-R UJ-875 +102 67 100% +Panasonic - DVD-R UJ-898 +102 220 100% +Panasonic - DVD-R UJ-8A8 +102 121 100% +Panasonic - DVD-R UJ867A +102 3 100% +Panasonic - DVD-RAM LF-D200 +103 3 100% +Panasonic - DVD-RAM LF-D210 +103 2 100% +Panasonic - DVD-RAM LF-D310 +103 20 100% +Panasonic - DVD-RAM LF-D311 +103 9 100% +Panasonic - DVD-RAM LF-D521 +102 27 100% +Panasonic - DVD-RAM LF-M721 +102 8 100% +Panasonic - DVD-RAM LF-M760 +102 7 100% +Panasonic - DVD-RAM LF-M821 +102 5 100% +Panasonic - DVD-RAM LF-M860 +102 3 100% +Panasonic - DVD-RAM LF-P567 +102 4 100% +Panasonic - DVD-RAM LF-P667 +102 1 100% +Panasonic - DVD-RAM LF-P767 +102 2 100% +Panasonic - DVD-RAM LF-P867 +102 9 100% +Panasonic - DVD-RAM LF-P968 +102 21 100% +Panasonic - DVD-RAM SW-9571 +102 11 100% +Panasonic - DVD-RAM SW-9572 +102 17 100% +Panasonic - DVD-RAM SW-9573S +102 14 100% +Panasonic - DVD-RAM SW-9574S +102 54 100% +Panasonic - DVD-RAM SW-9576S +102 19 100% +Panasonic - DVD-RAM SW-9581 +102 15 100% +Panasonic - DVD-RAM SW-9581N +102 1 100% +Panasonic - DVD-RAM SW-9582 +102 1 100% +Panasonic - DVD-RAM SW-9583A +234 1 100% +Panasonic - DVD-RAM SW-9583S +102 11 100% +Panasonic - DVD-RAM SW-9584 +102 87 100% +Panasonic - DVD-RAM SW-9585 +102 39 100% +Panasonic - DVD-RAM SW-9585A +102 1 100% +Panasonic - DVD-RAM SW-9585S +102 30 100% +Panasonic - DVD-RAM SW-9586 +102 24 100% +Panasonic - DVD-RAM SW-9587A +102 12 100% +Panasonic - DVD-RAM SW-9587S +102 50 100% +Panasonic - DVD-RAM SW-9588 +102 12 100% +Panasonic - DVD-RAM SW-9590 +102 18 100% +Panasonic - DVD-RAM SW-9590A +102 3 100% +Panasonic - DVD-RAM SW810 +6 12 100% +Panasonic - DVD-RAM SW820 +6 7 100% +Panasonic - DVD-RAM SW830 +6 30 100% +Panasonic - DVD-RAM SW840 +6 8 100% +Panasonic - DVD-RAM UJ-810 +102 12 100% +Panasonic - DVD-RAM UJ-811 +102 52 100% +Panasonic - DVD-RAM UJ-812 +102 66 100% +Panasonic - DVD-RAM UJ-813 +102 8 100% +Panasonic - DVD-RAM UJ-815 +102 3 100% +Panasonic - DVD-RAM UJ-815A +102 21 100% +Panasonic - DVD-RAM UJ-820S +102 155 100% +Panasonic - DVD-RAM UJ-822S +102 188 100% +Panasonic - DVD-RAM UJ-822Sy +102 3 100% +Panasonic - DVD-RAM UJ-823S +102 8 100% +Panasonic - DVD-RAM UJ-825S +102 17 100% +Panasonic - DVD-RAM UJ-830S +102 84 100% +Panasonic - DVD-RAM UJ-830Sa +102 4 100% +Panasonic - DVD-RAM UJ-830Sx +102 36 100% +Panasonic - DVD-RAM UJ-830Sy +102 2 100% +Panasonic - DVD-RAM UJ-831S +102 140 100% +Panasonic - DVD-RAM UJ-831Sa +102 3 100% +Panasonic - DVD-RAM UJ-832 +102 9 100% +Panasonic - DVD-RAM UJ-832S +102 126 100% +Panasonic - DVD-RAM UJ-833S +102 18 100% +Panasonic - DVD-RAM UJ-835S +102 5 100% +Panasonic - DVD-RAM UJ-840S +102 191 100% +Panasonic - DVD-RAM UJ-841S +102 578 100% +Panasonic - DVD-RAM UJ-842 z +102 10 100% +Panasonic - DVD-RAM UJ-842 +102 259 100% +Panasonic - DVD-RAM UJ-842S +102 258 100% +Panasonic - DVD-RAM UJ-844 +102 64 100% +Panasonic - DVD-RAM UJ-844S +102 48 100% +Panasonic - DVD-RAM UJ-845A +102 1 100% +Panasonic - DVD-RAM UJ-845S +102 114 100% +Panasonic - DVD-RAM UJ-846S +102 40 100% +Panasonic - DVD-RAM UJ-850 z +102 47 100% +Panasonic - DVD-RAM UJ-850 +102 92 100% +Panasonic - DVD-RAM UJ-850S +102 939 100% +Panasonic - DVD-RAM UJ-850T +102 1 100% +Panasonic - DVD-RAM UJ-851S +102 93 100% +Panasonic - DVD-RAM UJ-852 +102 189 100% +Panasonic - DVD-RAM UJ-852S +102 283 100% +Panasonic - DVD-RAM UJ-85JA +102 5 100% +Panasonic - DVD-RAM UJ-85JS +102 145 100% +Panasonic - DVD-RAM UJ-860 +102 31 100% +Panasonic - DVD-RAM UJ-860H +102 51 100% +Panasonic - DVD-RAM UJ-860S +102 67 100% +Panasonic - DVD-RAM UJ-861H +102 132 100% +Panasonic - DVD-RAM UJ-861S +102 1 100% +Panasonic - DVD-RAM UJ-862 +102 130 100% +Panasonic - DVD-RAM UJ-875S +102 62 100% +Panasonic - DVD-RAM UJ862A +102 118 100% +Panasonic - DVD-RAM UJ862AC +102 48 100% +Panasonic - DVD-RAM UJ862AS +102 235 100% +Panasonic - DVD-RAM UJ862BJ +102 29 100% +Panasonic - DVD-RAM UJ862ES +102 3 100% +Panasonic - DVD-RAM UJ862PS +102 18 100% +Panasonic - DVD-RAM UJ867AS +102 2 100% +Panasonic - DVD-RAM UJ869AS +102 30 100% +Panasonic - DVD-RAM UJ869PS +102 3 100% +Panasonic - DVD-RAM UJ870A +102 59 100% +Panasonic - DVD-RAM UJ870BJ +102 151 100% +Panasonic - DVD-RAM UJ870PC +102 25 100% +Panasonic - DVD-RAM UJ870QJ +102 154 100% +Panasonic - DVD-RAM UJ875AS +102 37 100% +Panasonic - DVD-RAM UJ875AT +102 1 100% +Panasonic - DVD-RAM UJ880A +102 16 100% +Panasonic - DVD-RAM UJ880AS +102 167 100% +Panasonic - DVD-RAM UJ880ES +102 30 100% +Panasonic - DVD-RAM UJ890 +102 75 100% +Panasonic - DVD-RAM UJ890AS +102 384 100% +Panasonic - DVD-RAM UJ890ES +102 20 100% +Panasonic - DVD-RAM UJ892 +102 138 100% +Panasonic - DVD-RAM UJ892AS +102 196 100% +Panasonic - DVD-RAM UJ892ES +102 39 100% +Panasonic - DVD-RAM UJ8A0A +102 68 100% +Panasonic - DVD-RAM UJ8A0AS +102 168 100% +Panasonic - DVD-RAM UJ8A0ASW +102 77 100% +Panasonic - DVD-RAM UJ8A0AT +102 2 100% +Panasonic - DVD-RAM UJ8A2 +102 46 100% +Panasonic - DVD-RAM UJ8A2AS +102 147 100% +Panasonic - DVD-RAM UJ8A2ASW +102 22 100% +Panasonic - DVD-RAM UJ8A2ES +102 50 100% +Panasonic - DVD-RAM UJ8A7AS +102 123 100% +Panasonic - DVD-RAM UJ8B0 +102 223 100% +Panasonic - DVD-RAM UJ8B0AW +102 110 100% +Panasonic - DVD-RAM UJ8B1AS +6 60 100% +Panasonic - DVD-RAM UJ8B2 +102 65 100% +Panasonic - DVD-RAM UJ8B2E +102 7 100% +Panasonic - DVD-RAM UJ8B9 +102 7 100% +Panasonic - DVD-RAM UJ8C0 +103 163 100% +Panasonic - DVD-RAM UJ8C1 +6 18 100% +Panasonic - DVD-RAM UJ8C2 S +103 61 100% +Panasonic - DVD-RAM UJ8C2 +103 77 100% +Panasonic - DVD-RAM UJ8C2Q +103 23 100% +Panasonic - DVD-RAM UJ8C5 +6 17 100% +Panasonic - DVD-RAM UJ8C7 +103 4 100% +Panasonic - DVD-RAM UJ8D1 +6 85 100% +Panasonic - DVD-RAM UJ8D2Q +103 15 100% +Panasonic - DVD-RAM UJ8D3 +103 6 100% +Panasonic - DVD-RAM UJ8DB S +6 3 100% +Panasonic - DVD-RAM UJ8DB +6 40 100% +Panasonic - DVD-RAM UJ8E0 +103 45 100% +Panasonic - DVD-RAM UJ8E1 +6 138 100% +Panasonic - DVD-RAM UJ8E2 S +103 66 100% +Panasonic - DVD-RAM UJ8E2 +103 80 100% +Panasonic - DVD-RAM UJ8E2Q +103 49 100% +Panasonic - DVD-RAM UJ8FB +6 3 100% +Panasonic - DVD-RAM UJ8FBS +6 22 100% +Panasonic - DVD-RAM UJ8G2 +103 17 100% +Panasonic - DVD-RAM UJ8G6 +103 15 100% +Panasonic - DVD-RAM UJ8HC +6 50 100% +Panasonic - DVD-RAM UJ8HCA +6 2 100% +Panasonic - DVD-RAM UJE844S +102 19 100% +Panasonic - DVD-RAM VW-BN1-2 +102 4 100% +Panasonic - DVD-ROM A765 +102 3 100% +Panasonic - DVD-ROM SR-8174 +691 12 100% +Panasonic - DVD-ROM SR-8175 +691 23 100% +Panasonic - DVD-ROM SR-8176 +103 15 100% +Panasonic - DVD-ROM SR-8177 +103 23 100% +Panasonic - DVD-ROM SR-8178 +103 12 100% +Panasonic - DVD-ROM SR-8583 +691 19 100% +Panasonic - DVD-ROM SR-8584A +691 10 100% +Panasonic - DVD-ROM SR-8585 +691 45 100% +Panasonic - DVD-ROM SR-8586 +691 22 100% +Panasonic - DVD-ROM SR-8587 +103 26 100% +Panasonic - DVD-ROM SR-8588 +103 40 100% +Panasonic - DVD-ROM SR-8589 +103 8 100% +Panasonic - DVD-ROM SW420 +6 1 100% +Panasonic - DVD-ROM SW440 +6 1 100% +Panasonic - DVD-ROM UJ869AZ +102 1 100% +Panasonic - DVD-ROM UJ8A0AC +102 1 100% +Panasonic - DVD-ROM UJ8B0AC +102 1 100% +Panasonic - DVD-ROM UJ8E2 +103 1 100% +Panasonic - DVD-ROM UJDA765 +102 3 100% +Panasonic - DVD-ROM UJDA770 +102 1 100% +Panasonic - DVD-ROM UJDA775 +102 25 100% +Panasonic - DVD-ROM UJDA782 +102 3 100% +Panasonic - DVDRWBD UJ-110 +102 19 100% +Panasonic - DVDRWBD UJ167 +103 15 100% +Panasonic - DVDRWBD UJ167AM +103 7 100% +Panasonic - DVDRWBD UJ232AB +102 3 100% +Panasonic - SW-9584D +102 1 100% +Panasonic - UJ-810 +102 14 100% +Panasonic - UJ-812 +102 11 100% +Panasonic - UJ-815A +102 5 100% +Panasonic - UJ-820D +102 19 100% +Panasonic - UJ-822D +102 7 100% +Panasonic - UJ-822Da +102 58 100% +Panasonic - UJ-831D +102 27 100% +Panasonic - UJ-831Da +102 8 100% +Panasonic - UJ-831Db +102 9 100% +Panasonic - UJ-832D +102 89 100% +Panasonic - UJ-840D +102 178 100% +Panasonic - UJ-841D +102 22 100% +Panasonic - UJ-841Db +102 46 100% +Panasonic - UJ-842D +102 35 100% +Panasonic - UJ-845D +102 63 100% +Panasonic - UJ-846D +102 6 100% +Panasonic - UJ-850D +102 21 100% +Panasonic - UJDA310 +686 7 100% +Panasonic - UJDA330 +685 5 100% +Panasonic - UJDA360 +685 26 100% +Panasonic - UJDA710 +690 20 100% +Panasonic - UJDA720 DVD-CDRW +690 39 100% +Panasonic - UJDA730 DVD-CDRW +690 36 100% +Panasonic - UJDA740 DVD-CDRW +102 38 100% +Panasonic - UJDA745 DVD-CDRW +102 85 100% +Panasonic - UJDA750 DVD-CDRW +102 83 100% +Panasonic - UJDA750FDVD-CDRW +102 27 100% +Panasonic - UJDA755 DVD-CDRW +102 46 100% +Panasonic - UJDA755yDVD-CDRW +102 59 100% +Panasonic - UJDA755zDVD-CDRW +102 55 100% +Panasonic - UJDA757 DVD-CDRW +102 2 100% +Panasonic - UJDA760 DVD-CDRW +102 93 100% +Panasonic - UJDA760eDVD-CDRW +102 3 100% +Panasonic - UJDA765 DVD-CDRW +102 112 100% +Panasonic - UJDA765aDVD-CDRW +102 54 100% +Panasonic - UJDA769 DVD-CDRW +102 8 87% +Panasonic - UJDA770 DVD-CDRW +102 53 100% +Panasonic - UJDA775 DVD-CDRW +102 53 100% +Panasonic - UJDA780 DVD-CDRW +102 6 100% +Panasonic - UJDA782 DVD-CDRW +102 1 100% +Panasonic - UJDD410 +97 1 100% +PAPW - FSPQ3W9E 0 4 100% +PBDS - CD-ROM DH-48N1P +6 3 100% +PBDS - CD-ROM DH-48N1S +6 13 100% +PBDS - CDRWDVD DH-48C2S +6 91 100% +PBDS - DH-16A1P +6 19 100% +PBDS - DH-16D1P +6 17 100% +PBDS - DH-16D1S +6 7 100% +PBDS - DS-8A1P +594 17 100% +PBDS - DVD+-RW DH-16W1S +6 324 100% +PBDS - DVD+-RW DS-8W1P +594 330 100% +PBDS - VAD6038-64930C +6 1 100% +PC MART - DVD ROM SA22518X +6 1 100% +PHILIPS - 241240 CDRW +733 4 100% +PHILIPS - 401248 CDRW +739 2 50% +Philips - 40x PCA402CD +686 3 100% +Philips - 40X PCA403CD +1268 1 100% +PHILIPS - BD-RE BDD1001 +618 12 100% +Philips - CD-ROM PCCD048 -1164 1 100% +PHILIPS - CDD3600 CD-R-RW +1263 1 100% +PHILIPS - CDD3610 CD-R-RW +1263 6 100% +PHILIPS - CDD4801 CD-R-RW -436 7 100% +PHILIPS - CDD5101 +1364 1 100% +PHILIPS - CDD5301 +692 7 100% +PHILIPS - CDD6911 +733 2 100% +PHILIPS - CDD7052 +6 3 100% +PHILIPS - CDRW-DVD CDD5263 +594 94 100% +PHILIPS - CDRW-DVD SCB5265 +6 155 100% +PHILIPS - CDRW1610A +733 15 100% +PHILIPS - CDRW2010 +97 5 100% +PHILIPS - CDRW2410A +733 1 100% +PHILIPS - CDRW2412A +733 5 100% +PHILIPS - CDRW4012P +688 6 100% +PHILIPS - CDRW48A +733 16 100% +PHILIPS - CDRW48P +688 5 100% +PHILIPS - CDRW5224 +6 8 100% +PHILIPS - CDRW5232P1 +732 2 50% +PHILIPS - CDRWDVD2010 +708 4 100% +PHILIPS - CDRWDVD3210 +692 13 100% +PHILIPS - DROM5016 +691 15 100% +PHILIPS - DROM5016L +12 21 100% +PHILIPS - DROM6216 +738 152 100% +PHILIPS - DROM6316 +6 10 100% +PHILIPS - DVD+-RW DVD8631 +618 195 100% +PHILIPS - DVD+-RW DVD8701 +618 157 100% +PHILIPS - DVD+-RW DVD8801 +618 187 100% +PHILIPS - DVD+-RW DVD8881 +618 57 100% +PHILIPS - DVD+-RW SDVD8412 +1292 1 100% +PHILIPS - DVD+-RW SDVD8431 +1292 36 100% +PHILIPS - DVD+-RW SDVD8441 +1292 79 100% +PHILIPS - DVD+-RW SDVD8820 +6 280 100% +Philips - DVD+RW DVD8601 +618 37 100% +PHILIPS - DVD+RW SDVD6004 +91 17 100% +PHILIPS - DVD+RW-D01 +120 14 100% +PHILIPS - DVD+RW-D28 +120 8 100% +PHILIPS - DVD-RAM SDVD8821 +6 80 100% +PHILIPS - DVD-ROM DROM6316 +6 138 100% +Philips - DVD-ROM PCDV632 +116 1 100% +PHILIPS - DVD-ROM SDR089 +6 23 100% +PHILIPS - DVD8301 +1292 1 100% +PHILIPS - DVD8421 +1292 23 100% +PHILIPS - DVD8631 +618 31 100% +PHILIPS - DVD8801 +618 43 100% +PHILIPS - DVD8851 +618 4 100% +PHILIPS - DVDR1628P1 +618 50 100% +PHILIPS - DVDR1640P +618 101 100% +PHILIPS - DVDR1648P1 +618 129 100% +PHILIPS - DVDR1660P1 +618 101 100% +PHILIPS - DVDR1668L1 +6 2 100% +PHILIPS - DVDR1668P1 +618 7 100% +PHILIPS - DVDR16LS +618 34 100% +PHILIPS - DVDR824DP +1292 23 100% +PHILIPS - DVDR824P +1292 16 100% +PHILIPS - DVDR885P +1292 8 100% +PHILIPS - DVDRAM SDVD8821H +6 12 100% +PHILIPS - DVDRW1208 +120 2 100% +PHILIPS - DVDRW228 +120 19 100% +PHILIPS - DVDRW416 +1292 6 100% +PHILIPS - DVDRW416N +48 2 100% +PHILIPS - ED16DVDR +12 6 100% +PHILIPS - ED16DVDS +12 14 100% +PHILIPS - JR32RWDV +692 3 100% +PHILIPS - JR4DVDRW +1292 8 100% +PHILIPS - JR52CDRW +738 3 100% +PHILIPS - PBDV1601P +618 1 100% +PHILIPS - PBDV1640P +618 25 100% +PHILIPS - PBDV1660P1 +618 1 100% +PHILIPS - PBDV16LSP1 +618 4 100% +PHILIPS - PBDV824DP +1292 2 100% +PHILIPS - PBDV885P +1292 2 100% +PHILIPS - PBRW5232L3 +6 2 100% +PHILIPS - PBRW5232L +6 12 100% +PHILIPS - PCA532 +116 1 100% +PHILIPS - PCDV5016L2 +6 13 100% +PHILIPS - PCDV5016P1 +738 11 100% +PHILIPS - PCDV6116 +691 2 100% +PHILIPS - PCRW1208 +692 6 100% +PHILIPS - PCRW404 -436 4 75% +PHILIPS - PCRW5232P +738 24 100% +PHILIPS - PCRW804 -436 15 100% +PHILIPS - SPD2201P +6 3 100% +PHILIPS - SPD2202P +6 3 100% +PHILIPS - SPD2214T +6 2 100% +PHILIPS - SPD2400L1 +6 14 100% +PHILIPS - SPD2410L1 +6 15 100% +PHILIPS - SPD2411P +6 5 100% +PHILIPS - SPD2412T +6 54 100% +PHILIPS - SPD2413P +6 52 100% +PHILIPS - SPD2414T +6 39 100% +PHILIPS - SPD2415P +6 9 100% +PHILIPS - SPD2417T +6 10 100% +PHILIPS - SPD2512T +6 1 100% +PHILIPS - SPD2513P +6 22 100% +PHILIPS - SPD2514T +6 23 100% +PHILIPS - SPD2517T +6 22 100% +PHILIPS - SPD2519T +6 11 100% +PHILIPS - SPD2850L +6 1 100% +PHILIPS - SPD3000CC +6 37 100% +PHILIPS - SPD3100L +6 20 100% +PHILIPS - SPD3200L1 +6 9 100% +PHILIPS - SPD3300L +6 17 100% +PHILIPS - SPD3400CC +6 55 100% +PHILIPS - SPD3500CC +6 26 100% +PHILIPS - SPD3600CC +6 27 100% +PHILIPS - SPD4000CC +6 1 100% +PHILIPS - SPD4000L1 +6 5 100% +PHILIPS - SPD4001CC +594 10 100% +PHILIPS - SPD6000L1 +6 17 100% +PHILIPS - SPD6001L +6 7 100% +PHILIPS - SPD6002T +6 44 100% +PHILIPS - SPD6003P +6 14 100% +PHILIPS - SPD6004P +6 10 100% +PHILIPS - SPD6005T +6 61 100% +PHILIPS - SPD6104P +6 10 100% +PHILIPS - SPD6105T +6 15 100% +PHILIPS - SPD7000P +618 2 100% +PHILIPS - SPD8004P1 +6 1 100% +PHILIPS - VAD8043 +618 1 100% +PIKA ONE - RIP 8000 +12 4 100% +PINE - CD-ROM PT-56X +694 2 50% +PIODATA - DVD-RW DVR-108DX +48 6 100% +PIONEER - BD-ROM BDC-202 +667 415 100% +PIONEER - BD-ROM BDC-203 +667 19 100% +PIONEER - BD-ROM BDC-207 +667 36 100% +PIONEER - BD-ROM BDC-207D +667 110 100% +PIONEER - BD-ROM BDC-TD01 +667 39 100% +PIONEER - BD-ROM BDC-TD02 +667 17 100% +PIONEER - BD-ROM BDC-TD03 +667 106 100% +PIONEER - BD-ROM BDC-TD04 +667 5 100% +PIONEER - BD-ROM BDC-TD05 +667 2 100% +PIONEER - BD-ROM BDC-TS02 +667 1 100% +PIONEER - BD-ROM BDC-UD02D +667 1 100% +PIONEER - BD-ROM BDCTD01RS +667 22 100% +PIONEER - BD-ROM BDCTD02RS +667 6 100% +PIONEER - BD-ROM BDCTD03RS +667 13 100% +PIONEER - BD-ROM BDCTD03RT +667 8 100% +PIONEER - BD-ROM BDCTD05RT +667 1 100% +PIONEER - BD-ROM BDCUD02AS +667 3 100% +PIONEER - BD-ROM BDCUD03AS +667 6 100% +PIONEER - BD-RW BDR-202 +667 41 100% +PIONEER - BD-RW BDR-203 +667 259 100% +PIONEER - BD-RW BDR-205 +667 680 100% +PIONEER - BD-RW BDR-206 +667 692 100% +PIONEER - BD-RW BDR-206D +667 210 100% +PIONEER - BD-RW BDR-206M +667 98 100% +PIONEER - BD-RW BDR-207 +667 81 100% +PIONEER - BD-RW BDR-207D +667 251 100% +PIONEER - BD-RW BDR-207M +667 348 100% +PIONEER - BD-RW BDR-208 +667 57 100% +PIONEER - BD-RW BDR-208D +667 221 100% +PIONEER - BD-RW BDR-208M +667 217 100% +PIONEER - BD-RW BDR-209 +667 62 98% +PIONEER - BD-RW BDR-209D +667 224 100% +PIONEER - BD-RW BDR-209M +667 265 100% +PIONEER - BD-RW BDR-S08 +667 174 100% +PIONEER - BD-RW BDR-S09 +667 127 100% +PIONEER - BD-RW BDR-TD01 +667 21 100% +PIONEER - BD-RW BDR-TD03 +667 127 100% +PIONEER - BD-RW BDR-TD04 +667 35 100% +PIONEER - BD-RW BDR-TD05 +667 105 100% +PIONEER - BD-RW BDR-TS04 +667 8 100% +PIONEER - BD-RW BDR-UD02 +667 6 100% +PIONEER - BD-RW BDR-UD03 +667 8 100% +PIONEER - BD-RW BDR-US01 +667 1 100% +PIONEER - BD-RW BDR-XD04 +667 312 100% +PIONEER - BD-RW BDR-XD05 +667 259 100% +PIONEER - BD-RW BDR-XS05 +667 32 100% +PIONEER - BD-RW BDR-XS06 +667 9 100% +PIONEER - BD-RW BDR-XU02 +667 34 100% +PIONEER - BD-RW BDR-XU03 +667 8 100% +PIONEER - BD-RW BDR-S09JX +667 46 100% +PIONEER - BD-RW BDR-TD04A +667 3 100% +PIONEER - BD-RW BDR-TD04D +667 1 100% +PIONEER - BD-RW BDR-TD05D +667 1 100% +PIONEER - BD-RW BDR-UD02D +667 9 100% +PIONEER - BD-RW BDR-UD03D +667 2 100% +PIONEER - BD-RW BDR-XU03J +667 6 100% +PIONEER - BD-RW BDRTD03RS +667 10 100% +PIONEER - BD-RW BDRTD03RT +667 16 100% +PIONEER - BD-RW BDRTD05RT +667 4 100% +PIONEER - BD-RW BDR-206 0 2 100% +PIONEER - BD-RW BDR-L06SHA +667 1 100% +PIONEER - BD-RW BDR-L08SHB +667 1 100% +PIONEER - BD-RW BDR-PR1MA +667 1 100% +PIONEER - BD-RW BDR-TD05AS +667 2 100% +PIONEER - BD-RW BDR-XS05WF +667 2 100% +PIONEER - BD-RW BDR-XS06JL +667 5 100% +PIONEER - BD-RW BDR-XS06JM +667 1 100% +PIONEER - BD-RW BDR-XU02JM +667 3 100% +PIONEER - BD-RW BDRTD01RS +667 6 100% +PIONEER - BDR-XD04BU +667 3 100% +PIONEER - CD-ROM DR-A02S +1279 1 100% +PIONEER - CD-ROM DR-A04S +1303 5 100% +PIONEER - CD-ROM DR-A14S +1279 17 100% +PIONEER - CD-ROM DR-A24X +1127 1 100% +PIONEER - CD-ROM DR-U12X +691 3 100% +PIONEER - CD-ROM DR-U16S +1279 4 100% +PIONEER - DVD RW DVR-106D +48 148 100% +PIONEER - DVD RW DVR-107D +48 111 100% +PIONEER - DVD RW DVR-108 +48 121 100% +PIONEER - DVD RW DVR-109 +48 100 100% +PIONEER - DVD+-RW DR-K17Y +48 77 100% +PIONEER - DVD-116RD +102 3 100% +PIONEER - DVD-CDRW DCR-111 +690 3 100% +PIONEER - DVD-ROM DVD-103 +691 13 100% +PIONEER - DVD-ROM DVD-103R +691 3 100% +PIONEER - DVD-ROM DVD-104 +690 26 100% +PIONEER - DVD-ROM DVD-104F +690 2 100% +PIONEER - DVD-ROM DVD-105 +690 174 100% +PIONEER - DVD-ROM DVD-105F +690 16 100% +PIONEER - DVD-ROM DVD-106 +102 334 100% +PIONEER - DVD-ROM DVD-113 +691 6 100% +PIONEER - DVD-ROM DVD-113R +691 2 100% +PIONEER - DVD-ROM DVD-114 +690 20 100% +PIONEER - DVD-ROM DVD-115 +690 105 100% +PIONEER - DVD-ROM DVD-115F +690 10 100% +PIONEER - DVD-ROM DVD-116 +102 166 100% +PIONEER - DVD-ROM DVD-116R +102 2 100% +PIONEER - DVD-ROM DVD-117 +102 65 100% +PIONEER - DVD-ROM DVD-117R +102 17 100% +PIONEER - DVD-ROM DVD-119 +102 20 100% +PIONEER - DVD-ROM DVD-120 +691 78 100% +PIONEER - DVD-ROM DVD-120S +691 103 100% +PIONEER - DVD-ROM DVD-121 +102 61 100% +PIONEER - DVD-ROM DVD-121R +102 15 100% +PIONEER - DVD-ROM DVD-121S +102 3 100% +PIONEER - DVD-ROM DVD-122 +738 2 100% +PIONEER - DVD-ROM DVD-122C +738 2 100% +PIONEER - DVD-ROM DVD-122M +738 12 100% +PIONEER - DVD-ROM DVD-122P +738 5 100% +PIONEER - DVD-ROM DVD-123P +6 22 100% +PIONEER - DVD-ROM DVD-126P +6 17 100% +PIONEER - DVD-ROM DVD-127P +6 9 100% +PIONEER - DVD-ROM DVD-128P +6 11 100% +PIONEER - DVD-ROM DVD-129P +6 5 80% +PIONEER - DVD-ROM DVD-130P +6 16 100% +PIONEER - DVD-ROM DVD-227P +6 2 100% +PIONEER - DVD-ROM DVD-228P +6 13 100% +PIONEER - DVD-ROM DVD-230P +6 32 100% +PIONEER - DVD-ROM DVD-231 +6 21 100% +PIONEER - DVD-ROM DVD-232 +6 15 100% +PIONEER - DVD-ROM DVD-303 +691 19 100% +PIONEER - DVD-ROM DVD-303F +691 3 100% +PIONEER - DVD-ROM DVD-303R +691 3 100% +PIONEER - DVD-ROM DVD-304 +690 5 100% +PIONEER - DVD-ROM DVD-304F +690 1 100% +PIONEER - DVD-ROM DVD-305 +690 50 100% +PIONEER - DVD-ROM DVD-500M +594 20 100% +PIONEER - DVD-ROM DVDXD01 +6 16 100% +PIONEER - DVD-RW DVR-103 -54 14 100% +PIONEER - DVD-RW DVR-104 +48 91 100% +PIONEER - DVD-RW DVR-105 +48 300 100% +PIONEER - DVD-RW DVR-106D +48 408 100% +PIONEER - DVD-RW DVR-107D +48 399 100% +PIONEER - DVD-RW DVR-108 +48 701 100% +PIONEER - DVD-RW DVR-109 +48 791 100% +PIONEER - DVD-RW DVR-110 +48 253 100% +PIONEER - DVD-RW DVR-110D +48 742 100% +PIONEER - DVD-RW DVR-111 +48 384 100% +PIONEER - DVD-RW DVR-111C +48 5 100% +PIONEER - DVD-RW DVR-111D +48 1243 100% +PIONEER - DVD-RW DVR-111L +48 207 100% +PIONEER - DVD-RW DVR-112 +48 340 100% +PIONEER - DVD-RW DVR-112D +48 986 100% +PIONEER - DVD-RW DVR-112L +48 156 100% +PIONEER - DVD-RW DVR-115 +48 119 100% +PIONEER - DVD-RW DVR-115D +48 602 100% +PIONEER - DVD-RW DVR-115L +48 102 100% +PIONEER - DVD-RW DVR-116 +96 86 100% +PIONEER - DVD-RW DVR-116D +96 341 100% +PIONEER - DVD-RW DVR-116L +96 52 100% +PIONEER - DVD-RW DVR-117 +96 81 100% +PIONEER - DVD-RW DVR-117D +96 13 100% +PIONEER - DVD-RW DVR-117F +96 6 100% +PIONEER - DVD-RW DVR-117L +96 9 100% +PIONEER - DVD-RW DVR-118L +6 196 100% +PIONEER - DVD-RW DVR-212 +48 566 100% +PIONEER - DVD-RW DVR-212D +48 484 100% +PIONEER - DVD-RW DVR-212L +48 42 100% +PIONEER - DVD-RW DVR-215 +48 556 100% +PIONEER - DVD-RW DVR-215D +48 595 100% +PIONEER - DVD-RW DVR-215L +48 166 100% +PIONEER - DVD-RW DVR-216 +96 391 100% +PIONEER - DVD-RW DVR-216D +96 1002 100% +PIONEER - DVD-RW DVR-216L +96 229 100% +PIONEER - DVD-RW DVR-216R +96 19 100% +PIONEER - DVD-RW DVR-217 +96 185 100% +PIONEER - DVD-RW DVR-217D +96 34 100% +PIONEER - DVD-RW DVR-217F +96 78 100% +PIONEER - DVD-RW DVR-217L +96 280 100% +PIONEER - DVD-RW DVR-218L +6 599 100% +PIONEER - DVD-RW DVR-219L +6 580 100% +PIONEER - DVD-RW DVR-220 +6 26 100% +PIONEER - DVD-RW DVR-220L +6 188 100% +PIONEER - DVD-RW DVR-221 +6 44 100% +PIONEER - DVD-RW DVR-221L +6 270 100% +PIONEER - DVD-RW DVR-K04L +48 2 100% +PIONEER - DVD-RW DVR-K05 +48 14 100% +PIONEER - DVD-RW DVR-K06 +48 76 100% +PIONEER - DVD-RW DVR-K06A +48 26 100% +PIONEER - DVD-RW DVR-K11 +48 3 100% +PIONEER - DVD-RW DVR-K12D +48 15 100% +PIONEER - DVD-RW DVR-K13A +48 1 100% +PIONEER - DVD-RW DVR-K14 +48 12 100% +PIONEER - DVD-RW DVR-K14L +48 49 100% +PIONEER - DVD-RW DVR-K15 +48 30 100% +PIONEER - DVD-RW DVR-K16 +48 39 100% +PIONEER - DVD-RW DVR-K16A +48 46 100% +PIONEER - DVD-RW DVR-K16D +48 23 100% +PIONEER - DVD-RW DVR-K16M +48 42 100% +PIONEER - DVD-RW DVR-K16S +48 24 100% +PIONEER - DVD-RW DVR-K17 +48 58 100% +PIONEER - DVD-RW DVR-K17A +48 65 100% +PIONEER - DVD-RW DVR-XD09 +96 145 100% +PIONEER - DVD-RW DVR-XD10 +96 277 100% +PIONEER - DVD-RW DVR-XT11 +6 14 100% +PIONEER - DVD-RW DVRKD08 +48 107 100% +PIONEER - DVD-RW DVRKD08A +48 44 100% +PIONEER - DVD-RW DVRKD08L +48 10 100% +PIONEER - DVD-RW DVRTD08 +48 20 100% +PIONEER - DVD-RW DVRTD08A +48 58 100% +PIONEER - DVD-RW DVRTD08L +48 16 100% +PIONEER - DVD-RW DVRTD09 +96 38 100% +PIONEER - DVD-RW DVRTD09A +96 35 100% +PIONEER - DVD-RW DVRTS08 +48 49 100% +PIONEER - DVD-RW DVRTS09 +96 29 100% +PIONEER - DVD-RW DVR-106RD +48 1 100% +PIONEER - DVD-RW DVR-109RD +48 2 100% +PIONEER - DVD-RW DVR-219RS +6 19 100% +PIONEER - DVD-RW DVR-220RS +6 15 100% +PIONEER - DVD-RW DVR-K04RA +48 1 100% +PIONEER - DVD-RW DVR-K05RA +48 3 100% +PIONEER - DVD-RW DVR-K06RS +48 31 100% +PIONEER - DVD-RW DVR-K12RA +48 15 100% +PIONEER - DVD-RW DVR-K13RA +48 4 100% +PIONEER - DVD-RW DVR-K14AS +48 5 100% +PIONEER - DVD-RW DVR-K14RA +48 16 100% +PIONEER - DVD-RW DVR-K15RA +48 11 100% +PIONEER - DVD-RW DVR-K16RA +48 27 100% +PIONEER - DVD-RW DVR-K16RS +48 29 100% +PIONEER - DVD-RW DVR-K17LF +48 52 100% +PIONEER - DVD-RW DVR-K17RS +48 81 100% +PIONEER - DVD-RW DVR-XD11 +6 30 90% +PIONEER - DVD-RW DVR-XT11 +6 4 100% +PIONEER - DVD-RW DVR-XU01 +6 11 100% +PIONEER - DVD-RW DVRKD08RS +48 56 100% +PIONEER - DVD-RW DVRTD08RS +48 36 100% +PIONEER - DVD-RW DVRTD10RS +6 122 100% +PIONEER - DVD-RW DVRTD11RS +6 159 100% +PIONEER - DVDRW DVR-K15 +48 17 100% +PIONEER - DVDRW DVR-K16 +48 27 100% +PIONEER - DVDRW DVR-K17 +48 70 100% +PIONEER - DVDRW DVR-K17B +48 83 100% +PIONEER - DVDRW DR-KD08HB +48 29 100% +PIONEER - DVDRW DR-TD08HB +48 19 100% +PIONEER - DVR-112N +6 5 100% +PIONEER - DVR-113NP +6 86 100% +PIONEER - DVR-212N +6 4 100% +PIONEER - DVR-213N +6 20 100% +PIONEER - DVR-213NP +6 63 100% +PLDS - BD COMBO DC6E2SH +6 1 100% +PLDS - BD COMBO DS6E2SH +6 1 100% +PLDS - BD-RE DH-4B1S +618 39 100% +PLDS - BD-RE DH-8B2SH +6 50 100% +PLDS - DG-16D2S +6 1 100% +PLDS - DVD A DH20A3S +6 1 100% +PLDS - DVD A DH20A4P +6 8 100% +PLDS - DVD A DH20A6S +6 3 100% +PLDS - DVD A DH22A8P +6 1 100% +PLDS - DVD A DH22A9P +6 9 100% +PLDS - DVD A DH22AWP +6 1 100% +PLDS - DVD A DH24AAS +6 10 100% +PLDS - DVD A DH24ABS +6 7 100% +PLDS - DVD A DH24AYS +48 21 100% +PLDS - DVD+-RW DC-8A2SH +6 13 100% +PLDS - DVD+-RW DH-16A6S +6 342 100% +PLDS - DVD+-RW DH-16AAS +6 158 100% +PLDS - DVD+-RW DH-16ABS +6 201 100% +PLDS - DVD+-RW DH-16ACS +6 97 100% +PLDS - DVD+-RW DH-16AES +6 63 100% +PLDS - DVD+-RW DH-24AAS +6 32 100% +PLDS - DVD+-RW DH-24ABS +6 14 100% +PLDS - DVD+-RW DH-24ACS +6 10 100% +PLDS - DVD+-RW DH-24AWS +48 9 100% +PLDS - DVD+-RW DL-8A4SH +6 26 100% +PLDS - DVD+-RW DL-8ATS +6 45 100% +PLDS - DVD+-RW DS-8A3S +6 26 100% +PLDS - DVD+-RW DS-8A4S +6 36 100% +PLDS - DVD+-RW DS-8A5SH +6 192 100% +PLDS - DVD+-RW DS-8A8SH +6 74 100% +PLDS - DVD+-RW DS-8A9SH +6 19 100% +PLDS - DVD+-RW DS-8ABSH +6 6 100% +PLDS - DVD+-RW DS-8W2S +6 18 100% +PLDS - DVD+-RW DU-8A2S +6 145 100% +PLDS - DVD+-RW DU-8A3S +6 150 100% +PLDS - DVD+-RW DU-8A4SH +6 41 100% +PLDS - DVD+-RW DU-8A5HH +6 77 100% +PLDS - DVD+-RW DU-8A5LH +6 39 100% +PLDS - DVD+-RW DU-8A5SH +6 2 100% +PLDS - DVD+-RW DX-20A6Q +6 1 100% +PLDS - DVD-ROM DH-16D2S +6 61 100% +PLDS - DVD-ROM DH-16D3S +6 39 100% +PLDS - DVD-ROM DH-16D5S +6 38 100% +PLDS - DVD-ROM DH-16D6S +6 7 100% +PLDS - DVD-ROM DH-16D7S +6 2 100% +PLDS - DVD-ROM DH-16D8S +6 1 100% +PLDS - DVD-ROM DS-8D3SH +6 20 100% +PLDS - DVD-ROM DS-8D9SH +6 4 100% +PLDS - DVD-RW DA8A5SH +6 35 100% +PLDS - DVD-RW DA8A6SH +6 15 100% +PLDS - DVD-RW DH16ABSH +6 40 100% +PLDS - DVD-RW DH16ACSH +6 32 100% +PLDS - DVD-RW DH16AESH +6 26 100% +PLDS - DVD-RW DH16AFSH +6 7 100% +PLDS - DVD-RW DS8A5SH +6 3 100% +PLDS - DVD-RW DS8A8SH +6 194 100% +PLDS - DVD-RW DS8A9SH +6 37 100% +PLDS - DVD-RW DS8ABSH +6 11 100% +PLDS - DVD-RW DU8A5SH +6 45 100% +PLDS - DVD-RW DU8A6SH +6 2 100% +PLDS - DVDROM DH16D5S +6 2 100% +PLDS - DVDROM DH16D6SH +6 7 100% +PLDS - DVDROM DH16D7SH +6 7 85% +PLDS - DVDROM DH16D8SH +6 2 100% +PLDS - DVDRWBD DH-12E3S +702 62 100% +PLDS - DVDRWBD DH-6E2S +6 126 100% +PLDS - DVDRWBD DS-4E1S +6 12 100% +PLDS - DVDRWBD DS-6E2SH +6 72 100% +PLEXTOB - DVDR PX-750A +102 1 100% +PLEXTOR - BD-R PX-B900A +102 4 100% +PLEXTOR - BD-R PX-B920SA +667 76 100% +PLEXTOR - BD-R PX-B940SA +667 187 100% +PLEXTOR - BD-R PX-B950SA +6 143 100% +PLEXTOR - BD-R PX-B950UE +6 36 100% +PLEXTOR - BD-R PX-LB950SA +6 261 100% +PLEXTOR - BD-R PX-LB950UE +6 67 100% +PLEXTOR - BD-ROM PX-B120U +696 97 100% +PLEXTOR - BDDVDR PX-B310SA +6 11 100% +PLEXTOR - BDDVDR PX-B310U +6 70 100% +PLEXTOR - BDDVDR PX-B320SA +6 121 100% +PLEXTOR - BDDVDRPX-B330SA +702 14 100% +PLEXTOR - CD-R PREMIUM-G +30 1 100% +PLEXTOR - CD-R PREMIUM2 +30 1556 100% +PLEXTOR - CD-R PREMIUM +30 1810 100% +PLEXTOR - CD-R PX-230A +738 562 100% +PLEXTOR - CD-R PX-240A +6 129 100% +PLEXTOR - CD-R PX-320A +98 88 100% +PLEXTOR - CD-R PX-R412C +355 7 100% +PLEXTOR - CD-R PX-R820T +355 17 100% +PLEXTOR - CD-R PX-S2410T +685 22 100% +PLEXTOR - CD-R PX-S88T +98 38 100% +PLEXTOR - CD-R PX-W1210A +99 477 100% +PLEXTOR - CD-R PX-W1210S +98 156 100% +PLEXTOR - CD-R PX-W124TS +943 48 100% +PLEXTOR - CD-R PX-W1610A +99 216 100% +PLEXTOR - CD-R PX-W2410A +98 518 100% +PLEXTOR - CD-R PX-W4012A +98 471 100% +PLEXTOR - CD-R PX-W4012S +98 41 100% +PLEXTOR - CD-R PX-W4220T +355 13 100% +PLEXTOR - CD-R PX-W4824A +98 617 100% +PLEXTOR - CD-R PX-W5224A +30 428 100% +PLEXTOR - CD-R PX-W8220T +355 11 100% +PLEXTOR - CD-R PX-W8432T +355 117 100% +PLEXTOR - CD-ROM PX-12CS +681 3 100% +PLEXTOR - CD-ROM PX-12TS +681 5 100% +PLEXTOR - CD-ROM PX-20TS +681 42 100% +PLEXTOR - CD-ROM PX-32CS +679 12 100% +PLEXTOR - CD-ROM PX-32TS +679 127 100% +PLEXTOR - CD-ROM PX-40TS +676 531 100% +PLEXTOR - CD-ROM PX-40TSUW +676 1 100% +PLEXTOR - CD-ROM PX-40TW +676 89 100% +PLEXTOR - CD-ROM PX-54TA +12 64 100% +PLEXTOR - CD-ROM PX-8XCS +681 3 100% +PLEXTOR - DVD-ROM PX-106A +6 10 100% +PLEXTOR - DVD-ROM PX-116A2 +102 178 100% +PLEXTOR - DVD-ROM PX-116A3 +691 62 100% +PLEXTOR - DVD-ROM PX-116A +691 72 100% +PLEXTOR - DVD-ROM PX-130 +738 2 100% +PLEXTOR - DVD-ROM PX-130A +738 653 100% +PLEXTOR - DVD-RW PX-608U +48 25 100% +PLEXTOR - DVDR PX-608CU +48 104 100% +PLEXTOR - DVDR PX-504A +48 66 100% +PLEXTOR - DVDR PX-608AL +48 26 100% +PLEXTOR - DVDR PX-610U +6 20 100% +PLEXTOR - DVDR PX-612U +6 25 100% +PLEXTOR - DVDR PX-650US +6 54 100% +PLEXTOR - DVDR PX-704A +30 1 100% +PLEXTOR - DVDR PX-708A2 +30 23 100% +PLEXTOR - DVDR PX-708A +30 1095 100% +PLEXTOR - DVDR PX-708R +30 1 100% +PLEXTOR - DVDR PX-712A +30 891 100% +PLEXTOR - DVDR PX-714A +30 4 100% +PLEXTOR - DVDR PX-716A +30 2557 100% +PLEXTOR - DVDR PX-716AL +30 206 100% +PLEXTOR - DVDR PX-740A +618 502 100% +PLEXTOR - DVDR PX-750A +102 420 100% +PLEXTOR - DVDR PX-751A +102 17 100% +PLEXTOR - DVDR PX-755A +30 1006 100% +PLEXTOR - DVDR PX-760A +30 1753 100% +PLEXTOR - DVDR PX-800A +48 474 100% +PLEXTOR - DVDR PX-806SA +6 35 100% +PLEXTOR - DVDR PX-810SA +48 641 100% +PLEXTOR - DVDR PX-810UF +667 110 100% +PLEXTOR - DVDR PX-820A +48 79 100% +PLEXTOR - DVDR PX-820SA +48 224 100% +PLEXTOR - DVDR PX-825A +48 1 100% +PLEXTOR - DVDR PX-830SA +96 113 100% +PLEXTOR - DVDR PX-840U +6 2 100% +PLEXTOR - DVDR PX-850A +6 31 100% +PLEXTOR - DVDR PX-850SA +6 52 100% +PLEXTOR - DVDR PX-860A +96 49 100% +PLEXTOR - DVDR PX-860SA +96 47 100% +PLEXTOR - DVDR PX-870A +6 67 100% +PLEXTOR - DVDR PX-880SA +6 939 100% +PLEXTOR - DVDR PX-880U +6 87 100% +PLEXTOR - DVDR PX-880UE +6 16 100% +PLEXTOR - DVDR PX-890SA +6 27 100% +PLEXTOR - DVDR PX-891SA +6 565 100% +PLEXTOR - DVDR PX-891SAF +6 29 100% +PLEXTOR - DVDR PX-891SAW +48 148 100% +PLEXTOR - DVDR PX-B300SA +667 25 100% +PLEXTOR - DVDR PX-L611U +6 53 100% +PLEXTOR - DVDR PX-L871A +6 21 100% +PLEXTOR - DVDR PX-L890SA +6 968 100% +PLEXTOR - DVDR PX-L890UE +6 183 100% +PLEXTOR - DVDR PX-Q840U +6 40 100% +PLEXTOR - DVDR PX-750A 0 5 100% +PLEXTOR - DVDR PX-806SA +6 1 100% +PLEXTOR - DVDR PX-820SA 0 5 100% +PLEXTOR - PX-54TA +6 1 100% +Plextor - PX-W4012A 0 14 100% +Polaroid - BurnMAX40 +12 1 100% +Polaroid - BurnMAX40EX +12 1 100% +Polaroid - BurnMAX48 +12 4 100% +Polaroid - BurnMAX52 +6 1 100% +QPS - CD-R PX-W1210A +99 1 100% +QPS - CD-R PX-W8432T +355 2 100% +QPS - CD-W512EB +685 1 100% +QPS - CD-W516EB +685 7 100% +QPS - CRD-BP1500P +688 2 100% +QSI - CD-ROM SCR-242 -1164 12 100% +QSI - CDRW-DVD SBW-241 +733 52 100% +QSI - CDRW-DVD SBW-243 +6 14 100% +QSI - CDRW-DVD SBW242B +6 18 100% +QSI - CDRW-DVD SBW242C +6 66 100% +QSI - CDRW-DVD UBW-241 +6 1 100% +QSI - CDRWDVD SBW-245 +6 1 100% +QSI - DVD+-RW SDW-082 +1292 30 100% +QSI - DVD+-RW SDW-082K +1292 5 100% +QSI - DVD+-RW SDW-082S +1292 11 100% +QSI - DVD+-RW SDW-085 +6 11 100% +QSI - DVD-CDRW SBW-081 +733 13 100% +QSI - DVD-CDRW SBW-161 +733 16 100% +QSI - DVD-RAM SDW-086 +6 22 100% +QSI - DVD-ROM SDR-081 +564 14 100% +QSI - DVD-ROM SDR-083 -582 5 100% +QSI - DVD-ROM TDR-085 -1164 1 100% +QSI - DVDRW SDW-041 +1292 18 100% +QSI - DVDRW SDW-042 +1292 6 100% +RICOH - CD-R-RW MP7040A +685 2 100% +RICOH - CD-R-RW MP7060A +685 2 50% +RICOH - CD-R-RW MP7060S +685 4 100% +RICOH - CD-R-RW MP7063A +97 3 66% +RICOH - CD-R-RW MP7080A +97 5 100% +RICOH - CD-R-RW MP7083A +97 11 100% +RICOH - CD-R-RW MP7120A +97 6 100% +RICOH - CD-R-RW MP7125A +97 4 100% +RICOH - CD-R-RW MP7163A +97 12 100% +RICOH - CD-R-RW MP7200A +97 32 100% +RICOH - CD-R-RW MP7240A +97 4 100% +RICOH - CD-R-RW RW7040A +685 1 100% +RICOH - CD-RW MP7320A +97 9 100% +RICOH - CD-RW MP7400A +97 2 100% +RICOH - DVD+RW MP5120 +120 2 100% +RICOH - DVD+RW MP5125 +120 18 100% +RICOH - DVD+RW MP5240 +91 32 100% +RICOH - DVD+RW MP5240A +91 12 100% +RICOH - DVD+RW MP5316DAG +48 7 100% +RICOH - DVD-CDRW MP9060 +708 6 100% +RICOH - DVD-CDRW MP9120 +708 10 100% +RICOH - DVD-CDRW MP9200 +708 7 100% +RICOH - MP6201S +87 1 100% +RWJKZYR - PQB016NS1 +48 1 100% +SAMSUNG - CD-R-RW SW-208B +86 3 100% +SAMSUNG - CD-R-RW SW-212B +733 4 100% +SAMSUNG - CD-R-RW SW-216B +97 23 100% +SAMSUNG - CD-R-RW SW-224B +12 18 100% +SAMSUNG - CD-R-RW SW-232B +97 21 100% +SAMSUNG - CD-R-RW SW-240B +97 69 100% +SAMSUNG - CD-R-RW SW-248B +733 17 100% +SAMSUNG - CD-R-RW SW-248F +97 107 100% +SAMSUNG - CD-R-RW SW-252B +97 66 100% +SAMSUNG - CD-R-RW SW-252F +145 72 100% +SAMSUNG - CD-R-RW SW-252S +6 188 100% +SAMSUNG - CD-R-RW SW-408B +97 14 100% +SAMSUNG - CD-ROM SC-140 +976 3 100% +SAMSUNG - CD-ROM SC-140B +682 13 100% +SAMSUNG - CD-ROM SC-140C +600 22 100% +SAMSUNG - CD-ROM SC-140F +976 2 100% +SAMSUNG - CD-ROM SC-148A +12 131 100% +SAMSUNG - CD-ROM SC-148B +682 3 100% +SAMSUNG - CD-ROM SC-148C +600 115 100% +SAMSUNG - CD-ROM SC-148S +975 1 100% +SAMSUNG - CD-ROM SC-148T +600 3 100% +SAMSUNG - CD-ROM SC-152A +691 31 100% +SAMSUNG - CD-ROM SC-152B +600 1 100% +SAMSUNG - CD-ROM SC-152C +600 16 100% +SAMSUNG - CD-ROM SC-152G +691 23 100% +SAMSUNG - CD-ROM SC-152L +600 52 100% +SAMSUNG - CD-ROM SCR-2430 -494 1 100% +SAMSUNG - CD-ROM SCR-3231 +974 1 100% +SAMSUNG - CD-ROM SCR-3232 +686 7 100% +SAMSUNG - CD-ROM SH-152A +12 32 100% +SAMSUNG - CD-ROM SN-124 +564 46 100% +SAMSUNG - CDRW-DVD SM-308B +120 62 100% +SAMSUNG - CDRW-DVD SM-316B +120 7 100% +SAMSUNG - CDRW-DVD SM-332B +120 56 100% +SAMSUNG - CDRW-DVD SM-348B +6 109 100% +SAMSUNG - CDRW-DVD SM-352B +6 135 100% +SAMSUNG - CDRW-DVD SM-352F +6 82 100% +SAMSUNG - CDRW-DVD SM-352N +6 22 100% +SAMSUNG - CDRW-DVD SM-408B +120 2 100% +SAMSUNG - CDRW-DVD SN-308B +120 9 100% +SAMSUNG - CDRW-DVD SN-324B +120 67 100% +SAMSUNG - CDRW-DVD SN-324F +6 72 100% +SAMSUNG - CDRW-DVD SN-324S +6 67 100% +SAMSUNG - CDRW-DVD SU-324B +6 10 100% +SAMSUNG - CDRW-DVD SU-408B +120 6 100% +SAMSUNG - COMBO SM-304B +120 5 100% +SAMSUNG - DVD R-RW SH-W08A +116 24 100% +SAMSUNG - DVD R-RW SR-W04B +48 1 100% +SAMSUNG - DVD-ROM SD-604 +116 1 100% +SAMSUNG - DVD-ROM SD-606F +116 2 100% +SAMSUNG - DVD-ROM SD-608 +704 1 100% +SAMSUNG - DVD-ROM SD-612 +704 27 100% +SAMSUNG - DVD-ROM SD-612F +704 1 100% +SAMSUNG - DVD-ROM SD-612S +1182 15 100% +SAMSUNG - DVD-ROM SD-616 +1292 39 100% +SAMSUNG - DVD-ROM SD-616E +12 384 100% +SAMSUNG - DVD-ROM SD-616F +1182 83 100% +SAMSUNG - DVD-ROM SD-616Q +12 103 100% +SAMSUNG - DVD-ROM SD-616T +1182 251 100% +SAMSUNG - DVD-ROM SD-816B +12 36 100% +SAMSUNG - DVDRW SH-S222A +6 2 50% +SAMSUNG - DVDWBD SH-B083A +6 36 100% +SAMSUNG - DVDWBD SH-B083L +6 332 100% +SANYO - CRD-S372B +694 1 100% +SATA - ASUS BC-12B1S +702 1 100% +SATA - ASUS BR-04B2T +696 1 100% +SATA - ASUS DRW-1814 +6 6 100% +SATA - ASUS DRW-2014 +6 7 100% +SATA - ASUS DRW-20B1 +6 1 100% +SATA - ASUS DRW-24B1 +6 1 100% +SATA - ASUS DRW-24B3 +6 1 100% +SATA - ASUS DVD-E818 +6 1 100% +SATA - ATAPI DVD A D +6 4 100% +SATA - ATAPI DVD D D +6 1 100% +SATA - ATAPI iHAS120 +6 1 100% +SATA - ATAPI iHAS124 +48 1 100% +SATA - ATAPI iHAS322 +6 1 100% +SATA - ATAPI iHAS324 +6 3 66% +SATA - ATAPI iHAS424 +6 1 100% +SATA - ATAPI iHBS112 +6 1 100% +SATA - ATAPI iHDS118 +6 1 100% +SATA - ATAPI iHOS104 +696 1 100% +SATA - BD-RE GGW-H20L +667 1 100% +SATA - BENQ DVD DD D +618 1 100% +SATA - CD-DVDW SH-S183L +6 1 100% +SATA - DVD RW AW-G170S +48 1 100% +SATA - DVDR PX-755A +30 1 100% +SATA - DVDRAM GH20NS15 +667 1 100% +SATA - DVDRW SATA 20X +6 1 100% +SATA - DVDRW 18X18X12X +6 1 100% +SATA - DVDRW 8X8X5X +6 1 100% +SATA - LG ElectronicsBD-RE B +667 8 100% +SATA - LG ElectronicsBD-RE G +667 10 100% +SATA - LG ElectronicsBD-RE W +667 2 100% +SATA - LG ElectronicsBDDVDRW +667 6 100% +SATA - LG ElectronicsDVD-RAM +102 14 100% +SATA - LG ElectronicsDVDRAM G +667 33 100% +SATA - LITE-ON COMBO SH +6 1 100% +SATA - LITE-ON DVD SOHD +6 1 100% +SATA - LITE-ON DVDRW LH +6 6 100% +SATA - Optiarc BD-ROM B +79 1 100% +SATA - Optiarc DVD RW A +48 16 100% +SATA - Optiarc DVD+-RW +48 1 100% +SATA - PIONEER BD-ROM +667 2 100% +SATA - PIONEER BD-RW +667 6 100% +SATA - PIONEER DVR-213N +6 1 100% +SATA - PLDS DVD+-RW +6 3 100% +SATA - SONY BD-ROM B +79 1 100% +SATA - SONY CD-RW C +6 1 100% +SATA - SONY DVD RW A +48 1 100% +SATA - SONY DVD RW D +12 1 100% +SATA - SONY DVD-ROM +12 2 100% +SATA - TSSTcorpCD-DVDW +6 8 100% +SATA - TSSTcorpCDDVDW S +6 53 100% +SATA - TSSTcorpCDDVDW T +6 1 100% +SATA - TSSTcorpDVD-ROM +6 5 100% +SATA - TSSTcorpDVDWBD S +6 1 100% +SATA-DVD - DROM6316 +6 36 100% +SHARK - 52X CD-ROM +12 1 100% +SHARP - BD-BRD50_AQ +667 1 100% +slimtype - eTDU108 1 +6 128 100% +Slimtype - BD E DL4ETS +6 42 100% +Slimtype - BD E DS4E1S +6 242 100% +Slimtype - BD E DS6E2SH +6 70 100% +Slimtype - BD E DS4E1S +6 12 100% +Slimtype - BD E DS6E2SH +6 8 100% +Slimtype - COMBO LSC-24081 +6 10 100% +Slimtype - COMBO LSC-24081M +6 8 100% +Slimtype - COMBO LSC-24082K +6 53 100% +Slimtype - COMBO SOSC-2483K +6 15 100% +Slimtype - DS8A5SH +6 8 100% +Slimtype - DVD A DA8A5SH-L +6 11 100% +Slimtype - DVD A DA8A5SH +6 12 100% +Slimtype - DVD A DA8A6SH +6 19 100% +Slimtype - DVD A DC8A2SH +6 5 100% +Slimtype - DVD A DL8A3LH +6 1 100% +Slimtype - DVD A DL8A4SH +6 25 100% +Slimtype - DVD A DL8ATS +6 2 100% +Slimtype - DVD A DL8ATSH +6 8 100% +Slimtype - DVD A DP-8A4SH +6 2 100% +Slimtype - DVD A DS-8A5SH +6 9 100% +Slimtype - DVD A DS8A1H +594 174 100% +Slimtype - DVD A DS8A1P +594 258 100% +Slimtype - DVD A DS8A2L-A +6 22 100% +Slimtype - DVD A DS8A2L +6 19 100% +Slimtype - DVD A DS8A2S-A +6 11 100% +Slimtype - DVD A DS8A2S +6 114 100% +Slimtype - DVD A DS8A3L +6 7 100% +Slimtype - DVD A DS8A3S +6 177 100% +Slimtype - DVD A DS8A4L +6 4 100% +Slimtype - DVD A DS8A4S +6 126 100% +Slimtype - DVD A DS8A4SH +6 105 100% +Slimtype - DVD A DS8A5L +6 3 100% +Slimtype - DVD A DS8A5NH +6 1 100% +Slimtype - DVD A DS8A5S +6 56 100% +Slimtype - DVD A DS8A5SH +6 457 100% +Slimtype - DVD A DS8A8SH +6 193 100% +Slimtype - DVD A DS8A9SH +6 70 100% +Slimtype - DVD A DS8ABSH +6 5 100% +Slimtype - DVD A DS8ACSH +6 1 100% +Slimtype - DVD A DS8AZH +594 53 100% +Slimtype - DVD A DS8AZP +594 5 100% +Slimtype - DVD A DU8A3S +6 1 100% +Slimtype - DVD A DU8A3SH +6 1 100% +Slimtype - DVD A DU8A4SH +6 1 100% +Slimtype - DVD A DU8A5SH +6 2 100% +Slimtype - DVD A DU8A6SH +6 1 100% +Slimtype - DVD A DS8A1H 0 2 100% +Slimtype - DVD A DS8A2S +6 12 100% +Slimtype - DVD A DS8A3S +6 19 100% +Slimtype - DVD A DS8A4S +6 125 100% +Slimtype - DVD A DS8A4SH +6 1 100% +Slimtype - DVD A DS8A5SH +6 58 100% +Slimtype - DVD A DS8A8SH +6 36 100% +Slimtype - DVD A DS8A9SH +6 2 100% +Slimtype - DVD A DS8D4SH +6 1 100% +Slimtype - DVD A DU8A2S +6 1 100% +Slimtype - DVD A DU8A3S +6 3 100% +Slimtype - DVD A DU8A5SH +6 7 100% +Slimtype - DVD C DS24CZP +6 3 100% +Slimtype - DVDRW SDW-431S +12 12 100% +Slimtype - DVDRW SLW-831S +6 22 100% +Slimtype - DVDRW SOSW-833S +6 107 100% +Slimtype - DVDRW SOSW-852S +12 65 100% +Slimtype - DVDRW SSM-8515S +594 103 100% +Slimtype - DVDRW SSM-85H5S +594 18 100% +Slimtype - DVDRW SSW-8015S +594 20 100% +Slimtype - eBAU108 5 L +6 46 100% +Slimtype - eBAU108 5 +6 4 100% +Slimtype - eBAU108 6 L +6 8 100% +Slimtype - eNAU108 5 +6 21 100% +Slimtype - eNAU108 8 +6 10 100% +Slimtype - eNAU508 5 +6 8 100% +Slimtype - eNAU508 8 +6 1 100% +Slimtype - eNAU608 5 +6 60 100% +Slimtype - eNAU708 5 +6 1 100% +Slimtype - eNAU808 8 +6 1 100% +Slimtype - eSAU108 2 +6 38 100% +slimtype - eSAU108 3 +6 13 100% +Slimtype - eSAU108 4 +6 26 100% +Slimtype - eSAU108 5 +6 13 100% +Slimtype - eSAU108 8 +6 4 100% +Slimtype - eSAU208 2 +6 90 100% +slimtype - eSAU208 3 +6 37 100% +Slimtype - eSAU208 4 +6 16 100% +Slimtype - eSAU208 5 +6 2 100% +Slimtype - eSEU206 2 +6 9 100% +Slimtype - eSEU306 2 +6 2 100% +Slimtype - eTAU108 1 +6 72 100% +Slimtype - eTAU108 2 +6 89 100% +Slimtype - eTAU108 3 +6 70 100% +Slimtype - eTAU208 1 +6 18 100% +Slimtype - eTAU208 2 +6 19 100% +Slimtype - eUAU108 5 +6 4 100% +Slimtype - eUAU108 5A +6 14 100% +slimtype - Top Load DVDROM +6 1 100% +Slimtype - Top Load DVDRW +6 2 100% +SONY - BD RW BDX-S500U +48 28 100% +SONY - BD RW BDX-S600U +48 26 100% +SONY - BD RW BWU-500S +6 70 100% +SONY - BD-ROM BDU-X10S +79 104 100% +SONY - BDRW BWU-100A +102 10 100% +SONY - BDRW BWU-200S +102 13 100% +SONY - BDRW BWU-300S +102 4 100% +SONY - CD-ROM CDU5231 +691 11 100% +SONY - CD-ROM CDU4821 +12 4 100% +SONY - CD-ROM CDU5211 +600 44 100% +SONY - CD-ROM CDU5212 +12 4 100% +SONY - CD-ROM CDU5215 +12 8 100% +SONY - CD-ROM CDU5221 +12 54 100% +SONY - CD-ROM CDU5225 +6 15 100% +SONY - CD-ROM CDU5232 +6 3 100% +SONY - CD-ROM CDU5261 +691 1 100% +SONY - CD-ROM CDU701-25 +564 1 100% +SONY - CD-ROM CDU701 +564 10 100% +SONY - CD-ROM CDU711 +99 3 100% +SONY - CD-RW CRX100E +1160 31 100% +SONY - CD-RW CRX10U +572 3 100% +SONY - CD-RW CRX120E +1160 9 100% +SONY - CD-RW CRX140E +572 101 100% +SONY - CD-RW CRX140S +572 4 100% +SONY - CD-RW CRX145E +572 13 100% +SONY - CD-RW CRX145S +572 1 100% +SONY - CD-RW CRX160E +572 54 100% +SONY - CD-RW CRX160S +572 2 100% +SONY - CD-RW CRX168B +6 2 100% +SONY - CD-RW CRX175A1 +12 57 100% +SONY - CD-RW CRX175A +120 12 100% +SONY - CD-RW CRX175E2 +97 8 100% +SONY - CD-RW CRX175E +120 22 100% +SONY - CD-RW CRX185E1 +12 13 100% +SONY - CD-RW CRX185E3 +12 10 100% +SONY - CD-RW CRX195E1 +12 55 100% +SONY - CD-RW CRX210E1 +6 104 100% +SONY - CD-RW CRX215E1 +6 37 100% +SONY - CD-RW CRX215E5 +733 6 100% +SONY - CD-RW CRX216E +6 100 100% +SONY - CD-RW CRX217E +6 70 100% +SONY - CD-RW CRX220E1 +6 98 100% +SONY - CD-RW CRX225E +6 43 100% +SONY - CD-RW CRX230E +6 118 100% +SONY - CD-RW CRX230ED +6 133 100% +SONY - CD-RW CRX230EE +6 85 100% +SONY - CD-RW CRX300E +6 64 100% +SONY - CD-RW CRX320E +6 110 100% +SONY - CD-RW CRX320EE +6 98 100% +SONY - CD-RW CRX700E +572 18 100% +SONY - CD-RW CRX810E +120 18 100% +SONY - CD-RW CRX820E +120 4 100% +SONY - CD-RW CRX830E +6 27 100% +SONY - CD-RW CRX835E +6 10 100% +SONY - CD-RW CRX85A +120 1 100% +SONY - CD-RW CRXP-90MU +120 1 100% +SONY - CD-RW MPD-AP20U +120 4 100% +SONY - CD-RW CRX0811 +688 20 100% +SONY - CD-RW CRX1611 +690 27 100% +SONY - CD-RW CRX175E 0 2 100% +SONY - CD-RW CRX230ED +6 1 100% +SONY - CDRW-DVD CRX330E +6 24 100% +SONY - CDRW-DVD CRX830E +6 64 100% +SONY - CDRW-DVD CRX835E +6 43 100% +SONY - CDRWDVD CRX310EE +6 54 100% +SONY - CDRWDVD CRX310S +6 39 100% +SONY - CDRWDVD CRX850E +6 8 100% +SONY - CDRWDVD CRX880A +6 77 100% +SONY - CDRWDVD CRX960A +6 4 75% +SONY - CDU4811 -1164 16 100% +SONY - CDU5211 +600 13 100% +SONY - DVD RW AD-7200A +48 5 100% +SONY - DVD RW AD-7200S +48 8 100% +SONY - DVD RW AD-7220S +6 3 100% +SONY - DVD RW AD-7240S +48 40 100% +SONY - DVD RW AD-7260S +48 50 100% +SONY - DVD RW AD-7280S +48 42 100% +SONY - DVD RW AW-G170A +48 288 100% +SONY - DVD RW AW-G170S +48 71 100% +SONY - DVD RW AW-G540A +48 83 100% +SONY - DVD RW AW-G630A +48 12 100% +SONY - DVD RW AW-G910A +48 8 100% +SONY - DVD RW AW-Q160A +6 2 100% +SONY - DVD RW AW-Q170A +48 115 100% +SONY - DVD RW AW-Q540A +48 3 100% +SONY - DVD RW DRU-180A +6 24 100% +SONY - DVD RW DRU-190A +6 90 100% +SONY - DVD RW DRU-190S +6 114 100% +SONY - DVD RW DRU-500A +120 197 100% +SONY - DVD RW DRU-510A +120 305 100% +SONY - DVD RW DRU-530A +689 102 100% +SONY - DVD RW DRU-540A +691 15 100% +SONY - DVD RW DRU-700A +12 185 100% +SONY - DVD RW DRU-710A +12 303 100% +SONY - DVD RW DRU-720A +12 175 100% +SONY - DVD RW DRU-800A +12 214 100% +SONY - DVD RW DRU-810A +618 332 100% +SONY - DVD RW DRU-820A +102 279 100% +SONY - DVD RW DRU-830A +6 315 100% +SONY - DVD RW DRU-835A +6 24 100% +SONY - DVD RW DRU-840A +6 246 100% +SONY - DVD RW DRU-842A +48 37 100% +SONY - DVD RW DRU-845S +6 24 100% +SONY - DVD RW DRU-860A +6 4 100% +SONY - DVD RW DRU-860S +6 26 100% +SONY - DVD RW DRU-865S +6 43 100% +SONY - DVD RW DRU-870S +48 69 100% +SONY - DVD RW DRU-875S +48 23 100% +SONY - DVD RW DRU-880S +48 72 100% +SONY - DVD RW DRU-V200A +48 54 100% +SONY - DVD RW DRU-V200S +48 73 100% +SONY - DVD RW DRU-V202A +48 6 100% +SONY - DVD RW DRU-V204A +48 15 100% +SONY - DVD RW DRX-S70U [Purged] +SONY - DVD RW DRX-S90U +48 17 100% +SONY - DVD RW DW-D150A +48 34 100% +SONY - DVD RW DW-D18A +12 32 100% +SONY - DVD RW DW-D22A +12 131 100% +SONY - DVD RW DW-D23A +12 19 100% +SONY - DVD RW DW-D26A +12 42 100% +SONY - DVD RW DW-D56A +12 63 100% +SONY - DVD RW DW-G120A +6 171 100% +SONY - DVD RW DW-G121A +6 61 100% +SONY - DVD RW DW-G520A +594 42 100% +SONY - DVD RW DW-G521A +594 4 100% +SONY - DVD RW DW-Q120A +6 117 100% +SONY - DVD RW DW-Q28A +12 124 100% +SONY - DVD RW DW-Q30A +6 147 100% +SONY - DVD RW DW-Q31A +6 89 100% +SONY - DVD RW DW-Q520A +594 25 100% +SONY - DVD RW DW-Q58A +6 66 100% +SONY - DVD RW DW-Q78A +6 5 100% +SONY - DVD RW DW-U12A +120 62 100% +SONY - DVD RW DW-U14A +120 67 100% +SONY - DVD RW DW-U18A +12 50 100% +SONY - DVD RW DW-U50A +120 24 100% +SONY - DVD RW DW-U54A +120 8 100% +SONY - DVD RW DW-U55A +120 18 100% +SONY - DVD+-RW AW-Q160S +6 35 100% +SONY - DVD+-RW DW-D56A +12 128 100% +SONY - DVD+-RW DW-Q58A +6 313 100% +SONY - DVD+RW DRU-120A +120 2 100% +SONY - DVD+RW DW-P50A +120 27 100% +SONY - DVD+RW DW-R56A +12 16 100% +SONY - DVD-ROM DDU1211 +594 6 100% +SONY - DVD-ROM DDU1611 +594 15 100% +SONY - DVD-ROM DDU1612 +12 403 100% +SONY - DVD-ROM DDU1613 +12 93 100% +SONY - DVD-ROM DDU1615 +6 831 100% +SONY - DVD-ROM DDU1615S +6 103 100% +SONY - DVD-ROM DDU1622 +12 35 100% +SONY - DVD-ROM DDU1632 +6 15 100% +SONY - DVD-ROM DDU1642 +6 5 100% +SONY - DVD-ROM DDU1678A +6 4 100% +SONY - DVD-ROM DDU1681S +6 15 100% +SONY - DVD-ROM DDU220E +564 1 100% +SONY - DVD-ROM DDU810A +6 28 100% +SONY - LucidPort USB300 +48 1 100% +SUPERA - DSM-6S165P +6 5 100% +TDK - CDRW121032 +99 17 100% +TDK - CDRW121032A +97 6 100% +TDK - CDRW161040 +99 4 100% +TDK - CDRW161040X +688 9 100% +TDK - CDRW161040XA +688 2 100% +TDK - CDRW241040B +12 34 100% +TDK - CDRW241040UEX +688 1 100% +TDK - CDRW241040X +688 12 100% +TDK - CDRW321040B +12 21 100% +TDK - CDRW321040X +688 13 100% +TDK - CDRW401240B +12 21 100% +TDK - CDRW401248B +12 5 100% +TDK - CDRW401248UEX +688 7 100% +TDK - CDRW4800B +6 88 100% +TDK - CDRW4800D +6 2 100% +TDK - CDRW481648UED +12 4 100% +TDK - CDRW482448BC +6 5 100% +TDK - CDRW5200B +6 52 100% +TDK - CDRW5200D +6 1 100% +TDK - CDRW5201B +6 8 100% +TDK - CDRW5210UEB +6 7 100% +TDK - CDRW522432UED +6 3 100% +TDK - CDRW522448UED +6 6 100% +TDK - CDRW8432 +355 3 66% +TDK - DVDRW0404N +48 63 100% +TDK - DVDRW1280B +12 10 100% +TDK - DVDRW1616N +48 22 100% +TDK - DVDRW420N +48 17 100% +TDK - DVDRW840G +30 25 100% +TDK - DVDRW880N +48 29 100% +TDK - DVDRW882N +48 3 100% +TEAC - BD-C16SS-A +667 7 100% +TEAC - BD-C24S-A +667 3 100% +TEAC - BD-C24SS-A +6 5 100% +TEAC - BD-C26PUK-SS93 +6 2 100% +TEAC - BD-C26SS-A +6 11 100% +TEAC - BD-W26SS-B +667 12 100% +TEAC - BD-W512GSA +6 32 100% +TEAC - BD-W512S-A +667 8 100% +TEAC - CD-210PU +678 6 100% +TEAC - CD-220EA +684 4 100% +TEAC - CD-224E-B +534 9 100% +TEAC - CD-224E-BA +678 9 100% +TEAC - CD-224E-C +678 11 100% +TEAC - CD-224E-N +102 12 100% +TEAC - CD-224E-R +6 6 100% +TEAC - CD-224PE +684 1 100% +TEAC - CD-224S-R +6 3 100% +TEAC - CD-5010A +6 3 100% +TEAC - CD-524E +668 1 100% +TEAC - CD-524EA-B +684 1 100% +TEAC - CD-524EA +96 3 100% +TEAC - CD-532E-A +96 14 100% +TEAC - CD-532E-B +684 45 100% +TEAC - CD-532E +96 6 100% +TEAC - CD-540E -496 148 100% +TEAC - CD-552E +12 10 100% +TEAC - CD-552G +12 5 100% +TEAC - CD-552GA +6 8 100% +TEAC - CD-552GB +6 1 100% +TEAC - CD-58E +935 1 100% +TEAC - CD-R55S +688 11 100% +TEAC - CD-ROM CD-224E-N +102 9 100% +TEAC - CD-ROM CD-516S +680 1 100% +TEAC - CD-ROM CD-532S +92 36 100% +TEAC - CD-W216E +685 9 100% +TEAC - CD-W224E +685 23 100% +TEAC - CD-W224EA +685 12 100% +TEAC - CD-W28E +685 16 100% +TEAC - CD-W512EB +685 75 100% +TEAC - CD-W512SB +685 16 100% +TEAC - CD-W516EB +685 64 100% +TEAC - CD-W516EC +685 6 100% +TEAC - CD-W540E +686 293 100% +TEAC - CD-W548E +12 19 100% +TEAC - CD-W54E +685 124 100% +TEAC - CD-W552DA +6 34 100% +TEAC - CD-W552E +6 152 100% +TEAC - CD-W552EL +6 1 100% +TEAC - CD-W552G +6 55 100% +TEAC - CD-W552GB +6 16 100% +TEAC - CD-W552GC +6 5 100% +TEAC - CD-W58E +685 107 100% +TEAC - CDRWDVD DW224EV +102 15 100% +TEAC - CDRWDVD DW224SLR +102 21 100% +TEAC - DV-18E +102 11 100% +TEAC - DV-28E-B +102 6 100% +TEAC - DV-28E-C +102 4 100% +TEAC - DV-28E-N +102 6 100% +TEAC - DV-28E-R +102 2 100% +TEAC - DV-28E-V +6 11 100% +TEAC - DV-28E -472 1 100% +TEAC - DV-28S-V +6 5 100% +TEAC - DV-28S-W +6 8 100% +TEAC - DV-28S-Y +702 1 100% +TEAC - DV-28SL-R +102 1 100% +TEAC - DV-28SL +102 11 100% +TEAC - DV-28SS-W +102 4 100% +TEAC - DV-516G +6 64 100% +TEAC - DV-516GA +6 48 100% +TEAC - DV-516GB +6 6 100% +TEAC - DV-516GC +6 13 100% +TEAC - DV-516GS +6 2 100% +TEAC - DV-518GS +6 19 100% +TEAC - DV-518GSA +6 9 100% +TEAC - DV-518GSB +6 1 100% +TEAC - DV-W22E +102 21 100% +TEAC - DV-W24E +102 9 100% +TEAC - DV-W24EP +102 3 100% +TEAC - DV-W24ES +102 9 100% +TEAC - DV-W24EW +102 8 100% +TEAC - DV-W28E-R +48 28 100% +TEAC - DV-W28E-RF +48 4 100% +TEAC - DV-W28E +102 60 100% +TEAC - DV-W28EA +102 57 100% +TEAC - DV-W28EAD +102 5 100% +TEAC - DV-W28EADT +102 8 100% +TEAC - DV-W28EAT +102 5 100% +TEAC - DV-W28EAW +102 1 100% +TEAC - DV-W28EC +48 37 100% +TEAC - DV-W28ECF +48 5 100% +TEAC - DV-W28ECS +48 2 100% +TEAC - DV-W28ECT +48 22 100% +TEAC - DV-W28ECW +48 1 100% +TEAC - DV-W28EW +102 4 100% +TEAC - DV-W28PUK-T +48 39 100% +TEAC - DV-W28S-R91 +48 1 100% +TEAC - DV-W28S-R +48 51 100% +TEAC - DV-W28S-RT +48 34 100% +TEAC - DV-W28S-V +96 82 100% +TEAC - DV-W28S-VT +96 25 100% +TEAC - DV-W28S-VTF +96 4 100% +TEAC - DV-W28S-W +48 26 100% +TEAC - DV-W28SLC +48 3 100% +TEAC - DV-W28SLCF +48 4 100% +TEAC - DV-W28SLCTF +48 7 100% +TEAC - DV-W28SS-B +48 2 100% +TEAC - DV-W28SS-R +6 14 100% +TEAC - DV-W28SS-RTF +6 6 100% +TEAC - DV-W28SS-V +6 10 100% +TEAC - DV-W28SS-W +48 10 100% +TEAC - DV-W28U-V +96 8 100% +TEAC - DV-W5000E +96 8 100% +TEAC - DV-W5000S +96 51 100% +TEAC - DV-W50D +48 34 100% +TEAC - DV-W50E +48 18 100% +TEAC - DV-W512G +12 4 100% +TEAC - DV-W516E +102 33 100% +TEAC - DV-W516G +12 9 100% +TEAC - DV-W516GA +12 11 100% +TEAC - DV-W516GB +12 31 100% +TEAC - DV-W516GC +6 11 100% +TEAC - DV-W516GD +6 3 100% +TEAC - DV-W516GDM +6 16 100% +TEAC - DV-W518GM +6 37 100% +TEAC - DV-W520GM +6 15 100% +TEAC - DV-W520GS +6 8 100% +TEAC - DV-W522GM +6 3 100% +TEAC - DV-W522GMA +6 27 100% +TEAC - DV-W522GS +6 4 100% +TEAC - DV-W524GS +6 24 100% +TEAC - DV-W524GSB +6 27 100% +TEAC - DV-W524GSC +6 18 100% +TEAC - DV-W524GSD +6 11 100% +TEAC - DV-W5500S +48 3 100% +TEAC - DV-W5600S +48 38 100% +TEAC - DV-W58D +48 3 100% +TEAC - DV-W58G-A +12 11 100% +TEAC - DV-W58G +12 27 100% +TEAC - DVD+-RW DV-W28SV +96 4 100% +TEAC - DVD+-RW DVW28SLC +48 190 100% +TEAC - DVD+-RW DVW28SLZ +102 11 100% +TEAC - DVD+RW DV-W58E +686 109 100% +TEAC - DVD-ROM DV-28E-C +102 28 100% +TEAC - DVD-ROM DV-28PU +102 1 100% +TEAC - DVD-ROM DV-28SW +6 10 100% +TEAC - DVD-ROM DV18SA +6 31 100% +TEAC - DVD-ROM DV28EV +6 15 100% +TEAC - DVD-ROM DV28SV +6 17 100% +TEAC - DVD-ROM DW224SLR +102 8 100% +TEAC - DW-224E-A +102 82 100% +TEAC - DW-224E-B +102 27 100% +TEAC - DW-224E-C +102 60 100% +TEAC - DW-224E-R +102 26 100% +TEAC - DW-224E-V +102 48 100% +TEAC - DW-224E +102 86 100% +TEAC - DW-224SL-R +102 76 100% +TEAC - DW-224SS-W +102 1 100% +TEAC - DW-225 +102 20 100% +TEAC - DW-28E +690 11 100% +TEAC - DW-548D +6 24 100% +TEAC - DW-552G +6 34 100% +TEAC - DW-552GA +6 12 100% +TEAC - PU-DVR10 +6 22 100% +ThinkPad - Ultraslim DVD +6 21 100% +TORiSAN - DVD-ROM DRD-U424 -472 3 100% +TORiSAN - DVD-ROM DRD-U824 -472 1 100% +TOSHIBA - CD-DVDW SD-R5372 +704 82 100% +TOSHIBA - CD-DVDW SD-R6472 +116 28 100% +TOSHIBA - CD-DVDW SDR5372V +704 29 100% +TOSHIBA - CD-DVDW SDR5472C +6 8 100% +TOSHIBA - CD-DVDW SDR5472D +6 1 100% +TOSHIBA - CD-DVDW SDR6472U +704 3 100% +TOSHIBA - CD-DVDW SDR6572M +116 17 100% +TOSHIBA - CD-R-RW SR-C8102 -472 5 100% +TOSHIBA - CD-R-RW SRM8202C +145 3 100% +TOSHIBA - CD-ROM XM-1702BC +686 9 100% +TOSHIBA - CD-ROM XM-1802D +98 1 100% +TOSHIBA - CD-ROM XM-1902B +94 15 100% +TOSHIBA - CD-ROM XM-6202B +686 5 100% +TOSHIBA - CD-ROM XM-6202BH +686 4 100% +TOSHIBA - CD-ROM XM-6202S +686 1 100% +TOSHIBA - CD-ROM XM-6302B +98 16 100% +TOSHIBA - CD-ROM XM-6401TA +685 2 100% +TOSHIBA - CD-ROM XM-6402B +94 3 100% +TOSHIBA - CD-ROM XM-6502B +94 2 100% +TOSHIBA - CD-ROM XM-6602B +94 4 100% +TOSHIBA - CD-ROM XM-6702B +94 34 100% +TOSHIBA - CD-ROM XM-7002B +94 4 100% +TOSHIBA - CD-ROM XM-7002Bc +94 4 100% +TOSHIBA - CDRW-DVD SDR2102 +708 31 100% +TOSHIBA - CDW-DVD SD-R1612 +6 10 100% +TOSHIBA - CDW-DVD SD-R2612 +6 5 100% +TOSHIBA - CDW-DVD SDR1712C +6 3 100% +TOSHIBA - CDW-DVD SDR2612C +6 2 100% +TOSHIBA - DFD-ROM SD-C2&1' -472 1 100% +TOSHIBA - DVD-HD SD-H802A +697 96 100% +TOSHIBA - DVD-HD X807616 +697 160 100% +TOSHIBA - DVD-HDW SD-L902A +696 7 100% +TOSHIBA - DVD-HDW SD-L912A +696 2 100% +TOSHIBA - DVD-ROM SD-C2102 +116 1 100% +TOSHIBA - DVD-ROM SD-C2202 +116 5 100% +TOSHIBA - DVD-ROM SD-C2302 -472 12 100% +TOSHIBA - DVD-ROM SD-C2402 -472 39 100% +TOSHIBA - DVD-ROM SD-C2502 -472 72 100% +TOSHIBA - DVD-ROM SD-C2512 -472 14 100% +Toshiba - DVD-ROM SD-C2612 -472 64 100% +TOSHIBA - DVD-ROM SD-M1201 +111 3 100% +TOSHIBA - DVD-ROM SD-M1202 +116 19 100% +TOSHIBA - DVD-ROM SD-M1212 +116 35 100% +TOSHIBA - DVD-ROM SD-M1222 -472 7 100% +TOSHIBA - DVD-ROM SD-M1302 -472 22 100% +TOSHIBA - DVD-ROM SD-M1401 -472 20 100% +TOSHIBA - DVD-ROM SD-M1402 -472 52 100% +TOSHIBA - DVD-ROM SD-M1502 -472 148 100% +TOSHIBA - DVD-ROM SD-M1612 -472 629 100% +TOSHIBA - DVD-ROM SD-M1711 -472 2 100% +TOSHIBA - DVD-ROM SD-M1712 -472 550 100% +TOSHIBA - DVD-ROM SD-M1912 +12 204 100% +TOSHIBA - DVD-ROM SD-R1002 +708 18 100% +TOSHIBA - DVD-ROM SD-R1102 +708 9 100% +TOSHIBA - DVD-ROM SD-R1202 -472 35 100% +TOSHIBA - DVD-ROM SD-R1312 +116 42 100% +TOSHIBA - DVD-ROM SD-R2002 +708 22 100% +TOSHIBA - DVD-ROM SD-R2102 +708 69 100% +TOSHIBA - DVD-ROM SD-R2212 +116 46 100% +TOSHIBA - DVD-ROM SD-R2312 +116 77 100% +TOSHIBA - DVD-ROM SD-R2412 +116 69 100% +TOSHIBA - DVD-ROM SD-R2512 +116 134 100% +TOSHIBA - DVD-ROM SD-R5002 +116 75 100% +TOSHIBA - DVD-ROM SD-R5112 +116 82 100% +TOSHIBA - DVD-ROM SD-R6012 +116 29 100% +TOSHIBA - DVD-ROM SD-R6112 +116 89 100% +TOSHIBA - DVD-ROM SD-R9012 +116 87 100% +TOSHIBA - DVD-ROM SDM2012C +6 86 100% +TOSHIBA - DVD-ROM SDR2512N +116 1 100% +TOSHIBA - DVD-ROM SDR6112F +116 3 100% +TOSHIBA - DVDW-HD SD-L802B +696 25 100% +TOSHIBA - DVDW-HD TS-L802A +696 149 100% +Toshiba - ODD-DVD SD-C2732 +691 1 100% +TOSHIBA - ODD-DVD SD-M1802 +691 193 100% +TOSHIBA - ODD-DVD SD-R1412 +116 1 100% +TOSHIBA - ODD-DVD SD-R1512 +116 12 100% +TOSHIBA - ODD-DVD SD-R5272 +116 34 100% +TOSHIBA - ODD-DVD SD-R6252 +116 24 100% +TOSHIBA - ODD-DVD SD-R6372 +116 68 100% +TOSHIBA - ODD-DVD SDR1412N +116 1 100% +TOSHIBA - ODD-DVD SDR1412T +116 4 100% +TOSHIBA - SuperMulti Drive +6 1 100% +Toshiba - SuperMultiPA3761 +6 47 100% +TOSHIBA - SuperMultiPA3834 +96 15 100% +TS8XDVDR - Transcend +6 102 100% +TS8XDVDS - TRANSCEND +6 36 100% +TSSTcorp - AA-ES0PN21 +6 1 100% +TSSTcorp - BDDVDW SE-506AB +6 207 100% +TSSTcorp - BDDVDW SE-506BB +6 247 100% +TSSTcorp - BDDVDW SE-506CB +6 158 100% +TSSTcorp - BDDVDW SN-506AB +6 49 100% +TSSTcorp - BDDVDW SN-506BB +6 70 100% +TSSTcorp - BDDVDW +6 1 100% +TSSTcorp - CD-DVDW SDR5372V +704 3 100% +TSSTcorp - CD-DVDW SE-T084L +6 29 100% +TSSTcorp - CD-DVDW SH-S162A +48 81 100% +TSSTcorp - CD-DVDW SH-S162L +6 426 100% +TSSTcorp - CD-DVDW SH-S162S +6 2 100% +TSSTcorp - CD-DVDW SH-S182D +6 1072 100% +TSSTcorp - CD-DVDW SH-S182F +6 74 100% +TSSTcorp - CD-DVDW SH-S182M +6 1525 100% +TSSTcorp - CD-DVDW SH-S183A +6 737 100% +TSSTcorp - CD-DVDW SH-S183L +6 830 100% +TSSTcorp - CD-DVDW SH-W162C +6 330 100% +TSSTcorp - CD-DVDW SH-W162D +6 7 100% +TSSTcorp - CD-DVDW SH-W162L +6 99 100% +TSSTcorp - CD-DVDW SH-W162Z +6 35 100% +TSSTcorp - CD-DVDW SH-W163A +6 99 100% +TSSTcorp - CD-DVDW SN-S082D +6 93 100% +TSSTcorp - CD-DVDW SN-S082M +6 3 100% +TSSTcorp - CD-DVDW SN-T082A +6 1 100% +TSSTcorp - CD-DVDW SN-T082L +6 9 100% +TSSTcorp - CD-DVDW SN-W082B +704 7 100% +TSSTcorp - CD-DVDW TS-H542A +116 10 100% +TSSTcorp - CD-DVDW TS-H552A +704 7 100% +TSSTcorp - CD-DVDW TS-H552B +12 284 100% +TSSTcorp - CD-DVDW TS-H552D +6 102 100% +TSSTcorp - CD-DVDW TS-H552L +6 155 100% +TSSTcorp - CD-DVDW TS-H552U +12 294 100% +TSSTcorp - CD-DVDW TS-H652D +6 120 100% +TSSTcorp - CD-DVDW TS-H652L +6 169 100% +TSSTcorp - CD-DVDW TS-H652M +6 103 100% +TSSTcorp - CD-DVDW TS-H653A +6 15 100% +TSSTcorp - CD-DVDW TS-H653L +6 378 100% +TSSTcorp - CD-DVDW TS-L532A +116 142 100% +TSSTcorp - CD-DVDW TS-L532L +116 8 100% +TSSTcorp - CD-DVDW TS-L532M +116 106 100% +TSSTcorp - CD-DVDW TS-L532R +116 17 100% +TSSTcorp - CD-DVDW TS-L532U +704 51 100% +TSSTcorp - CD-DVDW TS-L632B +696 46 100% +TSSTcorp - CD-DVDW TS-L632C +696 23 100% +TSSTcorp - CD-DVDW TS-L632D +6 667 100% +TSSTcorp - CD-DVDW TS-L632L +696 10 100% +TSSTcorp - CD-DVDW TS-L632M +6 136 100% +TSSTcorp - CD-DVDW TS-S532A +704 1 100% +TSSTcorp - CD-DVDW TS-T632A +6 12 100% +TSSTcorp - CD-R-RW SH-R522C +145 42 100% +TSSTcorp - CD-R-RW TS-H292A +145 15 100% +TSSTcorp - CD-R-RW TS-H292B +145 1 100% +TSSTcorp - CD-R-RW TS-H292C +145 4 100% +TSSTcorp - CD-ROM SH-C522C +6 39 100% +TSSTcorp - CD-ROM TS-H192C +6 35 100% +TSSTcorp - CD-ROM TS-L162C +6 32 100% +TSSTcorp - CD-RW TS-H292B +145 47 100% +TSSTcorp - CD-RW TS-H292C +145 8 100% +TSSTcorp - CDDVDW SE-208AB +6 353 100% +TSSTcorp - CDDVDW SE-208BW +6 20 100% +TSSTcorp - CDDVDW SE-208DB +6 595 100% +TSSTcorp - CDDVDW SE-208FB +6 1 100% +TSSTcorp - CDDVDW SE-208GB +6 223 100% +TSSTcorp - CDDVDW SE-218BB +6 133 100% +TSSTcorp - CDDVDW SE-218CB +6 75 100% +TSSTcorp - CDDVDW SE-218CN +6 102 100% +TSSTcorp - CDDVDW SE-218GN +6 49 100% +TSSTcorp - CDDVDW SE-218GP +6 1 100% +TSSTcorp - CDDVDW SE-B18AB +6 33 100% +TSSTcorp - CDDVDW SE-S084B +6 207 100% +TSSTcorp - CDDVDW SE-S084C +6 563 100% +TSSTcorp - CDDVDW SE-S084D +6 263 100% +TSSTcorp - CDDVDW SE-S084F +6 396 100% +TSSTcorp - CDDVDW SE-S204N +6 260 100% +TSSTcorp - CDDVDW SE-S204S +6 25 100% +TSSTcorp - CDDVDW SE-S224Q +6 404 100% +TSSTcorp - CDDVDW SE-T084M +6 135 100% +TSSTcorp - CDDVDW SE-T084P +6 30 100% +TSSTcorp - CDDVDW SH-216AB +6 114 100% +TSSTcorp - CDDVDW SH-216BB +6 82 100% +TSSTcorp - CDDVDW SH-216DB +6 59 100% +TSSTcorp - CDDVDW SH-216FB +6 3 100% +TSSTcorp - CDDVDW SH-222AB +6 566 100% +TSSTcorp - CDDVDW SH-222AL +6 138 100% +TSSTcorp - CDDVDW SH-222BB +6 541 100% +TSSTcorp - CDDVDW SH-224BB +6 536 100% +TSSTcorp - CDDVDW SH-224DB +6 845 100% +TSSTcorp - CDDVDW SH-224FB +6 110 100% +TSSTcorp - CDDVDW SH-224GB +6 1 100% +TSSTcorp - CDDVDW SH-S202G +6 60 100% +TSSTcorp - CDDVDW SH-S202H +6 142 100% +TSSTcorp - CDDVDW SH-S202J +6 613 100% +TSSTcorp - CDDVDW SH-S202N +6 542 100% +TSSTcorp - CDDVDW SH-S203B +6 1389 100% +TSSTcorp - CDDVDW SH-S203D +6 875 100% +TSSTcorp - CDDVDW SH-S203N +6 923 100% +TSSTcorp - CDDVDW SH-S203P +6 539 100% +TSSTcorp - CDDVDW SH-S203S +6 16 100% +TSSTcorp - CDDVDW SH-S222A +6 616 100% +TSSTcorp - CDDVDW SH-S222L +6 231 100% +TSSTcorp - CDDVDW SH-S223B +6 629 100% +TSSTcorp - CDDVDW SH-S223C [Purged] +TSSTcorp - CDDVDW SH-S223F +6 1524 100% +TSSTcorp - CDDVDW SH-S223L +6 858 100% +TSSTcorp - CDDVDW SH-S223Q +6 1043 100% +TSSTcorp - CDDVDW SH-S243D +6 76 100% +TSSTcorp - CDDVDW SH-S243N +6 69 100% +TSSTcorp - CDDVDW SN-208AB +6 313 100% +TSSTcorp - CDDVDW SN-208AF +6 2 100% +TSSTcorp - CDDVDW SN-208BB +6 311 100% +TSSTcorp - CDDVDW SN-208DN +6 84 100% +TSSTcorp - CDDVDW SN-208FB +6 112 100% +TSSTcorp - CDDVDW SN-S082H +6 197 100% +TSSTcorp - CDDVDW SN-S082N +6 40 100% +TSSTcorp - CDDVDW SN-S083A +6 49 100% +TSSTcorp - CDDVDW SN-S083B +6 38 100% +TSSTcorp - CDDVDW SN-S083C +6 116 100% +TSSTcorp - CDDVDW SN-S083F +6 59 100% +TSSTcorp - CDDVDW SN-S083N +6 34 100% +TSSTcorp - CDDVDW SN-S083R +6 3 100% +TSSTcorp - CDDVDW SN-T083A +6 7 100% +TSSTcorp - CDDVDW SN-T083C +6 13 100% +TSSTcorp - CDDVDW SU-208AB +6 3 100% +TSSTcorp - CDDVDW SU-208BB +6 39 100% +TSSTcorp - CDDVDW SU-208CB +6 11 100% +TSSTcorp - CDDVDW SU-208DB +48 57 100% +TSSTcorp - CDDVDW SU-208FB +6 67 100% +TSSTcorp - CDDVDW SU-208GB +6 34 94% +TSSTcorp - CDDVDW SU-228CB +6 5 100% +TSSTcorp - CDDVDW SU-228FB +6 16 100% +TSSTcorp - CDDVDW SU-228GB +6 2 100% +TSSTcorp - CDDVDW SU-228HB +6 1 100% +TSSTcorp - CDDVDW SU-B08AB +6 12 100% +TSSTcorp - CDDVDW TS-H652H +6 16 100% +TSSTcorp - CDDVDW TS-H652J +6 1 100% +TSSTcorp - CDDVDW TS-H652N +6 4 100% +TSSTcorp - CDDVDW TS-H653B +6 101 100% +TSSTcorp - CDDVDW TS-H653D +6 1 100% +TSSTcorp - CDDVDW TS-H653E +6 2 100% +TSSTcorp - CDDVDW TS-H653F +6 55 100% +TSSTcorp - CDDVDW TS-H653G +6 74 100% +TSSTcorp - CDDVDW TS-H653J +6 41 100% +TSSTcorp - CDDVDW TS-H653N +6 466 100% +TSSTcorp - CDDVDW TS-H653Q +6 154 100% +TSSTcorp - CDDVDW TS-H653R +6 67 100% +TSSTcorp - CDDVDW TS-H653Z +6 166 100% +TSSTcorp - CDDVDW TS-H662A +6 27 100% +TSSTcorp - CDDVDW TS-H663B +6 53 100% +TSSTcorp - CDDVDW TS-H663C +697 39 100% +TSSTcorp - CDDVDW TS-L632H +6 571 100% +TSSTcorp - CDDVDW TS-L632N +6 223 100% +TSSTcorp - CDDVDW TS-L632P +6 12 100% +TSSTcorp - CDDVDW TS-L633A +6 532 100% +TSSTcorp - CDDVDW TS-L633B +6 201 100% +TSSTcorp - CDDVDW TS-L633C +6 764 100% +TSSTcorp - CDDVDW TS-L633F +6 288 100% +TSSTcorp - CDDVDW TS-L633J +6 165 100% +TSSTcorp - CDDVDW TS-L633L +6 204 100% +TSSTcorp - CDDVDW TS-L633M +6 197 100% +TSSTcorp - CDDVDW TS-L633P +6 42 100% +TSSTcorp - CDDVDW TS-L633W +6 2 100% +TSSTcorp - CDDVDW TS-L633Y +6 26 100% +TSSTcorp - CDDVDW TS-T633A +6 33 100% +TSSTcorp - CDDVDW TS-T633C +6 35 100% +TSSTcorp - CDDVDW TS-T633L +6 2 100% +TSSTcorp - CDDVDW TS-T633P +6 1 100% +TSSTcorp - CDDVDW TS-U633A +6 38 100% +TSSTcorp - CDDVDW TS-U633F +6 62 100% +TSSTcorp - CDDVDW TS-U633J +6 78 100% +TSSTcorp - CDDVDW TSH552B +12 1 100% +TSSTcorp - CDRW-DVD TSH492B +6 56 100% +TSSTcorp - CDRW-DVD TSL462C +6 189 100% +TSSTcorp - CDRW-DVD TSL462D +6 132 100% +TSSTcorp - CDRWDVD TS-H492C +6 110 100% +TSSTcorp - CDRWDVD TS-H493A +6 58 100% +TSSTcorp - CDRWDVD TS-H493B +6 121 100% +TSSTcorp - CDRWDVD TS-L463A +6 3 100% +TSSTcorp - CDRWDVD TS-U463A +102 1 100% +TSSTcorp - CDRWDVD TSL462D +6 122 100% +TSSTcorp - CDW-DVD SH-M522C +6 61 100% +TSSTcorp - CDW-DVD SH-M523A +6 3 100% +TSSTcorp - CDW-DVD SH-M523B +6 2 100% +TSSTcorp - CDW-DVD SN-M242C +6 10 100% +TSSTcorp - CDW-DVD SN-M242D +6 8 100% +TSSTcorp - CDW-DVD TS-H492A +6 89 100% +TSSTcorp - CDW-DVD TS-H492B +6 1 100% +TSSTcorp - CDW-DVD TS-H492C +6 52 100% +TSSTcorp - CDW-DVD TS-H493A +6 11 100% +TSSTcorp - CDW-DVD TS-H493B +6 10 100% +TSSTcorp - CDW-DVD TS-L462A +6 39 100% +TSSTcorp - CDW-DVD TS-L462C +6 81 100% +TSSTcorp - CDW-DVD TS-L462D +6 61 100% +TSSTcorp - CDW-DVD TS-U462A +6 1 100% +TSSTcorp - CDW-DVD TSH492AN +6 2 100% +TSSTcorp - CDW-DVD TSH492CN +6 4 100% +TSSTcorp - DVD+-RW SH-216AB +6 56 100% +TSSTcorp - DVD+-RW SH-216BB +6 66 100% +TSSTcorp - DVD+-RW SH-216CB +6 19 100% +TSSTcorp - DVD+-RW SH-216DB +6 75 100% +TSSTcorp - DVD+-RW SN-208BB +6 151 100% +TSSTcorp - DVD+-RW SN-208DN +6 10 100% +TSSTcorp - DVD+-RW SN-208FB +6 3 100% +TSSTcorp - DVD+-RW SU-208BB +6 19 100% +TSSTcorp - DVD+-RW SU-208CB +6 32 100% +TSSTcorp - DVD+-RW SU-208FB +6 14 100% +TSSTcorp - DVD+-RW SU-208GB +6 27 100% +TSSTcorp - DVD+-RW TS-D633A +6 21 100% +TSSTcorp - DVD+-RW TS-H553A +6 219 100% +TSSTcorp - DVD+-RW TS-H653A +6 422 100% +TSSTcorp - DVD+-RW TS-H653B +6 396 100% +TSSTcorp - DVD+-RW TS-H653F +6 280 100% +TSSTcorp - DVD+-RW TS-H653G +6 401 100% +TSSTcorp - DVD+-RW TS-H653H +697 79 100% +TSSTcorp - DVD+-RW TS-H653J +6 50 100% +TSSTcorp - DVD+-RW TS-L532B +704 136 100% +TSSTcorp - DVD+-RW TS-L632D +6 683 100% +TSSTcorp - DVD+-RW TS-L632H +6 947 100% +TSSTcorp - DVD+-RW TS-L633A +6 40 100% +TSSTcorp - DVD+-RW TS-L633B +6 62 100% +TSSTcorp - DVD+-RW TS-L633C +6 221 100% +TSSTcorp - DVD+-RW TS-L633J +6 145 100% +TSSTcorp - DVD+-RW TS-T633A +6 221 100% +TSSTcorp - DVD+-RW TS-T633C +6 132 100% +TSSTcorp - DVD+-RW TS-U633A +6 186 100% +TSSTcorp - DVD+-RW TS-U633F +6 219 100% +TSSTcorp - DVD+-RW TS-U633J +6 222 100% +TSSTcorp - DVD-ROM SH-116AB +6 2 100% +TSSTcorp - DVD-ROM SH-116BB +6 1 100% +TSSTcorp - DVD-ROM SH-118AB +6 30 100% +TSSTcorp - DVD-ROM SH-118BB +6 14 100% +TSSTcorp - DVD-ROM SH-118CB +6 9 100% +TSSTcorp - DVD-ROM SH-D162C +6 657 100% +TSSTcorp - DVD-ROM SH-D162D +6 286 100% +TSSTcorp - DVD-ROM SH-D162E +102 1 100% +TSSTcorp - DVD-ROM SH-D163A +6 157 100% +TSSTcorp - DVD-ROM SH-D163B +6 569 100% +TSSTcorp - DVD-ROM SH-D163C +6 121 100% +TSSTcorp - DVD-ROM SN-108BB +6 5 100% +TSSTcorp - DVD-ROM SN-108FB +6 2 100% +TSSTcorp - DVD-ROM SU-108BB +6 1 100% +TSSTcorp - DVD-ROM SU-108CB +6 1 100% +TSSTcorp - DVD-ROM TS-353C +6 1 100% +TSSTcorp - DVD-ROM TS-H352A +12 151 100% +TSSTcorp - DVD-ROM TS-H352C +6 308 100% +TSSTcorp - DVD-ROM TS-H352D +6 21 100% +TSSTcorp - DVD-ROM TS-H353A +6 53 100% +TSSTcorp - DVD-ROM TS-H353B +6 363 100% +TSSTcorp - DVD-ROM TS-H353C +6 49 100% +TSSTcorp - DVD-ROM TS-L332A +6 4 100% +TSSTcorp - DVD-ROM TS-L333A +6 2 100% +TSSTcorp - DVD-ROM TS-L333D +6 7 100% +TSSTcorp - DVD-ROM TS-U333A +6 1 100% +TSSTcorp - DVD-ROM TS-U333B +6 12 100% +TSSTcorp - DVD-RW SH-216AB +6 17 100% +TSSTcorp - DVD-RW SH-216BB +6 12 100% +TSSTcorp - DVD-RW SH-216DB +6 4 100% +TSSTcorp - DVD-RW SH-216FB +6 2 100% +TSSTcorp - DVDR-RW TS-T632L +6 13 100% +TSSTcorp - DVDRW TS-H663 +48 1 100% +TSSTcorp - DVDWBD SE-406AB +6 44 100% +TSSTcorp - DVDWBD SH-B123A +6 75 100% +TSSTcorp - DVDWBD SH-B123L +6 774 100% +TSSTcorp - DVDWBD SN-406AB +6 37 100% +TSSTcorp - DVDWBD SN-B063D +6 13 100% +TSSTcorp - DVDWBD TS-LB23A +6 90 100% +TSSTcorp - DVDWBD TS-LB23D +6 45 100% +TSSTcorp - DVDWBD TS-TB23L +6 1 100% +TSSTcorp - SH-D162C 0 2 100% +USB - CD-R-RW 4X4X6 +692 3 100% +USB - CD-R-RW 6X4X6 +692 1 100% +USB - CD-ROM SC-924U +694 8 100% +USB 2.0 - DVD-ROM DR108 +6 4 100% +USB 2.0 - DVD-ROM +6 3 100% +VAXDRV - CDDVDROM 0 17 100% +VERBATIM - 321240AL +12 6 100% +Verbatim - 522452AL +6 5 100% +VIRSCSI - DVD-CD-ROM +98 1 100% +WAITEC - SHUTTLE -436 1 100% +YAMAHA - CRW-70 +733 15 100% +YAMAHA - CRW-F1E +733 634 100% +YAMAHA - CRW-F1S +733 37 100% +YAMAHA - CRW2100E +733 32 100% +YAMAHA - CRW2100S +733 31 100% +YAMAHA - CRW2200E +733 49 100% +YAMAHA - CRW2200S +733 1 100% +YAMAHA - CRW3200E +733 77 100% +YAMAHA - CRW3200S +733 1 100% +YAMAHA - CRW8424E +117 10 100% +YAMAHA - CRW8424S +117 14 100% +YAMAHA - CRW8824E +117 5 100% +YAMAHA - CRW8824S +117 21 100% +YAMAKAWA - DVR-Y08 +48 2 100% +AccurateRip User Count: 318364 + diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/partition.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/partition.py new file mode 100644 index 0000000..579ddc3 --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/RingEdge/partition.py @@ -0,0 +1,1278 @@ +import subprocess +import tempfile +import struct +import zlib +import sys +import os + +from pydantic import BaseModel +from pydantic.dataclasses import dataclass + +from Crypto.Cipher import AES + + +BLOCK_SIZE = 0x400 +NULL_BLOCK = b"\0" * BLOCK_SIZE + + +def try_load(path, game_id, letter="O") -> bool: + app_data = get_appdata(game_id) + if app_data is None: + return False + tmp = tempfile.NamedTemporaryFile(delete=False) + tmp.write(app_data.keyfile) + tmp.close() + try: + tc = subprocess.Popen([ + r"C:\Program Files (x86)\TrueCrypt\TrueCrypt.exe", + "/q", "/s", + "/k", tmp.name, + "/l", letter, + "/v", os.path.abspath(path), + "/m", "ro", + ]) + tc.communicate() + if tc.returncode: + return False + subprocess.Popen([ + r"C:\Program Files (x86)\TrueCrypt\TrueCrypt.exe", + "/q", "/s", + "/d", letter + ]) + return True + finally: + os.remove(tmp.name) + + +last_was_sega = False + + +def dump_block(stream, path, start, end): + global last_was_sega + + num_blocks = (end - start) // BLOCK_SIZE + print(f"{end - 1:08x} ({num_blocks})", end="... ", flush=True) + stream.seek(start) + first_block = stream.read(BLOCK_SIZE) + stream.seek(start) + + ext = "" + if first_block[:6] == b"\x01CD001": + ext = ".01.cdv001" + elif first_block[:6] == b"\xffCD001": + ext = ".ff.cdv001" + elif start == 0: + ext = ".alpha" + elif b"SBTR" in first_block or b"SBYG" in first_block or (len(first_block) < 64 and (b"SD" in first_block or b"SB" in first_block)): + ext = ".sega" + last_was_sega = True + elif last_was_sega: + ext = ".bootid" + last_was_sega = False + + block_path = f"{path}_{start:08X}{ext}" + + with open(block_path, "wb") as fBlock: + for j in range(num_blocks): + block = stream.read(BLOCK_SIZE) + if j == num_blocks - 1: + block = block.rstrip(b"\0") + fBlock.write(block) + print() + stream.read(BLOCK_SIZE) + + #try_load(block_path) + + +def partition_disk(stream, path): + block_start = 0 + + stream.seek(0, 2) + total_size = stream.tell() + stream.seek(0) + in_block = False + for i in range(0, total_size, BLOCK_SIZE): + block = stream.read(BLOCK_SIZE) + if block == NULL_BLOCK: + if in_block and block_start != i: + dump_block(stream, path, block_start, stream.tell() - BLOCK_SIZE) + in_block = False + elif not in_block: + block_start = i + print(f"Block from {block_start:08x}-", end="", flush=True) + in_block = True + + if in_block: + dump_block(stream, path, block_start, stream.tell() - BLOCK_SIZE) + + +class AlphaDvd: + HEADER_KEY = bytes.fromhex( + "b6c5b53dcdc223c03f878ffee021c47b0796fdf245ac3edfa64b85e7b73989423ac32de3e7bb3811720ca58dfaa4a1dd" + "7815f295b79d9c88a8045082b15348cf886e1d1f99cc0a1957184d393d55d011a21706ced447206a4d9d289f42d6df76" + "5026a499da08f50f4bf7e912f07bef8a2e519691ff1c1dbb8c0698de2a791bd14d8b2a731a8565a67f830f67f231a257" + "0e4fd565066ac18db2ad30fc7e7732082514e8b4c7f171ccda02f45b63dabce2e599781df38597b9d848b98643c4ff16" + "1cefa42bcd2e3f9b8c46905f2b5b3dd1c19bb04168afc4a71dad8eeac08d90a93474e675024a4ddd201e43f4f976dc36" + "3eaba822540e29d9689fc2c7dd74146aa581fb3c91eb1eb5ebd6ad78f5ef56346ae5897a3db3cd1e39fb4c9f0adf4e57" + "56446404488181332402c85c9b2a531ec5e5376c83496fbf289b425ecf647246ac58d3abd22de1e7ff3018633ca1ed7e" + "75324c2d1df984c391f51d4993a15368cbc8ee8c0c998a02544e215869bde4c751648e58d7ab5a3df3c59f38d96a9f86" + "cfd465246ec5052aaf00be16befaa2a111600ec1c5bb3c11fa1cb7af9aac60d4db32d03fa78bbe60b0d77b419eb0eb7c" + "b96e5f175cc5212e67903d27deb46be5ab7e393b551c09b92456c275ca52defe623082714acbccee041c8ba8625c8f28" + "fb4e9f4ed7474666400480991210662c09d9289743c6ff5214e6b51bc94ebb4a1fd7c557204a49dda80e51d6997e1d3f" + "9d8c8a8844180b31704ce904f297b7d99481b93454e23582db5edd66160eedc0638cb68fbce8e4cd5030a675825b4fdf" + "645242ecd842b8d26be9aae6090d33bc10fa3eb3ab123462e4995a19f70d0fbbe80ad14f8b6e7b139455a21f07def463" + "64aa5c1f3bd90c938b567c6374a87c5f73508cb08f70f0fffe003c07f8f0effc207c4f7170ccf806f0d3fbd88ca08d50" + "b0b777801f03de7c7376883c17fad0afb4a9fc6c755640648c5893a3532cc3c1ffbc08f90ed3c7df745062ac90cb38f1" + "6fcf267a83a573e49b5a5dff041e8bec6a559e18ff2e1b9f44d6136e4b15f4957b8587bbf808f10fc3e7fb3090732e83" + "8d76b43bef0a3f5394d5b31d059ab8627c8b687bdf8c4e914f0b7f7911d019a30726ea908731e85edb66da16f6f33380" + "1702ce5c5732482d95e996e1f1fddc40308671c2dbdecc64144aa1c17bad82eb58bda6cf946da56fe7232a23102424cc" + "d003a0734e8f4cf7070eefc02784bf9e8cec844981a337208a505eab683bd70d4fb3690bf3698be26b89a62788be06bc" + "dae2e998e02dc5e337a09b525cef243acf2c7bd78d5eb16b4fbf6893c35fed4272cabcc2e1d9f88ce085d1b195518093" + "13444e015c293d75d451228615ce924f6d737488781ff3c19fb0c978bde6c7156c8749e7af3ab922560e6dd1618ef2c3" + "bdf0c5f934d4f337809f12dc7e373a892436ceb44be1ebfea828555a01f43d6fd7254ae3c9bea4a9dc6835d6d1778c1e" + "9bee4a15d6917f0d1fb9c84a99c60b4d7f3518c928b747867fc307e6f3138457825f4f577440608cd083b1714ccb00f6" + "1f2fdba4c3d1fd9c48b18753e4db52dcfe26388b607acfac6ad58f1afd6a579e5cf7270aaf40b697bfd884a19d7094f3" + "b7919d1098323622a810522ae109e32fa3ab32302264084919b10542a2d11f81cf3a793bd50d0bbb601ac36deb66ba1a" + "377280b517c8d68b7c7977dc143aaf20ba563e6bb1a1576843d8fcae6c914b0bf76903f279abc62f49b7a59bf848f98e" + "c2c5dd301c63b4b1ff5c153a8d24bedea66981e33fa18b7278abe42b4d3f3d99c80a91470a6f593594d9b28535acdec2" + "65c8729eb6ebb0a1756c475064ac5cd323c23fc387f7f111c01b83476e6310a435ced247ec7256ae7893e35badc2e3d9" + "bc84e994e1b5f5d551008211460a4d5d311c41b0b577c4170acf4c77160ced846b85a7bfb888601cc3a1f37d894a3bd3" + "0dc7a37b2993614aebc8ae848d98a82454c231c25bcfce665006a0d95a99e60f0dffa40bc96ebf0a9f46d657664204c4" + "911b015628695df904d293f7590592b9725caf2cbbce0e5dd7014e2b593d95c992a1716ccf40768e3cdbe2cb9ce4a55d" + "e107e2f39b9445a03f47967de347ae7a93a753a4d3d3dddc00380770e0fdde40748e78d3ebdaace0c5d9309473a6939f" + "54d4332e039c74b67fa30b2772a0b1574847987c3f7f910d03ba703ae7292b773809713cc5e137e4935b4ddf205a4bfd" + "e846d856ba7a3bb3010622c81c93ab523ce3e5bb7c197b1d95899a20704ee940fa9ea6e990e13de5c773608ad04fa96a" + "7f9b0c57925d6f173cc9e0afd4a53dedc66340ae948fb8e86cdd4212c67d4352ecf846f852fafaaaa001402a8505aabe" + "02bc52f2fbba802504ea9487b9f84cf906d2d7ff5014a2bd12d87ebf2a9b0656c6754242ccdc02384378e9ecee44140a" + "a9407a8fa4ebd4ad3cfde647046e850dabae22981632ea3893634aafc0a795bd9cc8a08551a09753c4df125c6f3538cd" + "6837d6957f850fabea2a910702ee5817b2d93e95af9eace8c4c910b03766821d47927d6b57bc58f3af92ad70f4ff7610" + "2e2598f82ef5835b6ddb60dadaeee800d01ba3432ee381b73588da0af54b43fef822f41b6b5bbdc0c399f40d69b7e593" + "7949dba8c249cdaa2e119e10fe3e3bbb001602ec5853bad02fa5abfe2839575845b83c77f6112e079cfca66d816b2fb3" + "a912706aed886a1d9789de28795fd9449a1a777a01b435eed6076ce345ae3e9bae4294d7b3590d93a95278ebecaa4c1d" + "1b99441a0b757845f834f6f733080710ec3c5ff3418eb2cb3cf1e7df3458e3adb2ed387d7f551408a9047286b5dbd0cd" + "b82c75d651668e1cdfa24b0df7a51be94afbca8ec4c511280750e4bd5ed1678e3edba6c395f59559818333600ac14dab" + "2e339a1476a6398b427ecb24f2d7bf5895a39f34d8f2afb0a9747c6774206c4d5130847186d3d7dd54102a2510e83cd7" + "e353acd2c3fdf844f816f2f3bb900520ae54963beb0ab74386f7d315c4931b455e21786dfd64564264c8509ab26328a3" + "452e2f99ac06d8d6ab7839f74d073ae928f74f077ee121e67f031e65f075ee56166ee101e23f838f76f033e61b0f57f4" + "51628e94cfb0696dff64124a6dd9609ed2e7f930d47b2792bd72d4bf3e99ae069cdea26909f32d83eb7ab9a2470c6f95" + "2d8feae2899421ac76d6376a838577a41bcb4eff4216c6f55340ce984e395b59dd880a1156086d1d7995c193b151488b" + "80670c2f9dac8ec8c48918313644a41dcb82e7592596f9f2cdbc2cfdc64344ee141eabe82ad50f0bff6813d25def063e" + "cba4e3d5bd1cd9a28715ec964be5eb76b83a773a093534ccf007e0f3df9c4cb10f43f6f932d43f2f9bac42d0dfba483d" + "97c9d6a9787dff44160aed48739e94efb429ed6e77120c659479a7c7b77981c33be10be36baba2230026048c988a2050" + "4aa9c06b8da6af98ac24dcd223e03bc70f6ff32182734a8fc4e7152c8fc8e68d1cb9ae46945fa34b2ff3a1937148cb88" + "e60d0dbbac02d85ebb6a1b9745c6334a0fd5e51768c3c9feac28dd4a13d65d67162ce9c4eb14b4bffe802d05fab4a3fd" + "385d7b159499ba04348ef8c2e9d8e8acc4c111a01742c6dd56106e2d19f90cd383d77d4152a8f04fe962fe9a2e7192d1" + "7f8d0ebbca0ed5c7136c4b51fc9c6ab583db7cd9629e96eff021e47f47166ce145ea3692bf7290b737889e02fc5a73fa" + "98a62588fa0eb5cbd2edf864fc567262a8904328e34daf2ebb8a0654c6314a4bddec0658c7a97a7dbb4c1f1bdd4c131a" + "457c257ce5656666000c0198303666a019431ae56967fe303a673829757c457024e4d55300c6194f1b7d595198902324" + "22cc1c1bbb401e83ed7a75ba5c3f3f998c0298563a6b39b1454a23d03da7cfb669a1e77f211a6178edec66540628c948" + "bb8607ccf6072cebc4af1cbdaece844d812b2732a830566a6198f02fe5a37f291b7158c9a8a645843b8f06fed227e0b3" + "d71d4d9329437ae9a8e64d053aad20fe5e377a81a537ec924b6dfb649a5a7ffb009613ee5a17f6d137849f9acc6c155a" + "81e53f6d93694bfbe88ac04d892a37128c74967be38bb661a0f75f055ea1696fff201a437ce964fe56366aa181732c83" + "c97ebd2adf0e5fd7454622480d91a91670e2fd9a487d9f48d78b5e7d73548c389f62d29ff6c135a4dfd245ec365ea769" + "a3e73b29137048e98ce28595b99c40b09773c09f92cd7c357ec5252eef802f05bebcaaec08591b91450a2b513c85e9b6" + "e5b17d4d5330c0798fc2e7d93494fbb681bd34dcf227a0bb561c6fb529cf6a739a9467a43bcf0e7fd305c6b35b0dd7a1" + "5b69dbe8cac8cc8808111200640c4991a11760c2d9de886c1d5b91c51b295378c9e8aec48519a90672c2bdd2c1fdbc4c" + "f107c2f7db14d4b33f019e30fa7ebb2a131644e4154a83c57f251ae968ffce065cc7216a6f992c17dad4ef3438ef6c33" + "5e0d7db54dc323e23b830766e2118613ce5e5776402484d99281752c4fd1658e7ad3afd2a5f1f5dd5010a23502ca5cdf" + "225a0ff5e157e852dafeea2090532ac30de7a73ba902724aadc0e39db48df8a4e5d57104c291d7194d1b39515889a027" + "44a61d8f8aee48159299761c2fbda8ce48559a18773e09bd24ded267e832d63f6b93a553e0dbdaccec045883a1736c8b" + "487f9f0cdf824f4d773408e90cf38797fdd041a8b647a47bc78f7ef123c63f4b97e5d371c8da8ae44941bab423ec3a5f" + "3f5995819b30506aad80eb1cb5afdea469c5eb36b0bb76182f35b8dc6a3592d97e9d2e9f8ecec445002a0514a8bc46f0" + "53eada8ee4c151a89643e4fb569c7eb72b8b267282b553c0df9a4c7d1758c5a93e75b25d2f1fbdc8c289d4292d77f411" + "6a0f95ed9669e1effe2038477861fcfc6674026849d9a88641c4bb1e15fe942fadaaee081d1398543a2f31b8547a27b0" + "b9765c273ca9ec6e551608ed0c7b9785dfb04969bfe483596d9f68d3cbdeec6054ca30d27beb8aa64184b39f14dcb22f" + "21ba743a6f3939555801b03566c6154e834d6f373889603ec7a57be58b7a79bbc40f09ff2c1bdb4cdf025e4f757044e8" + "14d2b3f3198503aa721aa761a2f71b0d57b0596b9fa4cbd0edbc6cf5474266c81492bb7218a725aafe0a3d53d0ddba0c" + "359ed8e6ad18f92ed7875fe54362ea988621c87a9fa6cb94e5b57dc54322e2198703ee7a13b651a6979fdcc4210c6394" + "b5bfdc84298d62b693bf5094b3bf109c32be32ba3232222000400881012226008c109a32722aa101622e818d32bc32fe" + "3a3b331004208c5092b373088701ee3e1bbf409693ff5815b29d369cbeaea88840188321626e890c339e14feb62ba922" + "760a2d51f09df285b5bddcc02184738697dfd445202e459439af46b65ba7c3b7f191d11981032262088501aa3612ae70" + "92f37b898623c83e97afdaa4e1d5f914d0b3b7118c129a767a23b031664e055ca12d67f6312a471c6db56dc76362aa90" + "0720ea5c9f2adb0ed7c757644240cc980a315248ed8c6a95879bfc48719ed0e7bd38dd6a1796ddf6052cafcca60d8daa" + "ae009c12ba723aa3212266080d11b81472a6b19b505cab2c33de1c7fb7098f22fa1ab76382b75384d7935d4d13384178" + "ade4e755240ec9c4ab1c35bedca62d89ea2e918f12fc7a77ba18373688bc06f8d2ebf8a8e44d4132a431ce5a57fe5036" + "a6b99a407c8f68f3cf9e6cf147ca76da36f2b3b311040288541a2b7138c56927f6b13b451e29f96cdf4256ce745262e8" + "98c229c16bafa2ab103426ec904b29f36d8b6a7b9b8447807f0f1ffdc04388f60f2dfbe48b587dbf4c970bcf6e731284" + "75865bc7cf767022e4194b1bf54943baf02be52b6f3b39115008a10562a6919f10dc3a3f33981432ae309a727aaba023" + "442e0d9da88e40d49b3a513e85adbeeca04d4933b411ea1e97efd225e0f7df145ca32d23fe383b77180d31bc54f237a2" + "9b1654e6350acb4cff061ecfe46344ae1c9faaca0cd5831b655a61f8fcee64104a29d1698fe2e399b405e8b6c7b579c5" + "cb32f03be70b2f73b091730c8789fe2c39df48579a5c7f37188d20be56b67ba383376082d15f894e3b5b1dd5811b2152" + "68e9ccea04949bba403c87e9f2edb86c7d575044a81c53b2d13f858fbae828d54b03f67923d63d6bd7ad5af1ebdeac68" + "d5cb12f47b679a3c73f6993e15be9caeac88c80891030266480590b93654a63d8bca6ed90692df7e513684bd9ec8e48d" + "58b1a757a45bc3cffe6030c67943dafcea64985a3bf3098723ea3a932742a6d19791dd1819331404a89c42b0d37bc98e" + "a2c91cb1af56b47be78b3e71b2d53f0d9fa8ca48dd8a0a555e017c2d7df5454222c01d838b767823f4396f5f3558c1a9" + "b665a07f4f177cc161aef6833d61d6f972dcbe2eb98a425ccf207a4fbd68d7cb56fc7276aa38137248ad84eb94a5bdfc" + "c46104e2959799dc08391750c4b91e51f69d3e9dae8e8ccc800901322420cc5813b2512e878dfea429cd6a37929d7694" + "3faf8aae409493bb501ca3ad32fc3a7f3b19151088301662e099d209e52f6fb329037268a9c46b05b6bdbacc2c1ddb80" + "c7196d1f79d1c99aa0614ceb04b69fbec8a485d9b08571a4d7d355cc121a677821f47d67562468c5c932b433ee1a1f77" + "d015a29f16dcf62728ab443e0fbde8c6c954b83e77b2192716acf8c6e950f8bee6a119611ee1e1fffc00780ff1e1dff8" + "40f89ee2e199f00de1a7f7b119411aa1616eef003e07bcf8e6ed10782ff5a15f6953f8d8eaac80c918b12746a6598783" + "ff7811f21da78fbee8a0c559219671e2df9e4cf5074ae7c936b4bbfe083d17d8d4ab3c31fe5c373e89ac26dc962be92a" + "f70b0f77f011e21f87cff66120e65d071aed6877de147ea729ab663a0b3570c4f916d0f7bf189d229e16fef223a03346" + "0e4dd5210e63d0bdb6cdb42dede667002e059cb8ae64905b2bd32dc3e3fbb880610ce385b7bd98c828954382f75b05d6" + "b17b4d9f28db4adfce46544620484999a00740e69d1e99ee0e1ddf804f097f3d19d9089303466e4114a0bd56d077ae1a" + "9f66d217e6d317c4d7134c4f117c0d79b5c5d331c05b8bc66f4136a4b9de48759e58f7af1abd62d69f7ed12786bfda84" + "e5957985c3b3f119c10ba3632aa3012626889c02b8527aeba8a2450c2b9d249edae6e910f03fe7833f6192f17bcd8e2a" + "d90e93cf5e757244ac1cdba2c31de5877be18bf269a9e66f013e25b8fc6e7512486d9d6897c3d7fd5050aab403e87adf" + "ae4a95c7937d4953b8d06bada2ef183d37dc942bad22fe1a3f739095338c169afe6a3192516e8f0cff860fcde62708af" + "04be9eaee880c119a10762e2999601ec3e5fb74987a3fb3891630ea7c9b6a5b9fc4c7116c0f59f58d5ab1e35fad4af3c" + "b9ee4e155e816d2f7fb109433ae129e76f233a2130646c455020a455c213c65f4756646044c8109233620a8545a23f03" + "9e74f277aa1a1776c03586dbd6cd74346ee5016a2f91ad16f8f2efb828755e4174ac7cd76342aed087b1f95cd9229617" + "eed207e4f3578c5e936f4b37f091f31d858bba6038c76963feb82a751a497dbd4cd303c67f4316e4f157c8569a7e7b33" + "9015228e14deb26b29b3650a6b59bd84cb90e53d6dd76142ead88ea0c958b9a647847f870fefe2238037068edcc62148" + "6b9da48fd8e4ad5cf127c6b75b85c7b37909d329c36bebaaa20104228c149aba623883616aef882e159e98ee2c19db08" + "d70b4f7f7110c0398743e6fb129477a61b8f46f65326c295d7915d091b315048a9846384b79f9ccca00d41b2b533cc1e" + "1bff481792dd7e153e8dacaecc840989223602ac50d2bbf209a527eeb20b2572e4b95e59779c1cbbae029c56b27b2b93" + "2542e2d99e80ed1c79b7c59739c94abbc20fc5e737288b407e8f2cfbc68f5cf5274ea749a7a7bbb800700ee1c1fbbc80" + "e91cf1a7d7b559c18bb26128e74d273ea9a8665c0738e96cff46164ee54162ae908f30f87eff221a0774e075ce5256ee" + "7012e2798bc26fc926b69bbe40b497fbd08db0ad74f47766020c4590392756a479c7cb76f832f63b2b133440e09dd281" + "f53d4dd321c27bcb8ee6c115a09f52d4ff3618af24bade2e7993c15fa94a7bdb8cc6815d291f71d0d9ba84258cfa86a5" + "d9f08df0a5f5f555400280550a0b557c0578a5e5f775004a09d5290f73f099f20da5affea029457a25b0fd7e55360cad" + "8cea848599b8047086f1d3d9dc8828155280f51f49d7a95a79fbcc8e08dd0a1b575c45302c65d47126c6955f814f2b7b" + "3991410aa3412ea789be24b8de6a719ad06fad2aff0a1f57d455220e05dcb02f65b27d2b5f3d59d1899221606ecd043a" + "8f24fad6af78b1e75f255ae1e9feec205c4b31f05deb06b6dbb6c1b5b5ddd001a03746865dc7036e6b11b415ea9687fd" + "f045e836d6b77b818733e81ad36fcb26f293b75184939b545c233c21fc7c7776002c05d8b0a775a05f4b57fc5072aeb0" + "8b7078efec225c0f39f94cdb02d65f675224e0d5db10d43b2f13bc50f2bfb2893434eef403686bddac0ed9c68b5c7d37" + "5c8529af66b21b2752a4f1d7d954983a3732883416eaf08bf069edee66100e21d878bfe6831d659679e3cfbe68b1c75b" + "65da70fafeaa28115208e50d6bb7a19b7058ebaca2cd1c39bf44961bef4a37d295f7951d898a22500ea1c97abda2cf1c" + "7db74d872beb2ab3030666c015829b565c673428ed4c731684fd9649e5af7eb12b473e69b1e55f6152e8f8cee840d89a" + "a26108e30da7afbaa820544a21d079afc6a759a587fbf089f02de5e777200a415ca92c77d6156e870defa62b8926368a" + "bc42f0dbfac8ac84c990a13564c651468a5c5f33580db1ad56f073ee9a0e75d251ee9e0efdc243ccfe063ccbe0ebdcac" + "2cddc203c47f071eede067cc361eafe8a2c51d299f60d2dbfec82494dbb2c13da5cff261a8f64f257ae5a97e7d335c0d" + "39bd44d213e65b07d6f573448e18df2a5b1fd5c513284358edac6ed5070aef4837969dfe842d8deaa6819d309c72b6b3" + "bb101422ac10da3af32b832762a2911700ce185f3b591d91891230626c89483b9705ceb24b2df3e59b7859fb8c8689dc" + "283d57d055aa1e17fed027a4bbde0c7d9749c7ab7a39b3450e2bd92c97cbd6ed7074ee74126a6999e00fc1e7bf389962" + "1e87edf265a87e5f375885a1bf74907b2f93ad52f0fbfe882c15da90e73d29df6853dadcee2418cb28f34f8f6ef30386" + "77c217c6d7574446004c0919311440a0955380d71b4d5f315849b9a447c0778e1edfe64304e6951f89ce2a591f91cd1a" + "39735c8d28bf46965fe74326e2919711cc1a1b775805b0bd76d4372e8b8c66941fabca2ed18793fd5851ba9427acbace" + "2c59d389d629697ffd005a0bf56947fa70baf62b29337408691df185d3b1d159898223402e858dbaac20dc5a33f219a7" + "07aefa82a551e09fd2c5fd345ce325a2ff1a1d77941dab8e26d896a3f938d56b07b6f9b2c53d2ddfe043c8fe8e2cd9c2" + "8bd46d257ee5216e6f113c05f8b4e7f5314c4b11f41d6b97a5dbf0c9f8ace4c551208651c69b5e5d77140ca98c629497" + "bbd80cb18f52f4fb76983e37ba9826348af84af9cacacccc00180330606ccd40328635cad2cffc6074ce7052eaf88ae0" + "49c9aaa6018c329e36fab2a3312046484598383776803d07daf4eb74b87e7f33180530ac74d673628a9447a07b4f9f6c" + "d343cefe4234c2f1dbd8cca80c519291770c0f99ec0e59d7895e397b5d9d089b02564e655060acd4c331e05fcb46fe52" + "36e2b193514c8b08771e0dfda44fc167ae3a9b265286f5d351cc9a0a755a41fcbc6ef5034a6fd92496dbf6c934b4fff6" + "012c27dcb42feda26f093f3598d82ab503ca7edb26d297f7d115809b12546e2518e92cf7c7176cc341eebe0abd42d2df" + "fe403486f9d2c9fcac6cd54302e6590792fd7a55be1cbfae8a8c44901b23522ce1c5fb3490fb3e91af16bcfae6a91871" + "3ec5a53fed826b49bfa48bd86cbd4ed347ce765226e091d319c50b2b733881612ee7813f259af86afd8a4a5ddf005e0b" + "7d7955d810b237228a1456a2790bd36dcb62fa9aa66180f31f85cfb26929f76d037a69b9e44f4176ac38df6a539ed4e7" + "3528cf48779e1cffa60b8d66b61baf42b6d3b7d19591991010222400c8189323422ec185b3bd10d83ab7238a3652a6f1" + "93d15d890a33520ce5857ba583fb7899e20f85efb629a9667e033c61f4fd7654262c89c82a95078afe4a35d2d1ff9c0c" + "b98e42d4df32582fb5a9de6871ded866bc1afb6a9b8647c477060ecdc4230c279cbcaeec804909b32502ea589fa2cb1c" + "f5a75fa54be3ebbaa021446a0594b9be44b41febc2afd0a5b5fdd44120a655861bcf4e775204e4955b81c73b691bf149" + "cbaae2098523ae329a3672a2b113404e894c3b1f15dc902b2532ec385f7b519c90ab3430ee7c137a49bda4cfd065ac7e" + "d7274aa7c1b7b599d808b10742e6d91690ff3e19bf049e9aee6811d219e70f2ffba083516c8f48f78f1efde2478c7e97" + "2fcba6e391b515c89283756847d874be7eb32b033660a0d55b01d6396b5fbd48d38bd66d6176ec305e6b71b8d46b25b2" + "fd3a5d3f1d9d888a00540a2951788de0a7d5b51dc982a3512c87c9f6ad38fd6e57164ce5056aa781bf3498fa2eb18b52" + "7ceb64ba5e3f7b918513a8525aefe822d41f2bdb2cd3c3dffc40708ef0c3f9f8cce804d093b3510c8389763c2bfd285f" + "5b55dc103a2730a8745e6370a8f44f6172ecb84e7953d8dcaa2c11da18f72f0bbf6092d37fc906b2db3ed1a797bdd8c0" + "a99461a4f7d7154c8309673e29b9645e4374e874de7272aab003606acd8c2a9d069ade6e7112c07d8f4af7cb16f4f377" + "881e13fe5837b699be04bc9eeae089d029a567e6330a0754e4354ec345ee361aaf60b2d73f4997a1db78d9ea8e84cd90" + "292576e4314e4b55fc147aa7a1bb74186b3db1cd5a31f25daf0ebfca86c5d5310c4390f53f4d9729cb6afb8a8645c433" + "0e07dcf4276ca34d2f3fb9884218c7296b7fb908531ac56d277ea129677e2138657c6574646444400080110202444c01" + "18213464e4554202c45d031a657865fc74766620084118a12566e6110e03dc7c377e812d27feb02b653a6d397d5d5110" + "80310642c4dd1218673c29fd6c575244ec145aa3e13be50b6b7bb9804308e70d2fbfa88a405c8b28735e8d6cb74f876f" + "e323a233020644c4110a03546c255ce125e6f7130c47907d2f5fb549c3abf229a1676e23182534ecf4476062cc9c0ab9" + "425acfec62548e38db6adb8ec6c555200e41d4b93e55b61daf8eaec8848199301462a491db18d52b0f37f890e33da1cf" + "7a71bad42f2dbbec0a595f994c1b1b555c01382574e475464244cc101a237028e54d6336a0b9565867bc38ff6e131e45" + "f4356ec7056ea709af26ba9a267082f15bc9ceaa481d938956386b7db94c5b13d45d231e25f8f4ef74306e6d11780df1" + "a5d7f151c89a826548639cb4affca06d4d733480f91ed1e79f3cd9e28f94edb46de5676622080510a83456e2718ad24f" + "ed62768a3c53f2d9be84ad9ce8a4c5d131845382d75f455620684dd9209653e6db16d4f737088f00fe1e3ffb808711ec" + "1e5bf7c916b0fb7e992e179edce62508eb0cb78f9eece045c8329637ea928775e057ca56de767222a011420ac54d233e" + "21b8747e673028655c6134e4f5574046885c1b3b511c81a93674a27d0b5b7dd9409a92676823d43d2fdfa44bc1efbe28" + "b9465a47fc7076ee301a6378a9e46f45362ca9cc6a159699fe0c3d9fc8c6895c393f559419ab0636cab4c3f1f9dcc820" + "9453a2d31fc5c733680bd16d8f6af38b9665e077ce165ee76122e6190f13fc5873be90af34b8fe6e311a417cad6cf747" + "066ec105a2bf129c76b63bab023642a4d1d399d40929377480790fd3e5db70d8faaea0895038a765a27f0b1f75d051aa" + "9607ecf247ac7ad7af5ab5e3d7bd58d1ab9625e8f6cf3478e7ed327c2b7d395d59119011220604cc900b21726ca94c7b" + "1794ddb20d25befca26d097b3d91c91ab1634eaf48b7879ffcc0618cf287b5f9d4c930b477e6130e47d475264e854da3" + "2f23ba303266280951388561a6f7931d459239635ead68f7cf167ce365aa7e1b3f519491bb1414aabc02f85afbea8a84" + "45803b0716ecf047e872debe6ab183536ccb40fe9e2ef982c35ded067ac3adf2e5b97c5d731484b99e40f49f7ad1af96" + "adf8e4ed547026e4915b09d7294b7bf988c209c52b2f33b810722ea189723ca3ed3a7d3b5d1d199900120264484198b0" + "2764a25d0f1bfd48539ad46f253aed287f5f155c81292776a039475a65f874fe76322a2110602cc5c133a413ca5edf66" + "5206e4d15388d60b6d7b7598583bb7018e32da3ef3a3933540c299d6096d3f7d91490bb3610ae349afa6ab982434cef0" + "43e8faceac48d18b92656867dc343eefa02b453e2db9ec4e5156887c1f7bd18d92a9707cef64324e2d59f18dd2a1f17d" + "cd4232c23dc3c3fff800f01fe3c3bff081f13dc5c333e01bc34fef6232823542c2ddde007c0f79f1cdda20f05feb42be" + "d2a7f1b1d559019231624e8d4cb30f07fef023e43b4f1f7dd1418ab2432ce3c5bf3c99ea0e95cf926d6977fc107a2fb1" + "a9567863fcb86e7d13584db92c57d255ee161eefe023c43f0f9fecc241ccba0e35dad0efbc28fd4e5356cc74166ae189" + "f22da1ef7e313a453c2dfde44740668c1c9baa421cc7a17b6d9b685bdbccce005c0b39715cc920b657a65b87c7f77100" + "c219c70b6f7b3190512a8705eeb60bad62f69b3e51b695bf9c8ca88c40909333400e81cd3a3d33dc1c3bbf009e12fe7a" + "33b21126068cdc8229417aada0ef5c353ecda42fcda62f89ae26989e22f81af36b8ba66380b7178cde826d4973bc90eb" + "3cb1ef5e357ac5ad3efda24f0d7fb509cb2af30b8767e233821746c65546024c4d11380570a4f5d751448a18573a493d" + "b5cdd221e07fcf067ec325e2f79b1c55b21d279ebceae4895839b745863bcb0ef7c317e4d353ccde027c4b71f8dcea24" + "90db3ad12f87affaa0a1556807d0f5bf5c952b8f26fa92a771a0d75b45de307a6fb928575a45fc347ee7212a67182d35" + "fcd46324a2dd1e19ff0c1f9bcc4e115e097d3d5dd1018233420ec5c5332c03d87cbf6e930f47f67122c61d4f936d4b73" + "f898e22d81eb3eb1ab563c6bf5a95e7973dc9c2abd02da5eff62128675c253cede46744260c8d88aa04148ab84278cbe" + "8eacc8c08990212466c4150a8b447e073ce9e4ef54342eed806b0db7ad9ae868ddca02d45f235a2df1e5df7050eabc82" + "e958f9aec6855da10f63f2b9b2452c2fdda40fc9e6af18bd26de966fe123e63b0b1774c0718ed2c7fd7054ea3492fb7a" + "99a6078cfe862dc9e2af90ad34fcf667202a451c29bd64d65366ca14d6b37b099721ca7adbaec285d5b11d4192b1734c" + "8f08ff0e1fdfc447006e0d1db98c4290d73b491fb1c95ab9e24f8d6eb70b8f66f213a65386d7d7554402084518293574" + "c47106c2d5df105c2b3d31dc5833b611ae169efee22180730e87cdf62528ef4c371e8deca64d852baf22ba123662a091" + "5308c7096f3f3999401a83656a67983c37fe902f25bafc2a7d1b595d99081312446c0558a1a577e4134a4fdd64164ae5" + "c972bcb2ef3839775c0538ad64f657264a85c5b33d01da38f36f8b2e73929577841f8bce6e511680fd1e59f78d1eb9ea" + "4e9d4e934f4f777000e01dc383f77901d239e34faf6ab3831764c251ce9a4e7d5350ccb80e71d2d9fe8c2c9dca82c55d" + "211e61f0fdfe44340ee9c0eb9ca4addce025c4f31784df924d6d377c81692ff7a11b615ae9e8eecc04188b20724ead48" + "f38f96edf065ec7656266881c13ba503ea7a9ba64384f7971dcd822b413ea5a9fe6c315e4975bc5cf32782bf5294f7b7" + "198d02ba523ee3a1b375084b19f50d4bb3e11be14bebeaaa800500aa1416aaf80af14bcbeeea009413aa521ee7e133e4" + "1b4b5ffd40528af44b61fafcaa6c195b19d5090b337008e10de3a7b3b910502aa501ea3e93af52b4f3f7991c11ba1436" + "aeb88a6058cba8e24d8d2abf029e56f67322821546825d4f137c4971bcd4e335a0df5a55fe143eafa8aa441c0bb9605e" + "cb64fa56be7ab3a3132442c0dd9a08751e49f5ad5ef163cebe4ab5c3d3fdd840b89663e0bbd60d6db76d836b6bbba003" + "406e8d0cbb8e06dcd623682bd52d0ffbe08bd06dad6ef7030e67d035a6df964de5276ea3092736a8b8467843f8f8eeec" + "00580bb1614eeb40be96aff8a0e55d6116e0f1dfd844b81e73f299b605acbecea449c1abb621a8765e2778a1e57f6512" + "6869dde806d0d7bb581db38d16b8fa6eb90a535ecd64364ea549e3afb2a930746e6510682dd5e117e0d3dbdccc201c43" + "b0f17fcd063acb2cf3c79f7cd1638eb6cbb4e1f5fd545022a411ca1ad76f4336e0b1d759459a38737e892c37de946fa5" + "2bef2a3b131444a01d4392f57b459e38fb6e9b0e57d65566060ccd802b0536acb8ce6851da98e62d09fb2c93cb5efd62" + "568e7cd363cabec2a5d1f19dd081b13544c211c61b4f5f755040a89443a0f35f8d4eb34b0ff7e113e05bcbceee401482" + "b95258efac2add0e1bdf4c57124c6d157885e1b7f59159099321426ac98ca28d14b8be66b01b635aade0e7dd341ceba4" + "a3dd3c1dfb848799fc0c7997c1d7b95859bb840788fe0e3ddbc0cf986c3d5fd1458a3a533ec1a5b7fd904929b765827b" + "4b9fe4c351ec9e4af5cb52fcfa66b81a737a89a427ccb60fadeae6891c31be54b63fab8a265086b1db58ddaa0e15de90" + "6f2d3bfd085b1bd54d033a6138e56d67762028455821b475e657064ec545222e019c30be76b23b23122460c4d9129077" + "2e0b9d64965be7cb36f0b3f7190d13b8507aafa0ab543c2ffda04f4977bc18fb2e938f56f473668a1c57b2592f97adda" + "e0e9dce824d4d333c01f83cf7e7132c43d0fdbe4cb50fcbe6eb10b437ee920f65f275aa5e1f7fd10582bb521ce7a53be" + "d0a7b5b9dc48319651e69f1edde6070cef842f8daeae888c00981232622881412aa701ae369abe62b09373488f80ef1c" + "3dbfcc8609cd2a3f139c54b23f239a3472e6b91a517e8d2cbfce864dc5232e23983436eeb00b617aeda86e5d1718cd28" + "3f57945da30f27fab0a375284f59759c58b3a713ac52d2fffa00b417ead28ff4e175ec565266e810d23be30ba763a2b3" + "130446805d0b1b755841b8b467e4334e0f5df5054aa3c13fa58bfa68b9c64b45fe343aef283b571c4db12d47f271aad6" + "0f6df3658a7a5bbfc08791fd1c59b38517a8da4afdca42dcde22780bf169cfea62989623e83ad72f4bb7e193f159c98a" + "a2410ca38d36bcbaee28195318c5292f77b019631ea5e9f6ed307c6f75304c6915f095f39595999800300660c0d99a80" + "650c6b95a59ff8c0e99ce0a5d5f115c09393554c0318653c6df5654662408c908b30706eed007a0fb5e9d6e970fcfe66" + "300a6158e9ace6c515288f40f69f3ed9a6879dfc846985e3b7b1995018a32522ee181f33d81cb3af12bc72f6bb3a1136" + "04ac9ccaa0c159a98663c0bf968dfca46dc56326a2991610ee3c1bfb489f82cf5c75364ca50deba6a3993414eab483f9" + "78ddea0694dfb2492db7ed926969ffec02584fb9685fdb44de127e6b31b0556a0794fdb64da52fefa22b013624a8dc4a" + "31d259ef8e2ed98683dd7c157a85a5bffc80690df3a593f958d9aa8605ccb20f25faf4ab7c397f5d151889203646a459" + "c38bf66921f67d235e2d79f5cd5230e27d8b4a7fdb04d6937f4917b0d97a9da68f9ceca44dc123a6338a1656e67102c2" + "5dcf027e4b35f0d5fb1494bbbe00bc16faf2abb021646e451428ad44f217a6db96c5f5354cc301e63f0b9f64d253eeda" + "06f4d373c89e82ed5871bed4a73da9ce6a519e90ef3c39ff4c171acd6c375e856da76fa32b2332202044480190312646" + "845d830b677a21b0756e47146ca54de327a2bb121466a419cb0af74b07f6f133c41f0bdf6c5352ccfc0678c3e9faeca8" + "4c591390552a0f15fc946ba5a3ff3819731c85a9be64b05f6b53bcd0e3bdb0cd7835f6d5370c8f88ee0c1d9b8846184f" + "39795dd9009213664a05d4b13f459639eb4ebf4a97c7d775404288d40b29737c89683fd7855fa14b6bfba882414cab0c" + "379e9ceea409c92ab7038e76d237e2939755c4130a475c65346ce5456226809d1298763e2bb920564a65d870bef6a339" + "21566861dcf826f4937b499fa0cb58fdae4e954f836f6b33b011620e85cdb22d21fe7c337e093d35dcd023a433ce1e5f" + "f74106a2d91e91ef1e3dfbc48f18fd2e5f974dc7236a2b912506ead08fb0e97cfd6656066cc141aab603ac72d6bf7a91" + "a717acdac2edd860bcd6e371a8d64b65fa74ba7e3b3b111400a81452a2f11bc14fab6a3b930546a2590f93ed5a71fadc" + "ae2c99ca0ad54f037e6931f45d6316a4f9d6c974bc7ef7230a2750a4b5dfd045a83e57b659a787bff880e11de187f3f1" + "99d009a12766a2190712ec7857fa50beb6abb820744e6150e8bcc6e151e89ec2e5d9709cf2a7b1b9545823b431ee5e17" + "7ec125a6ff920d65b67da34f2f7bb1815328c349efae2a990612ce7c5372c8bc86e9d0e9bce4e5556006c0d59b18553a" + "0d35bcdce22580fb1e95ef962de9e6ef103c27fcb06f6d337c09793dd5c113a0534acfcc66140ea9c86a9d868bdc6c35" + "5ec165ae7e932f43b6f1b3d51d099b20524aedc8629c96abf828f54f4376e830d67b639ab463e4bb5e1d7f950d8baa62" + "188721ea7e9b2e5396d5f7150c8b88661c0fb9e84ed9469a5e7f731084318e52d6ff7210a6358ada4efd4252cefc4270" + "caf8cae8c8c888800100220404889802304268c9c8aa840588ba0634caf0cbf8e8eccc40108231424acdcc221c07b8f8" + "6efd025a4ffd6056ca74da72fabaa22100620c8589ba2430ce7853fad8aea489d828b547c277ca16d6f773008611ce1a" + "5f7f511480b91650e6bd1ad96e9f0edfc6474466040c8988221406a8d84ab9c24bcdee26188f20fa5ebf6a938757e453" + "42cedc46304a69d9e88ec0c59938157284b59fd8c4a91c71b6d5b71d8d8aaa401c83a9727cab6c3b5f1d5d9109033260" + "28c54923b631aa561e6ff121c67b439ef4e375a85e5b77d814b2bf32983636aab802704ae9c8ea8c848998203446e051" + "ca9ac66d4172acb0cf7871fedc263c8be86add8e0add4e135e4d75344ce105e2b7939d54903b2712ac70d6fb7298b627" + "a8ba463c4bf1e9dee860dcda22f01be34bafe2a3913504ca90c739695ff940da9ae66901f23da3cf3e79b3c51f29db68" + "dbcacecc44100a215068adc4e315a49fdac4ed1478a7e5b37d095b39d1498ba26308a705aebe8aac40d09bb2412ca7cd" + "b62da9ee6e111e01fc3c7ff7010e23d83cb7ef922d61f6fd325c2f3db9cc4a11d6196f1f3dd9c08b90652c6fd5250eeb" + "c0af94adbcece445402284158a9a467c4370e8fcce6050cab8c269c9eaae808d10b83676a23903526ce944fa16b6fbb2" + "813524ced047a87a5fbf489783df7c51728cb48ff8e0eddc6034c6f153c8de8a6c595398d42b2d33fc187b3f918d12b8" + "727eab2833560c6d956987e3f3b9904128a745a63f8b8e66d017a2db1ed5e7172ccbc0ef9c2cbdcec245cc321e27f8b0" + "e77d215e6971fcdc623482f95ad9ee8e0cdd820b457e2538ed6c7756046c8549a3a733a812526ee900f21fa7cbb6e1b1" + "f55d4112a0714ecb44fe163eeba0a3552c0fd9e48f58f5af5eb56bc7af7ab1a3572c4bd1ed9e68f1cfda64f856fa72ba" + "b2232022440c0999201642e4d95298f62f29bb641a4b7df944da12f67b23923562c69d5e916f0f3ff980c319e50f6bf3" + "a9926168efcc261c8fa8ea4c9d0a9b465e47746064cc5012a2710ac34def263a8b2472c6bd5ad1ef9e2cf9c6cb54fc36" + "7ea32923762829557805f0b5f7d515088b00760e2dd9e08fd0e5bd7cd56306a6d99681fd3c5df30586bbda0cf5875be5" + "cb72f8bae62909733c81e93ef5a35f2d5bf1c9daa8e04dc922b613ae5296f7f31184138a565e677020e45d4312e47947" + "da74fa76ba3a3332002404c8908331604ec944ba1e37fa90a735a8de4a75da50febe2ab902524eed40728eb4cbf0e9fc" + "ec64544220c0598b8267482794bdbecca40dc9a2a711ac16daf6eb30b0776e031c65b47de747266a818533ac12da7efb" + "22921766c215c6935f4d573048699de087d1f59d5891a31724cad0cfb8687ddf40568a7c5b73d89ca2ad10f83ef7a31b" + "2552e0f9dec8649c5ab3e31ba543e2fb9a8465847b8787fff001e03fc7877fe103e27b8b8667c037869fdec465046a85" + "85bbbc00f81ef3e39bb441e0bfd6857da54fe363aab2032462c49d1a99661e0ffde047c8769e3efba28315648659c78b" + "7e7933d41d2b9f24dad2eff820f45f6352acf0c7f970dcfa26b09b7258afa4abdc2c3ddfc047887e1f3fd9848399741c" + "6bb5a1df7851fa9ca6ad98e82cd5c313e45b43defc62748a785bfbc88e80cd1839375484398f42f6db36d0b7b7999c00" + "b81672e2b992416caf4cb70f8feee20184338e16def66320a2550e0bdd6c175ac5ed367ca36d2b7f3919511881212666" + "801d039a747a67b838777e013c25fcf46764224c0d19b9045282f55b41deb86a7d9b485f9b4c5f135c4d313c45f035e6" + "d7174cc7016e2f19bd04da92e77921d67963debc6af58b5a7dfb449e1aff6a139655e6170ecfc467042e8d8caa8c0498" + "9a22700ae149ebaea2891430ae74927b6b9ba443c0ff9e0cfd864bc5ef3638ab643a4f3d79d5c912b0736e8b0c77961d" + "ef862fc9a6a799bc04f896e3f1b9d44921b675a25f0f5ff54142aad00fa1eb7eb92a571e4df5254ee341aeb68bbc60f4" + "df7250aeb48bf868fdce4254ce305a6bf9a8c64945ba3c33fe183f37989c22bc12fa7abba2030466841d8b8a665807b0" + "f97edd261e8fece2458c3a9f26da96e7f131c45b03d67d6356ac78d7eb52bcf2e7b938557a05b4bdfec4250ceb84a79d" + "bc8ce884c191b11540829157084f197d1d59918113204248cd882a151688fc0e79d3c9dea8685ddb00d61b6f5b35d0d1" + "bb9405a8be46b45be3cbbee0a1d57905d2b1f35d8d0abb421ec7e573648a585fbb481f93cd5e317a4dbd2cdfc247cc76" + "162ee980e31da58ffae0a9d46925f6f5334c0f19fd0c5b93c55f215a69f9ecce40548a38537ac9aca6cd9429ad66f613" + "2e4394f5b75d850bab623a832562e6991e11fe1c3fbf888e00dc1a3b73188521ae76923f6392b573c49f1add6e171ecd" + "e4274ca70dafaeaa8804108a30526ae988e20d85abbe20b8567a63b8b0676c235c2d3dfdc44300e61d0f9bec4a51de98" + "6e3d1bd94c9b0a575e4574246cc54122a6118e12de7e7332803506cad4cf30786ffd205e4b75f854fa36b2bb32102624" + "88d80ab1434aefc826949fbac82c95cb92e57965de7072eeb80a715ac9ecae4c950b8b667a03b471e6df165ce7252aef" + "083f179cdca22d01fa3cb3ef1a3d73d49d3a9d269e9eeee001c03b8707eef203a473c69f5ed567062ec984a39d349cfa" + "a6a199701ce3a5b3fd18593b95058aba423cc3e1fbfc88681dd381d739495bb9c04b89e62f09bf249ada6ef902d25fef" + "4236c2b5d3d1dd9808311640e49d5a91e71f2ddbe0cbd8ecac4cd10382774a07d4f5374c8709ef2e3b9b0456827d4b53" + "fcd862bc92eb78b9e64f057ea529ef6e331a0574a47dc74366ea109633ea1a9767c237c297d7d555000a0154282d55f0" + "15e29797ddd401282754a43dcfc267c83696bffa80a515e896c3f5f954d832b633aa121666e011c21bc74f677220a055" + "4a03d47d275ea569e7ef32382374286d5d7114c0b19751c49b1a557e053cadece645042a8d04ba9e26f892e379a9c66b" + "41beb4abfc287d5f515488381772c0bd96c9f4ad7cf5674626488581bb3410ea3c93eb5abde2c79d7c956b87a7fbb081" + "712cc7c177ac1adb6edb06d6d777400680dd1a19771c0db9ac46d057aa5a1ff7c117a0db5addee061ccfa06b4dbf2c9b" + "ca4edd46124e6d51708cf087f1f1ddd800b01762c29dd6817d2d5ff141cabac22dc1e3bfb089703ce7e5336c0b597d9d" + "489383576c4350ecbc4ef143cafeca24d0d3bbd00da1af76b03b671a2d71f4dd7214a6bd9ac86c9d4a93c75f655260e8" + "dcca20d05babc22fc1a7b7b99840388761e2ff9a0c759659e78f3ef9a2c71d6d9769c3ebfaa8a04548239435aede866d" + "c163aeb28b3470e6fd12586fbd28df4a57de5476262889403a8725eaf68b3c71f6dd361cafacaacc0c199b00560a6d59" + "719cd0a3b531cc5a13f6592796bdfac4ad1cf9a6c7957d854ba3e33ba103626a8984238c369ebeeaa08151288741e6bf" + "1a9d66961fefc227c0b7979ddc80290572a4b1df5855ba1c37be98ae2498da2af10bc36feb22b213264284d59319451a" + "29717ccd6036c6b55bc1cfba6839d74947ba783bf7090f33f818f32f83af72b0b377080f11fc1c7bb7819f30d87abfa2" + "8b1474a67d834b6ffb2092536ecb04f6973fc986a3d93c95eb96a5f9f4cd7034e6f513484f996c1f5bd5cd1238637ca9" + "6c7f57144ca10d63b6b1bb541c2bbd20de5a77fa10b637aa9a0674c271cadaceec40508ab04368ebccae0c9d8a8a445c" + "0338617ced6476462448c189b22520ee5c173ac92cb7cf966de167ee321a2770a0f55f4156a8785ffb409e92ef7831f6" + "5d271eade8e6cd1438af64b25f2f5bb5c1d3b9d049a9a667803f079efce265887a1fb7c996a1f97cdd621686fdd241ec" + "be4eb54bc3effa20b0576a439cf4a77da14f6b73b890632ca3cd3e3dbbcc0e19df085f1b5d5d111801302464c4510282" + "554e035c6d357cc56126e6911f01de387b7f990c139a547e2738a9647e473468e5cd7234a2fd1a597f9d0c9b8a465c47" + "30686ddd6016c2f5db50dcba2e319a507eaf28bb461e4ff56146ea509eb2eb38b1674e2758a5a5fff401682fd5a51fe9" + "c2ebd8aca4cdd021a477c6174ec7456626088d00ba1636eab0837168cfc8669c1ebbea0a9547827f4b17f4d1738c968b" + "fc6875de5076ae389b625a8fe4e355ac1edbe6cb14f4b77f810f23fa38b3670a2f51b495fb9485b9bc44f017e2d39fd4" + "c5312c47d075ae5e976fc327e2b39315448219471a6d7975dc5032a6318a525eef6032c63d4bd3edda60f8deea6098d2" + "2be12be72b2b333000600cc181b33500ca18d72b4b3ff181d339c14babe22b812726aa980630ca78dbeaca8cc4811921" + "1660e0ddda00f41f6bd3add2e1f9fccc6014c2b1d359cd8a2a511e81ed3e7db34d0f3bf908d30bc76f6332a031464a45" + "dc303e67b039675e2578e5ed7674226c095939954182b3530cc7817f2d1bf948db8ac64d45322c21dc7837f6913f059e" + "b8ea6c994a1bd74d47326829d56907f2f1bbd40d29bf64925b6fdb24d2d3ffd804b09f72d0bfb689bc24fcd66360aad4" + "0f29fb6c9b4a5fdf4456026c4951b89463a4b3df1c5db30d07baf82af50b4b7ff900d21be74b27f2b1b3550c0b99641e" + "4bf5e956f872feba2a3112406c8d48b38717ecd243ecfa46bc5af3eb9aa461c4fb1694ffb609ad26fe922f61b2f53b4d" + "1f39d9489b82474c67142cadcce20584bb9e04fc966be1abf62929777c01782df5e5576042c8dc8a28515a89e42f4db7" + "2d8bea6a998603cc7e173ec9a4a7ddb40de9a6e7913d05dab0e37da94e7b539cd4a33d21de7873fe982e359ad86ebd0a" + "db4edf46564664404088900320624c8d08bb0616cef44360eadc8e28d94a9bc64f45762428cd48339615ee960fede267" + "883e17bed8a6a599f80cf187d3f5d95098b22720aa541e2bf928d74b47fe7032e6390b537cc960bed6a779a1c77b619a" + "f06bedaa6e191f11dc183b37108c309e72f2bbb2012426cc940ba9627e8b2c73d69d7e952f8faeea808511a81652e6f9" + "12d07faf0abf4296d7f75104829956186f3d39dd481392556e071ceda46fc5272eab8826148eb8ca68d9ca8ac44d013a" + "2530ec7c577240ac94cbb0e17ded467242acd0c3b9f04de926f6933f4196b1fb5c9d2a9f06ded6676022c41d0b9b645a" + "43fcf866fc127a6bb9a04748679c3cbfee820d45b23d23de3c7bf7891e31fa5cbf2e9b8e46d457224a0dd5a11f61d2f9" + "faccac0cd98283556c0758e5ad7ef5234e2f59b585dbb0c179adc6e351ac96cbf4e974fc76762228015028a545e23782" + "9f56d477260a8d44b21f27dab4e3f5b95c59339415aa9e06fcd263e8bac62d49f3ad92e978fdee46144ea1496bbfa08b" + "507caf6cb34f0f7ff101c23bc30fe7e333a013424ecd44320e25d8f0aff4a17d6d577040e89cc2a1d1798dc2a3d13d85" + "cbb2e139e54f6372a8b0476863dcbc2efd824b4dff241acb6cfb469e5ef76302a6518693df5c55320c259cf8a6e59179" + "0dd3a1d379c9caaac00d81ab3630aa741a6b79b9c44b01f63d2bdf2c5bd3cdde20784ff960deda66f812f27bab822740" + "a6959f98cc281d5390d53b0d17b8d86abd82cb5cfd265e876de367aa3a133640a495db90c5392d57f051ea9e86edd061" + "acf6c73568c7c976bc3aff2a1b1754c4310e43d4fd365ca72dabee2a191710cc381f73d09db28d34bcfee62108631ca5" + "adfee4214c6b15b49dfa84a59df884e195f195d19191110002004408091130046084d1939155080b11740c6995e197f1" + "d1d9988021046284959b9844380f71f0ddfa04b49ffac0ad94e9b4e5f575444200c4190b137448619cf0a7f5b15d4913" + "b0516a8f84ef942dadeee6010c239c34befea22901722ca1cd7a35b2dd3e1dbf8c8e88cc0819131044280d51b0957384" + "979bdc4c311e41f4bd7ed5270eafc8a6859db88c6094d3b3d11d818b32702ae5096b3fb1895238e36dab6e3b1b155480" + "390752e4f956d876be3abb22120664c0518a92476c6354ac3cdfe2438cf6873de9c6eb50bcb6efb029657e65306c6d55" + "7004e095d391d51909133040688dc0a395358cda82e559619ef0e3fdb84c7917d0d5bb1c15ba9c26bc9aea6899c20bc5" + "6f273aa920764e2558e1adf6e5316c4f51748c7897e3d3bdd0c1b9b445e037c6975fc547226a0995218e72d2bff281b5" + "35ccd203e47b479e7cf3678a3e53b6d1b7959d9888201442a0d15b89c62b493fb589da28f14fcb66fa12b673a2931744" + "c6114e0b5d7d155881a1376482594f9b6c5b53dcdc223c03f878ffee021c47b0796fdf245ac3edfa64b85e7b73989423" + "ac32de3e7bb3811720ca58dfaa4a1dd7815f295b79d9c88a8045082b15348cf886e1d1f99cc0a1957184d393d55d011a" + "21706ced447206a4d9d289f42d6df765026a499da08f50f4bf7e912f07bef8a2e519691ff1c1dbb8c0698de2a791bd14" + "d8b2a731a8565a67f830f67f231a2570e4fd565066ac18db2ad30fc7e7732082514e8b4c7f171ccda02f45b63dabce2e" + "599781df38597b9d848b98643c4ff161cefa42bcd2e3f9b8c46905f2b5b3dd1c19bb04168afc4a71dad8eeac08d90a93" + "474e675024a4ddd201e43f4f976dc363eaba822540e29d9689fc2c7dd74146aa581fb3c91eb1eb5ebd6ad78f5ef56346" + "ae5897a3db3cd1e39fb4c9f0adf4e5756446404488181332402c85c9b2a531ec5e5376c83496fbf289b425ecf647246a" + "c58d3abd22de1e7ff3018633ca1ed7e75324c2d1df984c391f51d4993a15368cbc8ee8c0c998a02544e215869bde4c75" + "1648e58d7ab5a3df3c59f38d96a9f86cfd465246ec5052aaf00be16befaa2a111600ec1c5bb3c11fa1cb7af9aac60d4d" + "b32d03fa78bbe60b0d77b419eb0eb7cb96e5f175cc5212e67903d27deb46be5ab7e393b551c09b92456c275ca52defe6" + "23082714acbccee041c8ba8625c8f28fb4e9f4ed7474666400480991210662c09d9289743c6ff5214e6b51bc94ebb4a1" + "fd7c557204a49dda80e51d6997e1d3f9d8c8a8844180b31704ce904f297b7d99481b93454e23582db5edd66160eedc06" + "38cb68fbce8e4cd5030a675825b4fdf645242ecd842b8d26be9aae6090d33bc10fa3eb3ab123462e4995a19f70d0fbbe" + "80ad14f8b6e7b139455a21f07def46364aa5c1f3bd90c938b567c6374a87c5f73508cb08f70f0fffe003c07f8f0effc2" + "07c4f7170ccf806f0d3fbd88ca08d50b0b777801f03de7c7376883c17fad0afb4a9fc6c755640648c5893a3532cc3c1f" + "fbc08f90ed3c7df745062ac90cb38f16fcf267a83a573e49b5a5dff041e8bec6a559e18ff2e1b9f44d6136e4b15f4957" + "b8587bbf808f10fc3e7fb3090732e838d76b43bef0a3f5394d5b31d059ab8627c8b687bdf8c4e914f0b7f7911d019a30" + "726ea908731e85edb66da16f6f333801702ce5c5732482d95e996e1f1fddc40308671c2dbdecc64144aa1c17bad82eb5" + "8bda6cf946da56fe7232a23102424ccd003a0734e8f4cf7070eefc02784bf9e8cec844981a337208a505eab683bd70d4" + "fb3690bf3698be26b89a62788be06bcdae2e998e02dc5e337a09b525cef243acf2c7bd78d5eb16b4fbf6893c35fed427" + "2cabcc2e1d9f88ce085d1b19551809313444e015c293d75d451228615ce924f6d737488781ff3c19fb0c978bde6c7156" + "c8749e7af3ab922560e6dd1618ef2c3bdf0c5f934d4f337809f12dc7e373a892436ceb44be1ebfea828555a01f43d6fd" + "7254ae3c9bea4a9dc6835d6d1778c1e9bee4a15d6917f0d1fb9c84a99c60b4d7f3518c928b747867fc307e6f31384578" + "25f4f577440608cd083b1714ccb00f61f2fdba4c3d1fd9c48b18753e4db52dcfe26388b607acfac6ad58f1afd6a579e5" + "cf7270aaf40b697bfd884a19d7094f3b7919d1098323622a810522ae109e32fa3ab32302264084919b10542a2d11f81c" + "f3a793bd50d0bbb601ac36deb66ba1a377280b517c8d68b7c7977dc143aaf20ba563e6bb1a1576843d8fcae6c914b0bf" + "76903f279abc62f49b7a59bf848f98ec2c5dd301c63b4b1ff5c153a8d24bedea66981e33fa18b7278abe42b4d3f3d99c" + "80a91470a6f593594d9b28535acdec265c8729eb6ebb0a1756c475064ac5cd323c23fc387f7f111c01b83476e6310a43" + "5ced247ec7256ae7893e35badc2e3d9bc84e994e1b5f5d551008211460a4d5d311c41b0b577c4170acf4c77160ced846" + "b85a7bfb888601cc3a1f37d894a3bd30dc7a37b2993614aebc8ae848d98a82454c231c25bcfce665006a0d95a99e60f0" + "dffa40bc96ebf0a9f46d657664204c4911b015628695df904d293f7590592b9725caf2cbbce0e5dd7014e2b593d95c99" + "2a1716ccf40768e3cdbe2cb9ce4a55de107e2f39b9445a03f47967de347ae7a93a753a4d3d3dddc00380770e0fdde407" + "48e78d3ebdaace0c5d9309473a6939f54d4332e039c74b67fa30b2772a0b1574847987c3f7f910d03ba703ae7292b773" + "809713cc5e137e4935b4ddf205a4bfde846d856ba7a3bb3010622c81c93ab523ce3e5bb7c197b1d95899a20704ee940f" + "a9ea6e990e13de5c773608ad04fa96a7f9b0c57925d6f173cc9e0afd4a53dedc66340ae948fb8e86cdd4212c67d4352e" + "cf846f852fafaaaa001402a8505aabe02bc52f2fbba802504ea9487b9f84cf906d2d7ff5014a2bd12d87ebf2a9b0656c" + "6754242ccdc02384378e9ecee44140aa9407a8fa4ebd4ad3cfde647046e850dabae22981632ea3893634aafc0a795bd9" + "cc8a08551a09753c4df125c6f3538cd6837d6957f850fabea2a910702ee5817b2d93e95af9eace8c4c910b03766821d4" + "7927d6b57bc58f3af92ad70f4ff76102e2598f82ef5835b6ddb60dadaeee800d01ba3432ee381b73588da0af54b43fef" + "822f41b6b5bbdc0c399f40d69b7e5937949dba8c249cdaa2e119e10fe3e3bbb001602ec5853bad02fa5abfe283957584" + "5b83c77f6112e079cfca66d816b2fb3a912706aed886a1d9789de28795fd9449a1a777a01b435eed6076ce345ae3e9ba" + "e4294d7b3590d93a95278ebecaa4c1d1b99441a0b757845f834f6f733080710ec3c5ff3418eb2cb3cf1e7df3458e3adb" + "2ed387d7f551408a9047286b5dbd0cdb82c75d651668e1cdfa24b0df7a51be94afbca8ec4c511280750e4bd5ed1678e3" + "edba6c395f59559818333600ac14dab2e339a1476a6398b427ecb24f2d7bf5895a39f34d8f2afb0a9747c6774206c4d5" + "130847186d3d7dd54102a2510e83cd7e353acd2c3fdf844f816f2f3bb900520ae54963beb0ab74386f7d315c4931b455" + "e21786dfd64564264c8509ab26328a3452e2f99ac06d8d6ab7839f74d073ae928f74f077ee121e67f031e65f075ee561" + "66ee101e23f838f76f033e61b0f57f451628e94cfb0696dff64124a6dd9609ed2e7f930d47b2792bd72d4bf3e99ae069" + "cdea26909f32d83eb7ab9a2470c6f952d8feae2899421ac76d6376a838577a41bcb4eff4216c6f55340ce984e395b59d" + "d880a1156086d1d7995c193b151488b80670c2f9dac8ec8c48918313644a41dcb82e7592596f9f2cdbc2cfdc64344ee1" + "41eabe82ad50f0bff6813d25def063ecba4e3d5bd1cd9a28715ec964be5eb76b83a773a093534ccf007e0f3df9c4cb10" + "f43f6f932d43f2f9bac42d0dfba483d97c9d6a9787dff44160aed48739e94efb429ed6e77120c659479a7c7b77981c33" + "be10be36baba2230026048c988a20504aa9c06b8da6af98ac24dcd223e03bc70f6ff32182734a8fc4e7152c8fc8e68d1" + "cb9ae46945fa34b2ff3a1937148cb88e60d0dbbac02d85ebb6a1b9745c6334a0fd5e51768c3c9feac28dd4a13d65d671" + "62ce9c4eb14b4bffe802d05fab4a3fd385d7b159499ba04348ef8c2e9d8e8acc4c111a01742c6dd56106e2d19f90cd38" + "3d77d4152a8f04fe962fe9a2e7192d17f8d0ebbca0ed5c7136c4b51fc9c6ab583db7cd9629e96eff021e47f47166ce14" + "5ea3692bf7290b737889e02fc5a73fa98a62588fa0eb5cbd2edf864fc567262a8904328e34daf2ebb8a0654c6314a4bd" + "dec0658c7a97a7dbb4c1f1bdd4c131a457c257ce5656666000c0198303666a019431ae56967fe303a673829757c45702" + "4e4d55300c6194f1b7d59519890232422cc1c1bbb401e83ed7a75ba5c3f3f998c0298563a6b39b1454a23d03da7cfb66" + "9a1e77f211a6178edec66540628c948bb8607ccf6072cebc4af1cbdaece844d812b2732a830566a6198f02fe5a37f291" + "b7158c9a8a645843b8f06fed227e0b3d71d4d9329437ae9a8e64d053aad20fe5e377a81a537ec924b6dfb649a5a7ffb0" + "09613ee5a17f6d137849f9acc6c155a81e53f6d93694bfbe88ac04d892a37128c74967be38bb661a0f75f055ea1696ff" + "f201a437ce964fe56366aa181732c83c97ebd2adf0e5fd7454622480d91a91670e2fd9a487d9f48d78b5e7d73548c389" + "f62d29ff6c135a4dfd245ec365ea769a3e73b29137048e98ce28595b99c40b09773c09f92cd7c357ec5252eef802f05b" + "ebcaaec08591b91450a2b513c85e9b6e5b17d4d5330c0798fc2e7d93494fbb681bd34dcf227a0bb561c6fb529cf6a739" + "a9467a43bcf0e7fd305c6b35b0dd7a15b69dbe8cac8cc8808111200640c4991a11760c2d9de886c1d5b91c51b295378c" + "9e8aec48519a90672c2bdd2c1fdbc4cf107c2f7db14d4b33f019e30fa7ebb2a131644e4154a83c57f251ae968ffce065" + "cc7216a6f992c17dad4ef3438ef6c335e0d7db54dc323e23b830766e2118613ce5e5776402484d99281752c4fd1658e7" + "ad3afd2a5f1f5dd5010a23502ca5cdf225a0ff5e157e852dafeea2090532ac30de7a73ba902724aadc0e39db48df8a4e" + "5d57104c291d7194d1b39515889a02744a61d8f8aee48159299761c2fbda8ce48559a18773e09bd24ded267e832d63f6" + "b93a553e0dbdaccec045883a1736c8b487f9f0cdf824f4d773408e90cf38797fdd041a8b647a47bc78f7ef123c63f4b9" + "7e5d371c8da8ae44941bab423ec3a5f3f5995819b30506aad80eb1cb5afdea469c5eb36b0bb76182f35b8dc6a3592d97" + "e9d2e9f8ecec445002a0514a8bc46f053eada8ee4c151a89643e4fb569c7eb72b8b267282b553c0df9a4c7d1758c5a93" + "e75b25d2f1fbdc8c289d4292d77f4116a0f95ed9669e1effe2038477861fcfc6674026849d9a88641c4bb1e15fe942fa" + "daaee081d1398543a2f31b8547a27b0b9765c273ca9ec6e551608ed0c7b9785dfb04969bfe483596d9f68d3cbdeec605" + "4ca30d27beb8aa64184b39f14dcb22f21ba743a6f3939555801b03566c6154e834d6f373889603ec7a57be58b7a79bbc" + "40f09ff2c1bdb4cdf025e4f757044e814d2b3f3198503aa721aa761a2f71b0d57b0596b9fa4cbd0edbc6cf5474266c81" + "492bb7218a725aafe0a3d53d0ddba0c359ed8e6ad18f92ed7875fe54362ea988621c87a9fa6cb94e5b57dc54322e2198" + "703ee7a13b651a6979fdcc4210c6394b5bfdc84298d62b693bf5094b3bf109c32be32ba3232222000400881012226008" + "c109a32722aa101622e818d32bc32fe3a3b331004208c5092b373088701ee3e1bbf409693ff5815b29d369cbeaea8884" + "0188321626e890c339e14feb62ba922760a2d51f09df285b5bddcc02184738697dfd445202e459439af46b65ba7c3b7f" + "191d11981032262088501aa3612ae7092f37b898623c83e97afdaa4e1d5f914d0b3b7118c129a767a23b031664e055ca" + "12d67f6312a471c6db56dc76362aa900720ea5c9f2adb0ed7c757644240cc980a315248ed8c6a95879bfc48719ed0e7b" + "d38dd6a1796ddf6052cafcca60d8daaae009c12ba723aa3212266080d11b81472a6b19b505cab2c33de1c7fb7098f22f" + "a1ab76382b75384d7935d4d13384178ade4e755240ec9c4ab1c35bedca62d89ea2e918f12fc7a77ba18373688bc06f8d" + "2ebf8a8e44d4132a431ce5a57fe5036a6b99a407c8f68f3cf9e6cf147ca76da36f2b3b311040288541a2b7138c56927f" + "6b13b451e29f96cdf4256ce745262e898c229c16bafa2ab103426ec904b29f36d8b6a7b9b8447807f0f1ffdc04388f60" + "f2dfbe48b587dbf4c970bcf6e73128475865bc7cf767022e4194b1bf54943baf02be52b6f3b39115008a10562a6919f1" + "0dc3a3f33981432ae309a727aaba023442e0d9da88e40d49b3a513e85adbeeca04d4933b411ea1e97efd225e0f7df145" + "ca32d23fe383b77180d31bc54f237a29b1654e6350acb4cff061ecfe46344ae1c9faaca0cd5831b655a61f8fcee64104" + "a29d1698fe2e399b405e8b6c7b579c5cb32f03be70b2f73b091730c8789fe2c39df48579a5c7f37188d20be56b67ba38" + "3376082d15f894e3b5b1dd5811b215268e9ccea04949bba403c87e9f2edb86c7d575044a81c53b2d13f858fbae828d54" + "b03f67923d63d6bd7ad5af1ebdeac68d5cb12f47b679a3c73f6993e15be9caeac88c80891030266480590b93654a63d8" + "bca6ed90692df7e513684bd9ec8e48d58b1a757a45bc3cffe6030c67943dafcea64985a3bf3098723ea3a932742a6d19" + "791dd1819331404a89c42b0d37bc98ea2c91cb1af56b47be78b3e71b2d53f0d9fa8ca48dd8a0a555e017c2d7df545422" + "2c01d838b767823f4396f5f3558c1a9b665a07f4f177cc161aef6833d61d6f972dcbe2eb98a425ccf207a4fbd68d7cb5" + "6fc7276aa38137248ad84eb94a5bdfcc46104e2959799dc08391750c4b91e51f69d3e9dae8e8ccc800901322420cc581" + "3b2512e878dfea429cd6a37929d76943faf8aae409493bb501ca3ad32fc3a7f3b19151088301662e099d209e52f6fb32" + "9037268a9c46b05b6bdbacc2c1ddb80c7196d1f79d1c99aa0614ceb04b69fbec8a485d9b08571a4d7d355cc121a67782" + "1f47d67562468c5c932b433ee1a1f77d015a29f16dcf62728ab443e0fbde8c6c954b83e77b2192716acf8c6e950f8bee" + "6a119611ee1e1fffc00780ff1e1dff840f89ee2e199f00de1a7f7b119411aa1616eef003e07bcf8e6ed10782ff5a15f6" + "953f8d8eaac80c918b12746a6598783ff7811f21da78fbee8a0c559219671e2df9e4cf5074ae7c936b4bbfe083d17d8d" + "4ab3c31fe5c373e89ac26dc962be92af70b0f77f011e21f87cff66120e65d071aed6877de147ea729ab663a0b3570c4f" + "916d0f7bf189d229e16fef223a033460e4dd5210e63d0bdb6cdb42dede667002e059cb8ae64905b2bd32dc3e3fbb8806" + "10ce385b7bd98c828954382f75b05d6b17b4d9f28db4adfce46544620484999a00740e69d1e99ee0e1ddf804f097f3d1" + "9d9089303466e4114a0bd56d077ae1a9f66d217e6d317c4d7134c4f117c0d79b5c5d331c05b8bc66f4136a4b9de48759" + "e58f7af1abd62d69f7ed12786bfda84e5957985c3b3f119c10ba3632aa3012626889c02b8527aeba8a2450c2b9d249ed" + "ae6e910f03fe7833f6192f17bcd8e2ad90e93cf5e757244ac1cdba2c31de5877be18bf269a9e66f013e25b8fc6e75124" + "86d9d6897c3d7fd5050aab403e87adfae4a95c7937d4953b8d06bada2ef183d37dc942bad22fe1a3f739095338c169af" + "e6a3192516e8f0cff860fcde62708af04be9eaee880c119a10762e2999601ec3e5fb74987a3fb3891630ea7c9b6a5b9f" + "c4c7116c0f59f58d5ab1e35fad4af3cb9ee4e155e816d2f7fb109433ae129e76f233a2130646c455020a455c213c65f4" + "756646044c8109233620a8545a23f039e74f277aa1a1776c03586dbd6cd74346ee5016a2f91ad16f8f2efb828755e417" + "4ac7cd76342aed087b1f95cd9229617eed207e4f3578c5e936f4b37f091f31d858bba6038c76963feb82a751a497dbd4" + "cd303c67f4316e4f157c8569a7e7b339015228e14deb26b29b3650a6b59bd84cb90e53d6dd76142ead88ea0c958b9a64" + "7847f870fefe2238037068edcc621486b9da48fd8e4ad5cf127c6b75b85c7b37909d329c36bebaaa20104228c149aba6" + "23883616aef882e159e98ee2c19db08d70b4f7f7110c0398743e6fb129477a61b8f46f65326c295d7915d091b315048a" + "9846384b79f9ccca00d41b2b533cc1e1bff481792dd7e153e8dacaecc840989223602ac50d2bbf209a527eeb20b2572e" + "4b95e59779c1cbbae029c56b27b2b932542e2d99e80ed1c79b7c59739c94abbc20fc5e737288b407e8f2cfbc68f5cf52" + "74ea749a7a7bbb800700ee1c1fbbc80e91cf1a7d7b559c18bb26128e74d273ea9a8665c0738e96cff46164ee54162ae9" + "08f30f87eff221a0774e075ce5256ee7012e2798bc26fc926b69bbe40b497fbd08db0ad74f47766020c4590392756a47" + "9c7cb76f832f63b2b133440e09dd281f53d4dd321c27bcb8ee6c115a09f52d4ff3618af24bade2e7993c15fa94a7bdb8" + "cc6815d291f71d0d9ba84258cfa86a5d9f08df0a5f5f555400280550a0b557c0578a5e5f775004a09d5290f73f099f20" + "da5affea029457a25b0fd7e55360cad8cea848599b8047086f1d3d9dc8828155280f51f49d7a95a79fbcc8e08dd0a1b5" + "75c45302c65d47126c6955f814f2b7b3991410aa3412ea789be24b8de6a719ad06fad2aff0a1f57d455220e05dcb02f6" + "5b27d2b5f3d59d1899221606ecd043a8f24fad6af78b1e75f255ae1e9feec205c4b31f05deb06b6dbb6c1b5b5ddd001a" + "03746865dc7036e6b11b415ea9687fdf045e836d6b77b818733e81ad36fcb26f293b75184939b545c233c21fc7c77760" + "02c05d8b0a775a05f4b57fc5072aeb08b7078efec225c0f39f94cdb02d65f675224e0d5db10d43b2f13bc50f2bfb2893" + "434eef403686bddac0ed9c68b5c7d375c8529af66b21b2752a4f1d7d954983a3732883416eaf08bf069edee66100e21d" + "878bfe6831d659679e3cfbe68b1c75b65da70fafeaa28115208e50d6bb7a19b7058ebaca2cd1c39bf44961bef4a37d29" + "5f7951d898a22500ea1c97abda2cf1c7db74d872beb2ab3030666c015829b565c673428ed4c731684fd9649e5af7eb12" + "b473e69b1e55f6152e8f8cee840d89aa26108e30da7afbaa820544a21d079afc6a759a587fbf089f02de5e777200a415" + "ca92c77d6156e870defa62b8926368abc42f0dbfac8ac84c990a13564c651468a5c5f33580db1ad56f073ee9a0e75d25" + "1ee9e0efdc243ccfe063ccbe0ebdcac2cddc203c47f071eede067cc361eafe8a2c51d299f60d2dbfec82494dbb2c13da" + "5cff261a8f64f257ae5a97e7d335c0d39bd44d213e65b07d6f573448e18df2a5b1fd5c513284358edac6ed5070aef483" + "7969dfe842d8deaa6819d309c72b6b3bb101422ac10da3af32b832762a2911700ce185f3b591d91891230626c89483b9" + "705ceb24b2df3e59b7859fb8c8689dc283d57d055aa1e17fed027a4bbde0c7d9749c7ab7a39b3450e2bd92c97cbd6ed7" + "074ee74126a6999e00fc1e7bf3899621e87edf265a87e5f375885a1bf74907b2f93ad52f0fbfe882c15da90e73d29df6" + "853dadcee2418cb28f34f8f6ef3038677c217c6d7574446004c0919311440a0955380d71b4d5f315849b9a447c0778e1" + "edfe64304e6951f89ce2a591f91cd1a39735c8d28bf46965fe74326e2919711cc1a1b775805b0bd76d4372e8b8c66941" + "fabca2ed18793fd5851ba9427acbace2c59d389d629697ffd005a0bf56947fa70baf62b29337408691df185d3b1d1598" + "98223402e858dbaac20dc5a33f219a707aefa82a551e09fd2c5fd345ce325a2ff1a1d77941dab8e26d896a3f938d56b0" + "7b6f9b2c53d2ddfe043c8fe8e2cd9c28bd46d257ee5216e6f113c05f8b4e7f5314c4b11f41d6b97a5dbf0c9f8ace4c55" + "1208651c69b5e5d77140ca98c629497bbd80cb18f52f4fb76983e37ba9826348af84af9cacacccc00180330606ccd403" + "28635cad2cffc6074ce7052eaf88ae049c9aaa6018c329e36fab2a3312046484598383776803d07daf4eb74b87e7f331" + "80530ac74d673628a9447a07b4f9f6cd343cefe4234c2f1dbd8cca80c519291770c0f99ec0e59d7895e397b5d9d089b0" + "2564e655060acd4c331e05fcb46fe5236e2b193514c8b08771e0dfda44fc167ae3a9b265286f5d351cc9a0a755a41fcb" + "c6ef5034a6fd92496dbf6c934b4fff6012c27dcb42feda26f093f3598d82ab503ca7edb26d297f7d115809b12546e251" + "8e92cf7c7176cc341eebe0abd42d2dffe403486f9d2c9fcac6cd54302e6590792fd7a55be1cbfae8a8c44901b23522ce" + "1c5fb3490fb3e91af16bcfae6a918713ec5a53fed826b49bfa48bd86cbd4ed347ce765226e091d319c50b2b733881612" + "ee7813f259af86afd8a4a5ddf005e0b7d7955d810b237228a1456a2790bd36dcb62fa9aa66180f31f85cfb26929f76d0" + "37a69b9e44f4176ac38df6a539ed4e73528cf48779e1cffa60b8d66b61baf42b6d3b7d19591991010222400c81893234" + "22ec185b3bd10d83ab7238a3652a6f193d15d890a33520ce5857ba583fb7899e20f85efb629a9667e033c61f4fd76542" + "62c89c82a95078afe4a35d2d1ff9c0cb98e42d4df32582fb5a9de6871ded866bc1afb6a9b8647c477060ecdc4230c279" + "cbcaeec804909b32502ea589fa2cb1cf5a75fa54be3ebbaa021446a0594b9be44b41febc2afd0a5b5fdd44120a655861" + "bcf4e775204e4955b81c73b691bf149cbaae2098523ae329a3672a2b113404e894c3b1f15dc902b2532ec385f7b519c9" + "0ab3430ee7c137a49bda4cfd065ac7ed7274aa7c1b7b599d808b10742e6d91690ff3e19bf049e9aee6811d219e70f2ff" + "ba083516c8f48f78f1efde2478c7e972fcba6e391b515c89283756847d874be7eb32b033660a0d55b01d6396b5fbd48d" + "38bd66d6176ec305e6b71b8d46b25b2fd3a5d3f1d9d888a00540a2951788de0a7d5b51dc982a3512c87c9f6ad38fd6e5" + "7164ce5056aa781bf3498fa2eb18b527ceb64ba5e3f7b918513a8525aefe822d41f2bdb2cd3c3dffc40708ef0c3f9f8c" + "ce804d093b3510c8389763c2bfd285f5b55dc103a2730a8745e6370a8f44f6172ecb84e7953d8dcaa2c11da18f72f0bb" + "f6092d37fc906b2db3ed1a797bdd8c0a99461a4f7d7154c8309673e29b9645e4374e874de7272aab003606acd8c2a9d0" + "69ade6e7112c07d8f4af7cb16f4f377881e13fe5837b699be04bc9eeae089d029a567e6330a0754e4354ec345ee361aa" + "f60b2d73f4997a1db78d9ea8e84cd90292576e4314e4b55fc147aa7a1bb74186b3db1cd5a31f25daf0ebfca86c5d5310" + "c4390f53f4d9729cb6afb8a8645c4330e07dcf4276ca34d2f3fb9884218c7296b7fb908531ac56d277ea129677e21386" + "57c6574646444400080110202444c0118213464e4554202c45d031a657865fc74766620084118a12566e6110e03dc7c3" + "77e812d27feb02b653a6d397d5d511080310642c4dd1218673c29fd6c575244ec145aa3e13be50b6b7bb9804308e70d2" + "fbfa88a405c8b28735e8d6cb74f876fe323a233020644c4110a03546c255ce125e6f7130c47907d2f5fb549c3abf229a" + "1676e23182534ecf4476062cc9c0ab9425acfec62548e38db6adb8ec6c555200e41d4b93e55b61daf8eaec8848199301" + "462a491db18d52b0f37f890e33da1cf7a71bad42f2dbbec0a595f994c1b1b555c01382574e475464244cc101a237028e" + "54d6336a0b9565867bc38ff6e131e45f4356ec7056ea709af26ba9a267082f15bc9ceaa481d938956386b7db94c5b13d" + "45d231e25f8f4ef74306e6d11780df1a5d7f151c89a826548639cb4affca06d4d733480f91ed1e79f3cd9e28f94edb46" + "de5676622080510a83456e2718ad24fed62768a3c53f2d9be84ad9ce8a4c5d131845382d75f455620684dd9209653e6d" + "b16d4f737088f00fe1e3ffb808711ec1e5bf7c916b0fb7e992e179edce62508eb0cb78f9eece045c8329637ea928775e" + "057ca56de767222a011420ac54d233e21b8747e673028655c6134e4f5574046885c1b3b511c81a93674a27d0b5b7dd94" + "09a92676823d43d2fdfa44bc1efbe28b9465a47fc7076ee301a6378a9e46f45362ca9cc6a159699fe0c3d9fc8c6895c3" + "93f559419ab0636cab4c3f1f9dcc8209453a2d31fc5c733680bd16d8f6af38b9665e077ce165ee76122e6190f13fc587" + "3be90af34b8fe6e311a417cad6cf747066ec105a2bf129c76b63bab023642a4d1d399d40929377480790fd3e5db70d8f" + "aaea0895038a765a27f0b1f75d051aa9607ecf247ac7ad7af5ab5e3d7bd58d1ab9625e8f6cf3478e7ed327c2b7d395d5" + "9119011220604cc900b21726ca94c7b1794ddb20d25befca26d097b3d91c91ab1634eaf48b7879ffcc0618cf287b5f9d" + "4c930b477e6130e47d475264e854da32f23ba303266280951388561a6f7931d459239635ead68f7cf167ce365aa7e1b3" + "f519491bb1414aabc02f85afbea8a8445803b0716ecf047e872debe6ab183536ccb40fe9e2ef982c35ded067ac3adf2e" + "5b97c5d731484b99e40f49f7ad1af96adf8e4ed547026e4915b09d7294b7bf988c209c52b2f33b810722ea189723ca3e" + "d3a7d3b5d1d199900120264484198b02764a25d0f1bfd48539ad46f253aed287f5f155c81292776a039475a65f874fe7" + "6322a2110602cc5c133a413ca5edf665206e4d15388d60b6d7b7598583bb7018e32da3ef3a3933540c299d6096d3f7d9" + "1490bb3610ae349afa6ab982434cef043e8faceac48d18b92656867dc343eefa02b453e2db9ec4e5156887c1f7bd18d9" + "2a9707cef64324e2d59f18dd2a1f17dcd4232c23dc3c3fff800f01fe3c3bff081f13dc5c333e01bc34fef6232823542c" + "2ddde007c0f79f1cdda20f05feb42bed2a7f1b1d559019231624e8d4cb30f07fef023e43b4f1f7dd1418ab2432ce3c5b" + "f3c99ea0e95cf926d6977fc107a2fb1a9567863fcb86e7d13584db92c57d255ee161eefe023c43f0f9fecc241ccba0e3" + "5dad0efbc28fd4e5356cc74166ae189f22da1ef7e313a453c2dfde44740668c1c9baa421cc7a17b6d9b685bdbccce005" + "c0b39715cc920b657a65b87c7f77100c219c70b6f7b3190512a8705eeb60bad62f69b3e51b695bf9c8ca88c409093334" + "00e81cd3a3d33dc1c3bbf009e12fe7a33b21126068cdc8229417aada0ef5c353ecda42fcda62f89ae26989e22f81af36" + "b8ba66380b7178cde826d4973bc90eb3cb1ef5e357ac5ad3efda24f0d7fb509cb2af30b8767e233821746c65546024c4" + "d11380570a4f5d751448a18573a493db5cdd221e07fcf067ec325e2f79b1c55b21d279ebceae4895839b745863bcb0ef" + "7c317e4d353ccde027c4b71f8dcea2490db3ad12f87affaa0a1556807d0f5bf5c952b8f26fa92a771a0d75b45de307a6" + "fb928575a45fc347ee7212a67182d35fcd46324a2dd1e19ff0c1f9bcc4e115e097d3d5dd1018233420ec5c5332c03d87" + "cbf6e930f47f67122c61d4f936d4b73f898e22d81eb3eb1ab563c6bf5a95e7973dc9c2abd02da5eff62128675c253ced" + "e46744260c8d88aa04148ab84278cbe8eacc8c08990212466c4150a8b447e073ce9e4ef54342eed806b0db7ad9ae868d" + "dca02d45f235a2df1e5df7050eabc82e958f9aec6855da10f63f2b9b2452c2fdda40fc9e6af18bd26de966fe123e63b0" + "b1774c0718ed2c7fd7054ea3492fb7a99a6078cfe862dc9e2af90ad34fcf667202a451c29bd64d65366ca14d6b37b099" + "721ca7adbaec285d5b11d4192b1734c8f08ff0e1fdfc447006e0d1db98c4290d73b491fb1c95ab9e24f8d6eb70b8f66f" + "213a65386d7d7554402084518293574c47106c2d5df105c2b3d31dc5833b611ae169efee22180730e87cdf62528ef4c3" + "71e8deca64d852baf22ba123662a0915308c7096f3f3999401a83656a67983c37fe902f25bafc2a7d1b595d990813124" + "46c0558a1a577e4134a4fdd64164ae5c972bcb2ef3839775c0538ad64f657264a85c5b33d01da38f36f8b2e739295778" + "41f8bce6e511680fd1e59f78d1eb9ea4e9d4e934f4f777000e01dc383f77901d239e34faf6ab3831764c251ce9a4e7d5" + "350ccb80e71d2d9fe8c2c9dca82c55d211e61f0fdfe44340ee9c0eb9ca4addce025c4f31784df924d6d377c81692ff7a" + "11b615ae9e8eecc04188b20724ead48f38f96edf065ec7656266881c13ba503ea7a9ba64384f7971dcd822b413ea5a9f" + "e6c315e4975bc5cf32782bf5294f7b7198d02ba523ee3a1b375084b19f50d4bb3e11be14bebeaaa800500aa1416aaf80" + "af14bcbeeea009413aa521ee7e133e41b4b5ffd40528af44b61fafcaa6c195b19d5090b337008e10de3a7b3b910502aa" + "501ea3e93af52b4f3f7991c11ba1436aeb88a6058cba8e24d8d2abf029e56f67322821546825d4f137c4971bcd4e335a" + "0df5a55fe143eafa8aa441c0bb9605ecb64fa56be7ab3a3132442c0dd9a08751e49f5ad5ef163cebe4ab5c3d3fdd840b" + "89663e0bbd60d6db76d836b6bbba003406e8d0cbb8e06dcd623682bd52d0ffbe08bd06dad6ef7030e67d035a6df964de" + "5276ea3092736a8b8467843f8f8eeec00580bb1614eeb40be96aff8a0e55d6116e0f1dfd844b81e73f299b605acbecea" + "449c1abb621a8765e2778a1e57f65126869dde806d0d7bb581db38d16b8fa6eb90a535ecd64364ea549e3afb2a930746" + "e6510682dd5e117e0d3dbdccc201c43b0f17fcd063acb2cf3c79f7cd1638eb6cbb4e1f5fd545022a411ca1ad76f4336e" + "0b1d759459a38737e892c37de946fa52bef2a3b131444a01d4392f57b459e38fb6e9b0e57d65566060ccd802b0536acb" + "8ce6851da98e62d09fb2c93cb5efd62568e7cd363cabec2a5d1f19dd081b13544c211c61b4f5f755040a89443a0f35f8" + "d4eb34b0ff7e113e05bcbceee401482b95258efac2add0e1bdf4c57124c6d157885e1b7f59159099321426ac98ca28d1" + "4b8be66b01b635aade0e7dd341ceba4a3dd3c1dfb848799fc0c7997c1d7b95859bb840788fe0e3ddbc0cf986c3d5fd14" + "58a3a533ec1a5b7fd904929b765827b4b9fe4c351ec9e4af5cb52fcfa66b81a737a89a427ccb60fadeae6891c31be54b" + "63fab8a265086b1db58ddaa0e15de906f2d3bfd085b1bd54d033a6138e56d67762028455821b475e657064ec545222e0" + "19c30be76b23b23122460c4d91290772e0b9d64965be7cb36f0b3f7190d13b8507aafa0ab543c2ffda04f4977bc18fb2" + "e938f56f473668a1c57b2592f97addae0e9dce824d4d333c01f83cf7e7132c43d0fdbe4cb50fcbe6eb10b437ee920f65" + "f275aa5e1f7fd10582bb521ce7a53bed0a7b5b9dc48319651e69f1edde6070cef842f8daeae888c00981232622881412" + "aa701ae369abe62b09373488f80ef1c3dbfcc8609cd2a3f139c54b23f239a3472e6b91a517e8d2cbfce864dc5232e239" + "83436eeb00b617aeda86e5d1718cd283f57945da30f27fab0a375284f59759c58b3a713ac52d2fffa00b417ead28ff4e" + "175ec565266e810d23be30ba763a2b3130446805d0b1b755841b8b467e4334e0f5df5054aa3c13fa58bfa68b9c64b45f" + "e343aef283b571c4db12d47f271aad60f6df3658a7a5bbfc08791fd1c59b38517a8da4afdca42dcde22780bf169cfea6" + "2989623e83ad72f4bb7e193f159c98aa2410ca38d36bcbaee28195318c5292f77b019631ea5e9f6ed307c6f75304c691" + "5f095f39595999800300660c0d99a80650c6b95a59ff8c0e99ce0a5d5f115c09393554c0318653c6df5654662408c908" + "b30706eed007a0fb5e9d6e970fcfe66300a6158e9ace6c515288f40f69f3ed9a6879dfc846985e3b7b1995018a32522e" + "e181f33d81cb3af12bc72f6bb3a113604ac9ccaa0c159a98663c0bf968dfca46dc56326a2991610ee3c1bfb489f82cf5" + "c75364ca50deba6a3993414eab483f978ddea0694dfb2492db7ed926969ffec02584fb9685fdb44de127e6b31b0556a0" + "794fdb64da52fefa22b013624a8dc4a31d259ef8e2ed98683dd7c157a85a5bffc80690df3a593f958d9aa8605ccb20f2" + "5faf4ab7c397f5d151889203646a459c38bf66921f67d235e2d79f5cd5230e27d8b4a7fdb04d6937f4917b0d97a9da68" + "f9ceca44dc123a6338a1656e67102c25dcf027e4b35f0d5fb1494bbbe00bc16faf2abb021646e451428ad44f217a6db9" + "6c5f5354cc301e63f0b9f64d253eeda06f4d373c89e82ed5871bed4a73da9ce6a519e90ef3c39ff4c171acd6c375e856" + "da76fa32b2332202044480190312646845d830b677a21b0756e47146ca54de327a2bb121466a419cb0af74b07f6f133c" + "41f0bdf6c5352ccfc0678c3e9faeca84c591390552a0f15fc946ba5a3ff3819731c85a9be64b05f6b53bcd0e3bdb0cd7" + "835f6d5370c8f88ee0c1d9b8846184f39795dd9009213664a05d4b13f459639eb4ebf4a97c7d775404288d40b29737c8" + "9683fd7855fa14b6bfba882414cab0c379e9ceea409c92ab7038e76d237e2939755c4130a475c65346ce5456226809d1" + "298763e2bb920564a65d870bef6a33921566861dcf826f4937b499fa0cb58fdae4e954f836f6b33b011620e85cdb22d2" + "1fe7c337e093d35dcd023a433ce1e5ff74106a2d91e91ef1e3dfbc48f18fd2e5f974dc7236a2b912506ead08fb0e97cf" + "d6656066cc141aab603ac72d6bf7a91a717acdac2edd860bcd6e371a8d64b65fa74ba7e3b3b111400a81452a2f11bc14" + "fab6a3b930546a2590f93ed5a71fadcae2c99ca0ad54f037e6931f45d6316a4f9d6c974bc7ef7230a2750a4b5dfd045a" + "83e57b659a787bff880e11de187f3f199d009a12766a2190712ec7857fa50beb6abb820744e6150e8bcc6e151e89ec2e" + "5d9709cf2a7b1b9545823b431ee5e177ec125a6ff920d65b67da34f2f7bb1815328c349efae2a990612ce7c5372c8bc8" + "6e9d0e9bce4e5556006c0d59b18553a0d35bcdce22580fb1e95ef962de9e6ef103c27fcb06f6d337c09793dd5c113a05" + "34acfcc66140ea9c86a9d868bdc6c355ec165ae7e932f43b6f1b3d51d099b20524aedc8629c96abf828f54f4376e830d" + "67b639ab463e4bb5e1d7f950d8baa62188721ea7e9b2e5396d5f7150c8b88661c0fb9e84ed9469a5e7f731084318e52d" + "6ff7210a6358ada4efd4252cefc4270caf8cae8c8c888800100220404889802304268c9c8aa840588ba0634caf0cbf8e" + "8eccc40108231424acdcc221c07b8f86efd025a4ffd6056ca74da72fabaa22100620c8589ba2430ce7853fad8aea489d" + "828b547c277ca16d6f773008611ce1a5f7f511480b91650e6bd1ad96e9f0edfc6474466040c8988221406a8d84ab9c24" + "bcdee26188f20fa5ebf6a938757e45342cedc46304a69d9e88ec0c59938157284b59fd8c4a91c71b6d5b71d8d8aaa401" + "c83a9727cab6c3b5f1d5d910903326028c54923b631aa561e6ff121c67b439ef4e375a85e5b77d814b2bf32983636aab" + "802704ae9c8ea8c848998203446e051ca9ac66d4172acb0cf7871fedc263c8be86add8e0add4e135e4d75344ce105e2b" + "7939d54903b2712ac70d6fb7298b627a8ba463c4bf1e9dee860dcda22f01be34bafe2a3913504ca90c739695ff940da9" + "ae66901f23da3cf3e79b3c51f29db68dbcacecc44100a215068adc4e315a49fdac4ed1478a7e5b37d095b39d1498ba26" + "308a705aebe8aac40d09bb2412ca7cdb62da9ee6e111e01fc3c7ff7010e23d83cb7ef922d61f6fd325c2f3db9cc4a11d" + "6196f1f3dd9c08b90652c6fd5250eebc0af94adbcece445402284158a9a467c4370e8fcce6050cab8c269c9eaae808d1" + "0b83676a23903526ce944fa16b6fbb2813524ced047a87a5fbf489783df7c51728cb48ff8e0eddc6034c6f153c8de8a6" + "c595398d42b2d33fc187b3f918d12b8727eab2833560c6d956987e3f3b9904128a745a63f8b8e66d017a2db1ed5e7172" + "ccbc0ef9c2cbdcec245cc321e27f8b0e77d215e6971fcdc623482f95ad9ee8e0cdd820b457e2538ed6c7756046c8549a" + "3a733a812526ee900f21fa7cbb6e1b1f55d4112a0714ecb44fe163eeba0a3552c0fd9e48f58f5af5eb56bc7af7ab1a35" + "72c4bd1ed9e68f1cfda64f856fa72bab2232022440c0999201642e4d95298f62f29bb641a4b7df944da12f67b2392356" + "2c69d5e916f0f3ff980c319e50f6bf3a9926168efcc261c8fa8ea4c9d0a9b465e47746064cc5012a2710ac34def263a8" + "b2472c6bd5ad1ef9e2cf9c6cb54fc367ea32923762829557805f0b5f7d515088b00760e2dd9e08fd0e5bd7cd56306a6d" + "99681fd3c5df30586bbda0cf5875be5cb72f8bae62909733c81e93ef5a35f2d5bf1c9daa8e04dc922b613ae5296f7f31" + "184138a565e677020e45d4312e47947da74fa76ba3a3332002404c8908331604ec944ba1e37fa90a735a8de4a75da50f" + "ebe2ab902524eed40728eb4cbf0e9fcec64544220c0598b8267482794bdbecca40dc9a2a711ac16daf6eb30b0776e031" + "c65b47de747266a818533ac12da7efb22921766c215c6935f4d573048699de087d1f59d5891a31724cad0cfb8687ddf4" + "0568a7c5b73d89ca2ad10f83ef7a31b2552e0f9dec8649c5ab3e31ba543e2fb9a8465847b8787fff001e03fc7877fe10" + "3e27b8b8667c037869fdec465046a8585bbbc00f81ef3e39bb441e0bfd6857da54fe363aab2032462c49d1a99661e0ff" + "de047c8769e3efba28315648659c78b7e7933d41d2b9f24dad2eff820f45f6352acf0c7f970dcfa26b09b7258afa4abd" + "c2c3ddfc047887e1f3fd9848399741c6bb5a1df7851fa9ca6ad98e82cd5c313e45b43defc62748a785bfbc88e80cd183" + "9375484398f42f6db36d0b7b7999c00b81672e2b992416caf4cb70f8feee20184338e16def66320a2550e0bdd6c175ac" + "5ed367ca36d2b7f3919511881212666801d039a747a67b838777e013c25fcf46764224c0d19b9045282f55b41deb86a7" + "d9b485f9b4c5f135c4d313c45f035e6d7174cc7016e2f19bd04da92e77921d67963debc6af58b5a7dfb449e1aff6a139" + "655e6170ecfc467042e8d8caa8c04989a22700ae149ebaea2891430ae74927b6b9ba443c0ff9e0cfd864bc5ef3638ab6" + "43a4f3d79d5c912b0736e8b0c77961def862fc9a6a799bc04f896e3f1b9d44921b675a25f0f5ff54142aad00fa1eb7eb" + "92a571e4df5254ee341aeb68bbc60f4df7250aeb48bf868fdce4254ce305a6bf9a8c64945ba3c33fe183f37989c22bc1" + "2fa7abba2030466841d8b8a665807b0f97edd261e8fece2458c3a9f26da96e7f131c45b03d67d6356ac78d7eb52bcf2e" + "7b938557a05b4bdfec4250ceb84a79dbc8ce884c191b11540829157084f197d1d59918113204248cd882a151688fc0e7" + "9d3c9dea8685ddb00d61b6f5b35d0d1bb9405a8be46b45be3cbbee0a1d57905d2b1f35d8d0abb421ec7e573648a585fb" + "b481f93cd5e317a4dbd2cdfc247cc76162ee980e31da58ffae0a9d46925f6f5334c0f19fd0c5b93c55f215a69f9ecce4" + "0548a38537ac9aca6cd9429ad66f6132e4394f5b75d850bab623a832562e6991e11fe1c3fbf888e00dc1a3b73188521a" + "e76923f6392b573c49f1add6e171ecde4274ca70dafaeaa8804108a30526ae988e20d85abbe20b8567a63b8b0676c235" + "c2d3dfdc44300e61d0f9bec4a51de986e3d1bd94c9b0a575e4574246cc54122a6118e12de7e7332803506cad4cf30786" + "ffd205e4b75f854fa36b2bb3210262488d80ab1434aefc826949fbac82c95cb92e57965de7072eeb80a715ac9ecae4c9" + "50b8b667a03b471e6df165ce7252aef083f179cdca22d01fa3cb3ef1a3d73d49d3a9d269e9eeee001c03b8707eef203a" + "473c69f5ed567062ec984a39d349cfaa6a199701ce3a5b3fd18593b95058aba423cc3e1fbfc88681dd381d739495bb9c" + "04b89e62f09bf249ada6ef902d25fef4236c2b5d3d1dd9808311640e49d5a91e71f2ddbe0cbd8ecac4cd10382774a07d" + "4f5374c8709ef2e3b9b0456827d4b53fcd862bc92eb78b9e64f057ea529ef6e331a0574a47dc74366ea109633ea1a976" + "7c237c297d7d555000a0154282d55f015e29797ddd401282754a43dcfc267c83696bffa80a515e896c3f5f954d832b63" + "3aa121666e011c21bc74f677220a0554a03d47d275ea569e7ef32382374286d5d7114c0b19751c49b1a557e053cadece" + "645042a8d04ba9e26f892e379a9c66b41beb4abfc287d5f515488381772c0bd96c9f4ad7cf5674626488581bb3410ea3" + "c93eb5abde2c79d7c956b87a7fbb081712cc7c177ac1adb6edb06d6d777400680dd1a19771c0db9ac46d057aa5a1ff7c" + "117a0db5addee061ccfa06b4dbf2c9bca4edd46124e6d51708cf087f1f1ddd800b01762c29dd6817d2d5ff141cabac22" + "dc1e3bfb089703ce7e5336c0b597d9d489383576c4350ecbc4ef143cafeca24d0d3bbd00da1af76b03b671a2d71f4dd7" + "214a6bd9ac86c9d4a93c75f655260e8dcca20d05babc22fc1a7b7b99840388761e2ff9a0c759659e78f3ef9a2c71d6d9" + "769c3ebfaa8a04548239435aede866dc163aeb28b3470e6fd12586fbd28df4a57de5476262889403a8725eaf68b3c71f" + "6dd361cafacaacc0c199b00560a6d59719cd0a3b531cc5a13f6592796bdfac4ad1cf9a6c7957d854ba3e33ba103626a8" + "984238c369ebeeaa08151288741e6bf1a9d66961fefc227c0b7979ddc80290572a4b1df5855ba1c37be98ae2498da2af" + "10bc36feb22b213264284d59319451a29717ccd6036c6b55bc1cfba6839d74947ba783bf7090f33f818f32f83af72b0b" + "377080f11fc1c7bb7819f30d87abfa28b1474a67d834b6ffb2092536ecb04f6973fc986a3d93c95eb96a5f9f4cd7034e" + "6f513484f996c1f5bd5cd1238637ca96c7f57144ca10d63b6b1bb541c2bbd20de5a77fa10b637aa9a0674c271cadacee" + "c40508ab04368ebccae0c9d8a8a445c0338617ced6476462448c189b22520ee5c173ac92cb7cf966de167ee321a2770a" + "0f55f4156a8785ffb409e92ef7831f65d271eade8e6cd1438af64b25f2f5bb5c1d3b9d049a9a667803f079efce265887" + "a1fb7c996a1f97cdd621686fdd241ecbe4eb54bc3effa20b0576a439cf4a77da14f6b73b890632ca3cd3e3dbbcc0e19d" + "f085f1b5d5d111801302464c4510282554e035c6d357cc56126e6911f01de387b7f990c139a547e2738a9647e473468e" + "5cd7234a2fd1a597f9d0c9b8a465c4730686ddd6016c2f5db50dcba2e319a507eaf28bb461e4ff56146ea509eb2eb38b" + "1674e2758a5a5fff401682fd5a51fe9c2ebd8aca4cdd021a477c6174ec7456626088d00ba1636eab0837168cfc8669c1" + "ebbea0a9547827f4b17f4d1738c968bfc6875de5076ae389b625a8fe4e355ac1edbe6cb14f4b77f810f23fa38b3670a2" + "f51b495fb9485b9bc44f017e2d39fd4c5312c47d075ae5e976fc327e2b39315448219471a6d7975dc5032a6318a525ee" + "f6032c63d4bd3edda60f8deea6098d22be12be72b2b333000600cc181b33500ca18d72b4b3ff181d339c14babe22b812" + "726aa980630ca78dbeaca8cc48119211660e0ddda00f41f6bd3add2e1f9fccc6014c2b1d359cd8a2a511e81ed3e7db34" + "d0f3bf908d30bc76f6332a031464a45dc303e67b039675e2578e5ed7674226c095939954182b3530cc7817f2d1bf948d" + "b8ac64d45322c21dc7837f6913f059eb8ea6c994a1bd74d47326829d56907f2f1bbd40d29bf64925b6fdb24d2d3ffd80" + "4b09f72d0bfb689bc24fcd66360aad40f29fb6c9b4a5fdf4456026c4951b89463a4b3df1c5db30d07baf82af50b4b7ff" + "900d21be74b27f2b1b3550c0b99641e4bf5e956f872feba2a3112406c8d48b38717ecd243ecfa46bc5af3eb9aa461c4f" + "b1694ffb609ad26fe922f61b2f53b4d1f39d9489b82474c67142cadcce20584bb9e04fc966be1abf62929777c01782df" + "5e5576042c8dc8a28515a89e42f4db72d8bea6a998603cc7e173ec9a4a7ddb40de9a6e7913d05dab0e37da94e7b539cd" + "4a33d21de7873fe982e359ad86ebd0adb4edf46564664404088900320624c8d08bb0616cef44360eadc8e28d94a9bc64" + "f45762428cd48339615ee960fede267883e17bed8a6a599f80cf187d3f5d95098b22720aa541e2bf928d74b47fe7032e" + "6390b537cc960bed6a779a1c77b619af06bedaa6e191f11dc183b37108c309e72f2bbb2012426cc940ba9627e8b2c73d" + "69d7e952f8faeea808511a81652e6f912d07faf0abf4296d7f75104829956186f3d39dd481392556e071ceda46fc5272" + "eab8826148eb8ca68d9ca8ac44d013a2530ec7c577240ac94cbb0e17ded467242acd0c3b9f04de926f6933f4196b1fb5" + "c9d2a9f06ded6676022c41d0b9b645a43fcf866fc127a6bb9a04748679c3cbfee820d45b23d23de3c7bf7891e31fa5cb" + "f2e9b8e46d457224a0dd5a11f61d2f9faccac0cd98283556c0758e5ad7ef5234e2f59b585dbb0c179adc6e351ac96cbf" + "4e974fc76762228015028a545e237829f56d477260a8d44b21f27dab4e3f5b95c59339415aa9e06fcd263e8bac62d49f" + "3ad92e978fdee46144ea1496bbfa08b507caf6cb34f0f7ff101c23bc30fe7e333a013424ecd44320e25d8f0aff4a17d6" + "d577040e89cc2a1d1798dc2a3d13d85cbb2e139e54f6372a8b0476863dcbc2efd824b4dff241acb6cfb469e5ef76302a" + "6518693df5c55320c259cf8a6e591790dd3a1d379c9caaac00d81ab3630aa741a6b79b9c44b01f63d2bdf2c5bd3cdde2" + "0784ff960deda66f812f27bab822740a6959f98cc281d5390d53b0d17b8d86abd82cb5cfd265e876de367aa3a133640a" + "495db90c5392d57f051ea9e86edd061acf6c73568c7c976bc3aff2a1b1754c4310e43d4fd365ca72dabee2a191710cc3" + "81f73d09db28d34bcfee62108631ca5adfee4214c6b15b49dfa84a59df884e195f195d19191110002004408091130046" + "084d1939155080b11740c6995e197f1d1d9988021046284959b9844380f71f0ddfa04b49ffac0ad94e9b4e5f57544420" + "0c4190b137448619cf0a7f5b15d4913b0516a8f84ef942dadeee6010c239c34befea22901722ca1cd7a35b2dd3e1dbf8" + "c8e88cc0819131044280d51b0957384979bdc4c311e41f4bd7ed5270eafc8a6859db88c6094d3b3d11d818b32702ae50" + "96b3fb1895238e36dab6e3b1b155480390752e4f956d876be3abb22120664c0518a92476c6354ac3cdfe2438cf6873de" + "9c6eb50bcb6efb029657e65306c6d557004e095d391d51909133040688dc0a395358cda82e559619ef0e3fdb84c7917d" + "0d5bb1c15ba9c26bc9aea6899c20bc56f273aa920764e2558e1adf6e5316c4f51748c7897e3d3bdd0c1b9b445e037c69" + "75fc547226a0995218e72d2bff281b535ccd203e47b479e7cf3678a3e53b6d1b7959d9888201442a0d15b89c62b493fb" + "589da28f14fcb66fa12b673a2931744c6114e0b5d7d155881a1376482594f9b6" + ) + + def __init__(self, stream): + self.stream = stream + + def decrypt_header(self, number): + self.stream.seek(number * 2048 + 508) + buffer = bytearray(self.stream.read(53)) + + for i in range(len(buffer)): + buffer[i] ^= self.HEADER_KEY[i & 0x7ff] + + header = struct.unpack(" tuple[int, int]: + data = stream.read(34) + _, _, extent_lba, _, data_length, *_ = struct.unpack(" list[SegaDvdFile]: + start = stream.tell() + size, crc = struct.unpack("> 24, + filename.decode("latin-1") + )) + + stream.seek(start + size) + return games + + +class AppData: + system_flag: int + function_type: int + region: int + platform_id: str + + +@dataclass +class AppDataRing(AppData): + # Appboot + format_type: int + game_id: str + region: int + function_type: int + system_flag: int + platform_id: str + dvd_flag: int + network_addr: tuple[int, int, int, int] + + # Misc + app_data: bytes + + # Crypto + key: bytes + iv: bytes + seed: bytes + keyfile: bytes + + # Misc (2) + extra: bytes + + +def scramble(val, a, b, c, d): + ret = bytearray(val) + ret[a], ret[b] = ret[b], ret[a] + ret[c], ret[d] = ret[d], ret[c] + return bytes(ret) + + +class Stream: + def __init__(self, stream): + self.stream = stream + + def read(self, n): + return self.stream.read(n) + + def seek(self, n): + self.stream.seek(n) + + def crc32(self, nbytes): + start = self.stream.tell() + data = self.stream.read(nbytes) + self.stream.seek(start) + return zlib.crc32(data) & 0xffffffff + + def skip(self, n): + self.read(n) + + def unpack(self, fmt): + return struct.unpack("<" + fmt, self.stream.read(struct.calcsize(fmt))) + + def u8(self): + return self.unpack("B")[0] + + def u16(self): + return self.unpack("H")[0] + + def u32(self): + return self.unpack("I")[0] + + def ipv4(self): + return self.unpack("4B") + + def ipv6(self): + return self.unpack("8H") + + def str(self, n): + return self.unpack(f"{n}s")[0].decode("latin-1") + + +def parse_appdata_ring(stream: Stream) -> AppDataRing: + crc = stream.u32() # idk how to make this pass. it doesn't match? + + format_type = stream.u8() + stream.skip(3) + game_id = stream.str(4) + region = stream.u8() + function_type = stream.u8() + system_flag = stream.u8() + stream.skip(1) + platform_id = stream.str(3) + dvd_flag = stream.u8() + network_addr = stream.ipv4() + app_data = stream.read(216) + seed = scramble(stream.read(16), 1, 8, 12, 15) + key = scramble(stream.read(16), 0, 4, 2, 14) + iv = scramble(stream.read(16), 0, 11, 5, 15) + + # AAL, AAS, AAR has: + extra = stream.read(128) + # For AAR, extra=FF....FF + + # if extra and platform_id != 'AAR': + # print(extra[:64].hex(), platform_id, game_id, function_type) + + cipher = AES.new(key, AES.MODE_CBC, iv) + keyfile = cipher.encrypt(seed) + + return AppDataRing( + format_type, game_id, region, function_type, system_flag, + platform_id, dvd_flag, network_addr, app_data, + key, iv, seed, keyfile, extra + ) + + +def all_appdata(): + root = r"keycraftlocationhere" + for i in os.listdir(root): + if not i.endswith(".kcf"): + continue + with open(os.path.join(root, i), "rb") as fKcf: + fKcf.seek(0, 2) + size = fKcf.tell() + fKcf.seek(0) + if size not in (288, 416): + continue + app_data = parse_appdata_ring(Stream(fKcf)) + yield app_data + + +def get_appdata(game_id): + for app_data in all_appdata(): + # Exclude dev keychips! + if app_data.system_flag & 1: + continue + if app_data.game_id == game_id: + return app_data + + return None + + +@dataclass +class Timestamp: + year: int + month: int + day: int + hour: int + minute: int + second: int + + +class BootID(BaseModel): + model_type: int + image_type: int + game_id: str + game_timestamp: Timestamp + version: tuple[int, int] + flags: int # two nibbles + segcount: int + segsize: int + hw: str + instant: bool + orgtime: Timestamp + orgversion: tuple[int, int] + osver: tuple[int, int, int] + ossegcount: int + + name: str + strings: list[str] + + +def decode_btid(btid, game_id): + app_data = get_appdata(game_id) + if not app_data: + print(f"Unable to locate keys for {game_id}. Brute forcing.") + + for app_data in all_appdata(): + cipher = AES.new(app_data.key, AES.MODE_CBC, app_data.iv) + bootid = cipher.decrypt(btid) + if bootid[8:12] == b"BTID": + print("-> Found keys:", app_data) + break + else: + print("-> Brute force failed.") + return None + + cipher = AES.new(app_data.key, AES.MODE_CBC, app_data.iv) + bootid = cipher.decrypt(btid) + + content = struct.unpack( + "<" + "II4sBBxx" # Boot ID header + "4sH5Bx2H7xBII3sBH5Bx2H3BxI8x" # Install info + "16x" # Padding + "160s" # Game name + "32s32s32s32s32s32s32s32s", # Strings + bootid + ) + if content[0] != zlib.crc32(bootid[4:]) & 0xffffffff: + print(f"Corrupted boot ID for {game_id}") + return None + assert content[1] == 512 + assert content[2] == b"BTID" + + return BootID( + model_type=content[3], + image_type=content[4], + game_id=content[5].decode("latin-1"), + game_timestamp=Timestamp( + content[6], content[7], content[8], content[9], content[10], content[11], + ), + version=(content[13], content[12]), + flags=content[14], + segcount=content[15], + segsize=content[16], + hw=content[17].decode("latin-1"), + instant=bool(content[18]), + orgtime=Timestamp( + content[19], content[20], content[21], content[22], content[23], content[24], + ), + orgversion=(content[26], content[25]), + osver=(content[29], content[28], content[27]), + ossegcount=content[30], + name=content[31].split(b"\0")[0].decode("latin-1"), + strings=[i.split(b"\0")[0].decode("latin-1") for i in content[32:]], + ) + + +class Bar: + def __init__(self, msg, max_, width=30): + self.msg = msg + self.max = max(0, max_) + self.width = width + self.last_n = 0 + + def __enter__(self): + self.update(0) + return self + + def update(self, n): + n = max(0, min(n, self.max)) + self.last_n = n + bar = round((n / self.max) * self.width) * "=" + print(f"{self.msg} [{bar}{' ' * (self.width - len(bar))}] {n/self.max * 100:.2f}%", end="\r", flush=True) + + def print_over(self, *args): + self.clear() + print(*args) + self.update(self.last_n) + + def clear(self): + print(" " * (len(self.msg) + 2 + self.width + 2 + len("100.00%")), end="\r", flush=True) + + def __exit__(self, *_): + self.clear() + + +def parse_dvd(stream, path): + """ + Pending review: + + - "[SBYG]DVR-0069"\DVR-0069A.iso + """ + + alpha_base = AlphaDvd(stream).locate_header() + if alpha_base is not None: + print("ALPHA") + alpha_base *= 2048 + stream.seek(alpha_base) + else: + alpha_base = 0 + stream.seek(0) + stream.seek(0x8000, 1) + + # Alpha DVD is done, time for ISO 6990 + while True: + vol_type = stream.read(1)[0] + vol_id = stream.read(5) + assert vol_id == b"CD001" + vol_version = stream.read(1)[0] + assert vol_version == 1 + + if vol_type == 1: + start = stream.tell() + stream.seek(1, 1) + system = stream.read(32).decode("latin-1") + volume = stream.read(32).decode("latin-1") + stream.seek(8, 1) + logical_blocks = struct.unpack("II", stream.read(8))[0] + extent_lba, _ = read_directory(stream) + + # Primary volume + print(f"Disc name: {volume.strip()}") + print(f"System name: {system.strip()}") + print(f"Blocks: {logical_blocks} x {logical_block_size}") + stream.seek(start + 2041) + elif vol_type == 255: + stream.seek(2041, 1) + break + else: + print(f"Unknown ISO 9660 volume: {vol_type}") + return + + stream.seek(alpha_base + extent_lba * logical_block_size) + lba, length = read_directory(stream) + assert lba == extent_lba + + # At this point we're finished with ISO 9660, and it's onto SEGA stuff + stream.seek(alpha_base + lba * logical_block_size + length) + stream.seek(0xf3800, 1) # ?? It works, but... what? + + # Looking at segaboot, the answer is we just skip over all this entirely + # and jump to hardcoded offsets + stream.seek(alpha_base + 0xff800) + + dvdfiles = parse_sega_table(stream) + print(f":: Found {len(dvdfiles)} file{'' if len(dvdfiles) == 1 else 's'}") + + stream.seek(alpha_base + 512 * 2048) + boot_sectors = [] + for dvdfile in dvdfiles: + btid = decode_btid(stream.read(0x200), dvdfile.name) + + chunk_sums = struct.unpack("<65408I", stream.read(0x3fe00)) + boot_sectors.append((btid, chunk_sums)) + + for n, dvdfile in enumerate(dvdfiles): + if n != 0: + dvdfile.offset += 0x40000 * n + + for n, (dvdfile, (bootid, chunk_sums)) in enumerate(zip(dvdfiles, boot_sectors)): + print(f"Reading file: {dvdfile.name} @ +{alpha_base + dvdfile.offset:08x} ({dvdfile.slot})") + stream.seek(alpha_base + dvdfile.offset) + + if bootid is None: + print("! No boot ID. Guestimating values!") + + stream.seek(alpha_base + dvdfile.offset) + btid = decode_btid(stream.read(0x200), dvdfile.name) + chunk_sums = struct.unpack("<65408I", stream.read(0x3fe00)) + + filename = f"{dvdfile.name}_{dvdfile.offset}" + segcount = len(chunk_sums) + for i in chunk_sums[::-1]: + if i: + break + segcount -= 1 + segsize = 0x40000 + + # DVR-0069A + # segcount = 1896 + else: + image_type = ("UNK0", "original", "UNK2", "patch") + filename = ( + f"{bootid.game_id}" + f"_Ver.{bootid.version[0]}.{bootid.version[1]}" + f"_{bootid.flags:02x}" + f".{image_type[bootid.image_type]}" + ) + + segcount = bootid.segcount + segsize = bootid.segsize + + stream.seek(alpha_base + dvdfile.offset) + + with Bar(f"Extracting to {filename}", segcount) as bar: + with open("partout/" + filename, "wb") as fOut: + for chunk_n in range(segcount): + chunk = stream.read(segsize) + if chunk_sums[chunk_n] != zlib.crc32(chunk) & 0xffffffff: + # TODO: !! Fix chunk 0 crcs!! + if chunk_n != 0: + bar.print_over( + f"Invaid chunk: {chunk_n} ({stream.tell() - segsize:08x})" + + f"({chunk_sums[chunk_n]:08x} != {zlib.crc32(chunk) & 0xffffffff:08x})" + ) + fOut.write(chunk) + bar.update(chunk_n) + print(f"Game extracted to {filename}") + + if False: + print("Verifying TrueCrypt volume... ", end="", flush=True) + + loaded = try_load("partout/" + filename, dvdfile.name) + if loaded: + print("Verified") + else: + print("FAILED!") + print("PLEASE CHECK CONTAINER!") + + +def main(): + if len(sys.argv) != 2: + print(f"Usage: {sys.argv[0]} ") + return 1 + path = sys.argv[1] + if not os.path.exists(path) or not os.path.isfile(path): + print(f"No such file: {path}") + return 2 + + with open(path, "rb") as stream: + parse_dvd(stream, path) + #partition_disk(stream, path) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/filesize.py b/tools/Legacy/Filesytem/Data_monster_Script_Suite/filesize.py new file mode 100644 index 0000000..1c1fffa --- /dev/null +++ b/tools/Legacy/Filesytem/Data_monster_Script_Suite/filesize.py @@ -0,0 +1,17 @@ +import sys +import os +import time + +def get_file_size(filename): + try: + return os.path.getsize(filename) + except OSError: + return 0 + +input_file = sys.argv[1] +in_progress_file = sys.argv[2] + +total_size = get_file_size(input_file) +print(total_size) +in_progress_size = get_file_size(in_progress_file) +print(in_progress_size) \ No newline at end of file diff --git a/tools/Filesystem/fsdecrypt.exe b/tools/Legacy/Filesytem/Data_monster_Script_Suite/fsdecrypt.exe similarity index 100% rename from tools/Filesystem/fsdecrypt.exe rename to tools/Legacy/Filesytem/Data_monster_Script_Suite/fsdecrypt.exe diff --git a/tools/Legacy/Filesytem/Data_monster_Script_Suite/pd.exe b/tools/Legacy/Filesytem/Data_monster_Script_Suite/pd.exe new file mode 100644 index 0000000..d59b832 Binary files /dev/null and b/tools/Legacy/Filesytem/Data_monster_Script_Suite/pd.exe differ diff --git a/tools/Legacy/Filesytem/Fstools/README.md b/tools/Legacy/Filesytem/Fstools/README.md new file mode 100644 index 0000000..812ab6c --- /dev/null +++ b/tools/Legacy/Filesytem/Fstools/README.md @@ -0,0 +1,19 @@ +# Fstools + +## .app files + +1) Create a new file titled \.bin +2) Fill in the first 16 bytes of \.bin with the AES key. (e.g. 9D 0B BA 20 D1 E8 4F 24 59 39 9F 53 83 BE EE 72) +3) The next 16 bytes will be the NTFS header (EB 52 90 4E 54 46 53 20 20 20 20 00 10 01 00 00)the NTFS header is always the same +4) Save this file, then decrypt the app files with the following command: `fsdecrypt \.bin 0x200000 ` +5) Once it finishes decrypting, run [calculate_iv.py](./calculate_iv/calculate_iv.py) and save key 1 +6) Open \.bin inside the hex editor once more, replace the NTFS header with the key 1 +7) Run "fsdecrypt \.bin 0x200000 " once more +8) Your app is now decrypted, you can extract the internal_0 with ofsmount + +## .opt files + +1) Decrypt the opt file using fstools with the following command: `fstool.exe dec OPT.bin in.opt out.vhd` +2) Run [calculate_iv.py](./calculate_iv/calculate_iv.py) and save key 3 +3) Replace the IV key of the OPT.bin with key 3, the IV key of OPT.bin are the second 16 bytes +4) Decrypt the opt file once more with the new key diff --git a/tools/Filesystem/calculate_iv/README.txt b/tools/Legacy/Filesytem/Fstools/calculate_iv/README.txt similarity index 100% rename from tools/Filesystem/calculate_iv/README.txt rename to tools/Legacy/Filesytem/Fstools/calculate_iv/README.txt diff --git a/tools/Filesystem/calculate_iv/calculate_iv.py b/tools/Legacy/Filesytem/Fstools/calculate_iv/calculate_iv.py similarity index 100% rename from tools/Filesystem/calculate_iv/calculate_iv.py rename to tools/Legacy/Filesytem/Fstools/calculate_iv/calculate_iv.py diff --git a/tools/Filesystem/calculate_iv/exfat.bin b/tools/Legacy/Filesytem/Fstools/calculate_iv/exfat.bin similarity index 100% rename from tools/Filesystem/calculate_iv/exfat.bin rename to tools/Legacy/Filesytem/Fstools/calculate_iv/exfat.bin diff --git a/tools/Legacy/Filesytem/Fstools/fsdecrypt.exe b/tools/Legacy/Filesytem/Fstools/fsdecrypt.exe new file mode 100644 index 0000000..dc9e3a9 Binary files /dev/null and b/tools/Legacy/Filesytem/Fstools/fsdecrypt.exe differ diff --git a/tools/Filesystem/fstool.exe b/tools/Legacy/Filesytem/Fstools/fstool.exe similarity index 100% rename from tools/Filesystem/fstool.exe rename to tools/Legacy/Filesytem/Fstools/fstool.exe diff --git a/tools/Legacy/README.md b/tools/Legacy/README.md new file mode 100644 index 0000000..735e23a --- /dev/null +++ b/tools/Legacy/README.md @@ -0,0 +1,4 @@ +# Legacy Tools + +Do not use these unless you have a good reason to ! +These are old tools that are not easy to use but they used to be the only method to decrypt updates for a while so i'm keeping them here for prosperity's sake.