Hacka en $30 WiFi Pan-Tilt kamera - Video, ljud och Motor control med Python (5 / 6 steg)
Steg 5: Hur vi gjorde det: Hacking ljud
Att få video var inte så svårt. Förhoppningsvis ljud skulle vara lika lätt, rätt? Efter några timmars Google söka, det såg ut som ingen annan har någonsin lyckats framgångsrikt dra ut och avkoda ljudströmmen av en IP-kamera. Vi var ensamma.
Gå tillbaka till vår url Vi hittade via Wireshark, vi fångat några byte ljud med Ubuntu:
wget http://192.168.1.252:81/?user=admi...
Tryck sedan på Ctrl + C för att stänga av strömmen. Råa ljud i hand, marscherade vi över till Audacity att försöka spela det via Arkiv -> Importera -> rådata. De flesta försök lät som buller, men vi hittade att använda VOX ADPCM kodning på 8kHz produceras något igen!
Det fanns fortfarande frågan om att ta bort det konstiga mönstret klick. Jag tänkte att det hade något att göra med paketen, som med videoströmmen vi fått ta bort vissa huvuden i början och slutet. Kanske samma sak gäller med ljud?
Vi tittade lite närmare på varje paket, och märkte att data började med den samma 0x55aa15a8... byte, plus ett värde som såg ut att räkna uppåt varje paket, och en lång ström av nollor, för totalt 32 byte. Förmodligen var Audacity tar dessa pakethuvuden som ljuddata och försöker avkoda dem, vilket är vad som gjorde elaka klicka låter.
Några experimentella python skript senare, vi tog bort rubriker och gått igenom ADPCM dekodern i Audacity - de flesta av klick togs bort! Men det fanns några kvar, speciellt under de bullrigare delarna av ljudet.
Så läser vi in hur fungerar ADPCM - tydligen det kodar ljud via skillnaden mellan prover och cachar föregående ljud tillstånd så att den kan lägga till två och producera ett nytt stickprov. Efter några fler python skript, lyckades vi fånga paket direkt och återställa denna stat i början av varje paket. Klick var helt bort, och ingenting annat än kameran ljud kvarstod. Framgång!