2010-12-13 2 views
4

에서 3DES 암호를 해독 나는 내용의 라인을 따라 뭔가있는 key.bin 파일이 :암호화/루비

-12, 110, 93, 14, -48, ... 

이는 3DES 내용을 해독하기 위해 서비스에서 사용하는,하지만 난 그것을 암호화 할 필요가되고있다 루비를 통해.

나는 키와 무엇을 함께 할 수있는 설정 방법과 시나리오의 부하를 시도했지만 아직 같은 아무 소용했습니다

  • 가에 의해 키를 분할 시도하고 진수로 각 숫자를 변환 의 16 진수 값을 연결하는 것은 내가해야 할 일을 가정 바이너리

에 결과 진수로 변환 시도 진

  • 에 번호 문자열 변환 시도 키
  • 를 만들기 위해 뭔가 간결체 한자입니다 예 :

    des = OpenSSL::Cipher::Cipher.new('des3') 
    des.decrypt 
    des.key = mistery # this step is where i'm having problems at 
    final = des.update(encrypted) + des.final 
    

    이 키로 무엇을해야합니까?

    키 샘플 :

    -62,-53,124,-110,37,-88,-48,31,-57,93,70,-101,44,69,-88,-57,-123,-99,118,-119,110,55,11,14 
    

    데이터 샘플 :

    NEb2b9sYXgod6mTvaRv+MRsTJvIiTTI9VjnDGcxjxcN5qBH7FXvxYI6Oj16FeKKsoQvjAmdju2SQ 
    ifJqPJTl97xeEbjdwm+W8XJnWs99ku85EznVBhzQxI1H2jPiZIcrqIVCWdd/OQun7AjK4w2+5yb7 
    DPN2OiCIEOz2zK6skJrBw3oTEHpXrSEhydOYxqI+c5hC4z3k5nktN6WSVLIo8EAjwenHPMDxboWF 
    ET8R+QM5EznVBhzQxI1H2jPiZIcrqIVCWdd/OQun7AjK4w2+5yb7DPN2OiCIFqk4LRwEVq16jvKE 
    vjz6T4/G34kx6CEx/JdZ1LdvxC3xYQIcwS0wVnmtxorFm4q5QQFHzNKQ5chrGZzDkFzAogsZ2l2B 
    vcvlwgajNGHmxuVU83Ldn1e5rin7QqpjASqeDGFQHkiSbp4x6axVce2OGgfFpZdzCM7y6jLPpOlX 
    LOC/Bs1vTwMzcBNRB/Fo4nsX9i4It8Spm228XQNUpQe4i9QGe/4AyKIhHoM8DkXwPZ6rWp0W0UMe 
    keXjg41cED1JwjAAQSP3RYITB78bu+CEZKPOt2tQ2BvSw55mnFcvjIAYVQxCHliQ4PwgceHrnsZz 
    5aagC0QJ3oOKw9O0dlkVE3IM6KTBMcuZOZF19nCqxMFacQoDxjJY8tOJoN0Fe4Boz2FPyuggfLz9 
    yhljVJhxqOlTd8eA34Ex8SdC+5NDByAMumjzcPcXL8YVpSN85gytfd+skXhz3npmJ0dmZZOouu0Z 
    vMmlaCqw96Sy0L1mHLKbjqmZ/W57OBNRB/Fo4nsX9i4It8Spm228XQNUpQe4i9QGe/4AyKIhHoM8 
    DkXwPZ5tXdq1dRG6IaS51oNzFFlOoP3wTJuOTpj+zQOBMMOi4ENFyyEwYbG/qE+uY8rVwBOUHv9b 
    Yd9byvOZbnHDuf4oaWRZ+4K3s2NkEblDF9wU6Mb0ZqnLEJsypjrorH1cNIodIDu8nME1nD5bIDF6 
    XNrWC6pk6AV6eYQvNJw2QDz0RBD15fz/fAXCvbaCLDnhBKpLXrRbQdV+jxx2ipeC2ceMLLRFRPuR 
    B+ycYht65lWh4jNjoEsBXGFKiT0bSX6Lx/ZQD3twJWbML8ifRhw7SW0jOkUF+dAfXYNaD6nqA6Xq 
    TkcsDGaJsVq8wwCIWNh6tDRSw7ba4c391147kmnqEgXdKmmnEzUfHtpRw88C0/u0qj809hB4qB0B 
    lxj/87aDo4VOz9S4jjtk849CxtA/a9+532A4YlXjsPt/f0KZ2drAGEr1VSWzaLh/sMwP5tznmPaK 
    uozS6C74gMNdhtNMFz0HONcYecS0hg4lrdRyljROgzC33QoBIHbQXJrG0OXE3+81uhJwusEnFaD9 
    8Eybjk6YeNk3oxL3C5fx/xXgFmhcLLGdxRe/am0jqA1gV6MyQFUKtzdnNOUYpHkYXT9Ea7YYln4Q 
    D96Z9AI5EznVBhzQxI1H2jPiZIcrqIVCWdd/OQun7AjK4w2+5yb7DPN2OiCIFqk4LRwEVq16jvKE 
    vjz6T4/G34kx6CEx/JdZ1LdvxC3iEcYTrEH9kKhPrmPK1cATlB7/W2HfW8rzmW5xw7n+KGlkWfuC 
    t7NjZBG5QxfcFOjG9GapyxCbMqY66Kx9XDSKHSA7vJzBNZw+WyAxelza1guqZOgFenmElSgtUOo7 
    TEunuphaMIEQgo0udojG6dm2FtRmA4yntNCnCDzGTY72nrFBz3EZmVXGEm6X3Xd5Ito= 
    
  • +2

    당신이 우리를 위해 그것을 임의의 key.bin를 급지 할 수 있습니다 암호화? 그렇다면 일부 샘플 입력, 출력 및 키가이 문제를 리버스 엔지니어링하는 데 많은 도움이됩니다. 또는 문제의 웹 서비스는 무엇입니까? – SilverbackNet

    +1

    키는 바이트 문자열이며 각 숫자는 8 비트를 나타냅니다 (예 : 124는 01111100입니다. 아마도 2의 칭찬을 사용하기 때문에 바이트를 연결해야하지만 엔디안을 테스트해야합니다. – marcog

    답변

    4

    가 작동있어! 여기

    는 방법은 다음과 같습니다

    암호 해독

    def read_key(key_file) 
        File.read(key_file).split(',').map { |x| x.to_i }.pack('c*') 
    end 
    des = OpenSSL::Cipher::Cipher.new('des-ede3') 
    des.decrypt 
    des.key = read_key('key.bin') 
    
    result = des.update(decoded) + des.final 
    

    def read_key(key_file) 
        File.read(key_file).split(',').map { |x| x.to_i }.pack('c*') 
    end 
    des2 = OpenSSL::Cipher::Cipher.new('des-ede3') 
    des2.encrypt 
    des2.key = read_key('key.bin') 
    
    result = des2.update(result) + des2.final 
    puts Base64.encode64(result)