if (!$statement->execute()) {
    throw new PDOException();
}
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $item) {
    foreach ($types as $type) {
        switch ($type) {
            case 'hostname':
                $founds = common_host($conf, $item['item'], $vocables);
                $type = 'hostname';
                break;
            case 'network':
                $founds = common_network($conf, $item['item'], $vocables);
                $type = 'network';
                break;
            case 'routeur':
                $founds = common_routeur($conf, $item['item'], $vocables);
                $type = 'routeur';
                break;
            default:
                $results = 0;
                break;
        }
        foreach ($founds as $found) {
            if (count($found['factors']) > 0) {
                $results[] = array('type' => $type, 'factors' => $found['factors'], 'type_of_checker' => $found['type_of_checker']);
            }
        }
    }
    send_alert($conf, $item['item'], $results, $vocables, $pdo);
}
require_once dirname(__FILE__) . "/../includes/init.php";
$email_alert = factory::create('email_alert');
$sql = "SELECT * FROM email_alert \n        WHERE HOUR(TIMEDIFF(NOW(), last_sent)) >= frequency_hours AND activated = 1 ";
$email_alerts = $email_alert->execute($sql);
if (ALERT_DEBUG > 0) {
    print "{$sql} \n";
    print count($email_alerts) . " alerts to process\n";
}
foreach ($email_alerts as $email_alert) {
    //send email
    $leaflets = get_leaflets($email_alert);
    if (ALERT_DEBUG > 0) {
        print count($leaflets) . " leaflets\n";
    }
    if (count($leaflets) > 0) {
        send_alert($email_alert, $leaflets);
    }
    //update last_sent
    $email_alert->last_sent = mysql_date(time());
    if (!ALERT_DEBUG_LASTSENT_NO_UPDATE) {
        $email_alert->update();
    }
}
// retrieve array of leaflets which match the alert type and time period
function get_leaflets($email_alert)
{
    if (ALERT_DEBUG > 0) {
        print $email_alert->type . "\n";
        print "frequency : " . $email_alert->frequency_hours . "\n";
    }
    $results = array();
Beispiel #3
0
function add_crash($time, $node, $target, $hash_quick, $hash_full, $type, $fuzzer, $log_data, $crash_data, $verified)
{
    global $verified_interesting, $verified_exploitable;
    $success = false;
    $hash = $hash_quick . "." . $hash_full;
    $unique_crash = false;
    $unique_before = 0;
    $unique_after = 0;
    $sql = "SELECT hash_quick FROM crashes GROUP BY hash_quick;";
    $result = mysql_query($sql);
    if ($result) {
        $unique_before = mysql_num_rows($result);
        mysql_free_result($result);
    }
    $sql = "INSERT INTO crashes ( time, node, target, hash, hash_quick, hash_full, type, fuzzer, count, log_data, crash_data, verified ) VALUES ";
    $sql .= "( '" . $time . "', '" . $node . "', '" . $target . "', '" . $hash . "', '" . $hash_quick . "', '" . $hash_full . "', '" . $type . "', '" . $fuzzer . "', '1', '" . $log_data . "', '" . $crash_data . "', '" . $verified . "' );";
    $result = mysql_query($sql);
    if ($result) {
        $success = true;
        mysql_free_result($result);
        $sql = "SELECT hash_quick FROM crashes GROUP BY hash_quick;";
        $result = mysql_query($sql);
        if ($result) {
            $unique_after = mysql_num_rows($result);
            mysql_free_result($result);
        }
        if ($unique_after > $unique_before) {
            $unique_crash = true;
        }
        $sql = "SELECT alerts.field, alerts.value, alerts.id, users.email FROM alerts INNER JOIN users ON alerts.id=users.id WHERE alerts.disabled='0';";
        $result = mysql_query($sql);
        if ($result) {
            $count = 0;
            $fields = array('Node', 'Target', 'Fuzzer', 'Type', 'Hash', 'Quick Hash', 'Full Hash', 'Unique', 'Verified');
            $user_ids = array();
            while ($row = mysql_fetch_array($result)) {
                $alert_sent = false;
                $field = $row['field'];
                // we only want to send one email per new crash that matches an alert, even if the new crash would match more then one of the alerts.
                // currently we dont prioritize the alert types.
                if (in_array($user_ids, $row['id'])) {
                    continue;
                }
                //array( 'node', 'target', 'fuzzer', 'type', 'hash', 'hash_quick', 'hash_full', 'unique', 'verified' );
                switch ($field) {
                    case 0:
                        if ($node == $row['value']) {
                            $alert_sent = send_alert($row['email'], $fields[$field], $row['value']);
                        }
                        break;
                    case 1:
                        if ($target == $row['value']) {
                            $alert_sent = send_alert($row['email'], $fields[$field], $row['value']);
                        }
                        break;
                    case 2:
                        if ($fuzzer == $row['value']) {
                            $alert_sent = send_alert($row['email'], $fields[$field], $row['value']);
                        }
                        break;
                    case 3:
                        if ($type == $row['value']) {
                            $alert_sent = send_alert($row['email'], $fields[$field], $row['value']);
                        }
                        break;
                    case 4:
                        if ($hash == $row['value']) {
                            $alert_sent = send_alert($row['email'], $fields[$field], $row['value']);
                        }
                        break;
                    case 5:
                        if ($hash_quick == $row['value']) {
                            $alert_sent = send_alert($row['email'], $fields[$field], $row['value']);
                        }
                        break;
                    case 6:
                        if ($hash_full == $row['value']) {
                            $alert_sent = send_alert($row['email'], $fields[$field], $row['value']);
                        }
                        break;
                    case 7:
                        if ($unique_crash) {
                            $alert_sent = send_alert($row['email'], 'New Unique Crash', $hash);
                        }
                        break;
                    case 8:
                        if ($verified == $verified_interesting) {
                            $alert_sent = send_alert($row['email'], 'New Verified Interesting Crash', $hash);
                        } else {
                            if ($verified == $verified_exploitable) {
                                $alert_sent = send_alert($row['email'], 'New Verified Exploitable Crash', $hash);
                            }
                        }
                        break;
                    default:
                        break;
                }
                if ($alert_sent) {
                    array_push($user_ids, $row['id']);
                }
            }
            mysql_free_result($result);
        }
    }
    if ($success) {
        $success = update_node_crash_status($node, $time);
    }
    return $success;
}
Beispiel #4
0
 protected function _search_with_upc($upc, $api, $search_url)
 {
     $ret = array();
     try {
         $ret = $this->sticky_api->searchUpc($upc, $search_url);
     } catch (Exception $e) {
         send_alert($e->getMessage(), 'Sticky "' . $api . '" spider exception searching by UPC: ' . $upc);
     }
     return $ret;
 }
<?php

/*
    send email alerts
    select * from email_alert where hour(timediff(now(), last_sent)) >= frequency_hours
*/
require_once dirname(__FILE__) . "/include_path.php";
require_once dirname(__FILE__) . "/../includes/init.php";
$email_alert = factory::create('leaflet');
$email_alerts = $email_alert->execute("\n        Select * from email_alert \n        where hour(timediff(now(), last_sent)) >= frequency_hours and activated = 1\n    ");
foreach ($email_alerts as $email_alert) {
    //send email
    $leaflets = get_leaflets($email_alert);
    if (count($leaflets) > 0) {
        send_alert($email_alert);
    }
    //update last_sent
    $email_alert->last_sent = $this->last_sent = mysql_date(time());
    $email_alert->update();
}
function get_leaflets($email_alert)
{
    $results = array();
    $search = factory::create('search');
    $time = time() - 60 * 60 * $email_alert->frequency_hours;
    $time = mysql_date($time);
    //do we have any matching leaflets?
    if ($email_alert->type = 'attack') {
        $search->search('leaflet', array(array('leaflet_party_attack.party_id', '=', $email_alert->parent_id), array('leaflet.date_uploaded', '>=', $time)), 'AND', array(array('leaflet_party_attack', 'inner')));
    } else {
        if ($email_alert->type = 'party') {