#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright (C) 2005-2006 Insecure.Com LLC.
# Copyright (C) 2007-2008 Adriano Monteiro Marques
#
# Author: Adriano Monteiro Marques <adriano@umitproject.org>
#
# This program 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; either version 2 of the License, or
# (at your option) any later version.
#
# This program 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 this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

import urllib
import urllib2

insecure_site = "http://www.insecure.org/"
nmap_submission_page = insecure_site + "cgi-bin/servicefp-submit.cgi"

class ServiceFingerprintRegister(object):
    def __init__(self):
        try:
            urllib.urlopen(insecure_site)
        except:
            return None

        self.service = ""
        self.platform = ""
        self.description = ""
        self.ip = ""
        self.fingerprint = ""
        self.email = ""
        self.notes = ""

    def report(self):
        data = urllib.urlencode({"email":self.email,
                                 "service":self.service,
                                 "platform":self.platform,
                                 "description":self.description,
                                 "ip":self.ip,
                                 "fingerprint":self.fingerprint,
                                 "notes":self.notes})

        # The submit page source code points that the info should be 
        # set using POST method. But, it only worked sending it through GET 
        # method. So, I decided to send using both methods, to insure that 
        # it's going to work.
        request = urllib2.Request(nmap_submission_page + "?" + data, data)
        response = urllib2.urlopen(request)

        from tempfile import mktemp
        import webbrowser

        tfile = mktemp()
        open(tfile, "w").write(response.read())
        webbrowser.open(tfile)


if __name__ == "__main__":
    f = ServiceFingerprintRegister()
    f.report()
