Beispiel #1
0
 def getHostsAndPortsByServiceName(self, service_name, filters: Filters):
     query = ("SELECT hosts.ip,ports.portId,ports.protocol,ports.state,ports.hostId,ports.serviceId,"
              "services.name,services.product,services.version,services.extrainfo,services.fingerprint "
              "FROM portObj AS ports " +
              "INNER JOIN hostObj AS hosts ON hosts.id = ports.hostId " +
              "LEFT OUTER JOIN serviceObj AS services ON services.id=ports.serviceId " +
              "WHERE services.name=?")
     query += applyFilters(filters)
     return self.dbAdapter.metadata.bind.execute(query, str(service_name)).fetchall()
Beispiel #2
0
 def getServiceNames(self, filters: Filters):
     query = (
         "SELECT DISTINCT service.name FROM serviceObj as service "
         "INNER JOIN portObj as ports "
         "INNER JOIN hostObj AS hosts "
         "ON hosts.id = ports.hostId AND service.id=ports.serviceId WHERE 1=1"
     )
     query += applyFilters(filters)
     query += ' ORDER BY service.name ASC'
     return self.db_adapter.metadata.bind.execute(query).fetchall()
Beispiel #3
0
    def test_applyFilters_InvokedWithNoFilters_ReturnsEmptyString(self):
        from app.auxiliary import Filters
        from db.filters import applyFilters

        filters: Filters = Filters()
        filters.apply(up=True,
                      down=True,
                      checked=True,
                      portopen=True,
                      portfiltered=True,
                      portclosed=True,
                      tcp=True,
                      udp=True)
        result = applyFilters(filters)
        self.assertEqual("", result)
Beispiel #4
0
    def test_applyFilters_InvokedWithHostCheckedFilter_ReturnsQueryFilterWithHostsChecked(
            self):
        from app.auxiliary import Filters
        from db.filters import applyFilters

        filters: Filters = Filters()
        filters.apply(up=True,
                      down=True,
                      checked=False,
                      portopen=True,
                      portfiltered=True,
                      portclosed=True,
                      tcp=True,
                      udp=True)
        result = applyFilters(filters)
        self.assertEqual(" AND hosts.checked != 'True'", result)
Beispiel #5
0
    def test_applyFilters_InvokedWithUdpProtocolFilter_ReturnsQueryFilterWithUdp(
            self):
        from app.auxiliary import Filters
        from db.filters import applyFilters

        filters: Filters = Filters()
        filters.apply(up=True,
                      down=True,
                      checked=True,
                      portopen=True,
                      portfiltered=True,
                      portclosed=True,
                      tcp=True,
                      udp=False)
        result = applyFilters(filters)
        self.assertEqual(" AND ports.protocol != 'udp'", result)
Beispiel #6
0
    def test_applyFilters_InvokedWithPortOpenFilter_ReturnsQueryFilterWithPortOpen(
            self):
        from app.auxiliary import Filters
        from db.filters import applyFilters

        filters: Filters = Filters()
        filters.apply(up=True,
                      down=True,
                      checked=True,
                      portopen=False,
                      portfiltered=True,
                      portclosed=True,
                      tcp=True,
                      udp=True)
        result = applyFilters(filters)
        self.assertEqual(
            " AND ports.state != 'open' AND ports.state != 'open|filtered'",
            result)
Beispiel #7
0
    def test_applyFilters_InvokedWithKeywordsFilter_ReturnsQueryFilterWithKeywords(
            self):
        from app.auxiliary import Filters
        from db.filters import applyFilters

        filters: Filters = Filters()
        keyword = "some-keyword"
        filters.apply(up=True,
                      down=True,
                      checked=True,
                      portopen=True,
                      portfiltered=True,
                      portclosed=True,
                      tcp=True,
                      udp=True,
                      keywords=[keyword])
        result = applyFilters(filters)
        self.assertEqual(
            " AND (hosts.ip LIKE '%some-keyword%' OR hosts.osMatch LIKE '%some-keyword%'"
            " OR hosts.hostname LIKE '%some-keyword%')", result)