2012-07-05 5 views
0

DMG 파일에 MasterChecksum 및 DataForkChecksum을 계산하는 방법 내 dmg 파일의 헤더를 얻고 필요한 모든 정보를 얻습니다. DataForkChecksum과 MasterChecksum을 가지고 있지만 계산 방법을 모르겠습니다.내가하는 DMG 파일에 그것은 잘 작동을 몇 가지 정보를 변경하려고하지만 난이 데미지를 열려고 할 때 내가</p> <pre><code>checksum invalid </code></pre> <p>그래서 오류 메시지가

누구든지이 작업을 수행하는 방법을 알고 있습니까?

답변

2

마스터 체크섬은 체크섬의 체크섬입니다. 이는 DMG에있는 BLKX 블록의 모든 체크섬의 연결된 2 진 값에서 계산 된 CRC-32 체크섬 (다항식 = 0xedb88320)으로 계산됩니다. 계산하는 것은 상당히 고통 스럽습니다.

libdmg에는이 작업을 수행하는 GPL 코드가 포함되어 있습니다. 특히 calculateMasterChecksum() 함수를 살펴보십시오. http://shanemcc.co.uk/libdmg/libdmg-hfsplus/dmg/dmglib.c

0

체크섬에 대해 많이 알지 못하는 경우 Wikipedia 항목을 살펴 보는 것이 좋습니다. 본질적으로 파일의 무결성을 검사하여 파일이 변경되거나 방해되지 않았는지 확인합니다. 오픈 소스 커뮤니티에서 특히 중요하다고 생각합니다. 공유 웹 사이트에 업로드 된 코드가 원래 제공 업체가 아닌 다른 사람이 간섭했을 수 있습니다. 공급자가 코드의 품질을 (그들이 잘 분리 할 수 ​​있습니다) 보장되지 않지만, 그들이 당신에게 당신이 다운로드하는 것은 그들이 제공 정확히되어 있는지 확인 할 수있는 기능을 제공하는 체크섬을 포함함으로써

(Also take a quick look at MD5 on Wikipedia, one read of this and you will quickly appreciate the difficulty of the problem and proposed solutions.)

. 단일 바이트로 변경하면 체크섬이 변경됩니다.

귀하의 경우 DMG를 수정하면 체크섬이 변경됩니다. 구체적인 사항을 모른 채 주변을 둘러 보는 방법을 알려주기가 어렵습니다. 설정이 체크섬을 비교하기 위해 원래 DMG 공급자와 통신하는 경우 수정하기가 매우 어려울 수 있습니다. 또한 체크섬이 무엇인지 알 수있는 방법이 없습니다.

로컬로 저장된 파일과 비교하는 경우 기회가 있습니다. 가장 간단한 방법은 Checksum을 작성하고 둘 다 대체 할 수있는 무료 도구 중 하나를 얻는 것입니다.

하지만이 모든 것이 궁금합니다. 외부에서 제공되는 DMG를 수정하는 이유는 무엇입니까? 클릭하면 컴퓨터가 추가 작업을 수행하게하려면 훨씬 간단한 방법이 있다고 생각하십시오.

+0

다소 복잡합니다. 체크섬이란 무엇인지 알고 있지만 내 dmg에서 두 개를 계산하는 방법을 모릅니다. 모든 dmg 파일의 체크섬을 계산할 때 원래 체크섬과 다릅니다 (내 dmg를 변경하지 않은 경우). 나는 내 dmg에 신분증이 있는데, 다른 dmg을 만들지 않고 그것을 바꿀뿐입니다. – kavaliero