47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
import wave
|
|
from Crypto.Cipher import ARC4
|
|
|
|
|
|
def read_wave_file(filename):
|
|
"""Reads a wave file and returns its data and parameters."""
|
|
with wave.open(filename, 'rb') as wf:
|
|
params = wf.getparams()
|
|
frames = wf.readframes(params.nframes)
|
|
return frames, params
|
|
|
|
|
|
def write_wave_file(filename, frames, params):
|
|
"""Writes wave data to a file."""
|
|
with wave.open(filename, 'wb') as wf:
|
|
wf.setparams(params)
|
|
wf.writeframes(frames)
|
|
|
|
|
|
def rc4_decrypt(data, key):
|
|
"""Decrypts data using RC4 algorithm."""
|
|
cipher = ARC4.new(key)
|
|
return cipher.decrypt(data)
|
|
|
|
|
|
def main():
|
|
# Read encrypted sound file
|
|
encrypted_filename = 'sound_encrypted.wav'
|
|
encrypted_data, params = read_wave_file(encrypted_filename)
|
|
|
|
# Get decryption key from user
|
|
key = input("Enter 16 ASCII characters for the decryption key: ")
|
|
key = key.encode('ascii')
|
|
|
|
# Decrypt encrypted sound data
|
|
decrypted_data = rc4_decrypt(encrypted_data, key)
|
|
|
|
# Write decrypted sound data to file
|
|
decrypted_filename = 'sound_decrypted.wav'
|
|
write_wave_file(decrypted_filename, decrypted_data, params)
|
|
|
|
print("Decryption completed successfully.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|