Нужна помощь с программным кодом

RuguRene

Новичок
Пользователь
Дек 16, 2020
13
0
1
Короче я должен создать и отправить звуковой сигнал в котором зашифровано сообщение. Сообщение создать/перевести в сигнал я могу, но вот отправить и получить как то не выходит, помогите, прилагаю код для отправки и получения
Спасибо большое заранее


Python:
import sounddevice as sd
import soundfile as sf
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
import wave
import time
import socket
import os
#-----------------------CREATION DICTIONNAIRE-----------------------
def creer_dict():
n=256
return{chr(i):i for i in range(n)}

#----------------------------COMPRESSION-----------------------------

def encode_lzw(texte):
dico = creer_dict()
dict_size = len(dico)
w=""
result=[]
for c in texte:
wc = w + c
if wc in dico:
w = wc
else:
result.append(dico[w])
dico[wc] = dict_size
dict_size += 1
w = c
if w:
result.append(dico[w])
return result

#--------------(ENCODAGE)CONVERSION DECIMAL-BINAIRE---------------

def conv_bin(decimal_chaine):
result=[]
for i in range (0, len(decimal_chaine)):
result.append(bin(decimal_chaine)[2:])
return result

#-------------------------GENERRATION ET MODULATION----------------------------------------

def modulation(bin_chaine):
chaine_binaire=str()
for i in range (0, len(bin_chaine)-1):
chaine_binaire += bin_chaine
print(chaine_binaire)
f = 21000
w = 2*f
x = []
y = []
pas = 1/f
a = 0
for i in range(0, len(chaine_binaire)-1) :
for t in np.arange(0,0.01,pas):
x.append(a+t)
if (chaine_binaire, chaine_binaire[i+1]) == ("0", "0"):
amp = 0
elif (chaine_binaire, chaine_binaire[i+1]) == ("0", "1"):
amp = 1
elif (chaine_binaire, chaine_binaire[i+1])== ("1", "0"):
amp = 2
elif (chaine_binaire, chaine_binaire[i+1]) == ("1", "1"):
amp = 3
y.append(amp*np.sin(w*(a+t)))
a=a+t
plt.plot(x,y)
plt.title('Signal')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
sf.write("signalmodule.wav", y, f)
input("")


chaine = input('Ecrire : ')
creer_dict()
decimal_chaine = encode_lzw(chaine)
print(decimal_chaine)
bin_chaine = conv_bin(decimal_chaine)
print(bin_chaine)

modulation(bin_chaine)

signal_porteur = 'signalmodule.wav'
data, reading = sf.read(signal_porteur)



play = sd.play(data, reading)
sd.wait()


socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host, port = ('localhost', 4548)

import socket
adresseIP = "93.4.249.98" # Ici, le poste local
port = 50000 # Se connecter sur le port 50000
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((adresseIP, port))
print("Connecté au serveur")
client.send("Bonjour, je suis le client".encode("utf-8"))
reponse = client.recv(255)
print(reponse.decode("utf-8"))
print("Connexion fermée")
client.close()





И код для получения

import socket
import sounddevice as sd
import soundfile as sf
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
import time

def BinDec (b) :
n=0
for i in range (7):
n=n+b[len(b)-(i+1)]*(2^i)
return n


socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host, port = ('', 4548)
socket.bind((host, port))
socket.listen(5)
client, address = socket.accept()
print("New connexion")

liste =['1000101', '1010011', '1000011', '1000001', '1010000', '1000101', '1001011', '0110001', '0110111']

def creer_dict():
n=256
return{chr(i):i for i in range(n)}

def inverse_dict(dico):
return { v:k for k,v in dico.items() }

def decodde_lzw(texte):
dico = creer_dict
dico = inverse_dict(dico)
dict_size = len(dico)
result = ""
w =chr(texte.pop(0))
result += w
for k in decimal_chaine:
if k in dico:
entry = w + w[0]
elif k == dict_size:
entry = w + w[0]
result += entry

dico[dict_size] = w + entry[0]
dict_size += 1

w =entry
return result

def conv_bindec(liste):
k = len(liste)
x = 0
liste2 = []
for i in range (k):
n = liste[x]
resultat=0
nchaine=str(n)
nliste=list(nchaine)
pgexposant=len(nliste)
for i in range(pgexposant):
int(i)
ajout=int(nliste)*2**(pgexposant-1-i)
resultat=resultat+ajout
x = x + 1
liste2.append(resultat)
print(liste2)
return

#liste_dec = conv_bindec(liste)
#print(liste_dec)

#texte = decodde_lzw(liste_dec)
#print(texte)

def filtrage():
Fc = 20000 #Fréquence de coupure
Fe = 44100 #Fréquence d'échantillonage

#chercher le fichier son et lire le signal
signalaudio = 'signalmoduleconf.wav'
data, reading = sf.read(signalaudio)
#application du filtre passe haut
filtre_passe_haut = signal.firwin(101, Fc, fs = Fe, pass_zero = False)
signalaudio = signal.lfilter(filtre_passe_haut, [1.0], data)

#lire le fichier son
play = sd.play(signalaudio, reading)
statust = sd.wait()

plt.plot(signalaudio)
plt.title('Signal')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

filtrage()

while True:
data = []
data = client.recv(256)
for i in range(0, len(data)):
data.decode("utf8")
print(data)
n = BinDec(data)
print(n)


client.close()
socket.close()/CODE]
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 669
477
83
там то с отступами написал... блять как же бесят люди которым пытаешься помочь, они бычат и думают самые умные...
пиздец...
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 669
477
83
удачи в получении ответа...
 

RuguRene

Новичок
Пользователь
Дек 16, 2020
13
0
1
там то с отступами написал... блять как же бесят люди которым пытаешься помочь, они бычат и думают самые умные...
пиздец...
я не виноват что твой форум не делает их...
 

RuguRene

Новичок
Пользователь
Дек 16, 2020
13
0
1
там то с отступами написал... блять как же бесят люди которым пытаешься помочь, они бычат и думают самые умные...
пиздец...
и ты не пытался помочь, кому ты пиздишь
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 669
477
83
если бы ты скинул код нормально как на киберфорум, то я бы попытался помочь, а щас уже чет не хочеться...
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 669
477
83
я не виноват что твой форум не делает их...
так ты скопировал из предыдущей темы код и вставил ясен хуй там уже нет отступов...
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 669
477
83
ну тебя надоел...
 

RuguRene

Новичок
Пользователь
Дек 16, 2020
13
0
1
ну тебя надоел...
да иди ты с миром
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 669
477
83
да иди ты с миром
согласен и тебе мира и добра...
 

Форум IT Специалистов