For those who've checked out the latest source or those with svn commit 
access, I've created a patch for the bug introduced in r2289:

------------------[patch starts below]--------------------
*** w3af-2310/core/ui/consoleUi/rootMenu.py     2009-01-02 
23:37:28.000000000 -0600
--- w3af-patch/core/ui/consoleUi/rootMenu.py    2009-01-02 
23:47:05.000000000 -0600
***************
*** 30,35 ****
--- 30,36 ----
   from core.ui.consoleUi.util import *

   from core.controllers.w3afException import *
+ from core.controllers.misc.get_w3af_version import get_w3af_version

   # Provide a progress bar for all plugins.
   from core.ui.consoleUi.progress_bar import progress_bar
***************
*** 118,121 ****
           '''
           Show the w3af version and exit
           '''
!         om.out.console( self._w3af.getVersion() )
--- 119,122 ----
           '''
           Show the w3af version and exit
           '''
!         om.out.console( get_w3af_version() )
------------------[patch ends above]--------------------

------------------[making the patch]--------------------
$ mkdir deleteme
$ cd deleteme
$ svn co https://w3af.svn.sourceforge.net/svnroot/w3af/trunk w3af-patch
$ cp -a w3af-patch w3af-2310
$ cd w3af-patch/
$ vi w3af-patch/core/ui/consoleUi/rootMenu.py
   [add line to import get_w3af_version and update line 122]
$ diff -c w3af-2310/core/ui/consoleUi/rootMenu.py 
w3af-patch/core/ui/consoleUi/rootMenu.py > patch-2310-bugfix

------------------[applying the patch]--------------------
copy the patchfile into w3af svn source root directory for r2310
$ patch -p1 -i patch-2310-bugfix
$ ./w3af_console
You won't be able to use the web20Spider without zc.testbrowser.real 
library installed. Exception: No module named 
testbrowser.src.zc.testbrowser.real
global name 'Browser' is not defined. You can get MozRepl at 
http://hyperstruct.net/projects/mozlab .
w3af>>> version
w3af - Web Application Attack and Audit Framework
Version: beta7
Revision: 2310
Author: Andres Riancho and the w3af team.
w3af>>> exit
w3af>>>
May the brute force be with you.

Cheers!

w3af-develop list:  History behind this is below.

-- Matt Tesauro
OWASP Live CD Project Lead
http://www.owasp.org/index.php/Category:OWASP_Live_CD_2008_Project
http://mtesauro.com/livecd/ - Documentation Wiki

