ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [기록용] md5 복호화전 추론
    카테고리 없음 2020. 3. 22. 06:40

    http://fota-cloud-dn.ospserver.net/firmware/KOO/SM-N976N/version.xml
    위 사이트는 이미 배포된 펌웨어의 정보가 기록된 웹페이지
    http://fota-cloud-dn.ospserver.net/firmware/KOO/SM-N976N/version.test.xml
    그리고 사내 테스트중인 펌웨어의 정보가 기록된 웹페이지

    테스트 펌웨어 페이지에서

    <latest o="x">yyy</latest>

    -x의 값은 랜덤, 무슨역할인지 잘 알수가 없음. 이미 배포된페이지에서는 모든 값이 1이지만 테스트펌웨어 페이지에서는 랜덤한 값이 입력되어 있음.
    -yyy의 값은 펌웨어 빌드정보 원문을 md5로 암호화한값.
    -yyy의 값은 원문에서 1번만 암호화를 거쳐도 나오는것으로 추정.
    예시로 현재 http://fota-cloud-dn.ospserver.net/firmware/TGY/SM-A6060/version.test.xml 페이지에서 lastest의 값이 4181b31b49076849063f919df6dbabb4로 확인.
    근데 이걸 삼성의 펌웨어 네이밍방식으로 평문을 추론해서
    예상원문인
    A6060ZHU1BTC8.DM/A6060TGY1BTC8/A6060ZHU1BTC8 를 구하고 이를 md5 암호화를 1회거치면 아래와 같은 값 발생.
    (encrypt)
    4181b31b49076849063f919df6dbabb4
    이 값은 현재 lastest 값이랑 일치.

    -만약 신규 펌웨어가 빌드업 되어서 lastest 항목이 업데이트 되면 이전의 값이 lastest 에서 그아래의 value 항목으로 내려갈경우 같은 원문이라도 값이 다시 바뀜.
    value에서 이동된 값의 위치는 랜덤이고 펌웨어가 또 업데이트 될때마다 위치가 랜덤하게 섞이는것으로 추정됨.

    댓글