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-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/w3af-users
