Helpviewer/VirusTotal/VirusTotalApi.py

Wed, 07 Feb 2018 20:14:09 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 07 Feb 2018 20:14:09 +0100
changeset 6121
d3d64f3128b3
parent 6048
82ad8ec9548c
child 6645
ad476851d7e0
permissions
-rw-r--r--

Continued removing the use of QObject.sender().

978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
6048
82ad8ec9548c Updated copyright for 2018.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5736
diff changeset
3 # Copyright (c) 2011 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
2999
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
7 Module implementing the <a href="http://www.virustotal.com">VirusTotal</a>
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
8 API class.
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 """
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
3145
a9de05d4a22f # __IGNORE_WARNING__ added/ removed.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3060
diff changeset
11 from __future__ import unicode_literals
2599
2373006616da Fixes for the webbrowser.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2525
diff changeset
12 try:
5624
cdd346d8858b Removed a bunch of __IGNORE_WARNING_M131__ markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5587
diff changeset
13 str = unicode
3484
645c12de6b0c Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3178 3190
diff changeset
14 except NameError:
2599
2373006616da Fixes for the webbrowser.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2525
diff changeset
15 pass
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2403
diff changeset
16
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 import json
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
5736
000ea446ff4b Prepared the code for Qt > 5.9.99.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5624
diff changeset
19 from PyQt5.QtCore import QObject, QUrl, QByteArray, pyqtSignal
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
20 from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
21
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
22 from E5Gui import E5MessageBox
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 import Preferences
5736
000ea446ff4b Prepared the code for Qt > 5.9.99.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5624
diff changeset
25 from Globals import qVersionTuple
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
992
566e87428fc8 Fixed a few PEP-8 issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 979
diff changeset
27
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 class VirusTotalAPI(QObject):
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
2999
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
30 Class implementing the <a href="http://www.virustotal.com">VirusTotal</a>
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
31 API.
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
32
2999
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
33 @signal checkServiceKeyFinished(bool, str) emitted after the service key
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
34 check has been performed. It gives a flag indicating validity
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
35 (boolean) and an error message in case of a network error (string).
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
36 @signal submitUrlError(str) emitted with the error string, if the URL scan
2999
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
37 submission returned an error.
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
38 @signal urlScanReport(str) emitted with the URL of the URL scan report page
2999
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
39 @signal fileScanReport(str) emitted with the URL of the file scan report
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
40 page
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
42 checkServiceKeyFinished = pyqtSignal(bool, str)
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
43 submitUrlError = pyqtSignal(str)
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
44 urlScanReport = pyqtSignal(str)
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
45 fileScanReport = pyqtSignal(str)
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
46
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 TestServiceKeyScanID = \
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 "4feed2c2e352f105f6188efd1d5a558f24aee6971bdf96d5fdb19c197d6d3fad"
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
50 ServiceResult_ItemQueued = -2
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 ServiceResult_ItemNotPresent = 0
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 ServiceResult_ItemPresent = 1
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
54 # HTTP Status Codes
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
55 ServiceCode_InvalidKey = 202
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
56 ServiceCode_RateLimitExceeded = 204
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
57 ServiceCode_InvalidPrivilege = 403
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
59 GetFileReportPattern = "{0}://www.virustotal.com/vtapi/v2/file/report"
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
60 ScanUrlPattern = "{0}://www.virustotal.com/vtapi/v2/url/scan"
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
61 GetUrlReportPattern = "{0}://www.virustotal.com/vtapi/v2/url/report"
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
62 GetIpAddressReportPattern = \
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
63 "{0}://www.virustotal.com/vtapi/v2/ip-address/report"
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
64 GetDomainReportPattern = "{0}://www.virustotal.com/vtapi/v2/domain/report"
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 def __init__(self, parent=None):
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 """
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 Constructor
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 @param parent reference to the parent object (QObject)
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 """
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2403
diff changeset
72 super(VirusTotalAPI, self).__init__(parent)
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
74 self.__replies = []
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
75
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.__loadSettings()
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
77
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
78 self.__lastIP = ""
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
79 self.__lastDomain = ""
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
80 self.__ipReportDlg = None
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
81 self.__domainReportDlg = None
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 def __loadSettings(self):
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 """
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 Private method to load the settings.
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 if Preferences.getHelp("VirusTotalSecure"):
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 protocol = "https"
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 else:
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 protocol = "http"
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 self.GetFileReportUrl = self.GetFileReportPattern.format(protocol)
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 self.ScanUrlUrl = self.ScanUrlPattern.format(protocol)
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 self.GetUrlReportUrl = self.GetUrlReportPattern.format(protocol)
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
94 self.GetIpAddressReportUrl = self.GetIpAddressReportPattern.format(
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
95 protocol)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
96 self.GetDomainReportUrl = self.GetDomainReportPattern.format(protocol)
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 self.errorMessages = {
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
99 204: self.tr("Request limit has been reached."),
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
100 0: self.tr("Requested item is not present."),
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
101 -2: self.tr("Requested item is still queued."),
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 }
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
104 def preferencesChanged(self):
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
105 """
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
106 Public slot to handle a change of preferences.
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
107 """
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
108 self.__loadSettings()
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
109
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 def checkServiceKeyValidity(self, key, protocol=""):
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 """
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 Public method to check the validity of the given service key.
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 @param key service key (string)
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 @param protocol protocol used to access VirusTotal (string)
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 """
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 if protocol == "":
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 urlStr = self.GetFileReportUrl
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 else:
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 urlStr = self.GetFileReportPattern.format(protocol)
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 request = QNetworkRequest(QUrl(urlStr))
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 request.setHeader(QNetworkRequest.ContentTypeHeader,
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 "application/x-www-form-urlencoded")
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
124 params = QByteArray("apikey={0}&resource={1}".format(
4331
711e7c35a49b Changed code to make eric compatible to PyQt 5.5 (QByteArry issue).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4326
diff changeset
125 key, self.TestServiceKeyScanID).encode("utf-8"))
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126
2403
e3d7a861547c Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
127 import Helpviewer.HelpWindow
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager()
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 reply = nam.post(request, params)
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
130 reply.finished.connect(
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
131 lambda: self.__checkServiceKeyValidityFinished(reply))
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
132 self.__replies.append(reply)
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
133
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
134 def __checkServiceKeyValidityFinished(self, reply):
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
135 """
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
136 Private slot to determine the result of the service key validity check.
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
137
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
138 @param reply reference to the network reply
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
139 @type QNetworkReply
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
140 """
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
141 res = False
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
142 msg = ""
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
143
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 if reply.error() == QNetworkReply.NoError:
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
145 res = True
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
146 elif reply.error() == self.ServiceCode_InvalidKey:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
147 res = False
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
148 else:
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
149 msg = reply.errorString()
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
150 self.__replies.remove(reply)
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
151 reply.deleteLater()
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
153 self.checkServiceKeyFinished.emit(res, msg)
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 def submitUrl(self, url):
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 """
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 Public method to submit an URL to be scanned.
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 @param url url to be scanned (QUrl)
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 """
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 request = QNetworkRequest(QUrl(self.ScanUrlUrl))
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 request.setHeader(QNetworkRequest.ContentTypeHeader,
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 "application/x-www-form-urlencoded")
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
164 params = QByteArray("apikey={0}&url=".format(
4331
711e7c35a49b Changed code to make eric compatible to PyQt 5.5 (QByteArry issue).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4326
diff changeset
165 Preferences.getHelp("VirusTotalServiceKey")).encode("utf-8"))\
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 .append(QUrl.toPercentEncoding(url.toString()))
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167
2403
e3d7a861547c Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
168 import Helpviewer.HelpWindow
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager()
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 reply = nam.post(request, params)
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
171 reply.finished.connect(self.__submitUrlFinished)
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
172 self.__replies.append(reply)
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
173
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
174 def __submitUrlFinished(self, reply):
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
175 """
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
176 Private slot to determine the result of the URL scan submission.
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
177
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
178 @param reply reference to the network reply
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
179 @type QNetworkReply
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
180 """
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 if reply.error() == QNetworkReply.NoError:
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 result = json.loads(str(reply.readAll(), "utf-8"))
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
183 if result["response_code"] == self.ServiceResult_ItemPresent:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
184 self.urlScanReport.emit(result["permalink"])
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
185 self.__getUrlScanReportUrl(result["scan_id"])
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 else:
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
187 if result["response_code"] in self.errorMessages:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
188 msg = self.errorMessages[result["response_code"]]
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
189 else:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
190 msg = result["verbose_msg"]
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
191 self.submitUrlError.emit(msg)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
192 elif reply.error() == self.ServiceCode_RateLimitExceeded:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
193 self.submitUrlError.emit(
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
194 self.errorMessages[result[self.ServiceCode_RateLimitExceeded]])
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
195 else:
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
196 self.submitUrlError.emit(reply.errorString())
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
197 self.__replies.remove(reply)
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
198 reply.deleteLater()
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
199
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
200 def __getUrlScanReportUrl(self, scanId):
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
201 """
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
202 Private method to get the report URL for a URL scan.
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
203
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
204 @param scanId ID of the scan to get the report URL for (string)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
205 """
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
206 request = QNetworkRequest(QUrl(self.GetUrlReportUrl))
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
207 request.setHeader(QNetworkRequest.ContentTypeHeader,
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
208 "application/x-www-form-urlencoded")
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
209 params = QByteArray("apikey={0}&resource={1}".format(
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
210 Preferences.getHelp("VirusTotalServiceKey"), scanId)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
211 .encode("utf-8"))
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
212
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
213 import Helpviewer.HelpWindow
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
214 nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager()
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
215 reply = nam.post(request, params)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
216 reply.finished.connect(self.__getUrlScanReportUrlFinished)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
217 self.__replies.append(reply)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
218
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
219 def __getUrlScanReportUrlFinished(self, reply):
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
220 """
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
221 Private slot to determine the result of the URL scan report URL
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
222 request.
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
223
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
224 @param reply reference to the network reply
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
225 @type QNetworkReply
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
226 """
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
227 if reply.error() == QNetworkReply.NoError:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
228 result = json.loads(str(reply.readAll(), "utf-8"))
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
229 if "filescan_id" in result and result["filescan_id"] is not None:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
230 self.__getFileScanReportUrl(result["filescan_id"])
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
231 self.__replies.remove(reply)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
232 reply.deleteLater()
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
234 def __getFileScanReportUrl(self, scanId):
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 """
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
236 Private method to get the report URL for a file scan.
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 @param scanId ID of the scan to get the report URL for (string)
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 """
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
240 request = QNetworkRequest(QUrl(self.GetFileReportUrl))
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 request.setHeader(QNetworkRequest.ContentTypeHeader,
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 "application/x-www-form-urlencoded")
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
243 params = QByteArray("apikey={0}&resource={1}".format(
4332
64034d85c709 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4331
diff changeset
244 Preferences.getHelp("VirusTotalServiceKey"), scanId)
64034d85c709 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4331
diff changeset
245 .encode("utf-8"))
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246
2403
e3d7a861547c Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
247 import Helpviewer.HelpWindow
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager()
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 reply = nam.post(request, params)
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
250 reply.finished.connect(self.__getFileScanReportUrlFinished)
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
251 self.__replies.append(reply)
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
252
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
253 def __getFileScanReportUrlFinished(self, reply):
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
254 """
2999
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
255 Private slot to determine the result of the file scan report URL
28c75409a78f Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2954
diff changeset
256 request.
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
257
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
258 @param reply reference to the network reply
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
259 @type QNetworkReply
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
260 """
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 if reply.error() == QNetworkReply.NoError:
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 result = json.loads(str(reply.readAll(), "utf-8"))
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
263 self.fileScanReport.emit(result["permalink"])
979
0ae0c8852d31 Refined the VirusTotal code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 978
diff changeset
264 self.__replies.remove(reply)
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
265 reply.deleteLater()
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
267 def getIpAddressReport(self, ipAddress):
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
268 """
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
269 Public method to retrieve a report for an IP address.
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
270
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
271 @param ipAddress valid IPv4 address in dotted quad notation
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
272 @type str
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
273 """
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
274 self.__lastIP = ipAddress
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
275
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
276 queryItems = [
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
277 ("apikey", Preferences.getHelp("VirusTotalServiceKey")),
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
278 ("ip", ipAddress),
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
279 ]
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
280 url = QUrl(self.GetIpAddressReportUrl)
5736
000ea446ff4b Prepared the code for Qt > 5.9.99.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5624
diff changeset
281 if qVersionTuple() >= (5, 0, 0):
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
282 from PyQt5.QtCore import QUrlQuery
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
283 query = QUrlQuery()
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
284 query.setQueryItems(queryItems)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
285 url.setQuery(query)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
286 else:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
287 url.setQueryItems(queryItems)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
288 request = QNetworkRequest(url)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
289
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
290 import Helpviewer.HelpWindow
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
291 nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager()
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
292 reply = nam.get(request)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
293 reply.finished.connect(self.__getIpAddressReportFinished)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
294 self.__replies.append(reply)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
295
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
296 def __getIpAddressReportFinished(self, reply):
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
297 """
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
298 Private slot to process the IP address report data.
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
299
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
300 @param reply reference to the network reply
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
301 @type QNetworkReply
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 """
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
303 if reply.error() == QNetworkReply.NoError:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
304 result = json.loads(str(reply.readAll(), "utf-8"))
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
305 if result["response_code"] == 0:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
306 E5MessageBox.information(
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
307 None,
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
308 self.tr("VirusTotal IP Address Report"),
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
309 self.tr("""VirusTotal does not have any information for"""
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
310 """ the given IP address."""))
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
311 elif result["response_code"] == -1:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
312 E5MessageBox.information(
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
313 None,
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
314 self.tr("VirusTotal IP Address Report"),
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
315 self.tr("""The submitted IP address is invalid."""))
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
316 else:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
317 owner = result["as_owner"]
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
318 resolutions = result["resolutions"]
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
319 try:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
320 urls = result["detected_urls"]
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
321 except KeyError:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
322 urls = []
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
323
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
324 from .VirusTotalIpReportDialog import VirusTotalIpReportDialog
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
325 self.__ipReportDlg = VirusTotalIpReportDialog(
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
326 self.__lastIP, owner, resolutions, urls)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
327 self.__ipReportDlg.show()
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
328 self.__replies.remove(reply)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
329 reply.deleteLater()
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
330
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
331 def getDomainReport(self, domain):
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
332 """
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
333 Public method to retrieve a report for a domain.
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
334
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
335 @param domain domain name
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
336 @type str
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
337 """
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
338 self.__lastDomain = domain
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
340 queryItems = [
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
341 ("apikey", Preferences.getHelp("VirusTotalServiceKey")),
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
342 ("domain", domain),
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
343 ]
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
344 url = QUrl(self.GetDomainReportUrl)
5736
000ea446ff4b Prepared the code for Qt > 5.9.99.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5624
diff changeset
345 if qVersionTuple() >= (5, 0, 0):
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
346 from PyQt5.QtCore import QUrlQuery
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
347 query = QUrlQuery()
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
348 query.setQueryItems(queryItems)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
349 url.setQuery(query)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
350 else:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
351 url.setQueryItems(queryItems)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
352 request = QNetworkRequest(url)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
353
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
354 import Helpviewer.HelpWindow
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
355 nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager()
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
356 reply = nam.get(request)
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
357 reply.finished.connect(lambda: self.__getDomainReportFinished(reply))
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
358 self.__replies.append(reply)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
359
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
360 def __getDomainReportFinished(self, reply):
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
361 """
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
362 Private slot to process the IP address report data.
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
363
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
364 @param reply reference to the network reply
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
365 @type QNetworkReply
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 """
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
367 if reply.error() == QNetworkReply.NoError:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
368 result = json.loads(str(reply.readAll(), "utf-8"))
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
369 if result["response_code"] == 0:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
370 E5MessageBox.information(
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
371 None,
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
372 self.tr("VirusTotal Domain Report"),
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
373 self.tr("""VirusTotal does not have any information for"""
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
374 """ the given domain."""))
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
375 elif result["response_code"] == -1:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
376 E5MessageBox.information(
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
377 None,
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
378 self.tr("VirusTotal Domain Report"),
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
379 self.tr("""The submitted domain address is invalid."""))
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
380 else:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
381 resolutions = result["resolutions"]
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
382 try:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
383 urls = result["detected_urls"]
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
384 except KeyError:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
385 urls = []
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
386 try:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
387 subdomains = result["subdomains"]
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
388 except KeyError:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
389 subdomains = []
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
390 try:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
391 bdCategory = result["BitDefender category"]
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
392 except KeyError:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
393 bdCategory = self.tr("not available")
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
394 try:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
395 tmCategory = result["TrendMicro category"]
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
396 except KeyError:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
397 tmCategory = self.tr("not available")
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
398 try:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
399 wtsCategory = result["Websense ThreatSeeker category"]
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
400 except KeyError:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
401 wtsCategory = self.tr("not available")
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
402 try:
4336
473bf2a8676f Finished implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4335
diff changeset
403 whois = result["whois"]
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
404 except KeyError:
4336
473bf2a8676f Finished implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4335
diff changeset
405 whois = ""
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
406
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
407 from .VirusTotalDomainReportDialog import \
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
408 VirusTotalDomainReportDialog
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
409 self.__domainReportDlg = VirusTotalDomainReportDialog(
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
410 self.__lastDomain, resolutions, urls, subdomains,
4336
473bf2a8676f Finished implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4335
diff changeset
411 bdCategory, tmCategory, wtsCategory, whois)
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
412 self.__domainReportDlg.show()
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
413 self.__replies.remove(reply)
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
414 reply.deleteLater()
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
415
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
416 def close(self):
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
417 """
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
418 Public slot to close the API.
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
419 """
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
420 for reply in self.__replies:
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
421 reply.abort()
978
11f8adbcac97 Added an interface to VirusTotal to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422
4335
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
423 self.__ipReportDlg and self.__ipReportDlg.close()
a25c157625c4 Started implementing the VirusTotal APIv2 interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4332
diff changeset
424 self.__domainReportDlg and self.__domainReportDlg.close()

eric ide

mercurial