eric6/WebBrowser/VirusTotal/VirusTotalApi.py

changeset 7270
41d09cf20415
parent 7229
53054eb5b15a
child 7360
9190402e4505
equal deleted inserted replaced
7269:0c63ea7f94bd 7270:41d09cf20415
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)

eric ide

mercurial