本地翻录 DVD 上的“0x00000000”区域掩码是什么?

use*_*527 8 dvd ripping drm

0x00000000当使用各种可以解密(即删除 DRM)光盘的翻录软件时,区域掩码似乎会更改。

mpv 报告:

libdvdnav: DVD disk reports itself with Region mask 0x00000000. Regions: 01 02 03 04 05 06 07 08
Run Code Online (Sandbox Code Playgroud)

VLC依次:

dvdnav demux: DVD disk reports itself with Region mask 0x00000000. Regions: 01 02 03 04 05 06 07 08
Run Code Online (Sandbox Code Playgroud)

这是否意味着地区限制已经被简单地取消了?为什么该字符串0x00000000不仅仅是0('global') 或来自1to的所有标志8

小智 22

地区码已设置为所有地区

\n

资料来源:自从我在办公桌上放置一整堆约 9 英寸的 DVD 规格(物理到逻辑)以来已经有几年了,但我曾经从事 DVD 的反复制保护工作。其中大部分信息是也可在https://en.wikipedia.org/wiki/DVD_region_code获取

\n

字段大小问题

\n

我 99% 确定该字段是 16 位,正如 @harrymc 所说,明显的 32 位数字是一个转移注意力的数字。无论如何,仅使用底部 8 位。这在 DVD 规范中很常见,其中许多字段都为未来潜在的扩展保留了位。

\n

0x00 表示所有地区均可玩

\n

位字段反转\xe2\x80\x93\xc2\xa0a 位中的“1”表示不允许该区域播放 DVD。因此,“0x01”的区域意味着它可能无法在区域 1 中播放,但可以在其他地方播放。区域 1 磁盘的编码为 0xFE。

\n

因此“0x00”的区域意味着它可以在所有区域中播放。

\n

大多数翻录者在翻录时都会将区域更改为 0,因为从历史上看,翻录的主要原因之一(或者至少是主要的准法律原因!)是为了打破区域限制,并且这样做对他们来说没有任何负面影响。

\n


har*_*ymc 9

0x00000000和 的值0相同。唯一的区别在于编写代码的程序。

代码0x00000000使用十六进制格式打印,而0 如果写为十进制则为值。

这就是编程的方式libdvdnav,使用指定十六进制格式的打印。

有关编程信息,请参阅 fprintf 函数

  • 我不太同意这一点。十六进制的 printf 0 将给出 0x0。您的示例是用零填充到 32 位,这当然在数字上是等效的,但这与十六进制无关,因为您也可以用零填充(十进制)0 到 000000000,这也可以是 0。 (2认同)
  • @orithena我指出它的原因是因为现在暗示0转换为十六进制是0x00000000。换句话说:该十六进制需要那些零填充。当然事实并非如此。十六进制转换与此无关。 (2认同)

Jef*_*lin 7

区域代码被处理为“位掩码”,因为任何给定的 DVD 都可以针对多个区域进行编码。区域代码 0(全局)相当于掩码中没有设置任何位。假设这些位从右到左编号(计算机中通常执行的操作),则区域代码将是

  87654321
0x00000000
Run Code Online (Sandbox Code Playgroud)

因此,针对美国/加拿大(区域 1)和欧洲/中东(区域 2)编码的光盘将具有区域掩码

  87654321
0x00000011
Run Code Online (Sandbox Code Playgroud)

为美国/加拿大(区域 1)、拉丁美洲/澳大利亚/大洋洲(区域 4)和东南亚(区域 3)编码的区域将具有区域掩码

  87654321
0x00001101
Run Code Online (Sandbox Code Playgroud)

eta:我实际上在上面的解释中得到了“翻转”;根据https://www.askingbox.com/info/the-dvd-region-coding-and-its-technical-implementation,位位置中的 1 会锁定该区域,而 0 则启用播放。所以,第一个例子应该是0x11111100,第二个例子应该是0x11110010。然而,这仍然是二进制中的单个字节,而不是符号所暗示的完整 32 位字。

  • 如果前缀是 0b(二进制),这是有意义的,但事实并非如此;它是 0x(十六进制)。0x00000000 是一个 32 位数字... (17认同)
  • 这个答案当前的布局很奇怪。你陈述一件事,然后*最后*你说相反。如果您想保留您现在认为错误的部分,请*在开始时*解释为什么要这样做。现在,一个新人看到你投赞成票的答案,阅读它,希望能学到一些东西,当他们在脑海中建立起一幅图景并可能开始思考“哦,这很有道理”时,你就把这一切颠倒了。这不是传播知识的方式。 (11认同)
  • @JeffZeitlin:但是“0x00fe0000”仍然与您的解释所暗示的完全不同。 (2认同)
  • 这不是通常对位进行编号的方式,它们是连续编号的,并且这个答案编号是半字节,而不是位。这个答案是非常错误的。 (2认同)

mos*_*ain 5

它的区域掩码为零,这意味着它可以在任何地方播放。播放任何不受区域限制的 DVD 时,该消息都是相同的(不必翻录)。

在消息中,8 位区域掩码有点隐藏在 32 位长值*内。
以下是跑步mpv dvd://对我拥有的四张不同商业 DVD 的评价:

libdvdnav: DVD disk reports itself with Region mask 0x00fe0000. Regions: 01
libdvdnav: DVD disk reports itself with Region mask 0x00fd0000. Regions: 02
libdvdnav: DVD disk reports itself with Region mask 0x00e50000. Regions: 02 04 05
libdvdnav: DVD disk reports itself with Region mask 0x00000000. Regions: 01 02 03 04 05 06 07 08
Run Code Online (Sandbox Code Playgroud)

在第一个示例中,区域掩码0xfe( 0b11111110) 表示区域 8 到 2 被屏蔽:
它只能在区域 1 中播放。(只有最右边的位为零。)
该掩码的逆(补码0x010b00000001意味着相反:区域 1 被屏蔽,只能在其他区域播放。

*:这可能是某种调试或疏忽,为什么它会这样显示。尽管逻辑没有改变,但只有当存在非零掩码时(前三个示例),它才会显现出来。