Forum Linux Mint Polska

Autor Wątek: OPENSSL - problem z odszyfrowaniem pliku  (Przeczytany 91 razy)

Offline tinware

  • Miętowe nasionko
  • *
  • Wiadomości: 1
  • Punkty: 0
  • Środowisko graficzne: Inne
  • Wersja systemu: Inny
OPENSSL - problem z odszyfrowaniem pliku
« dnia: Listopad 13, 2017, 23:49:19 pm »
Cześć,

Chciałem odszyfrować plik przy użyciu openssl.

To jest moja playlista HLS (.m3u8). Lista zawiera 9-cio sekundowy fragment filmu, który jest zaszyfrowany i odtworzenie go bezpośrednio nie jest możliwe. Odszyfrowanie odbywa się za pomocą danych zawartych w pierwszej linijce, czyli metody, klucza i wektora:

Cytuj
#EXT-X-KEY:METHOD=AES-128,URI="key/01.key",IV=0x00000000000000000000015FA0E49B00
#EXTINF:9.480,
segment/01.ts

Na podstawie tej listy tworzę komendę:
openssl aes-128-cbc -in "segment/01.ts" -out decrypted.ts -iv 0x00000000000000000000015FA0E49B00 -K "key/01.key"
Wynikiem jest otrzymany błąd:
Cytuj
hex string is too long
invalid hex iv value

W jaki sposób mogę rozwiązać ten problem? Czy potrzebna jest konwersja liczby IV? Jeśli tak, to z jakiej na jaką (hexadecymalną)?

Do postu załączam plik źródłowy:
http://www26.zippyshare.com/v/VyurKv7c/file.html

Proszę o pomoc
Dziękuję

Offline Ulvhedin

  • Globator Moderalny
  • Spamerzy
  • *******
  • Wiadomości: 1565
  • Punkty: 1118
  • Płeć: Mężczyzna
  • Środowisko graficzne: Xfce
  • Wersja systemu: Inny
Odp: OPENSSL - problem z odszyfrowaniem pliku
« Odpowiedź #1 dnia: Grudzień 04, 2017, 14:36:12 pm »
Wygląda na to ze coś nie tak z kluczem jest.
Na poczatek wykonajmy experyment czy wogole toto działa:
A zatem:
ffmpeg -allowed_extensions ALL -i 01.m3u8 -c copy result.ts
ffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 7.2.0 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-avresample --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libass --enable-libbluray --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-shared --enable-version3
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Invalid return value 0 for stream protocol
    Last message repeated 2 times
[hls,applehttp @ 0x55ff29769a60] Opening '01.key' for reading
[hls,applehttp @ 0x55ff29769a60] Opening 'crypto:01.ts' for reading
Input #0, hls,applehttp, from '01.m3u8':
  Duration: 00:00:09.48, start: 28022.150244, bitrate: 0 kb/s
  Program 0
    Metadata:
      variant_bitrate : 0
    Stream #0:0: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Metadata:
      variant_bitrate : 0
    Stream #0:1: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp
    Metadata:
      variant_bitrate : 0
Output #0, mpegts, to 'result.ts':
  Metadata:
    encoder         : Lavf57.83.100
    Stream #0:0: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 25 tbr, 90k tbn, 90k tbc
    Metadata:
      variant_bitrate : 0
    Stream #0:1: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp
    Metadata:
      variant_bitrate : 0
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
Invalid return value 0 for stream protocol
frame=  237 fps=0.0 q=-1.0 Lsize=     526kB time=00:00:09.49 bitrate= 453.7kbits/s speed=1.43e+03x   
video:338kB audio:120kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 14.977468%

No i ok, dane wejsciowe w porzadku, ale być moze ffmpeg robi sobie jakieś myki z kluczami (domysł).
I tak może byc w sumie, po upewnieniu sie ze mamy do czynienia z 16-bajtowymi kluczami (klucz oraz IV) - dane udaje sie zdeszyfrowac:
openssl aes-128-cbc -d -in "01.ts" -out decrypted.ts -K $(cat 01.key | hexdump -e '16/1 "%02x"') -iv 00000000000000000000015FA0E49B00
Dalej musisz szukać sam - Powodzenia :)