Du kannst nicht mehr als 25 Themen auswählen
Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
56 Zeilen
1.9 KiB
PowerShell
56 Zeilen
1.9 KiB
PowerShell
# Simple Powershell client, also runs on linux with Powershell Core
|
|
Function Get-DnsTxt {
|
|
[CmdletBinding()] param([string] $Domain)
|
|
Try {
|
|
return (Resolve-DnsName -Type TXT $Domain).Strings
|
|
} Catch [System.Management.Automation.CommandNotFoundException] {
|
|
return dig +short $Domain TXT
|
|
}
|
|
}
|
|
|
|
Function Get-DnsFile {
|
|
[CmdletBinding()] param(
|
|
[string] $FileName = $(Read-Host -Prompt 'Enter a FileName'),
|
|
[string] $DnsName = $(Read-Host -Prompt 'Enter a DnsName')
|
|
)
|
|
$count = [int](Get-DnsTxt -Domain "$FileName.count.$DnsName")
|
|
$file_base64 = ""
|
|
For ($i=0; $i -le $count; $i++) {
|
|
$file_base64 += (Get-DnsTxt -Domain "$FileName.$i.$DnsName")
|
|
}
|
|
[Text.Encoding]::Utf8.GetString([Convert]::FromBase64String($file_base64))
|
|
}
|
|
|
|
Function Push-DNSFile {
|
|
[CmdletBinding()] param(
|
|
[string] $FileName = $(Read-Host -Prompt 'Enter a Filename'),
|
|
[string] $DnsName = $(Read-Host -Prompt 'Enter a DnsName')
|
|
)
|
|
$id = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes((Get-FileHash $FileName).Hash)).Substring(0,6)
|
|
$content = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes((Get-Content -Path $FileName)))
|
|
$i = 0
|
|
While ($true) {
|
|
$url = ".$i-$id.$DnsName"
|
|
$len = 63 - $url.Length
|
|
$i++
|
|
if($len -lt $content.Length) {
|
|
Get-DnsTxt -Domain ($content.Substring(0, $len) + $url)
|
|
$content = $content.Substring($len)
|
|
} else {
|
|
Get-DnsTxt -Domain ($content + $url)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
# Minimal working example for download in case you have to type it all manually
|
|
Function MWE {
|
|
param([string] $f, [string] $d)
|
|
$c = [int]((Resolve-DnsName -Type TXT "$f.count.$d").Strings)
|
|
$o = ""
|
|
For ($i=0; $i -le $c; $i++) {
|
|
$o += (Resolve-DnsName -Type TXT "$f.$i.$d").Strings
|
|
}
|
|
[Text.Encoding]::Utf8.GetString([Convert]::FromBase64String($o))
|
|
}
|