Merge pull request #46 from Hackndo/2.1.3
2.1.3 - Limit number of processes
Pixis authored 3 years ago
GitHub committed 3 years ago
0 | 0 |
# lsassy
|
1 | 1 |
|
2 | |
[![PyPI version](https://d25lcipzij17d.cloudfront.net/badge.svg?id=py&type=6&v=2.1.2&x2=0)](https://pypi.org/project/lsassy/) [![Twitter](https://img.shields.io/twitter/follow/hackanddo?label=HackAndDo&style=social)](https://twitter.com/intent/follow?screen_name=hackanddo)
|
|
2 |
[![PyPI version](https://d25lcipzij17d.cloudfront.net/badge.svg?id=py&type=6&v=2.1.3&x2=0)](https://pypi.org/project/lsassy/) [![Twitter](https://img.shields.io/twitter/follow/hackanddo?label=HackAndDo&style=social)](https://twitter.com/intent/follow?screen_name=hackanddo)
|
3 | 3 |
|
4 | 4 |
![Example](https://github.com/Hackndo/lsassy/raw/master/assets/example.png)
|
5 | 5 |
|
4 | 4 |
# https://beta.hackndo.com
|
5 | 5 |
|
6 | 6 |
from multiprocessing import Process, RLock
|
|
7 |
import time
|
7 | 8 |
|
8 | 9 |
from lsassy.modules.dumper import Dumper
|
9 | 10 |
from lsassy.modules.impacketconnection import ImpacketConnection
|
|
220 | 221 |
|
221 | 222 |
def run():
|
222 | 223 |
targets = get_targets(get_args().target)
|
|
224 |
# Maximum 256 processes because maximum 256 opened files in python by default
|
|
225 |
processes = min(get_args().threads, 256)
|
223 | 226 |
|
224 | 227 |
if len(targets) == 1:
|
225 | 228 |
return CLI(targets[0]).run().error_code
|
226 | |
|
227 | 229 |
jobs = [Process(target=CLI(target).run) for target in targets]
|
228 | 230 |
try:
|
229 | 231 |
for job in jobs:
|
|
232 |
# Checking running processes to avoid reaching --threads limit
|
|
233 |
while True:
|
|
234 |
counter = sum(1 for j in jobs if j.is_alive())
|
|
235 |
if counter >= processes:
|
|
236 |
time.sleep(1)
|
|
237 |
else:
|
|
238 |
break
|
230 | 239 |
job.start()
|
231 | 240 |
except KeyboardInterrupt as e:
|
232 | 241 |
print("\nQuitting gracefully...")
|
37 | 37 |
group_dump.add_argument('--dumpname', action='store', help='Name given to lsass dump (Default: Random)')
|
38 | 38 |
group_dump.add_argument('--procdump', action='store', help='Procdump path')
|
39 | 39 |
group_dump.add_argument('--dumpert', action='store', help='dumpert path')
|
|
40 |
group_dump.add_argument('--threads', default=32, type=int, action='store', help='Threads number')
|
40 | 41 |
group_dump.add_argument('--timeout', default=10, type=int, action='store',
|
41 | 42 |
help='Timeout before considering lsass was not dumped successfully')
|
42 | 43 |
|
|
162 | 163 |
try:
|
163 | 164 |
job.terminate()
|
164 | 165 |
except Exception as e:
|
165 | |
pass⏎
|
|
166 |
pass
|