Forum: PC-Programmierung Datei BASE64 verschlüsselt mit HTTP POST-METHODE senden


von Ralph H. (guru)


Lesenswert?

Hallo,

ich steh vor dem Problem AUSSCHLIESSLICH mit Win10Prof. Bordmitteln eine 
Textdatei mit der POST-METHODE via HTTP an eine Adresse 
http://138.68.xxx.xxx/upload zusenden und dabei die Datei BASE64 zu 
verschlüsseln.

Wie krieg ich das hin ? Ggf. mit ner Zusatzsoftware, wenn es NICHT 
anders geht.

FTP oder andere Protokolle scheiden aus, weil der Server (Empfänger) nur 
HTTP mit POST-METHODE unterstützt.

Danke für Eure Ideen sagt Ralph

von Jim M. (turboj)


Lesenswert?

Der Windows Scripting Host müsste per default installiert sein 
(wscript.exe / cscript.exe).

Damit könnte man das in JScript (JavaScript Variante von M$) erledigen.

Ansonsten: Internet Explorer, ebenfalls via JavaScript, aber !fun.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Base64 ist keine Verschlüsselung, sondern eine Kodierung. Das zu 
"entschlüsseln" ist trivial, also nicht im Geringsten sicher.

von Martin (Gast)


Lesenswert?

Ralph H. schrieb:
> Hallo,
>
> ich steh vor dem Problem AUSSCHLIESSLICH mit Win10Prof. Bordmitteln eine
> Textdatei mit der POST-METHODE via HTTP an eine Adresse
> http://138.68.xxx.xxx/upload zusenden und dabei die Datei BASE64 zu
> verschlüsseln.

base64 ist KEINE Verschlüsselung sondern eine einfache Kodierung! Die 
Daten sind immer noch "plain text" und für jeden lesbar.

Zum Rest ($Suchmaschine kaputt?): certutil + curl oder wget
https://stackoverflow.com/a/16946681

Alternativ base64 in die Firefox developer tools kopieren und den 
Request per Hand bauen...

von Martin (Gast)


Lesenswert?

Suchbegriffe: wscript http post:

https://duckduckgo.com/?q=wscript+http+post&t=hk&ia=web

Fange am besten mit dem Stackoverflow-Beitrag an:

http://stackoverflow.com/questions/5907089/ddg#5907741

von Ralph H. (guru)


Lesenswert?

Danke für die Links erstmal !

Ich versuche mich da mal reinzulesen, habe mich aber noch nie damit 
beschäftigt. Vielleicht gibt es ja einen Profi hier, der so ein 
einfaches Grundgerüst schon parat hätte, was ich mir anpassen kann?! Das 
wäre toll.

Danke Euch !

PS: ich hab zwar den Nick "Guru" grins.. aber hier bin ich der Dummy. 
:-(

von Michael Gugelhupf (Gast)


Lesenswert?

Powershell (Windows Bordmittel):

Zum Kodieren aus der Powershell eine .NET-Funktion (auch Windows 
Bordmittel) aufrufen
1
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("<original string>"))

Zum Senden in der Powershell Invoke-WebRequest oder das alias-Kommando 
curl aufrufen 
(https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-webrequest?view=powershell-7)

von Ralph H. (guru)


Lesenswert?

Männer, vielen Dank für Eure Ideen. Ich habe mir das gestern abend mal 
versucht reinzuziehen und bin immer gescheitert.

Vielleicht kann mir jemand die Problemlösung schreiben? gern auch gegen 
ein vertretbares Entgeld.

Problemstellung hier:
Eine Textdatei Namens "Aufträge.txt" liegt im Ordner "D:\App" und soll
via HTTP mit der POST METHODE an die Adresse 
http://138.68.xxx.xxx/upload in BASE64 codiert gesendet werden.

Die genaue IP Adresse würde ich via PN kunddtun, um das ggf. zu testen.

Vielen Dank !

von Bastler (Gast)


Lesenswert?

Ein aktuelles Windows 10 hat curl schon dabei, ansonsten:

    https://curl.haxx.se/windows/

Und dann auf der Kommadozeile:
1
    curl -X POST --data-binary @D:\App\Aufträge.txt http://138.68.xxx.xxx/upload

Oder eben, wenn es an ein Formular gesendet werden soll:
1
    curl -F ‘data=@D:\App\Aufträge.txt’ http://138.68.xxx.xxx/upload

Ralph H. schrieb:
> Vielleicht kann mir jemand die Problemlösung schreiben? gern auch gegen
> ein vertretbares Entgeld.

