Files
audio-keylogger/generator.py
T
2024-05-04 01:15:15 +02:00

51 lines
1.4 KiB
Python

import wave
import sys
alphabet="abcdefghijklmnopqrstuvwxyz "
outfile = "output.wav"
data= []
def usage():
print("Usage:")
print("python3", sys.argv[0], "<text>")
print("<text> may only contain a-z and spaces")
return
if len(sys.argv) < 2 or any(map(lambda char: not char in alphabet,sys.argv[1].lower())):
usage()
exit(1)
if(len(sys.argv[1]) < 250):
print("WARNING: short texts may be much harder to break. You should use at least 250 characters")
input = sys.argv[1].lower()
print("Generating keyboard sounds for \"", input, "\"")
silence = wave.open("./data/silence.wav", 'rb')
data.append([silence.getparams(), silence.readframes(silence.getnframes())])
data.append([silence.getparams(), silence.readframes(silence.getnframes())])
silence.close()
for char in input:
if(char == " "):
char = "spc"
sound_file = "./data/"+char+".wav"
wav_data = wave.open(sound_file, 'rb')
data.append([wav_data.getparams(), wav_data.readframes(wav_data.getnframes())])
wav_data.close()
silence = wave.open("./data/silence.wav", 'rb')
data.append([silence.getparams(), silence.readframes(silence.getnframes())])
silence.close()
silence.close()
output = wave.open(outfile, 'wb')
output.setparams(data[0][0])
for i in range(len(data)):
output.writeframes(data[i][1])
output.close()
print("Your file is at", outfile)