mirror of
https://github.com/NetSPI/PowerHuntShares.git
synced 2025-05-05 03:38:42 +02:00
Update PowerHuntShares.psm1
Small filter updates.
This commit is contained in:
parent
22e85a833a
commit
fe222e03a7
@ -4,7 +4,7 @@
|
|||||||
#--------------------------------------
|
#--------------------------------------
|
||||||
# Author: Scott Sutherland, 2024 NetSPI
|
# Author: Scott Sutherland, 2024 NetSPI
|
||||||
# License: 3-clause BSD
|
# License: 3-clause BSD
|
||||||
# Version: v1.76
|
# Version: v1.77
|
||||||
# References: This script includes custom code and code taken and modified from the open source projects PowerView, Invoke-Ping, and Invoke-Parrell.
|
# References: This script includes custom code and code taken and modified from the open source projects PowerView, Invoke-Ping, and Invoke-Parrell.
|
||||||
function Invoke-HuntSMBShares
|
function Invoke-HuntSMBShares
|
||||||
{
|
{
|
||||||
@ -5183,24 +5183,38 @@ Folder groups are SMB shares that contain the exact same file listing. Each file
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="border-bottom: 1px solid #DEDFE1 ; background-color:#f0f3f5; height:5px; margin-bottom:10px;"></div>
|
<div style="border-bottom: 1px solid #DEDFE1 ; background-color:#f0f3f5; height:5px; margin-bottom:10px;"></div>
|
||||||
|
<div class="searchbar">
|
||||||
|
<input type="text" id="filterInputTwo" placeholder=" Search..." style="height: 25px; font-size: 14px;margin-top:7px;margin-left:10px;padding-left:3px;border-radius: 3px;border: 1px solid #BDBDBD;outline: none;color:#07142A;">
|
||||||
|
<!--
|
||||||
|
<strong> Quick Filters</strong>
|
||||||
|
<label><input type="checkbox" class="filter-checkbox" name="h"> Highly Exploitable</label>
|
||||||
|
<label><input type="checkbox" class="filter-checkbox" name="w"> Write</label>
|
||||||
|
<label><input type="checkbox" class="filter-checkbox" name="r"> Read</label>
|
||||||
|
<label><input type="checkbox" class="filter-checkbox" name="i"> Interesting</label>
|
||||||
|
<label><input type="checkbox" class="filter-checkbox" name="e"> Empty</label>
|
||||||
|
<label><input type="checkbox" class="filter-checkbox" name="s"> Stale</label>
|
||||||
|
<label><input type="checkbox" class="filter-checkbox" name="n"> Default</label>
|
||||||
|
-->
|
||||||
|
<div id="filterCounterTwo" style="margin-top:14px;height: 25px;font-size:11">Loading...</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
<table class="table table-striped table-hover tabledrop" id="foldergrouptable">
|
<table class="table table-striped table-hover tabledrop" id="foldergrouptable">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th onclick="sortTablefg(0)" align="left">Unique Share Name Count</th>
|
<th onclick="sortTable('foldergrouptable',0,'number')" align="left">Unique Share Name Count</th>
|
||||||
<th onclick="sortTablefg(1)" align="left">Affected Share Count</th>
|
<th onclick="sortTable('foldergrouptable',1,'number')" align="left">Affected Share Count</th>
|
||||||
<th onclick="sortTablefg(2)" align="left">File Group</th>
|
<th onclick="sortTable('foldergrouptable',2,'alpha')" align="left">File Group</th>
|
||||||
<th onclick="sortTablefg(3)" align="left">File Count</th>
|
<th onclick="sortTable('foldergrouptable',3,'number')" align="left">File Count</th>
|
||||||
<th onclick="sortTablefg(4)" align="left">Affected Computers</th>
|
<th onclick="sortTable('foldergrouptable',4,'number')" align="left">Affected Computers</th>
|
||||||
<th onclick="sortTablefg(5)" align="left">Affected Shares</th>
|
<th onclick="sortTable('foldergrouptable',5,'number')" align="left">Affected Shares</th>
|
||||||
<th onclick="sortTablefg(6)" align="left">Affected ACLs</th>
|
<th onclick="sortTable('foldergrouptable',6,'number')" align="left">Affected ACLs</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
$CommonShareFileGroupTopString
|
$CommonShareFileGroupTopString
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
<div id="paginationfg" style="margin:10px;"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
@ -5758,7 +5772,7 @@ Invoke-HuntSMBShares -Threads 20 -RunSpaceTimeOut 10 -OutputDirectory c:\folder\
|
|||||||
|
|
||||||
function updateFilterCounter(filterCounterId, visibleRows) {
|
function updateFilterCounter(filterCounterId, visibleRows) {
|
||||||
const filterCounter = document.getElementById(filterCounterId);
|
const filterCounter = document.getElementById(filterCounterId);
|
||||||
filterCounter.textContent = ``Showing `${visibleRows} row${visibleRows !== 1 ? 's' : ''}``;
|
filterCounter.textContent = ```${visibleRows} matches found``;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pagination Functions
|
// Pagination Functions
|
||||||
@ -5771,7 +5785,7 @@ Invoke-HuntSMBShares -Threads 20 -RunSpaceTimeOut 10 -OutputDirectory c:\folder\
|
|||||||
Array.from(tbody.rows).forEach(row => row.classList.add('hidden'));
|
Array.from(tbody.rows).forEach(row => row.classList.add('hidden'));
|
||||||
filteredRows.slice(startIndex, endIndex).forEach(row => row.classList.remove('hidden'));
|
filteredRows.slice(startIndex, endIndex).forEach(row => row.classList.remove('hidden'));
|
||||||
|
|
||||||
updatePagination(paginationId, filteredRows.length);
|
updatePagination(tableId, paginationId, filteredRows.length);
|
||||||
updateFilterCounter(filterCounterId, filteredRows.length);
|
updateFilterCounter(filterCounterId, filteredRows.length);
|
||||||
|
|
||||||
if (filteredRows.length === 0 || filteredRows.slice(startIndex, endIndex).length === 0) {
|
if (filteredRows.length === 0 || filteredRows.slice(startIndex, endIndex).length === 0) {
|
||||||
@ -5782,9 +5796,10 @@ Invoke-HuntSMBShares -Threads 20 -RunSpaceTimeOut 10 -OutputDirectory c:\folder\
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updatePagination(paginationId, totalRows) {
|
function updatePagination(tableId, paginationId, totalRows) {
|
||||||
const pagination = document.getElementById(paginationId);
|
const pagination = document.getElementById(paginationId);
|
||||||
const pageCount = Math.ceil(totalRows / rowsPerPage);
|
const pageCount = Math.ceil(totalRows / rowsPerPage);
|
||||||
|
const table = document.getElementById(tableId);
|
||||||
pagination.innerHTML = '';
|
pagination.innerHTML = '';
|
||||||
|
|
||||||
for (let i = 1; i <= pageCount; i++) {
|
for (let i = 1; i <= pageCount; i++) {
|
||||||
@ -5794,19 +5809,20 @@ Invoke-HuntSMBShares -Threads 20 -RunSpaceTimeOut 10 -OutputDirectory c:\folder\
|
|||||||
if (i === currentPage) pageButton.classList.add('active');
|
if (i === currentPage) pageButton.classList.add('active');
|
||||||
pageButton.addEventListener('click', () => {
|
pageButton.addEventListener('click', () => {
|
||||||
currentPage = i;
|
currentPage = i;
|
||||||
applyFiltersAndSort('sharenametable', 'filterInput', 'filterCounter', paginationId);
|
applyFiltersAndSort(tableId, 'filterInput', 'filterCounter', paginationId);
|
||||||
});
|
});
|
||||||
pagination.appendChild(pageButton);
|
pagination.appendChild(pageButton);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Example Initialization
|
// Initialize share name table
|
||||||
document.getElementById('filterInput').addEventListener("keyup", () => applyFiltersAndSort('sharenametable', 'filterInput', 'filterCounter', 'pagination'));
|
document.getElementById('filterInput').addEventListener("keyup", () => applyFiltersAndSort('sharenametable', 'filterInput', 'filterCounter', 'pagination'));
|
||||||
document.querySelectorAll('.filter-checkbox').forEach(checkbox => checkbox.addEventListener('change', () => applyFiltersAndSort('sharenametable', 'filterInput', 'filterCounter', 'pagination')));
|
document.querySelectorAll('.filter-checkbox').forEach(checkbox => checkbox.addEventListener('change', () => applyFiltersAndSort('sharenametable', 'filterInput', 'filterCounter', 'pagination')));
|
||||||
|
|
||||||
// Initial call to display rows
|
|
||||||
applyFiltersAndSort('sharenametable', 'filterInput', 'filterCounter', 'pagination');
|
applyFiltersAndSort('sharenametable', 'filterInput', 'filterCounter', 'pagination');
|
||||||
|
|
||||||
|
// Initialize folder group table
|
||||||
|
document.getElementById('filterInputTwo').addEventListener("keyup", () => applyFiltersAndSort('foldergrouptable', 'filterInputTwo', 'filterCounterTwo', 'paginationfg'));
|
||||||
|
applyFiltersAndSort('foldergrouptable', 'filterInputTwo', 'filterCounterTwo', 'paginationfg');
|
||||||
</script>
|
</script>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user