Login von außerhalb via wget/curl [ShellScript]

      Login von außerhalb via wget/curl [ShellScript]

      Ich versuche (verzweifelt) auf einfache Weise via wget (oder curl) an die IP aus http://speedport.ip/data/session.json (Firmware Version: 050124.03.05.017) zu kommen.
      Jedoch scheiter es schon am Login, der Router liefert keine Antwort.

      Anbei mein Versuch mit wget:

      Shell-Script

      1. #!/bin/sh
      2. PASSWORD='password'
      3. wget --save-cookies cookies.txt --keep-session-cookies --post-data "showpw=0&password=${PASSWORD}&password_shaddowed=${PASSWORD}" --delete-after 'http://speedport.ip/html/login/index.html'
      4. wget --load-cookies cookies.txt 'http://speedport.ip/data/session.json'
      5. exit 0


      Hat hier jemand eine Idee, wieso der Login scheitert?

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mansouu“ ()

      so einfach ist der login leider auf dem speedport nicht
      als erstes musst du den login request an data/Login.json und nicht an html/login/index.html senden
      zudem musst du zuvor das passwort verschlüssseln wofür du wiederum vom sph den chellengev token brauchst
      und zuguterletzt brauchst du auchnoch den csrf token um die daten überhaupt beim sph abliefern zu können
      (da wget und curl kein javascript sprechen musst du das alles selber machen da er eigentliche login in der webui kein normaler post request ist sondern erst durch js alles oben genannte abgearbeitet wird bevor der request den router erreicht)
      Vielen Dank für deine Hinweise @Stricted.

      Dann werde ich's mal mit PhantomJS probieren.

      EDIT:
      Um den Code schlanker zu halten habe ich nun zusätzlich zu PhantomJS auch CasperJS hergenommen und komme nun an die IP. Anbei mein CasperJS-Script:

      Quellcode

      1. var casper = require('casper').create({
      2. waitTimeout: 10000
      3. });
      4. casper.start("http://speedport.ip/html/login/index.html", function(){});
      5. casper.then(function() {
      6. this.waitForSelector("input[id='router_password']",
      7. function success() {
      8. this.waitUntilVisible("input[id='router_password']",
      9. function success() {
      10. this.sendKeys("input[id='router_password']", "SPEEDPORT_HYBRID_PASSWORD");
      11. },
      12. function fail() {
      13. this.die("Login failed: The password field is hidden!");
      14. });
      15. },
      16. function fail() {
      17. this.die("Login failed: Can't find the password field!");
      18. });
      19. });
      20. casper.then(function() {
      21. this.waitForSelector("button[id='loginbutton']",
      22. function success() {
      23. this.waitUntilVisible("button[id='loginbutton']",
      24. function success() {
      25. this.click("button[id='loginbutton']");
      26. },
      27. function fail() {
      28. this.die("Login failed: The login button is hidden!");
      29. });
      30. },
      31. function fail() {
      32. this.die("Login failed: Can't find the login button!");
      33. });
      34. });
      35. casper.then(function() {
      36. this.waitForSelector("li[id='logoutlink']",
      37. function success() {},
      38. function fail() {
      39. this.die("Login failed!");
      40. });
      41. });
      42. /************************************** Action(s) **************************************/
      43. casper.thenOpen('http://speedport.ip/data/session.json', function() {
      44. var json = JSON.parse(this.getPageContent().replace(/'/g, '"'));
      45. this.echo(json["id_address"]);
      46. });
      47. /***************************************************************************************/
      48. casper.thenOpen('http://speedport.ip/html/content/overview/index.html', function() {
      49. this.waitForSelector("li[id='logoutlink']",
      50. function success() {
      51. this.click("li[id='logoutlink']");
      52. });
      53. });
      54. casper.then(function() {
      55. this.waitForSelector("input[id='router_password']",
      56. function success() {
      57. this.waitUntilVisible("input[id='router_password']");
      58. });
      59. });
      60. casper.run(function(){
      61. this.exit();
      62. });

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mansouu“ ()