Matt Tesauro wrote:
> Did some more digging and this bug was introduced in r2289.  It seems 
> that a new file:
>   core/controllers/misc/get_w3af_version.py
> was added and the previous call to getVersion in:
>   core/controllers/w3afCore.py
> was removed.  It appears the GTKUI source was updated but not the 
> console as:
>   core/ui/gtkUi/main.py
> has several addition but I don't see the same for:
>   core/ui/console/rootMenu.py
> 
> Here's how I determined the above:
> -----[download a know working revision]--------
> $ mkdir deleteme
> $ cd deleteme
> $ svn co https://w3af.svn.sourceforge.net/svnroot/w3af/tr...@1903 w3af-1903
> $ cd w3af-1903/
> $ svn info
> Path: .
> URL: https://w3af.svn.sourceforge.net/svnroot/w3af/trunk
> Repository Root: https://w3af.svn.sourceforge.net/svnroot/w3af
> Repository UUID: 16c29cf1-982c-0410-8ff8-8bb040e68b5b
> Revision: 1903
> Node Kind: directory
> Schedule: normal
> Last Changed Author: andresriancho
> Last Changed Rev: 1902
> Last Changed Date: 2008-10-26 11:11:29 -0500 (Sun, 26 Oct 2008)
> 
> -----[test that revision]--------
> $ ./w3af_console
> You won't be able to use the web20Spider without zc.testbrowser.real 
> library installed. Exception: No module named 
> testbrowser.src.zc.testbrowser.real
> global name 'Browser' is not defined. You can get MozRepl at 
> http://hyperstruct.net/projects/mozlab .
> w3af>>> version
> w3af - Web Application Attack and Audit Framework
> Version: beta7
> Revision: 1903
> Author: Andres Riancho and the w3af team.
> w3af>>> exit
> w3af>>>
> Be a good boy and contribute with some lines of code.
> 
> 
> -----[find the revision that breaks]--------
> $ svn update -r2000
>   [works]
> $ svn update -r2100
>   [works]
> $ svn update -r2200
>   [works]
> $ svn update -r2300
>   [bug present]
> $ svn update -r2250
>   [works]
> $ svn update -r2275
>   [works]
> $ svn update -r2287
>   [works]
> $ svn update -r2294
>   [bug present]
> $ svn update -r2289
>   [bug present]
> $ svn update -r2286
>   [works]
> $ svn update -r2287
>   [works]
> $ svn update -r2288
>   [works]
> 
> -----[diff the last working against the next commit]--------
> $ svn diff https://w3af.svn.sourceforge.net/svnroot/w3af/trunk/@2288 
> https://w3af.svn.sourceforge.net/svnroot/w3af/trunk/@2289
> 
> Index: core/controllers/misc/get_w3af_version.py
> ===================================================================
> --- core/controllers/misc/get_w3af_version.py    (revision 0)
> +++ core/controllers/misc/get_w3af_version.py    (revision 2289)
> @@ -0,0 +1,47 @@
> +'''
> +get_w3af_version.py
> +
> +Copyright 2006 Andres Riancho
> +
> +This file is part of w3af, w3af.sourceforge.net .
> +
> +w3af is free software; you can redistribute it and/or modify
> +it under the terms of the GNU General Public License as published by
> +the Free Software Foundation version 2 of the License.
> +
> +w3af is distributed in the hope that it will be useful,
> +but WITHOUT ANY WARRANTY; without even the implied warranty of
> +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +GNU General Public License for more details.
> +
> +You should have received a copy of the GNU General Public License
> +along with w3af; if not, write to the Free Software
> +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
> +
> +'''
> +
> +import os
> +import re
> +
> +
> +def get_w3af_version():
> +    '''
> +    @return: A string with the w3af version.
> +    '''
> +    # Let's check if the user is using a version from SVN
> +    revision = -1
> +    try:
> +        for line in file('.svn' + os.path.sep +'entries').readlines()[:4]:
> +            line = line.strip()
> +            if re.match('^\d+$', line ):
> +                if int(line) > int(revision):
> +                    revision = int(line)
> +    except (IOError, ValueError):
> +        revision = 0
> +
> +    res = 'w3af - Web Application Attack and Audit Framework'
> +    res += '\nVersion: beta7'
> +    if revision != -1:
> +        res += '\nRevision: ' + str(revision)
> +    res += '\nAuthor: Andres Riancho and the w3af team.'
> +    return res
> Index: core/controllers/w3afCore.py
> ===================================================================
> --- core/controllers/w3afCore.py    (revision 2288)
> +++ core/controllers/w3afCore.py    (revision 2289)
> @@ -1169,25 +1169,6 @@
>              misc_settings.setOptions( profileInstance.getMiscSettings() )
>              self.uriOpener.settings.setOptions( 
> profileInstance.getHttpSettings() )
> 
> -    def getVersion( self ):
> -        # Let's check if the user is using a version from SVN
> -        revision = -1
> -        try:
> -            for line in file('.svn' + os.path.sep 
> +'entries').readlines()[:4]:
> -                line = line.strip()
> -                if re.match('^\d+$', line ):
> -                    if int(line) > int(revision):
> -                        revision = int(line)
> -        except (IOError, ValueError):
> -            revision = 0
> -
> -        res = 'w3af - Web Application Attack and Audit Framework'
> -        res += '\nVersion: beta7'
> -        if revision != -1:
> -            res += '\nRevision: ' + str(revision)
> -        res += '\nAuthor: Andres Riancho and the w3af team.'
> -        return res
> -
>  # """"Singleton""""
>  wCore = w3afCore()
> 
> Index: core/ui/gtkUi/main.py
> ===================================================================
> --- core/ui/gtkUi/main.py    (revision 2288)
> +++ core/ui/gtkUi/main.py    (revision 2289)
> @@ -74,7 +74,10 @@
>  from . import scanrun, exploittab, helpers, profiles, craftedRequests, 
> compare
>  from . import entries, encdec, messages, logtab, pluginconfig, confpanel
>  from . import wizard, guardian, proxywin
> +
>  from core.controllers.misc.homeDir import get_home_dir
> +from core.controllers.misc.get_w3af_version import get_w3af_version
> +
>  import webbrowser, time
> 
>  MAINTITLE = "w3af - Web Application Attack and Audit Framework"
> @@ -155,7 +158,7 @@
>          # content
>          img = gtk.image_new_from_file('core/ui/gtkUi/data/splash.png')
>          self.vbox.pack_start(img)
> -        version = w3af.getVersion()
> +        version = get_w3af_version()
>          self.label = gtk.Label(version)
>          self.label.set_justify(gtk.JUSTIFY_CENTER)
>          self.vbox.pack_start(self.label)
> @@ -267,7 +270,7 @@
> 
>          # Using print so the user can read this in the console, 
> together with
>          # the GTK, python and pygtk versions.
> -        print '\n  '.join(self.w3af.getVersion().split('\n'))
> +        print '\n  '.join(get_w3af_version().split('\n'))
> 
>          self.w3af.mainwin = self
>          self.isRunning = False
> 
> -----[cheat to see what changed]--------
> $ svn update -r2288
> $ svn info
> Path: .
> URL: https://w3af.svn.sourceforge.net/svnroot/w3af/trunk
> Repository Root: https://w3af.svn.sourceforge.net/svnroot/w3af
> Repository UUID: 16c29cf1-982c-0410-8ff8-8bb040e68b5b
> Revision: 2288
> Node Kind: directory
> Schedule: normal
> Last Changed Author: andresriancho
> Last Changed Rev: 2288
> Last Changed Date: 2008-12-29 19:04:53 -0600 (Mon, 29 Dec 2008)
> 
> $ svn update -r2289
> A    core/controllers/misc/get_w3af_version.py
> U    core/controllers/w3afCore.py
> U    core/ui/gtkUi/main.py
> Updated to revision 2289.
> 
> Between the diff and the update message, isolating the problem is not 
> that bad.
> 
> -- Matt Tesauro
> OWASP Live CD Project Lead
> http://www.owasp.org/index.php/Category:OWASP_Live_CD_2008_Project
> http://mtesauro.com/livecd/ - Documentation Wiki
> 
> 
> Matt Tesauro wrote:
>> While creating a package of the latest SVN release, I noticed some 
>> incorrect behavior of w3af_console.  If you enter the console and run 
>> the "version" command, you get a stack trace:
>>
>> $ svn update
>> At revision 2310.
>> $ ./w3af_console
>> You won't be able to use the web20Spider without zc.testbrowser.real 
>> library installed. Exception: No module named 
>> testbrowser.src.zc.testbrowser.real
>> global name 'Browser' is not defined. You can get MozRepl at 
>> http://hyperstruct.net/projects/mozlab .
>> w3af>>> version
>> Traceback (most recent call last):
>>   File "/home/mtesauro/w3af/core/ui/consoleUi/consoleUi.py", line 171, 
>> in _handleKey
>>     self._handlers[key]()
>>   File "/home/mtesauro/w3af/core/ui/consoleUi/consoleUi.py", line 265, 
>> in _onEnter
>>     self._execute()
>>   File "/home/mtesauro/w3af/core/ui/consoleUi/consoleUi.py", line 233, 
>> in _execute
>>     menu = self._context.execute(params)
>>   File "/home/mtesauro/w3af/core/ui/consoleUi/menu.py", line 169, in 
>> execute
>>     return handler( params )
>>   File "/home/mtesauro/w3af/core/ui/consoleUi/rootMenu.py", line 121, 
>> in _cmd_version
>>     om.out.console( self._w3af.getVersion() )
>> AttributeError: w3afCore instance has no attribute 'getVersion'
>>
>>
>> In looking at the problem, it would appear that getVersion is called 
>> but never defined.
>>
>> $ grep -R -n "getVersion" ./*
>> Binary file ./core/ui/consoleUi/rootMenu.pyc matches
>> ./core/ui/consoleUi/rootMenu.py:121:
>>       om.out.console(   self._w3af.getVersion() )
>> ./core/ui/consoleUi/.svn/text-base/rootMenu.py.svn-base:121:
>>       om.out.console( self._w3af.getVersion() )
>> $ wc -l core/ui/consoleUi/rootMenu.py
>> 121 core/ui/consoleUi/rootMenu.py
>> $ tail -n 6 core/ui/consoleUi/rootMenu.py
>>
>>     def _cmd_version(self, params):
>>         '''
>>         Show the w3af version and exit
>>         '''
>>         om.out.console( self._w3af.getVersion() )
>>
>>
>> I've used the w3af_console version command to check installs 
>> previously with success:
>>  # ./w3af_console
>> You won't be able to use the web20Spider without zc.testbrowser.real 
>> library installed. Exception: No module named 
>> testbrowser.src.zc.testbrowser.real
>> global name 'Browser' is not defined. You can get MozRepl at 
>> http://hyperstruct.net/projects/mozlab .
>> w3af>>> version
>> w3af - Web Application Attack and Audit Framework
>> Version: beta7
>> Revision: 1903
>> Author: Andres Riancho and the w3af team.
>> w3af>>> exit
>>
>> Note: The above was copy and pasted from here:
>> http://mtesauro.com/livecd/index.php?title=Making_the_w3af_module
>>  (search for "beta7" to find the spot on that very long page)
>>
>> You can see the diff between the current release (2310) and the one 
>> above which worked previously (1903) with the following command:
>> $ svn diff 
>> https://w3af.svn.sourceforge.net/svnroot/w3af/trunk/core/ui/consoleUi/rootmenu...@2310
>>  
>> https://w3af.svn.sourceforge.net/svnroot/w3af/trunk/core/ui/consoleUi/rootmenu...@1903
>>  
>>
>>
>> but I didn't find anything blatant in that diff.
>>
>> Just to make sure, I pulled a fresh svn checkout of trunk (r2310) into 
>> a newly created directory and the stack trace remains.
>>
>> Don't tell Andres and ruin his vacation  ; )
>>

------------------------------------------------------------------------------
_______________________________________________
W3af-develop mailing list
W3af-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/w3af-develop

Reply via email to