Ho appena trovato questo frammento di rubino che può essere utilizzato per decrittografare le foto scattate da Snapchat su un telefono, apparentemente adattato da qui . Con mia sorpresa, ha funzionato senza problemi, considerando i problemi legati alla sicurezza di Snapchat che sono stati ben pubblicizzati ultimamente (soprattutto per quanto riguarda il numero di telefono / nome utente che ho perso per quanto ricordo).
require 'openssl'
ARGV.each do|a, index|
data = File.open(a, 'r:ASCII-8BIT').read
c = OpenSSL::Cipher.new('AES-128-ECB')
c.decrypt
c.key = 'M02cnQ51Ji97vwT4'
o = ''.force_encoding('ASCII-8BIT')
data.bytes.each_slice(16) { |s| o += c.update(s.map(&:chr).join) }
o += c.final
File.open('decyphered_' + a , 'w') { |f| f.write(o) }
end
Quindi, la mia domanda è: cosa stanno facendo esattamente di sbagliato qui e cosa potrebbero fare meglio per migliorare la sicurezza della loro applicazione in questo senso piuttosto che quello che stanno facendo ora, considerando che le persone spesso mandano cose intime che non sono mai state pensate per essere condivise per più di 10 secondi solo per una persona e considerando anche la popolarità di questa app?
tldr / per tutti quelli a cui non interessa sapere come funzionano i computer, ma vogliono comunque sapere cosa succede: Sostanzialmente, supponiamo tu abbia 40 milioni di persone che utilizzano Snapchat, con 16,5 milioni di utenti che si scambiano foto e ogni immagine nella propria piccola chiuso a chiave ogni giorno. Ora, cosa succede se dai a quei 16,5 milioni di persone la stessa fragile chiave di plastica per aprire ognuno di questi lockbox per catturare i media Snapchat?