36 checkServiceKeyFinished = pyqtSignal(bool, str) |
36 checkServiceKeyFinished = pyqtSignal(bool, str) |
37 submitUrlError = pyqtSignal(str) |
37 submitUrlError = pyqtSignal(str) |
38 urlScanReport = pyqtSignal(str) |
38 urlScanReport = pyqtSignal(str) |
39 fileScanReport = pyqtSignal(str) |
39 fileScanReport = pyqtSignal(str) |
40 |
40 |
41 TestServiceKeyScanID = \ |
41 TestServiceKeyScanID = ( |
42 "4feed2c2e352f105f6188efd1d5a558f24aee6971bdf96d5fdb19c197d6d3fad" |
42 "4feed2c2e352f105f6188efd1d5a558f24aee6971bdf96d5fdb19c197d6d3fad" |
|
43 ) |
43 |
44 |
44 ServiceResult_ItemQueued = -2 |
45 ServiceResult_ItemQueued = -2 |
45 ServiceResult_ItemNotPresent = 0 |
46 ServiceResult_ItemNotPresent = 0 |
46 ServiceResult_ItemPresent = 1 |
47 ServiceResult_ItemPresent = 1 |
47 |
48 |
51 ServiceCode_InvalidPrivilege = 403 |
52 ServiceCode_InvalidPrivilege = 403 |
52 |
53 |
53 GetFileReportPattern = "{0}://www.virustotal.com/vtapi/v2/file/report" |
54 GetFileReportPattern = "{0}://www.virustotal.com/vtapi/v2/file/report" |
54 ScanUrlPattern = "{0}://www.virustotal.com/vtapi/v2/url/scan" |
55 ScanUrlPattern = "{0}://www.virustotal.com/vtapi/v2/url/scan" |
55 GetUrlReportPattern = "{0}://www.virustotal.com/vtapi/v2/url/report" |
56 GetUrlReportPattern = "{0}://www.virustotal.com/vtapi/v2/url/report" |
56 GetIpAddressReportPattern = \ |
57 GetIpAddressReportPattern = ( |
57 "{0}://www.virustotal.com/vtapi/v2/ip-address/report" |
58 "{0}://www.virustotal.com/vtapi/v2/ip-address/report" |
|
59 ) |
58 GetDomainReportPattern = "{0}://www.virustotal.com/vtapi/v2/domain/report" |
60 GetDomainReportPattern = "{0}://www.virustotal.com/vtapi/v2/domain/report" |
59 |
61 |
60 def __init__(self, parent=None): |
62 def __init__(self, parent=None): |
61 """ |
63 """ |
62 Constructor |
64 Constructor |
117 "application/x-www-form-urlencoded") |
119 "application/x-www-form-urlencoded") |
118 params = QByteArray("apikey={0}&resource={1}".format( |
120 params = QByteArray("apikey={0}&resource={1}".format( |
119 key, self.TestServiceKeyScanID).encode("utf-8")) |
121 key, self.TestServiceKeyScanID).encode("utf-8")) |
120 |
122 |
121 import WebBrowser.WebBrowserWindow |
123 import WebBrowser.WebBrowserWindow |
122 nam = WebBrowser.WebBrowserWindow.WebBrowserWindow\ |
124 nam = ( |
123 .networkManager() |
125 WebBrowser.WebBrowserWindow.WebBrowserWindow.networkManager() |
|
126 ) |
124 reply = nam.post(request, params) |
127 reply = nam.post(request, params) |
125 reply.finished.connect( |
128 reply.finished.connect( |
126 lambda: self.__checkServiceKeyValidityFinished(reply)) |
129 lambda: self.__checkServiceKeyValidityFinished(reply)) |
127 self.__replies.append(reply) |
130 self.__replies.append(reply) |
128 |
131 |
159 params = QByteArray("apikey={0}&url=".format( |
162 params = QByteArray("apikey={0}&url=".format( |
160 Preferences.getWebBrowser("VirusTotalServiceKey")) |
163 Preferences.getWebBrowser("VirusTotalServiceKey")) |
161 .encode("utf-8")).append(QUrl.toPercentEncoding(url.toString())) |
164 .encode("utf-8")).append(QUrl.toPercentEncoding(url.toString())) |
162 |
165 |
163 import WebBrowser.WebBrowserWindow |
166 import WebBrowser.WebBrowserWindow |
164 nam = WebBrowser.WebBrowserWindow.WebBrowserWindow\ |
167 nam = ( |
165 .networkManager() |
168 WebBrowser.WebBrowserWindow.WebBrowserWindow.networkManager() |
|
169 ) |
166 reply = nam.post(request, params) |
170 reply = nam.post(request, params) |
167 reply.finished.connect(self.__submitUrlFinished) |
171 reply.finished.connect(self.__submitUrlFinished) |
168 self.__replies.append(reply) |
172 self.__replies.append(reply) |
169 |
173 |
170 def __submitUrlFinished(self, reply): |
174 def __submitUrlFinished(self, reply): |
205 params = QByteArray("apikey={0}&resource={1}".format( |
209 params = QByteArray("apikey={0}&resource={1}".format( |
206 Preferences.getWebBrowser("VirusTotalServiceKey"), scanId) |
210 Preferences.getWebBrowser("VirusTotalServiceKey"), scanId) |
207 .encode("utf-8")) |
211 .encode("utf-8")) |
208 |
212 |
209 import WebBrowser.WebBrowserWindow |
213 import WebBrowser.WebBrowserWindow |
210 nam = WebBrowser.WebBrowserWindow.WebBrowserWindow\ |
214 nam = ( |
211 .networkManager() |
215 WebBrowser.WebBrowserWindow.WebBrowserWindow.networkManager() |
|
216 ) |
212 reply = nam.post(request, params) |
217 reply = nam.post(request, params) |
213 reply.finished.connect(self.__getUrlScanReportUrlFinished) |
218 reply.finished.connect(self.__getUrlScanReportUrlFinished) |
214 self.__replies.append(reply) |
219 self.__replies.append(reply) |
215 |
220 |
216 def __getUrlScanReportUrlFinished(self, reply): |
221 def __getUrlScanReportUrlFinished(self, reply): |
240 params = QByteArray("apikey={0}&resource={1}".format( |
245 params = QByteArray("apikey={0}&resource={1}".format( |
241 Preferences.getWebBrowser("VirusTotalServiceKey"), scanId) |
246 Preferences.getWebBrowser("VirusTotalServiceKey"), scanId) |
242 .encode("utf-8")) |
247 .encode("utf-8")) |
243 |
248 |
244 import WebBrowser.WebBrowserWindow |
249 import WebBrowser.WebBrowserWindow |
245 nam = WebBrowser.WebBrowserWindow.WebBrowserWindow\ |
250 nam = ( |
246 .networkManager() |
251 WebBrowser.WebBrowserWindow.WebBrowserWindow.networkManager() |
|
252 ) |
247 reply = nam.post(request, params) |
253 reply = nam.post(request, params) |
248 reply.finished.connect(self.__getFileScanReportUrlFinished) |
254 reply.finished.connect(self.__getFileScanReportUrlFinished) |
249 self.__replies.append(reply) |
255 self.__replies.append(reply) |
250 |
256 |
251 def __getFileScanReportUrlFinished(self, reply): |
257 def __getFileScanReportUrlFinished(self, reply): |
280 query.setQueryItems(queryItems) |
286 query.setQueryItems(queryItems) |
281 url.setQuery(query) |
287 url.setQuery(query) |
282 request = QNetworkRequest(url) |
288 request = QNetworkRequest(url) |
283 |
289 |
284 import WebBrowser.WebBrowserWindow |
290 import WebBrowser.WebBrowserWindow |
285 nam = WebBrowser.WebBrowserWindow.WebBrowserWindow\ |
291 nam = ( |
286 .networkManager() |
292 WebBrowser.WebBrowserWindow.WebBrowserWindow.networkManager() |
|
293 ) |
287 reply = nam.get(request) |
294 reply = nam.get(request) |
288 reply.finished.connect(self.__getIpAddressReportFinished) |
295 reply.finished.connect(self.__getIpAddressReportFinished) |
289 self.__replies.append(reply) |
296 self.__replies.append(reply) |
290 |
297 |
291 def __getIpAddressReportFinished(self, reply): |
298 def __getIpAddressReportFinished(self, reply): |
341 query.setQueryItems(queryItems) |
348 query.setQueryItems(queryItems) |
342 url.setQuery(query) |
349 url.setQuery(query) |
343 request = QNetworkRequest(url) |
350 request = QNetworkRequest(url) |
344 |
351 |
345 import WebBrowser.WebBrowserWindow |
352 import WebBrowser.WebBrowserWindow |
346 nam = WebBrowser.WebBrowserWindow.WebBrowserWindow\ |
353 nam = ( |
347 .networkManager() |
354 WebBrowser.WebBrowserWindow.WebBrowserWindow.networkManager() |
|
355 ) |
348 reply = nam.get(request) |
356 reply = nam.get(request) |
349 reply.finished.connect(lambda: self.__getDomainReportFinished(reply)) |
357 reply.finished.connect(lambda: self.__getDomainReportFinished(reply)) |
350 self.__replies.append(reply) |
358 self.__replies.append(reply) |
351 |
359 |
352 def __getDomainReportFinished(self, reply): |
360 def __getDomainReportFinished(self, reply): |
394 try: |
402 try: |
395 whois = result["whois"] |
403 whois = result["whois"] |
396 except KeyError: |
404 except KeyError: |
397 whois = "" |
405 whois = "" |
398 |
406 |
399 from .VirusTotalDomainReportDialog import \ |
407 from .VirusTotalDomainReportDialog import ( |
400 VirusTotalDomainReportDialog |
408 VirusTotalDomainReportDialog |
|
409 ) |
401 self.__domainReportDlg = VirusTotalDomainReportDialog( |
410 self.__domainReportDlg = VirusTotalDomainReportDialog( |
402 self.__lastDomain, resolutions, urls, subdomains, |
411 self.__lastDomain, resolutions, urls, subdomains, |
403 bdCategory, tmCategory, wtsCategory, whois) |
412 bdCategory, tmCategory, wtsCategory, whois) |
404 self.__domainReportDlg.show() |
413 self.__domainReportDlg.show() |
405 self.__replies.remove(reply) |
414 self.__replies.remove(reply) |