jedimeister
Goto Top

Powershell: Abfrage ob Datei auf Webseite verfügbar ist

Hallo
ich programmiere momentan ein Tool welches mit einer Art Lizenzsystem laufen soll
ich habe mir das ganze so vorgestellt:

Abfrage auf https://blabla.de/license/license1/

wenn Datei "license1" vorhanden ist kann Tool genutzt werden

wenn Datei "license1" nicht vorhanden ist soll das Tool automatisch aus gehen (Tool kann nicht genutzt werden)

nun meine frage, ist mein vorhaben überhaupt möglich?

Gefunden habe ich bis jetzt nur diesen Codesnippet:

$wc=new-object system.net.webclient
$wc.UseDefaultCredentials = $true
$wc.downloadfile("URL","file")

vielleicht kann mir hier einer helfen face-smile

Content-Key: 568111

Url: https://administrator.de/contentid/568111

Printed on: May 4, 2024 at 14:05 o'clock

Member: manuel-r
manuel-r Apr 28, 2020 at 21:18:58 (UTC)
Goto Top
Abfrage auf https://blabla.de/license/license1/
wenn Datei "license1" vorhanden ist kann Tool genutzt werden

In deinem Beispiel ist license1 aber keine Datei sondern Teil des Pfades (außer du nutzt ein UrlRewrite)

Wenn du eine Datei laden willst und nur prüfen willst, ob sie existiert, dann sowas wie
$WebTest = Invoke-WebRequest -Uri "[content:568111]"  
If ($WebTest.StatusCode -eq 200) {
  Write-Host "Datei vorhanden"  
} else {
  Write-Host "Datei fehlt"  
}

Wenn du auch noch was mit dem Inhalt machen willst, dann bspw
$WebTest = Invoke-WebRequest -Uri "[content:568111]"  
If ($WebTest.Content -like "*Jedimeister*") {  
  Write-Host "Text vorhanden"  
} else {
  Write-Host "Text fehlt"  
}

Manuel
Member: Jedimeister
Jedimeister Apr 28, 2020 at 21:38:29 (UTC)
Goto Top
das war mein fehler habe vergessen dort noch .key oder sonstiges hinter zu schreiben

Das obere sieht gut aus, es reicht ja wenn er abfragt ob die Datei Vorhanden ist oder nicht.
Meine Frage nun ist aber, wie bekomme ich es hin das wenn die Datei fehlt, das Tool automatisch ausgeht?
Member: manuel-r
Solution manuel-r Apr 28, 2020 at 22:02:05 (UTC)
Goto Top
Meine Frage nun ist aber, wie bekomme ich es hin das wenn die Datei fehlt, das Tool automatisch ausgeht?

So (Zeile 6):
$WebTest = Invoke-WebRequest -Uri "[content:568111]"  
If ($WebTest.StatusCode -eq 200) {
  Write-Host "Datei vorhanden"  
} else {
  Write-Host "Datei fehlt"  
  Exit
}

Manuel
Member: StefanKittel
StefanKittel Apr 28, 2020 at 22:19:30 (UTC)
Goto Top
Hallo,

Du bist Dir aber schon im klaren dass man dieses System ganz einfach austricksen kann.
Einfach in der Hosts-Datei oder im DNS des PCs zu diesem Hostnamen eine andere IP hinterlegen, einen kleinen webserver installieren und ein Zertifikat installieren was der Client manuell akzeptiert. Schon ist man drin.

Auch würde ich nicht mit Dateien arbeiten. Besonders wenn das mal mehr werden.
Auf dem Server ein bisschen PHP und eine MySQL-DB und dann lautet die Abfrage https://licence.firma.de/?licence=122743
Antwort ist dann OK oder ERROR

Du benutzt dann $wc.Download("https://licence.firma.de/?licence=122743") und vergleichst die Antwort mit "OK".
Member: Jedimeister
Jedimeister Apr 28, 2020 at 22:19:54 (UTC)
Goto Top
Im Grunde funktioniert das ganze, aber komischerweise sagt er nun,

wenn ich z.B blabla.de/license/license10.key aufrufe datei vorhanden
obwohl diese garnicht auf dem Webserver ist...

Woran kann das liegen?
Member: StefanKittel
StefanKittel Apr 28, 2020 at 22:40:43 (UTC)
Goto Top
Hallo,

das skript oben wertet ja nur den http-Status-Code aus.
Ruf die URL doch mal im Browser oder mit WGET auf und schau was er anzeigt.
Mitglied: 142583
142583 Apr 29, 2020 at 04:41:05 (UTC)
Goto Top
Deine Lizenzprüfung ist sehr einfach zu umgehen.