Spende dafür 50,- € an eine Tierschutz-Organisation Deiner Wahl.

von Ralph H. (guru)


Lesenswert?

@Bastler    Danke Dir!

Genau diese Zeile hatte ich mir gestern abend auch schon 
zusammengepuzzelt.
Leider kommt das die Fehlermeldung "502 Bad Gateway"

Kann natürlich sein, das der Server nur diese Meldung zurückgibt, obwohl 
das File da ist. Das kläre ich mal.

LG Ralph

Beitrag #6325681 wurde vom Autor gelöscht.
von Εrnst B. (ernst)


Lesenswert?

Ralph H. schrieb:
> Leider kommt das die Fehlermeldung "502 Bad Gateway"

Kann es sein, dass der Server einen File-Upload (multipart/form-data 
statt urlencoded) erwartet? Dann klappt das so nicht.

Kannst du die Datei per Webbrowser hochladen?
Wenn ja: Mach nebenbei die Entwickler-Tools auf, schau dort im 
Netzwerk-Tab nach deinem POST.

Rechtsklick, "Copy as cURL". Schon hast du eine passende Kommandozeile 
im Clipboard.
Da kann man dann vieles rausschmeißen (Cookies, User-Agent, ...), aber 
die interessanten Optionen sollten erkennbar sein.
Das dann anpassen, Datei wie im Beitrag von Bastler oben dynamisch 
einsetzen.

von Miro V. (miro_v)


Lesenswert?

Εrnst B. schrieb:
> Kann es sein, dass der Server einen File-Upload (multipart/form-data
> statt urlencoded) erwartet?

Das würde ich auch tippen.

von Klaus P. (Gast)


Lesenswert?

Ralph H. schrieb:
> ich steh vor dem Problem AUSSCHLIESSLICH mit Win10Prof. Bordmitteln eine
> Textdatei mit der POST-METHODE via HTTP an eine Adresse
> http://138.68.xxx.xxx/upload zusenden und dabei die Datei BASE64 zu
> verschlüsseln.

Mit der PowerShell müsste das gehen.

von Marco H. (damarco)


Lesenswert?

base64 ist so einfach das man das auch mit Hilfe von shell Scripten 
erledigen kann. Es kommt darauf an ob man es auch wirklich umwandeln 
muss oder es schlicht einfach binär versendet.

"Kann es sein, dass der Server einen File-Upload (multipart/form-data 
statt urlencoded) erwartet? Dann klappt das so nicht."

Oder ob diese Auftragsdatei an sich Usus ist da man das Prinzip von REST 
noch nicht verstanden hat und das was da drin steht anhand der URI oder 
als Formular auch auflösen könnte...

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Mal was zu Base64:

Hier wurde mehrfach "mangelnde Sicherheit" bemängelt. Darum geht es auch 
garnicht.

Base64 dient dazu, eigentlich binären Code (also alle Bytes von 0 bis 
255), der bei bestimmten Transportmehtoden als Steuersequenz 
"missverstanden" werden kann, in den "harmlosen" Bereich der 
ASCII-Codierung zu überführen,  also nur "sichtbare Zeichen" ohne jede 
Nebenwirkung. Zur Kodierung werden ausschließlich die Zeichen A–Z, a–z, 
0–9, + und / verwendet sowie = bei Bedarf am Ende zum "Auffüllen" einer 
Sequenz.

Base64 ist verslustlos und 100% transparent.

: Bearbeitet durch User
von Marco H. (damarco)


Lesenswert?

Korrekt, es sorgt dafür daß keine Zeichen verwendet werden die nicht 
angezeigt werden können oder dir das Dokument zerstört. Wenn man binäre 
Daten in ein JSON Objekt anhängen will etc....

Bei HTTP sorgt dafür daß es das Formular mit den Parameter im Body 
nicht zerstört... Der bei dieser Methode die Parameter mit & im body 
getrennt werden.

: Bearbeitet durch User
von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Grundfrage:
Warum soll eigentliche base64 verwendet werden? Das braucht man beim 
POST-Request nicht, da können direkt Binärdaten bzw. vollständige 
8-Bit-Daten oder wie auch immer man das nennen will gesendet werden.

von Miro V. (miro_v)


Lesenswert?

Ben B. schrieb:
> Grundfrage:
> Warum soll eigentliche base64 verwendet werden? Das braucht man beim
> POST-Request nicht, da können direkt Binärdaten bzw. vollständige
> 8-Bit-Daten oder wie auch immer man das nennen will gesendet werden.
JSON Objekte...

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.