2009-04-10 3 views
6

몇 개의 이미지를 배포하고 내 프로그램을 사용하지 않는 다른 사람들이 볼 수 없도록하고 싶습니다. 내 의도는 다른 이미지 뷰어가 더 이상 읽을 수 없도록 헤더를 변경할 JPG 파일을 사용하는 것입니다. 예를 들어 JPG의 마법 서명 인 바이트 7-10을 삭제할 수 있습니다. 나중에, 내 프로그램은 헤더를 재구성하고 JPG 파일을 보여줄 것이다.난독 화 이미지

질문 : "깨진"JPG 파일을 읽지 않고 헤더를 복원하고 좋은 파일을 디스크에 저장 한 다음 "양호한"JPG 파일로 다시로드하지 않고 어떻게 즉시 수행합니까?

+0

누군가가 프로그램으로 이미지를 볼 수 있다면 추출 할 수 있다는 것을 기억하십시오. 인쇄 화면 만 있으면됩니다. – Herms

+0

알아. 이것은 나에게 좋다. 감사합니다 Herms. – Ampere

답변

16

TMemoryStream이에 "파손"파일의 메모리 바이트를 패치하고 고정 JPG 파일을로드 TGraphic.LoadFromStream()를 사용한다.

+0

젠장, 너 빠르다. :-) –

+1

> Darn, 빠르다. :-) - 켄 화이트 동의. 감사합니다. 나 행복 :) – Ampere

+1

대신 TGraphic 사용할 수 있습니다 [TSynPicture] (http://blog.synopse.info/post/2010/03/20/GIF,-TIF,-PNG-and-JPG-pictures-TGraphic- GDI를 통한 읽기/쓰기) 클래스. –

2

Mghie의 대답은 당신이 찾는만큼 좋지만 너무 효과적이지는 않습니다. 누군가 당신의 이미지를보고 싶어하고 이미지 포맷에 대해 알고 있다면 16 진수 편집기에서 열어서 매직 헤더가 제거 된 JPEG로 보이는 것을 인식 할 것입니다.

누군가가 내 이미지를 보지 못하도록하려면 자신의 이미지 형식을 구성하고 (가능한 한 실제처럼 힘들지는 않지만) 가능한 한 작은 메타 데이터를 넣은 다음 작동하도록하십시오. 또는 암호화하거나 압축 파일에 보관하십시오 (최상의 결과를 얻으려면 고유 한 아카이브 형식을 구성하십시오) 으로 작동하도록하십시오.

궁극적으로 인코딩 된 모든 내용이 표시되기 전에 해독되어야하며, 재능있는 해커는 디코딩 루틴을 추적하고 작동 방식을 파악할 수 있습니다. 사용자로부터 무엇인가를 숨기려고하는 이유는 무엇입니까?

1

이미지를 암호화 된 리소스로 바이트 패킹하여 더 어렵게 만들 수 있습니다. 그러나 이미지를 가져올 수있는 파일에 액세스 할 수있는 다른 것처럼. 그것은 단지 얼마나 많은 노력을 기꺼이 사용 하느냐에 달려 있습니다.

+0

> 사용하려는 노력의 정도에 따라 다릅니다. 너무 많지 않습니다. 누군가 이미지를 해독 할 수 있음을 인정합니다. 어쩌면 나중에 암호화를 추가 할 것입니다. 그러나 누군가가 PrintScreen 이미지를 만들 수 있기 때문에 어쨌든 쓸모가 없습니다. – Ampere

6

암호화하십시오. 암호화 된 이미지를로드하고 메모리에서 해독 한 다음 mghie와 같은 loadfromstream을 제안합니다.

4

이미지를 개인 키로 암호화하고 공개 키를 이미지를 보려는 사람들에게 배포하는 것이 어떨까요? 일부 맞춤 소프트웨어를 작성하고 배포하는 것보다 공개 키를 배포하는 것이 훨씬 쉽습니다. 잊지 마세요. 화면에 표시된 모든 것을 화면 캡처 할 수 있습니다. 사용자 정의 된 JPEG 만 앱과 함께 표시 할 수 있다는 사실은 아무런 보호 장치가 아닙니다. 또한 잊지 마세요. 사람들은 엉망인 이미지로 소프트웨어를 배포 할 수 있습니다.

+0

화면 캡처 지점이 좋습니다. 스테 가노 그래피를 사용하여 표시된 이미지 전체에 무언가를 배치 할 수 있습니다. 그런 다음 손상된 이미지를 사용할 수있게되면 누구의 복사본이 원본인지 파악할 수 있습니다. 이것이 유용한 지 여부는 도메인/필요에 따라 다릅니다. – Argalatyr

0

얼마나 안전해야하는지에 따라 파일 확장명을 응용 프로그램으로 만 열리는 확장명으로 숨김으로써 단순하게 처리 할 수 ​​있습니다. 이것은 슈퍼 비밀 이미지가 아니라면 변경됩니다.