Skip to content

Instantly share code, notes, and snippets.

@motleytech
Created May 22, 2016 18:12
Show Gist options
  • Save motleytech/a73b0784c9ee263e3a1a9ff8d2bfed87 to your computer and use it in GitHub Desktop.
Save motleytech/a73b0784c9ee263e3a1a9ff8d2bfed87 to your computer and use it in GitHub Desktop.
capturing elevator music udp mp3 data using python
# from the reddit post
# https://www.reddit.com/r/programming/comments/4kdmmb/reverse_engineering_a_mysterious_udp_stream_in_my/
import socket
import struct
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('', 2046))
mreq = struct.pack("4sl", socket.inet_aton("234.0.0.2"), socket.INADDR_ANY)
s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
while True:
data = s.recv(2048)
print(data)
###############################
# write data with different offsets to separate files to find the format
data = s.recv(2048)
for i in range(25):
open("test{}".format(i), "wb+").write(data[i:])
###############################
$ file test*
test0: data
test1: UNIF v-16624417 format NES ROM image
test10: UNIF v-763093498 format NES ROM image
test11: UNIF v-1093499874 format NES ROM image
test12: data
test13: TTComp archive, binary, 4K dictionary
test14: data
test15: data
test16: UNIF v-1939734368 format NES ROM image
test17: UNIF v-1198759424 format NES ROM image
test18: UNIF v-256340894 format NES ROM image
test19: UNIF v-839862132 format NES ROM image
test2: UNIF v-67173804 format NES ROM image
test20: data
test21: data
test22: data
test23: DOS executable (COM, 0x8C-variant)
test24: COM executable for DOS
test3: UNIF v-1325662462 format NES ROM image
test4: data
test5: data
test6: data
test7: data
test8: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, JntStereo
test9: UNIF v-2078407168 format NES ROM image
##################################################
while True:
data = s.recv(2048)
sys.stdout.buffer.write(data[8:])
#################################################
$ python3 listen_2046.py > test.mp3
* wait a little to get a recording *
^C
$ mplayer test.mp3
MPlayer (C) 2000-2016 MPlayer Team
224 audio & 451 video codecs
Playing test.mp3.
libavformat version 57.25.100 (external)
Audio only file format detected.
=====
Starting playback...
A: 3.9 (03.8) of 13.0 (13.0) 0.7%
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment