これらの 3 つのテーブルがあります (プレビューを添付します)。リストの最後は、テーブル「virustotalscans」のデータの例です。「virustotal」という名前の列があります。それぞれの固有のサンプルには番号があり、たとえば 165、次のサンプルには番号 166 などがあります。
テーブル仮想合計
CREATE TABLE virustotals (
virustotal INTEGER PRIMARY KEY,
virustotal_md5_hash TEXT NOT NULL,
virustotal_timestamp INTEGER NOT NULL,
virustotal_permalink TEXT NOT NULL
);
CREATE INDEX virustotals_md5_hash_idx
ON virustotals (virustotal_md5_hash);
テーブル仮想スキャン
CREATE TABLE virustotalscans (
virustotalscan INTEGER PRIMARY KEY,
virustotal INTEGER NOT NULL,
virustotalscan_scanner TEXT NOT NULL,
virustotalscan_result TEXT
);
CREATE INDEX virustotalscans_result_idx
ON virustotalscans (virustotalscan_result);
CREATE INDEX virustotalscans_scanner_idx
ON virustotalscans (virustotalscan_scanner);
CREATE INDEX virustotalscans_virustotal_idx
ON virustotalscans (virustotal);
テーブルのダウンロード
CREATE TABLE downloads (
download INTEGER PRIMARY KEY,
connection INTEGER,
download_url TEXT,
download_md5_hash TEXT
-- CONSTRAINT downloads_connection_fkey FOREIGN KEY (connection) REFERENCES connections (connection)
);
CREATE INDEX downloads_connection_idx ON downloads (connection);
CREATE INDEX downloads_md5_hash_idx
ON downloads (download_md5_hash);
CREATE INDEX downloads_url_idx
ON downloads (download_url);
テーブル「virustotalscans」のデータの例: http://pastebin.com/7E7McZwT
ここで、列「virustotalscan_result」のすべての行にあるすべてのサンプルを選択する必要があります。したがって、アンチウイルスで VirusTotal を検出しないすべてのサンプルを選択する必要があります。私はこの選択を試みました:
select distinct downloads.download_md5_hash from virustotalscans, virustotals,
downloads
where downloads.download_md5_hash = virustotals.virustotal_md5_hash and
virustotals.virustotal = virustotalscans.virustotal and
virustotalscans.virustotalscan_result IS NULL;
しかし、私はすべてのサンプルの MD5 ハッシュを取得しています...おそらく、すべてのサンプルに少なくとも 1 行の空の行が含まれていることが理由です。一部のアンチウイルスは常に一部のサンプルを検出しないため、これは論理的です。
より良い例: http://pastebin.com/y81DPpmQ。ここで、sample - number (列 virustotal) を選択する必要があります。ここで、列 virustotalscan_result のすべての行が空です。たとえば、番号 2 のみを指定できます。
助けてください。
返信ありがとうございます。