#!/usr/bin/python from struct import * from socket import * from math import * s = 4036 ## from 08049686 (3 < s <= 25000) x = 4000 ## from 08049C6E (3999 < x <= 8000) y = 2000 ## from 08048F96 (1999 < y <= ????) ## server (ip, port) = ('127.0.0.1', 2600) ## wave header data = pack('L', 0x46464952) ## from 0804CE94 data += pack('L', s) ## from 08049686 (3 < s <= 25000) data += pack('L', 0x45564157) ## from 08049B3F ## wave fmt data += pack('L', 0x20746d66) ## from 0804AA93 data += pack('L', 0x10) ## default data += pack('h', 1) ## from 0804A9C7 data += pack('h', 1) ## from ???????? data += pack('L', x) ## from 08049C6E (3999 < x <= 8000) data += pack('L', 1) ## unused data += pack('h', 2) ## from ???????? data += pack('h', 0x10) ## from 0804C21B ## wave data data += pack('L', 0x61746164) ## from 08049996 data += pack('L', y * 2) ## from 08048F96 (1999 < y <= ????) s = socket() s.connect((ip, port)) f = unpack('LLLLL', s.recv(20)) ## from: http://apollon.cc.u-tokyo.ac.jp/~watanabe/sample/wavsample.html for i in range(0, 5): for j in range(0, y / 5): data += pack('h', 128 * sin(j * 2 * f[i] * pi / x) + 128) s.send(data) print s.recv(256) s.close