From fedda3652f7194698454f59d54b8cc9245da7023 Mon Sep 17 00:00:00 2001 From: Simon Moser Date: Sun, 6 Feb 2022 00:44:08 +0100 Subject: [PATCH] Upload client and server try --- Retrieve-DNSFile.ps1 | 31 +++++++++++++++++++++++++------ server | 2 +- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/Retrieve-DNSFile.ps1 b/Retrieve-DNSFile.ps1 index 10a1730..aea0b87 100644 --- a/Retrieve-DNSFile.ps1 +++ b/Retrieve-DNSFile.ps1 @@ -1,14 +1,14 @@ -Function Retrieve-DNSTXT { +Function Get-DNSTXT { [CmdletBinding()] param( [string] $Domain ) - return (Resolve-DnsName -Type TXT $Domain | select Strings | Format-Table -HideTableHeaders | Out-String -Width 1000).Replace("{", "").Replace("}", "").Trim() + return (Resolve-DnsName -Type TXT $Domain | Select-Object Strings | Format-Table -HideTableHeaders | Out-String -Width 1000).Replace("{", "").Replace("}", "").Trim() } -Function Retrieve-DNSFile { +Function Get-DNSFile { [CmdletBinding()] param( - [string] $Filename, - [string] $DNSName, + [string] $Filename = $(Read-Host -Prompt 'Enter a Filename'), + [string] $DNSName = $(Read-Host -Prompt 'Enter a DNSName'), [switch] $Execute, [switch] $Write, [string] $OutPath @@ -22,7 +22,7 @@ Function Retrieve-DNSFile { $file_string = [Text.Encoding]::Utf8.GetString([Convert]::FromBase64String($file_base64)) "String $file_string" If ($Execute.IsPresent) { - $file_string | IEX + $file_string | Invoke-Expression } Else { $file_string | Out-String } @@ -30,3 +30,22 @@ Function Retrieve-DNSFile { $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'), + [string] $Prefix = "" + ) + $content_binary = Get-Content -Path $Filename -Encoding utf8 + $content_base64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($content_binary)) + $i = 0 + While ($content_base64) { + $url = ".$(Prefix)$(i)0.$(DNSName)" + $len = 63 - $url.Length + $content_part = $content_base64.Substring(0, $len) + $content_base64 = $content_base64.Substring($len) + Get-DNSTXT -Domain ($content_part + $url) + $i++ + } +} diff --git a/server b/server index 98e0218..954c817 100755 --- a/server +++ b/server @@ -85,7 +85,7 @@ class FileResolver(BaseResolver): path = self.directory + "/" + pname command = ''.join(parts[-2:-1]) # TODO: circumvent caching, eg by counting up - if command == "u": + if command.endswith("u"): with open('/tmp/dns-srv.log', 'a') as f: f.write(str(pname) + "\n") reply.add_answer(RR(name, QTYPE.TXT, ttl=self.ttl, rdata=TXT("Upload accepted")))