USM Video: Difference between revisions

From XentaxWiki
Jump to navigation Jump to search
imported>Ikskoks
imported>Ikskoks
 
(178 intermediate revisions by the same user not shown)
Line 4: Line 4:
* ''' Format Type ''':    Video <br>  
* ''' Format Type ''':    Video <br>  
* ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Big Endian <br>
* ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Big Endian <br>
* ''' Signature ''':    CRID <br>




=== Format Specifications ===  
=== Format Specifications ===  


<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:1000px; overflow:auto;">
<pre>
<pre>
// USM video file format
// USM video file format
Line 14: Line 15:
// big endian
// big endian


//header
num_of_chunks *
4 bytes (char) - signature  // "CRID"
{
4 bytes (uint32) - data size
  4 bytes (char) - chunk signature  // "CRID" or "@SFV" or "@SFA"
2 bytes - unknown // always 0x00 0x18?
  4 bytes (uint32) - chunk size
 
  chunk_data
  {
      1 byte - unknown  // always 0?
      1 byte (uint8) - payload offset
      2 bytes (uint16) - padding size
      1 byte (uint8) - channel number
      2 bytes - unknown
      1 byte (uint8) - payload type  // 0 - stream (audio/video binary data)
                                    // 1 - header (media metadata about a video or audio track)
                                    // 2 - section end (info about end of the chunk data)
                                    // 3 - seek (data about the seek positions of a video track)
 
      4 bytes (uint32) - frame time // used for "stream" chunks, 0 for other chunks


//TODO
      4 bytes (uint32) - frame rate // for audio chunk always 2997
                                    // for stream chunk 100*stream_rate
                                    // for other chunks always 30
      8 bytes - unknown
      x bytes - payload  // e.g. "@UTF" chunk
      x bytes - padding
  }
}
</pre>
</pre>
</div>
</div>
Line 29: Line 51:
=== Notes and Comments ===  
=== Notes and Comments ===  


* Some *.USM files are encrypted using a 64 byte key (like HCA)
* Some *.USM files are encrypted using a 8-byte '''XOR''' key (like in [[HCA Audio|HCA files]])
* USM keys are often the same as HCA keys (not always)
* Alternative names for USM files are '''Sofdec2''' or '''CRI Movie 2'''.
* Older version of this format is [[Sofdec Video SFD|SFD Video]].


