| Almost to 1.0.0 - warvox - VoIP based wardialing tool, forked from rapid7/warvo… | |
| Log | |
| Files | |
| Refs | |
| README | |
| --- | |
| commit 50ea541b3b0f3d947dac9d04a2e18b4a55de9d89 | |
| parent 6389d305a83d6a5384d3332e5ca69cf6d35a8abf | |
| Author: HD Moore <[email protected]> | |
| Date: Wed, 4 Mar 2009 05:41:01 +0000 | |
| Almost to 1.0.0 | |
| Diffstat: | |
| A docs/LICENSE.musicplayer | 10 ++++++++++ | |
| M web/app/controllers/home_controlle… | 13 +++++++------ | |
| M web/app/views/analyze/view.html.erb | 23 +++++++++++++++-------- | |
| M web/app/views/dial_results/index.h… | 8 +++----- | |
| M web/app/views/home/about.html.erb | 133 +++++++++++++++++++++++++++++… | |
| M web/app/views/home/index.html.erb | 157 +++++++----------------------… | |
| D web/app/views/layouts/dial_jobs.ht… | 17 ----------------- | |
| D web/app/views/layouts/dial_results… | 17 ----------------- | |
| D web/app/views/layouts/providers.ht… | 17 ----------------- | |
| M web/config/routes.rb | 3 +++ | |
| A web/public/images/musicplayer.swf | 0 | |
| M web/public/javascripts/FusionChart… | 8 +++++--- | |
| 12 files changed, 209 insertions(+), 197 deletions(-) | |
| --- | |
| diff --git a/docs/LICENSE.musicplayer b/docs/LICENSE.musicplayer | |
| @@ -0,0 +1,10 @@ | |
| +Copyright (c) 2005, Fabricio Zuardi | |
| +All rights reserved. | |
| + | |
| +Redistribution and use in source and binary forms, with or without modificatio… | |
| + | |
| + * Redistributions of source code must retain the above copyright notice, t… | |
| + * Redistributions in binary form must reproduce the above copyright notice… | |
| + * Neither the name of the author nor the names of its contributors may be … | |
| + | |
| +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AN… | |
| diff --git a/web/app/controllers/home_controller.rb b/web/app/controllers/home_… | |
| @@ -2,14 +2,15 @@ class HomeController < ApplicationController | |
| layout 'warvox' | |
| def index | |
| - begin | |
| - @kissfft_loaded = false | |
| - require 'kissfft' | |
| - @kissfft_loaded = true | |
| - rescue | |
| - end | |
| + | |
| end | |
| def about | |
| + begin | |
| + @has_kissfft = "MISSING" | |
| + require 'kissfft' | |
| + @has_kissfft = $LOADED_FEATURES.grep(/kissfft/)[0] | |
| + rescue ::LoadError | |
| + end | |
| end | |
| end | |
| diff --git a/web/app/views/analyze/view.html.erb b/web/app/views/analyze/view.h… | |
| @@ -14,28 +14,35 @@ | |
| <th>ID</th> | |
| <th>Number</th> | |
| <th>Type</th> | |
| - <th>Peak Freq</th> | |
| <th>Signal</th> | |
| <th>Spectrum</th> | |
| <th>CID</th> | |
| <th>Provider</th> | |
| - <th>Call Time</th> | |
| - <th>Ring Time</th> | |
| + <th>Time</th> | |
| + <th>Ring</th> | |
| </tr> | |
| <% @results.each do |dial_result| %> | |
| <tr> | |
| <td><%=h dial_result.id %></td> | |
| <td> | |
| - <a href="<%=resource_analyze_path(@job_id)%>?result_id=<%= dia… | |
| + <b><%= dial_result.number %></b><br/> | |
| + <object | |
| + type="application/x-shockwave-flash" | |
| + data="/images/musicplayer.swf?song_url=<%=resource_ana… | |
| + width="20" | |
| + height="17" | |
| + > | |
| + <param name="movie" value="/musicplayer.swf?song_url=<… | |
| + <param name="wmode" value="transparent"></param> | |
| + </object> | |
| </td> | |
| - <td><%=h dial_result.line_type %></td> | |
| - <td><%=h dial_result.peak_freq.to_i %></td> | |
| + <td><%=h dial_result.line_type.upcase %></td> | |
| <td> | |
| - <a href="<%=resource_analyze_path(@job_id)%>?result_id=<%= dia… | |
| + <a href="<%=resource_analyze_path(@job_id)%>/<%= dial_result.i… | |
| </td> | |
| <td> | |
| - <a href="<%=resource_analyze_path(@job_id)%>?result_id=<%= dia… | |
| + <a href="<%=resource_analyze_path(@job_id)%>/<%= dial_result.i… | |
| </td> | |
| <td><%=h dial_result.cid %></td> | |
| diff --git a/web/app/views/dial_results/index.html.erb b/web/app/views/dial_res… | |
| @@ -5,9 +5,8 @@ | |
| <tr> | |
| <th>ID</th> | |
| <th>Range</th> | |
| - <th>CallerID</th> | |
| - <th>Seconds</th> | |
| - <th>Lines</th> | |
| + <th>CID</th> | |
| + <th>Time</th> | |
| <th>Started</th> | |
| </tr> | |
| @@ -17,7 +16,6 @@ | |
| <td><%=h dial_job.range %></td> | |
| <td><%=h dial_job.cid_mask %></td> | |
| <td><%=h dial_job.seconds %></td> | |
| - <td><%=h dial_job.lines %></td> | |
| <td><%=h dial_job.started_at.localtime.strftime("%Y-%m-%d %H:%M:%S %Z") %>… | |
| <td><%= link_to 'View', view_dial_result_path(dial_job) %></td> | |
| <% if(dial_job.processed) %> | |
| @@ -25,7 +23,7 @@ | |
| <% else %> | |
| <td><%= link_to 'Analyze Calls', analyze_dial_result_path(dial… | |
| <% end %> | |
| - <td><%= link_to 'Purge Data', purge_dial_result_path(dial_job), :confi… | |
| + <td><%= link_to 'Purge', purge_dial_result_path(dial_job), :confirm =>… | |
| </tr> | |
| <% end %> | |
| </table> | |
| diff --git a/web/app/views/home/about.html.erb b/web/app/views/home/about.html.… | |
| @@ -0,0 +1,133 @@ | |
| +<table width='100%' align='center' border='0' cellpadding='9' cellspacing='0'> | |
| +<tr><td valign='top'> | |
| + | |
| +<h1 class='title'>About WarVOX</h1> | |
| + | |
| +<b>WarVOX</b> is a product of <a href="http://metasploit.com">Metasploit LLC</… | |
| +free software under a | |
| +<a href="http://creativecommons.org/licenses/by-nc/3.0/">non-commercial</a> li… | |
| +intended for legal security assessment, asset inventory, and research purposes… | |
| +of WarVOX can be found at <a href="http://warvox.org/">http://warvox.org/</a>.… | |
| +team can be reached by email at warvox[at]metasploit.com. | |
| + | |
| +</td><td valign='top' align='center'> | |
| + | |
| + | |
| +<h1 class='title'>Statistics</h1> | |
| + | |
| +<table id="warvox_stats" cellspacing="0" width=200> | |
| + | |
| +<tr> | |
| + <td valign="top" align="right" class="header_item"> | |
| + WarVOX Version: | |
| + </td> | |
| + <td><%= WarVOX::VERSION %></td> | |
| +</tr> | |
| + | |
| +<tr> | |
| + <td valign="top" align="right" class="header_item"> | |
| + Providers: | |
| + </td> | |
| + <td><%= Provider.find(:all).length %></td> | |
| +</tr> | |
| + | |
| + | |
| +<tr> | |
| + <td valign="top" align="right" class="header_item"> | |
| + Active Jobs: | |
| + </td> | |
| + <td><%= DialJob.find_all_by_status('active').length %></td> | |
| +</tr> | |
| + | |
| +<tr> | |
| + <td valign="top" align="right" class="header_item"> | |
| + Total Jobs: | |
| + </td> | |
| + <td><%= DialJob.find(:all).length %></td> | |
| +</tr> | |
| + | |
| +<tr> | |
| + <td valign="top" align="right" class="header_item"> | |
| + Results: | |
| + </td> | |
| + <td><%= DialResult.find(:all).length %></td> | |
| +</tr> | |
| +</table> | |
| + | |
| + | |
| +</td></tr> | |
| +<tr><td valign='top' colspan='2'> | |
| + | |
| +<h1 class='title'>Configuration</h1> | |
| + | |
| + | |
| +<table id="warvox_conf" cellspacing="0" width='100%'> | |
| + | |
| +<tr> | |
| + <td valign="top" align="right" class="header_item" width='200'> | |
| + Base Directory: | |
| + </td> | |
| + <td><%= WarVOX::Base %></td> | |
| +</tr> | |
| + | |
| + | |
| +<tr> | |
| + <td valign="top" align="right" class="header_item" width='200'> | |
| + Configuration File: | |
| + </td> | |
| + <td><%= WarVOX::Conf %></td> | |
| +</tr> | |
| + | |
| + | |
| +<tr> | |
| + <td valign="top" align="right" class="header_item" width='200'> | |
| + Data Storage: | |
| + </td> | |
| + <td><%= WarVOX::Config.data_path %></td> | |
| +</tr> | |
| + | |
| +<tr> | |
| + <td valign="top" align="right" class="header_item" width='200'> | |
| + Admin User: | |
| + </td> | |
| + <td><%= WarVOX::Config.authentication_creds[0] %></td> | |
| +</tr> | |
| + | |
| +<tr> | |
| + <td valign="top" align="right" class="header_item" width='200'> | |
| + GNUPlot | |
| + </td> | |
| + <td><%= WarVOX::Config.tool_path('gnuplot') || "MISSING" %></td> | |
| +</tr> | |
| + | |
| +<tr> | |
| + <td valign="top" align="right" class="header_item" width='200'> | |
| + SOX | |
| + </td> | |
| + <td><%= WarVOX::Config.tool_path('sox') || "MISSING" %></td> | |
| +</tr> | |
| + | |
| +<tr> | |
| + <td valign="top" align="right" class="header_item" width='200'> | |
| + LAME | |
| + </td> | |
| + <td><%= WarVOX::Config.tool_path('lame') || "MISSING" %></td> | |
| +</tr> | |
| + | |
| +<tr> | |
| + <td valign="top" align="right" class="header_item" width='200'> | |
| + IAXRECORD | |
| + </td> | |
| + <td><%= WarVOX::Config.tool_path('iaxrecord') || "MISSING" %></td> | |
| +</tr> | |
| + | |
| +<tr> | |
| + <td valign="top" align="right" class="header_item" width='200'> | |
| + KissFFT | |
| + </td> | |
| + <td><%= @kissfft_loaded ? ($LOADED_FEATURES.grep(/kissfft/)[0] ) : "MI… | |
| +</tr> | |
| +</table> | |
| + | |
| + | |
| +</td></tr></table> | |
| diff --git a/web/app/views/home/index.html.erb b/web/app/views/home/index.html.… | |
| @@ -1,136 +1,45 @@ | |
| -<table width='100%' align='center' border='0' cellpadding='9' cellspacing='0'> | |
| -<tr><td valign='top'> | |
| - | |
| <h1 class='title'>Introduction</h1> | |
| -<b>WarVOX</b> is a suite of tools for exploring, classifying, and auditing the | |
| -telephone system. Unlike normal wardialing tools, WarVOX works with the actual | |
| -audio from each call and does not use a modem directly. This model allows | |
| -WarVOX to find and classify a wide range of devices, including modems, through | |
| -direct data analysis. To get started, configure an IAX-capable VoIP provider | |
| -in the <b>Providers</b> section, then submit a new <b>Job</b>. Keep in mind | |
| -that the laws regulating automated dialing can vary by location, it is your | |
| -responsibility to ensure that your local laws and the laws governing the | |
| -target telephone range are respected. | |
| - | |
| -</td><td valign='top' align='center'> | |
| - | |
| - | |
| -<h1 class='title'>Statistics</h1> | |
| - | |
| -<table id="warvox_stats" cellspacing="0" width=200> | |
| - | |
| -<tr> | |
| - <td valign="top" align="right" class="header_item"> | |
| - WarVOX Version: | |
| - </td> | |
| - <td><%= WarVOX::VERSION %></td> | |
| -</tr> | |
| - | |
| -<tr> | |
| - <td valign="top" align="right" class="header_item"> | |
| - Providers: | |
| - </td> | |
| - <td><%= Provider.find(:all).length %></td> | |
| -</tr> | |
| - | |
| - | |
| -<tr> | |
| - <td valign="top" align="right" class="header_item"> | |
| - Active Jobs: | |
| - </td> | |
| - <td><%= DialJob.find_all_by_status('active').length %></td> | |
| -</tr> | |
| - | |
| -<tr> | |
| - <td valign="top" align="right" class="header_item"> | |
| - Total Jobs: | |
| - </td> | |
| - <td><%= DialJob.find(:all).length %></td> | |
| -</tr> | |
| - | |
| -<tr> | |
| - <td valign="top" align="right" class="header_item"> | |
| - Results: | |
| - </td> | |
| - <td><%= DialResult.find(:all).length %></td> | |
| -</tr> | |
| -</table> | |
| - | |
| - | |
| -</td></tr> | |
| -<tr><td valign='top' colspan='2'> | |
| - | |
| -<h1 class='title'>Configuration</h1> | |
| - | |
| - | |
| -<table id="warvox_conf" cellspacing="0" width='100%'> | |
| - | |
| -<tr> | |
| - <td valign="top" align="right" class="header_item" width='200'> | |
| - Base Directory: | |
| - </td> | |
| - <td><%= WarVOX::Base %></td> | |
| -</tr> | |
| - | |
| - | |
| -<tr> | |
| - <td valign="top" align="right" class="header_item" width='200'> | |
| - Configuration File: | |
| - </td> | |
| - <td><%= WarVOX::Conf %></td> | |
| -</tr> | |
| +<p> | |
| +WarVOX is a suite of tools for exploring, classifying, and auditing telephone … | |
| +WarVOX works with the actual audio from each call and does not use a modem dir… | |
| +and classify a wide range of interesting lines, including modems, faxes, voice… | |
| +and forwarders. WarVOX provides the unique ability to classify all telephone l… | |
| +connected to modems, allowing for a comprehensive audit of a telephone system. | |
| +</p> | |
| +<h1 class='title'>Getting Started</h1> | |
| +<p> | |
| +In order to make phone calls, WarVOX needs to be configured with one or more s… | |
| +</p> | |
| -<tr> | |
| - <td valign="top" align="right" class="header_item" width='200'> | |
| - Data Storage: | |
| - </td> | |
| - <td><%= WarVOX::Config.data_path %></td> | |
| -</tr> | |
| +<p>Once one or more service providers have been configured, click the <a href=… | |
| +</p> | |
| -<tr> | |
| - <td valign="top" align="right" class="header_item" width='200'> | |
| - Admin User: | |
| - </td> | |
| - <td><%= WarVOX::Config.authentication_creds[0] %></td> | |
| -</tr> | |
| +<p>The phone number range is specified by entering the full 10-digit phone num… | |
| +</p> | |
| -<tr> | |
| - <td valign="top" align="right" class="header_item" width='200'> | |
| - GNUPlot | |
| - </td> | |
| - <td><%= WarVOX::Config.tool_path('gnuplot') || "MISSING" %></td> | |
| -</tr> | |
| +<p> | |
| +The seconds field indicates the number of seconds to spend on each call, inclu… | |
| +</p> | |
| -<tr> | |
| - <td valign="top" align="right" class="header_item" width='200'> | |
| - SOX | |
| - </td> | |
| - <td><%= WarVOX::Config.tool_path('sox') || "MISSING" %></td> | |
| -</tr> | |
| +<p> | |
| +The outgoing line count is limited by the number of providers available and th… | |
| +</p> | |
| -<tr> | |
| - <td valign="top" align="right" class="header_item" width='200'> | |
| - LAME | |
| - </td> | |
| - <td><%= WarVOX::Config.tool_path('lame') || "MISSING" %></td> | |
| -</tr> | |
| +<p>The Caller ID is specified by entering the full 10-digit phone number, with… | |
| +</p> | |
| -<tr> | |
| - <td valign="top" align="right" class="header_item" width='200'> | |
| - IAXRECORD | |
| - </td> | |
| - <td><%= WarVOX::Config.tool_path('iaxrecord') || "MISSING" %></td> | |
| -</tr> | |
| +<p> | |
| +Once the job parameters have been specified, click the <b>Create</b> button to… | |
| +</p> | |
| -<tr> | |
| - <td valign="top" align="right" class="header_item" width='200'> | |
| - KissFFT | |
| - </td> | |
| - <td><%= @kissfft_loaded ? ($LOADED_FEATURES.grep(/kissfft/)[0] ) : "MI… | |
| -</tr> | |
| -</table> | |
| +<p> | |
| +After the job completes, access the <a href="/dial_results/">Results</a> link … | |
| +</p> | |
| -</td></tr></table> | |
| +<h1 class='title'>Troubleshooting</h1> | |
| +<p> | |
| +If for some reason WarVOX is not working correctly, or if you have any questio… | |
| +</p> | |
| diff --git a/web/app/views/layouts/dial_jobs.html.erb b/web/app/views/layouts/d… | |
| @@ -1,17 +0,0 @@ | |
| -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | |
| - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |
| - | |
| -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> | |
| -<head> | |
| - <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> | |
| - <title>DialJobs: <%= controller.action_name %></title> | |
| - <%= stylesheet_link_tag 'scaffold' %> | |
| -</head> | |
| -<body> | |
| - | |
| -<p style="color: green"><%= flash[:notice] %></p> | |
| - | |
| -<%= yield %> | |
| - | |
| -</body> | |
| -</html> | |
| diff --git a/web/app/views/layouts/dial_results.html.erb b/web/app/views/layout… | |
| @@ -1,17 +0,0 @@ | |
| -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | |
| - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |
| - | |
| -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> | |
| -<head> | |
| - <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> | |
| - <title>DialResults: <%= controller.action_name %></title> | |
| - <%= stylesheet_link_tag 'scaffold' %> | |
| -</head> | |
| -<body> | |
| - | |
| -<p style="color: green"><%= flash[:notice] %></p> | |
| - | |
| -<%= yield %> | |
| - | |
| -</body> | |
| -</html> | |
| diff --git a/web/app/views/layouts/providers.html.erb b/web/app/views/layouts/p… | |
| @@ -1,17 +0,0 @@ | |
| -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | |
| - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |
| - | |
| -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> | |
| -<head> | |
| - <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> | |
| - <title>Providers: <%= controller.action_name %></title> | |
| - <%= stylesheet_link_tag 'scaffold' %> | |
| -</head> | |
| -<body> | |
| - | |
| -<p style="color: green"><%= flash[:notice] %></p> | |
| - | |
| -<%= yield %> | |
| - | |
| -</body> | |
| -</html> | |
| diff --git a/web/config/routes.rb b/web/config/routes.rb | |
| @@ -4,6 +4,9 @@ ActionController::Routing::Routes.draw do |map| | |
| map.resources :dial_jobs, :has_many => [ :dial_results ], :member => { :run … | |
| map.resources :analyze, :member => { :view => :get, :resource => :get } | |
| + map.connect 'analyze/:id/resource/:result_id/:type', :controller => 'analy… | |
| + | |
| + | |
| map.resources :providers | |
| # The priority is based upon order of creation: first created -> highest pri… | |
| diff --git a/web/public/images/musicplayer.swf b/web/public/images/musicplayer.… | |
| Binary files differ. | |
| diff --git a/web/public/javascripts/FusionCharts.js b/web/public/javascripts/Fu… | |
| @@ -30,7 +30,10 @@ infosoftglobal.FusionCharts = function(swf, id, w, h, debugM… | |
| //Set Quality | |
| this.addParam('quality', 'high'); | |
| - | |
| + | |
| + //Set WMODE | |
| + this.addParam('wmode', 'transparent'); | |
| + | |
| //Add scripting access parameter | |
| this.addParam('allowScriptAccess', 'always'); | |
| @@ -307,4 +310,4 @@ infosoftglobal.FusionChartsUtil.updateChartXML = function(c… | |
| /* Aliases for easy usage */ | |
| var getChartFromId = infosoftglobal.FusionChartsUtil.getChartObject; | |
| var updateChartXML = infosoftglobal.FusionChartsUtil.updateChartXML; | |
| -var FusionCharts = infosoftglobal.FusionCharts; | |
| -\ No newline at end of file | |
| +var FusionCharts = infosoftglobal.FusionCharts; |