Merges a patch from inode[at]mediaservice.net to use test mode, which requires a newer version of libiaxclient but no longer requires an audio device. - warvox - VoIP based wardialing tool, forked from rapid7/warvox.
DIR Log
DIR Files
DIR Refs
DIR README
---
DIR commit 04473c3456d20b94ef74fcfff4ac628152f57e19
DIR parent bdbcbe4d29e3aefd0e9f4e8b3a4b4d984dc61321
HTML Author: HD Moore <hd_moore@rapid7.com>
Date: Wed, 23 Feb 2011 16:39:07 +0000
Merges a patch from inode[at]mediaservice.net to use test mode, which requires a newer version of libiaxclient but no longer requires an audio device.
Diffstat:
M src/iaxrecord/iaxrecord.c | 31 +++++++++++++++++++++++++++----
1 file changed, 27 insertions(+), 4 deletions(-)
---
DIR diff --git a/src/iaxrecord/iaxrecord.c b/src/iaxrecord/iaxrecord.c
@@ -1,7 +1,7 @@
/*
* IAXRecord: a utility for recording audio on an outbound IAX call
*
- * Copyright (C) 2009, H D Moore <hdm[at]metasploit.com>
+ * Copyright (C) 2009-2010 Rapid7 LLC - H D Moore <hdm[at]metasploit.com>
*
* Based on simpleclient from the IAXClient distribution
*
@@ -13,6 +13,8 @@
* the GNU General Public License
*/
+#define TEST_MODE 1
+
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -38,6 +40,11 @@ int call_bytes = 0;
char *iax_out;
int reg_id;
+#ifdef TEST_MODE
+int call_end = 0;
+unsigned char empty_buf[200];
+#endif
+
void signal_handler(int signum) {
if ( signum == SIGTERM || signum == SIGINT ) {
done = 1;
@@ -54,7 +61,7 @@ int state_event_callback(struct iaxc_ev_call_state call) {
if(call.state & IAXC_CALL_STATE_COMPLETE) fail = 0;
call_state = call.state;
-/*
+
if(debug) {
fprintf(stdout, "STATE: ");
if(call.state & IAXC_CALL_STATE_FREE)
@@ -84,7 +91,7 @@ int state_event_callback(struct iaxc_ev_call_state call) {
fprintf(stdout, "\n");
fflush(stdout);
}
-*/
+
return 0;
}
@@ -198,10 +205,19 @@ int main(int argc, char **argv) {
/* install signal handler to catch CRTL-Cs */
signal(SIGINT, signal_handler);
signal(SIGTERM, signal_handler);
+
+ /* enable test mode */
+#ifdef TEST_MODE
+ iaxc_set_test_mode(1);
+#endif
/* forcible disable pulse audio if the audio flag is not set (-A) */
- if(! audio) setenv("PULSE_SERVER", "0.0.0.0", 1);
+ // if(! audio) setenv("PULSE_SERVER", "255.255.255.255", 1);
+ setenv("ALSA_PCM_CARD", "pcm.null", 1);
+ setenv("ALSA_CARD", "pcm.null", 1);
+ setenv("ALSA_DEVICE", "pcm.null", 1);
+
if(debug) fprintf(stderr, ">> INITIALIZING\n");
if ( iaxc_initialize(1) ) {
fprintf(stdout, "error: Could not initialize iaxclient!\n");
@@ -245,6 +261,13 @@ int main(int argc, char **argv) {
if(call_state & IAXC_CALL_STATE_BUSY) break;
if(iaxc_first_free_call() == call_id) break;
iaxc_millisleep(250);
+
+#ifdef TEST_MODE
+ /* we need do send something to receive data... I don't know why... */
+ if( !call_end && call_state & IAXC_CALL_STATE_COMPLETE )
+ iaxc_push_audio(&empty_buf[0], 200, 200);
+#endif
+
}
} else {
fail = 1;