=== Games ===  
=== Games ===  
List of games using this file format:
List of games using this file format:
* Genshin Impact (*.USM) (encrypted?)
* 22/7 Ongaku no Jikan (Android) (*.USM) (encrypted)
* NEO: The World Ends with You (*.USM) (encrypted?)
* Ares Chronicles (PC) (*.USM)
* Batman: Arkham Knight
* Crysis 2
* Deus EX Human Revolution
* Digimon Story: Cyber Sleuth (PC)
* Genshin Impact (*.USM) (encrypted)
* Madoka Magica Pachislot (*.USM)
* NEO: The World Ends with You (*.USM) (encrypted, more info [https://forum.xentax.com/viewtopic.php?p=178793#p178793 here])
* Okami HD (*.USM) (encrypted, more info [https://github.com/bnnm/vgmstream/wiki/usmkey here] and [https://steamcommunity.com/groups/vidsquish/discussions/0/3003299213531273149/ here] and [https://hcs64.com/mboard/forum.php?showthread=22828&showpage=32 here])
* Orcs must die!
* Persona 5 Royal (*.USM) (encrypted, more info [https://shrinefox.com/forum/viewtopic.php?f=29&t=254 here])
* Princess Connect Re:Dive (Android) (*.USM) (no encryption)
* Spider-Man: Shattered Dimensions (Xbox 360)
* Tekken 7 (PC) (*.USM) (encrypted, more info [https://hcs64.com/mboard/forum.php?showthread=22828&showpage=23 here])
* Touhou Cannonball (*.MV) (encrypted?)
* THE ALCHEMIST CODE (encrypted)
* The Witcher 2 (PC) (*.USM)
* The Witcher 2 (PC) (*.USM)
* The Witcher 3: Wild Hunt (PC) (*.USM)
* The Witcher 3: Wild Hunt (PC) (*.USM)
* Wonder Gravity (Android)


=== Compatible Programs ===  
=== Compatible Programs ===  


* [https://www.mediafire.com/file/6acalge6xd1vn2e/Scaleform_VideoEncoder.zip/file/ Scaleform_VideoEncoder.zip]
* [https://www.mediafire.com/file/6acalge6xd1vn2e/Scaleform_VideoEncoder.zip/file/ Scaleform_VideoEncoder.zip] / [https://www.nexusmods.com/witcher3/mods/3505?tab=files&file_id=23363 mirror1]
* VGMToolbox
* VGMToolbox
* FFmpeg
* FFmpeg
* [https://mega.nz/file/TJQniYwL#Dp_D-KvzVlVgTwqzVJc1n3vslBZsHdy8pdDqzhRtsOI CRID Demux Tool (CRID USM extractor)] (+ source code) / [https://cdn.discordapp.com/attachments/448202199852646431/708452992331939880/CRID.usmDemux_Tool_v1.02-mod.7z mirror1]
* [https://mega.nz/file/TJQniYwL#Dp_D-KvzVlVgTwqzVJc1n3vslBZsHdy8pdDqzhRtsOI CRID Demux Tool (CRID USM extractor / crid_mod)] (+ source code) / [https://cdn.discordapp.com/attachments/448202199852646431/708452992331939880/CRID.usmDemux_Tool_v1.02-mod.7z mirror1] / [https://zenhax.com/download/file.php?id=9999 mirror2]
* [https://github.com/Rikux3/UsmToolkit UsmToolkit]
* [https://github.com/Rikux3/UsmToolkit UsmToolkit]
* [https://github.com/esterTion/UsmDemuxer UsmDemuxer]
* [https://github.com/esterTion/UsmDemuxer UsmDemuxer]
* [http://hcs64.com/files/utf_tab07b3.zip utf_tab] ([https://github.com/medievalanubis/laughing-engine + source code])
* [https://github.com/donmai-me/WannaCRI WannaCRI] (+ source code)
=== USM Keys ===
Keys listed below are shared '''for educational purposes only'''.<br>
Please don't use them to steal assets from games.
{| class="wikitable sortable"
|-
!    Game Title                                        !! Key (HEX)                        !! Key (ASCII)               
|-
|    22/7 Ongaku no Jikan (Android)                    || 00000000&nbsp;&nbsp;013416BA    || n/a   
|- 
|    Ares Chronicles (PC)                              || unknown                          || unknown   
|- 
|    Digimon Story: Cyber Sleuth (PC)                  || 283553DC&nbsp;&nbsp;E3FD5FB9    || n/a   
|- 
|    Hortensia Saga (Android)                          ||  00000000&nbsp;&nbsp;01395C51    || n/a   
|-
|    NEO: The World Ends With You (PC)                  ||  00BD86C0&nbsp;&nbsp;EE8C7342    || n/a   
|-
|    NEO: The World Ends With You v1.01 (PC)            ||  unknown                        || n/a   
|-
|    Okami HD (PC)                                      || 006B6172&nbsp;&nbsp;61616765    || karaage   
|-         
|    Persona 5 Royal (CN)                              ||  00000000&nbsp;&nbsp;01C87822    || n/a   
|- 
|    Persona 5 Royal (JP)                              ||  00000000&nbsp;&nbsp;00A67D71    || n/a   
|- 
|    Persona 5 Royal (EFIGS)                            ||  00000000&nbsp;&nbsp;035B6784    || n/a   
|- 
|    Tekken 7 (PC)                                      || 00A1CACC&nbsp;&nbsp;C4CF453D    || n/a   
|- 
|    THE ALCHEMIST CODE (Android)                      || 00000497&nbsp;&nbsp;222AAA84    || n/a   
|-   
|    Wonder Gravity (Android)                          ||  006CCC56&nbsp;&nbsp;9EB1668D    || n/a   
|-
|}
=== Examples ===
* Demuxing USM files from "Okami HD" (PC version) using crid_mod
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
<pre>
crid_mod.exe -b 006B6172 -a 61616765 -v -x -i prologue.usm
</pre>
</div>
* Demuxing USM files from "Tekken 7" (PC version) using crid_mod
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
<pre>
crid_mod.exe -b 00A1CACC -a C4CF453D -v -x -i MainMenu_loop.usm
</pre>
</div>
* Demuxing USM files from "Persona 5 Royal (EFIGS)" using crid_mod
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
<pre>
crid_mod.exe -b 00000000 -a 035B6784 -v -x -i mov000.usm
</pre>
</div>
=== Getting keys from Unity games ===
(This method doesn't always work - keep that in mind) <br>
1. Download '''AssetStudio'''. Load whole "_Data" folder in AssetStudio. <br>
2. Find '''CriWareInitializer''' MonoBehaviour on assets list in AssetStudio window. <br>
3. Go to "decrypterConfig" section in the CriWareInitializer asset and look for "key" value there. <br>


=== See Also ===  
=== See Also ===  
Line 51: Line 180:
* [https://wiki.multimedia.cx/index.php/USM USM description]
* [https://wiki.multimedia.cx/index.php/USM USM description]
* [https://amicitia.miraheze.org/wiki/USM USM modding]
* [https://amicitia.miraheze.org/wiki/USM USM modding]
* [https://listed.to/@donmai/24921/criware-s-usm-format-part-1 USM file format]
* [https://github.com/bnnm/vgmstream/wiki/usmkey Recovering USM keys - Tutorial]
* [https://blog.touuki.com/archives/214 Getting keys from Unity games - part 1 (chineese tutorial)]
* [https://blog.touuki.com/archives/287 Getting keys from Unity games - part 2 (chineese tutorial)]
* [[HCA Audio|HCA Audio file format]]
* [https://github.com/vgmstream/vgmstream/blob/master/src/meta/hca_keys.h hca_keys.h]
* [https://github.com/vgmstream/vgmstream/blob/master/src/meta/adx_keys.h adx_keys.h]
<br/><br>
<br/><br>




[[Category:Complete WIP|USM Video]]
[[Category:Complete Almost Done|USM Video]]
[[Category:Platform PC|USM Video]]
[[Category:Platform PC|USM Video]]
[[Category:CE Encrypted|USM Video]]
[[Category:CE Encrypted|USM Video]]
Line 60: Line 196:
[[Category:Extension_usm | Extension: usm]]
[[Category:Extension_usm | Extension: usm]]
[[Category:BMS_None | BMS: None]]
[[Category:BMS_None | BMS: None]]
[[Category:XOR encryption]]
[[Category:File Format]]
[[Category:File Format]]

Latest revision as of 19:36, 2 May 2022

Back to index | Edit this page

USM

  • Format Type : Video
  • Endian Order : Big Endian
  • Signature : CRID


Format Specifications

// USM video file format

// big endian

num_of_chunks *
{
   4 bytes (char) - chunk signature  // "CRID" or "@SFV" or "@SFA"
   4 bytes (uint32) - chunk size

   chunk_data
   {
      1 byte - unknown  // always 0?
      1 byte (uint8) - payload offset
      2 bytes (uint16) - padding size
      1 byte (uint8) - channel number
      2 bytes - unknown
      1 byte (uint8) - payload type  // 0 - stream (audio/video binary data)
                                     // 1 - header (media metadata about a video or audio track)
                                     // 2 - section end (info about end of the chunk data)
                                     // 3 - seek (data about the seek positions of a video track)

      4 bytes (uint32) - frame time // used for "stream" chunks, 0 for other chunks

      4 bytes (uint32) - frame rate // for audio chunk always 2997
                                    // for stream chunk 100*stream_rate
                                    // for other chunks always 30
      8 bytes - unknown
      x bytes - payload  // e.g. "@UTF" chunk
      x bytes - padding
   } 
}

MultiEx BMS Script

Not written yet.

Notes and Comments

  • Some *.USM files are encrypted using a 8-byte XOR key (like in HCA files)
  • USM keys are often the same as HCA keys (not always)
  • Alternative names for USM files are Sofdec2 or CRI Movie 2.
  • Older version of this format is SFD Video.

Games

List of games using this file format:

  • 22/7 Ongaku no Jikan (Android) (*.USM) (encrypted)
  • Ares Chronicles (PC) (*.USM)
  • Batman: Arkham Knight
  • Crysis 2
  • Deus EX Human Revolution
  • Digimon Story: Cyber Sleuth (PC)
  • Genshin Impact (*.USM) (encrypted)
  • Madoka Magica Pachislot (*.USM)
  • NEO: The World Ends with You (*.USM) (encrypted, more info here)
  • Okami HD (*.USM) (encrypted, more info here and here and here)
  • Orcs must die!
  • Persona 5 Royal (*.USM) (encrypted, more info here)
  • Princess Connect Re:Dive (Android) (*.USM) (no encryption)
  • Spider-Man: Shattered Dimensions (Xbox 360)
  • Tekken 7 (PC) (*.USM) (encrypted, more info here)
  • Touhou Cannonball (*.MV) (encrypted?)
  • THE ALCHEMIST CODE (encrypted)
  • The Witcher 2 (PC) (*.USM)
  • The Witcher 3: Wild Hunt (PC) (*.USM)
  • Wonder Gravity (Android)

Compatible Programs

USM Keys

Keys listed below are shared for educational purposes only.
Please don't use them to steal assets from games.

Game Title Key (HEX) Key (ASCII)
22/7 Ongaku no Jikan (Android) 00000000  013416BA n/a
Ares Chronicles (PC) unknown unknown
Digimon Story: Cyber Sleuth (PC) 283553DC  E3FD5FB9 n/a
Hortensia Saga (Android) 00000000  01395C51 n/a
NEO: The World Ends With You (PC) 00BD86C0  EE8C7342 n/a
NEO: The World Ends With You v1.01 (PC) unknown n/a
Okami HD (PC) 006B6172  61616765 karaage
Persona 5 Royal (CN) 00000000  01C87822 n/a
Persona 5 Royal (JP) 00000000  00A67D71 n/a
Persona 5 Royal (EFIGS) 00000000  035B6784 n/a
Tekken 7 (PC) 00A1CACC  C4CF453D n/a
THE ALCHEMIST CODE (Android) 00000497  222AAA84 n/a
Wonder Gravity (Android) 006CCC56  9EB1668D n/a

Examples

  • Demuxing USM files from "Okami HD" (PC version) using crid_mod
crid_mod.exe -b 006B6172 -a 61616765 -v -x -i prologue.usm
  • Demuxing USM files from "Tekken 7" (PC version) using crid_mod
crid_mod.exe -b 00A1CACC -a C4CF453D -v -x -i MainMenu_loop.usm
  • Demuxing USM files from "Persona 5 Royal (EFIGS)" using crid_mod
crid_mod.exe -b 00000000 -a 035B6784 -v -x -i mov000.usm

Getting keys from Unity games

(This method doesn't always work - keep that in mind)
1. Download AssetStudio. Load whole "_Data" folder in AssetStudio.
2. Find CriWareInitializer MonoBehaviour on assets list in AssetStudio window.
3. Go to "decrypterConfig" section in the CriWareInitializer asset and look for "key" value there.

See Also