在读取文件时,在运行时替换文件中的字节块的建议

时间:2012-04-06 08:17:53

标签: java

民间。我相信社区会将此视为一个相关问题。我很抱歉,如果没有和mods,请关闭。

我正在为客户开发一个带有静态内容的视频播放应用。我的客户希望我实施一些基本的安全措施,以阻止某人解压缩已部署的应用程序(它适用于Android)并简单地复制MPEG。我的客户已将基本保护作为一项关键要求,并且他已付账单:)

文件太大而无法动态删除,因此我考虑采用以下方法。我欢迎有关替代方案的想法和建议。我知道支持和反对通过默默无闻的复制保护方案和安全性的论据,我提出的方法使用了这个问题,而我的问题不是“我应该做什么?”#34;。

从MPG标题中的某个位置取一个字节块,比如256。用随机值替换这些字节,这样MPEG就不会花费很多精力来修复它。将原始256字节存储在其中一个应用程序位图中,以便位图仍然可以正常显示。播放视频时,通过字节流将其读入,并在将字节传递给输出流之前将其替换为原始值。

总结:

  1. 从MPEG标题中提取256个字节
  2. 将这些字节存储在位图中
  3. 原始字节中的随机值
  4. 在运行时,从位图中读取256个字节
  5. 使用字节数组缓冲区通过输入流读取MPEG
  6. 将随机字节替换为原始值
  7. 将输入流式传输到输出流,该输出流是视频播放器的输入。
  8. 我确实认识到至少有两种方法可以打败这个,逆向工程和屏幕抓取,但关键是要防止普通小偷毫不费力地复制我的客户内容。

    思想伙伴们?

    由于

1 个答案:

答案 0 :(得分:0)

我建议对整个流使用加密/解密方案:

  1. 实时视频流解密是处理此问题的标准方法。与实际视频解码相比,其处理开销可以忽略不计。例如,每个DVD播放器都支持CSS加密方案。

    虽然使用Java确实施加了一些限制,例如无法有效使用各种CPU特定指令,但您应该能够找到一种不是非常昂贵的解密算法。我建议在拒绝流加密算法之前分析您的应用程序。

  2. 管理标题会使某些视频文件难以阅读,但这绝非易事。某些文件具有冗余信息,其他文件实际上是直接串联的结果,这会使任何后续段可读。一些流视频编解码器实际上插入了足够的元数据来每隔几秒重建一次流。那里有很多的视频格式。

    换句话说,没有办法保证从文件的开头删除任意数量的字节会使其无法读取。我也认为对你的客户施加一系列限制w.r.t.他们可以使用的视频格式不合理,并限制了应用程序未来的实用性。