@@ -39,56 +39,56 @@ def mic_list
39
39
def mic_start ( mic )
40
40
request = Packet . create_request ( 'audio_interface_start' )
41
41
request . add_tlv ( TLV_TYPE_AUDIO_INTERFACE_NAME , mic )
42
- client . send_request ( request )
43
- begin
44
- client . mic . mic_start ( index )
45
- mic_started = true
46
- ::Timeout . timeout ( duration ) do
47
- ::File . open ( stream_path , 'wb' ) do |outfd |
48
- numchannels = 1
49
- sampleratehz = 11025
50
- bitspersample = 16
51
- datasize = 2000000000
52
- subchunk1size = 16
53
- chunksize = 4 + ( 8 + subchunk1size ) + ( 8 + datasize )
54
- byterate = sampleratehz * numchannels * bitspersample / 8
55
- blockalign = numchannels * bitspersample / 8
56
-
57
- BinData ::Int32be . new ( 0x52494646 ) . write ( outfd ) # ChunkID: "RIFF"
58
- BinData ::Int32le . new ( chunksize ) . write ( outfd ) # ChunkSize
59
- BinData ::Int32be . new ( 0x57415645 ) . write ( outfd ) # Format: "WAVE"
60
- BinData ::Int32be . new ( 0x666d7420 ) . write ( outfd ) # SubChunk1ID: "fmt "
61
- BinData ::Int32le . new ( 16 ) . write ( outfd ) # SubChunk1Size
62
- BinData ::Int16le . new ( 1 ) . write ( outfd ) # AudioFormat
63
- BinData ::Int16le . new ( numchannels ) . write ( outfd ) # NumChannels
64
- BinData ::Int32le . new ( sampleratehz ) . write ( outfd ) # SampleRate
65
- BinData ::Int32le . new ( byterate ) . write ( outfd ) # ByteRate
66
- BinData ::Int16le . new ( blockalign ) . write ( outfd ) # BlockAlign
67
- BinData ::Int16le . new ( bitspersample ) . write ( outfd ) # BitsPerSample
68
- BinData ::Int32be . new ( 0x64617461 ) . write ( outfd ) # SubChunk2ID: "data"
69
- BinData ::Int32le . new ( datasize ) . write ( outfd ) # SubChunk2Size
70
- end
71
- stream_index = 0
72
- while client do
73
- if play_audio && ( stream_index == start_delay )
74
- cmd_listen ( stream_path )
75
- end
76
- data = client . mic . mic_get_frame ( quality )
77
- if data
78
- ::File . open ( stream_path , 'a' ) do |f |
79
- f . write ( data )
80
- end
81
- data = nil
82
- end
83
- stream_index += 1
84
- sleep 1
85
- end
86
- end
87
- rescue ::Timeout ::Error
88
- ensure
89
- client . mic . mic_stop if mic_started
90
- end
91
- true
42
+ channel_id = client . send_request ( request )
43
+ # begin
44
+ # client.mic.mic_start(index)
45
+ # mic_started = true
46
+ # ::Timeout.timeout(duration) do
47
+ # ::File.open(stream_path, 'wb') do |outfd|
48
+ # numchannels = 1
49
+ # sampleratehz = 11025
50
+ # bitspersample = 16
51
+ # datasize = 2000000000
52
+ # subchunk1size = 16
53
+ # chunksize = 4 + (8 + subchunk1size) + (8 + datasize)
54
+ # byterate = sampleratehz * numchannels * bitspersample / 8
55
+ # blockalign = numchannels * bitspersample / 8
56
+ #
57
+ # BinData::Int32be.new(0x52494646).write(outfd) # ChunkID: "RIFF"
58
+ # BinData::Int32le.new(chunksize).write(outfd) # ChunkSize
59
+ # BinData::Int32be.new(0x57415645).write(outfd) # Format: "WAVE"
60
+ # BinData::Int32be.new(0x666d7420).write(outfd) # SubChunk1ID: "fmt "
61
+ # BinData::Int32le.new(16).write(outfd) # SubChunk1Size
62
+ # BinData::Int16le.new(1).write(outfd) # AudioFormat
63
+ # BinData::Int16le.new(numchannels).write(outfd) # NumChannels
64
+ # BinData::Int32le.new(sampleratehz).write(outfd) # SampleRate
65
+ # BinData::Int32le.new(byterate).write(outfd) # ByteRate
66
+ # BinData::Int16le.new(blockalign).write(outfd) # BlockAlign
67
+ # BinData::Int16le.new(bitspersample).write(outfd) # BitsPerSample
68
+ # BinData::Int32be.new(0x64617461).write(outfd) # SubChunk2ID: "data"
69
+ # BinData::Int32le.new(datasize).write(outfd) # SubChunk2Size
70
+ # end
71
+ # stream_index = 0
72
+ # while client do
73
+ # if play_audio && (stream_index == start_delay)
74
+ # cmd_listen(stream_path)
75
+ # end
76
+ # data = client.mic.mic_get_frame(quality)
77
+ # if data
78
+ # ::File.open(stream_path, 'a') do |f|
79
+ # f.write(data)
80
+ # end
81
+ # data = nil
82
+ # end
83
+ # stream_index += 1
84
+ # sleep 1
85
+ # end
86
+ # end
87
+ # rescue ::Timeout::Error
88
+ # ensure
89
+ # client.mic.mic_stop if mic_started
90
+ # end
91
+ mic_stream ( channel_id )
92
92
end
93
93
94
94
def mic_get_frame ( quality )
@@ -103,6 +103,13 @@ def mic_stop
103
103
true
104
104
end
105
105
106
+ def mic_stream ( channel_id )
107
+ ## Read from channel
108
+ @channel = Channel . create ( client , 'audio_interface_stream' , Rex ::Post ::Meterpreter ::Channel ::Stream ,
109
+ CHANNEL_FLAG_SYNCHRONOUS )
110
+
111
+ end
112
+
106
113
attr_accessor :client
107
114
end
108
115
end
0 commit comments