-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathscanner.py
More file actions
89 lines (79 loc) · 2.43 KB
/
Copy pathscanner.py
File metadata and controls
89 lines (79 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import threading
import utils
from clientpy3 import *
import time
class scanner(threading.Thread):
def __init__(self,user,password):
threading.Thread.__init__(self)
self._mines = {}
self._wormholes = {}
self._user = user
self._pass = password
self._stop_event = threading.Event()
self._config = utils.config_parser(utils.get_config(user,password))
def run(self):
while True:
status = utils.status(self._user,self._pass)
if status is not None:
mines = status['mines']
for mine in mines:
# print(mine)
if mine[1]+' '+mine[2] not in self.mines:
# print(mine[1]+' '+mine[2])
mine_mutex.acquire()
self._mines[mine[1]+' '+mine[2]] = (time.time()-30,mine[0])
mine_mutex.release()
else:
mine_mutex.acquire()
self._mines[mine[1]+' '+mine[2]] = (self._mines[mine[1]+' '+mine[2]],mine[0])
mine_mutex.release()
wormholes = status['wormholes']
for wormhole in wormholes:
if wormhole[0]+' '+wormhole[1] not in self.wormholes:
wh_mutex.acquire()
self._wormholes[wormhole[0]+' '+wormhole[1]] = wormhole
wh_mutex.release()
scanned = utils.scan_parser(utils.scan(self._user,self._pass,status,self._config))
if scanned is not None:
mines = scanned['mines']
for mine in mines:
# print(mine)
if mine[1]+' '+mine[2] not in self.mines:
# print(mine[1]+' '+mine[2])
mine_mutex.acquire()
self._mines[mine[1]+' '+mine[2]] = (time.time()-30,mine[0])
mine_mutex.release()
else:
mine_mutex.acquire()
self._mines[mine[1]+' '+mine[2]] = (self._mines[mine[1]+' '+mine[2]][0],mine[0])
mine_mutex.release()
wormholes = scanned['wormholes']
for wormhole in wormholes:
if wormhole[0]+' '+wormhole[1] not in self.wormholes:
wh_mutex.acquire()
self._wormholes[wormhole[0]+' '+wormhole[1]] = wormhole
wh_mutex.release()
time.sleep(.1)
if self._stop_event.is_set():
return
def stop(self):
self._stop_event.set()
@property
def mines(self):
mine_mutex.acquire()
mines = self._mines
mine_mutex.release()
return mines
@property
def wormholes(self):
wh_mutex.acquire()
wormholes = self._wormholes
wh_mutex.release()
return wormholes
mine_mutex = threading.Lock()
wh_mutex = threading.Lock()
# mine_scanner = scanner('BSOD','Alboucai')
# mine_scanner.start()
# import pdb
# pdb.set_trace()
# mine_scanner.stop()